--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<project name="XEMELIOS-pes-aller" default="usage" basedir=".">
+ <description>Builds, tests, and runs the project XEMELIOS_3 pes-aller</description>
+ <property file="${user.home}/.ant.properties"/>
+
+ <target name="usage">
+ <echo>
+ Using ${ant.version}
+
+ These are targets supported by this ANT build script:
+
+ compile - compile all .java files, except
+ thoses in ./tmp folder.
+ clean - deletes all compiled and generated
+ files and resources.
+ jars - build jar files.
+
+ Do not call this script directly, use the one located
+ at root of projet (in ../..) instead.
+ </echo>
+ </target>
+
+ <target name="compile" depends="mk-output-dirs">
+ <javac srcdir="java" destdir="build/classes" debug="${compile.debug}" encoding="ISO-8859-1">
+ <classpath>
+ <pathelement path="../starter/build/classes"/>
+ <pathelement path="../xemelios-core/build/classes"/>
+ <fileset dir="../core/lib" includes="*.jar"/>
+ <pathelement path="../core/build/classes"/>
+ <pathelement path="../control-core/build/classes"/>
+ </classpath>
+ </javac>
+ <copy todir="build/classes">
+ <fileset dir="java">
+ <include name="**/*"/>
+ <exclude name="**/*.java"/>
+ <exclude name="**/*.form"/>
+ </fileset>
+ </copy>
+ </target>
+
+ <target name="jars">
+ <property file="component.properties"/>
+ <copy file="manifest/manifest.txt" tofile="build/manifest.txt">
+ <filterset>
+ <filter token="version" value="${component.release}"/>
+ <filter token="name" value="${component.name}"/>
+ </filterset>
+ </copy>
+ <jar destfile="build/jars/controls-pesv2.jar" basedir="build/classes" manifest="build/manifest.txt"/>
+ </target>
+
+ <target name="config" depends="check-config">
+ <property file="component.properties"/>
+ <property name="component.dir" value="build/config/${component.name}/${component.release}"/>
+ <mkdir dir="${component.dir}"/>
+ <copy todir="${component.dir}">
+ <fileset dir="conf">
+ <include name="**/*"/>
+ <exclude name="**/CVS/*"/>
+ <exclude name="**/*.sh"/>
+ <exclude name="**/controls_pesv2.xml"/>
+ <exclude name="**/controls-default-params.xml"/>
+ </fileset>
+ <fileset dir="build/jars" includes="*.jar"/>
+ </copy>
+ <xslt in="conf/PES_V2/controls_pesv2.xml" out="build/config/${component.name}/${component.release}/PES_V2/controls_pesv2.xml" style="control-formatter.xsl">
+ <param name="default.params.location" expression="./conf/PES_V2/controls-default-params.xml"/>
+ </xslt>
+ <propertyfile file="${component.dir}/component.properties">
+ <entry key="description" value="Configuration pour les flux PES V2 Aller"/>
+ <entry key="type" value="config-updates"/>
+ <entry key="base.dest" value="${xemelios.prg}/root/documents-def/"/>
+ <entry key="requires" value="${component.requires}"/>
+ <entry key="controls-pesv2.jar.dest" value="${xemelios.prg}/root/lib/"/>
+ </propertyfile>
+ </target>
+
+ <target name="setup">
+ <copy todir="../../build/setup/root/lib">
+ <fileset dir="build/jars" includes="*.jar"/>
+ </copy>
+ <!-- TODO: controls file and params -->
+ <copy todir="../../build/setup/root/documents-def">
+ <fileset dir="conf">
+ <include name="**/*"/>
+ <exclude name="**/CVS/*"/>
+ <exclude name="**/*.sh"/>
+ <exclude name="**/controls_pesv2.xml"/>
+ <exclude name="**/controls-default-params.xml"/>
+ </fileset>
+ </copy>
+ <xslt in="conf/PES_V2/controls_pesv2.xml" out="../../build/setup/root/documents-def/PES_V2/controls_pesv2.xml" style="control-formatter.xsl">
+ <param name="default.params.location" expression="./conf/PES_V2/controls-default-params.xml"/>
+ </xslt>
+ </target>
+
+ <target name="clean">
+ <delete dir="build"/>
+ </target>
+
+
+ <target name="mk-output-dirs">
+ <mkdir dir="build/classes"/>
+ <mkdir dir="build/jars"/>
+ <mkdir dir="build/config"/>
+ </target>
+ <target name="check-config">
+ <xslt style="../../utils/persistence-verifier.xsl" in="conf/PES_V2/pes-aller-persist.xml" out="check-result.txt" force="true">
+ <param name="fileName" expression="conf/PES_V2/pes-aller-persist.xml"/>
+ </xslt>
+ <exec executable="more">
+ <arg value="check-result.txt"/>
+ </exec>
+ <delete file="check-result.txt"/>
+ </target>
+
+</project>
+
--- /dev/null
+# pes-aller component.properties file
+component.name=pes-aller
+component.release=4.0.0.14
+component.requires=
+component.description=Configuration Flux PES Aller
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<project name="XEMELIOS-pes-aller" default="usage" basedir=".">
+ <import file="../../common-tasks.xml"/>
+ <description>Builds, tests, and runs the project XEMELIOS_3 pes-aller</description>
+ <property file="${user.home}/.ant.properties"/>
+
+ <target name="usage">
+ <echo>
+ Using ${ant.version}
+
+ These are targets supported by this ANT build script:
+
+ compile - compile all .java files, except
+ thoses in ./tmp folder.
+ clean - deletes all compiled and generated
+ files and resources.
+ jars - build jar files.
+
+ Do not call this script directly, use the one located
+ at root of projet (in ../..) instead.
+ </echo>
+ </target>
+
+ <target name="compile" depends="mk-output-dirs,define-compile-debug,prepare">
+ <javac srcdir="java" destdir="build/classes" debug="${compile.debug}" encoding="ISO-8859-1">
+ <classpath>
+ <pathelement path="../starter/build/classes"/>
+ <fileset dir="../core/lib" includes="*.jar"/>
+ <pathelement path="../core/build/classes"/>
+ <pathelement path="../control-core/build/classes"/>
+ </classpath>
+ </javac>
+ <copy todir="build/classes">
+ <fileset dir="java">
+ <include name="**/*"/>
+ <exclude name="**/*.java"/>
+ <exclude name="**/*.form"/>
+ </fileset>
+ </copy>
+ </target>
+
+ <target name="jars" depends="prepare">
+ <copy file="manifest/manifest.txt" tofile="build/manifest.txt">
+ <filterset>
+ <filter token="version" value="${component.release}"/>
+ <filter token="name" value="${component.name}"/>
+ </filterset>
+ </copy>
+ <jar destfile="build/jars/${component.name}.jar" basedir="build/classes" manifest="build/manifest.txt"/>
+ </target>
+
+ <target name="config" depends="get-configuration,prepare">
+ <property name="component.dir" value="build/config/source/${component.name}/${component.release}"/>
+ <copy file="component-definition-properties.xml" tofile="build/config/source/component-definition-properties.xml"/>
+ <mkdir dir="${component.dir}"/>
+ <copy todir="${component.dir}">
+ <fileset dir="conf">
+ <include name="**/*"/>
+ <exclude name="**/CVS/*"/>
+ <exclude name="**/*.sh"/>
+ <exclude name="**/pes-aller-controls.xml"/>
+ <exclude name="**/controls-default-params.xml"/>
+ <exclude name="**/pes-aller.xml"/>
+ <exclude name="**/presentation-controls.xsl"/>
+ </fileset>
+ <fileset dir="build/jars" includes="*.jar"/>
+ </copy>
+ <xslt in="conf/PES_V2/pes-aller-controls.xml" out="build/config/source/${component.name}/${component.release}/PES_V2/pes-aller-controls.xml" style="control-formatter.xsl">
+ <param name="default.params.location" expression="./conf/PES_V2/controls-default-params.xml"/>
+ </xslt>
+ <antcall target="prepare-config-metier"/>
+ <!-- on réintroduit les valeurs par defaut dans le fichier de control -->
+ <antcall target="generate-update"/>
+ </target>
+
+ <target name="setup">
+ <copy todir="../../build/setup/root/lib">
+ <fileset dir="build/jars" includes="*.jar"/>
+ </copy>
+ <!-- TODO: controls file and params -->
+ <copy todir="../../build/setup/root/documents-def">
+ <fileset dir="conf">
+ <include name="**/*"/>
+ <exclude name="**/CVS/*"/>
+ <exclude name="**/*.sh"/>
+ <exclude name="**/pes-aller-controls.xml"/>
+ <exclude name="**/controls-default-params.xml"/>
+ </fileset>
+ </copy>
+ <xslt in="conf/PES_V2/pes-aller-controls.xml" out="../../build/setup/root/documents-def/PES_V2/pes-aller-controls.xml" style="control-formatter.xsl">
+ <param name="default.params.location" expression="./conf/PES_V2/controls-default-params.xml"/>
+ </xslt>
+ </target>
+
+ <target name="clean">
+ <delete dir="build"/>
+ </target>
+
+
+ <target name="mk-output-dirs">
+ <mkdir dir="build/classes"/>
+ <mkdir dir="build/jars"/>
+ <mkdir dir="build/config"/>
+ </target>
+ <target name="check-config">
+ <xslt style="../../utils/persistence-verifier.xsl" in="conf/PES_V2/pes-aller-persist.xml" out="check-result.txt" force="true">
+ <param name="fileName" expression="conf/PES_V2/pes-aller-persist.xml"/>
+ <factory name="net.sf.saxon.TransformerFactoryImpl"/>
+ </xslt>
+ <loadfile property="message" srcFile="check-result.txt" encoding="UTF-8"/>
+ <echo>${message}</echo>
+ <delete file="check-result.txt"/>
+ </target>
+
+</project>
+
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<component xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:noNamespaceSchemaLocation="../../defs/technical-component-definition.xsd">
+ <name>pes-aller</name>
+ <description>Configuration Flux PES Aller</description>
+ <release>5.0.0.9</release>
+ <url>http://xemelios.org/updatesV5/pes-aller</url>
+ <type>CONFIG</type>
+ <destination>
+ <base>${xemelios.root}/documents-def</base>
+ <file>
+ <name>${component.name}.jar</name>
+ <dest>${xemelios.root}/lib</dest>
+ </file>
+ <file>
+ <name>${component.name}.html</name>
+ <dest>${xemelios.root}/help/documents</dest>
+ </file>
+ </destination>
+ <requires>
+ <component-ref url="http://xemelios.org/updatesV5/core" release="5.0.0.6"/>
+ <component-ref url="http://xemelios.org/updatesV5/control-core" release="5.0.0.1"/>
+ </requires>
+ <release-notes>
+ <release v="5.0.0.9">
+ <note visibility="public">Correction de problèmes d'id dans les critères</note>
+ </release>
+ <release v="5.0.0.8">
+ <note visibility="public">Correction des critères et libellés</note>
+ </release>
+ <release v="5.0.0.7">
+ <note visibility="public">Mise à jour de la configuration</note>
+ </release>
+ <release v="5.0.0.6">
+ <note visibility="public">Correction de la FA 270</note>
+ <note visibility="public">Correction de la feuille de style pour Xemelios Viewer</note>
+ </release>
+ <release v="5.0.0.5">
+ <note visibility="editeur">A l'import d'une facture PES placée en PJ, changement de la feuille de style mise en PI (maintenant, on utilise http://xemelios.org/xsl/... au lieu d'utiliser admisource)</note>
+ </release>
+ <release v="5.0.0.4">
+ <note>Correction de la création des tables LIST_BC et SPECIAL_KEYS</note>
+ <note>Suppression du contrôle PARAM1 qui n'avait pas d'implémentation</note>
+ <note>Récupération des corrections diverses de la V4</note>
+ </release>
+ <release v="5.0.0.3">
+ <note>Corrections feuilles de style d'affichage</note>
+ <note>Traçabilité des archives</note>
+ </release>
+ <release v="5.0.0.2">
+ <note>Petite corrections pour l'API des contrôles</note>
+ </release>
+ <release v="5.0.0.1">
+ <note>Mise à jour de l'aide en ligne</note>
+ </release>
+ </release-notes>
+</component>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<controls>
+ <document id="PES_Aller">
+ <param id="nomencl" name="Nomenclature" datatype="string" use="required" value="M14">
+ <select id="nomencl">
+ <option value="M4">M4</option>
+ <option value="M14">M14</option>
+ <option value="M21">M21</option>
+ <option value="M22">M22</option>
+ <option value="M31">M31</option>
+ <option value="M52">M52</option>
+ <option value="M61">M61</option>
+ <option value="M71">M71</option>
+ </select>
+ </param>
+ <param id="typnomencl" name="Type de nomenclature" datatype="string" use="required" value="Nature">
+ <select id="typnomencl">
+ <option value="Fonction">Fonction</option>
+ <option value="Nature">Nature</option>
+ <option value="Nature-ref-fonct">Nature avec réf. fonctionnelle</option>
+ </select>
+ </param>
+ <param id="votop" name="Vote par opération" datatype="boolean" value="false">
+ <input id="votop" datatype="boolean"/></param>
+ <param id="suivdgp" name="Suivi du DGP" datatype="boolean" value="true">
+ <input id="suivdgp" datatype="boolean"/></param>
+ <param id="dureedgp" name="Durée maximale du délai global de paiement" datatype="integer" use="required" value="45">
+ <input id="paiement" datatype="integer"/></param>
+ <param id="coltva" name="Collectivité assujettie à la TVA" datatype="boolean" value="true">
+ <input id="coltva" datatype="boolean"/></param>
+ <param id="servTVA" name="Liste des services assujettis à la TVA" datatype="string" value="">
+ <select id="servTVA" multivalued="true" editable="true"/></param>
+ <param id="compteTVA" name="Liste des comptes d'imputation de la TVA" datatype="string" value="">
+ <select id="compteTVA" multivalued="true" editable="true"/></param>
+ <param id="tauxTVA" name="Liste des taux TVA" datatype="string" use="required" value="2.1 5.5 19.6">
+ <select id="tauxTVA" multivalued="true" editable="true">
+ <option value="2.1">2.1</option>
+ <option value="5.5">5.5</option>
+ <option value="19.6">19.6</option>
+ </select>
+ </param>
+ <param id="seuilMax" name="Seuil maximal des marchés" datatype="decimal" use="required" value="90000">
+ <input id="servTVA" datatype="decimal"/></param>
+ <param id="seuilEmission" name="Seuil d'émission des titres" datatype="decimal" use="required" value="10">
+ <input id="seuilEmission" datatype="decimal"/></param>
+ <param id="codProd" name="Liste des Codes Produits" datatype="string" value="69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 248 300 302 305 306 307 308">
+ <select id="codProd" multivalued="true" editable="true">
+ <option value="69">69</option>
+ <option value="70">70</option>
+ <option value="71">71</option>
+ <option value="72">72</option>
+ <option value="73">73</option>
+ <option value="74">74</option>
+ <option value="75">75</option>
+ <option value="76">76</option>
+ <option value="77">77</option>
+ <option value="78">78</option>
+ <option value="79">79</option>
+ <option value="80">80</option>
+ <option value="81">81</option>
+ <option value="82">82</option>
+ <option value="83">83</option>
+ <option value="84">84</option>
+ <option value="85">85</option>
+ <option value="86">86</option>
+ <option value="87">87</option>
+ <option value="88">88</option>
+ <option value="89">89</option>
+ <option value="90">90</option>
+ <option value="91">91</option>
+ <option value="92">92</option>
+ <option value="93">93</option>
+ <option value="94">94</option>
+ <option value="95">95</option>
+ <option value="96">96</option>
+ <option value="97">97</option>
+ <option value="98">98</option>
+ <option value="99">99</option>
+ <option value="100">100</option>
+ <option value="101">101</option>
+ <option value="102">102</option>
+ <option value="103">103</option>
+ <option value="104">104</option>
+ <option value="105">105</option>
+ <option value="106">106</option>
+ <option value="107">107</option>
+ <option value="248">248</option>
+ <option value="300">300</option>
+ <option value="302">302</option>
+ <option value="305">305</option>
+ <option value="306">306</option>
+ <option value="307">307</option>
+ <option value="308">308</option>
+ </select>
+ </param>
+ </document>
+</controls>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<controls>
+ <document id="PES_Aller">
+ <param id="nomencl" name="Nomenclature" datatype="string" use="required" value="M14">
+ <select id="nomencl">
+ <option value="M4">M4</option>
+ <option value="M14">M14</option>
+ <option value="M21">M21</option>
+ <option value="M22">M22</option>
+ <option value="M31">M31</option>
+ <option value="M52">M52</option>
+ <option value="M61">M61</option>
+ <option value="M71">M71</option>
+ </select>
+ </param>
+ <param id="typnomencl" name="Type de nomenclature" datatype="string" use="required" value="Nature">
+ <select id="typnomencl">
+ <option value="Fonction">Fonction</option>
+ <option value="Nature">Nature</option>
+ <option value="Nature-ref-fonct">Nature avec réf. fonctionnelle</option>
+ </select>
+ </param>
+ <param id="votop" name="Vote par opération" datatype="boolean" value="false">
+ <input id="votop" datatype="boolean"/></param>
+ <param id="suivdgp" name="Suivi du DGP" datatype="boolean" value="true">
+ <input id="suivdgp" datatype="boolean"/></param>
+ <param id="dureedgp" name="Durée maximale du délai global de paiement" datatype="integer" use="required" value="35">
+ <input id="paiement" datatype="integer"/></param>
+ <param id="coltva" name="Collectivité assujettie à la TVA" datatype="boolean" value="true">
+ <input id="coltva" datatype="boolean"/></param>
+ <param id="servTVA" name="Liste des services assujettis à la TVA" datatype="string" value="">
+ <select id="servTVA" multivalued="true" editable="true"/></param>
+ <param id="compteTVA" name="Liste des comptes d'imputation de la TVA" datatype="string" value="">
+ <select id="compteTVA" multivalued="true" editable="true"/></param>
+ <param id="tauxTVA" name="Liste des taux TVA" datatype="string" use="required" value="2.1 5.5 19.6">
+ <select id="tauxTVA" multivalued="true" editable="true">
+ <option value="2.1">2.1</option>
+ <option value="5.5">5.5</option>
+ <option value="19.6">19.6</option>
+ </select>
+ </param>
+ <param id="seuilEmission" name="Seuil d'émission des titres" datatype="decimal" use="required" value="10">
+ <input id="seuilEmission" datatype="decimal"/></param>
+ <param id="codProd" name="Liste des Codes Produits" datatype="string" value="69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 248 300 302 305 306 307 308">
+ <select id="codProd" multivalued="true" editable="true">
+ <option value="69">69</option>
+ <option value="70">70</option>
+ <option value="71">71</option>
+ <option value="72">72</option>
+ <option value="73">73</option>
+ <option value="74">74</option>
+ <option value="75">75</option>
+ <option value="76">76</option>
+ <option value="77">77</option>
+ <option value="78">78</option>
+ <option value="79">79</option>
+ <option value="80">80</option>
+ <option value="81">81</option>
+ <option value="82">82</option>
+ <option value="83">83</option>
+ <option value="84">84</option>
+ <option value="85">85</option>
+ <option value="86">86</option>
+ <option value="87">87</option>
+ <option value="88">88</option>
+ <option value="89">89</option>
+ <option value="90">90</option>
+ <option value="91">91</option>
+ <option value="92">92</option>
+ <option value="93">93</option>
+ <option value="94">94</option>
+ <option value="95">95</option>
+ <option value="96">96</option>
+ <option value="97">97</option>
+ <option value="98">98</option>
+ <option value="99">99</option>
+ <option value="100">100</option>
+ <option value="101">101</option>
+ <option value="102">102</option>
+ <option value="103">103</option>
+ <option value="104">104</option>
+ <option value="105">105</option>
+ <option value="106">106</option>
+ <option value="107">107</option>
+ <option value="248">248</option>
+ <option value="300">300</option>
+ <option value="302">302</option>
+ <option value="305">305</option>
+ <option value="306">306</option>
+ <option value="307">307</option>
+ <option value="308">308</option>
+ </select>
+ </param>
+ <param id="finJur" name="Finess Juridique" datatype="string" value="">
+ <input id="finJur" datatype="string"/></param>
+ <param id="idPost" name="Codique" datatype="string" value="123">
+ <input id="idPost" datatype="string"/></param>
+ <param id="idColl" name="SIRET" datatype="string" value="234">
+ <input id="idColl" datatype="string"/></param>
+ <param id="codCol" name="Code Collectivité" datatype="string" value="564">
+ <input id="codCol" datatype="string"/></param>
+ <param id="codBud" name="Code Budget" datatype="string" value="987">
+ <input id="codBud" datatype="string"/></param>
+ <controlTech id="TECH02" libelle="Contrôle de l'encoding du fichier." severity="BLOQUANT">
+ <paramTech id="encoding" name="encoding" value="ISO-8859-1"/></controlTech>
+ <controlTech id="TECH03" libelle="Contrôle de la conformance au schéma." severity="BLOQUANT">
+ <paramTech id="schemaLocation" name="schemaLocation" value="PES_V2/TD-ex-3.0/Schemas_PES/PES_V2/Rev0/PES_Aller.xsd"/>
+ <paramTech id="failOnError" name="failOnError" value="false"/></controlTech>
+ <control id="TIE01" libelle="Contrôle de présence de la dénomination du tiers" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.tie.TIE01">
+ <regle-fonctionnelle>A chaque ligne de pièce doit correspondre au moins un tiers.&lt;br/&gt;
+ Les informations nécessaires sont les suivantes :&lt;br/&gt; &lt;ul&gt;&lt;li&gt;Le type d'adresse (TypAdr doit être valorisé à 01 ou 02)&lt;/li&gt;&lt;li&gt;Nom&lt;/li&gt;&lt;li&gt;Adresse (Adr2 est obligatoire, Adr1 et Adr3 sont facultatives), le code postal, la ville et le code pays (dans le cas d'une adresse à l'étranger),&lt;/li&gt;&lt;li&gt;De plus s'il s'agit d'une personne physique, la civilité et le prénom doivent être obligatoirement indiqués,&lt;/li&gt;&lt;li&gt;S'il s'agit d'une personne morale, la civilité et le prénom ne doivent pas être indiqués. &lt;/li&gt;&lt;/ul&gt;.
+ </regle-fonctionnelle>
+ <message-echec>Bordereau n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD# - #MT# n°
+ #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE#
+ </message-echec>
+ </control>
+ <control id="TIE02" libelle="Contrôle du libellé des tiers" severity="FORCABLE" class="fr.gouv.finances.cp.xemelios.controls.pesv2.tie.TIE02">
+ <regle-fonctionnelle>Les tiers ne peuvent être libellés à «Divers» ou à «Divers...». Le tiers est
+ de préférence déterminé.
+ </regle-fonctionnelle>
+ <message-echec>Bordereau n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD# - #MT# n°
+ #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE#
+ </message-echec>
+ </control>
+ <control id="TIE03" libelle="Contrôle de l'identifiant national" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.tie.TIE03">
+ <regle-fonctionnelle>L'identifiant national du tiers doit être valide (contrôle de clé).&lt;br/&gt;Le type d'identifiant (NatIdTiers) ne doit pas être indiqué si l'identifiant (IdTiers) n'est pas valorisé.&lt;br/&gt;
+ Il ne peut s'agir d'un numéro SIREN.&lt;br/&gt;Un artisan, en tant que personne physique, ne peut disposer d'un numéro SIRET.
+ </regle-fonctionnelle>
+ <message-echec>Bordereau n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD# - #MT# n°
+ #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE# - IdTiers= #TIERS_ID_TIERS# - NatIdTiers=
+ #TIERS_NAT_ID_TIERS#
+ </message-echec>
+ </control>
+ <control id="TIE04" libelle="Contrôle de cohérence entre la catégorie et la nature juridique" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.tie.TIE04">
+ <regle-fonctionnelle>La catégorie juridique du tiers, doit être cohérente avec la nature
+ juridique du tiers.
+ </regle-fonctionnelle>
+ <message-echec>Bordereau n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD# - #MT# n°
+ #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE# - NatJur= #TIERS_NATJUR# - CatTiers=
+ #TIERS_CATTIERS#
+ </message-echec>
+ </control>
+ <control id="TIE05" libelle="Contrôle de cohérence entre le couple la catégorie / la nature juridique et l'identifiant national" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.tie.TIE05">
+ <regle-fonctionnelle>Si l'identifiant &quot;Siret&quot; saisi commence par 1 ou 2 alors le tiers doit être identifié comme une personne &quot;morale&quot; de droit public.&lt;br/&gt;
+ Une personne physique, ne peut avoir d'identifiant national.
+ </regle-fonctionnelle>
+ <message-echec>Bordereau n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD# - #MT# n°
+ #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE# - CatTiers= #TIERS_CATTIERS# - NatIdTiers=
+ #TIERS_NATIDTIERS# - IdTiers= #TIERS_IDTIERS#
+ </message-echec>
+ </control>
+ <control id="TIE07" libelle="Contrôle sur le code résidant" severity="NON BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.tie.TIE07">
+ <regle-fonctionnelle>Les tiers résidents doivent avoir un code postal à 5 caractères.&lt;br/&gt;
+ Le pays de résidence doit être indiqué pour les tiers non résidents.&lt;br/&gt;
+ De plus, lorsque le code postal se situe à l'étranger ou en Corse, la balise CP doit étre valorisée à '99999' et le code postal doit être renseigné dans la balise ville.
+ </regle-fonctionnelle>
+ <message-echec>Bordereau n° #BORD_NUM# - TypBord= #BORD_TYPBORD# - #MT# n° #PIECE_IDPCE# - Ligne
+ n° #LIGNE_IDLIGNE# - Tiers : #TIERS_NOM#. #ERREUR#.
+ </message-echec>
+ </control>
+ <control id="TIE06" libelle="Contrôle de la domiciliation bancaire" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.tie.TIE06">
+ <regle-fonctionnelle>Les références bancaires : clé RIB, code banque, code guichet et cadrage du
+ numéro de compte doivent être cohérents et valides. (Pas valorisés à '00000' ou
+ '99999').
+ </regle-fonctionnelle>
+ <message-echec>Bordereau n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD# - #MT# n°
+ #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE# - CpteBancaire= #CPTE_IDBANCINT# / #CPTE_CODEETAB# /
+ #CPTE_CODEGUIC# / #CPTE_IDCPTE# / #CPTE_CLERIB#
+ </message-echec>
+ </control>
+ <control id="COMM05B" libelle="Contrôle de la présence d'un identifiant de collectivité _ Contrôle des fichiers" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.comm.COMM05B">
+ <regle-fonctionnelle><![CDATA[Une collectivité doit être valorisée de façon exhaustive dans chaque fichier : <br/>
+ <ul><li>La balise IdPost doit être valorisée sur 6 caractères alphanumériques SANS caractères « espace » dans la valeur</li>
+ <li>La balise IdColl doit être valorisée avec un numéro SIRET valide, (14 caractères numériques) correspondant au numéro SIRET de la collectivité</li>
+ <li>La balise CodCol doit être valorisée avec 3 caractères alphanumériques</li>
+ <li>La balise CodBud doit être valorisée avec 2 caractères alphanumériques</li></ul>]]></regle-fonctionnelle>
+ <message-echec>#ERREUR#</message-echec>
+ </control>
+ <control id="COMM06B" libelle="Contrôle relatif au Finess Juridique _ Contrôle du fichier" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.comm.COMM06B">
+ <regle-fonctionnelle>La balise FinJur ne doit être présente que pour la nomenclature M21</regle-fonctionnelle>
+ <message-echec>FinJur = #FINJUR# _ Paramètre FinJur = #FINJUR_PARAM# : #ERREUR#</message-echec>
+ </control>
+ <control id="DEP01" libelle="Contrôle de l'exercice du bordereau" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.dep.DEP01">
+ <regle-fonctionnelle>L'exercice doit correspondre soit à l'année en cours, soit à l'année
+ précédente si on est en période complémentaire tant que l'exercice n'est pas
+ clos.
+ </regle-fonctionnelle>
+ <message-echec>Bordereau de mandat n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord=
+ #BORD_TYPBORD#
+ </message-echec>
+ </control>
+ <control id="DEP02" libelle="Contrôle sur l'absence de doublon sur le numéro de bordereau" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.dep.DEP02">
+ <regle-fonctionnelle>Le numéro de bordereau ne doit pas être déjà attribuéà un bordereau de même
+ budget collectivité, même exercice, même type de bordereau (même
+ séquence).
+ </regle-fonctionnelle>
+ <message-echec>Bordereau de mandat n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord=
+ #BORD_TYPBORD#
+ </message-echec>
+ </control>
+ <control id="DEP03" libelle="Contrôle de cohérence des montants du bordereau" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.dep.DEP03">
+ <regle-fonctionnelle>Le montant total, HT et TVA, du bordereau de mandats doit être égal à la
+ somme des montants des mandats, HT et TVA.
+ </regle-fonctionnelle>
+ <message-echec>Bordereau n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPE# MtBordHT=
+ #BORD_MT_HT# - Somme des lignes= #BORD_SOMME_HT_PIECE# | Bordereau n° #BORD_NUM# - Exer=
+ #BORD_EXER# - TypBord= #BORD_TYPE# MtBordTVA= #BORD_MT_TVA# - Somme des lignes=
+ #BORD_SOMME_TVA_PIECE#
+ </message-echec>
+ </control>
+ <control id="DEP04" libelle="Contrôle des montants" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.dep.DEP04">
+ <regle-fonctionnelle>Tous les montants doivent être strictement positifs.</regle-fonctionnelle>
+ <message-echec>Bordereau de mandat n° #BORD_NUM# - Exer= #BORD_EXER# - TypeBord= #BORD_TYPBORD# -
+ MtBordHT= #BORD_MTHT# - MtBordTVA= #BORD_MTTVA#|Bordereau de mandat n° #BORD_NUM# - Exer=
+ #BORD_EXER# - TypBord= #BORD_TYPBORD# - Mandat n° #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE# -
+ MtHT= #LIGNE_MTHT# - MtTVA= #LIGNE_MTTVA#
+ </message-echec>
+ </control>
+ <control id="DEP05" libelle="Contrôle de l'absence de doublon sur le numéro de pièce" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.dep.DEP05">
+ <regle-fonctionnelle>Il ne doit pas y avoir de doublons sur le numéro de la
+ pièce.
+ </regle-fonctionnelle>
+ <message-echec>Bordereau de mandat n° #BORD_NUM# - Exer= #BORD_EXER# - TypeBord= #BORD_TYPBORD# -
+ Mandat n° #PIECE_IDPCE#
+ </message-echec>
+ </control>
+ <control id="DEP06" libelle="Contrôle de cohérence entre le type de bordereau et les couples (type, nature)" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.dep.DEP06">
+ <regle-fonctionnelle>Le triplet Type de bordereau / Nature du mandat / Type du mandat doit être
+ cohérent.&lt;br/&gt;La nature 15 (autre) ne doit pas être utilisée.
+ </regle-fonctionnelle>
+ <message-echec>Bordereau de mandat n° #BORD_NUM# - Exer= #BORD_EXER# - TypeBord= #BORD_TYPBORD# -
+ Mandat n° #PIECE_IDPCE# - TypMandat= #PIECE_TYPPCE# - NatureMandat=
+ #PIECE_NATPCE#
+ </message-echec>
+ </control>
+ <control id="DEP07" libelle="Règle de valorisation de la Nature de la pièce" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.dep.DEP07">
+ <regle-fonctionnelle>&lt;br/&gt;Pour les nomenclatures M4- M14 -M21 -M52 -M61 - M31 - M71 :&lt;br/&gt;&lt;ul&gt;&lt;li&gt;SI le type de la pièce est ordre mixte ALORS le compte de tiers est seul vérifié.&lt;/li&gt;&lt;li&gt;SI au moins une ligne du mandat contient un compte par nature typé 'Paie' (64*, 621*, 631*, 633*, 6531*) ALORS la nature du mandat doit être valorisé à 'Paie'.&lt;/li&gt;&lt;li&gt;SINON&lt;ul&gt;&lt;li&gt;SI la première ligne du mandat contient une référence 'Régie' ALORS la nature du mandat doit être valorisé à 'Régie'.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;</regle-fonctionnelle>
+ <message-echec>Bordereau de mandat n° #BORD_NUM# - Exer= #BORD_EXER# - TypeBord= #BORD_TYPBORD# -
+ Mandat n° #PIECE_IDPCE# - TypMandat= #PIECE_TYPPCE# - NatureMandat=
+ #PIECE_NATPCE#
+ </message-echec>
+ </control>
+ <control id="DEP08" libelle="Contrôle lié au type de nomenclature et vote par opération" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.dep.DEP08">
+ <regle-fonctionnelle>Les comptes Nature, Fonction et Opération doivent être renseignés selon la
+ collectivité.
+ </regle-fonctionnelle>
+ <message-echec>Bordereau de mandat n° #BORD_NUM# - Exer= #BORD_EXER# - TypeBord= #BORD_TYPBORD# -
+ Mandat n° #PIECE_IDPCE# - Ligne n° #LIGNEDEPIECE_IDPCE#
+ </message-echec>
+ </control>
+ <control id="DEP09" libelle="Contrôle de la cohérence générale des informations DGP" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.dep.DEP09">
+ <regle-fonctionnelle>Les mandats éligibles à la mise en paiement doivent contenir les
+ informations nécessaires au suivi du DGP : date de départ, durée et date de fin du
+ délai.
+ </regle-fonctionnelle>
+ <message-echec>Bordereau de mandat n° #BORD_NUM# - Exer= #BORD_EXER# - TypeBord= #BORD_TYPBORD# -
+ Mandat n° #PIECE_IDPCE#
+ </message-echec>
+ </control>
+ <control id="DEP10" libelle="Contrôles des informations DGP : date début, date fin et durée" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.dep.DEP10">
+ <regle-fonctionnelle>Les informations DGP doivent être valides: date de départ, durée et date de fin du délai.&lt;br/&gt;
+ La durée ne peut être supérieure au délai fixé par la réglementation (#NB_JOURS# jours).&lt;br/&gt;
+ La date de fin du délai doit être supérieure ou égale à la date de début augmentée de la durée du délai.
+ </regle-fonctionnelle>
+ <message-echec>Bordereau de mandat n° #BORD_NUM# - Exer= #BORD_EXER# - TypeBord= #BORD_TYPBORD# -
+ Mandat n° #PIECE_IDPCE# - Début DGP= #DGP_DEB# - Fin DGP= #DGP_FIN# - Durée DGP=
+ #DGP_DUREE#
+ </message-echec>
+ </control>
+ <control id="DEP11" libelle="Principe de séquentialité des numéros de ligne" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.dep.DEP11">
+ <regle-fonctionnelle>Le numéro de ligne ne doit pas être déjà attribué à l'intérieur du mandat.&lt;br/&gt;Les lignes d'un mandat doivent avoir des numéros d'ordre séquentiels.</regle-fonctionnelle>
+ <message-echec>Bordereau de mandat n° #BORD_NUM# - Exer= #BORD_EXER# - TypeBord= #BORD_TYPBORD# -
+ Mandat n° #PIECE_IDPCE# - Ligne n° #LIGNE_PIECE_ID#
+ </message-echec>
+ </control>
+ <control id="DEP12" libelle="Contrôle d'assujettissement à la TVA" severity="BOUARF" class="fr.gouv.finances.cp.xemelios.controls.pesv2.dep.DEP12">
+ <regle-fonctionnelle>Le montant de la TVA ne doit être indiqué que si le budget collectivité et / ou le service gèrent la TVA.&lt;br/&gt;
+ Si la TVA est mentionnée alors que la TVA est gérée par un service, le service doit être indiqué.
+ </regle-fonctionnelle>
+ <message-echec>Bordereau de mandat n° #BORD_NUM# - Exer= #BORD_EXER# - TypeBord= #BORD_TYPBORD# -
+ Mandat n° #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE#
+ </message-echec>
+ </control>
+ <control id="DEP13" libelle="Contrôle sur le montant de la TVA" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.dep.DEP13">
+ <regle-fonctionnelle>Pour les collectivités ou services assujettis à la TVA, le montant du mandat
+ doit être égal au montant budgétaire augmenté de la TVA. Le montant de la TVA est créditée au compte de la TVA et le montant hors taxe est créditée au compte
+ budgétaire.
+ </regle-fonctionnelle>
+ <message-echec>Bordereau de mandat n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD# -
+ Mandat n° #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE# - MtHT= #LIGNE_MTHT# - MtTVA=
+ #LIGNE_MTTVA#
+ </message-echec>
+ </control>
+ <control id="DEP14" libelle="Contrôle de la présence d'un mode de règlement" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.dep.DEP14">
+ <regle-fonctionnelle>&lt;ul&gt;&lt;li&gt;Pour un mandat à payer, le mode de règlement doit être indiqué, et ne peut pas être égal à 'Autres' (ModRegl=09).&lt;/li&gt;&lt;li&gt;Si le mode règlement est ' numéraire ', le montant ne doit pas dépasser le seuil prévu dans la réglementation (au 22/08/2006 : 750 euros)&lt;/li&gt;&lt;li&gt;Si le mode de règlement est ' virement ' ou ' prélèvement ', les coordonnées bancaires doivent être renseignées.&lt;/li&gt;&lt;li&gt;Le mode de règlement ' 04 virement appli externe ' ne nécassite pas de RIB : les RIB sont inclus dans le fichier utilisé dans l'appli externe.&lt;/li&gt;&lt;li&gt;Dans le cas d'un mode de réglement par virement bancaire, la zone libellé du virement est renseignée.&lt;/li&gt;&lt;li&gt;Si le mode de réglement est ' virement à l'étranger ', l'identifiant international bancaire (IBAN) doit être renseigné ainsi que le BIC.&lt;/li&gt;&lt;li&gt;S'il s'agit d'un mandat collectif alors le mode de règlement doit être ' virement par application externe '.&lt;/li&gt;&lt;/ul&gt;</regle-fonctionnelle>
+ <message-echec>Bordereau de mandat n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD# -
+ Mandat n° #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE#
+ </message-echec>
+ </control>
+ <control id="DEP16" libelle="Contrôle d'existence de la pièce initiale" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.dep.DEP16">
+ <regle-fonctionnelle>Pour les mandats après paiement, mandats correctifs, mandats d'ordre de
+ nature ' cession ', mandats de charges constatées d'avance de nature ' Fonctionnement ', le
+ mandat devrait indiquer la référence à la pièce initiale.
+ </regle-fonctionnelle>
+ <message-echec>Bordereau de mandat n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD# -
+ Mandat n° #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE#
+ </message-echec>
+ </control>
+ <control id="DEP17" libelle="Contrôles des mandats multi-lignes Emprunt" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.dep.DEP17">
+ <regle-fonctionnelle>Si une ligne de mandat porte un numéro ' emprunt ', toutes les lignes de
+ mandats doivent porter un numéro ' emprunt '.
+ </regle-fonctionnelle>
+ <message-echec>Bordereau de mandat n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD# -
+ Mandat n° #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE#
+ </message-echec>
+ </control>
+ <control id="DEP18" libelle="Contrôle de présence du numéro d'inventaire" severity="NON BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.dep.DEP18">
+ <regle-fonctionnelle>Dans le cas des opérations d'ordre mixte, le numéro d'inventaire est
+ associéà un compte de contrepartie.(compte tiers)
+ </regle-fonctionnelle>
+ <message-echec>Bordereau de mandat n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD# -
+ Mandat n° #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE#
+ </message-echec>
+ </control>
+ <control id="DEP19" libelle="Contrôles liés aux mandats d'ordre" severity="NON BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.dep.DEP19">
+ <regle-fonctionnelle>Si le mandat est typé 'mandat d'ordre', il ne peut comporter des références bancaires.&lt;br/&gt;
+ Remarque : pour les mandats d'ordre : le créancier correspond au receveur de la collectivité. (De préférence CatTiers valorisé à 20 et NatJur valorisé à 07).
+ </regle-fonctionnelle>
+ <message-echec>Bordereau de mandat n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD# -
+ Mandat n° #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE# : #ERREUR#
+ </message-echec>
+ </control>
+ <control id="DEP20" libelle="Contrôles spécifiques aux HLM" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.dep.DEP20">
+ <regle-fonctionnelle>L'information TVA HLM est obligatoire.</regle-fonctionnelle>
+ <message-echec>Bordereau de mandat n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD# -
+ Mandat n° #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE#
+ </message-echec>
+ </control>
+ <control id="DEP21" libelle="Contrôles spécifiques aux Hôpitaux" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.dep.DEP21">
+ <regle-fonctionnelle>Le compte de TVA doit être renseigné.</regle-fonctionnelle>
+ <message-echec>Bordereau de mandat n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD# -
+ Mandat n° #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE# : #ERREUR#
+ </message-echec>
+ </control>
+ <control id="DEP23" libelle="Contrôles liés aux mandats de marché" severity="NON BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.dep.DEP23">
+ <regle-fonctionnelle>Lorsque la pièce est un mandat de type Marché, un numéro de marché doit être
+ renseigné, la balise IdMarche doit être alimentée.
+ </regle-fonctionnelle>
+ <message-echec>Absence du numéro de marché. Bordereau de mandat n° #BORD_NUM# - Exer= #BORD_EXER#
+ - TypPce= #PIECE_TYPPCE# - Mandat n° #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE#
+ </message-echec>
+ </control>
+ <control id="DEP24" libelle="Contrôles liés aux mandats de cession" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.dep.DEP24">
+ <regle-fonctionnelle>Lorsque la pièce est un mandat d'ordre budgétaire de nature cession, le compte budgétaire est de type 675 (sortie du bien de l'actif), 676 (plus-value) ou 192 (moins-value) et le numéro d'opération doit faire apparaître le chapitre 042 ou 6 (sortie du bien de l'actif) [vote par nature] ou bien le chapitre 914 (sortie du bien de l'actif) ou 934 [vote par fonction].&lt;br/&gt;
+ Le mandat doit faire référence à un titre d'ordre budgétaire.
+ </regle-fonctionnelle>
+ <message-echec>Bordereau de mandat n° #BORD_NUM# - Exer= #BORD_EXER# - TypPce= #PIECE_TYPPCE# -
+ Mandat n° #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE#
+ </message-echec>
+ </control>
+ <control id="DEP25" libelle="Contrôles spécifiques aux Collectivités" severity="NON BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.dep.DEP25">
+ <regle-fonctionnelle>Les Codes Régie, Numéros d'Emprunts ou d'Inventaire doivent être
+ renseignés.
+ </regle-fonctionnelle>
+ <message-echec>Bordereau de mandat n° #BORD_NUM# - Exer= #BORD_EXER# - TypeBord= #BORD_TYPBORD# -
+ Mandat n° #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE#. #ERREUR#
+ </message-echec>
+ </control>
+ <control id="DEP26" libelle="Contrôles spécifiques aux Collectivités" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.dep.DEP26">
+ <regle-fonctionnelle>La référence à la pièce initiale doit être alimentée dans le cas des charges constatées d'avance et des charges à payer.</regle-fonctionnelle>
+ <message-echec>Bordereau de mandat n° #BORD_NUM# - Mandat n° #PIECE_IDPCE# - Ligne n°
+ #LIGNE_IDLIGNE#. #ERREUR#
+ </message-echec>
+ </control>
+ <control id="DEP27" libelle="Contrôles spécifiques aux Collectivités" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.dep.DEP27">
+ <regle-fonctionnelle>Les contrôles sur la balise opération.</regle-fonctionnelle>
+ <message-echec>Bordereau n° #BORD_NUM# de mandat n° #PIECE_IDPCE# - Ligne n°
+ #LIGNE_IDLIGNE# - Code opération n° #LIGNE_OPE# : #ERREUR#.
+ </message-echec>
+ </control>
+ <control id="REC01" libelle="Contrôle de l'exercice du bordereau" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC01">
+ <regle-fonctionnelle>L'exercice doit correspondre soit à l'année en cours, soit à l'année
+ précédente si on est en période complémentaire tant que l'exercice n'est pas
+ clos.
+ </regle-fonctionnelle>
+ <message-echec>Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER#</message-echec>
+ </control>
+ <control id="REC02" libelle="Contrôle sur l'absence de doublon sur le numéro de bordereau" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC02">
+ <regle-fonctionnelle>Le numéro de bordereau ne doit pas être déjà attribuéà un bordereau de même
+ budget collectivité, même exercice, même type de bordereau (même
+ séquence).
+ </regle-fonctionnelle>
+ <message-echec>Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord=
+ #BORD_TYPBORD#
+ </message-echec>
+ </control>
+ <control id="REC03" libelle="Contrôle de l'existence de la date d'émission du bordereau" severity="NON BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC03">
+ <regle-fonctionnelle>La date d'émission du bordereau doit être valorisée.</regle-fonctionnelle>
+ <message-echec>Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord=
+ #BORD_TYPBORD#
+ </message-echec>
+ </control>
+ <control id="REC04" libelle="Contrôle du cumul des montants du bordereau" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC04">
+ <regle-fonctionnelle>Le montant total, HT et TVA, du bordereau de titres doit être égal à la
+ somme des montants des titres, HT et TVA .
+ </regle-fonctionnelle>
+ <message-echec>Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD#
+ #MT_BORD# #MT_LIGNES#
+ </message-echec>
+ </control>
+ <control id="REC05" libelle="Contrôle des montants" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC05">
+ <regle-fonctionnelle>Tous les montants HT doivent être strictement
+ positifs.
+ </regle-fonctionnelle>
+ <message-echec>Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypeBord= #BORD_TYPBORD# -
+ MtBordHT= #BORD_MTHT# - MtBordTVA= #BORD_MTTVA#|Bordereau de titre n° #BORD_NUM# - Exer=
+ #BORD_EXER# - TypBord= #BORD_TYPBORD# - Titre n° #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE# -
+ MtHT= #LIGNE_MTHT# - MtTVA= #LIGNE_MTTVA#
+ </message-echec>
+ </control>
+ <control id="REC06" libelle="Contrôle de la cohérence du nombre de pièces" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC06">
+ <regle-fonctionnelle>Le nombre de pièces indiquées dans la balise ' NbrPce ' doit être cohérent
+ avec le nombre de pièces insérées dans le fichier pour ce bordereau.
+ </regle-fonctionnelle>
+ <message-echec>Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - NbrPce= #BORD_NBPCE# -
+ Nombre de pieces= #NB_PIECES#
+ </message-echec>
+ </control>
+ <control id="REC07" libelle="Contrôle de l'absence de doublon sur le numéro de pièce" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC07">
+ <regle-fonctionnelle>Il ne doit pas y avoir de doublons sur le numéro de la
+ pièce.
+ </regle-fonctionnelle>
+ <message-echec>Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypeBord= #BORD_TYPBORD# -
+ Titre n° #PIECE_IDPCE#
+ </message-echec>
+ </control>
+ <control id="REC08" libelle="Contrôle de la date d'envoi de l'avis des sommes à payer" severity="NON BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC08">
+ <regle-fonctionnelle>La date d'envoi des avis de sommes à payer peut être fournie par
+ l'ordonnateur et peut alors servir pour le recouvrement du titre.
+ </regle-fonctionnelle>
+ <message-echec>Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypeBord= #BORD_TYPBORD# -
+ Titre n° #PIECE_IDPCE#
+ </message-echec>
+ </control>
+ <control id="REC09" libelle="Contrôle de l'existence de l'objet de la recette" severity="NON BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC09">
+ <regle-fonctionnelle>L'objet de la recette devrait être renseigné.</regle-fonctionnelle>
+ <message-echec>Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypeBord= #BORD_TYPBORD# -
+ Titre n° #PIECE_IDPCE#
+ </message-echec>
+ </control>
+ <control id="REC10" libelle="Règle de valorisation de la Nature de la pièce" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC10">
+ <regle-fonctionnelle>Les règles sont vérifiées ligne par ligne.&lt;ul&gt;&lt;li&gt;Pour un titre de type ordre mixte, le compte de tiers doit être valorisé, il ne comporte aucun identifiant régie, marché, encaissement ou rôle. &lt;/li&gt; &lt;li&gt;Pour un titre de type émis après encaissement, la référence de l'encaissement doit être renseignée (Bloc RattachPiece et non IdEncaissement).&lt;/li&gt;&lt;li&gt;Si le titre est un titre récapitulatif avec rôle alors le numéro de rôle doit être renseigné.&lt;/li&gt;&lt;li&gt;Si le titre est un titre de type annulation OU de type rattachement OU de nature complémentaire alors le bloc de rattachement doit être valorisé.&lt;/li&gt;&lt;li&gt;Si le titre est un titre de nature marché alors le numéro de marché doit être indiqué.&lt;/li&gt;&lt;li&gt;Si le titre est de type régie alors le numéro de régie doit être valorisé.&lt;/li&gt;&lt;/ul&gt;</regle-fonctionnelle>
+ <message-echec>Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypeBord= #BORD_TYPBORD# - Titre n° #PIECE_IDPCE#.&lt;br/&gt;#ERREUR#|Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypeBord= #BORD_TYPBORD# - Titre n° #PIECE_IDPCE# - Ligne n° #PIECE_IDLIGNE#.&lt;br/&gt;#ERREUR#</message-echec>
+ </control>
+ <control id="REC11" libelle="Contrôle lié au type de nomenclature et vote par opération" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC11">
+ <regle-fonctionnelle>Les comptes Nature, Fonction et Opération doivent être renseignés selon la
+ collectivité.
+ </regle-fonctionnelle>
+ <message-echec>Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypeBord= #BORD_TYPBORD# -
+ Titre n° #PIECE_IDPCE# - Ligne n° #LIGNEDEPIECE_IDPCE#
+ </message-echec>
+ </control>
+ <control id="REC12" libelle="Contrôle de cohérence entre le type de bordereau et les couples (type, nature)" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC12">
+ <regle-fonctionnelle>Le triplet Type de bordereau / Nature du mandat / Type du mandat doit être
+ cohérent.
+ </regle-fonctionnelle>
+ <message-echec>Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypeBord= #BORD_TYPBORD# -
+ Titre n° #PIECE_IDPCE# - TypPce= #PIECE_TYPPCE# - NatPce= #PIECE_NATPCE#
+ </message-echec>
+ </control>
+ <control id="REC13" libelle="Contrôle de l'unicité du compte de tiers pour les titres se rattachant au même code produit" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC13">
+ <regle-fonctionnelle>Les lignes de titre se rattachant au même code produit sont prises en charge
+ sur le même compte de tiers.
+ </regle-fonctionnelle>
+ <message-echec>Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD# - titre n° #PIECE_IDPCE#&lt;ul&gt;#DETAIL_MSG#&lt;/ul&gt;</message-echec>
+ </control>
+ <control id="REC14" libelle="Principe de séquentialité des numéros de ligne" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC14">
+ <regle-fonctionnelle>Le numéro de la ligne de titre ne doit pas être déjà attribué pour le titre en cours de traitement.&lt;BR/&gt;Le numéro de ligne de titre doit être séquentiel pour le titre en cours de traitement.</regle-fonctionnelle>
+ <message-echec>Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypeBord= #BORD_TYPBORD# -
+ Titre n° #PIECE_IDPCE#
+ </message-echec>
+ </control>
+ <control id="REC15" libelle="Contrôle du seuil d'émission des titres" severity="NON BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC15">
+ <regle-fonctionnelle>Les montants des titres doivent avoir un montant supérieur au seuil de mise
+ en recouvrement.
+ </regle-fonctionnelle>
+ <message-echec>Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypeBord= #BORD_TYPBORD# -
+ Titre n° #PIECE_IDPCE# - MtHT= #LIGNE_PIECE_MTHT#
+ </message-echec>
+ </control>
+ <control id="REC16" libelle="Contrôle sur l'existence du code produit" severity="FORCABLE" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC16">
+ <regle-fonctionnelle>Les produits sont paramétrés aussi bien au niveau national qu'au niveau
+ local et peuvent être fournis par l'ordonnateur. Il existe une table de correspondance entre les
+ codes produits locaux et les codes produits nationaux.
+ </regle-fonctionnelle>
+ <message-echec>Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypeBord= #BORD_TYPBORD# -
+ Titre n° #PIECE_IDPCE#|Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypeBord=
+ #BORD_TYPBORD# - Titre n° #PIECE_IDPCE# - Ligne= #LIGNE_NUM#
+ </message-echec>
+ </control>
+ <control id="REC17" libelle="Contrôle de la collectivité sur la TVA" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC17">
+ <regle-fonctionnelle>Le montant de la TVA ne doit être indiqué que si le budget collectivité et / ou le service gèrent la TVA.&lt;br/&gt;
+ Si la TVA est mentionnée alors que la TVA est gérée par un service, le service doit être indiqué.
+ </regle-fonctionnelle>
+ <message-echec>Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypeBord= #BORD_TYPBORD# -
+ Titre n° #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE#
+ </message-echec>
+ </control>
+ <control id="REC18" libelle="Contrôle de l'existence du compte d'imputation de la TVA" severity="NON BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC18">
+ <regle-fonctionnelle>Les montants de la TVA sont imputés sur un compte spécifique de la
+ TVA.
+ </regle-fonctionnelle>
+ <message-echec>Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypeBord= #BORD_TYPBORD# -
+ Titre n° #PIECE_IDPCE# #LIGNE_IDLIGNE#
+ </message-echec>
+ </control>
+ <control id="REC19" libelle="Contrôle sur le montant de la TVA" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC19">
+ <regle-fonctionnelle>Pour les collectivités ou services assujettis à la TVA, le montant du titre doit être égal au montant budgétaire augmenté de la TVA. Le montant de la TVA est créditée au compte de la TVA et le montant hors taxe est créditée au compte
+ budgétaire.
+ </regle-fonctionnelle>
+ <message-echec>Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD# - titre n° #PIECE_IDPCE#&lt;ul&gt;##DETAIL_MSG##&lt;/ul&gt;</message-echec>
+ </control>
+ <control id="REC20" libelle="Contrôle sur l'existence du Type de tiers" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC20">
+ <regle-fonctionnelle>Chaque débiteur doit avoir un type qui permettra de déterminer si c'est une
+ personne de droit public ou privé. Le type du débiteur est essentiel pour le recouvrement des
+ titres.
+ </regle-fonctionnelle>
+ <message-echec>Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD# -
+ titre n° #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE#
+ </message-echec>
+ </control>
+ <control id="REC21" libelle="Contrôles spécifiques aux Hôpitaux" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC21">
+ <regle-fonctionnelle>Le Finess juridique, les compte de TVA, les Codes Produits et les
+ Informations Assurés peuvent être renseignés.
+ </regle-fonctionnelle>
+ <message-echec>Entête|Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord=
+ #BORD_TYPBORD# - titre n° #PIECE_IDPCE#|Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# -
+ TypBord= #BORD_TYPBORD# - titre n° #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE#
+ </message-echec>
+ </control>
+ <control id="REC22" libelle="Contrôles spécifiques aux Collectivités" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC22">
+ <regle-fonctionnelle>&lt;ul&gt;Les Codes Produits Locaux doivent être renseignés et ils ne peuvent être libellés à 'Divers'.&lt;/ul&gt;&lt;ul&gt;En M21, il ne doit pas y avoir de balises CodProdLoc, mais uniquement des balises CodProd.&lt;/ul&gt;</regle-fonctionnelle>
+ <message-echec>Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD# - Titre n° #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE#.&lt;br/&gt;#MSG_ERREUR#.</message-echec>
+ </control>
+ <control id="REC23" libelle="Contrôle de l'adresse du débiteur" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC23">
+ <regle-fonctionnelle>Lorsqu'une ligne de titre comprend un tiers, il doit avoir une
+ adresse
+ </regle-fonctionnelle>
+ <message-echec>Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD# -
+ Titre n° #PIECE_IDPCE# #LIGNE_ID#
+ </message-echec>
+ </control>
+ <control id="REC24" libelle="Contrôle de présence et de cohérence de l'identifiant de collectivité" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC24">
+ <regle-fonctionnelle>L'identifiant de collectivité (IdColl) est obligatoire et doit être
+ cohérent. Cette information se trouve dans l'Entête du fichier PES.
+ </regle-fonctionnelle>
+ <message-echec>L'IdColl de l'EnTetePES #ID_COLL#</message-echec>
+ </control>
+ <control id="REC25" libelle="Contrôles liés aux titres d'ordre" severity="NON BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC25">
+ <regle-fonctionnelle>Si le titre est typé ' titre d'ordre ' il ne peut comporter des références bancaires.&lt;br/&gt; Remarque : pour les titres d'ordre : le créancier correspond au receveur de la collectivité. (De préférence CatTiers valorisé à 20 et NatJur valorisé à 07).</regle-fonctionnelle>
+ <message-echec>Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD# -
+ Titre n° #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE#
+ </message-echec>
+ </control>
+ <control id="REC26" libelle="Contrôles liés aux titres sur plusieurs années" severity="NON BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC26">
+ <regle-fonctionnelle>Lorsque la pièce est un titre sur plusieurs années, il faut vérifier que le
+ numéro de convention (IdConv) est alimenté.
+ </regle-fonctionnelle>
+ <message-echec>Absence du numéro de convention. Bordereau de titre n° #BORD_NUM# - Exer=
+ #BORD_EXER# - TypBord= #BORD_TYPBORD# - TypPce= #PIECE_TYPPCE# - Titre n° #PIECE_IDPCE# - Ligne
+ n° #LIGNE_IDLIGNE#
+ </message-echec>
+ </control>
+ <control id="REC27" libelle="Contrôles liés aux titres de cession" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC27">
+ <regle-fonctionnelle>Lorsque la pièce est un titre d'ordre budgétaire de nature cession, le compte budgétaire est de type 2x (sortie du bien de l'actif), 192 (plus-value) ou 776 (moins-value) et le numéro d'opération doit faire apparaître le chapitre 040 ou 4 (sortie du bien de l'actif) [vote par nature] ou bien le chapitre 914 (sortie du bien de l'actif) ou 934 [vote par fonction].&lt;br/&gt;
+ Le titre doit faire référence à un mandat d'ordre budgétaire.
+ </regle-fonctionnelle>
+ <message-echec>Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD# -
+ TypPce= #PIECE_TYPPCE# - Titre n° #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE#
+ </message-echec>
+ </control>
+ <control id="REC28" libelle="Contrôles spécifiques aux Collectivités" severity="NON BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC28">
+ <regle-fonctionnelle>Les Codes Régie, Numéros d'Emprunts ou d'Inventaire doivent être
+ renseignés.
+ </regle-fonctionnelle>
+ <message-echec>Bordereau de mandat n° #BORD_NUM# - Exer= #BORD_EXER# - TypeBord= #BORD_TYPBORD# -
+ Titre n° #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE#. #ERREUR#
+ </message-echec>
+ </control>
+ <control id="REC29" libelle="Contrôles spécifiques aux Collectivités" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC29">
+ <regle-fonctionnelle>La référence à la pièce initiale doit être alimentée dans le cas des charges
+ à répartir, des produits constatés d'avance et des produits à rattacher.
+ </regle-fonctionnelle>
+ <message-echec>Bordereau de titre n° #BORD_NUM# - Titre n° #PIECE_IDPCE# - Ligne n°
+ #LIGNE_IDLIGNE#. #ERREUR#
+ </message-echec>
+ </control>
+ <control id="REC30" libelle="Contrôles spécifiques aux Collectivités" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC30">
+ <regle-fonctionnelle>Les contrôles sur la balise opération.</regle-fonctionnelle>
+ <message-echec>Bordereau n° #BORD_NUM# de titre n° #PIECE_IDPCE# - Ligne n°
+ #LIGNE_IDLIGNE# - Code opération = #LIGNE_OPE# : #ERREUR#.
+ </message-echec>
+ </control>
+ <control id="PJ1" libelle="Contrôle de version de PES_PJ" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.pj.PJ1">
+ <regle-fonctionnelle>La version du PES_PJ doit contenir la valeur 1.</regle-fonctionnelle>
+ <message-echec>Version de PES_PJ incorrecte (IdVer doit être de valeur 1).</message-echec>
+ </control>
+ <control id="PJ2" libelle="Contrôle de référencement de PJ avec PJRef" severity="NON BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.pj.PJ2">
+ <regle-fonctionnelle>Les PJ contenues dans le flux doivent avoir des identifiants
+ différents.
+ </regle-fonctionnelle>
+ <message-echec>Les identifiants uniques des PJ doivent absolument être différents les uns des
+ autres.
+ </message-echec>
+ </control>
+ <control id="PJ3" libelle="Contrôle de référencement de PJ avec RefCompta" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.pj.PJ3">
+ <regle-fonctionnelle>Les balises RefCompta et PJRef ne peuvent coexister simultanément dans le même flux PESV2.</regle-fonctionnelle>
+ <message-echec>PJ n° #PJ_IDUNIQUE# - Nom= #PJ_NOM#. Les balises RefCompta et PJRef ne peuvent exister dans le même flux PESV2 : &lt;ul&gt;&lt;li&gt;Soit le bloc PJRef est utilisé et la ou les PJ sont envoyée(s) avec les bordereaux de mandats ou titres auxquels elle(s) se rattache(nt)&lt;/li&gt;&lt;li&gt;Soit le bloc RefCompta est utilisé et la PJ est transmise a posteriori&lt;/li&gt;&lt;/ul&gt;</message-echec>
+ </control>
+ <control id="SIG1" libelle="Contrôle relatif à signature électronique" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.sig.SIG1">
+ <regle-fonctionnelle>En cas de dématérialisation complète avec présence de signature
+ électronique, le flux doit contenir la présence du caractère dématérialisé de
+ l'information.
+ </regle-fonctionnelle>
+ <message-echec>#MSG_ERREUR#.</message-echec>
+ </control>
+ <control id="SIG2" libelle="Contrôle relatif aux montants de cumul annuel" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.sig.SIG2">
+ <regle-fonctionnelle>Le montant du cumul annuel est obligatoire en cas de dématérialisation
+ complète (avec signature électronique).
+ </regle-fonctionnelle>
+ <message-echec>Bordereau n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD#. Le montant
+ du cumul annuel est obligatoire en cas de dématérialisation complète (avec signature
+ électronique).
+ </message-echec>
+ </control>
+ <control id="SIG3" libelle="Contrôle relatif aux caractéristiques de la signature électronique" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.sig.SIG3">
+ <regle-fonctionnelle>Les éléments de la signature électronique suivants sont obligatoires en cas de signature électronique (niveau global ou bordereau) et doivent être valorisés correctement : Nom du signataire, Qualité (Rôle) du signataire, Date de la signature, Cumul des montants annuels (Sévérité Bloquant)&lt;br/&gt;
+ L'élément de la signature électronique suivant est souhaitable en cas de signature électronique (niveau global ou bordereau) et doit être valorisé correctement : Adresse signature (Sévérité Non Bloquant)
+ </regle-fonctionnelle>
+ <message-echec>#MSG_ERREUR#</message-echec>
+ </control>
+ </document>
+</controls>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<controls>
+ <document id="PES_Aller">
+ <param id="nomencl" name="Nomenclature" datatype="string" use="required" value="M14">
+ <select id="nomencl">
+ <option value="M4">M4</option>
+ <option value="M14">M14</option>
+ <option value="M21">M21</option>
+ <option value="M22">M22</option>
+ <option value="M31">M31</option>
+ <option value="M52">M52</option>
+ <option value="M61">M61</option>
+ <option value="M71">M71</option>
+ </select>
+ </param>
+ <param id="typnomencl" name="Type de nomenclature" datatype="string" use="required" value="Nature">
+ <select id="typnomencl">
+ <option value="Fonction">Fonction</option>
+ <option value="Nature">Nature</option>
+ <option value="Nature-ref-fonct">Nature avec réf. fonctionnelle</option>
+ </select>
+ </param>
+ <param id="votop" name="Vote par opération" datatype="boolean" value="false">
+ <input id="votop" datatype="boolean"/></param>
+ <param id="suivdgp" name="Suivi du DGP" datatype="boolean" value="true">
+ <input id="suivdgp" datatype="boolean"/></param>
+ <param id="dureedgp" name="Durée maximale du délai global de paiement" datatype="integer" use="required" value="35">
+ <input id="paiement" datatype="integer"/></param>
+ <param id="coltva" name="Collectivité assujettie à la TVA" datatype="boolean" value="true">
+ <input id="coltva" datatype="boolean"/></param>
+ <param id="servTVA" name="Liste des services assujettis à la TVA" datatype="string" value="">
+ <select id="servTVA" multivalued="true" editable="true"/></param>
+ <param id="compteTVA" name="Liste des comptes d'imputation de la TVA" datatype="string" value="">
+ <select id="compteTVA" multivalued="true" editable="true"/></param>
+ <param id="tauxTVA" name="Liste des taux TVA" datatype="string" use="required" value="2.1 5.5 19.6">
+ <select id="tauxTVA" multivalued="true" editable="true">
+ <option value="2.1">2.1</option>
+ <option value="5.5">5.5</option>
+ <option value="19.6">19.6</option>
+ </select>
+ </param>
+ <param id="seuilEmission" name="Seuil d'émission des titres" datatype="decimal" use="required" value="10">
+ <input id="seuilEmission" datatype="decimal"/></param>
+ <param id="codProd" name="Liste des Codes Produits" datatype="string" value="69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 248 300 302 305 306 307 308">
+ <select id="codProd" multivalued="true" editable="true">
+ <option value="69">69</option>
+ <option value="70">70</option>
+ <option value="71">71</option>
+ <option value="72">72</option>
+ <option value="73">73</option>
+ <option value="74">74</option>
+ <option value="75">75</option>
+ <option value="76">76</option>
+ <option value="77">77</option>
+ <option value="78">78</option>
+ <option value="79">79</option>
+ <option value="80">80</option>
+ <option value="81">81</option>
+ <option value="82">82</option>
+ <option value="83">83</option>
+ <option value="84">84</option>
+ <option value="85">85</option>
+ <option value="86">86</option>
+ <option value="87">87</option>
+ <option value="88">88</option>
+ <option value="89">89</option>
+ <option value="90">90</option>
+ <option value="91">91</option>
+ <option value="92">92</option>
+ <option value="93">93</option>
+ <option value="94">94</option>
+ <option value="95">95</option>
+ <option value="96">96</option>
+ <option value="97">97</option>
+ <option value="98">98</option>
+ <option value="99">99</option>
+ <option value="100">100</option>
+ <option value="101">101</option>
+ <option value="102">102</option>
+ <option value="103">103</option>
+ <option value="104">104</option>
+ <option value="105">105</option>
+ <option value="106">106</option>
+ <option value="107">107</option>
+ <option value="248">248</option>
+ <option value="300">300</option>
+ <option value="302">302</option>
+ <option value="305">305</option>
+ <option value="306">306</option>
+ <option value="307">307</option>
+ <option value="308">308</option>
+ </select>
+ </param>
+ <param id="finJur" name="Finess Juridique" datatype="string" value="">
+ <input id="finJur" datatype="string"/></param>
+ <param id="idPost" name="Codique" datatype="string" value="">
+ <input id="idPost" datatype="string"/></param>
+ <param id="idColl" name="SIRET" datatype="string" value="">
+ <input id="idColl" datatype="string"/></param>
+ <param id="codCol" name="Code Collectivité" datatype="string" value="">
+ <input id="codCol" datatype="string"/></param>
+ <param id="codBud" name="Code Budget" datatype="string" value="">
+ <input id="codBud" datatype="string"/></param>
+ <controlTech id="TECH02" libelle="Contrôle de l'encoding du fichier." severity="BLOQUANT">
+ <paramTech id="encoding" name="encoding" value="ISO-8859-1"/>
+ <paramTech id="failOnError" name="failOnError" value="true"/></controlTech>
+ <controlTech id="TECH03" libelle="Contrôle de la conformance au schéma." severity="BLOQUANT">
+ <paramTech id="schemaLocation" name="schemaLocation" value="PES_V2/TD-ex-3.0/Schemas_PES/PES_V2/Rev0/PES_Aller.xsd"/>
+ <paramTech id="failOnError" name="failOnError" value="true"/></controlTech>
+ <control id="TIE01" libelle="Contrôle de présence de la dénomination du tiers" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.tie.TIE01">
+ <regle-fonctionnelle>A chaque ligne de pièce doit correspondre au moins un tiers.&lt;br/&gt;
+ Les informations nécessaires sont les suivantes :&lt;br/&gt; &lt;ul&gt;&lt;li&gt;Le type d'adresse (TypAdr doit être valorisé à 01 ou 02)&lt;/li&gt;&lt;li&gt;Nom&lt;/li&gt;&lt;li&gt;Adresse (Adr2 est obligatoire, Adr1 et Adr3 sont facultatives), le code postal, la ville et le code pays (dans le cas d'une adresse à l'étranger),&lt;/li&gt;&lt;li&gt;De plus s'il s'agit d'une personne physique, la civilité et le prénom doivent être obligatoirement indiqués,&lt;/li&gt;&lt;li&gt;S'il s'agit d'une personne morale, la civilité et le prénom ne doivent pas être indiqués. &lt;/li&gt;&lt;/ul&gt;.
+ </regle-fonctionnelle>
+ <message-echec>Bordereau n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD# - #MT# n°
+ #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE#
+ </message-echec>
+ </control>
+ <control id="TIE02" libelle="Contrôle du libellé des tiers" severity="FORCABLE" class="fr.gouv.finances.cp.xemelios.controls.pesv2.tie.TIE02">
+ <regle-fonctionnelle>Les tiers ne peuvent être libellés à «Divers» ou à «Divers...». Le tiers est
+ de préférence déterminé.
+ </regle-fonctionnelle>
+ <message-echec>Bordereau n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD# - #MT# n°
+ #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE#
+ </message-echec>
+ </control>
+ <control id="TIE03" libelle="Contrôle de l'identifiant national" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.tie.TIE03">
+ <regle-fonctionnelle>L'identifiant national du tiers doit être valide (contrôle de clé).&lt;br/&gt;Le type d'identifiant (NatIdTiers) ne doit pas être indiqué si l'identifiant (IdTiers) n'est pas valorisé.&lt;br/&gt;
+ Il ne peut s'agir d'un numéro SIREN.&lt;br/&gt;Un artisan, en tant que personne physique, ne peut disposer d'un numéro SIRET.
+ </regle-fonctionnelle>
+ <message-echec>Bordereau n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD# - #MT# n°
+ #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE# - IdTiers= #TIERS_ID_TIERS# - NatIdTiers=
+ #TIERS_NAT_ID_TIERS#
+ </message-echec>
+ </control>
+ <control id="TIE04" libelle="Contrôle de cohérence entre la catégorie et la nature juridique" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.tie.TIE04">
+ <regle-fonctionnelle>La catégorie juridique du tiers, doit être cohérente avec la nature
+ juridique du tiers.
+ </regle-fonctionnelle>
+ <message-echec>Bordereau n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD# - #MT# n° #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE# - NatJur= #TIERS_NATJUR# - CatTiers= #TIERS_CATTIERS#</message-echec>
+ </control>
+ <control id="TIE05" libelle="Contrôle de cohérence entre le couple la catégorie / la nature juridique et l'identifiant national" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.tie.TIE05">
+ <regle-fonctionnelle>Si l'identifiant &quot;Siret&quot; saisi commence par 1 ou 2 alors le tiers doit être identifié comme une personne &quot;morale&quot; de droit public.&lt;br/&gt;
+ Une personne physique, ne peut avoir d'identifiant national.
+ </regle-fonctionnelle>
+ <message-echec>Bordereau n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD# - #MT# n°
+ #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE# - CatTiers= #TIERS_CATTIERS# - NatIdTiers=
+ #TIERS_NATIDTIERS# - IdTiers= #TIERS_IDTIERS#
+ </message-echec>
+ </control>
+ <control id="TIE07" libelle="Contrôle sur le code résidant" severity="NON BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.tie.TIE07">
+ <regle-fonctionnelle>Les tiers résidents doivent avoir un code postal à 5 caractères.&lt;br/&gt;
+ Le pays de résidence doit être indiqué pour les tiers non résidents.&lt;br/&gt;
+ De plus, lorsque le code postal se situe à l'étranger ou en Corse, la balise CP doit étre valorisée à '99999' et le code postal doit être renseigné dans la balise ville.
+ </regle-fonctionnelle>
+ <message-echec>Bordereau n° #BORD_NUM# - TypBord= #BORD_TYPBORD# - #MT# n° #PIECE_IDPCE# - Ligne
+ n° #LIGNE_IDLIGNE# - Tiers : #TIERS_NOM#. #ERREUR#.
+ </message-echec>
+ </control>
+ <control id="TIE06" libelle="Contrôle de la domiciliation bancaire" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.tie.TIE06">
+ <regle-fonctionnelle>Les références bancaires : clé RIB, code banque, code guichet et cadrage du
+ numéro de compte doivent être cohérents et valides. (Pas valorisés à '00000' ou
+ '99999').
+ </regle-fonctionnelle>
+ <message-echec>Bordereau n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD# - #MT# n°
+ #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE# - CpteBancaire= #CPTE_IDBANCINT# / #CPTE_CODEETAB# /
+ #CPTE_CODEGUIC# / #CPTE_IDCPTE# / #CPTE_CLERIB#
+ </message-echec>
+ </control>
+ <control id="COMM05B" libelle="Contrôle de la présence d'un identifiant de collectivité _ Contrôle des fichiers" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.comm.COMM05B">
+ <regle-fonctionnelle><![CDATA[Une collectivité doit être valorisée de façon exhaustive dans chaque fichier : <br/>
+ <ul><li>La balise IdPost doit être valorisée sur 6 caractères alphanumériques SANS caractères « espace » dans la valeur</li>
+ <li>La balise IdColl doit être valorisée avec un numéro SIRET valide, (14 caractères numériques) correspondant au numéro SIRET de la collectivité</li>
+ <li>La balise CodCol doit être valorisée avec 3 caractères alphanumériques</li>
+ <li>La balise CodBud doit être valorisée avec 2 caractères alphanumériques</li></ul>]]></regle-fonctionnelle>
+ <message-echec>#ERREUR#</message-echec>
+ </control>
+ <control id="COMM06B" libelle="Contrôle relatif au Finess Juridique _ Contrôle du fichier" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.comm.COMM06B">
+ <regle-fonctionnelle>La balise FinJur ne doit être présente que pour la nomenclature M21</regle-fonctionnelle>
+ <message-echec>FinJur = #FINJUR# _ Paramètre FinJur = #FINJUR_PARAM# : #ERREUR#</message-echec>
+ </control>
+ <control id="DEP01" libelle="Contrôle de l'exercice du bordereau" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.dep.DEP01">
+ <regle-fonctionnelle>L'exercice doit correspondre soit à l'année en cours, soit à l'année
+ précédente si on est en période complémentaire tant que l'exercice n'est pas
+ clos.
+ </regle-fonctionnelle>
+ <message-echec>Bordereau de mandat n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord=
+ #BORD_TYPBORD#
+ </message-echec>
+ </control>
+ <control id="DEP02" libelle="Contrôle sur l'absence de doublon sur le numéro de bordereau" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.dep.DEP02">
+ <regle-fonctionnelle>Le numéro de bordereau ne doit pas être déjà attribuéà un bordereau de même
+ budget collectivité, même exercice, même type de bordereau (même
+ séquence).
+ </regle-fonctionnelle>
+ <message-echec>Bordereau de mandat n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord=
+ #BORD_TYPBORD#
+ </message-echec>
+ </control>
+ <control id="DEP03" libelle="Contrôle de cohérence des montants du bordereau" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.dep.DEP03">
+ <regle-fonctionnelle>Le montant total, HT et TVA, du bordereau de mandats doit être égal à la
+ somme des montants des mandats, HT et TVA.
+ </regle-fonctionnelle>
+ <message-echec>Bordereau n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPE# MtBordHT=
+ #BORD_MT_HT# - Somme des lignes= #BORD_SOMME_HT_PIECE# | Bordereau n° #BORD_NUM# - Exer=
+ #BORD_EXER# - TypBord= #BORD_TYPE# MtBordTVA= #BORD_MT_TVA# - Somme des lignes=
+ #BORD_SOMME_TVA_PIECE#
+ </message-echec>
+ </control>
+ <control id="DEP04" libelle="Contrôle des montants" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.dep.DEP04">
+ <regle-fonctionnelle>Tous les montants doivent être strictement positifs.</regle-fonctionnelle>
+ <message-echec>Bordereau de mandat n° #BORD_NUM# - Exer= #BORD_EXER# - TypeBord= #BORD_TYPBORD# -
+ MtBordHT= #BORD_MTHT# - MtBordTVA= #BORD_MTTVA#|Bordereau de mandat n° #BORD_NUM# - Exer=
+ #BORD_EXER# - TypBord= #BORD_TYPBORD# - Mandat n° #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE# -
+ MtHT= #LIGNE_MTHT# - MtTVA= #LIGNE_MTTVA#
+ </message-echec>
+ </control>
+ <control id="DEP05" libelle="Contrôle de l'absence de doublon sur le numéro de pièce" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.dep.DEP05">
+ <regle-fonctionnelle>Il ne doit pas y avoir de doublons sur le numéro de la
+ pièce.
+ </regle-fonctionnelle>
+ <message-echec>Bordereau de mandat n° #BORD_NUM# - Exer= #BORD_EXER# - TypeBord= #BORD_TYPBORD# -
+ Mandat n° #PIECE_IDPCE#
+ </message-echec>
+ </control>
+ <control id="DEP06" libelle="Contrôle de cohérence entre le type de bordereau et les couples (type, nature)" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.dep.DEP06">
+ <regle-fonctionnelle>Le triplet Type de bordereau / Nature du mandat / Type du mandat doit être
+ cohérent.&lt;br/&gt;La nature 15 (autre) ne doit pas être utilisée.
+ </regle-fonctionnelle>
+ <message-echec>Bordereau de mandat n° #BORD_NUM# - Exer= #BORD_EXER# - TypeBord= #BORD_TYPBORD# -
+ Mandat n° #PIECE_IDPCE# - TypMandat= #PIECE_TYPPCE# - NatureMandat=
+ #PIECE_NATPCE#
+ </message-echec>
+ </control>
+ <control id="DEP07" libelle="Règle de valorisation de la Nature de la pièce" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.dep.DEP07">
+ <regle-fonctionnelle>&lt;br/&gt;Pour les nomenclatures M4- M14 -M21 -M52 -M61 - M31 - M71 :&lt;br/&gt;&lt;ul&gt;&lt;li&gt;SI le type de la pièce est ordre mixte ALORS le compte de tiers est seul vérifié.&lt;/li&gt;&lt;li&gt;SI au moins une ligne du mandat contient un compte par nature typé 'Paie' (64*, 621*, 631*, 633*, 6531*) ALORS la nature du mandat doit être valorisé à 'Paie'.&lt;/li&gt;&lt;li&gt;SINON&lt;ul&gt;&lt;li&gt;SI la première ligne du mandat contient une référence 'Régie' ALORS la nature du mandat doit être valorisé à 'Régie'.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;</regle-fonctionnelle>
+ <message-echec>Bordereau de mandat n° #BORD_NUM# - Exer= #BORD_EXER# - TypeBord= #BORD_TYPBORD# -
+ Mandat n° #PIECE_IDPCE# - TypMandat= #PIECE_TYPPCE# - NatureMandat= #PIECE_NATPCE#
+ </message-echec>
+ </control>
+ <control id="DEP08" libelle="Contrôle lié au type de nomenclature et vote par opération" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.dep.DEP08">
+ <regle-fonctionnelle>Les comptes Nature, Fonction et Opération doivent être renseignés selon la
+ collectivité.
+ </regle-fonctionnelle>
+ <message-echec>Bordereau de mandat n° #BORD_NUM# - Exer= #BORD_EXER# - TypeBord= #BORD_TYPBORD# -
+ Mandat n° #PIECE_IDPCE# - Ligne n° #LIGNEDEPIECE_IDPCE#
+ </message-echec>
+ </control>
+ <control id="DEP09" libelle="Contrôle de la cohérence générale des informations DGP" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.dep.DEP09">
+ <regle-fonctionnelle>Les mandats éligibles à la mise en paiement doivent contenir les
+ informations nécessaires au suivi du DGP : date de départ, durée et date de fin du
+ délai.
+ </regle-fonctionnelle>
+ <message-echec>Bordereau de mandat n° #BORD_NUM# - Exer= #BORD_EXER# - TypeBord= #BORD_TYPBORD# -
+ Mandat n° #PIECE_IDPCE#
+ </message-echec>
+ </control>
+ <control id="DEP10" libelle="Contrôles des informations DGP : date début, date fin et durée" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.dep.DEP10">
+ <regle-fonctionnelle>Les informations DGP doivent être valides: date de départ, durée et date de fin du délai.&lt;br/&gt;
+ La durée ne peut être supérieure au délai fixé par la réglementation (#NB_JOURS# jours).&lt;br/&gt;
+ La date de fin du délai doit être supérieure ou égale à la date de début augmentée de la durée du délai.
+ </regle-fonctionnelle>
+ <message-echec>Bordereau de mandat n° #BORD_NUM# - Exer= #BORD_EXER# - TypeBord= #BORD_TYPBORD# -
+ Mandat n° #PIECE_IDPCE# - Début DGP= #DGP_DEB# - Fin DGP= #DGP_FIN# - Durée DGP=
+ #DGP_DUREE#
+ </message-echec>
+ </control>
+ <control id="DEP11" libelle="Principe de séquentialité des numéros de ligne" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.dep.DEP11">
+ <regle-fonctionnelle>Le numéro de ligne ne doit pas être déjà attribué à l'intérieur du mandat.&lt;br/&gt;Les lignes d'un mandat doivent avoir des numéros d'ordre séquentiels.</regle-fonctionnelle>
+ <message-echec>Bordereau de mandat n° #BORD_NUM# - Exer= #BORD_EXER# - TypeBord= #BORD_TYPBORD# -
+ Mandat n° #PIECE_IDPCE# - Ligne n° #LIGNE_PIECE_ID#
+ </message-echec>
+ </control>
+ <control id="DEP12" libelle="Contrôle d'assujettissement à la TVA" severity="BOUARF" class="fr.gouv.finances.cp.xemelios.controls.pesv2.dep.DEP12">
+ <regle-fonctionnelle>Le montant de la TVA ne doit être indiqué que si le budget collectivité et / ou le service gèrent la TVA.&lt;br/&gt;
+ Si la TVA est mentionnée alors que la TVA est gérée par un service, le service doit être indiqué.
+ </regle-fonctionnelle>
+ <message-echec>Bordereau de mandat n° #BORD_NUM# - Exer= #BORD_EXER# - TypeBord= #BORD_TYPBORD# -
+ Mandat n° #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE#
+ </message-echec>
+ </control>
+ <control id="DEP13" libelle="Contrôle sur le montant de la TVA" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.dep.DEP13">
+ <regle-fonctionnelle>Pour les collectivités ou services assujettis à la TVA, le montant du mandat
+ doit être égal au montant budgétaire augmenté de la TVA. Le montant de la TVA est créditée au compte de la TVA et le montant hors taxe est créditée au compte
+ budgétaire.
+ </regle-fonctionnelle>
+ <message-echec>Bordereau de mandat n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD# -
+ Mandat n° #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE# - MtHT= #LIGNE_MTHT# - MtTVA=
+ #LIGNE_MTTVA#
+ </message-echec>
+ </control>
+ <control id="DEP14" libelle="Contrôle de la présence d'un mode de règlement" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.dep.DEP14">
+ <regle-fonctionnelle>&lt;ul&gt;&lt;li&gt;Pour un mandat à payer, le mode de règlement doit être indiqué, et ne peut pas être égal à 'Autres' (ModRegl=09).&lt;/li&gt;&lt;li&gt;Si le mode règlement est ' numéraire ', le montant ne doit pas dépasser le seuil prévu dans la réglementation (au 22/08/2006 : 750 euros)&lt;/li&gt;&lt;li&gt;Si le mode de règlement est ' virement ' ou ' prélèvement ', les coordonnées bancaires doivent être renseignées.&lt;/li&gt;&lt;li&gt;Le mode de règlement ' 04 virement appli externe ' ne nécassite pas de RIB : les RIB sont inclus dans le fichier utilisé dans l'appli externe.&lt;/li&gt;&lt;li&gt;Dans le cas d'un mode de réglement par virement bancaire, la zone libellé du virement est renseignée.&lt;/li&gt;&lt;li&gt;Si le mode de réglement est ' virement à l'étranger ', l'identifiant international bancaire (IBAN) doit être renseigné ainsi que le BIC.&lt;/li&gt;&lt;li&gt;S'il s'agit d'un mandat collectif alors le mode de règlement doit être ' virement par application externe '.&lt;/li&gt;&lt;/ul&gt;</regle-fonctionnelle>
+ <message-echec>Bordereau de mandat n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD# -
+ Mandat n° #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE#
+ </message-echec>
+ </control>
+ <control id="DEP16" libelle="Contrôle d'existence de la pièce initiale" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.dep.DEP16">
+ <regle-fonctionnelle>Pour les mandats après paiement, mandats correctifs, mandats d'ordre de
+ nature ' cession ', mandats de charges constatées d'avance de nature ' Fonctionnement ', le
+ mandat devrait indiquer la référence à la pièce initiale.
+ </regle-fonctionnelle>
+ <message-echec>Bordereau de mandat n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD# -
+ Mandat n° #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE#
+ </message-echec>
+ </control>
+ <control id="DEP17" libelle="Contrôles des mandats multi-lignes Emprunt" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.dep.DEP17">
+ <regle-fonctionnelle>Si une ligne de mandat porte un numéro ' emprunt ', toutes les lignes de
+ mandats doivent porter un numéro ' emprunt '.
+ </regle-fonctionnelle>
+ <message-echec>Bordereau de mandat n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD# - Mandat n° #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE#</message-echec>
+ </control>
+ <control id="DEP18" libelle="Contrôle de présence du numéro d'inventaire" severity="NON BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.dep.DEP18">
+ <regle-fonctionnelle>Dans le cas des opérations d'ordre mixte, le numéro d'inventaire est
+ associéà un compte de contrepartie.(compte tiers)
+ </regle-fonctionnelle>
+ <message-echec>Bordereau de mandat n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD# -
+ Mandat n° #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE#
+ </message-echec>
+ </control>
+ <control id="DEP19" libelle="Contrôles liés aux mandats d'ordre" severity="NON BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.dep.DEP19">
+ <regle-fonctionnelle>Si le mandat est typé 'mandat d'ordre', il ne peut comporter des références bancaires.&lt;br/&gt;
+ Remarque : pour les mandats d'ordre : le créancier correspond au receveur de la collectivité. (De préférence CatTiers valorisé à 20 et NatJur valorisé à 07).
+ </regle-fonctionnelle>
+ <message-echec>Bordereau de mandat n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD# -
+ Mandat n° #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE# : #ERREUR#
+ </message-echec>
+ </control>
+ <control id="DEP20" libelle="Contrôles spécifiques aux HLM" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.dep.DEP20">
+ <regle-fonctionnelle>L'information TVA HLM est obligatoire.</regle-fonctionnelle>
+ <message-echec>Bordereau de mandat n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD# -
+ Mandat n° #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE#
+ </message-echec>
+ </control>
+ <control id="DEP21" libelle="Contrôles spécifiques aux Hôpitaux" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.dep.DEP21">
+ <regle-fonctionnelle>Le compte de TVA doit être renseigné.</regle-fonctionnelle>
+ <message-echec>Bordereau de mandat n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD# -
+ Mandat n° #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE# : #ERREUR#
+ </message-echec>
+ </control>
+ <control id="DEP23" libelle="Contrôles liés aux mandats de marché" severity="NON BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.dep.DEP23">
+ <regle-fonctionnelle>Lorsque la pièce est un mandat de type Marché, un numéro de marché doit être
+ renseigné, la balise IdMarche doit être alimentée.
+ </regle-fonctionnelle>
+ <message-echec>Absence du numéro de marché. Bordereau de mandat n° #BORD_NUM# - Exer= #BORD_EXER#
+ - TypPce= #PIECE_TYPPCE# - Mandat n° #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE#
+ </message-echec>
+ </control>
+ <control id="DEP24" libelle="Contrôles liés aux mandats de cession" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.dep.DEP24">
+ <regle-fonctionnelle>Lorsque la pièce est un mandat d'ordre budgétaire de nature cession, le compte budgétaire est de type 675 (sortie du bien de l'actif), 676 (plus-value) ou 192 (moins-value) et le numéro d'opération doit faire apparaître le chapitre 042 ou 6 (sortie du bien de l'actif) [vote par nature] ou bien le chapitre 914 (sortie du bien de l'actif) ou 934 [vote par fonction].&lt;br/&gt;
+ Le mandat doit faire référence à un titre d'ordre budgétaire.
+ </regle-fonctionnelle>
+ <message-echec>Bordereau de mandat n° #BORD_NUM# - Exer= #BORD_EXER# - TypPce= #PIECE_TYPPCE# -
+ Mandat n° #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE#
+ </message-echec>
+ </control>
+ <control id="DEP25" libelle="Contrôles spécifiques aux Collectivités" severity="NON BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.dep.DEP25">
+ <regle-fonctionnelle>Les Codes Régie, Numéros d'Emprunts ou d'Inventaire doivent être
+ renseignés.
+ </regle-fonctionnelle>
+ <message-echec>Bordereau de mandat n° #BORD_NUM# - Exer= #BORD_EXER# - TypeBord= #BORD_TYPBORD# -
+ Mandat n° #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE#. #ERREUR#
+ </message-echec>
+ </control>
+ <control id="DEP26" libelle="Contrôles spécifiques aux Collectivités" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.dep.DEP26">
+ <regle-fonctionnelle>La référence à la pièce initiale doit être alimentée dans le cas des charges constatées d'avance et des charges à payer.</regle-fonctionnelle>
+ <message-echec>Bordereau de mandat n° #BORD_NUM# - Mandat n° #PIECE_IDPCE# - Ligne n°
+ #LIGNE_IDLIGNE#. #ERREUR#
+ </message-echec>
+ </control>
+ <control id="DEP27" libelle="Contrôles spécifiques aux Collectivités" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.dep.DEP27">
+ <regle-fonctionnelle>Les contrôles sur la balise opération.</regle-fonctionnelle>
+ <message-echec>Bordereau n° #BORD_NUM# de mandat n° #PIECE_IDPCE# - Ligne n°
+ #LIGNE_IDLIGNE# - Code opération n° #LIGNE_OPE# : #ERREUR#.
+ </message-echec>
+ </control>
+ <control id="REC01" libelle="Contrôle de l'exercice du bordereau" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC01">
+ <regle-fonctionnelle>L'exercice doit correspondre soit à l'année en cours, soit à l'année
+ précédente si on est en période complémentaire tant que l'exercice n'est pas
+ clos.
+ </regle-fonctionnelle>
+ <message-echec>Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER#</message-echec>
+ </control>
+ <control id="REC02" libelle="Contrôle sur l'absence de doublon sur le numéro de bordereau" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC02">
+ <regle-fonctionnelle>Le numéro de bordereau ne doit pas être déjà attribuéà un bordereau de même
+ budget collectivité, même exercice, même type de bordereau (même
+ séquence).
+ </regle-fonctionnelle>
+ <message-echec>Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord=
+ #BORD_TYPBORD#
+ </message-echec>
+ </control>
+ <control id="REC03" libelle="Contrôle de l'existence de la date d'émission du bordereau" severity="NON BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC03">
+ <regle-fonctionnelle>La date d'émission du bordereau doit être valorisée.</regle-fonctionnelle>
+ <message-echec>Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord=
+ #BORD_TYPBORD#
+ </message-echec>
+ </control>
+ <control id="REC04" libelle="Contrôle du cumul des montants du bordereau" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC04">
+ <regle-fonctionnelle>Le montant total, HT et TVA, du bordereau de titres doit être égal à la
+ somme des montants des titres, HT et TVA .
+ </regle-fonctionnelle>
+ <message-echec>Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD#
+ #MT_BORD# #MT_LIGNES#
+ </message-echec>
+ </control>
+ <control id="REC05" libelle="Contrôle des montants" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC05">
+ <regle-fonctionnelle>Tous les montants HT doivent être strictement
+ positifs.
+ </regle-fonctionnelle>
+ <message-echec>Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypeBord= #BORD_TYPBORD# -
+ MtBordHT= #BORD_MTHT# - MtBordTVA= #BORD_MTTVA#|Bordereau de titre n° #BORD_NUM# - Exer=
+ #BORD_EXER# - TypBord= #BORD_TYPBORD# - Titre n° #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE# -
+ MtHT= #LIGNE_MTHT# - MtTVA= #LIGNE_MTTVA#
+ </message-echec>
+ </control>
+ <control id="REC06" libelle="Contrôle de la cohérence du nombre de pièces" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC06">
+ <regle-fonctionnelle>Le nombre de pièces indiquées dans la balise ' NbrPce ' doit être cohérent
+ avec le nombre de pièces insérées dans le fichier pour ce bordereau.
+ </regle-fonctionnelle>
+ <message-echec>Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - NbrPce= #BORD_NBPCE# -
+ Nombre de pieces= #NB_PIECES#
+ </message-echec>
+ </control>
+ <control id="REC07" libelle="Contrôle de l'absence de doublon sur le numéro de pièce" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC07">
+ <regle-fonctionnelle>Il ne doit pas y avoir de doublons sur le numéro de la
+ pièce.
+ </regle-fonctionnelle>
+ <message-echec>Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypeBord= #BORD_TYPBORD# -
+ Titre n° #PIECE_IDPCE#
+ </message-echec>
+ </control>
+ <control id="REC08" libelle="Contrôle de la date d'envoi de l'avis des sommes à payer" severity="NON BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC08">
+ <regle-fonctionnelle>La date d'envoi des avis de sommes à payer peut être fournie par
+ l'ordonnateur et peut alors servir pour le recouvrement du titre.
+ </regle-fonctionnelle>
+ <message-echec>Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypeBord= #BORD_TYPBORD# -
+ Titre n° #PIECE_IDPCE#
+ </message-echec>
+ </control>
+ <control id="REC09" libelle="Contrôle de l'existence de l'objet de la recette" severity="NON BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC09">
+ <regle-fonctionnelle>L'objet de la recette devrait être renseigné.</regle-fonctionnelle>
+ <message-echec>Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypeBord= #BORD_TYPBORD# -
+ Titre n° #PIECE_IDPCE#
+ </message-echec>
+ </control>
+ <control id="REC10" libelle="Règle de valorisation de la Nature de la pièce" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC10">
+ <regle-fonctionnelle>Les règles sont vérifiées ligne par ligne.&lt;ul&gt;&lt;li&gt;Pour un titre de type ordre mixte, le compte de tiers doit être valorisé, il ne comporte aucun identifiant régie, marché, encaissement ou rôle. &lt;/li&gt; &lt;li&gt;Pour un titre de type émis après encaissement, la référence de l'encaissement doit être renseignée (Bloc RattachPiece et non IdEncaissement).&lt;/li&gt;&lt;li&gt;Si le titre est un titre récapitulatif avec rôle alors le numéro de rôle doit être renseigné.&lt;/li&gt;&lt;li&gt;Si le titre est un titre de type annulation OU de type rattachement OU de nature complémentaire alors le bloc de rattachement doit être valorisé.&lt;/li&gt;&lt;li&gt;Si le titre est un titre de nature marché alors le numéro de marché doit être indiqué.&lt;/li&gt;&lt;li&gt;Si le titre est de type régie alors le numéro de régie doit être valorisé.&lt;/li&gt;&lt;/ul&gt;</regle-fonctionnelle>
+ <message-echec>Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypeBord= #BORD_TYPBORD# - Titre n° #PIECE_IDPCE#.&lt;br/&gt;#ERREUR#|Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypeBord= #BORD_TYPBORD# - Titre n° #PIECE_IDPCE# - Ligne n° #PIECE_IDLIGNE#.&lt;br/&gt;#ERREUR#</message-echec>
+ </control>
+ <control id="REC11" libelle="Contrôle lié au type de nomenclature et vote par opération" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC11">
+ <regle-fonctionnelle>Les comptes Nature, Fonction et Opération doivent être renseignés selon la
+ collectivité.
+ </regle-fonctionnelle>
+ <message-echec>Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypeBord= #BORD_TYPBORD# -
+ Titre n° #PIECE_IDPCE# - Ligne n° #LIGNEDEPIECE_IDPCE#
+ </message-echec>
+ </control>
+ <control id="REC12" libelle="Contrôle de cohérence entre le type de bordereau et les couples (type, nature)" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC12">
+ <regle-fonctionnelle>Le triplet Type de bordereau / Nature du mandat / Type du mandat doit être
+ cohérent.
+ </regle-fonctionnelle>
+ <message-echec>Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypeBord= #BORD_TYPBORD# -
+ Titre n° #PIECE_IDPCE# - TypPce= #PIECE_TYPPCE# - NatPce= #PIECE_NATPCE#
+ </message-echec>
+ </control>
+ <control id="REC13" libelle="Contrôle de l'unicité du compte de tiers pour les titres se rattachant au même code produit" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC13">
+ <regle-fonctionnelle>Les lignes de titre se rattachant au même code produit sont prises en charge
+ sur le même compte de tiers.
+ </regle-fonctionnelle>
+ <message-echec>Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD# - titre n° #PIECE_IDPCE#&lt;ul&gt;#DETAIL_MSG#&lt;/ul&gt;</message-echec>
+ </control>
+ <control id="REC14" libelle="Principe de séquentialité des numéros de ligne" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC14">
+ <regle-fonctionnelle>Le numéro de la ligne de titre ne doit pas être déjà attribué pour le titre en cours de traitement.&lt;BR/&gt;Le numéro de ligne de titre doit être séquentiel pour le titre en cours de traitement.</regle-fonctionnelle>
+ <message-echec>Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypeBord= #BORD_TYPBORD# -
+ Titre n° #PIECE_IDPCE#
+ </message-echec>
+ </control>
+ <control id="REC15" libelle="Contrôle du seuil d'émission des titres" severity="NON BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC15">
+ <regle-fonctionnelle>Les montants des titres doivent avoir un montant supérieur au seuil de mise
+ en recouvrement.
+ </regle-fonctionnelle>
+ <message-echec>Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypeBord= #BORD_TYPBORD# -
+ Titre n° #PIECE_IDPCE# - MtHT= #LIGNE_PIECE_MTHT#
+ </message-echec>
+ </control>
+ <control id="REC16" libelle="Contrôle sur l'existence du code produit" severity="FORCABLE" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC16">
+ <regle-fonctionnelle>Les produits sont paramétrés aussi bien au niveau national qu'au niveau
+ local et peuvent être fournis par l'ordonnateur. Il existe une table de correspondance entre les
+ codes produits locaux et les codes produits nationaux.
+ </regle-fonctionnelle>
+ <message-echec>Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypeBord= #BORD_TYPBORD# -
+ Titre n° #PIECE_IDPCE#|Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypeBord=
+ #BORD_TYPBORD# - Titre n° #PIECE_IDPCE# - Ligne= #LIGNE_NUM#
+ </message-echec>
+ </control>
+ <control id="REC17" libelle="Contrôle de la collectivité sur la TVA" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC17">
+ <regle-fonctionnelle>Le montant de la TVA ne doit être indiqué que si le budget collectivité et / ou le service gèrent la TVA.&lt;br/&gt;
+ Si la TVA est mentionnée alors que la TVA est gérée par un service, le service doit être indiqué.
+ </regle-fonctionnelle>
+ <message-echec>Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypeBord= #BORD_TYPBORD# -
+ Titre n° #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE#
+ </message-echec>
+ </control>
+ <control id="REC18" libelle="Contrôle de l'existence du compte d'imputation de la TVA" severity="NON BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC18">
+ <regle-fonctionnelle>Les montants de la TVA sont imputés sur un compte spécifique de la
+ TVA.
+ </regle-fonctionnelle>
+ <message-echec>Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypeBord= #BORD_TYPBORD# -
+ Titre n° #PIECE_IDPCE# #LIGNE_IDLIGNE#
+ </message-echec>
+ </control>
+ <control id="REC19" libelle="Contrôle sur le montant de la TVA" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC19">
+ <regle-fonctionnelle>Pour les collectivités ou services assujettis à la TVA, le montant du titre doit être égal au montant budgétaire augmenté de la TVA. Le montant de la TVA est créditée au compte de la TVA et le montant hors taxe est créditée au compte
+ budgétaire.
+ </regle-fonctionnelle>
+ <message-echec>Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD# - titre n° #PIECE_IDPCE#&lt;ul&gt;##DETAIL_MSG##&lt;/ul&gt;</message-echec>
+ </control>
+ <control id="REC20" libelle="Contrôle sur l'existence du Type de tiers" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC20">
+ <regle-fonctionnelle>Pour chaque ligne de titre, un débiteur principal doit être renseigné.</regle-fonctionnelle>
+ <message-echec>Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD# -
+ titre n° #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE#
+ </message-echec>
+ </control>
+ <control id="REC21" libelle="Contrôles spécifiques aux Hôpitaux" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC21">
+ <regle-fonctionnelle>Le Finess juridique, les compte de TVA, les Codes Produits et les
+ Informations Assurés peuvent être renseignés.
+ </regle-fonctionnelle>
+ <message-echec>Entête|Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord=
+ #BORD_TYPBORD# - titre n° #PIECE_IDPCE#|Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# -
+ TypBord= #BORD_TYPBORD# - titre n° #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE#
+ </message-echec>
+ </control>
+ <control id="REC22" libelle="Contrôles spécifiques aux Collectivités" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC22">
+ <regle-fonctionnelle>&lt;ul&gt;Les Codes Produits Locaux doivent être renseignés et ils ne peuvent être libellés à 'Divers'.&lt;/ul&gt;&lt;ul&gt;En M21, il ne doit pas y avoir de balises CodProdLoc, mais uniquement des balises CodProd.&lt;/ul&gt;</regle-fonctionnelle>
+ <message-echec>Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD# - Titre n° #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE#.&lt;br/&gt;#MSG_ERREUR#.</message-echec>
+ </control>
+ <control id="REC23" libelle="Contrôle de l'adresse du débiteur" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC23">
+ <regle-fonctionnelle>Lorsqu'une ligne de titre comprend un tiers, il doit avoir une
+ adresse
+ </regle-fonctionnelle>
+ <message-echec>Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD# -
+ Titre n° #PIECE_IDPCE# #LIGNE_ID#
+ </message-echec>
+ </control>
+ <control id="REC24" libelle="Contrôle de présence et de cohérence de l'identifiant de collectivité" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC24">
+ <regle-fonctionnelle>L'identifiant de collectivité (IdColl) est obligatoire et doit être
+ cohérent. Cette information se trouve dans l'Entête du fichier PES.
+ </regle-fonctionnelle>
+ <message-echec>L'IdColl de l'EnTetePES #ID_COLL#</message-echec>
+ </control>
+ <control id="REC25" libelle="Contrôles liés aux titres d'ordre" severity="NON BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC25">
+ <regle-fonctionnelle>Si le titre est typé ' titre d'ordre ' il ne peut comporter des références bancaires.&lt;br/&gt; Remarque : pour les titres d'ordre : le créancier correspond au receveur de la collectivité. (De préférence CatTiers valorisé à 20 et NatJur valorisé à 07).</regle-fonctionnelle>
+ <message-echec>Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD# -
+ Titre n° #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE#
+ </message-echec>
+ </control>
+ <control id="REC26" libelle="Contrôles liés aux titres sur plusieurs années" severity="NON BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC26">
+ <regle-fonctionnelle>Lorsque la pièce est un titre sur plusieurs années, il faut vérifier que le
+ numéro de convention (IdConv) est alimenté.
+ </regle-fonctionnelle>
+ <message-echec>Absence du numéro de convention. Bordereau de titre n° #BORD_NUM# - Exer=
+ #BORD_EXER# - TypBord= #BORD_TYPBORD# - TypPce= #PIECE_TYPPCE# - Titre n° #PIECE_IDPCE# - Ligne
+ n° #LIGNE_IDLIGNE#
+ </message-echec>
+ </control>
+ <control id="REC27" libelle="Contrôles liés aux titres de cession" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC27">
+ <regle-fonctionnelle>Lorsque la pièce est un titre d'ordre budgétaire de nature cession, le compte budgétaire est de type 2x (sortie du bien de l'actif), 192 (plus-value) ou 776 (moins-value) et le numéro d'opération doit faire apparaître le chapitre 040 ou 4 (sortie du bien de l'actif) [vote par nature] ou bien le chapitre 914 (sortie du bien de l'actif) ou 934 [vote par fonction].&lt;br/&gt;
+ Le titre doit faire référence à un mandat d'ordre budgétaire.
+ </regle-fonctionnelle>
+ <message-echec>Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD# -
+ TypPce= #PIECE_TYPPCE# - Titre n° #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE#
+ </message-echec>
+ </control>
+ <control id="REC28" libelle="Contrôles spécifiques aux Collectivités" severity="NON BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC28">
+ <regle-fonctionnelle>Les Codes Régie, Numéros d'Emprunts ou d'Inventaire doivent être
+ renseignés.
+ </regle-fonctionnelle>
+ <message-echec>Bordereau de mandat n° #BORD_NUM# - Exer= #BORD_EXER# - TypeBord= #BORD_TYPBORD# -
+ Titre n° #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE#. #ERREUR#
+ </message-echec>
+ </control>
+ <control id="REC29" libelle="Contrôles spécifiques aux Collectivités" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC29">
+ <regle-fonctionnelle>La référence à la pièce initiale doit être alimentée dans le cas des charges
+ à répartir, des produits constatés d'avance et des produits à rattacher.
+ </regle-fonctionnelle>
+ <message-echec>Bordereau de titre n° #BORD_NUM# - Titre n° #PIECE_IDPCE# - Ligne n°
+ #LIGNE_IDLIGNE#. #ERREUR#
+ </message-echec>
+ </control>
+ <control id="REC30" libelle="Contrôles spécifiques aux Collectivités" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC30">
+ <regle-fonctionnelle>Les contrôles sur la balise opération.</regle-fonctionnelle>
+ <message-echec>Bordereau n° #BORD_NUM# de titre n° #PIECE_IDPCE# - Ligne n°
+ #LIGNE_IDLIGNE# - Code opération = #LIGNE_OPE# : #ERREUR#.
+ </message-echec>
+ </control>
+ <control id="PJ1" libelle="Contrôle de version de PES_PJ" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.pj.PJ1">
+ <regle-fonctionnelle>La version du PES_PJ doit contenir la valeur 1.</regle-fonctionnelle>
+ <message-echec>Version de PES_PJ incorrecte (IdVer doit être de valeur 1).</message-echec>
+ </control>
+ <control id="PJ2" libelle="Contrôle de référencement de PJ avec PJRef" severity="NON BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.pj.PJ2">
+ <regle-fonctionnelle>Les PJ contenues dans le flux doivent avoir des identifiants
+ différents.
+ </regle-fonctionnelle>
+ <message-echec>Les identifiants uniques des PJ doivent absolument être différents les uns des
+ autres.
+ </message-echec>
+ </control>
+ <control id="PJ3" libelle="Contrôle de référencement de PJ avec RefCompta" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.pj.PJ3">
+ <regle-fonctionnelle>Les balises RefCompta et PJRef ne peuvent coexister simultanément dans le même flux PESV2.</regle-fonctionnelle>
+ <message-echec>PJ n° #PJ_IDUNIQUE# - Nom= #PJ_NOM#. Les balises RefCompta et PJRef ne peuvent exister dans le même flux PESV2 : &lt;ul&gt;&lt;li&gt;Soit le bloc PJRef est utilisé et la ou les PJ sont envoyée(s) avec les bordereaux de mandats ou titres auxquels elle(s) se rattache(nt)&lt;/li&gt;&lt;li&gt;Soit le bloc RefCompta est utilisé et la PJ est transmise a posteriori&lt;/li&gt;&lt;/ul&gt;</message-echec>
+ </control>
+ <control id="SIG1" libelle="Contrôle relatif à signature électronique" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.sig.SIG1">
+ <regle-fonctionnelle>En cas de dématérialisation complète avec présence de signature
+ électronique, le flux doit contenir la présence du caractère dématérialisé de
+ l'information.
+ </regle-fonctionnelle>
+ <message-echec>#MSG_ERREUR#.</message-echec>
+ </control>
+ <control id="SIG2" libelle="Contrôle relatif aux montants de cumul annuel" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.sig.SIG2">
+ <regle-fonctionnelle>Le montant du cumul annuel est obligatoire en cas de dématérialisation
+ complète (avec signature électronique).
+ </regle-fonctionnelle>
+ <message-echec>Bordereau n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD#. Le montant
+ du cumul annuel est obligatoire en cas de dématérialisation complète (avec signature
+ électronique).
+ </message-echec>
+ </control>
+ <control id="SIG3" libelle="Contrôle relatif aux caractéristiques de la signature électronique" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.sig.SIG3">
+ <regle-fonctionnelle>Les éléments de la signature électronique suivants sont obligatoires en cas de signature électronique (niveau global ou bordereau) et doivent être valorisés correctement : Nom du signataire, Qualité (Rôle) du signataire, Date de la signature, Cumul des montants annuels (Sévérité Bloquant)&lt;br/&gt;
+ L'élément de la signature électronique suivant est souhaitable en cas de signature électronique (niveau global ou bordereau) et doit être valorisé correctement : Adresse signature (Sévérité Non Bloquant)
+ </regle-fonctionnelle>
+ <message-echec>#MSG_ERREUR#</message-echec>
+ </control>
+ </document>
+</controls>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<persistence-config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:noNamespaceSchemaLocation="../../../../defs/config-metier/Persistence.xsd">
+ <layer name="mysql" persistence-model="xemelios-sql">
+ <document id="pes-aller" repository-import-xslt-file="">
+ <table type="repository" base-name="PES_ALLER_REPOSITORY" version="2">
+ CREATE TABLE IF NOT EXISTS ${base-name} (
+ ID VARCHAR(25),
+ LIBELLE VARCHAR(100),
+ COLLECTIVITE VARCHAR(15) NOT NULL,
+ REPOSITORY LONGBLOB,
+ ENCODING VARCHAR(20)
+ ) ENGINE MYISAM
+ <patch from-version="1">
+ <sql failonerror="false">ALTER TABLE ${base-name} ADD ID VARCHAR(25)</sql>
+ <sql failonerror="false">ALTER TABLE ${base-name} ADD LIBELLE VARCHAR(100)</sql>
+ </patch>
+ </table>
+ <table type="special-key" base-name="PES_ALLER_SPECIAL_KEYS" version="1">
+ CREATE TABLE IF NOT EXISTS ${base-name} (
+ COLLECTIVITE VARCHAR(15) NOT NULL,
+ BUDGET VARCHAR(24) NOT NULL,
+ INITIAL_DOC_NAME VARCHAR(100) NOT NULL,
+ KEY1 VARCHAR(100),
+ LIB1 VARCHAR(200),
+ KEY2 VARCHAR(100),
+ LIB2 VARCHAR(200),
+ KEY3 VARCHAR(100),
+ LIB3 VARCHAR(200),
+ KEY4 VARCHAR(100),
+ LIB4 VARCHAR(200),
+ KEY5 VARCHAR(100),
+ LIB5 VARCHAR(200),
+ KEY6 VARCHAR(100),
+ LIB6 VARCHAR(200),
+ KEY7 VARCHAR(100),
+ LIB7 VARCHAR(200),
+ KEY8 VARCHAR(100),
+ LIB8 VARCHAR(200),
+ KEY9 VARCHAR(100),
+ LIB9 VARCHAR(200),
+ KEY10 VARCHAR(100),
+ LIB10 VARCHAR(200),
+ INDEX IX_${base-name}_BC (COLLECTIVITE,BUDGET)
+ ) ENGINE MYISAM
+ </table>
+ <table type="list-bc" base-name="PES_ALLER_LIST_BUDG_COLL" version="1">
+ CREATE TABLE IF NOT EXISTS ${base-name} (
+ COLLECTIVITE VARCHAR(15) NOT NULL,
+ BUDGET VARCHAR(24) NOT NULL,
+ BUDGET_LIB VARCHAR(200),
+ COLLECTIVITE_LIB VARCHAR(200),
+ INITIAL_DOC_NAME VARCHAR(100) NOT NULL,
+ INDEX IX_${base-name}_BC (COLLECTIVITE,BUDGET),
+ ARCHIVE_NAME VARCHAR(100), INDEX ${base-name}_AN (ARCHIVE_NAME)
+ ) ENGINE MYISAM
+ </table>
+
+ <etat id="PES_DepenseAller" import-xslt-file="PES_V2/PES-Aller-DA-import-mysql.xsl">
+
+ <key1>
+ <path>/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/@added:generated-id</path>
+ </key1>
+ <key2>
+ <path>/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/@added:generated-id</path>
+ </key2>
+ <key3>
+ <path>/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:BlocPiece/n:InfoPce/n:PJRef/@added:generated-id</path>
+ </key3>
+ <key4>
+ <path>/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePce/n:PJRef/@added:generated-id</path>
+ </key4>
+ <key5>
+ <path>/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/added:AllPJRef/@added:generated-id</path>
+ </key5>
+ <table type="document" base-name="PES_ALLER_DA_DOCUMENTS" version="1">
+ CREATE TABLE IF NOT EXISTS ${base-name} (
+ COLLECTIVITE VARCHAR(15) NOT NULL,
+ BUDGET VARCHAR(24) NOT NULL,
+ INITIAL_DOC_NAME VARCHAR(100) NOT NULL,
+ DOC_ID VARCHAR(100) NOT NULL,
+ DOC LONGBLOB,
+ ENCODING VARCHAR(20),
+ INDEX IX_${base-name}_BC (COLLECTIVITE,BUDGET,DOC_ID),
+ ARCHIVE_NAME VARCHAR(100), INDEX ${base-name}_AN (ARCHIVE_NAME)
+ ) ENGINE MYISAM
+ </table>
+ <table type="index" id="bordereau_depense" base-name="PES_ALLER_DA_BORDEREAU_IX" version="1" main="true">
+ CREATE TABLE IF NOT EXISTS ${base-name} (
+ COLLECTIVITE VARCHAR(15) NOT NULL,
+ BUDGET VARCHAR(24) NOT NULL,
+ DOC_ID VARCHAR(100) NOT NULL,
+ PRIMARY_KEY VARCHAR(100) NOT NULL,
+ NODE_ID VARCHAR(100),
+ NB_MANDATS INTEGER,
+ EXERCICE VARCHAR(4),
+ ID_BORDEREAU INTEGER(7),
+ DATE_EMISSION_BORDEREAU DATE,
+ TYPE_BORDEREAU VARCHAR(2),
+ NB_PIECES INTEGER,
+ MT_CUMUL_ANNUEL DECIMAL(14,2),
+ MT_BOREREAU_HT DECIMAL(14,2),
+ MT_BORDEREAU_TVA DECIMAL(14,2),
+ MT_BORDEREAU_TTC DECIMAL(14,2),
+ INDEX IX_${base-name}_BC (COLLECTIVITE,BUDGET,DOC_ID),
+ INDEX IX_${base-name}_DC (DOC_ID),
+ INITIAL_DOC_NAME VARCHAR(100),
+ INDEX ${base-name}_IDN (INITIAL_DOC_NAME),
+ ARCHIVE_NAME VARCHAR(100),
+ INDEX ${base-name}_AN (ARCHIVE_NAME)
+ ) ENGINE MYISAM
+ </table>
+ <table type="index" id="piece_depense" base-name="PES_ALLER_DA_PIECE_IX" version="2" based-on="key1">
+ CREATE TABLE IF NOT EXISTS ${base-name} (
+ COLLECTIVITE VARCHAR(15) NOT NULL,
+ BUDGET VARCHAR(24) NOT NULL,
+ DOC_ID VARCHAR(100) NOT NULL,
+ NODE_ID VARCHAR(50),
+ NB_LIGNES INTEGER,
+ MONTANT_HT DECIMAL(14,2),
+ MONTANT_TTC DECIMAL(14,2),
+ CODE_SERVICE VARCHAR(10),
+ AFFECT VARCHAR(10),
+ ID_PIECE INTEGER(13),
+ TYPE_PIECE VARCHAR(2),
+ NATURE_PIECE VARCHAR(2),
+ OBJ VARCHAR(100),
+ DATE_ECHEANCE DATE,
+ PJ VARCHAR(250),
+ DGP VARCHAR(10),
+ DGP_DATE_DEB DATE,
+ DGP_DATE_FIN DATE,
+ DGP_DUREE VARCHAR(2),
+ CODE_INTERNE_MOR VARCHAR(2),
+ TAUX_INTERNE_MOR DECIMAL(5,2),
+ INDEX IX_${base-name}_BC (COLLECTIVITE,BUDGET,DOC_ID),
+ INDEX IX_${base-name}_DC (DOC_ID),
+ INITIAL_DOC_NAME VARCHAR(100),
+ INDEX ${base-name}_IDN (INITIAL_DOC_NAME),
+ ARCHIVE_NAME VARCHAR(100),
+ INDEX ${base-name}_AN (ARCHIVE_NAME)
+ ) ENGINE MYISAM
+ <patch from-version="1">
+ <sql failonerror="false">ALTER TABLE ${base-name} MODIFY ID_PIECE INTEGER(13)</sql>
+ </patch>
+
+ </table>
+ <table type="index" id="pjref_piece_depense" base-name="PES_ALLER_DA_PIECE_PJREF" based-on="key3" version="1">
+ CREATE TABLE IF NOT EXISTS ${base-name} (
+ COLLECTIVITE VARCHAR(15) NOT NULL,
+ BUDGET VARCHAR(24) NOT NULL,
+ DOC_ID VARCHAR(100) NOT NULL,
+ NODE_ID VARCHAR(50),
+ SUPPORT_PJ VARCHAR(2),
+ ID_UNIQUE_PJ VARCHAR(50),
+ NOM_PJ VARCHAR(100),
+ INDEX IX_${base-name}_BC (COLLECTIVITE,BUDGET,DOC_ID),
+ INDEX IX_${base-name}_DC (DOC_ID),
+ INITIAL_DOC_NAME VARCHAR(100),
+ INDEX ${base-name}_IDN (INITIAL_DOC_NAME),
+ ARCHIVE_NAME VARCHAR(100),
+ INDEX ${base-name}_AN (ARCHIVE_NAME)
+ ) ENGINE MYISAM
+ </table>
+ <table type="index" id="lignepiece_depense" base-name="PES_ALLER_DA_LIGNE_PIECE_IX" version="2" based-on="key2">
+ CREATE TABLE IF NOT EXISTS ${base-name} (
+ COLLECTIVITE VARCHAR(15) NOT NULL,
+ BUDGET VARCHAR(24) NOT NULL,
+ DOC_ID VARCHAR(100) NOT NULL,
+ NODE_ID VARCHAR(50),
+ ID_LIGNE INTEGER(6),
+ NATURE VARCHAR(12),
+ FONCTION VARCHAR(10),
+ OPERATION VARCHAR(10),
+ COMPTE_ANA VARCHAR(10),
+ FACTURE VARCHAR(20),
+ LIBELLE_VIREMENT_1 VARCHAR(50),
+ LIBELLE_VIREMENT_2 VARCHAR(50),
+ MODE_REGLEMENT VARCHAR(2),
+ TVA_INTRA_COM BOOLEAN,
+ COMPTE_TVA VARCHAR(12),
+ COMPTE_TIERS VARCHAR(12),
+ MT_HT DECIMAL(14,2),
+ MT_TTC DECIMAL(14,2),
+ MT_TVA DECIMAL(14,2),
+ MT_FACTURE_HT DECIMAL(14,2),
+ REC_TVA BOOLEAN,
+ MT_HT_RES DECIMAL(14,2),
+ CODE_OP_SPEC VARCHAR(2),
+ ID_OP_SPEC VARCHAR(15),
+ NATURE_PIECE_ORIGINE VARCHAR(2),
+ EXERCICE_RAT INTEGER(4),
+ ID_PIECE_ORIGINE INTEGER(12),
+ ID_LIGNE_ORIGINE VARCHAR(6),
+ ID_CONV VARCHAR(25),
+ ID_MARCHE VARCHAR(30),
+ ID_EMPRUNT_ORDO VARCHAR(24),
+ ID_ACTIF VARCHAR(25),
+ ID_REGIE INTEGER(5),
+ ID_TIERS VARCHAR(30),
+ DATE_MALADE DATE,
+ NAT_ID_TIERS VARCHAR(2),
+ DATE_ID_TIERS DATE,
+ REF_TIERS VARCHAR(30),
+ CAT_TIERS VARCHAR(2),
+ NAT_JUR VARCHAR(2),
+ CIVILITE VARCHAR(10),
+ NOM VARCHAR(38),
+ COMPLEMENT_NOM VARCHAR(38),
+ PRENOM VARCHAR(38),
+ TYPE_ADRESSE VARCHAR(1),
+ ADR1 VARCHAR(38),
+ ADR2 VARCHAR(38),
+ ADR3 VARCHAR(38),
+ CODE_POSTAL VARCHAR(5),
+ VILLE VARCHAR(38),
+ CODE_RES VARCHAR(3),
+ CODE_PAYS VARCHAR(3),
+ DATE_ADR DATE,
+ RIB VARCHAR(23),
+ INDEX IX_${base-name}_BC (COLLECTIVITE,BUDGET,DOC_ID),
+ INDEX IX_${base-name}_DC (DOC_ID),
+ INITIAL_DOC_NAME VARCHAR(100),
+ INDEX ${base-name}_IDN (INITIAL_DOC_NAME),
+ ARCHIVE_NAME VARCHAR(100),
+ INDEX ${base-name}_AN (ARCHIVE_NAME)
+ ) ENGINE MYISAM
+ <patch from-version="1">
+ <sql failonerror="false">alter table ${base-name} MODIFY ID_MARCHE VARCHAR(30)</sql>
+ </patch>
+
+ </table>
+ <table type="index" id="pjref_lignepiece_depense" base-name="PES_ALLER_DA_LIGNE_PIECE_PJREF" based-on="key4" version="1">
+ CREATE TABLE IF NOT EXISTS ${base-name} (
+ COLLECTIVITE VARCHAR(15) NOT NULL,
+ BUDGET VARCHAR(24) NOT NULL,
+ DOC_ID VARCHAR(100) NOT NULL,
+ NODE_ID VARCHAR(50),
+ SUPPORT_PJ VARCHAR(2),
+ ID_UNIQUE_PJ VARCHAR(50),
+ NOM_PJ VARCHAR(100),
+ INDEX IX_${base-name}_BC (COLLECTIVITE,BUDGET,DOC_ID),
+ INDEX IX_${base-name}_DC (DOC_ID),
+ INITIAL_DOC_NAME VARCHAR(100),
+ INDEX ${base-name}_IDN (INITIAL_DOC_NAME),
+ ARCHIVE_NAME VARCHAR(100),
+ INDEX ${base-name}_AN (ARCHIVE_NAME)
+ ) ENGINE MYISAM
+ </table>
+ <table type="index" id="depense_all_pj" base-name="PES_ALLER_DA_ALL_PJ" based-on="key5" version="1">
+ CREATE TABLE IF NOT EXISTS ${base-name} (
+ COLLECTIVITE VARCHAR(15) NOT NULL,
+ BUDGET VARCHAR(24) NOT NULL,
+ DOC_ID VARCHAR(100) NOT NULL,
+ NODE_ID VARCHAR(50),
+ SUPPORT_PJ VARCHAR(2),
+ ID_UNIQUE_PJ VARCHAR(50),
+ NOM_PJ VARCHAR(100),
+ INDEX IX_${base-name}_BC (COLLECTIVITE,BUDGET,DOC_ID),
+ INDEX IX_${base-name}_DC (DOC_ID),
+ INITIAL_DOC_NAME VARCHAR(100),
+ INDEX ${base-name}_IDN (INITIAL_DOC_NAME),
+ ARCHIVE_NAME VARCHAR(100),
+ INDEX ${base-name}_AN (ARCHIVE_NAME)
+ ) ENGINE MYISAM
+ </table>
+
+
+ <!-- CRITERIA BORDEREAU BLOC BORDEREAU -->
+ <criteria id="bordereau_exercice" type="1" sql-index-id="SQI_DA_1">
+ <where-clause>${table}.${column}=##VALEUR:bordereau_exercice##</where-clause>
+ </criteria>
+ <criteria id="bordereau_id" type="1" sql-index-id="SQI_DA_2">
+ <where-clause>${table}.${column}##OPERATEUR:bordereau_id####VALEUR:bordereau_id##</where-clause>
+ </criteria>
+ <criteria id="bordereau_date_emission" type="1" sql-index-id="SQI_DA_3">
+ <where-clause>fn:date-compare(${table}.${column},bordereau_date_emission)</where-clause>
+ </criteria>
+ <criteria id="bordereau_type" type="1" sql-index-id="SQI_DA_4">
+ <where-clause>${table}.${column}=##VALEUR:bordereau_type##</where-clause>
+ </criteria>
+ <criteria id="bordereau_nb_pieces" type="1" sql-index-id="SQI_DA_5">
+ <where-clause>${table}.${column}##OPERATEUR:bordereau_nb_pieces####VALEUR:bordereau_nb_pieces##</where-clause>
+ </criteria>
+ <criteria id="bordereau_mt_cumul_annuel" type="1" sql-index-id="SQI_DA_6">
+ <where-clause>${table}.${column}##OPERATEUR:bordereau_mt_cumul_annuel####VALEUR:bordereau_mt_cumul_annuel##</where-clause>
+ </criteria>
+ <criteria id="bordereau_mt_bord_ht" type="1" sql-index-id="SQI_DA_7">
+ <where-clause>${table}.${column}##OPERATEUR:bordereau_mt_ht####VALEUR:bordereau_mt_ht##</where-clause>
+ </criteria>
+ <criteria id="bordereau_mt_bord_tva" type="1" sql-index-id="SQI_DA_8">
+ <where-clause>${table}.${column}##OPERATEUR:bordereau_mt_bord_tva####VALEUR:bordereau_mt_bord_tva##</where-clause>
+ </criteria>
+ <criteria id="bordereau_montant_TTC" sql-index-id="SQI_DA_8B">
+ <where-clause>${table}.${column}##OPERATEUR:bordereau_montant_TTC####VALEUR:bordereau_montant_TTC##</where-clause>
+ </criteria>
+ <!-- CRITERIA PIECE -->
+ <criteria id="piece_code_service" sql-index-id="SQI_DA_9" type="1">
+ <where-clause>fn:string-compare(${table}.${column},piece_code_service)</where-clause>
+ </criteria>
+ <criteria id="piece_affect" sql-index-id="SQI_DA_10" type="1">
+ <where-clause>fn:string-compare(${table}.${column},piece_affect)</where-clause>
+ </criteria>
+ <criteria id="piece_id" sql-index-id="SQI_DA_11" type="1">
+ <where-clause>${table}.${column}##OPERATEUR:piece_id####VALEUR:piece_id##</where-clause>
+ </criteria>
+ <criteria id="piece_type" sql-index-id="SQI_DA_12" type="1">
+ <where-clause>${table}.${column}=##VALEUR:piece_type##</where-clause>
+ </criteria>
+ <criteria id="piece_nature" sql-index-id="SQI_DA_13" type="1">
+ <where-clause>${table}.${column}=##VALEUR:piece_nature##</where-clause>
+ </criteria>
+ <criteria id="piece_obj" sql-index-id="SQI_DA_14" type="1">
+ <where-clause>fn:string-compare(${table}.${column},piece_obj)</where-clause>
+ </criteria>
+ <criteria id="piece_date_echeance" sql-index-id="SQI_DA_15" type="1">
+ <where-clause>fn:date-compare(${table}.${column},piece_date_echeance)</where-clause>
+ </criteria>
+ <criteria id="piece_avec_pj" type="1" sql-index-id="SQI_DA_M221">
+ <where-clause>${table}.${column}='##VALEUR:piece_avec_pj##'</where-clause>
+ </criteria>
+ <criteria id="piece_dgp" sql-index-id="SQI_DA_M222" type="1">
+ <where-clause>${table}.${column}='##VALEUR:piece_dgp##'</where-clause>
+ </criteria>
+ <criteria id="piece_dgp_date_deb" sql-index-id="SQI_DA_18" type="1">
+ <where-clause>fn:date-compare(${table}.${column},piece_dgp_date_deb)</where-clause>
+ </criteria>
+ <criteria id="piece_dgp_date_fin" sql-index-id="SQI_DA_19" type="1">
+ <where-clause>fn:date-compare(${table}.${column},piece_dgp_date_fin)</where-clause>
+ </criteria>
+ <criteria id="piece_dgp_duree" sql-index-id="SQI_DA_20" type="1">
+ <where-clause>fn:string-compare(${table}.${column},piece_dgp_duree)</where-clause>
+ </criteria>
+ <criteria id="piece_dgp_code_interne_mor" sql-index-id="SQI_DA_21" type="1">
+ <where-clause>fn:string-compare(${table}.${column},piece_dgp_code_interne_mor)</where-clause>
+ </criteria>
+ <criteria id="piece_dgp_taux_interne_mor" sql-index-id="SQI_DA_22" type="1">
+ <where-clause>fn:string-compare(${table}.${column},piece_dgp_taux_interne_mor)</where-clause>
+ </criteria>
+ <criteria id="piece_montantHT" sql-index-id="SQI_DA_85" type="1">
+ <where-clause>${table}.${column}##OPERATEUR:piece_montantHT####VALEUR:piece_montantHT##</where-clause>
+ </criteria>
+ <criteria id="piece_montantTTC" sql-index-id="SQI_DA_86" type="1">
+ <where-clause>${table}.${column}##OPERATEUR:piece_montantTTC####VALEUR:piece_montantTTC##</where-clause>
+ </criteria>
+ <!-- CRITERIA PJREF PIECE -->
+ <criteria id="piece_pjref_support" sql-index-id="SQI_DA_23" type="1">
+ <where-clause>fn:string-compare(${table}.${column},piece_pjref_support)</where-clause>
+ </criteria>
+ <criteria id="piece_pjref_id_unique" sql-index-id="SQI_DA_24" type="1">
+ <where-clause>fn:string-compare(${table}.${column},piece_pjref_id_unique)</where-clause>
+ </criteria>
+ <criteria id="piece_pjref_nom_pj" sql-index-id="SQI_DA_25" type="1">
+ <where-clause>fn:string-compare(${table}.${column},piece_pjref_nom_pj)</where-clause>
+ </criteria>
+ <!-- CRITERIA LIGNE PIECE -->
+ <criteria id="ligne_piece_id_ligne" sql-index-id="SQI_DA_26" type="1">
+ <where-clause>${table}.${column}##OPERATEUR:ligne_piece_id_ligne####VALEUR:ligne_piece_id_ligne##</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_nature" sql-index-id="SQI_DA_27" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_nature)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_fonction" sql-index-id="SQI_DA_28" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_fonction)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_operation" sql-index-id="SQI_DA_29" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_operation)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_compte_ana" sql-index-id="SQI_DA_30" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_compte_ana)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_facture" sql-index-id="SQI_DA_31" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_facture)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_libelle_virement_1" sql-index-id="SQI_DA_32" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_libelle_virement_1)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_libelle_virement_2" sql-index-id="SQI_DA_33" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_libelle_virement_2)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_mode_reglement" sql-index-id="SQI_DA_34" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_mode_reglement)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_tva_intra_com" sql-index-id="SQI_DA_35" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_tva_intra_com)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_compte_tva" sql-index-id="SQI_DA_36" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_compte_tva)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_compte_tiers" sql-index-id="SQI_DA_37" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_compte_tiers)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_montant_ht" sql-index-id="SQI_DA_38" type="1">
+ <where-clause>${table}.${column}##OPERATEUR:ligne_piece_montant_ht####VALEUR:ligne_piece_montant_ht##</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_montant_ttc" sql-index-id="SQI_DA_87" type="1">
+ <where-clause>${table}.${column}##OPERATEUR:ligne_piece_montant_ttc####VALEUR:ligne_piece_montant_ttc##</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_montant_tva" sql-index-id="SQI_DA_39" type="1">
+ <where-clause>${table}.${column}##OPERATEUR:ligne_piece_montant_tva####VALEUR:ligne_piece_montant_tva##</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_montant_facture_ht" sql-index-id="SQI_DA_40" type="1">
+ <where-clause>${table}.${column}##OPERATEUR:ligne_piece_montant_facture_ht####VALEUR:ligne_piece_montant_facture_ht##</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_rec_tva" sql-index-id="SQI_DA_41" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_rec_tva)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_mt_ht_res" sql-index-id="SQI_DA_42" type="1">
+ <where-clause>${table}.${column}##OPERATEUR:ligne_piece_mt_ht_res####VALEUR:ligne_piece_mt_ht_res##</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_code_op_spec" sql-index-id="SQI_DA_43" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_code_op_spec)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_id_op_spec" sql-index-id="SQI_DA_44" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_id_op_spec)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_nature_piece" sql-index-id="SQI_DA_45" type="1">
+ <where-clause>${table}.${column}=##VALEUR:ligne_piece_nature_piece##</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_exercice_rat" sql-index-id="SQI_DA_46" type="1">
+ <where-clause>${table}.${column}##OPERATEUR:ligne_piece_exercice_rat####VALEUR:ligne_piece_exercice_rat##</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_id_piece_origine" sql-index-id="SQI_DA_47" type="1">
+ <where-clause>${table}.${column}##OPERATEUR:ligne_piece_id_piece_origine####VALEUR:ligne_piece_id_piece_origine##</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_id_ligne_origine" sql-index-id="SQI_DA_48" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_id_ligne_origine)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_id_conv" sql-index-id="SQI_DA_49" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_id_conv)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_id_marche" sql-index-id="SQI_DA_50" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_id_marche)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_id_emprunt_ordo" sql-index-id="SQI_DA_51" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_id_emprunt_ordo)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_id_actif" sql-index-id="SQI_DA_52" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_id_actif)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_id_regie" sql-index-id="SQI_DA_53" type="1">
+ <where-clause>${table}.${column}##OPERATEUR:ligne_piece_id_regie####VALEUR:ligne_piece_id_regie##</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_id_tiers" sql-index-id="SQI_DA_54" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_id_tiers)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_date_malade" sql-index-id="SQI_DA_55" type="1">
+ <where-clause>fn:date-compare(${table}.${column},ligne_piece_date_malade)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_nature_id_tiers" sql-index-id="SQI_DA_56" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_nature_id_tiers)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_nature_id_tiers_lib" sql-index-id="SQI_DA_56" type="1">
+ <where-clause>${table}.${column}=##VALEUR:ligne_piece_nature_id_tiers##</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_date_id_tiers" sql-index-id="SQI_DA_57" type="1">
+ <where-clause>fn:date-compare(${table}.${column},ligne_piece_date_id_tiers)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_reference_tiers" sql-index-id="SQI_DA_58" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_reference_tiers)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_categorie_tiers" sql-index-id="SQI_DA_59" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_categorie_tiers)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_nature_juridique" sql-index-id="SQI_DA_60" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_nature_juridique)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_civilite" sql-index-id="SQI_DA_61" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_civilite)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_nom" sql-index-id="SQI_DA_62" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_nom)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_complement_nom" sql-index-id="SQI_DA_63" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_complement_nom)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_prenom" sql-index-id="SQI_DA_64" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_prenom)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_type_adresse" sql-index-id="SQI_DA_65" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_type_adresse)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_adresse1" sql-index-id="SQI_DA_66" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_adresse1)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_adresse2" sql-index-id="SQI_DA_67" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_adresse2)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_adresse3" sql-index-id="SQI_DA_68" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_adresse3)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_cp" sql-index-id="SQI_DA_69" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_cp)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_ville" sql-index-id="SQI_DA_70" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_ville)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_code_res" sql-index-id="SQI_DA_71" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_code_res)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_code_pays" sql-index-id="SQI_DA_72" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_code_pays)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_date_adresse" sql-index-id="SQI_DA_73" type="1">
+ <where-clause>fn:date-compare(${table}.${column},ligne_piece_date_adresse)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_rib" sql-index-id="SQI_DA_74" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_rib)</where-clause>
+ </criteria>
+ <!-- CRITERIA PJREF LIGNE PIECE -->
+ <criteria id="ligne_piece_pjref_support" sql-index-id="SQI_DA_75" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_pjref_support)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_pjref_id_unique" sql-index-id="SQI_DA_76" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_pjref_id_unique)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_pjref_nom_pj" sql-index-id="SQI_DA_77" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_pjref_nom_pj)</where-clause>
+ </criteria>
+ <criteria id="nb_Piece" sql-index-id="SQI_DA_83">
+ <where-clause>${table}.${column}##OPERATEUR:nb_Piece####VALEUR:nb_Piece##</where-clause>
+ </criteria>
+ <criteria id="nb_Ligne" sql-index-id="SQI_DA_84">
+ <where-clause>${table}.${column}##OPERATEUR:nb_Ligne####VALEUR:nb_Ligne##</where-clause>
+ </criteria>
+ <criteria id="justifie_par" sql-index-id="DEP_ALLPJ_ID_UNIQUE">
+ <where-clause>fn:string-compare(${table}.${column},IdUnique)</where-clause>
+ </criteria>
+
+
+ <!-- INDEX BORDEREAU BLOC BORDEREAU -->
+ <sql-index id="SQI_DA_M0" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/@added:primary-key" datatype="string" column="PRIMARY_KEY" table="bordereau_depense"/>
+ <!--sql-index id="SQI_DA_M1" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/@added:primary-key" datatype="string" column="PRIMARY_KEY" table="bordereau_depense"/-->
+ <sql-index id="SQI_DA_M4" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/@ano:node-id" datatype="string" table="bordereau_depense" column="NODE_ID"/>
+ <!--sql-index id="SQI_DA_M5" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/@ano:node-id" datatype="string" table="bordereau_depense" column="NODE_ID"/-->
+ <sql-index id="SQI_DA_1" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:BlocBordereau/n:Exer/@V" datatype="integer" table="bordereau_depense" column="EXERCICE"/>
+ <!--sql-index id="SQI_DA_1B" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:BlocBordereau/n:Exer/@V" datatype="integer" table="bordereau_depense" column="EXERCICE"/-->
+ <sql-index id="SQI_DA_2" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:BlocBordereau/n:IdBord/@V" datatype="integer" table="bordereau_depense" column="ID_BORDEREAU"/>
+ <sql-index id="SQI_DA_3" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:BlocBordereau/n:DteBordEm/@V" datatype="date" format="yyyy-MM-dd" table="bordereau_depense" column="DATE_EMISSION_BORDEREAU"/>
+ <sql-index id="SQI_DA_4" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:BlocBordereau/n:TypBord/@V" datatype="string" table="bordereau_depense" column="TYPE_BORDEREAU"/>
+ <!--sql-index id="SQI_DA_4B" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:BlocBordereau/n:TypBord/@V" datatype="string" table="bordereau_depense" column="TYPE_BORDEREAU"/-->
+ <sql-index id="SQI_DA_5" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:BlocBordereau/n:NbrPce/@V" datatype="integer" table="bordereau_depense" column="NB_PIECES"/>
+ <sql-index id="SQI_DA_6" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:BlocBordereau/n:MtCumulAnnuel/@V" datatype="decimal" table="bordereau_depense" column="MT_CUMUL_ANNUEL"/>
+ <sql-index id="SQI_DA_7" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:BlocBordereau/n:MtBordHT/@V" datatype="decimal" table="bordereau_depense" column="MT_BOREREAU_HT"/>
+ <sql-index id="SQI_DA_8" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:BlocBordereau/n:MtBordTVA/@V" datatype="decimal" table="bordereau_depense" column="MT_BORDEREAU_TVA"/>
+ <sql-index id="SQI_DA_8B" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/@added:montantTTC" datatype="decimal" table="bordereau_depense" column="MT_BORDEREAU_TTC"/>
+ <!-- INDEX PIECE -->
+ <sql-index id="SQI_DA_9" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:BlocPiece/n:InfoPce/n:CodServ/@V" column="CODE_SERVICE" datatype="string" table="piece_depense"/>
+ <sql-index id="SQI_DA_10" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:BlocPiece/n:InfoPce/n:Affect/@V" column="AFFECT" datatype="string" table="piece_depense"/>
+ <sql-index id="SQI_DA_11" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:BlocPiece/n:InfoPce/n:IdPce/@V" column="ID_PIECE" datatype="integer" table="piece_depense"/>
+ <sql-index id="SQI_DA_12" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:BlocPiece/n:InfoPce/n:TypPce/@V" column="TYPE_PIECE" datatype="string" table="piece_depense"/>
+ <sql-index id="SQI_DA_13" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:BlocPiece/n:InfoPce/n:NatPce/@V" column="NATURE_PIECE" datatype="string" table="piece_depense"/>
+ <sql-index id="SQI_DA_14" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:BlocPiece/n:InfoPce/n:Obj/@V" column="OBJ" datatype="string" table="piece_depense"/>
+ <sql-index id="SQI_DA_15" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:BlocPiece/n:InfoPce/n:DteEch/@V" column="DATE_ECHEANCE" format="yyyy-MM-dd" datatype="date" table="piece_depense"/>
+ <!--sql-index id="SQI_DA_16" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:BlocPiece/n:InfoPce/n:PJ/@V" column="PJ" datatype="string" table="piece_depense"/n:-->
+ <!--sql-index id="SQI_DA_17" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:BlocPiece/n:DGP/n:Dgp/@V" column="DGP" datatype="boolean" table="piece_depense"/n:-->
+ <sql-index id="SQI_DA_18" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:BlocPiece/n:DGP/n:DteDebDgp/@V" column="DGP_DATE_DEB" format="yyyy-MM-dd" datatype="date" table="piece_depense"/>
+ <sql-index id="SQI_DA_19" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:BlocPiece/n:DGP/n:DteFinDgp/@V" column="DGP_DATE_FIN" format="yyyy-MM-dd" datatype="date" table="piece_depense"/>
+ <sql-index id="SQI_DA_20" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:BlocPiece/n:DGP/n:DureeDgp/@V" column="DGP_DUREE" datatype="string" table="piece_depense"/>
+ <sql-index id="SQI_DA_21" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:BlocPiece/n:DGP/n:CodeIntMor/@V" column="CODE_INTERNE_MOR" datatype="string" table="piece_depense"/>
+ <sql-index id="SQI_DA_22" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:BlocPiece/n:DGP/n:TxIntMor/@V" column="TAUX_INTERNE_MOR" datatype="string" table="piece_depense"/>
+ <sql-index id="SQI_DA_M221" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/@added:avecPJ" datatype="string" column="PJ" table="piece_depense"/>
+ <sql-index id="SQI_DA_M222" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/@added:DGP" column="DGP" datatype="string" table="piece_depense"/>
+ <!-- INDEX PJREF PIECE -->
+ <sql-index id="SQI_DA_23" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:BlocPiece/n:InfoPce/n:PJRef/n:Support/@V" column="SUPPORT_PJ" datatype="string" table="pjref_piece_depense"/>
+ <sql-index id="SQI_DA_24" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:BlocPiece/n:InfoPce/n:PJRef/n:IdUnique/@V" column="ID_UNIQUE_PJ" datatype="string" table="pjref_piece_depense"/>
+ <sql-index id="SQI_DA_25" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:BlocPiece/n:InfoPce/n:PJRef/n:NomPJ/@V" column="NOM_PJ" datatype="string" table="pjref_piece_depense"/>
+ <!--sql-index id="SQI_DA_M101" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:BlocPiece/n:InfoPce/n:PJRef/@generated-id" datatype="string" column="NODE_ID" table="pjref_piece_depense"/-->
+ <!-- INDEX LIGNE PIECE -->
+ <sql-index id="SQI_DA_26" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePce/n:IdLigne/@V" column="ID_LIGNE" datatype="integer" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_27" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePce/n:Nature/@V" column="NATURE" datatype="string" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_28" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePce/n:Fonction/@V" column="FONCTION" datatype="string" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_29" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePce/n:Operation/@V" column="OPERATION" datatype="string" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_30" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePce/n:CptAna/@V" column="COMPTE_ANA" datatype="string" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_31" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePce/n:Facture/@V" column="FACTURE" datatype="string" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_32" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePce/n:LibVir1/@V" column="LIBELLE_VIREMENT_1" datatype="string" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_33" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePce/n:LibVir2/@V" column="LIBELLE_VIREMENT_2" datatype="string" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_34" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePce/n:ModRegl/@V" column="MODE_REGLEMENT" datatype="string" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_35" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePce/n:TVAIntraCom/@V" column="TVA_INTRA_COM" datatype="boolean" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_36" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePce/n:CpteTVA/@V" column="COMPTE_TVA" datatype="string" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_37" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePce/n:CpteTiers/@V" column="COMPTE_TIERS" datatype="string" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_38" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePce/n:MtHT/@V" column="MT_HT" datatype="decimal" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_39" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePce/n:MtTVA/@V" column="MT_TVA" datatype="decimal" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_40" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePce/n:MtFactHT/@V" column="MT_FACTURE_HT" datatype="decimal" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_41" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoTVAHLM/n:RecTVA/@V" column="REC_TVA" datatype="boolean" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_42" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoTVAHLM/n:MtHTRes/@V" column="MT_HT_RES" datatype="decimal" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_43" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:OpSpec/n:CodOpSpec/@V" column="CODE_OP_SPEC" datatype="string" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_44" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:OpSpec/n:IdOpSpec/@V" column="ID_OP_SPEC" datatype="string" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_45" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:RattachPiece/n:NatPceOrig/@V" column="NATURE_PIECE_ORIGINE" datatype="string" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_46" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:RattachPiece/n:ExerRat/@V" column="EXERCICE_RAT" datatype="integer" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_47" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:RattachPiece/n:IdPceOrig/@V" column="ID_PIECE_ORIGINE" datatype="integer" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_48" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:RattachPiece/n:IdLigneOrig/@V" column="ID_LIGNE_ORIGINE" datatype="string" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_49" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:LiensIdent/n:IdConv/@V" column="ID_CONV" datatype="string" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_50" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:LiensIdent/n:IdMarche/@V" column="ID_MARCHE" datatype="integer" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_51" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:LiensIdent/n:IdEmpruntOrdo/@V" column="ID_EMPRUNT_ORDO" datatype="string" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_52" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:LiensIdent/n:IdActif/@V" column="ID_ACTIF" datatype="string" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_53" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:LiensIdent/n:Id_Regie/@V" column="ID_REGIE" datatype="integer" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_54" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:InfoTiers/n:IdTiers/@V" column="ID_TIERS" datatype="string" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_55" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:InfoTiers/n:DteMalade/@V" column="DATE_MALADE" format="yyyy-MM-dd" datatype="date" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_56" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:InfoTiers/n:NatIdTiers/@V" column="NAT_ID_TIERS" datatype="string" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_57" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:InfoTiers/n:DteIdTiers/@V" column="DATE_ID_TIERS" format="yyyy-MM-dd" datatype="date" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_58" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:InfoTiers/n:RefTiers/@V" column="REF_TIERS" datatype="string" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_59" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:InfoTiers/n:CatTiers/@V" column="CAT_TIERS" datatype="string" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_60" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:InfoTiers/n:NatJur/@V" column="NAT_JUR" datatype="string" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_61" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:InfoTiers/n:Civilite/@V" column="CIVILITE" datatype="string" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_62" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:InfoTiers/n:Nom/@V" column="NOM" datatype="string" format="uppercase" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_63" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:InfoTiers/n:ComplNom/@V" column="COMPLEMENT_NOM" datatype="string" format="uppercase" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_64" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:InfoTiers/n:Prenom/@V" column="PRENOM" datatype="string" format="uppercase" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_65" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:Adresse/n:TypAdr/@V" column="TYPE_ADRESSE" datatype="string" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_66" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:Adresse/n:Adr1/@V" column="ADR1" datatype="string" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_67" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:Adresse/n:Adr2/@V" column="ADR2" datatype="string" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_68" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:Adresse/n:Adr3/@V" column="ADR3" datatype="string" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_69" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:Adresse/n:CP/@V" column="CODE_POSTAL" datatype="string" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_70" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:Adresse/n:Ville/@V" column="VILLE" datatype="string" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_71" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:Adresse/n:CodRes/@V" column="CODE_RES" datatype="string" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_72" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:Adresse/n:CodPays/@V" column="CODE_PAYS" datatype="string" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_73" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:Adresse/n:DteAdr/@V" column="DATE_ADR" format="yyyy-MM-dd" datatype="date" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_74" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:CpteBancaire/@rib" column="RIB" datatype="string" table="lignepiece_depense"/>
+ <!-- INDEX PJREF LIGNE PIECE -->
+ <sql-index id="SQI_DA_75" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePce/n:PJRef/n:Support/@V" column="SUPPORT_PJ" datatype="string" table="pjref_lignepiece_depense"/>
+ <sql-index id="SQI_DA_76" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePce/n:PJRef/n:IdUnique" column="ID_UNIQUE_PJ" datatype="string" table="pjref_lignepiece_depense"/>
+ <sql-index id="SQI_DA_77" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePce/n:PJRef/n:NomPJ" column="NOM_PJ" datatype="string" table="pjref_lignepiece_depense"/>
+ <!-- INDEX GENERATED ID-->
+ <!--sql-index id="SQI_DA_78" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/@added:generated-id" column="NODE_ID" datatype="string" table="bordereau_depense"/n:-->
+ <sql-index id="SQI_DA_79" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/@added:generated-id" column="NODE_ID" datatype="string" table="piece_depense"/>
+ <sql-index id="SQI_DA_80" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/@added:generated-id" column="NODE_ID" datatype="string" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_81" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:BlocPiece/n:InfoPce/n:PJRef/@added:generated-id" column="NODE_ID" datatype="string" table="pjref_piece_depense"/>
+ <sql-index id="SQI_DA_82" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePce/n:PJRef/@added:generated-id" column="NODE_ID" datatype="string" table="pjref_lignepiece_depense"/>
+ <!-- INDEX ADDED -->
+ <sql-index id="SQI_DA_83" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/@added:nbPiece" column="NB_MANDATS" datatype="integer" table="bordereau_depense"/>
+ <sql-index id="SQI_DA_84" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/@added:nbLigne" column="NB_LIGNES" datatype="integer" table="piece_depense"/>
+ <sql-index id="SQI_DA_85" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/@added:montantTTC" column="MONTANT_TTC" datatype="integer" table="piece_depense"/>
+ <sql-index id="SQI_DA_86" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/@added:montantHT" column="MONTANT_HT" datatype="integer" table="piece_depense"/>
+ <sql-index id="SQI_DA_87" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/@added:montantTTC" column="MT_TTC" datatype="integer" table="lignepiece_depense"/>
+ <!--sql-index id="SQI_DA_M2" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:BlocBordereau/n:IdBord/@V" datatype="integer" table="bordereau_depense" column="ID_BORDEREAU"/-->
+ <!--sql-index id="SQI_DA_M3" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:BlocPiece/n:InfoPce/n:IdPce/@V" column="ID_PIECE" datatype="string" table="piece_depense"/-->
+ <!-- ALL PJREF -->
+ <sql-index id="DEP_ALLPJ_NODE" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:added:AllPJRef/@added:generated-id" datatype="string" column="NODE_ID" table="depense_all_pj"/>
+ <sql-index id="DEP_ALLPJ_SUPPORT" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:added:AllPJRef/n:Support/@V" datatype="string" column="SUPPORT_PJ" table="depense_all_pj"/>
+ <sql-index id="DEP_ALLPJ_ID_UNIQUE" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:added:AllPJRef/n:IdUnique/@V" datatype="string" column="ID_UNIQUE_PJ" table="depense_all_pj"/>
+ <sql-index id="DEP_ALLPJ_NOM_PJ" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:added:AllPJRef/n:NomPJ/@V" datatype="string" column="NOM_PJ" table="depense_all_pj"/>
+
+ <element id="Piece">
+ <sql-count>COUNT(DISTINCT(CONCAT(PES_ALLER_DA_PIECE_IX.DOC_ID , PES_ALLER_DA_PIECE_IX.NODE_ID , PES_ALLER_DA_PIECE_IX.ID_PIECE)))</sql-count>
+ <special-cond>PES_ALLER_DA_PIECE_IX.DOC_ID IS NOT NULL</special-cond>
+ </element>
+ <element id="LigneDePiece">
+ <sql-count>COUNT(DISTINCT(CONCAT(PES_ALLER_DA_LIGNE_PIECE_IX.DOC_ID , PES_ALLER_DA_LIGNE_PIECE_IX.NODE_ID , PES_ALLER_DA_LIGNE_PIECE_IX.ID_LIGNE)))</sql-count>
+ <special-cond>PES_ALLER_DA_LIGNE_PIECE_IX.DOC_ID IS NOT NULL</special-cond>
+ </element>
+ </etat>
+ <!--etat id="PES_RoleAller" import-xslt-file="">
+ <table type="document" base-name="PES_ALLER_ROA_DOCUMENTS" version="1" main="yes">
+ CREATE TABLE IF NOT EXISTS ${base-name} (
+ COLLECTIVITE VARCHAR(15) NOT NULL,
+ BUDGET VARCHAR(24) NOT NULL,
+ INITIAL_DOC_NAME VARCHAR(100) NOT NULL,
+ DOC_ID VARCHAR(100) NOT NULL,
+ DOC LONGBLOB,
+ ENCODING VARCHAR(20),
+ INDEX IX_${base-name}_BC (COLLECTIVITE,BUDGET,DOC_ID)
+ ) ENGINE MYISAM
+ </table>
+ <table type="index" id="1" base-name="PES_ALLER_ROA_BORDEREAU_IX" version="1" main="yes">
+ CREATE TABLE IF NOT EXISTS ${base-name} (
+ COLLECTIVITE VARCHAR(15) NOT NULL,
+ BUDGET VARCHAR(24) NOT NULL,
+ DOC_ID VARCHAR(100) NOT NULL,
+ NODE_ID VARCHAR(50) NOT NULL,
+ EXERCICE DATE,
+ ID_BORDEREAU VARCHAR(7),
+ DATE_EMISSION_BORDEREAU DATE,
+ TYPE_BORDEREAU VARCHAR(2),
+ NB_PIECES INTEGER,
+ MT_CUMUL_ANNUEL DECIMAL(14,2),
+ MT_BOREREAU_HT DECIMAL(14,2),
+ MT_BORDEREAU_TVA DECIMAL(14,2),
+ INDEX IX_${base-name}_BC (COLLECTIVITE,BUDGET,DOC_ID),
+ INDEX IX_${base-name}_DC (DOC_ID)
+ ) ENGINE MYISAM
+ </table>
+ </etat>
+ <etat id="PES_BudgetAller" import-xslt-file="">
+ <table type="document" base-name="PES_ALLER_BA_DOCUMENTS" version="1" main="yes">
+ CREATE TABLE IF NOT EXISTS ${base-name} (
+ COLLECTIVITE VARCHAR(15) NOT NULL,
+ BUDGET VARCHAR(24) NOT NULL,
+ INITIAL_DOC_NAME VARCHAR(100) NOT NULL,
+ DOC_ID VARCHAR(100) NOT NULL,
+ DOC LONGBLOB,
+ ENCODING VARCHAR(20),
+ INDEX IX_${base-name}_BC (COLLECTIVITE,BUDGET,DOC_ID)
+ ) ENGINE MYISAM
+ </table>
+ <table type="index" id="1" base-name="PES_ALLER_BA_BORDEREAU_IX" version="1" main="yes">
+ CREATE TABLE IF NOT EXISTS ${base-name} (
+ COLLECTIVITE VARCHAR(15) NOT NULL,
+ BUDGET VARCHAR(24) NOT NULL,
+ DOC_ID VARCHAR(100) NOT NULL,
+ NODE_ID VARCHAR(50) NOT NULL,
+ EXERCICE DATE,
+ ID_BORDEREAU VARCHAR(7),
+ DATE_EMISSION_BORDEREAU DATE,
+ TYPE_BORDEREAU VARCHAR(2),
+ NB_PIECES INTEGER,
+ MT_CUMUL_ANNUEL DECIMAL(14,2),
+ MT_BOREREAU_HT DECIMAL(14,2),
+ MT_BORDEREAU_TVA DECIMAL(14,2),
+ INDEX IX_${base-name}_BC (COLLECTIVITE,BUDGET,DOC_ID),
+ INDEX IX_${base-name}_DC (DOC_ID)
+ ) ENGINE MYISAM
+ </table>
+ </etat>
+ <etat id="PES_EtatActif" import-xslt-file="">
+ <table type="document" base-name="PES_ALLER_EA_DOCUMENTS" version="1" main="yes">
+ CREATE TABLE IF NOT EXISTS ${base-name} (
+ COLLECTIVITE VARCHAR(15) NOT NULL,
+ BUDGET VARCHAR(24) NOT NULL,
+ INITIAL_DOC_NAME VARCHAR(100) NOT NULL,
+ DOC_ID VARCHAR(100) NOT NULL,
+ DOC LONGBLOB,
+ ENCODING VARCHAR(20),
+ INDEX IX_${base-name}_BC (COLLECTIVITE,BUDGET,DOC_ID)
+ ) ENGINE MYISAM
+ </table>
+ <table type="index" id="1" base-name="PES_ALLER_EA_BORDEREAU_IX" version="1" main="yes">
+ CREATE TABLE IF NOT EXISTS ${base-name} (
+ COLLECTIVITE VARCHAR(15) NOT NULL,
+ BUDGET VARCHAR(24) NOT NULL,
+ DOC_ID VARCHAR(100) NOT NULL,
+ NODE_ID VARCHAR(50) NOT NULL,
+ EXERCICE DATE,
+ ID_BORDEREAU VARCHAR(7),
+ DATE_EMISSION_BORDEREAU DATE,
+ TYPE_BORDEREAU VARCHAR(2),
+ NB_PIECES INTEGER,
+ MT_CUMUL_ANNUEL DECIMAL(14,2),
+ MT_BOREREAU_HT DECIMAL(14,2),
+ MT_BORDEREAU_TVA DECIMAL(14,2),
+ INDEX IX_${base-name}_BC (COLLECTIVITE,BUDGET,DOC_ID),
+ INDEX IX_${base-name}_DC (DOC_ID)
+ ) ENGINE MYISAM
+ </table>
+ </etat>
+ <etat id="PES_Marche" import-xslt-file="">
+ <table type="document" base-name="PES_ALLER_MARCHE_DOCUMENTS" version="1" main="yes">
+ CREATE TABLE IF NOT EXISTS ${base-name} (
+ COLLECTIVITE VARCHAR(15) NOT NULL,
+ BUDGET VARCHAR(24) NOT NULL,
+ INITIAL_DOC_NAME VARCHAR(100) NOT NULL,
+ DOC_ID VARCHAR(100) NOT NULL,
+ DOC LONGBLOB,
+ ENCODING VARCHAR(20),
+ INDEX IX_${base-name}_BC (COLLECTIVITE,BUDGET,DOC_ID)
+ ) ENGINE MYISAM
+ </table>
+ <table type="index" id="1" base-name="PES_ALLER_MARCHE_BORDEREAU_IX" version="1" main="yes">
+ CREATE TABLE IF NOT EXISTS ${base-name} (
+ COLLECTIVITE VARCHAR(15) NOT NULL,
+ BUDGET VARCHAR(24) NOT NULL,
+ DOC_ID VARCHAR(100) NOT NULL,
+ NODE_ID VARCHAR(50) NOT NULL,
+ EXERCICE DATE,
+ ID_BORDEREAU VARCHAR(7),
+ DATE_EMISSION_BORDEREAU DATE,
+ TYPE_BORDEREAU VARCHAR(2),
+ NB_PIECES INTEGER,
+ MT_CUMUL_ANNUEL DECIMAL(14,2),
+ MT_BOREREAU_HT DECIMAL(14,2),
+ MT_BORDEREAU_TVA DECIMAL(14,2),
+ INDEX IX_${base-name}_BC (COLLECTIVITE,BUDGET,DOC_ID),
+ INDEX IX_${base-name}_DC (DOC_ID)
+ ) ENGINE MYISAM
+ </table>
+ </etat>
+ <etat id="PESEtatPassif" import-xslt-file="">
+ <table type="document" base-name="PES_ALLER_EP_DOCUMENTS" version="1" main="yes">
+ CREATE TABLE IF NOT EXISTS ${base-name} (
+ COLLECTIVITE VARCHAR(15) NOT NULL,
+ BUDGET VARCHAR(24) NOT NULL,
+ INITIAL_DOC_NAME VARCHAR(100) NOT NULL,
+ DOC_ID VARCHAR(100) NOT NULL,
+ DOC LONGBLOB,
+ ENCODING VARCHAR(20),
+ INDEX IX_${base-name}_BC (COLLECTIVITE,BUDGET,DOC_ID)
+ ) ENGINE MYISAM
+ </table>
+ <table type="index" id="1" base-name="PES_ALLER_EP_BORDEREAU_IX" version="1" main="yes">
+ CREATE TABLE IF NOT EXISTS ${base-name} (
+ COLLECTIVITE VARCHAR(15) NOT NULL,
+ BUDGET VARCHAR(24) NOT NULL,
+ DOC_ID VARCHAR(100) NOT NULL,
+ NODE_ID VARCHAR(50) NOT NULL,
+ EXERCICE DATE,
+ ID_BORDEREAU VARCHAR(7),
+ DATE_EMISSION_BORDEREAU DATE,
+ TYPE_BORDEREAU VARCHAR(2),
+ NB_PIECES INTEGER,
+ MT_CUMUL_ANNUEL DECIMAL(14,2),
+ MT_BOREREAU_HT DECIMAL(14,2),
+ MT_BORDEREAU_TVA DECIMAL(14,2),
+ INDEX IX_${base-name}_BC (COLLECTIVITE,BUDGET,DOC_ID),
+ INDEX IX_${base-name}_DC (DOC_ID)
+ ) ENGINE MYISAM
+ </table>
+ </etat>
+ <etat id="PES_PJ" import-xslt-file="">
+ <table type="document" base-name="PES_ALLER_PJ_DOCUMENTS" version="1" main="yes">
+ CREATE TABLE IF NOT EXISTS ${base-name} (
+ COLLECTIVITE VARCHAR(15) NOT NULL,
+ BUDGET VARCHAR(24) NOT NULL,
+ INITIAL_DOC_NAME VARCHAR(100) NOT NULL,
+ DOC_ID VARCHAR(100) NOT NULL,
+ DOC LONGBLOB,
+ ENCODING VARCHAR(20),
+ INDEX IX_${base-name}_BC (COLLECTIVITE,BUDGET,DOC_ID)
+ ) ENGINE MYISAM
+ </table>
+ <table type="index" id="1" base-name="PES_ALLER_PJ_BORDEREAU_IX" version="1" main="yes">
+ CREATE TABLE IF NOT EXISTS ${base-name} (
+ COLLECTIVITE VARCHAR(15) NOT NULL,
+ BUDGET VARCHAR(24) NOT NULL,
+ DOC_ID VARCHAR(100) NOT NULL,
+ NODE_ID VARCHAR(50) NOT NULL,
+ EXERCICE DATE,
+ ID_BORDEREAU VARCHAR(7),
+ DATE_EMISSION_BORDEREAU DATE,
+ TYPE_BORDEREAU VARCHAR(2),
+ NB_PIECES INTEGER,
+ MT_CUMUL_ANNUEL DECIMAL(14,2),
+ MT_BOREREAU_HT DECIMAL(14,2),
+ MT_BORDEREAU_TVA DECIMAL(14,2),
+ INDEX IX_${base-name}_BC (COLLECTIVITE,BUDGET,DOC_ID),
+ INDEX IX_${base-name}_DC (DOC_ID)
+ ) ENGINE MYISAM
+ </table>
+ </etat-->
+
+ <etat id="PES_RecetteAller" import-xslt-file="PES_V2/PES-Aller-RA-import-mysql.xsl">
+ <key1>
+ <path>/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/@added:generated-id</path>
+ </key1>
+ <key2>
+ <path>/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:BlocPiece/n:PJRef/@added:generated-id</path>
+ </key2>
+ <key3>
+ <path>/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/@added:generated-id</path>
+ </key3>
+ <key4>
+ <path>/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePiece/n:PJRef/@added:generated-id</path>
+ </key4>
+ <key5>
+ <path>/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/@added:generated-id</path>
+ </key5>
+ <key6>
+ <path>/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Recouvrement/@added:generated-id</path>
+ </key6>
+ <key7>
+ <path>/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:added:AllPJRef/@added:generated-id</path>
+ </key7>
+
+ <table type="document" base-name="PES_ALLER_RA_DOCUMENTS" version="1">
+ CREATE TABLE IF NOT EXISTS ${base-name} (
+ COLLECTIVITE VARCHAR(15) NOT NULL,
+ BUDGET VARCHAR(24) NOT NULL,
+ INITIAL_DOC_NAME VARCHAR(100) NOT NULL,
+ DOC_ID VARCHAR(100) NOT NULL,
+ DOC LONGBLOB,
+ ENCODING VARCHAR(20),
+ INDEX IX_${base-name}_BC (COLLECTIVITE,BUDGET,DOC_ID),
+ ARCHIVE_NAME VARCHAR(100), INDEX ${base-name}_AN (ARCHIVE_NAME)
+ ) ENGINE MYISAM
+ </table>
+ <table type="index" id="T_RA_1" base-name="PES_ALLER_RA_BORDEREAU_IX" version="1" main="true">
+ CREATE TABLE IF NOT EXISTS ${base-name} (
+ COLLECTIVITE VARCHAR(15) NOT NULL,
+ BUDGET VARCHAR(24) NOT NULL,
+ DOC_ID VARCHAR(100) NOT NULL,
+ PRIMARY_KEY VARCHAR(100) NOT NULL,
+ EXERCICE INTEGER,
+ ID_BORDEREAU INTEGER,
+ DATE_EMISSION_BORDEREAU DATE,
+ TYPE_BORDEREAU VARCHAR(2),
+ NB_PIECES INTEGER,
+ MT_CUMUL_ANNUEL DECIMAL(14,2),
+ MT_BOREREAU_HT DECIMAL(14,2),
+ MT_BORDEREAU_TVA DECIMAL(14,2),
+ MONTANT_TTC DECIMAL(14,2),
+ INDEX IX_${base-name}_BC (COLLECTIVITE,BUDGET,DOC_ID),
+ INDEX IX_${base-name}_DC (DOC_ID),
+ INITIAL_DOC_NAME VARCHAR(100),
+ INDEX ${base-name}_IDN (INITIAL_DOC_NAME),
+ ARCHIVE_NAME VARCHAR(100),
+ INDEX ${base-name}_AN (ARCHIVE_NAME)
+ ) ENGINE MYISAM
+ </table>
+ <!--
+ NODE_ID VARCHAR(50) NOT NULL,
+ -->
+ <table type="index" id="T_RA_2" base-name="PES_ALLER_RA_PIECE_IX" version="2" based-on="key1">
+ CREATE TABLE IF NOT EXISTS ${base-name} (
+ COLLECTIVITE VARCHAR(15) NOT NULL,
+ BUDGET VARCHAR(24) NOT NULL,
+ DOC_ID VARCHAR(100) NOT NULL,
+ NODE_ID VARCHAR(50) NOT NULL,
+ CODE_SERVICE VARCHAR(10),
+ AFFECT VARCHAR(10),
+ CODE_PROD VARCHAR(2),
+ ID_PIECE INTEGER(13),
+ TYPE_PIECE VARCHAR(2),
+ NATURE_PIECE VARCHAR(2),
+ ID_ROL INTEGER,
+ DATE_ASP DATE,
+ OBJ VARCHAR(160),
+ DEB_FACT DATE,
+ FIN_FACT DATE,
+ NB_LIGNE INTEGER,
+ MONTANT_TTC DECIMAL(14,2),
+ MONTANT_HT DECIMAL(14,2),
+ AVEC_PJ VARCHAR(5),
+ INDEX IX_${base-name}_BC (COLLECTIVITE,BUDGET,DOC_ID),
+ INDEX IX_${base-name}_DC (DOC_ID),
+ INITIAL_DOC_NAME VARCHAR(100),
+ INDEX ${base-name}_IDN (INITIAL_DOC_NAME),
+ ARCHIVE_NAME VARCHAR(100),
+ INDEX ${base-name}_AN (ARCHIVE_NAME)
+ ) ENGINE MYISAM
+ <patch from-version="1">
+ <sql failonerror="false">ALTER TABLE ${base-name} MODIFY ID_PIECE INTEGER(13)</sql>
+ </patch>
+
+ </table>
+ <table type="index" id="T_RA_3" base-name="PES_ALLER_RA_PIECE_PJREF_IX" version="1" based-on="key2">
+ CREATE TABLE IF NOT EXISTS ${base-name} (
+ COLLECTIVITE VARCHAR(15) NOT NULL,
+ BUDGET VARCHAR(24) NOT NULL,
+ DOC_ID VARCHAR(100) NOT NULL,
+ NODE_ID VARCHAR(50) NOT NULL,
+ SUPPORT_PJ VARCHAR(2),
+ ID_UNIQUE_PJ VARCHAR(50),
+ NOM_PJ VARCHAR(100),
+ INDEX IX_${base-name}_BC (COLLECTIVITE,BUDGET,DOC_ID),
+ INDEX IX_${base-name}_DC (DOC_ID),
+ INITIAL_DOC_NAME VARCHAR(100),
+ INDEX ${base-name}_IDN (INITIAL_DOC_NAME),
+ ARCHIVE_NAME VARCHAR(100),
+ INDEX ${base-name}_AN (ARCHIVE_NAME)
+ ) ENGINE MYISAM
+ </table>
+ <table type="index" id="T_RA_4" base-name="PES_ALLER_RA_LIGNE_PIECE_IX" version="1" based-on="key3">
+ CREATE TABLE IF NOT EXISTS ${base-name} (
+ COLLECTIVITE VARCHAR(15) NOT NULL,
+ BUDGET VARCHAR(24) NOT NULL,
+ DOC_ID VARCHAR(100) NOT NULL,
+ NODE_ID VARCHAR(50) NOT NULL,
+ ID_LIGNE VARCHAR(6),
+ OBJET VARCHAR(160),
+ CODE_PROD VARCHAR(4),
+ FIN_GEO INTEGER,
+ COD_ET_GEO VARCHAR(3),
+ NATURE VARCHAR(12),
+ FONCTION VARCHAR(10),
+ OPERATION VARCHAR(10),
+ COMPTE_ANA VARCHAR(10),
+ FACTURE VARCHAR(20),
+ TAUX_TVA DECIMAL(5,2),
+ MAJO VARCHAR(5),
+ DATE_MAJO DATE,
+ TAUX_MAJO DECIMAL(5,2),
+ COMPTE_TIERS VARCHAR(12),
+ TVA_INTRA_COM VARCHAR(5),
+ COMPTE_TVA VARCHAR(12),
+ MT_HT DECIMAL(14,2),
+ MT_TVA DECIMAL(14,2),
+ MT_NON_MAJO DECIMAL(14,2),
+ NAT_PREL VARCHAR(2),
+ PER_PREL VARCHAR(2),
+ DATE_PREL DATE,
+ MNT_PREL DECIMAL(14,2),
+ COD_ASS_DEB VARCHAR(1),
+ COD_AYANT_DROIT VARCHAR(2),
+ NATURE_PIECE_ORIGINE VARCHAR(2),
+ EXERCICE_RAT VARCHAR(4),
+ ID_PIECE_ORIGINE INTEGER(12),
+ ID_LIGNE_ORIGINE VARCHAR(6),
+ ID_ENCAISSEMENT INTEGER,
+ ID_CONV VARCHAR(25),
+ ID_MARCHE VARCHAR(30),
+ ID_CAUTION VARCHAR(25),
+ ID_EMPRUNT_ORDO VARCHAR(24),
+ ID_ACTIF VARCHAR(25),
+ ID_REGIE VARCHAR(5),
+ MONTANT_TTC DECIMAL(14,2),
+ INDEX IX_${base-name}_BC (COLLECTIVITE,BUDGET,DOC_ID),
+ INDEX IX_${base-name}_DC (DOC_ID),
+ INITIAL_DOC_NAME VARCHAR(100),
+ INDEX ${base-name}_IDN (INITIAL_DOC_NAME),
+ ARCHIVE_NAME VARCHAR(100),
+ INDEX ${base-name}_AN (ARCHIVE_NAME)
+ ) ENGINE MYISAM
+ </table>
+ <table type="index" id="T_RA_5" base-name="PES_ALLER_RA_LIGNE_PIECE_PJREF" based-on="key4" version="1">
+ CREATE TABLE IF NOT EXISTS ${base-name} (
+ COLLECTIVITE VARCHAR(15) NOT NULL,
+ BUDGET VARCHAR(24) NOT NULL,
+ DOC_ID VARCHAR(100) NOT NULL,
+ NODE_ID VARCHAR(50) NOT NULL,
+ SUPPORT_PJ VARCHAR(2),
+ ID_UNIQUE_PJ VARCHAR(50),
+ NOM_PJ VARCHAR(100),
+ INDEX IX_${base-name}_BC (COLLECTIVITE,BUDGET,DOC_ID),
+ INDEX IX_${base-name}_DC (DOC_ID),
+ INITIAL_DOC_NAME VARCHAR(100),
+ INDEX ${base-name}_IDN (INITIAL_DOC_NAME),
+ ARCHIVE_NAME VARCHAR(100),
+ INDEX ${base-name}_AN (ARCHIVE_NAME)
+ ) ENGINE MYISAM
+ </table>
+ <table type="index" id="T_RA_6" base-name="PES_ALLER_RA_LIGNE_PIECE_TIERS" based-on="key5" version="1">
+ CREATE TABLE IF NOT EXISTS ${base-name} (
+ COLLECTIVITE VARCHAR(15) NOT NULL,
+ BUDGET VARCHAR(24) NOT NULL,
+ DOC_ID VARCHAR(100) NOT NULL,
+ NODE_ID VARCHAR(50) NOT NULL,
+ ID_TIERS VARCHAR(30),
+ DATE_MALADE DATE,
+ NAT_ID_TIERS VARCHAR(2),
+ DATE_ID_TIERS DATE,
+ REF_TIERS VARCHAR(30),
+ CAT_TIERS VARCHAR(2),
+ NAT_JUR VARCHAR(2),
+ TYP_TIERS VARCHAR(2),
+ CIVILITE VARCHAR(10),
+ NOM VARCHAR(38),
+ COMPLEMENT_NOM VARCHAR(38),
+ PRENOM VARCHAR(38),
+ TYP_ADR VARCHAR(1),
+ ADR1 VARCHAR(38),
+ ADR2 VARCHAR(38),
+ ADR3 VARCHAR(38),
+ CP VARCHAR(5),
+ VILLE VARCHAR(38),
+ COD_RES VARCHAR(5),
+ COD_PAYS INTEGER,
+ DATE_ADR DATE,
+ RIB VARCHAR(23),
+ INDEX IX_${base-name}_BC (COLLECTIVITE,BUDGET,DOC_ID),
+ INDEX IX_${base-name}_DC (DOC_ID),
+ INITIAL_DOC_NAME VARCHAR(100),
+ INDEX ${base-name}_IDN (INITIAL_DOC_NAME),
+ ARCHIVE_NAME VARCHAR(100),
+ INDEX ${base-name}_AN (ARCHIVE_NAME)
+ ) ENGINE MYISAM
+ </table>
+ <table type="index" id="T_RA_7" base-name="PES_ALLER_RA_LIGNE_PIECE_RECOUVREMENT" based-on="key6" version="1">
+ CREATE TABLE IF NOT EXISTS ${base-name} (
+ COLLECTIVITE VARCHAR(15) NOT NULL,
+ BUDGET VARCHAR(24) NOT NULL,
+ DOC_ID VARCHAR(100) NOT NULL,
+ NODE_ID VARCHAR(50) NOT NULL,
+ TYP_FLUX VARCHAR(2),
+ MODE_REGLEMENT VARCHAR(2),
+ DATE_RECOUVREMENT DATE,
+ ID_ENCAISSEMENT INTEGER,
+ MNT_RECOUVREMENT DECIMAL(14,2),
+ INDEX IX_${base-name}_BC (COLLECTIVITE,BUDGET,DOC_ID),
+ INDEX IX_${base-name}_DC (DOC_ID),
+ INITIAL_DOC_NAME VARCHAR(100),
+ INDEX ${base-name}_IDN (INITIAL_DOC_NAME),
+ ARCHIVE_NAME VARCHAR(100),
+ INDEX ${base-name}_AN (ARCHIVE_NAME)
+ ) ENGINE MYISAM
+ </table>
+ <table type="index" id="recette_all_pj" base-name="PES_ALLER_RA_ALL_PJ" based-on="key7" version="1">
+ CREATE TABLE IF NOT EXISTS ${base-name} (
+ COLLECTIVITE VARCHAR(15) NOT NULL,
+ BUDGET VARCHAR(24) NOT NULL,
+ DOC_ID VARCHAR(100) NOT NULL,
+ NODE_ID VARCHAR(50),
+ SUPPORT_PJ VARCHAR(2),
+ ID_UNIQUE_PJ VARCHAR(50),
+ NOM_PJ VARCHAR(100),
+ INDEX IX_${base-name}_BC (COLLECTIVITE,BUDGET,DOC_ID),
+ INDEX IX_${base-name}_DC (DOC_ID),
+ INITIAL_DOC_NAME VARCHAR(100),
+ INDEX ${base-name}_IDN (INITIAL_DOC_NAME),
+ ARCHIVE_NAME VARCHAR(100),
+ INDEX ${base-name}_AN (ARCHIVE_NAME)
+ ) ENGINE MYISAM
+ </table>
+
+
+ <!-- CRITERIA BORDEREAU BLOC BORDEREAU -->
+ <criteria id="bordereau_exercice" type="1" sql-index-id="SQI_RA_1">
+ <where-clause>${table}.${column}=##VALEUR:bordereau_exercice##</where-clause>
+ </criteria>
+ <criteria id="bordereau_id" type="1" sql-index-id="SQI_RA_2">
+ <where-clause>${table}.${column}##OPERATEUR:bordereau_id####VALEUR:bordereau_id##</where-clause>
+ </criteria>
+ <criteria id="bordereau_date_emission" type="1" sql-index-id="SQI_RA_3">
+ <where-clause>fn:date-compare(${table}.${column},bordereau_date_emission)</where-clause>
+ </criteria>
+ <criteria id="bordereau_type" type="1" sql-index-id="SQI_RA_4">
+ <where-clause>${table}.${column}='##VALEUR:bordereau_type##'</where-clause>
+ </criteria>
+ <criteria id="bordereau_nb_pieces" type="1" sql-index-id="SQI_RA_5">
+ <where-clause>${table}.${column}##OPERATEUR:bordereau_nb_pieces####VALEUR:bordereau_nb_pieces##</where-clause>
+ </criteria>
+ <criteria id="bordereau_mt_cumul_annuel" type="1" sql-index-id="SQI_RA_6">
+ <where-clause>${table}.${column}##OPERATEUR:bordereau_mt_cumul_annuel####VALEUR:bordereau_mt_cumul_annuel##</where-clause>
+ </criteria>
+ <criteria id="bordereau_mt_bord_ht" type="1" sql-index-id="SQI_RA_7">
+ <where-clause>${table}.${column}##OPERATEUR:bordereau_mt_bord_ht####VALEUR:bordereau_mt_bord_ht##</where-clause>
+ </criteria>
+ <criteria id="bordereau_mt_bord_tva" type="1" sql-index-id="SQI_RA_8">
+ <where-clause>${table}.${column}##OPERATEUR:bordereau_mt_bord_tva####VALEUR:bordereau_mt_bord_tva##</where-clause>
+ </criteria>
+ <criteria id="bordereau_mt_bord_ttc" type="1" sql-index-id="SQI_RA_M4">
+ <where-clause>${table}.${column}##OPERATEUR:bordereau_mt_bord_ttc####VALEUR:bordereau_mt_bord_ttc##</where-clause>
+ </criteria>
+ <!-- CRITERIA PIECE -->
+ <criteria id="piece_code_service" sql-index-id="SQI_RA_9" type="1">
+ <where-clause>fn:string-compare(${table}.${column},piece_code_service)</where-clause>
+ </criteria>
+ <criteria id="piece_affect" sql-index-id="SQI_RA_10" type="1">
+ <where-clause>fn:string-compare(${table}.${column},piece_affect)</where-clause>
+ </criteria>
+ <criteria id="piece_code_prod" type="1" sql-index-id="SQI_RA_11">
+ <where-clause>fn:string-compare(${table}.${column},piece_code_prod)</where-clause>
+ </criteria>
+ <criteria id="piece_id_pce" type="1" sql-index-id="SQI_RA_12">
+ <where-clause>${table}.${column}=##VALEUR:piece_id_pce##</where-clause>
+ </criteria>
+ <criteria id="piece_type_pce" type="1" sql-index-id="SQI_RA_13">
+ <where-clause>${table}.${column}='##VALEUR:piece_type_pce##'</where-clause>
+ </criteria>
+ <criteria id="piece_nat_pce" type="1" sql-index-id="SQI_RA_14">
+ <where-clause>${table}.${column}='##VALEUR:piece_nat_pce##'</where-clause>
+ </criteria>
+ <criteria id="piece_id_rol" type="1" sql-index-id="SQI_RA_15">
+ <where-clause>${table}.${column}##OPERATEUR:piece_id_rol####VALEUR:piece_id_rol##</where-clause>
+ </criteria>
+ <criteria id="piece_dte_asp" type="1" sql-index-id="SQI_RA_16">
+ <where-clause>fn:date-compare(${table}.${column},piece_dte_asp)</where-clause>
+ </criteria>
+ <criteria id="piece_obj_pce" type="1" sql-index-id="SQI_RA_17">
+ <where-clause>fn:string-compare(${table}.${column},piece_obj_pce)</where-clause>
+ </criteria>
+ <criteria id="piece_deb_fact" type="1" sql-index-id="SQI_RA_18">
+ <where-clause>fn:date-compare(${table}.${column},piece_deb_fact)</where-clause>
+ </criteria>
+ <criteria id="piece_fin_fact" type="1" sql-index-id="SQI_RA_19">
+ <where-clause>fn:date-compare(${table}.${column},piece_fin_fact)</where-clause>
+ </criteria>
+ <criteria id="piece_montant_ttc" type="1" sql-index-id="SQI_RA_98">
+ <where-clause>${table}.${column}##OPERATEUR:piece_montant_ttc####VALEUR:piece_montant_ttc##</where-clause>
+ </criteria>
+ <criteria id="piece_montant_ht" type="1" sql-index-id="SQI_RA_M5">
+ <where-clause>${table}.${column}##OPERATEUR:piece_montant_ht####VALEUR:piece_montant_ht##</where-clause>
+ </criteria>
+ <criteria id="piece_avec_pj" type="1" sql-index-id="SQI_RA_M7">
+ <where-clause>${table}.${column}='##VALEUR:piece_avec_pj##'</where-clause>
+ </criteria>
+ <!-- CRITERIA PJREF PIECE -->
+ <criteria id="piece_pjref_support" sql-index-id="SQI_RA_20" type="1">
+ <where-clause>fn:string-compare(${table}.${column},piece_pjref_support)</where-clause>
+ </criteria>
+ <criteria id="piece_pjref_id_unique" sql-index-id="SQI_RA_21" type="1">
+ <where-clause>fn:string-compare(${table}.${column},piece_pjref_id_unique)</where-clause>
+ </criteria>
+ <criteria id="piece_pjref_nom_pj" sql-index-id="SQI_RA_22" type="1">
+ <where-clause>fn:string-compare(${table}.${column},piece_pjref_nom_pj)</where-clause>
+ </criteria>
+ <!-- CRITERIA LIGNE PIECE -->
+ <criteria id="ligne_piece_id" sql-index-id="SQI_RA_23" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_id)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_obj" sql-index-id="SQI_RA_24" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_obj)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_code_prod_loc" sql-index-id="SQI_RA_25" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_code_prod_loc)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_fin_geo" sql-index-id="SQI_RA_26" type="1">
+ <where-clause>${table}.${column}##OPERATEUR:ligne_piece_fin_geo####VALEUR:ligne_piece_fin_geo##</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_code_et_geo" sql-index-id="SQI_RA_27" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_code_et_geo)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_nature" sql-index-id="SQI_RA_28" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_nature)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_fonction" sql-index-id="SQI_RA_29" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_fonction)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_operation" sql-index-id="SQI_RA_30" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_operation)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_cpt_ana" sql-index-id="SQI_RA_31" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_cpt_ana)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_facture" sql-index-id="SQI_RA_32" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_facture)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_tx_tva" sql-index-id="SQI_RA_33" type="1">
+ <where-clause>${table}.${column}##OPERATEUR:ligne_piece_tx_tva####VALEUR:ligne_piece_tx_tva##</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_majo" sql-index-id="SQI_RA_34" type="1">
+ <where-clause>${table}.${column}='##VALEUR:ligne_piece_majo##'</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_dte_majo" sql-index-id="SQI_RA_35" type="1">
+ <where-clause>fn:date-compare(${table}.${column},ligne_piece_dte_majo)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_tx_majo" sql-index-id="SQI_RA_36" type="1">
+ <where-clause>${table}.${column}##OPERATEUR:ligne_piece_tx_majo####VALEUR:ligne_piece_tx_majo##</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_cpte_tiers" sql-index-id="SQI_RA_37" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_cpte_tiers)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_tva_intracom" sql-index-id="SQI_RA_38" type="1">
+ <where-clause>${table}.${column}='##VALEUR:ligne_piece_tva_intracom'</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_cpte_tva" sql-index-id="SQI_RA_39" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_cpte_tva)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_mt_ht" sql-index-id="SQI_RA_40" type="1">
+ <where-clause>${table}.${column}##OPERATEUR:ligne_piece_mt_ht####VALEUR:ligne_piece_mt_ht##</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_mt_tva" sql-index-id="SQI_RA_41" type="1">
+ <where-clause>${table}.${column}##OPERATEUR:ligne_piece_mt_tva####VALEUR:ligne_piece_mt_tva##</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_mt_non_majo" sql-index-id="SQI_RA_42" type="1">
+ <where-clause>${table}.${column}##OPERATEUR:ligne_piece_mt_non_majo####VALEUR:ligne_piece_mt_non_majo##</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_nat_prel" sql-index-id="SQI_RA_43" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_nat_prel)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_per_prel" sql-index-id="SQI_RA_44" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_per_prel)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_dte_prel" sql-index-id="SQI_RA_45" type="1">
+ <where-clause>fn:date-compare(${table}.${column},ligne_piece_dte_prel)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_mnt_prel" sql-index-id="SQI_RA_46" type="1">
+ <where-clause>${table}.${column}##OPERATEUR:ligne_piece_mt_prel####VALEUR:ligne_piece_mt_prel##</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_cod_ass_deb" sql-index-id="SQI_RA_47" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_cod_ass_deb)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_cod_ayant_droit" sql-index-id="SQI_RA_48" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_cod_ayant_droit)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_nat_pce_orig" sql-index-id="SQI_RA_49" type="1">
+ <where-clause>${table}.${column}=##VALEUR:ligne_piece_nat_pce_orig##</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_exer_rat" sql-index-id="SQI_RA_50" type="1">
+ <where-clause>${table}.${column}=##VALEUR:ligne_piece_exer_rat##</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_id_pce_orig" sql-index-id="SQI_RA_51" type="1">
+ <where-clause>${table}.${column}##OPERATEUR:ligne_piece_id_pce_orig####VALEUR:ligne_piece_id_pce_orig##</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_id_ligne_orig" sql-index-id="SQI_RA_52" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_id_ligne_orig)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_id_encaissement" sql-index-id="SQI_RA_53" type="1">
+ <where-clause>${table}.${column}##OPERATEUR:ligne_piece_id_encaissement####VALEUR:ligne_piece_id_encaissement##</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_id_conv" sql-index-id="SQI_RA_54" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_id_conv)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_id_marche" sql-index-id="SQI_RA_55" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_id_marche)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_id_caution" sql-index-id="SQI_RA_56" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_id_caution)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_id_emprunt_ordo" sql-index-id="SQI_RA_57" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_id_emprunt_ordo)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_id_actif" sql-index-id="SQI_RA_58" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_id_actif)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_id_regie" sql-index-id="SQI_RA_59" type="1">
+ <where-clause>${table}.${column}=##VALEUR:ligne_piece_id_regie##</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_mt_ttc" sql-index-id="SQI_RA_M6" type="1">
+ <where-clause>${table}.${column}##OPERATEUR:ligne_piece_mt_ttc####VALEUR:ligne_piece_mt_ttc##</where-clause>
+ </criteria>
+ <criteria id="justifie_par" sql-index-id="REC_ALLPJ_ID_UNIQUE">
+ <where-clause>fn:string-compare(${table}.${column},IdUnique)</where-clause>
+ </criteria>
+
+
+ <!-- CRITERIA PJREF LIGNE PIECE -->
+ <criteria id="ligne_piece_pjref_support" sql-index-id="SQI_RA_60" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_pjref_support)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_pjref_id_unique" sql-index-id="SQI_RA_61" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_pjref_id_unique)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_pjref_nom_pj" sql-index-id="SQI_RA_62" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_pjref_nom_pj)</where-clause>
+ </criteria>
+ <!-- CRITERIA TIERS -->
+ <criteria id="tiers_id_tiers" sql-index-id="SQI_RA_63" type="1">
+ <where-clause>fn:string-compare(${table}.${column},tiers_id_tiers)</where-clause>
+ </criteria>
+ <criteria id="tiers_dte_malade" sql-index-id="SQI_RA_64" type="1">
+ <where-clause>fn:date-compare(${table}.${column},tiers_dte_malade)</where-clause>
+ </criteria>
+ <criteria id="tiers_nat_id_tiers" sql-index-id="SQI_RA_65" type="1">
+ <where-clause>fn:string-compare(${table}.${column},tiers_nat_id_tiers)</where-clause>
+ </criteria>
+ <criteria id="tiers_dte_id_tiers" sql-index-id="SQI_RA_66" type="1">
+ <where-clause>fn:date-compare(${table}.${column},tiers_dte_id_tiers)</where-clause>
+ </criteria>
+ <criteria id="tiers_ref_tiers" sql-index-id="SQI_RA_67" type="1">
+ <where-clause>fn:string-compare(${table}.${column},tiers_ref_tiers)</where-clause>
+ </criteria>
+ <criteria id="tiers_nat_jur" sql-index-id="SQI_RA_69" type="1">
+ <where-clause>fn:string-compare(${table}.${column},tiers_nat_jur)</where-clause>
+ </criteria>
+ <criteria id="tiers_typ_tiers" sql-index-id="SQI_RA_70" type="1">
+ <where-clause>fn:string-compare(${table}.${column},tiers_typ_tiers)</where-clause>
+ </criteria>
+ <criteria id="tiers_civilite" sql-index-id="SQI_RA_71" type="1">
+ <where-clause>fn:string-compare(${table}.${column},tiers_civilite)</where-clause>
+ </criteria>
+ <criteria id="tiers_nom" sql-index-id="SQI_RA_72" type="1">
+ <where-clause>fn:string-compare(${table}.${column},tiers_nom)</where-clause>
+ </criteria>
+ <criteria id="tiers_compl_nom" sql-index-id="SQI_RA_73" type="1">
+ <where-clause>fn:string-compare(${table}.${column},tiers_compl_nom)</where-clause>
+ </criteria>
+ <criteria id="tiers_prenom" sql-index-id="SQI_RA_74" type="1">
+ <where-clause>fn:string-compare(${table}.${column},tiers_prenom)</where-clause>
+ </criteria>
+ <criteria id="tiers_typ_adr" sql-index-id="SQI_RA_75" type="1">
+ <where-clause>fn:string-compare(${table}.${column},tiers_typ_adr)</where-clause>
+ </criteria>
+ <criteria id="tiers_adr1" sql-index-id="SQI_RA_76" type="1">
+ <where-clause>fn:string-compare(${table}.${column},tiers_adr1)</where-clause>
+ </criteria>
+ <criteria id="tiers_adr2" sql-index-id="SQI_RA_77" type="1">
+ <where-clause>fn:string-compare(${table}.${column},tiers_adr2)</where-clause>
+ </criteria>
+ <criteria id="tiers_adr3" sql-index-id="SQI_RA_78" type="1">
+ <where-clause>fn:string-compare(${table}.${column},tiers_adr3)</where-clause>
+ </criteria>
+ <criteria id="tiers_cp" sql-index-id="SQI_RA_79" type="1">
+ <where-clause>fn:string-compare(${table}.${column},tiers_cp)</where-clause>
+ </criteria>
+ <criteria id="tiers_ville" sql-index-id="SQI_RA_80" type="1">
+ <where-clause>fn:string-compare(${table}.${column},tiers_ville)</where-clause>
+ </criteria>
+ <criteria id="tiers_cod_res" sql-index-id="SQI_RA_81" type="1">
+ <where-clause>${table}.${column}='##VALEUR:tiers_cod_res'</where-clause>
+ </criteria>
+ <criteria id="tiers_cod_pays" sql-index-id="SQI_RA_82" type="1">
+ <where-clause>fn:string-compare(${table}.${column},tiers_cod_pays)</where-clause>
+ </criteria>
+ <criteria id="tiers_dte_adr" sql-index-id="SQI_RA_83" type="1">
+ <where-clause>fn:date-compare(${table}.${column},tiers_dte_adr)</where-clause>
+ </criteria>
+ <criteria id="tiers_rib" sql-index-id="SQI_RA_84" type="1">
+ <where-clause>fn:string-compare(${table}.${column},tiers_rib)</where-clause>
+ </criteria>
+ <!-- CRITERIA RECOUVREMENT -->
+ <criteria id="recouvrement_typ_flux" sql-index-id="SQI_RA_85" type="1">
+ <where-clause>fn:string-compare(${table}.${column},recouvrement_typ_flux)</where-clause>
+ </criteria>
+ <criteria id="recouvrement_mod_regl" sql-index-id="SQI_RA_86" type="1">
+ <where-clause>fn:string-compare(${table}.${column},recouvrement_mod_regl)</where-clause>
+ </criteria>
+ <criteria id="recouvrement_dte_reco" sql-index-id="SQI_RA_87" type="1">
+ <where-clause>fn:date-compare(${table}.${column},recouvrement_dte_reco)</where-clause>
+ </criteria>
+ <criteria id="recouvrement_id_encaissement" sql-index-id="SQI_RA_88" type="1">
+ <where-clause>${table}.${column}##OPERATEUR:recouvrement_id_encaissement####VALEUR:recouvrement_id_encaissement##</where-clause>
+ </criteria>
+ <criteria id="recouvrement_mt_reco" sql-index-id="SQI_RA_89" type="1">
+ <where-clause>${table}.${column}##OPERATEUR:recouvrement_mt_reco####VALEUR:recouvrement_mt_reco##</where-clause>
+ </criteria>
+
+ <!-- INDEX BORDEREAU BLOC BORDEREAU -->
+ <sql-index id="SQI_RA_M0" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/@added:primary-key" datatype="string" column="PRIMARY_KEY" table="T_RA_1"/>
+ <!--sql-index id="SQI_RA_M1" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/@added:primary-key" datatype="string" column="PRIMARY_KEY" table="T_RA_1"/-->
+ <sql-index id="SQI_RA_1" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:BlocBordereau/n:Exer/@V" datatype="integer" table="T_RA_1" column="EXERCICE"/>
+ <!--sql-index id="SQI_RA_1B" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:BlocBordereau/n:Exer/@V" datatype="integer" table="T_RA_1" column="EXERCICE"/-->
+ <sql-index id="SQI_RA_2" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:BlocBordereau/n:IdBord/@V" datatype="integer" table="T_RA_1" column="ID_BORDEREAU"/>
+ <sql-index id="SQI_RA_3" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:BlocBordereau/n:DteBordEm/@V" datatype="date" table="T_RA_1" column="DATE_EMISSION_BORDEREAU" format="yyyy-MM-dd"/>
+ <sql-index id="SQI_RA_4" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:BlocBordereau/n:TypBord/@V" datatype="string" table="T_RA_1" column="TYPE_BORDEREAU"/>
+ <!--sql-index id="SQI_RA_4B" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:BlocBordereau/n:TypBord/@V" datatype="string" table="T_RA_1" column="TYPE_BORDEREAU"/-->
+ <sql-index id="SQI_RA_5" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:BlocBordereau/n:NbrPce/@V" datatype="integer" table="T_RA_1" column="NB_PIECES"/>
+ <sql-index id="SQI_RA_6" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:BlocBordereau/n:MtCumulAnnuel/@V" datatype="decimal" table="T_RA_1" column="MT_CUMUL_ANNUEL"/>
+ <sql-index id="SQI_RA_7" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:BlocBordereau/n:MtBordHt/@V" datatype="decimal" table="T_RA_1" column="MT_BOREREAU_HT"/>
+ <sql-index id="SQI_RA_8" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:BlocBordereau/n:MtBordTVA/@V" datatype="decimal" table="T_RA_1" column="MT_BORDEREAU_TVA"/>
+ <sql-index id="SQI_RA_M4" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/@added:montantTTC" datatype="decimal" table="T_RA_1" column="MONTANT_TTC"/>
+
+ <!-- INDEX PIECE -->
+ <sql-index id="SQI_RA_9" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:BlocPiece/n:CodServ/@V" datatype="string" table="T_RA_2" column="CODE_SERVICE" />
+ <sql-index id="SQI_RA_10" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:BlocPiece/n:Affect/@V" datatype="string" table="T_RA_2" column="AFFECT" />
+ <sql-index id="SQI_RA_11" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:BlocPiece/n:CodProd/@V" datatype="string" table="T_RA_2" column="CODE_PROD" />
+ <sql-index id="SQI_RA_12" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:BlocPiece/n:IdPce/@V" datatype="integer" table="T_RA_2" column="ID_PIECE" />
+ <sql-index id="SQI_RA_13" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:BlocPiece/n:TypPce/@V" datatype="string" table="T_RA_2" column="TYPE_PIECE" />
+ <sql-index id="SQI_RA_14" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:BlocPiece/n:NatPce/@V" datatype="string" table="T_RA_2" column="NATURE_PIECE" />
+ <sql-index id="SQI_RA_15" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:BlocPiece/n:IdRol/@V" datatype="integer" table="T_RA_2" column="ID_ROL" />
+ <sql-index id="SQI_RA_16" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:BlocPiece/n:DteAsp/@V" datatype="date" table="T_RA_2" column="DATE_ASP" format="yyyy-MM-dd"/>
+ <sql-index id="SQI_RA_17" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:BlocPiece/n:ObjPce/@V" datatype="string" table="T_RA_2" column="OBJ" />
+ <sql-index id="SQI_RA_18" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:BlocPiece/n:DebFact/@V" datatype="date" table="T_RA_2" column="DEB_FACT" format="yyyy-MM-dd" />
+ <sql-index id="SQI_RA_19" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:BlocPiece/n:FinFact/@V" datatype="date" table="T_RA_2" column="FIN_FACT" format="yyyy-MM-dd" />
+ <sql-index id="SQI_RA_97" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/@added:nbLigne" datatype="integer" table="T_RA_2" column="NB_LIGNE"/>
+ <sql-index id="SQI_RA_98" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/@added:montantTTC" datatype="decimal" table="T_RA_2" column="MONTANT_TTC"/>
+ <sql-index id="SQI_RA_M5" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/@added:montantHT" datatype="decimal" table="T_RA_2" column="MONTANT_HT"/>
+ <sql-index id="SQI_RA_M7" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/@added:avecPJ" datatype="string" table="T_RA_2" column="AVEC_PJ"/>
+ <!-- INDEX PJREF PIECE -->
+ <sql-index id="SQI_RA_20" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:BlocPiece/n:PJRef/n:Support/@V" column="SUPPORT_PJ" datatype="string" table="T_RA_3"/>
+ <sql-index id="SQI_RA_21" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:BlocPiece/n:PJRef/n:IdUnique/@V" column="ID_UNIQUE_PJ" datatype="string" table="T_RA_3"/>
+ <sql-index id="SQI_RA_22" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:BlocPiece/n:PJRef/n:NomPJ/@V" column="NOM_PJ" datatype="string" table="T_RA_3"/>
+ <!-- INDEX LIGNE PIECE -->
+ <sql-index id="SQI_RA_23" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePiece/n:IdLigne/@V" datatype="string" column="ID_LIGNE" table="T_RA_4"/>
+ <sql-index id="SQI_RA_24" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePiece/n:ObjLignePce/@V" datatype="string" column="OBJET" table="T_RA_4"/>
+ <sql-index id="SQI_RA_25" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePiece/n:CodProdLoc/@V" datatype="string" column="CODE_PROD" table="T_RA_4"/>
+ <sql-index id="SQI_RA_26" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePiece/n:FinGeo/@V" datatype="integer" column="FIN_GEO" table="T_RA_4"/>
+ <sql-index id="SQI_RA_27" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePiece/n:CodEtGeo/@V" datatype="string" column="COD_ET_GEO" table="T_RA_4"/>
+ <sql-index id="SQI_RA_28" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePiece/n:Nature/@V" datatype="string" column="NATURE" table="T_RA_4"/>
+ <sql-index id="SQI_RA_29" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePiece/n:Fonction/@V" datatype="string" column="FONCTION" table="T_RA_4"/>
+ <sql-index id="SQI_RA_30" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePiece/n:Operation/@V" datatype="string" column="OPERATION" table="T_RA_4"/>
+ <sql-index id="SQI_RA_31" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePiece/n:CptAna/@V" datatype="string" column="COMPTE_ANA" table="T_RA_4"/>
+ <sql-index id="SQI_RA_32" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePiece/n:Facture/@V" datatype="string" column="FACTURE" table="T_RA_4"/>
+ <sql-index id="SQI_RA_33" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePiece/n:TxTva/@V" datatype="decimal" column="TAUX_TVA" table="T_RA_4"/>
+ <sql-index id="SQI_RA_34" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePiece/n:Majo/@V" datatype="string" column="MAJO" table="T_RA_4"/>
+ <sql-index id="SQI_RA_35" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePiece/n:DteMajo/@V" datatype="date" column="DATE_MAJO" table="T_RA_4" format="yyyy-MM-dd"/>
+ <sql-index id="SQI_RA_36" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePiece/n:TxMajo/@V" datatype="decimal" column="TAUX_MAJO" table="T_RA_4"/>
+ <sql-index id="SQI_RA_37" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePiece/n:CpteTiers/@V" datatype="string" column="COMPTE_TIERS" table="T_RA_4"/>
+ <sql-index id="SQI_RA_38" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePiece/n:TvaIntraCom/@V" datatype="string" column="TVA_INTRA_COM" table="T_RA_4"/>
+ <sql-index id="SQI_RA_39" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePiece/n:CpteTVA/@V" datatype="string" column="COMPTE_TVA" table="T_RA_4"/>
+ <sql-index id="SQI_RA_40" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePiece/n:MtHT/@V" datatype="decimal" column="MT_HT" table="T_RA_4"/>
+ <sql-index id="SQI_RA_41" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePiece/n:MtTVA/@V" datatype="decimal" column="MT_TVA" table="T_RA_4"/>
+ <sql-index id="SQI_RA_42" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePiece/n:MtNonMajo/@V" datatype="decimal" column="MT_NON_MAJO" table="T_RA_4"/>
+ <sql-index id="SQI_RA_43" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoPrelevement/n:NatPrel/@V" datatype="string" column="NAT_PREL" table="T_RA_4"/>
+ <sql-index id="SQI_RA_44" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoPrelevement/n:PerPrel/@V" datatype="string" column="PER_PREL" table="T_RA_4"/>
+ <sql-index id="SQI_RA_45" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoPrelevement/n:DtePrel/@V" datatype="date" column="DATE_PREL" table="T_RA_4" format="yyyy-MM-dd"/>
+ <sql-index id="SQI_RA_46" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoPrelevement/n:MtPrel/@V" datatype="decimal" column="MNT_PREL" table="T_RA_4"/>
+ <sql-index id="SQI_RA_47" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoAssure/n:CodAssDeb/@V" datatype="string" column="COD_ASS_DEB" table="T_RA_4"/>
+ <sql-index id="SQI_RA_48" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoAssure/n:CodAyantDroit/@V" datatype="string" column="COD_AYANT_DROIT" table="T_RA_4"/>
+ <sql-index id="SQI_RA_49" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:RattachPiece/n:NatPceOrig/@V" datatype="string" column="NATURE_PIECE_ORIGINE" table="T_RA_4"/>
+ <sql-index id="SQI_RA_50" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:RattachPiece/n:ExerRat/@V" datatype="string" column="EXERCICE_RAT" table="T_RA_4"/>
+ <sql-index id="SQI_RA_51" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:RattachPiece/n:IdPceOrig/@V" datatype="integer" column="ID_PIECE_ORIGINE" table="T_RA_4"/>
+ <sql-index id="SQI_RA_52" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:RattachPiece/n:IdLigneOrig/@V" datatype="string" column="ID_LIGNE_ORIGINE" table="T_RA_4"/>
+ <sql-index id="SQI_RA_53" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:LiensIdent/n:IdEncaissement/@V" datatype="string" column="ID_ENCAISSEMENT" table="T_RA_4"/>
+ <sql-index id="SQI_RA_54" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:LiensIdent/n:IdConv/@V" datatype="string" column="ID_CONV" table="T_RA_4"/>
+ <sql-index id="SQI_RA_55" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:LiensIdent/n:IdMarche/@V" datatype="string" column="ID_MARCHE" table="T_RA_4"/>
+ <sql-index id="SQI_RA_56" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:LiensIdent/n:IdCaution/@V" datatype="string" column="ID_CAUTION" table="T_RA_4"/>
+ <sql-index id="SQI_RA_57" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:LiensIdent/n:IdEmpruntOrdo/@V" datatype="string" column="ID_EMPRUNT_ORDO" table="T_RA_4"/>
+ <sql-index id="SQI_RA_58" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:LiensIdent/n:IdActif/@V" datatype="string" column="ID_ACTIF" table="T_RA_4"/>
+ <sql-index id="SQI_RA_59" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:LiensIdent/n:IdRegie/@V" datatype="string" column="ID_REGIE" table="T_RA_4"/>
+ <sql-index id="SQI_RA_M6" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/@added:montantTTC" datatype="decimal" column="MONTANT_TTC" table="T_RA_4"/>
+ <!-- INDEX PJREF LIGNE PIECE -->
+ <sql-index id="SQI_RA_60" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePiece/n:PJRef/n:Support/@V" column="SUPPORT_PJ" datatype="string" table="T_RA_5"/>
+ <sql-index id="SQI_RA_61" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePiece/n:PJRef/n:IdUnique" column="ID_UNIQUE_PJ" datatype="string" table="T_RA_5"/>
+ <sql-index id="SQI_RA_62" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePiece/n:PJRef/n:NomPJ" column="NOM_PJ" datatype="string" table="T_RA_5"/>
+ <!-- INDEX TIERS -->
+ <sql-index id="SQI_RA_63" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:InfoTiers/n:IdTiers/@V" datatype="string" column="ID_TIERS" table="T_RA_6"/>
+ <sql-index id="SQI_RA_64" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:InfoTiers/n:DteMalade/@V" datatype="date" column="DATE_MALADE" table="T_RA_6" format="yyyy-MM-dd"/>
+ <sql-index id="SQI_RA_65" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:InfoTiers/n:NatIdTiers/@V" datatype="string" column="NAT_ID_TIERS" table="T_RA_6"/>
+ <sql-index id="SQI_RA_66" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:InfoTiers/n:DteIdTiers/@V" datatype="date" column="DATE_ID_TIERS" table="T_RA_6" format="yyyy-MM-dd"/>
+ <sql-index id="SQI_RA_67" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:InfoTiers/n:RefTiers/@V" datatype="string" column="REF_TIERS" table="T_RA_6"/>
+ <sql-index id="SQI_RA_68" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:InfoTiers/n:CatTiers/@V" datatype="string" column="CAT_TIERS" table="T_RA_6"/>
+ <sql-index id="SQI_RA_69" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:InfoTiers/n:NatJur/@V" datatype="string" column="NAT_JUR" table="T_RA_6"/>
+ <sql-index id="SQI_RA_70" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:InfoTiers/n:TypTiers/@V" datatype="string" column="TYP_TIERS" table="T_RA_6"/>
+ <sql-index id="SQI_RA_71" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:InfoTiers/n:Civilite/@V" datatype="string" column="CIVILITE" table="T_RA_6"/>
+ <sql-index id="SQI_RA_72" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:InfoTiers/n:Nom/@V" datatype="string" column="NOM" table="T_RA_6"/>
+ <sql-index id="SQI_RA_73" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:InfoTiers/n:ComplNom/@V" datatype="string" column="COMPLEMENT_NOM" table="T_RA_6"/>
+ <sql-index id="SQI_RA_74" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:InfoTiers/n:Prenom/@V" datatype="string" column="PRENOM" table="T_RA_6"/>
+ <sql-index id="SQI_RA_75" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:Adresse/n:TypAdr/@V" datatype="string" column="TYP_ADR" table="T_RA_6"/>
+ <sql-index id="SQI_RA_76" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:Adresse/n:Adr1/@V" datatype="string" column="ADR1" table="T_RA_6"/>
+ <sql-index id="SQI_RA_77" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:Adresse/n:Adr2/@V" datatype="string" column="ADR2" table="T_RA_6"/>
+ <sql-index id="SQI_RA_78" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:Adresse/n:Adr3/@V" datatype="string" column="ADR3" table="T_RA_6"/>
+ <sql-index id="SQI_RA_79" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:Adresse/n:CP/@V" datatype="string" column="CP" table="T_RA_6"/>
+ <sql-index id="SQI_RA_80" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:Adresse/n:Ville/@V" datatype="string" column="VILLE" table="T_RA_6"/>
+ <sql-index id="SQI_RA_81" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:Adresse/n:CodRes/@V" datatype="string" column="COD_RES" table="T_RA_6"/>
+ <sql-index id="SQI_RA_82" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:Adresse/n:CodPays/@V" datatype="string" column="COD_PAYS" table="T_RA_6"/>
+ <sql-index id="SQI_RA_83" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:Adresse/n:DteAdr/@V" datatype="date" column="DATE_ADR" table="T_RA_6" format="yyyy-MM-dd"/>
+ <sql-index id="SQI_RA_84" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:CpteBancaire/@added:rib" datatype="string" column="RIB" table="T_RA_6"/>
+ <!-- INDEX RECOUVREMENT -->
+ <sql-index id="SQI_RA_85" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Recouvrement/n:TypFlux/@V" datatype="string" column="TYP_FLUX" table="T_RA_7"/>
+ <sql-index id="SQI_RA_86" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Recouvrement/n:ModRegl/@V" datatype="string" column="MODE_REGLEMENT" table="T_RA_7"/>
+ <sql-index id="SQI_RA_87" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Recouvrement/n:DteReco/@V" datatype="date" column="DATE_RECOUVREMENT" table="T_RA_7" format="yyyy-MM-dd"/>
+ <sql-index id="SQI_RA_88" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Recouvrement/n:IdEncaissement/@V" datatype="integer" column="ID_ENCAISSEMENT" table="T_RA_7"/>
+ <sql-index id="SQI_RA_89" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Recouvrement/n:MtReco/@V" datatype="decimal" column="MNT_RECOUVREMENT" table="T_RA_7"/>
+
+ <!--sql-index id="SQI_RA_90" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/@added:generated-id" column="NODE_ID" datatype="string" table="T_RA_1"/n:-->
+ <sql-index id="SQI_RA_91" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/@added:generated-id" column="NODE_ID" datatype="string" table="T_RA_2"/>
+ <sql-index id="SQI_RA_92" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:BlocPiece/n:PJRef/@added:generated-id" column="NODE_ID" datatype="string" table="T_RA_3"/>
+ <sql-index id="SQI_RA_93" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/@added:generated-id" column="NODE_ID" datatype="string" table="T_RA_4"/>
+ <sql-index id="SQI_RA_94" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePiece/n:PJRef/@added:generated-id" column="NODE_ID" datatype="string" table="T_RA_5"/>
+ <sql-index id="SQI_RA_95" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/@added:generated-id" column="NODE_ID" datatype="string" table="T_RA_6"/>
+ <sql-index id="SQI_RA_96" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Recouvrement/@added:generated-id" column="NODE_ID" datatype="string" table="T_RA_7"/>
+ <!--sql-index id="SQI_RA_M2" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:BlocBordereau/n:IdBord/@V" datatype="integer" table="T_RA_1" column="ID_BORDEREAU"/-->
+ <!--sql-index id="SQI_RA_M3" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:BlocPiece/n:IdPce/@V" column="ID_PIECE" datatype="string" table="T_RA_2"/-->
+ <!-- ALL PJ -->
+ <sql-index id="REC_ALLPJ_NODE" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:added:AllPJRef/@added:generated-id" datatype="string" column="NODE_ID" table="recette_all_pj"/>
+ <sql-index id="REC_ALLPJ_SUPPORT" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:added:AllPJRef/n:Support/@V" datatype="string" column="SUPPORT_PJ" table="recette_all_pj"/>
+ <sql-index id="REC_ALLPJ_ID_UNIQUE" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:added:AllPJRef/n:IdUnique/@V" datatype="string" column="ID_UNIQUE_PJ" table="recette_all_pj"/>
+ <sql-index id="REC_ALLPJ_NOM_PJ" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:added:AllPJRef/n:NomPJ/@V" datatype="string" column="NOM_PJ" table="recette_all_pj"/>
+
+ <element id="PieceRecette">
+ <sql-count>COUNT(DISTINCT(CONCAT(PES_ALLER_RA_PIECE_IX.DOC_ID , PES_ALLER_RA_PIECE_IX.NODE_ID , PES_ALLER_RA_PIECE_IX.ID_PIECE)))</sql-count>
+ <special-cond>PES_ALLER_RA_PIECE_IX.NODE_ID IS NOT NULL</special-cond>
+ </element>
+ <element id="LigneDePieceRecette">
+ <sql-count>COUNT(DISTINCT(CONCAT(PES_ALLER_RA_BORDEREAU_IX.DOC_ID,PES_ALLER_RA_LIGNE_PIECE_IX.NODE_ID)))</sql-count>
+ <special-cond>PES_ALLER_RA_LIGNE_PIECE_IX.NODE_ID IS NOT NULL</special-cond>
+ </element>
+ <element id="tiers">
+ <sql-count>COUNT(DISTINCT(CONCAT(PES_ALLER_RA_BORDEREAU_IX.DOC_ID,PES_ALLER_RA_LIGNE_PIECE_TIERS.NODE_ID)))</sql-count>
+ <special-cond>PES_ALLER_RA_LIGNE_PIECE_TIERS.NODE_ID IS NOT NULL</special-cond>
+ </element>
+ <element id="recouvrement">
+ <sql-count>COUNT(DISTINCT(CONCAT(PES_ALLER_RA_BORDEREAU_IX.DOC_ID,PES_ALLER_RA_LIGNE_PIECE_RECOUVREMENT.NODE_ID)))</sql-count>
+ <special-cond>PES_ALLER_RA_LIGNE_PIECE_RECOUVREMENT.NODE_ID IS NOT NULL</special-cond>
+ </element>
+ </etat>
+
+ <etat id="PES_PJ" import-xslt-file="PES_V2/PES-PJ-import-mysql.xsl" >
+ <key1>
+ <path>/n:PES_Aller/n:PES_PJ/@added:generated-id</path>
+ </key1>
+ <key2>
+ <path>/n:PES_Aller/n:PES_PJ/n:PJ/@added:generated-id</path>
+ </key2>
+ <key3>
+ <path>/n:PES_Aller/n:PES_PJ/n:PJ/n:RefCompta/@added:generated-id</path>
+ </key3>
+
+ <table type="document" base-name="PES_PJ_DOCUMENTS" version="1">
+ CREATE TABLE IF NOT EXISTS ${base-name} (
+ COLLECTIVITE VARCHAR(15) NOT NULL,
+ BUDGET VARCHAR(24) NOT NULL,
+ INITIAL_DOC_NAME VARCHAR(100) NOT NULL,
+ DOC_ID VARCHAR(100) NOT NULL,
+ DOC LONGBLOB,
+ ENCODING VARCHAR(20),
+ INDEX IX_${base-name}_BC (COLLECTIVITE,BUDGET,DOC_ID),
+ ARCHIVE_NAME VARCHAR(100), INDEX ${base-name}_AN (ARCHIVE_NAME)
+ ) ENGINE MYISAM
+ </table>
+ <table type="index" id="PES_PJ_PES_ALLER_PES_PJ_IX" base-name="PES_PJ_PES_ALLER_PES_PJ_IX" version="1" main="true" based-on="key1">
+ CREATE TABLE IF NOT EXISTS ${base-name} (
+ COLLECTIVITE VARCHAR(15) NOT NULL,
+ BUDGET VARCHAR(24) NOT NULL,
+ DOC_ID VARCHAR(100) NOT NULL,
+ NODE_ID VARCHAR(50) NOT NULL,
+ IDVER INTEGER ,
+ INDEX IX_${base-name}_BC (COLLECTIVITE,BUDGET,DOC_ID),
+ INDEX IX_${base-name}_DC (DOC_ID),
+ INITIAL_DOC_NAME VARCHAR(100),
+ INDEX ${base-name}_IDN (INITIAL_DOC_NAME),
+ ARCHIVE_NAME VARCHAR(100),
+ INDEX ${base-name}_AN (ARCHIVE_NAME)
+ ) ENGINE MYISAM
+ </table>
+ <table type="index" id="PES_PJ_PJ_IX" base-name="PES_PJ_PJ_IX" version="1" main="false" based-on="key2">
+ CREATE TABLE IF NOT EXISTS ${base-name} (
+ COLLECTIVITE VARCHAR(15) NOT NULL,
+ BUDGET VARCHAR(24) NOT NULL,
+ DOC_ID VARCHAR(100) NOT NULL,
+ NODE_ID VARCHAR(50) NOT NULL,
+ TYPEPJ VARCHAR(3) ,
+ NOMPJ VARCHAR(100) ,
+ DESCRIPTION VARCHAR(250) ,
+ IDUNIQUE VARCHAR(50) ,
+ SERVEURID VARCHAR(20) ,
+ LIBTYPEPJ VARCHAR(100),
+ INDEX IX_${base-name}_BC (COLLECTIVITE,BUDGET,DOC_ID),
+ INDEX IX_${base-name}_DC (DOC_ID),
+ INITIAL_DOC_NAME VARCHAR(100),
+ INDEX ${base-name}_IDN (INITIAL_DOC_NAME),
+ ARCHIVE_NAME VARCHAR(100),
+ INDEX ${base-name}_AN (ARCHIVE_NAME)
+ ) ENGINE MYISAM
+ </table>
+ <table type="index" id="PES_PJ_PJ_REFCOMPTA_IX" base-name="PES_PJ_PJ_REFCOMPTA_IX" version="1" main="false" based-on="key3">
+ CREATE TABLE IF NOT EXISTS ${base-name} (
+ COLLECTIVITE VARCHAR(15) NOT NULL,
+ BUDGET VARCHAR(24) NOT NULL,
+ DOC_ID VARCHAR(100) NOT NULL,
+ NODE_ID VARCHAR(50) NOT NULL,
+ IDENTIFIANT VARCHAR(20) ,
+ TYPEOBJET INTEGER ,
+ EXERCICE VARCHAR(255) ,
+ DOMAINE VARCHAR(255) ,
+ IDTIERS VARCHAR(30) ,
+ CODPROD VARCHAR(2) ,
+ COMPLEMENTIDENTIFIANT VARCHAR(20) ,
+ INDEX IX_${base-name}_BC (COLLECTIVITE,BUDGET,DOC_ID),
+ INDEX IX_${base-name}_DC (DOC_ID),
+ INITIAL_DOC_NAME VARCHAR(100),
+ INDEX ${base-name}_IDN (INITIAL_DOC_NAME),
+ ARCHIVE_NAME VARCHAR(100),
+ INDEX ${base-name}_AN (ARCHIVE_NAME)
+ ) ENGINE MYISAM
+ </table>
+
+
+ <!-- CRITERIA /n:PES_Aller/n:PES_PJ -->
+ <criteria id="CRI_PES_PJ_PES_PJ_IDVER" type="1" sql-index-id="SQI_PES_PJ_PES_PJ_IDVER">
+ <where-clause>${table}.${column}##OPERATEUR:IdVer####VALEUR:IdVer##</where-clause>
+ </criteria>
+
+ <!-- CRITERIA /n:PES_Aller/n:PES_PJ/n:PJ -->
+ <criteria id="CRI_PES_PJ_PJ_TYPEPJ" type="1" sql-index-id="SQI_PES_PJ_PJ_TYPEPJ">
+ <where-clause>${table}.${column}=##VALEUR:TypePJ##</where-clause>
+ </criteria>
+ <criteria id="_CRI_PES_PJ_PJ_LIBTYPEPJ" type="1" sql-index-id="SQI_PES_PJ_PJ_LIBTYPEPJ">
+ <where-clause>${table}.$#column}=##VALEUR:LibTypePJ##</where-clause>
+ </criteria>
+ <criteria id="CRI_PES_PJ_PJ_NOMPJ" type="1" sql-index-id="SQI_PES_PJ_PJ_NOMPJ">
+ <where-clause>fn:string-compare(${table}.${column},NomPJ)</where-clause>
+ </criteria>
+ <criteria id="CRI_PES_PJ_PJ_DESCRIPTION" type="1" sql-index-id="SQI_PES_PJ_PJ_DESCRIPTION">
+ <where-clause>fn:string-compare(${table}.${column},Description)</where-clause>
+ </criteria>
+ <criteria id="CRI_PES_PJ_PJ_IDUNIQUE" type="1" sql-index-id="SQI_PES_PJ_PJ_IDUNIQUE">
+ <where-clause>fn:string-compare(${table}.${column},IdUnique)</where-clause>
+ </criteria>
+ <criteria id="CRI_PES_PJ_PJ_SERVEURID" type="1" sql-index-id="SQI_PES_PJ_PJ_SERVEURID">
+ <where-clause>fn:string-compare(${table}.${column},ServeurId)</where-clause>
+ </criteria>
+
+ <!-- CRITERIA /n:PES_Aller/n:PES_PJ/n:PJ/n:RefCompta -->
+ <criteria id="CRI_PES_PJ_PJ_REFCOMPTA_IDENTIFIANT" type="1" sql-index-id="SQI_PES_PJ_PJ_REFCOMPTA_IDENTIFIANT">
+ <where-clause>fn:string-compare(${table}.${column},Identifiant)</where-clause>
+ </criteria>
+ <criteria id="CRI_PES_PJ_PJ_REFCOMPTA_TYPEOBJET" type="1" sql-index-id="SQI_PES_PJ_PJ_REFCOMPTA_TYPEOBJET">
+ <where-clause>${table}.${column}##OPERATEUR:TypeObjet####VALEUR:TypeObjet##</where-clause>
+ </criteria>
+ <criteria id="CRI_PES_PJ_PJ_REFCOMPTA_EXERCICE" type="1" sql-index-id="SQI_PES_PJ_PJ_REFCOMPTA_EXERCICE">
+ <where-clause>fn:string-compare(${table}.${column},Exercice)</where-clause>
+ </criteria>
+ <criteria id="CRI_PES_PJ_PJ_REFCOMPTA_DOMAINE" type="1" sql-index-id="SQI_PES_PJ_PJ_REFCOMPTA_DOMAINE">
+ <where-clause>fn:string-compare(${table}.${column},Domaine)</where-clause>
+ </criteria>
+ <criteria id="CRI_PES_PJ_PJ_REFCOMPTA_IDTIERS" type="1" sql-index-id="SQI_PES_PJ_PJ_REFCOMPTA_IDTIERS">
+ <where-clause>fn:string-compare(${table}.${column},IdTiers)</where-clause>
+ </criteria>
+ <criteria id="CRI_PES_PJ_PJ_REFCOMPTA_CODPROD" type="1" sql-index-id="SQI_PES_PJ_PJ_REFCOMPTA_CODPROD">
+ <where-clause>fn:string-compare(${table}.${column},CodProd)</where-clause>
+ </criteria>
+ <criteria id="CRI_PES_PJ_PJ_REFCOMPTA_COMPLEMENTIDENTIFIANT" type="1" sql-index-id="SQI_PES_PJ_PJ_REFCOMPTA_COMPLEMENTIDENTIFIANT">
+ <where-clause>fn:string-compare(${table}.${column},ComplementIdentifiant)</where-clause>
+ </criteria>
+
+
+ <!-- SQL-INDEX /n:PES_Aller/n:PES_PJ -->
+ <sql-index id="SQI_PES_PJ_PES_PJ__NODE_ID" path="/n:PES_Aller/n:PES_PJ/@added:generated-id" column="NODE_ID" datatype="string" table="PES_PJ_PES_ALLER_PES_PJ_IX"/>
+ <sql-index id="SQI_PES_PJ_PES_PJ_IDVER" path="/n:PES_Aller/n:PES_PJ/n:EnTetePES_PJ/n:IdVer/@V" datatype="integer" column="IDVER" table="PES_PJ_PES_ALLER_PES_PJ_IX" />
+
+ <!-- SQL-INDEX /n:PES_Aller/n:PES_PJ/n:PJ -->
+ <sql-index id="SQI_PES_PJ_PJ__NODE_ID" path="/n:PES_Aller/n:PES_PJ/n:PJ/@added:generated-id" column="NODE_ID" datatype="string" table="PES_PJ_PJ_IX"/>
+ <sql-index id="SQI_PES_PJ_PJ_TYPEPJ" path="/n:PES_Aller/n:PES_PJ/n:PJ/n:TypePJ/@V" datatype="string" column="TYPEPJ" table="PES_PJ_PJ_IX" />
+ <sql-index id="SQI_PES_PJ_PJ_LIBTYPEPJ" path="/n:PES_Aller/n:PES_PJ/n:PJ/@LibTypePJ" datatype="string" column="LIBTYPEPJ" table="PES_PJ_PJ_IX" />
+ <sql-index id="SQI_PES_PJ_PJ_NOMPJ" path="/n:PES_Aller/n:PES_PJ/n:PJ/n:NomPJ/@V" datatype="string" column="NOMPJ" table="PES_PJ_PJ_IX" />
+ <sql-index id="SQI_PES_PJ_PJ_DESCRIPTION" path="/n:PES_Aller/n:PES_PJ/n:PJ/n:Description/@V" datatype="string" column="DESCRIPTION" table="PES_PJ_PJ_IX" />
+ <sql-index id="SQI_PES_PJ_PJ_IDUNIQUE" path="/n:PES_Aller/n:PES_PJ/n:PJ/n:IdUnique/@V" datatype="string" column="IDUNIQUE" table="PES_PJ_PJ_IX" />
+ <sql-index id="SQI_PES_PJ_PJ_SERVEURID" path="/n:PES_Aller/n:PES_PJ/n:PJ/n:ServeurId/@V" datatype="string" column="SERVEURID" table="PES_PJ_PJ_IX" />
+
+ <!-- SQL-INDEX /n:PES_Aller/n:PES_PJ/n:PJ/n:RefCompta -->
+ <sql-index id="SQI_PES_PJ_PJ_REFCOMPTA__NODE_ID" path="/n:PES_Aller/n:PES_PJ/n:PJ/n:RefCompta/@added:generated-id" column="NODE_ID" datatype="string" table="PES_PJ_PJ_REFCOMPTA_IX"/>
+ <sql-index id="SQI_PES_PJ_PJ_REFCOMPTA_IDENTIFIANT" path="/n:PES_Aller/n:PES_PJ/n:PJ/n:RefCompta/n:Identifiant/@V" datatype="string" column="IDENTIFIANT" table="PES_PJ_PJ_REFCOMPTA_IX" />
+ <sql-index id="SQI_PES_PJ_PJ_REFCOMPTA_TYPEOBJET" path="/n:PES_Aller/n:PES_PJ/n:PJ/n:RefCompta/n:TypeObjet/@V" datatype="integer" column="TYPEOBJET" table="PES_PJ_PJ_REFCOMPTA_IX" />
+ <sql-index id="SQI_PES_PJ_PJ_REFCOMPTA_EXERCICE" path="/n:PES_Aller/n:PES_PJ/n:PJ/n:RefCompta/n:Exercice/@V" datatype="string" column="EXERCICE" table="PES_PJ_PJ_REFCOMPTA_IX" />
+ <sql-index id="SQI_PES_PJ_PJ_REFCOMPTA_DOMAINE" path="/n:PES_Aller/n:PES_PJ/n:PJ/n:RefCompta/n:Domaine/@V" datatype="string" column="DOMAINE" table="PES_PJ_PJ_REFCOMPTA_IX" />
+ <sql-index id="SQI_PES_PJ_PJ_REFCOMPTA_IDTIERS" path="/n:PES_Aller/n:PES_PJ/n:PJ/n:RefCompta/n:IdTiers/@V" datatype="string" column="IDTIERS" table="PES_PJ_PJ_REFCOMPTA_IX" />
+ <sql-index id="SQI_PES_PJ_PJ_REFCOMPTA_CODPROD" path="/n:PES_Aller/n:PES_PJ/n:PJ/n:RefCompta/n:CodProd/@V" datatype="string" column="CODPROD" table="PES_PJ_PJ_REFCOMPTA_IX" />
+ <sql-index id="SQI_PES_PJ_PJ_REFCOMPTA_COMPLEMENTIDENTIFIANT" path="/n:PES_Aller/n:PES_PJ/n:PJ/n:RefCompta/n:ComplementIdentifiant/@V" datatype="string" column="COMPLEMENTIDENTIFIANT" table="PES_PJ_PJ_REFCOMPTA_IX" />
+
+ <element id="PES_ALLER_PES_PJ_PJ_IX">
+ <sql-count>COUNT(DISTINCT(CONCAT(PES_ALLER_PES_PJ_IX.DOC_ID,PES_ALLER_PES_PJ_PJ_IX.NODE_ID)))</sql-count>
+ <special-cond>PES_ALLER_PES_PJ_PJ_IX.NODE_ID IS NOT NULL</special-cond>
+ </element>
+ <element id="PES_ALLER_PES_PJ_PJ_REFCOMPTA_IX">
+ <sql-count>COUNT(DISTINCT(CONCAT(PES_ALLER_PES_PJ_IX.DOC_ID,PES_ALLER_PES_PJ_PJ_REFCOMPTA_IX.NODE_ID)))</sql-count>
+ <special-cond>PES_ALLER_PES_PJ_PJ_REFCOMPTA_IX.NODE_ID IS NOT NULL</special-cond>
+ </element>
+
+ </etat>
+
+ </document>
+ </layer>
+</persistence-config>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE xsl:stylesheet [
+<!ENTITY nbsp " ">
+]>
+
+<xsl:transform
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns:java="xalan://xml.apache.org/xalan/java"
+ xmlns:fn="http://projets.admisource.gouv.fr/xemelios/namespaces#functions"
+ xmlns:added="http://projets.admisource.gouv.fr/xemelios/namespaces#added"
+ xmlns:ano="http://projets.admisource.gouv.fr/xemelios/namespaces#anomally"
+ xmlns:n="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/aller"
+ xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
+ exclude-result-prefixes="fn java" version="2.0">
+
+ <xsl:output version="1.0" method="xml" indent="yes" standalone="yes"/>
+
+ <xsl:output encoding="ISO-8859-1"/>
+
+ <xsl:param name="language" select="'fr'"/>
+
+ <xsl:variable name="mode.reglement">
+ <reglement Code="01" Libelle="Numéraire"/>
+ <reglement Code="02" Libelle="Chèque"/>
+ <reglement Code="03" Libelle="Virement"/>
+ <reglement Code="04" Libelle="Virement appli externe"/>
+ <reglement Code="05" Libelle="Virement gros montant"/>
+ <reglement Code="06" Libelle="Virement à l'étranger"/>
+ <reglement Code="07" Libelle="Opération budget rattaché"/>
+ <reglement Code="08" Libelle="Opération d'ordre"/>
+ <reglement Code="09" Libelle="Avis de règlement"/>
+ <reglement Code="10" Libelle="Prélèvement"/>
+ <reglement Code="11" Libelle="Virement interne"/>
+ </xsl:variable>
+
+ <xsl:variable name="postes">
+ <poste code="0800610">TRESORERIE ABBEVILLE ET BANLIEUE</poste>
+ <poste code="0800580">TRESORERIE ABBEVILLE MUNICIPALE</poste>
+ <poste code="1220000">TRESORERIE AMBASSADE DE FRANCE EN COTE-D'IVOIRE</poste>
+ <poste code="0740010">TRESORERIE ABONDANCE</poste>
+ <poste code="0800010">TRESORERIE ACHEUX-EN-AMIENOIS</poste>
+ <poste code="0340330">TRESORERIE AGDE</poste>
+ <poste code="0470000">TRESORERIE GENERALE DE LOT-ET-GARONNE</poste>
+ <poste code="0470010">TRESORERIE AGEN</poste>
+ <poste code="0470350">TRESORERIE OPAC DE LOT-ET-GARONNE</poste>
+ <poste code="0470900">PAIERIE DEPARTEMENTALE DE LOT-ET-GARONNE</poste>
+ <poste code="0470020">TRESORERIE AGEN ETABLISSEMENTS HOSPITALIERS</poste>
+ <poste code="0470120">TRESORERIE DE PUYMIROL-LAPLUME</poste>
+ <poste code="0470140">TRESORERIE D' AGEN MUNICIPALE</poste>
+ <poste code="0500200">TRESORERIE SAINT-MALO-DE-LA-LANDE</poste>
+ <poste code="0230010">TRESORERIE AHUN</poste>
+ <poste code="0160010">TRESORERIE AIGRE</poste>
+ <poste code="0170010">TRESORERIE AIGREFEUILLE-D'AUNIS</poste>
+ <poste code="0440010">TRESORERIE AIGREFEUILLE-SUR-MAINE</poste>
+ <poste code="0730010">TRESORERIE AIGUEBELLE</poste>
+ <poste code="0630590">TRESORERIE AIGUEPERSE</poste>
+ <poste code="0300010">TRESORERIE AIGUES-MORTES</poste>
+ <poste code="0470030">TRESORERIE AIGUILLON</poste>
+ <poste code="0890010">TRESORERIE AILLANT-SUR-THOLON-GUERCHY</poste>
+ <poste code="0800020">TRESORERIE AILLY-SUR-NOYE</poste>
+ <poste code="0730020">TRESORERIE AIME</poste>
+ <poste code="0400010">TRESORERIE AIRE-SUR-L'ADOUR</poste>
+ <poste code="0622250">TRESORERIE D' AIRE-SUR-LA-LYS</poste>
+ <poste code="0790020">TRESORERIE AIRVAULT-VALLEE DU THOUET</poste>
+ <poste code="0100010">TRESORERIE D' AIX-EN-OTHE</poste>
+ <poste code="0131000">RECETTE DES FINANCES AIX-EN-PROVENCE</poste>
+ <poste code="0131010">TRESORERIE AIX-EN-PROVENCE SUD</poste>
+ <poste code="0131020">TRESORERIE D' AIX-EN-PROVENCE NORD</poste>
+ <poste code="0131030">TRESORERIE D' AIX-EN-PROVENCE MUNICIPALE</poste>
+ <poste code="0131040">TRESORERIE AIX-EN-PROVENCE ETS HOSPITALIERS</poste>
+ <poste code="0730030">TRESORERIE AIX-LES-BAINS</poste>
+ <poste code="0870010">TRESORERIE AIXE-SUR-VIENNE</poste>
+ <poste code="02A0000">TRESORERIE GENERALE DE LA CORSE-DU-SUD</poste>
+ <poste code="02A0007">CENTRE REGIONAL DES PENSIONS DE LA CORSE-DU-SUD</poste>
+ <poste code="02A0009">DEPARTEMENT INFORMATIQUE DE LA CORSE-DU-SUD</poste>
+ <poste code="02A0010">TRESORERIE AJACCIO</poste>
+ <poste code="02A0020">TRESORERIE AJACCIO MUNICIPALE</poste>
+ <poste code="02A0030">TRESORERIE AJACCIO RURAL</poste>
+ <poste code="02A0800">PAIERIE REGIONALE DE CORSE</poste>
+ <poste code="02A0900">PAIERIE DEPARTEMENTALE DE LA CORSE-DU-SUD</poste>
+ <poste code="0810010">TRESORERIE ALBAN</poste>
+ <poste code="0730040">TRESORERIE ALBENS</poste>
+ <poste code="0800490">TRESORERIE ALBERT</poste>
+ <poste code="0730050">TRESORERIE D' ALBERTVILLE</poste>
+ <poste code="0570010">TRESORERIE ALBESTROFF</poste>
+ <poste code="0810020">TRESORERIE ALBI TRESOR</poste>
+ <poste code="0810000">TRESORERIE GENERALE DU TARN</poste>
+ <poste code="0810030">TRESORERIE ALBI-VILLE ET PERIPHERIE</poste>
+ <poste code="0810900">PAIERIE DEPARTEMENTALE DU TARN</poste>
+ <poste code="0690360">TRESORERIE ALBIGNY-SUR-SAONE ETS HOSP. DPTX</poste>
+ <poste code="0610000">TRESORERIE GENERALE DE L' ORNE</poste>
+ <poste code="0610020">TRESORERIE D' ALENCON VILLE ET CAMPAGNE</poste>
+ <poste code="0610040">TRESORERIE ALENCON HOPITAUX</poste>
+ <poste code="0610900">PAIERIE DEPARTEMENTALE DE L' ORNE</poste>
+ <poste code="02B0120">TRESORERIE MOITA</poste>
+ <poste code="0300430">TRESORERIE ALES MUNICIPALE</poste>
+ <poste code="0940010">TRESORERIE MALE ALFORTVILLE/MAISONS-ALFORT</poste>
+ <poste code="1110000">TRESORERIE AMBASSADE DE FRANCE A ALGER</poste>
+ <poste code="0570020">TRESORERIE ALGRANGE</poste>
+ <poste code="0560010">TRESORERIE ALLAIRE</poste>
+ <poste code="0150010">TRESORERIE ALLANCHE</poste>
+ <poste code="0190220">TRESORERIE ALLASSAC</poste>
+ <poste code="0130010">TRESORERIE ALLAUCH</poste>
+ <poste code="0380020">TRESORERIE ALLEVARD</poste>
+ <poste code="0490310">TRESORERIE ALLONNES</poste>
+ <poste code="0681010">TRESORERIE ALTKIRCH</poste>
+ <poste code="0110030">TRESORERIE ALZONNE</poste>
+ <poste code="0700010">TRESORERIE AMANCE-FAVERNEY</poste>
+ <poste code="0250010">TRESORERIE D' AMANCEY</poste>
+ <poste code="0330010">TRESORERIE AMBARES-ET-LAGRAVE</poste>
+ <poste code="0870020">TRESORERIE AMBAZAC</poste>
+ <poste code="0010010">TRESORERIE D' AMBERIEU-EN-BUGEY</poste>
+ <poste code="0630480">TRESORERIE D' AMBERT</poste>
+ <poste code="0370010">TRESORERIE AMBOISE-POCE</poste>
+ <poste code="0530010">TRESORERIE AMBRIERES-LES-VALLEES</poste>
+ <poste code="0800040">TRESORERIE AMIENS CENTRE</poste>
+ <poste code="0800000">TRESORERIE GENERALE DE LA SOMME</poste>
+ <poste code="0800007">CENTRE REGIONAL DES PENSIONS DE LA SOMME</poste>
+ <poste code="0800008">CENTRE DE FORMATION DEPARTEMENTAL DE LA SOMME</poste>
+ <poste code="0800009">DEPARTEMENT INFORMATIQUE DE LA SOMME</poste>
+ <poste code="0800060">TRESORERIE AMIENS BANLIEUE ET AMENDES</poste>
+ <poste code="0800070">TRESORERIE AMIENS MUNICIPALE</poste>
+ <poste code="0800900">PAIERIE DEPARTEMENTALE DE LA SOMME</poste>
+ <poste code="0800080">TRESORERIE AMIENS ETS HOSP.</poste>
+ <poste code="0800800">PAIERIE REGIONALE DE PICARDIE</poste>
+ <poste code="0800001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE LA SOMME</poste>
+ <poste code="0400200">TRESORERIE AMOU-POMAREZ</poste>
+ <poste code="0690460">TRESORERIE AMPLEPUIS</poste>
+ <poste code="0440020">TRESORERIE ANCENIS</poste>
+ <poste code="0550010">TRESORERIE D' ANCERVILLE</poste>
+ <poste code="0890020">TRESORERIE ANCY-LE-FRANC</poste>
+ <poste code="0520010">TRESORERIE ANDELOT-BLANCHEVILLE</poste>
+ <poste code="0300440">TRESORERIE ANDUZE</poste>
+ <poste code="0280320">TRESORERIE ANET</poste>
+ <poste code="0490000">TRESORERIE GENERALE DE MAINE-ET-LOIRE</poste>
+ <poste code="0490020">TRESORERIE ANGERS OUEST</poste>
+ <poste code="0490030">TRESORERIE ANGERS MUNICIPALE</poste>
+ <poste code="0490040">TRESORERIE ANGERS CHU</poste>
+ <poste code="0490001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DU MAINE ET LOIRE</poste>
+ <poste code="0490010">TRESORERIE ANGERS EST ET AMENDES</poste>
+ <poste code="0490060">TRESORERIE D' AVRILLE</poste>
+ <poste code="0490900">PAIERIE DEPARTEMENTALE DE MAINE-ET-LOIRE</poste>
+ <poste code="0850280">TRESORERIE ANGLES</poste>
+ <poste code="0640470">TRESORERIE ANGLET-ADOUR-OCEAN</poste>
+ <poste code="0510300">TRESORERIE ANGLURE</poste>
+ <poste code="0160000">TRESORERIE GENERALE DE LA CHARENTE</poste>
+ <poste code="0160001">TRESORERIE GENERALE SERVICE DES AFFAIRES COMMUNALES</poste>
+ <poste code="0160002">TRESORERIE GENERALE CONTROLE FINANCIER LOCAL</poste>
+ <poste code="0160003">TRESORERIE GENERALE ACTION ECONOMIQUE</poste>
+ <poste code="0160020">TRESORERIE ANGOULEME</poste>
+ <poste code="0160030">TRESORERIE ANGOULEME MUNICIPALE</poste>
+ <poste code="0160150">TRESORERIE ANGOULEME OPHLM</poste>
+ <poste code="0160900">PAIERIE DEPARTEMENTALE DE LA CHARENTE</poste>
+ <poste code="0593010">TRESORERIE ANICHE</poste>
+ <poste code="0020010">TRESORERIE ANIZY-LE-CHATEAU</poste>
+ <poste code="0740030">TRESORERIE ANNECY</poste>
+ <poste code="0740040">TRESORERIE ANNECY MUNICIPALE</poste>
+ <poste code="0740900">PAIERIE DEPARTEMENTALE DE LA HAUTE-SAVOIE</poste>
+ <poste code="0740001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE LA HAUTE SAVOIE</poste>
+ <poste code="0740320">TRESORERIE ANNECY LE VIEUX</poste>
+ <poste code="0740000">TRESORERIE GENERALE DE LA HAUTE-SAVOIE</poste>
+ <poste code="0740050">TRESORERIE ANNEMASSE</poste>
+ <poste code="0590020">TRESORERIE ANNOEULLIN</poste>
+ <poste code="0070020">TRESORERIE ANNONAY</poste>
+ <poste code="0040010">TRESORERIE D' ANNOT</poste>
+ <poste code="1410000">TRESORERIE AMBASSADE DE FRANCE EN REPUBLIQUE DE MADAGASCAR</poste>
+ <poste code="0061010">TRESORERIE ANTIBES</poste>
+ <poste code="0061020">TRESORERIE ANTIBES MUNICIPALE</poste>
+ <poste code="0921010">TRESORERIE D' ANTONY</poste>
+ <poste code="0921000">RECETTE DES FINANCES ANTONY</poste>
+ <poste code="0070040">TRESORERIE ANTRAIGUES</poste>
+ <poste code="0350010">TRESORERIE D' ANTRAIN-SAINT BRICE</poste>
+ <poste code="0595010">TRESORERIE D' ANZIN</poste>
+ <poste code="0840010">TRESORERIE APT</poste>
+ <poste code="0300030">TRESORERIE ARAMON</poste>
+ <poste code="0390020">TRESORERIE ARBOIS</poste>
+ <poste code="0520020">TRESORERIE D' ARC-EN-BARROIS</poste>
+ <poste code="0330020">TRESORERIE D' ARCACHON</poste>
+ <poste code="0100020">TRESORERIE D' ARCIS-SUR-AUBE</poste>
+ <poste code="0360020">TRESORERIE ARDENTES</poste>
+ <poste code="0630010">TRESORERIE ARDES-SUR-COUZE</poste>
+ <poste code="0622260">TRESORERIE ARDRES-EPERLECQUES</poste>
+ <poste code="0650020">TRESORERIE ARGELES-GAZOST</poste>
+ <poste code="0660010">TRESORERIE ARGELES-SUR-MER</poste>
+ <poste code="0610290">TRESORERIE D' ARGENTAN</poste>
+ <poste code="0190010">TRESORERIE ARGENTAT</poste>
+ <poste code="0950010">TRESORERIE ARGENTEUIL HLM</poste>
+ <poste code="0950020">TRESORERIE ARGENTEUIL</poste>
+ <poste code="0950030">TRESORERIE ARGENTEUIL MUNICIPALE</poste>
+ <poste code="0950040">TRESORERIE ARGENTEUIL CENTRE HOSPITALIER</poste>
+ <poste code="0790030">TRESORERIE D' ARGENTON LES VALLÉES</poste>
+ <poste code="0360030">TRESORERIE D' ARGENTON-SUR-CREUSE</poste>
+ <poste code="0350020">TRESORERIE ARGENTRE-DU-PLESSIS</poste>
+ <poste code="0390040">TRESORERIE D' ARINTHOD</poste>
+ <poste code="0630490">TRESORERIE D' ARLANC</poste>
+ <poste code="0132000">RECETTE DES FINANCES ARLES</poste>
+ <poste code="0132010">TRESORERIE ARLES MUNICIPALE ET CAMARGUE</poste>
+ <poste code="0132030">TRESORERIE ARLES CENTRE HOSPITALIER</poste>
+ <poste code="0132130">TRESORERIE PAYS D'ARLES</poste>
+ <poste code="0660020">TRESORERIE ARLES-SUR-TECH</poste>
+ <poste code="0593020">TRESORERIE ARLEUX</poste>
+ <poste code="0590030">TRESORERIE D' ARMENTIERES</poste>
+ <poste code="0590040">TRESORERIE ARMENTIERES MUNICIPALE</poste>
+ <poste code="0210490">TRESORERIE ARNAY-LE-DUC</poste>
+ <poste code="0911010">TRESORERIE ARPAJON</poste>
+ <poste code="0622270">TRESORERIE D' ARQUES</poste>
+ <poste code="0620490">TRESORERIE ARRAS CENTRE HOSPITALIER</poste>
+ <poste code="0620000">TRESORERIE GENERALE DU PAS-DE-CALAIS</poste>
+ <poste code="0620030">TRESORERIE D' ARRAS</poste>
+ <poste code="0620040">TRESORERIE ARRAS MUNICIPALE</poste>
+ <poste code="0620420">TRESORERIE D' ARRAS BANLIEUE</poste>
+ <poste code="0620900">PAIERIE DEPARTEMENTALE DU PAS-DE-CALAIS</poste>
+ <poste code="0650030">TRESORERIE D' ARREAU-BORDERES-LOURON</poste>
+ <poste code="0570030">TRESORERIE ARS-SUR-MOSELLE</poste>
+ <poste code="0010440">TRESORERIE D' ARTEMARE</poste>
+ <poste code="0450010">TRESORERIE ARTENAY</poste>
+ <poste code="0640040">TRESORERIE ARUDY</poste>
+ <poste code="0640050">TRESORERIE ARZACQ-MORLANNE</poste>
+ <poste code="0080010">TRESORERIE ASFELD</poste>
+ <poste code="0920020">TRESORERIE ASNIERES-SUR-SEINE</poste>
+ <poste code="0920030">TRESORERIE D' ASNIERES-SUR-SEINE MUNICIPALE</poste>
+ <poste code="0310450">TRESORERIE ASPET</poste>
+ <poste code="0610300">TRESORERIE ATHIS-DE-L'ORNE</poste>
+ <poste code="0911020">TRESORERIE ATHIS-MONS</poste>
+ <poste code="0600450">TRESORERIE ATTICHY</poste>
+ <poste code="0080020">TRESORERIE ATTIGNY-TOURTERON</poste>
+ <poste code="0130020">TRESORERIE AUBAGNE</poste>
+ <poste code="0070050">TRESORERIE AUBENAS</poste>
+ <poste code="0931010">TRESORERIE D' AUBERVILLIERS</poste>
+ <poste code="0931020">TRESORERIE AUBERVILLIERS MUNICIPALE</poste>
+ <poste code="0160050">TRESORERIE AUBETERRE-SUR-DRONNE</poste>
+ <poste code="0620050">TRESORERIE AUBIGNY-EN-ARTOIS</poste>
+ <poste code="0180030">TRESORERIE D' AUBIGNY-SUR-NERE</poste>
+ <poste code="0120250">TRESORERIE AUBIN</poste>
+ <poste code="0230190">TRESORERIE D' AUBUSSON - ST SULPICE LES CHAMPS</poste>
+ <poste code="0310420">TRESORERIE AUCAMVILLE</poste>
+ <poste code="0320000">TRESORERIE GENERALE DU GERS</poste>
+ <poste code="0320900">PAIERIE DEPARTEMENTALE DU GERS</poste>
+ <poste code="0320020">TRESORERIE AUCH VILLE</poste>
+ <poste code="0320030">TRESORERIE AUCH BANLIEUE</poste>
+ <poste code="0620590">TRESORERIE AUCHEL</poste>
+ <poste code="0330030">TRESORERIE AUDENGE</poste>
+ <poste code="0250340">TRESORERIE AUDINCOURT</poste>
+ <poste code="0622280">TRESORERIE AUDRUICQ</poste>
+ <poste code="0540390">TRESORERIE D' AUDUN-LE-ROMAN - PIENNES</poste>
+ <poste code="0570040">TRESORERIE AUDUN-LE-TICHE</poste>
+ <poste code="0170020">TRESORERIE AULNAY-DE-SAINTONGE-NERE</poste>
+ <poste code="0930030">TRESORERIE D' AULNAY-SOUS-BOIS</poste>
+ <poste code="0800590">TRESORERIE AULT</poste>
+ <poste code="0760670">TRESORERIE D' AUMALE</poste>
+ <poste code="0140030">TRESORERIE AUNAY-SUR-ODON</poste>
+ <poste code="0280010">TRESORERIE AUNEAU</poste>
+ <poste code="0600020">TRESORERIE AUNEUIL</poste>
+ <poste code="0831020">TRESORERIE AUPS</poste>
+ <poste code="0560250">TRESORERIE AURAY</poste>
+ <poste code="0310460">TRESORERIE AURIGNAC</poste>
+ <poste code="0150030">TRESORERIE AURILLAC BANLIEUE</poste>
+ <poste code="0150000">TRESORERIE GENERALE DU CANTAL</poste>
+ <poste code="0150020">TRESORERIE D' AURILLAC</poste>
+ <poste code="0150900">PAIERIE DEPARTEMENTALE DU CANTAL</poste>
+ <poste code="0310550">TRESORERIE D' AUTERIVE</poste>
+ <poste code="0280020">TRESORERIE AUTHON/PERCHE-LA-BAZOCHE-GOUET</poste>
+ <poste code="0710580">TRESORERIE D' AUTUN</poste>
+ <poste code="0890000">TRESORERIE GENERALE DE L' YONNE</poste>
+ <poste code="0890030">TRESORERIE D' AUXERRE</poste>
+ <poste code="0890040">TRESORERIE AUXERRE ETS HOSP.</poste>
+ <poste code="0890900">PAIERIE DEPARTEMENTALE DE L' YONNE</poste>
+ <poste code="0210040">TRESORERIE AUXONNE</poste>
+ <poste code="0230200">TRESORERIE D' AUZANCES</poste>
+ <poste code="0860010">TRESORERIE D' AVAILLES-LIMOUZINE</poste>
+ <poste code="0890060">TRESORERIE D' AVALLON</poste>
+ <poste code="0620070">TRESORERIE D' AVESNES LE COMTE</poste>
+ <poste code="0593110">TRESORERIE AVESNES-LEZ-AUBERT</poste>
+ <poste code="0595170">TRESORERIE D' AVESNES-SUR-HELPE</poste>
+ <poste code="0840000">TRESORERIE GENERALE DE VAUCLUSE</poste>
+ <poste code="0840030">TRESORERIE D' AVIGNON</poste>
+ <poste code="0840050">TRESORERIE AVIGNON MUNICIPALE</poste>
+ <poste code="0840060">TRESORERIE AVIGNON CENTRE HOSPITALIER</poste>
+ <poste code="0840900">PAIERIE DEPARTEMENTALE DE VAUCLUSE</poste>
+ <poste code="0840001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DU VAUCLUSE</poste>
+ <poste code="0620080">TRESORERIE AVION</poste>
+ <poste code="0510310">TRESORERIE D' AVIZE</poste>
+ <poste code="0770330">TRESORERIE AVON</poste>
+ <poste code="0500240">TRESORERIE AVRANCHES</poste>
+ <poste code="0090020">TRESORERIE AX-LES-THERMES</poste>
+ <poste code="0110040">TRESORERIE AXAT</poste>
+ <poste code="0510320">TRESORERIE D' AY</poste>
+ <poste code="0370020">TRESORERIE AZAY-LE-RIDEAU</poste>
+ <poste code="0540300">TRESORERIE DE BACCARAT-BADONVILLER</poste>
+ <poste code="0760530">TRESORERIE BACQUEVILLE-EN-CAUX</poste>
+ <poste code="0650050">TRESORERIE BAGNERES-DE-BIGORRE-CAMPAN</poste>
+ <poste code="0310470">TRESORERIE BAGNERES-DE-LUCHON</poste>
+ <poste code="0921020">TRESORERIE BAGNEUX</poste>
+ <poste code="0930040">TRESORERIE BAGNOLET</poste>
+ <poste code="0300040">TRESORERIE BAGNOLS-SUR-CEZE</poste>
+ <poste code="1010080">TRESORERIE PETIT-BOURG</poste>
+ <poste code="0160070">TRESORERIE BAIGNES-SAINTE-RADEGONDE</poste>
+ <poste code="0594170">TRESORERIE BAILLEUL</poste>
+ <poste code="0350030">TRESORERIE BAIN-DE-BRETAGNE</poste>
+ <poste code="0880010">TRESORERIE BAINS-LES-BAINS</poste>
+ <poste code="0422050">TRESORERIE BALBIGNY</poste>
+ <poste code="0720020">TRESORERIE DE BALLON-MONTBIZOT</poste>
+ <poste code="0310310">TRESORERIE BALMA</poste>
+ <poste code="0310001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE HAUTE GARONNE</poste>
+ <poste code="0310002">ANNEXE PÔLE INTERRÉGIONAL APUREMENT SPL</poste>
+ <poste code="1280000">TRESORERIE AMBASSADE DE FRANCE AU MALI</poste>
+ <poste code="0292020">TRESORERIE BANNALEC</poste>
+ <poste code="0040020">TRESORERIE BANON ET SAINT-ETIENNE</poste>
+ <poste code="0620090">TRESORERIE DE BAPAUME</poste>
+ <poste code="0550000">TRESORERIE GENERALE DE LA MEUSE</poste>
+ <poste code="0550030">TRESORERIE DE BAR-LE-DUC VILLE</poste>
+ <poste code="0550210">TRESORERIE DU PAYS DE REVIGNY-OPAC DE LA MEUSE</poste>
+ <poste code="0550900">PAIERIE DEPARTEMENTALE DE LA MEUSE</poste>
+ <poste code="0100040">TRESORERIE DE BAR-SUR-AUBE</poste>
+ <poste code="0100060">TRESORERIE DE BAR-SUR-SEINE</poste>
+ <poste code="0120240">TRESORERIE DE BARAQUEVILLE</poste>
+ <poste code="0132040">TRESORERIE BARBENTANE</poste>
+ <poste code="0160080">TRESORERIE BARBEZIEUX-SAINT-HILAIRE</poste>
+ <poste code="0040030">TRESORERIE DE BARCELONNETTE</poste>
+ <poste code="0760020">TRESORERIE DE BARENTIN</poste>
+ <poste code="0500250">TRESORERIE BARENTON-LE TEILLEUL</poste>
+ <poste code="0300450">TRESORERIE DE BARJAC</poste>
+ <poste code="0831030">TRESORERIE BARJOLS-TAVERNES</poste>
+ <poste code="0500380">TRESORERIE DE BARNEVILLE-PORTBAIL</poste>
+ <poste code="0670010">TRESORERIE BARR</poste>
+ <poste code="0430030">TRESORERIE BAS-EN-BASSET</poste>
+ <poste code="1030010">TRESORERIE BASSE-POINTE</poste>
+ <poste code="1010000">TRESORERIE GENERALE DE LA GUADELOUPE</poste>
+ <poste code="1010020">TRESORERIE DE BASSE-TERRE</poste>
+ <poste code="1010800">PAIERIE REGIONALE DE LA GUADELOUPE</poste>
+ <poste code="1010900">PAIERIE DEPARTEMENTALE DE LA GUADELOUPE</poste>
+ <poste code="1010130">TRESORERIE DE BASSE-TERRE MUNCIPALE ET HOSPIT.</poste>
+ <poste code="02B0000">TRESORERIE GENERALE DE LA HAUTE-CORSE</poste>
+ <poste code="02B0010">TRESORERIE BASTIA</poste>
+ <poste code="02B0020">TRESORERIE DE BASTIA MUNICIPALE</poste>
+ <poste code="02B0900">PAIERIE DEPARTEMENTALE DE LA HAUTE-CORSE</poste>
+ <poste code="0560200">TRESORERIE BAUD</poste>
+ <poste code="0490320">TRESORERIE BAUGE</poste>
+ <poste code="0180040">TRESORERIE BAUGY-SAVIGNY-EN-SEPTAINE</poste>
+ <poste code="0250020">TRESORERIE BAUME-LES-DAMES</poste>
+ <poste code="0595180">TRESORERIE BAVAY</poste>
+ <poste code="0140050">TRESORERIE BAYEUX-MONCEAUX-EN-BESSIN</poste>
+ <poste code="0640350">TRESORERIE BAYONNE</poste>
+ <poste code="0640360">TRESORERIE BAYONNE MUNICIPALE</poste>
+ <poste code="0640480">TRESORERIE BAYONNE CENTRE HOSPITALIER</poste>
+ <poste code="0330050">TRESORERIE BAZAS</poste>
+ <poste code="0310030">TRESORERIE MONTGISCARD-BAZIEGE</poste>
+ <poste code="0300050">TRESORERIE BEAUCAIRE</poste>
+ <poste code="0950240">TRESORERIE DE BEAUCHAMP-TAVERNY</poste>
+ <poste code="0390050">TRESORERIE DE BEAUFORT</poste>
+ <poste code="0490070">TRESORERIE BEAUFORT-EN-VALLEE</poste>
+ <poste code="0730060">TRESORERIE BEAUFORT</poste>
+ <poste code="0450030">TRESORERIE BEAUGENCY</poste>
+ <poste code="0690470">TRESORERIE BEAUJEU</poste>
+ <poste code="0190230">TRESORERIE BEAULIEU-SUR-DORDOGNE</poste>
+ <poste code="0820020">TRESORERIE BEAUMONT-LAVIT-DE-LOMAGNE</poste>
+ <poste code="0500390">TRESORERIE BEAUMONT-HAGUE</poste>
+ <poste code="0270180">TRESORERIE BEAUMONT-LE-ROGER</poste>
+ <poste code="0950050">TRESORERIE BEAUMONT-SUR-OISE</poste>
+ <poste code="0720040">TRESORERIE BEAUMONT-SUR-SARTHE</poste>
+ <poste code="0210510">TRESORERIE BEAUNE</poste>
+ <poste code="0450310">TRESORERIE DE BEAUNE-LA-ROLANDE</poste>
+ <poste code="0490420">TRESORERIE BEAUPREAU</poste>
+ <poste code="0381010">TRESORERIE BEAUREPAIRE</poste>
+ <poste code="0020320">TRESORERIE BEAURIEUX-ROUCY-CORBENY</poste>
+ <poste code="0550050">TRESORERIE DE BEAUSITE</poste>
+ <poste code="0060010">TRESORERIE BEAUSOLEIL</poste>
+ <poste code="0600000">TRESORERIE GENERALE DE L' OISE</poste>
+ <poste code="0600040">TRESORERIE DE BEAUVAIS VILLE</poste>
+ <poste code="0600050">TRESORERIE DE BEAUVAIS BANLIEUE</poste>
+ <poste code="0600070">TRESORERIE DE BEAUVAIS MUNICIPALE</poste>
+ <poste code="0600900">PAIERIE DEPARTEMENTALE DE L' OISE</poste>
+ <poste code="0600580">TRESORERIE DE BEAUVAIS AMENDES</poste>
+ <poste code="0600001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE L' OISE</poste>
+ <poste code="0850290">TRESORERIE BEAUVOIR-SUR-MER</poste>
+ <poste code="0790050">TRESORERIE BEAUVOIR-SUR-NIORT</poste>
+ <poste code="0350050">TRESORERIE BECHEREL</poste>
+ <poste code="0340340">TRESORERIE DE BEDARIEUX</poste>
+ <poste code="0640060">TRESORERIE BEDOUS</poste>
+ <poste code="0220320">TRESORERIE BEGARD</poste>
+ <poste code="0330060">TRESORERIE BEGLES</poste>
+ <poste code="0110060">TRESORERIE BELCAIRE-RODOME</poste>
+ <poste code="0900000">TRESORERIE GENERALE DU TERRITOIRE-DE-BELFORT</poste>
+ <poste code="0900040">TRESORERIE BELFORT VILLE</poste>
+ <poste code="0900110">TRESORERIE BELFORT TERRITOIRE HABITAT</poste>
+ <poste code="0900120">TRESORERIE DE BELFORT ETS. HOSPITALIERS</poste>
+ <poste code="0900900">PAIERIE DEPARTEMENTALE DU TERRITOIRE-DE-BELFORT</poste>
+ <poste code="0900020">TRESORERIE DE BELFORT</poste>
+ <poste code="0330070">TRESORERIE DE BELIN-BELIET</poste>
+ <poste code="0870030">TRESORERIE DE BELLAC</poste>
+ <poste code="0230210">TRESORERIE DE BELLEGARDE-EN-MARCHE</poste>
+ <poste code="0010020">TRESORERIE BELLEGARDE-SUR-VALSERINE</poste>
+ <poste code="0610070">TRESORERIE BELLEME</poste>
+ <poste code="0760540">TRESORERIE BELLENCOMBRE</poste>
+ <poste code="0030140">TRESORERIE BELLERIVE-SUR-ALLIER</poste>
+ <poste code="0020470">TRESORERIE DE BELLEU-SOISSONS BANLIEUE</poste>
+ <poste code="0690480">TRESORERIE BELLEVILLE</poste>
+ <poste code="0010030">TRESORERIE BELLEY</poste>
+ <poste code="0422010">TRESORERIE BELMONT-DE-LA-LOIRE</poste>
+ <poste code="0120260">TRESORERIE DE RANCE ET ROUGIERS</poste>
+ <poste code="0110070">TRESORERIE BELPECH</poste>
+ <poste code="0240020">TRESORERIE BELVES</poste>
+ <poste code="0110080">TRESORERIE BELVEZE-DU-RAZES</poste>
+ <poste code="0230020">TRESORERIE DE BENEVENT L'ABBAYE-LE GRAND BOURG</poste>
+ <poste code="0670030">TRESORERIE BENFELD</poste>
+ <poste code="0622170">TRESORERIE DE BERCK</poste>
+ <poste code="0240470">TRESORERIE BERGERAC MUNICIPALE ET BANLIEUE</poste>
+ <poste code="0240590">TRESORERIE DE BERGERAC</poste>
+ <poste code="0594010">TRESORERIE BERGUES</poste>
+ <poste code="0595190">TRESORERIE BERLAIMONT</poste>
+ <poste code="1830000">TRESORERIE AMBASSADE DE FRANCE EN ALLEMAGNE</poste>
+ <poste code="0800670">TRESORERIE BERNAVILLE</poste>
+ <poste code="0270190">TRESORERIE DE BERNAY</poste>
+ <poste code="0131050">TRESORERIE BERRE-L'ETANG</poste>
+ <poste code="0250000">TRESORERIE GENERALE DU DOUBS</poste>
+ <poste code="0250007">CENTRE REGIONAL DES PENSIONS DU DOUBS</poste>
+ <poste code="0250008">CENTRE DE FORMATION DEPARTEMENTAL DU DOUBS</poste>
+ <poste code="0250009">DEPARTEMENT INFORMATIQUE DU DOUBS</poste>
+ <poste code="0250030">TRESORERIE BESANCON</poste>
+ <poste code="0250050">TRESORERIE DU GRAND BESANCON</poste>
+ <poste code="0250060">TRESORERIE BESANCON CHRU</poste>
+ <poste code="0250130">TRESORERIE MORRE-ROULANS</poste>
+ <poste code="0250280">TRESORERIE BESANCON ETS HOSP. DPTAUX</poste>
+ <poste code="0250800">PAIERIE REGIONALE DE FRANCHE-COMTE</poste>
+ <poste code="0250900">PAIERIE DEPARTEMENTALE DOUBS</poste>
+ <poste code="0250001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DU DOUBS</poste>
+ <poste code="0250006">PÔLE NATIONAL DE SOUTIEN AU RESEAU DE BESANCON - RJC</poste>
+ <poste code="0250490">TRESORERIE DE L' OPDHLM DU DOUBS-HABITAT 25</poste>
+ <poste code="0630020">TRESORERIE BESSE-ET-SAINT-ANASTAISE</poste>
+ <poste code="0830020">TRESORERIE BESSE-SUR-ISSOLE</poste>
+ <poste code="0300460">TRESORERIE BESSEGES</poste>
+ <poste code="0870040">TRESORERIE DE BESSINES-SUR-GARTEMPE</poste>
+ <poste code="0620600">TRESORERIE BETHUNE</poste>
+ <poste code="0620610">TRESORERIE BETHUNE MUNICIPALE</poste>
+ <poste code="0620620">TRESORERIE BEUVRY</poste>
+ <poste code="0270200">TRESORERIE BEUZEVILLE</poste>
+ <poste code="0190240">TRESORERIE BEYNAT</poste>
+ <poste code="0340350">TRESORERIE BEZIERS</poste>
+ <poste code="0340360">TRESORERIE BEZIERS MUNICIPALE</poste>
+ <poste code="0340370">TRESORERIE DE BEZIERS ETS HOSP</poste>
+ <poste code="0950300">TRESORERIE BEZONS</poste>
+ <poste code="0640370">TRESORERIE BIARRITZ</poste>
+ <poste code="0911030">TRESORERIE BIEVRES</poste>
+ <poste code="0760040">TRESORERIE BIHOREL</poste>
+ <poste code="0630030">TRESORERIE BILLOM-SAINT-DIER-D'AUVERGNE</poste>
+ <poste code="0671010">TRESORERIE BISCHWILLER</poste>
+ <poste code="0571010">TRESORERIE BITCHE</poste>
+ <poste code="0310430">TRESORERIE BLAGNAC</poste>
+ <poste code="0440350">TRESORERIE BLAIN</poste>
+ <poste code="0760030">TRESORERIE BLAINVILLE-CREVON</poste>
+ <poste code="0540330">TRESORERIE DE BAYON-BLAINVILLE-SUR-L'EAU</poste>
+ <poste code="0540340">TRESORERIE DE BLAMONT - CIREY-SUR-VEZOUZE</poste>
+ <poste code="0760550">TRESORERIE DE BLANGY-SUR-BRESLE</poste>
+ <poste code="0330080">TRESORERIE BLANQUEFORT</poste>
+ <poste code="0160090">TRESORERIE BLANZAC-PORCHERESSE</poste>
+ <poste code="0330700">TRESORERIE BLAYE</poste>
+ <poste code="0890070">TRESORERIE BLENEAU-SAINT-FARGEAU</poste>
+ <poste code="0370030">TRESORERIE BLERE</poste>
+ <poste code="0390060">TRESORERIE BLETTERANS</poste>
+ <poste code="0210520">TRESORERIE BLIGNY-SUR-OUCHE</poste>
+ <poste code="0680010">TRESORERIE BLODELSHEIM</poste>
+ <poste code="0410000">TRESORERIE GENERALE DE LOIR-ET-CHER</poste>
+ <poste code="0410030">TRESORERIE BLOIS MUNICIPALE</poste>
+ <poste code="0410360">TRESORERIE OPAC.DE.LOIR.ET.CHER</poste>
+ <poste code="0410900">PAIERIE DEPARTEMENTALE DE LOIR-ET-CHER</poste>
+ <poste code="0410010">TRESORERIE BLOIS VILLE</poste>
+ <poste code="0930000">TRESORERIE GENERALE DE LA SEINE-SAINT-DENIS</poste>
+ <poste code="0930009">DEPARTEMENT INFORMATIQUE DE LA SEINE-SAINT-DENIS</poste>
+ <poste code="0930320">TRESORERIE DE BOBIGNY MUNICIPALE</poste>
+ <poste code="0930900">PAIERIE DEPARTEMENTALE DE LA SEINE-SAINT-DENIS</poste>
+ <poste code="0930001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE LA SEINE SAINT DENIS</poste>
+ <poste code="0740080">TRESORERIE BOEGE</poste>
+ <poste code="0422180">TRESORERIE DE BOEN SUR LIGNON</poste>
+ <poste code="0020520">TRESORERIE BOHAIN-EN-VERMANDOIS</poste>
+ <poste code="0920050">TRESORERIE DE BOIS-COLOMBES</poste>
+ <poste code="0940020">TRESORERIE DE BOISSY-SAINT-LEGER</poste>
+ <poste code="0762020">TRESORERIE BOLBEC</poste>
+ <poste code="0840200">TRESORERIE BOLLENE-MONDRAGON</poste>
+ <poste code="0930060">TRESORERIE DE BONDY</poste>
+ <poste code="0930400">TRESORERIE DE BONDY MUNICIPALE</poste>
+ <poste code="02A0040">TRESORERIE BONIFACIO</poste>
+ <poste code="0230030">TRESORERIE BONNAT-LOURDOUEIX-SAINT-PIERRE</poste>
+ <poste code="0860390">TRESORERIE VOUNEUIL-SUR-VIENNE</poste>
+ <poste code="0280080">TRESORERIE BONNEVAL</poste>
+ <poste code="0740090">TRESORERIE BONNEVILLE</poste>
+ <poste code="0781010">TRESORERIE BONNIERES-SUR-SEINE</poste>
+ <poste code="0330000">TRESORERIE GENERALE DE LA GIRONDE</poste>
+ <poste code="0330007">CENTRE REGIONAL DES PENSIONS DE LA GIRONDE</poste>
+ <poste code="0330008">CENTRE DE FORMATION DEPARTEMENTAL DE LA GIRONDE</poste>
+ <poste code="0330009">DEPARTEMENT INFORMATIQUE DE LA GIRONDE</poste>
+ <poste code="0330170">RECETTE DES FINANCES BORDEAUX MUNICIPALE</poste>
+ <poste code="0330181">TRESORERIE DE BORDEAUX CHU ANNEXE CH PERRENS</poste>
+ <poste code="0330800">PAIERIE REGIONALE D'AQUITAINE</poste>
+ <poste code="0330900">PAIERIE DEPARTEMENTALE DE LA GIRONDE</poste>
+ <poste code="0330001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE LA GIRONDE</poste>
+ <poste code="0330006">PÔLE NATIONAL DE SOUTIEN AU RESEAU DE BORDEAUX</poste>
+ <poste code="0330120">TRESORERIE BORDEAUX AMENDES</poste>
+ <poste code="0330140">TRESORERIE DE BORDEAUX RIVE GAUCHE</poste>
+ <poste code="0330160">TRESORERIE BORDEAUX EST</poste>
+ <poste code="0330171">RECETTE DES FINANCES SERVICE DE LA COMMUNAUTE URBAINE</poste>
+ <poste code="02B0040">TRESORERIE BORGO-CAMPILE</poste>
+ <poste code="0190020">TRESORERIE BORT-LES-ORGUES</poste>
+ <poste code="0440030">TRESORERIE DE BOUAYE</poste>
+ <poste code="0595020">TRESORERIE BOUCHAIN</poste>
+ <poste code="0100070">TRESORERIE DE BOUILLY</poste>
+ <poste code="0571020">TRESORERIE BOULAY</poste>
+ <poste code="0920060">TRESORERIE BOULOGNE-BILLANCOURT</poste>
+ <poste code="0920070">TRESORERIE BOULOGNE-BILLANCOURT MUNICIPALE</poste>
+ <poste code="0310480">TRESORERIE BOULOGNE-SUR-GESSE-BLAJAN</poste>
+ <poste code="0622000">RECETTE DES FINANCES BOULOGNE-SUR-MER</poste>
+ <poste code="0622020">TRESORERIE DE BOULOGNE-SUR-MER</poste>
+ <poste code="0622030">TRESORERIE BOULOGNE-SUR-MER MUNICIPALE</poste>
+ <poste code="0622040">TRESORERIE BOULOGNE-SUR-MER CTRE HOSP</poste>
+ <poste code="0720070">TRESORERIE BOULOIRE-PARIGNE</poste>
+ <poste code="0030010">TRESORERIE DE BOURBON-L'ARCHAMBAULT</poste>
+ <poste code="0710020">TRESORERIE BOURBON-LANCY</poste>
+ <poste code="0520300">TRESORERIE BOURBONNE-LES-BAINS</poste>
+ <poste code="0594030">TRESORERIE BOURBOURG</poste>
+ <poste code="0270370">TRESORERIE DE ROUTOT-BOURG-ACHARD</poste>
+ <poste code="0420010">TRESORERIE DE BOURG-ARGENTAL</poste>
+ <poste code="0010000">TRESORERIE GENERALE DE L' AIN</poste>
+ <poste code="0010050">TRESORERIE DE BOURG-EN-BRESSE</poste>
+ <poste code="0010060">TRESORERIE BOURG-EN-BRESSE MUNICIPALE</poste>
+ <poste code="0010900">PAIERIE DEPARTEMENTALE DE L' AIN</poste>
+ <poste code="0010001">CELLULE CONTRÔLE REDEVANCE AUDIOVISUELLE DE L' AIN</poste>
+ <poste code="0630040">TRESORERIE DE BOURG-LASTIC-HERMENT</poste>
+ <poste code="0660050">TRESORERIE BOURG-MADAME</poste>
+ <poste code="0070080">TRESORERIE BOURG-SAINT-ANDEOL</poste>
+ <poste code="0730070">TRESORERIE DE BOURG-SAINT-MAURICE</poste>
+ <poste code="0330710">TRESORERIE BOURG SUR GIRONDE</poste>
+ <poste code="0230040">TRESORERIE DE BOURGANEUF - PONTARION</poste>
+ <poste code="0180050">TRESORERIE BOURGES</poste>
+ <poste code="0180900">PAIERIE DEPARTEMENTALE DU CHER</poste>
+ <poste code="0180060">TRESORERIE BOURGES MUNICIPALE</poste>
+ <poste code="0180070">TRESORERIE DE BOURGES CH JACQUES COEUR</poste>
+ <poste code="0180410">TRESORERIE BOURGES H.L.M</poste>
+ <poste code="0180420">TRESORERIE DE BOURGES ETS SPECIALISES</poste>
+ <poste code="0180000">TRESORERIE GENERALE DU CHER</poste>
+ <poste code="0381100">TRESORERIE BOURGOIN-JALLIEU COLLECTIVITES</poste>
+ <poste code="0381110">TRESORERIE BOURGOIN-JALLIEU</poste>
+ <poste code="0270210">TRESORERIE DE BOURGTHEROULDE-INFREVILLE</poste>
+ <poste code="0370050">TRESORERIE BOURGUEIL</poste>
+ <poste code="0520040">TRESORERIE BOURMONT</poste>
+ <poste code="0230050">TRESORERIE BOUSSAC</poste>
+ <poste code="0671020">TRESORERIE BOUXWILLER</poste>
+ <poste code="0571030">TRESORERIE BOUZONVILLE</poste>
+ <poste code="0730080">TRESORERIE BOZEL</poste>
+ <poste code="0120020">TRESORERIE BOZOULS</poste>
+ <poste code="0410040">TRESORERIE BRACIEUX</poste>
+ <poste code="0110400">TRESORERIE DE VILLASAVARY</poste>
+ <poste code="0240030">TRESORERIE BRANTOME</poste>
+ <poste code="0810190">TRESORERIE BRASSAC</poste>
+ <poste code="0770300">TRESORERIE BRAY-SUR-SEINE</poste>
+ <poste code="0800510">TRESORERIE BRAY-SUR-SOMME</poste>
+ <poste code="0500260">TRESORERIE BRECEY-SAINT-POIS</poste>
+ <poste code="0500010">TRESORERIE BREHAL-GAVRAY</poste>
+ <poste code="0060020">TRESORERIE DE BREIL-SUR-ROYA</poste>
+ <poste code="0600080">TRESORERIE BRESLES</poste>
+ <poste code="0790070">TRESORERIE BRESSUIRE</poste>
+ <poste code="0290200">TRESORERIE BREST BELLEVUE</poste>
+ <poste code="0290000">TRESORERIE GENERALE DU FINISTERE</poste>
+ <poste code="0290030">TRESORERIE DE BREST QUATRE-MOULINS</poste>
+ <poste code="0290040">TRESORERIE BREST MUNICIPALE ET COM.URB</poste>
+ <poste code="0290041">TRESORERIE ANNEXE OPAC</poste>
+ <poste code="0290050">TRESORERIE BREST CHU</poste>
+ <poste code="0290900">PAIERIE DEPARTEMENTALE D' FINISTERE</poste>
+ <poste code="0290001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DU FINISTERE</poste>
+ <poste code="0460020">TRESORERIE DE BRETENOUX-VAYRAC</poste>
+ <poste code="0600090">TRESORERIE DE BRETEUIL-CREVECOEUR-LE-GRAND</poste>
+ <poste code="0270010">TRESORERIE BRETEUIL-SUR-ITON</poste>
+ <poste code="0140090">TRESORERIE BRETTEVILLE-SUR-LAIZE</poste>
+ <poste code="0280330">TRESORERIE BREZOLLES</poste>
+ <poste code="0050030">TRESORERIE BRIANCON</poste>
+ <poste code="0450320">TRESORERIE DE BRIARE</poste>
+ <poste code="0500400">TRESORERIE BRICQUEBEC</poste>
+ <poste code="0770010">TRESORERIE BRIE-COMTE-ROBERT</poste>
+ <poste code="0100080">TRESORERIE DE BRIENNE-LE-CHATEAU</poste>
+ <poste code="0890080">TRESORERIE DE BRIENON-SUR-ARMANCON</poste>
+ <poste code="0540400">TRESORERIE DE BRIEY</poste>
+ <poste code="0830030">TRESORERIE BRIGNOLES</poste>
+ <poste code="0270220">TRESORERIE BRIONNE</poste>
+ <poste code="0430050">TRESORERIE BRIOUDE</poste>
+ <poste code="0790080">TRESORERIE BRIOUX-SUR-BOUTONNE</poste>
+ <poste code="0490080">TRESORERIE BRISSAC-QUINCE</poste>
+ <poste code="0190260">TRESORERIE BRIVE MUNICIPALE</poste>
+ <poste code="0190330">TRESORERIE BRIVE VILLE</poste>
+ <poste code="0690210">TRESORERIE LE VINATIER CTRE HOSP. SPEC</poste>
+ <poste code="0690430">TRESORERIE DE BRON</poste>
+ <poste code="0220230">TRESORERIE BROONS</poste>
+ <poste code="0280100">TRESORERIE BROU</poste>
+ <poste code="0620630">TRESORERIE BRUAY-LA BUISSIERE</poste>
+ <poste code="0670060">TRESORERIE DE BRUMATH</poste>
+ <poste code="0910050">TRESORERIE BRUNOY</poste>
+ <poste code="0880040">TRESORERIE DE BRUYERES</poste>
+ <poste code="0760060">TRESORERIE BUCHY</poste>
+ <poste code="0190030">TRESORERIE BUGEAT</poste>
+ <poste code="0260310">TRESORERIE DE BUIS-LES-BARONNIES</poste>
+ <poste code="0880050">TRESORERIE BULGNEVILLE</poste>
+ <poste code="0620640">TRESORERIE BULLY-LES-MINES</poste>
+ <poste code="0170260">TRESORERIE BURIE</poste>
+ <poste code="0860290">TRESORERIE POITIERS OPAC</poste>
+ <poste code="0710470">TRESORERIE BUXY-SAINT-GENGOUX-LE-NATIONAL</poste>
+ <poste code="0360060">TRESORERIE BUZANCAIS</poste>
+ <poste code="0080070">TRESORERIE BUZANCY</poste>
+ <poste code="0540300">TRESORERIE DE BACCARAT-BADONVILLER</poste>
+ <poste code="0760530">TRESORERIE BACQUEVILLE-EN-CAUX</poste>
+ <poste code="0650050">TRESORERIE BAGNERES-DE-BIGORRE-CAMPAN</poste>
+ <poste code="0310470">TRESORERIE BAGNERES-DE-LUCHON</poste>
+ <poste code="0921020">TRESORERIE BAGNEUX</poste>
+ <poste code="0930040">TRESORERIE BAGNOLET</poste>
+ <poste code="0300040">TRESORERIE BAGNOLS-SUR-CEZE</poste>
+ <poste code="1010080">TRESORERIE PETIT-BOURG</poste>
+ <poste code="0160070">TRESORERIE BAIGNES-SAINTE-RADEGONDE</poste>
+ <poste code="0594170">TRESORERIE BAILLEUL</poste>
+ <poste code="0350030">TRESORERIE BAIN-DE-BRETAGNE</poste>
+ <poste code="0880010">TRESORERIE BAINS-LES-BAINS</poste>
+ <poste code="0422050">TRESORERIE BALBIGNY</poste>
+ <poste code="0720020">TRESORERIE DE BALLON-MONTBIZOT</poste>
+ <poste code="0310310">TRESORERIE BALMA</poste>
+ <poste code="0310001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE HAUTE GARONNE</poste>
+ <poste code="0310002">ANNEXE PÔLE INTERRÉGIONAL APUREMENT SPL</poste>
+ <poste code="1280000">TRESORERIE AMBASSADE DE FRANCE AU MALI</poste>
+ <poste code="0292020">TRESORERIE BANNALEC</poste>
+ <poste code="0040020">TRESORERIE BANON ET SAINT-ETIENNE</poste>
+ <poste code="0620090">TRESORERIE DE BAPAUME</poste>
+ <poste code="0550000">TRESORERIE GENERALE DE LA MEUSE</poste>
+ <poste code="0550030">TRESORERIE DE BAR-LE-DUC VILLE</poste>
+ <poste code="0550210">TRESORERIE DU PAYS DE REVIGNY-OPAC DE LA MEUSE</poste>
+ <poste code="0550900">PAIERIE DEPARTEMENTALE DE LA MEUSE</poste>
+ <poste code="0100040">TRESORERIE DE BAR-SUR-AUBE</poste>
+ <poste code="0100060">TRESORERIE DE BAR-SUR-SEINE</poste>
+ <poste code="0120240">TRESORERIE DE BARAQUEVILLE</poste>
+ <poste code="0132040">TRESORERIE BARBENTANE</poste>
+ <poste code="0160080">TRESORERIE BARBEZIEUX-SAINT-HILAIRE</poste>
+ <poste code="0040030">TRESORERIE DE BARCELONNETTE</poste>
+ <poste code="0760020">TRESORERIE DE BARENTIN</poste>
+ <poste code="0500250">TRESORERIE BARENTON-LE TEILLEUL</poste>
+ <poste code="0300450">TRESORERIE DE BARJAC</poste>
+ <poste code="0831030">TRESORERIE BARJOLS-TAVERNES</poste>
+ <poste code="0500380">TRESORERIE DE BARNEVILLE-PORTBAIL</poste>
+ <poste code="0670010">TRESORERIE BARR</poste>
+ <poste code="0430030">TRESORERIE BAS-EN-BASSET</poste>
+ <poste code="1030010">TRESORERIE BASSE-POINTE</poste>
+ <poste code="1010000">TRESORERIE GENERALE DE LA GUADELOUPE</poste>
+ <poste code="1010020">TRESORERIE DE BASSE-TERRE</poste>
+ <poste code="1010800">PAIERIE REGIONALE DE LA GUADELOUPE</poste>
+ <poste code="1010900">PAIERIE DEPARTEMENTALE DE LA GUADELOUPE</poste>
+ <poste code="1010130">TRESORERIE DE BASSE-TERRE MUNCIPALE ET HOSPIT.</poste>
+ <poste code="02B0000">TRESORERIE GENERALE DE LA HAUTE-CORSE</poste>
+ <poste code="02B0010">TRESORERIE BASTIA</poste>
+ <poste code="02B0020">TRESORERIE DE BASTIA MUNICIPALE</poste>
+ <poste code="02B0900">PAIERIE DEPARTEMENTALE DE LA HAUTE-CORSE</poste>
+ <poste code="0560200">TRESORERIE BAUD</poste>
+ <poste code="0490320">TRESORERIE BAUGE</poste>
+ <poste code="0180040">TRESORERIE BAUGY-SAVIGNY-EN-SEPTAINE</poste>
+ <poste code="0250020">TRESORERIE BAUME-LES-DAMES</poste>
+ <poste code="0595180">TRESORERIE BAVAY</poste>
+ <poste code="0140050">TRESORERIE BAYEUX-MONCEAUX-EN-BESSIN</poste>
+ <poste code="0640350">TRESORERIE BAYONNE</poste>
+ <poste code="0640360">TRESORERIE BAYONNE MUNICIPALE</poste>
+ <poste code="0640480">TRESORERIE BAYONNE CENTRE HOSPITALIER</poste>
+ <poste code="0330050">TRESORERIE BAZAS</poste>
+ <poste code="0310030">TRESORERIE MONTGISCARD-BAZIEGE</poste>
+ <poste code="0300050">TRESORERIE BEAUCAIRE</poste>
+ <poste code="0950240">TRESORERIE DE BEAUCHAMP-TAVERNY</poste>
+ <poste code="0390050">TRESORERIE DE BEAUFORT</poste>
+ <poste code="0490070">TRESORERIE BEAUFORT-EN-VALLEE</poste>
+ <poste code="0730060">TRESORERIE BEAUFORT</poste>
+ <poste code="0450030">TRESORERIE BEAUGENCY</poste>
+ <poste code="0690470">TRESORERIE BEAUJEU</poste>
+ <poste code="0190230">TRESORERIE BEAULIEU-SUR-DORDOGNE</poste>
+ <poste code="0820020">TRESORERIE BEAUMONT-LAVIT-DE-LOMAGNE</poste>
+ <poste code="0500390">TRESORERIE BEAUMONT-HAGUE</poste>
+ <poste code="0270180">TRESORERIE BEAUMONT-LE-ROGER</poste>
+ <poste code="0950050">TRESORERIE BEAUMONT-SUR-OISE</poste>
+ <poste code="0720040">TRESORERIE BEAUMONT-SUR-SARTHE</poste>
+ <poste code="0210510">TRESORERIE BEAUNE</poste>
+ <poste code="0450310">TRESORERIE DE BEAUNE-LA-ROLANDE</poste>
+ <poste code="0490420">TRESORERIE BEAUPREAU</poste>
+ <poste code="0381010">TRESORERIE BEAUREPAIRE</poste>
+ <poste code="0020320">TRESORERIE BEAURIEUX-ROUCY-CORBENY</poste>
+ <poste code="0550050">TRESORERIE DE BEAUSITE</poste>
+ <poste code="0060010">TRESORERIE BEAUSOLEIL</poste>
+ <poste code="0600000">TRESORERIE GENERALE DE L' OISE</poste>
+ <poste code="0600040">TRESORERIE DE BEAUVAIS VILLE</poste>
+ <poste code="0600050">TRESORERIE DE BEAUVAIS BANLIEUE</poste>
+ <poste code="0600070">TRESORERIE DE BEAUVAIS MUNICIPALE</poste>
+ <poste code="0600900">PAIERIE DEPARTEMENTALE DE L' OISE</poste>
+ <poste code="0600580">TRESORERIE DE BEAUVAIS AMENDES</poste>
+ <poste code="0600001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE L' OISE</poste>
+ <poste code="0850290">TRESORERIE BEAUVOIR-SUR-MER</poste>
+ <poste code="0790050">TRESORERIE BEAUVOIR-SUR-NIORT</poste>
+ <poste code="0350050">TRESORERIE BECHEREL</poste>
+ <poste code="0340340">TRESORERIE DE BEDARIEUX</poste>
+ <poste code="0640060">TRESORERIE BEDOUS</poste>
+ <poste code="0220320">TRESORERIE BEGARD</poste>
+ <poste code="0330060">TRESORERIE BEGLES</poste>
+ <poste code="0110060">TRESORERIE BELCAIRE-RODOME</poste>
+ <poste code="0900000">TRESORERIE GENERALE DU TERRITOIRE-DE-BELFORT</poste>
+ <poste code="0900040">TRESORERIE BELFORT VILLE</poste>
+ <poste code="0900110">TRESORERIE BELFORT TERRITOIRE HABITAT</poste>
+ <poste code="0900120">TRESORERIE DE BELFORT ETS. HOSPITALIERS</poste>
+ <poste code="0900900">PAIERIE DEPARTEMENTALE DU TERRITOIRE-DE-BELFORT</poste>
+ <poste code="0900020">TRESORERIE DE BELFORT</poste>
+ <poste code="0330070">TRESORERIE DE BELIN-BELIET</poste>
+ <poste code="0870030">TRESORERIE DE BELLAC</poste>
+ <poste code="0230210">TRESORERIE DE BELLEGARDE-EN-MARCHE</poste>
+ <poste code="0010020">TRESORERIE BELLEGARDE-SUR-VALSERINE</poste>
+ <poste code="0610070">TRESORERIE BELLEME</poste>
+ <poste code="0760540">TRESORERIE BELLENCOMBRE</poste>
+ <poste code="0030140">TRESORERIE BELLERIVE-SUR-ALLIER</poste>
+ <poste code="0020470">TRESORERIE DE BELLEU-SOISSONS BANLIEUE</poste>
+ <poste code="0690480">TRESORERIE BELLEVILLE</poste>
+ <poste code="0010030">TRESORERIE BELLEY</poste>
+ <poste code="0422010">TRESORERIE BELMONT-DE-LA-LOIRE</poste>
+ <poste code="0120260">TRESORERIE DE RANCE ET ROUGIERS</poste>
+ <poste code="0110070">TRESORERIE BELPECH</poste>
+ <poste code="0240020">TRESORERIE BELVES</poste>
+ <poste code="0110080">TRESORERIE BELVEZE-DU-RAZES</poste>
+ <poste code="0230020">TRESORERIE DE BENEVENT L'ABBAYE-LE GRAND BOURG</poste>
+ <poste code="0670030">TRESORERIE BENFELD</poste>
+ <poste code="0622170">TRESORERIE DE BERCK</poste>
+ <poste code="0240470">TRESORERIE BERGERAC MUNICIPALE ET BANLIEUE</poste>
+ <poste code="0240590">TRESORERIE DE BERGERAC</poste>
+ <poste code="0594010">TRESORERIE BERGUES</poste>
+ <poste code="0595190">TRESORERIE BERLAIMONT</poste>
+ <poste code="1830000">TRESORERIE AMBASSADE DE FRANCE EN ALLEMAGNE</poste>
+ <poste code="0800670">TRESORERIE BERNAVILLE</poste>
+ <poste code="0270190">TRESORERIE DE BERNAY</poste>
+ <poste code="0131050">TRESORERIE BERRE-L'ETANG</poste>
+ <poste code="0250000">TRESORERIE GENERALE DU DOUBS</poste>
+ <poste code="0250007">CENTRE REGIONAL DES PENSIONS DU DOUBS</poste>
+ <poste code="0250008">CENTRE DE FORMATION DEPARTEMENTAL DU DOUBS</poste>
+ <poste code="0250009">DEPARTEMENT INFORMATIQUE DU DOUBS</poste>
+ <poste code="0250030">TRESORERIE BESANCON</poste>
+ <poste code="0250050">TRESORERIE DU GRAND BESANCON</poste>
+ <poste code="0250060">TRESORERIE BESANCON CHRU</poste>
+ <poste code="0250130">TRESORERIE MORRE-ROULANS</poste>
+ <poste code="0250280">TRESORERIE BESANCON ETS HOSP. DPTAUX</poste>
+ <poste code="0250800">PAIERIE REGIONALE DE FRANCHE-COMTE</poste>
+ <poste code="0250900">PAIERIE DEPARTEMENTALE DOUBS</poste>
+ <poste code="0250001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DU DOUBS</poste>
+ <poste code="0250006">PÔLE NATIONAL DE SOUTIEN AU RESEAU DE BESANCON - RJC</poste>
+ <poste code="0250490">TRESORERIE DE L' OPDHLM DU DOUBS-HABITAT 25</poste>
+ <poste code="0630020">TRESORERIE BESSE-ET-SAINT-ANASTAISE</poste>
+ <poste code="0830020">TRESORERIE BESSE-SUR-ISSOLE</poste>
+ <poste code="0300460">TRESORERIE BESSEGES</poste>
+ <poste code="0870040">TRESORERIE DE BESSINES-SUR-GARTEMPE</poste>
+ <poste code="0620600">TRESORERIE BETHUNE</poste>
+ <poste code="0620610">TRESORERIE BETHUNE MUNICIPALE</poste>
+ <poste code="0620620">TRESORERIE BEUVRY</poste>
+ <poste code="0270200">TRESORERIE BEUZEVILLE</poste>
+ <poste code="0190240">TRESORERIE BEYNAT</poste>
+ <poste code="0340350">TRESORERIE BEZIERS</poste>
+ <poste code="0340360">TRESORERIE BEZIERS MUNICIPALE</poste>
+ <poste code="0340370">TRESORERIE DE BEZIERS ETS HOSP</poste>
+ <poste code="0950300">TRESORERIE BEZONS</poste>
+ <poste code="0640370">TRESORERIE BIARRITZ</poste>
+ <poste code="0911030">TRESORERIE BIEVRES</poste>
+ <poste code="0760040">TRESORERIE BIHOREL</poste>
+ <poste code="0630030">TRESORERIE BILLOM-SAINT-DIER-D'AUVERGNE</poste>
+ <poste code="0671010">TRESORERIE BISCHWILLER</poste>
+ <poste code="0571010">TRESORERIE BITCHE</poste>
+ <poste code="0310430">TRESORERIE BLAGNAC</poste>
+ <poste code="0440350">TRESORERIE BLAIN</poste>
+ <poste code="0760030">TRESORERIE BLAINVILLE-CREVON</poste>
+ <poste code="0540330">TRESORERIE DE BAYON-BLAINVILLE-SUR-L'EAU</poste>
+ <poste code="0540340">TRESORERIE DE BLAMONT - CIREY-SUR-VEZOUZE</poste>
+ <poste code="0760550">TRESORERIE DE BLANGY-SUR-BRESLE</poste>
+ <poste code="0330080">TRESORERIE BLANQUEFORT</poste>
+ <poste code="0160090">TRESORERIE BLANZAC-PORCHERESSE</poste>
+ <poste code="0330700">TRESORERIE BLAYE</poste>
+ <poste code="0890070">TRESORERIE BLENEAU-SAINT-FARGEAU</poste>
+ <poste code="0370030">TRESORERIE BLERE</poste>
+ <poste code="0390060">TRESORERIE BLETTERANS</poste>
+ <poste code="0210520">TRESORERIE BLIGNY-SUR-OUCHE</poste>
+ <poste code="0680010">TRESORERIE BLODELSHEIM</poste>
+ <poste code="0410000">TRESORERIE GENERALE DE LOIR-ET-CHER</poste>
+ <poste code="0410030">TRESORERIE BLOIS MUNICIPALE</poste>
+ <poste code="0410360">TRESORERIE OPAC.DE.LOIR.ET.CHER</poste>
+ <poste code="0410900">PAIERIE DEPARTEMENTALE DE LOIR-ET-CHER</poste>
+ <poste code="0410010">TRESORERIE BLOIS VILLE</poste>
+ <poste code="0930000">TRESORERIE GENERALE DE LA SEINE-SAINT-DENIS</poste>
+ <poste code="0930009">DEPARTEMENT INFORMATIQUE DE LA SEINE-SAINT-DENIS</poste>
+ <poste code="0930320">TRESORERIE DE BOBIGNY MUNICIPALE</poste>
+ <poste code="0930900">PAIERIE DEPARTEMENTALE DE LA SEINE-SAINT-DENIS</poste>
+ <poste code="0930001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE LA SEINE SAINT DENIS</poste>
+ <poste code="0740080">TRESORERIE BOEGE</poste>
+ <poste code="0422180">TRESORERIE DE BOEN SUR LIGNON</poste>
+ <poste code="0020520">TRESORERIE BOHAIN-EN-VERMANDOIS</poste>
+ <poste code="0920050">TRESORERIE DE BOIS-COLOMBES</poste>
+ <poste code="0940020">TRESORERIE DE BOISSY-SAINT-LEGER</poste>
+ <poste code="0762020">TRESORERIE BOLBEC</poste>
+ <poste code="0840200">TRESORERIE BOLLENE-MONDRAGON</poste>
+ <poste code="0930060">TRESORERIE DE BONDY</poste>
+ <poste code="0930400">TRESORERIE DE BONDY MUNICIPALE</poste>
+ <poste code="02A0040">TRESORERIE BONIFACIO</poste>
+ <poste code="0230030">TRESORERIE BONNAT-LOURDOUEIX-SAINT-PIERRE</poste>
+ <poste code="0860390">TRESORERIE VOUNEUIL-SUR-VIENNE</poste>
+ <poste code="0280080">TRESORERIE BONNEVAL</poste>
+ <poste code="0740090">TRESORERIE BONNEVILLE</poste>
+ <poste code="0781010">TRESORERIE BONNIERES-SUR-SEINE</poste>
+ <poste code="0330000">TRESORERIE GENERALE DE LA GIRONDE</poste>
+ <poste code="0330007">CENTRE REGIONAL DES PENSIONS DE LA GIRONDE</poste>
+ <poste code="0330008">CENTRE DE FORMATION DEPARTEMENTAL DE LA GIRONDE</poste>
+ <poste code="0330009">DEPARTEMENT INFORMATIQUE DE LA GIRONDE</poste>
+ <poste code="0330170">RECETTE DES FINANCES BORDEAUX MUNICIPALE</poste>
+ <poste code="0330181">TRESORERIE DE BORDEAUX CHU ANNEXE CH PERRENS</poste>
+ <poste code="0330800">PAIERIE REGIONALE D'AQUITAINE</poste>
+ <poste code="0330900">PAIERIE DEPARTEMENTALE DE LA GIRONDE</poste>
+ <poste code="0330001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE LA GIRONDE</poste>
+ <poste code="0330006">PÔLE NATIONAL DE SOUTIEN AU RESEAU DE BORDEAUX</poste>
+ <poste code="0330120">TRESORERIE BORDEAUX AMENDES</poste>
+ <poste code="0330140">TRESORERIE DE BORDEAUX RIVE GAUCHE</poste>
+ <poste code="0330160">TRESORERIE BORDEAUX EST</poste>
+ <poste code="0330171">RECETTE DES FINANCES SERVICE DE LA COMMUNAUTE URBAINE</poste>
+ <poste code="02B0040">TRESORERIE BORGO-CAMPILE</poste>
+ <poste code="0190020">TRESORERIE BORT-LES-ORGUES</poste>
+ <poste code="0440030">TRESORERIE DE BOUAYE</poste>
+ <poste code="0595020">TRESORERIE BOUCHAIN</poste>
+ <poste code="0100070">TRESORERIE DE BOUILLY</poste>
+ <poste code="0571020">TRESORERIE BOULAY</poste>
+ <poste code="0920060">TRESORERIE BOULOGNE-BILLANCOURT</poste>
+ <poste code="0920070">TRESORERIE BOULOGNE-BILLANCOURT MUNICIPALE</poste>
+ <poste code="0310480">TRESORERIE BOULOGNE-SUR-GESSE-BLAJAN</poste>
+ <poste code="0622000">RECETTE DES FINANCES BOULOGNE-SUR-MER</poste>
+ <poste code="0622020">TRESORERIE DE BOULOGNE-SUR-MER</poste>
+ <poste code="0622030">TRESORERIE BOULOGNE-SUR-MER MUNICIPALE</poste>
+ <poste code="0622040">TRESORERIE BOULOGNE-SUR-MER CTRE HOSP</poste>
+ <poste code="0720070">TRESORERIE BOULOIRE-PARIGNE</poste>
+ <poste code="0030010">TRESORERIE DE BOURBON-L'ARCHAMBAULT</poste>
+ <poste code="0710020">TRESORERIE BOURBON-LANCY</poste>
+ <poste code="0520300">TRESORERIE BOURBONNE-LES-BAINS</poste>
+ <poste code="0594030">TRESORERIE BOURBOURG</poste>
+ <poste code="0270370">TRESORERIE DE ROUTOT-BOURG-ACHARD</poste>
+ <poste code="0420010">TRESORERIE DE BOURG-ARGENTAL</poste>
+ <poste code="0010000">TRESORERIE GENERALE DE L' AIN</poste>
+ <poste code="0010050">TRESORERIE DE BOURG-EN-BRESSE</poste>
+ <poste code="0010060">TRESORERIE BOURG-EN-BRESSE MUNICIPALE</poste>
+ <poste code="0010900">PAIERIE DEPARTEMENTALE DE L' AIN</poste>
+ <poste code="0010001">CELLULE CONTRÔLE REDEVANCE AUDIOVISUELLE DE L' AIN</poste>
+ <poste code="0630040">TRESORERIE DE BOURG-LASTIC-HERMENT</poste>
+ <poste code="0660050">TRESORERIE BOURG-MADAME</poste>
+ <poste code="0070080">TRESORERIE BOURG-SAINT-ANDEOL</poste>
+ <poste code="0730070">TRESORERIE DE BOURG-SAINT-MAURICE</poste>
+ <poste code="0330710">TRESORERIE BOURG SUR GIRONDE</poste>
+ <poste code="0230040">TRESORERIE DE BOURGANEUF - PONTARION</poste>
+ <poste code="0180050">TRESORERIE BOURGES</poste>
+ <poste code="0180900">PAIERIE DEPARTEMENTALE DU CHER</poste>
+ <poste code="0180060">TRESORERIE BOURGES MUNICIPALE</poste>
+ <poste code="0180070">TRESORERIE DE BOURGES CH JACQUES COEUR</poste>
+ <poste code="0180410">TRESORERIE BOURGES H.L.M</poste>
+ <poste code="0180420">TRESORERIE DE BOURGES ETS SPECIALISES</poste>
+ <poste code="0180000">TRESORERIE GENERALE DU CHER</poste>
+ <poste code="0381100">TRESORERIE BOURGOIN-JALLIEU COLLECTIVITES</poste>
+ <poste code="0381110">TRESORERIE BOURGOIN-JALLIEU</poste>
+ <poste code="0270210">TRESORERIE DE BOURGTHEROULDE-INFREVILLE</poste>
+ <poste code="0370050">TRESORERIE BOURGUEIL</poste>
+ <poste code="0520040">TRESORERIE BOURMONT</poste>
+ <poste code="0230050">TRESORERIE BOUSSAC</poste>
+ <poste code="0671020">TRESORERIE BOUXWILLER</poste>
+ <poste code="0571030">TRESORERIE BOUZONVILLE</poste>
+ <poste code="0730080">TRESORERIE BOZEL</poste>
+ <poste code="0120020">TRESORERIE BOZOULS</poste>
+ <poste code="0410040">TRESORERIE BRACIEUX</poste>
+ <poste code="0110400">TRESORERIE DE VILLASAVARY</poste>
+ <poste code="0240030">TRESORERIE BRANTOME</poste>
+ <poste code="0810190">TRESORERIE BRASSAC</poste>
+ <poste code="0770300">TRESORERIE BRAY-SUR-SEINE</poste>
+ <poste code="0800510">TRESORERIE BRAY-SUR-SOMME</poste>
+ <poste code="0500260">TRESORERIE BRECEY-SAINT-POIS</poste>
+ <poste code="0500010">TRESORERIE BREHAL-GAVRAY</poste>
+ <poste code="0060020">TRESORERIE DE BREIL-SUR-ROYA</poste>
+ <poste code="0600080">TRESORERIE BRESLES</poste>
+ <poste code="0790070">TRESORERIE BRESSUIRE</poste>
+ <poste code="0290200">TRESORERIE BREST BELLEVUE</poste>
+ <poste code="0290000">TRESORERIE GENERALE DU FINISTERE</poste>
+ <poste code="0290030">TRESORERIE DE BREST QUATRE-MOULINS</poste>
+ <poste code="0290040">TRESORERIE BREST MUNICIPALE ET COM.URB</poste>
+ <poste code="0290041">TRESORERIE ANNEXE OPAC</poste>
+ <poste code="0290050">TRESORERIE BREST CHU</poste>
+ <poste code="0290900">PAIERIE DEPARTEMENTALE D' FINISTERE</poste>
+ <poste code="0290001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DU FINISTERE</poste>
+ <poste code="0460020">TRESORERIE DE BRETENOUX-VAYRAC</poste>
+ <poste code="0600090">TRESORERIE DE BRETEUIL-CREVECOEUR-LE-GRAND</poste>
+ <poste code="0270010">TRESORERIE BRETEUIL-SUR-ITON</poste>
+ <poste code="0140090">TRESORERIE BRETTEVILLE-SUR-LAIZE</poste>
+ <poste code="0280330">TRESORERIE BREZOLLES</poste>
+ <poste code="0050030">TRESORERIE BRIANCON</poste>
+ <poste code="0450320">TRESORERIE DE BRIARE</poste>
+ <poste code="0500400">TRESORERIE BRICQUEBEC</poste>
+ <poste code="0770010">TRESORERIE BRIE-COMTE-ROBERT</poste>
+ <poste code="0100080">TRESORERIE DE BRIENNE-LE-CHATEAU</poste>
+ <poste code="0890080">TRESORERIE DE BRIENON-SUR-ARMANCON</poste>
+ <poste code="0540400">TRESORERIE DE BRIEY</poste>
+ <poste code="0830030">TRESORERIE BRIGNOLES</poste>
+ <poste code="0270220">TRESORERIE BRIONNE</poste>
+ <poste code="0430050">TRESORERIE BRIOUDE</poste>
+ <poste code="0790080">TRESORERIE BRIOUX-SUR-BOUTONNE</poste>
+ <poste code="0490080">TRESORERIE BRISSAC-QUINCE</poste>
+ <poste code="0190260">TRESORERIE BRIVE MUNICIPALE</poste>
+ <poste code="0190330">TRESORERIE BRIVE VILLE</poste>
+ <poste code="0690210">TRESORERIE LE VINATIER CTRE HOSP. SPEC</poste>
+ <poste code="0690430">TRESORERIE DE BRON</poste>
+ <poste code="0220230">TRESORERIE BROONS</poste>
+ <poste code="0280100">TRESORERIE BROU</poste>
+ <poste code="0620630">TRESORERIE BRUAY-LA BUISSIERE</poste>
+ <poste code="0670060">TRESORERIE DE BRUMATH</poste>
+ <poste code="0910050">TRESORERIE BRUNOY</poste>
+ <poste code="0880040">TRESORERIE DE BRUYERES</poste>
+ <poste code="0760060">TRESORERIE BUCHY</poste>
+ <poste code="0190030">TRESORERIE BUGEAT</poste>
+ <poste code="0260310">TRESORERIE DE BUIS-LES-BARONNIES</poste>
+ <poste code="0880050">TRESORERIE BULGNEVILLE</poste>
+ <poste code="0620640">TRESORERIE BULLY-LES-MINES</poste>
+ <poste code="0170260">TRESORERIE BURIE</poste>
+ <poste code="0860290">TRESORERIE POITIERS OPAC</poste>
+ <poste code="0710470">TRESORERIE BUXY-SAINT-GENGOUX-LE-NATIONAL</poste>
+ <poste code="0360060">TRESORERIE BUZANCAIS</poste>
+ <poste code="0080070">TRESORERIE BUZANCY</poste>
+ <poste code="0660250">TRESORERIE DE CABESTANY</poste>
+ <poste code="0660900">PAIERIE DEPARTEMENTALE DES PYRENEES-ORIENTALES</poste>
+ <poste code="0140110">TRESORERIE CABOURG</poste>
+ <poste code="0940030">TRESORERIE CACHAN</poste>
+ <poste code="0840090">TRESORERIE CADENET</poste>
+ <poste code="0330220">TRESORERIE DE CADILLAC</poste>
+ <poste code="0140000">TRESORERIE GENERALE DU CALVADOS</poste>
+ <poste code="0140007">CENTRE REGIONAL DES PENSIONS DU CALVADOS</poste>
+ <poste code="0140008">CENTRE DE FORMATION DEPARTEMENTAL DU CALVADOS</poste>
+ <poste code="0140009">DEPARTEMENT INFORMATIQUE DU CALVADOS</poste>
+ <poste code="0140120">TRESORERIE DE CAEN BASSIN SAINT-PIERRE</poste>
+ <poste code="0140130">TRESORERIE CAEN MUNICIPALE</poste>
+ <poste code="0140140">TRESORERIE CAEN CHU</poste>
+ <poste code="0140440">TRESORERIE DU CALVADOS</poste>
+ <poste code="0140450">TRESORERIE CAEN AMENDES</poste>
+ <poste code="0140900">PAIERIE DEPARTEMENTALE DU CALVADOS</poste>
+ <poste code="0140001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DU CALVADOS</poste>
+ <poste code="0140100">TRESORERIE CAEN BANLIEUE OUEST</poste>
+ <poste code="0140800">PAIERIE REGIONALE DE BASSE-NORMANDIE</poste>
+ <poste code="0061040">TRESORERIE CAGNES-SUR-MER</poste>
+ <poste code="0460000">TRESORERIE GENERALE DU LOT</poste>
+ <poste code="0460900">PAIERIE DEPARTEMENTALE DU LOT</poste>
+ <poste code="0460030">TRESORERIE DE CAHORS</poste>
+ <poste code="02B0060">TRESORERIE CALACUCCIA</poste>
+ <poste code="0622080">TRESORERIE CALAIS MUNICIPALE</poste>
+ <poste code="0622160">TRESORERIE CALAIS CTRE. HOSPIT. ET BANLIEUE</poste>
+ <poste code="0622050">TRESORERIE DE CALAIS</poste>
+ <poste code="0220330">TRESORERIE CALLAC</poste>
+ <poste code="0690020">TRESORERIE DE CALUIRE-ET-CUIRE</poste>
+ <poste code="02B0070">TRESORERIE CALVI</poste>
+ <poste code="0330230">TRESORERIE CAMBES</poste>
+ <poste code="0640380">TRESORERIE CAMBO-LES-BAINS</poste>
+ <poste code="0593120">TRESORERIE CAMBRAI MUNICIPALE ET HOSP</poste>
+ <poste code="0593170">TRESORERIE CAMBRAI BANLIEUE EST</poste>
+ <poste code="0140480">TRESORERIE DE CAMBREMER</poste>
+ <poste code="0622180">TRESORERIE CAMPAGNE-LES-HESDIN</poste>
+ <poste code="0350410">TRESORERIE CANCALE</poste>
+ <poste code="0490090">TRESORERIE CANDE</poste>
+ <poste code="0061050">TRESORERIE CANNES</poste>
+ <poste code="0061070">TRESORERIE CANNES MUNICIPALE</poste>
+ <poste code="0061080">TRESORERIE CANNES CENTRE HOSPITALIER</poste>
+ <poste code="0760680">TRESORERIE CANY-BARVILLE</poste>
+ <poste code="0120300">TRESORERIE CAPDENAC-GARE</poste>
+ <poste code="0110100">TRESORERIE CAPENDU</poste>
+ <poste code="0340380">TRESORERIE DE CAPESTANG</poste>
+ <poste code="1010030">TRESORERIE DE CAPESTERRE</poste>
+ <poste code="0310050">TRESORERIE CARAMAN-LANTA</poste>
+ <poste code="0310560">TRESORERIE DU VOLVESTRE</poste>
+ <poste code="0110000">TRESORERIE GENERALE DE L' AUDE</poste>
+ <poste code="0110410">TRESORERIE CARCASSONNE ETAB HOSPITALIERS</poste>
+ <poste code="0110110">TRESORERIE DE CARCASSONNE VILLE</poste>
+ <poste code="0110130">TRESORERIE CARCASSONNE AGGLOMERATION</poste>
+ <poste code="0110900">PAIERIE DEPARTEMENTALE DE L' AUDE</poste>
+ <poste code="0831040">TRESORERIE COTIGNAC-CARCES</poste>
+ <poste code="0500030">TRESORERIE CARENTAN</poste>
+ <poste code="0290210">TRESORERIE DE CARHAIX-PLOUGUER</poste>
+ <poste code="0080080">TRESORERIE DE CARIGNAN</poste>
+ <poste code="0810050">TRESORERIE CARMAUX-PAMPELONNE</poste>
+ <poste code="0560270">TRESORERIE CARNAC</poste>
+ <poste code="0840210">TRESORERIE DE CARPENTRAS</poste>
+ <poste code="0840290">TRESORERIE DE CARPENTRAS ETS. HOSPITALIERS</poste>
+ <poste code="0440340">TRESORERIE DE CARQUEFOU</poste>
+ <poste code="0610090">TRESORERIE CARROUGES</poste>
+ <poste code="0620660">TRESORERIE CARVIN</poste>
+ <poste code="0594050">TRESORERIE DE CASSEL</poste>
+ <poste code="0310070">TRESORERIE CASTANET-TOLOSAN</poste>
+ <poste code="0470160">TRESORERIE CASTELJALOUX</poste>
+ <poste code="0040050">TRESORERIE DE CASTELLANE</poste>
+ <poste code="0470170">TRESORERIE CASTELMORON-SUR-LOT</poste>
+ <poste code="0330240">TRESORERIE DE CASTELNAU-DE-MEDOC</poste>
+ <poste code="0340020">TRESORERIE DE CASTELNAU-LE-LEZ</poste>
+ <poste code="0650110">TRESORERIE DE CASTELNAU-GALAN</poste>
+ <poste code="0460050">TRESORERIE CASTELNAU-MONTRATIER</poste>
+ <poste code="0110140">TRESORERIE CASTELNAUDARY</poste>
+ <poste code="0820040">TRESORERIE CASTELSARRASIN</poste>
+ <poste code="0400210">TRESORERIE CASTETS</poste>
+ <poste code="0090060">TRESORERIE CASTILLON-EN-COUSERANS</poste>
+ <poste code="0330630">TRESORERIE CASTILLON-LA-BATAILLE</poste>
+ <poste code="0470180">TRESORERIE DE CASTILLONNES</poste>
+ <poste code="0810200">TRESORERIE CASTRES</poste>
+ <poste code="0810210">TRESORERIE CASTRES VILLE</poste>
+ <poste code="0330250">TRESORERIE CASTRES-GIRONDE</poste>
+ <poste code="0340030">TRESORERIE DE CASTRIES</poste>
+ <poste code="0460060">TRESORERIE CATUS</poste>
+ <poste code="0760080">TRESORERIE CAUDEBEC-EN-CAUX</poste>
+ <poste code="0593140">TRESORERIE DE CAUDRY</poste>
+ <poste code="0220240">TRESORERIE CAULNES</poste>
+ <poste code="0820050">TRESORERIE CAUSSADE-CAYLUS</poste>
+ <poste code="0840100">TRESORERIE CAVAILLON</poste>
+ <poste code="1020000">TRESORERIE GENERALE DE LA GUYANE</poste>
+ <poste code="1020020">TRESORERIE CAYENNE AMANDIERS</poste>
+ <poste code="1020800">PAIERIE REGIONALE DE LA GUYANE</poste>
+ <poste code="1020900">PAIERIE DEPARTEMENTALE DE LA GUYANE</poste>
+ <poste code="1020010">TRESORERIE DE CAYENNE ILE</poste>
+ <poste code="0430060">TRESORERIE CAYRES</poste>
+ <poste code="0460070">TRESORERIE CAZALS-SALVIAC</poste>
+ <poste code="0320060">TRESORERIE CAZAUBON</poste>
+ <poste code="0310570">TRESORERIE CAZERES-MARTRES-TOLOSANE</poste>
+ <poste code="0790090">TRESORERIE CELLES-SUR-BELLE</poste>
+ <poste code="0330290">TRESORERIE CENON</poste>
+ <poste code="0720100">TRESORERIE DE CERANS-MANSIGNE</poste>
+ <poste code="0660060">TRESORERIE CERET</poste>
+ <poste code="0950000">TRESORERIE GENERALE DU VAL-D'OISE</poste>
+ <poste code="0950008">CENTRE DE FORMATION DEPARTEMENTAL DU VAL-D'OISE</poste>
+ <poste code="0950200">TRESORERIE DE CERGY</poste>
+ <poste code="0950900">PAIERIE DEPARTEMENTALE DU VAL-D'OISE</poste>
+ <poste code="0950330">TRESORERIE DE CERGY COLLECTIVITES</poste>
+ <poste code="0950350">TRESORERIE VAL D'OISE AMENDES</poste>
+ <poste code="0950001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DU VAL D'OISE</poste>
+ <poste code="0030150">TRESORERIE CERILLY-AINAY-LE-CHATEAU</poste>
+ <poste code="0790100">TRESORERIE CERIZAY</poste>
+ <poste code="0680250">TRESORERIE CERNAY</poste>
+ <poste code="02B0210">TRESORERIE SAN-NICOLAO</poste>
+ <poste code="0350060">TRESORERIE DE RENNES BANLIEUE EST</poste>
+ <poste code="0160110">TRESORERIE CHABANAIS</poste>
+ <poste code="0260050">TRESORERIE CHABEUIL</poste>
+ <poste code="0890090">TRESORERIE CHABLIS</poste>
+ <poste code="0710480">TRESORERIE CHAGNY-SAINT-LEGER-SUR-DHEUNE</poste>
+ <poste code="0530060">TRESORERIE CHAILLAND-JUVIGNE</poste>
+ <poste code="0850190">TRESORERIE DE CHAILLE-LES-MARAIS</poste>
+ <poste code="0110160">TRESORERIE CHALABRE</poste>
+ <poste code="0160120">TRESORERIE CHALAIS</poste>
+ <poste code="0520310">TRESORERIE DE CHALINDREY</poste>
+ <poste code="0850300">TRESORERIE CHALLANS-PALLUAU</poste>
+ <poste code="0730310">TRESORERIE DE CHALLES-LES-EAUX</poste>
+ <poste code="0710500">TRESORERIE CHALON-SUR-SAONE MUNICIPALE</poste>
+ <poste code="0710570">TRESORERIE CHALON-SUR-SAONE VILLE</poste>
+ <poste code="0490100">TRESORERIE CHALONNES-SUR-LOIRE</poste>
+ <poste code="0510040">TRESORERIE DE CHALONS-EN-CHAMPAGNE MUNICIPALE</poste>
+ <poste code="0510800">PAIERIE REGIONALE DE CHAMPAGNE-ARDENNE</poste>
+ <poste code="0510000">TRESORERIE GENERALE DE LA MARNE</poste>
+ <poste code="0510007">CENTRE REGIONAL DES PENSIONS DE LA MARNE</poste>
+ <poste code="0510008">CENTRE DE FORMATION DEPARTEMENTAL DE LA MARNE</poste>
+ <poste code="0510009">DEPARTEMENT INFORMATIQUE DE LA MARNE</poste>
+ <poste code="0510030">TRESORERIE DE CHALONS-EN-CHAMPAGNE</poste>
+ <poste code="0510060">TRESORERIE DE CHALONS-EN-CHAMPAGNE ETS HOSP</poste>
+ <poste code="0510080">TRESORERIE CHALONS - BANLIEUE SUD</poste>
+ <poste code="0510140">TRESORERIE CHALONS - BANLIEUE NORD</poste>
+ <poste code="0510290">TRESORERIE CHALONS-EN-CHAMPAGNE HLM</poste>
+ <poste code="0510900">PAIERIE DEPARTEMENTALE DE LA MARNE</poste>
+ <poste code="0870050">TRESORERIE CHALUS-DOURNAZAC</poste>
+ <poste code="0630800">PAIERIE REGIONALE D'AUVERGNE</poste>
+ <poste code="0190040">TRESORERIE CHAMBERET</poste>
+ <poste code="0730000">TRESORERIE GENERALE DE LA SAVOIE</poste>
+ <poste code="0730090">TRESORERIE CHAMBERY</poste>
+ <poste code="0730100">TRESORERIE DE CHAMBERY MUNICIPALE</poste>
+ <poste code="0730370">TRESORERIE CHAMBERY ETS HOSP.</poste>
+ <poste code="0730380">TRESORERIE DE L' OPAC DE LA SAVOIE</poste>
+ <poste code="0730900">PAIERIE DEPARTEMENTALE DE LA SAVOIE</poste>
+ <poste code="0600330">TRESORERIE CHAMBLY</poste>
+ <poste code="0230220">TRESORERIE DE CHAMBON-SUR-VOUEIZE</poste>
+ <poste code="0740120">TRESORERIE CHAMONIX-MONT-BLANC</poste>
+ <poste code="0730120">TRESORERIE DE CHAMOUX-SUR-GELON</poste>
+ <poste code="0160130">TRESORERIE CHAMPAGNE-MOUTON</poste>
+ <poste code="0700040">TRESORERIE CHAMPAGNEY</poste>
+ <poste code="0390080">TRESORERIE CHAMPAGNOLE</poste>
+ <poste code="0630060">TRESORERIE CHAMPEIX</poste>
+ <poste code="0941010">TRESORERIE DE CHAMPIGNY-SUR-MARNE</poste>
+ <poste code="0490430">TRESORERIE CHAMPTOCEAUX</poste>
+ <poste code="0600340">TRESORERIE CHANTILLY</poste>
+ <poste code="0850050">TRESORERIE CHANTONNAY</poste>
+ <poste code="0100090">TRESORERIE DE CHAOURCE</poste>
+ <poste code="0690800">PAIERIE REGIONALE DE RHONE-ALPES</poste>
+ <poste code="0940350">TRESORERIE VAL-DE-MARNE AMENDES</poste>
+ <poste code="0940050">TRESORERIE CHARENTON-LE-PONT</poste>
+ <poste code="0080000">TRESORERIE GENERALE DES ARDENNES</poste>
+ <poste code="0080090">TRESORERIE DE CHARLEVILLE COURS BRIAND</poste>
+ <poste code="0080100">TRESORERIE DE CHARLEVILLE-MEZIERES BOURBON</poste>
+ <poste code="0080110">TRESORERIE CHARLEVILLE-MEZIERES ETS HOSP</poste>
+ <poste code="0080900">PAIERIE DEPARTEMENTALE DES ARDENNES</poste>
+ <poste code="0422020">TRESORERIE CHARLIEU-POUILLY</poste>
+ <poste code="0020390">TRESORERIE DE CHARLY-SUR-MARNE</poste>
+ <poste code="0880060">TRESORERIE CHARMES-BRANTIGNY</poste>
+ <poste code="0890110">TRESORERIE CHARNY</poste>
+ <poste code="0710040">TRESORERIE CHAROLLES-ST-BONNET-DE-JOUX</poste>
+ <poste code="0280000">TRESORERIE GENERALE D'EURE-ET-LOIR</poste>
+ <poste code="0280120">TRESORERIE CHARTRES-VILLE</poste>
+ <poste code="0280140">TRESORERIE CHARTRES MUNICIPALE</poste>
+ <poste code="0280001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE L' EURE ET LOIR</poste>
+ <poste code="0350070">TRESORERIE DE CHARTRES-DE-BRETAGNE</poste>
+ <poste code="0160140">TRESORERIE DE CHASSENEUIL-SUR-BONNIEURE</poste>
+ <poste code="0580030">TRESORERIE CHATEAU-CHINON</poste>
+ <poste code="0720120">TRESORERIE CHATEAU-DU-LOIR</poste>
+ <poste code="0530070">TRESORERIE CHATEAU-GONTIER</poste>
+ <poste code="0370080">TRESORERIE CHATEAU-LA-VALLIERE</poste>
+ <poste code="0770320">TRESORERIE CHATEAU-LANDON-BEAUMONT-DU-GAT</poste>
+ <poste code="0450330">TRESORERIE CHATEAU-RENARD</poste>
+ <poste code="0370090">TRESORERIE CHATEAU-RENAULT</poste>
+ <poste code="0570100">TRESORERIE CHATEAU-SALINS</poste>
+ <poste code="0020400">TRESORERIE DE CHATEAU-THIERRY-ET-BANLIEUE</poste>
+ <poste code="0050040">TRESORERIE CHATEAU-VILLE-VIEILLE</poste>
+ <poste code="0440050">TRESORERIE DE CHATEAUBRIANT</poste>
+ <poste code="0280150">TRESORERIE CHATEAUDUN</poste>
+ <poste code="0350090">TRESORERIE CHATEAUGIRON</poste>
+ <poste code="0290060">TRESORERIE CHATEAULIN</poste>
+ <poste code="0180110">TRESORERIE CHATEAUMEILLANT-CULAN</poste>
+ <poste code="0290070">TRESORERIE CHATEAUNEUF-DU-FAOU</poste>
+ <poste code="0280340">TRESORERIE CHATEAUNEUF-EN-THYMERAIS</poste>
+ <poste code="0350420">TRESORERIE CHATEAUNEUF-D'ILLE-ET-VILAINE</poste>
+ <poste code="0870060">TRESORERIE CHATEAUNEUF-LA-FORET</poste>
+ <poste code="0160160">TRESORERIE CHATEAUNEUF-SUR-CHARENTE</poste>
+ <poste code="0180120">TRESORERIE DE CHATEAUNEUF-SUR-CHER</poste>
+ <poste code="0450060">TRESORERIE CHATEAUNEUF-SUR-LOIRE</poste>
+ <poste code="0490110">TRESORERIE CHATEAUNEUF-SUR-SARTHE</poste>
+ <poste code="0132050">TRESORERIE CHATEAURENARD</poste>
+ <poste code="0360000">TRESORERIE GENERALE DE L' INDRE</poste>
+ <poste code="0360100">TRESORERIE CHATEAUROUX MUNICIPALE</poste>
+ <poste code="0360900">PAIERIE DEPARTEMENTALE DE L'INDRE</poste>
+ <poste code="0360080">TRESORERIE CHATEAUROUX VILLE</poste>
+ <poste code="0520070">TRESORERIE CHATEAUVILLAIN</poste>
+ <poste code="0880080">TRESORERIE CHATEL-SUR-MOSELLE</poste>
+ <poste code="0220440">TRESORERIE CHATELAUDREN</poste>
+ <poste code="0860300">TRESORERIE DES COLLECTIVITES DU CHATELLERAUDAIS</poste>
+ <poste code="0860370">TRESORERIE DE CHATELLERAULT</poste>
+ <poste code="9800000">TRESORERIE GENERALE DES CREANCES SPECIALES DU TRESOR</poste>
+ <poste code="9800006">PÔLE NATIONAL D' ASSISTANCE RECOUVT CONTENTIEUX</poste>
+ <poste code="0230060">TRESORERIE CHATELUS-MALVALEIX</poste>
+ <poste code="0921030">TRESORERIE CHATENAY-MALABRY</poste>
+ <poste code="0880090">TRESORERIE DE CHATENOIS</poste>
+ <poste code="0921040">TRESORERIE CHATILLON</poste>
+ <poste code="0450340">TRESORERIE CHATILLON-COLIGNY</poste>
+ <poste code="0580050">TRESORERIE CHATILLON-EN-BAZOIS</poste>
+ <poste code="0260080">TRESORERIE CHATILLON-LUS-LA-CROIX-HAUTE</poste>
+ <poste code="0010100">TRESORERIE CHATILLON-SUR-CHALARONNE</poste>
+ <poste code="0360110">TRESORERIE CHATILLON-SUR-INDRE-CLION</poste>
+ <poste code="0210090">TRESORERIE CHATILLON-SUR-SEINE</poste>
+ <poste code="0780040">TRESORERIE CHATOU</poste>
+ <poste code="0150070">TRESORERIE CHAUDES-AIGUES-PIERREFORT</poste>
+ <poste code="0710050">TRESORERIE CHAUFFAILLES</poste>
+ <poste code="0800520">TRESORERIE CHAULNES</poste>
+ <poste code="0520000">TRESORERIE GENERALE DE LA HAUTE-MARNE</poste>
+ <poste code="0520080">TRESORERIE CHAUMONT</poste>
+ <poste code="0520900">PAIERIE DEPARTEMENTALE DE LA HAUTE-MARNE</poste>
+ <poste code="0600110">TRESORERIE DE CHAUMONT-EN-VEXIN</poste>
+ <poste code="0020330">TRESORERIE CHAUNY</poste>
+ <poste code="0390290">TRESORERIE CHAUSSIN-LE DESCHAUX</poste>
+ <poste code="0860040">TRESORERIE CHAUVIGNY</poste>
+ <poste code="0690500">TRESORERIE DE CHAZAY-D'AZERGUES</poste>
+ <poste code="0420210">TRESORERIE CHAZELLES-SUR-LYON</poste>
+ <poste code="0790140">TRESORERIE CHEF-BOUTONNE</poste>
+ <poste code="0772030">TRESORERIE DE CHELLES</poste>
+ <poste code="0490440">TRESORERIE CHEMILLE</poste>
+ <poste code="0230230">TRESORERIE CHENERAILLES</poste>
+ <poste code="0941030">TRESORERIE DE CHENNEVIERES-SUR-MARNE</poste>
+ <poste code="0210480">TRESORERIE CHENOVE</poste>
+ <poste code="0500410">TRESORERIE CHERBOURG</poste>
+ <poste code="0500420">TRESORERIE CHERBOURG MUNICIPALE</poste>
+ <poste code="0890480">TRESORERIE CHEROY-DOMATS</poste>
+ <poste code="0520110">TRESORERIE CHEVILLON</poste>
+ <poste code="0780050">TRESORERIE CHEVREUSE</poste>
+ <poste code="0911040">TRESORERIE CHILLY-MAZARIN</poste>
+ <poste code="0370110">TRESORERIE CHINON</poste>
+ <poste code="0940060">TRESORERIE DE CHOISY-LE-ROI</poste>
+ <poste code="0490450">TRESORERIE CHOLET MUNICIPALE ET VEZINS</poste>
+ <poste code="0490500">TRESORERIE DE CHOLET</poste>
+ <poste code="0860050">TRESORERIE CIVRAY</poste>
+ <poste code="0390090">TRESORERIE CLAIRVAUX-LES-LACS</poste>
+ <poste code="0921050">TRESORERIE DE CLAMART</poste>
+ <poste code="0580060">TRESORERIE CLAMECY</poste>
+ <poste code="0593150">TRESORERIE DE CLARY</poste>
+ <poste code="0772040">TRESORERIE CLAYE-SOUILLY</poste>
+ <poste code="0760100">TRESORERIE CLERES</poste>
+ <poste code="0600120">TRESORERIE CLERMONT</poste>
+ <poste code="0600130">TRESORERIE CLERMONT CHSI</poste>
+ <poste code="0550320">TRESORERIE CLERMONT-EN-ARGONNE</poste>
+ <poste code="0630100">TRESORERIE DE CLERMONT-FERRAND BANLIEUE</poste>
+ <poste code="0630110">TRESORERIE DE CLERMONT-FERRAND MUNICIPALE</poste>
+ <poste code="0630000">TRESORERIE GENERALE DU PUY-DE-DOME</poste>
+ <poste code="0630007">CENTRE REGIONAL DES PENSIONS DU PUY-DE-DOME</poste>
+ <poste code="0630008">CENTRE DE FORMATION DEPARTEMENTAL DU PUY-DE-DOME</poste>
+ <poste code="0630009">DEPARTEMENT INFORMATIQUE DU PUY-DE-DOME</poste>
+ <poste code="0630070">TRESORERIE DE CLERMONT-FERRAND 1ERE DIVISION</poste>
+ <poste code="0630120">TRESORERIE CLERMONT-FERRAND CHU</poste>
+ <poste code="0630340">TRESORERIE CLERMONT-FERRAND OPAC</poste>
+ <poste code="0630900">PAIERIE DEPARTEMENTALE DU PUY-DE-DOME</poste>
+ <poste code="0630001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DU PUY DE DÔME</poste>
+ <poste code="0630080">TRESORERIE CLERMONT-FERRAND 2EME DIVISION</poste>
+ <poste code="0340070">TRESORERIE CLERMONT-L'HERAULT</poste>
+ <poste code="0250360">TRESORERIE DE CLERVAL</poste>
+ <poste code="0920110">TRESORERIE CLICHY</poste>
+ <poste code="0920120">TRESORERIE CLICHY MUNICIPALE</poste>
+ <poste code="0440060">TRESORERIE CLISSON</poste>
+ <poste code="0280160">TRESORERIE CLOYES-COURTALAIN</poste>
+ <poste code="0710070">TRESORERIE CLUNY-SALORNAY</poste>
+ <poste code="0740130">TRESORERIE CLUSES</poste>
+ <poste code="0160170">TRESORERIE COGNAC</poste>
+ <poste code="0160180">TRESORERIE COGNAC MUNICIPALE</poste>
+ <poste code="0010110">TRESORERIE COLIGNY</poste>
+ <poste code="0220030">TRESORERIE COLLINEE</poste>
+ <poste code="0680230">TRESORERIE WINTZENHEIM</poste>
+ <poste code="0680900">PAIERIE DEPARTEMENTALE DU HAUT-RHIN</poste>
+ <poste code="0680000">TRESORERIE GENERALE DU HAUT-RHIN</poste>
+ <poste code="0680020">TRESORERIE DE COLMAR</poste>
+ <poste code="0680040">TRESORERIE COLMAR MUNICIPALE</poste>
+ <poste code="0680050">TRESORERIE ETS HOSP. PUBLICS DE COLMAR</poste>
+ <poste code="0680300">TRESORERIE HAUT RHIN AMENDES</poste>
+ <poste code="0040060">TRESORERIE COLMARS</poste>
+ <poste code="0920140">TRESORERIE DE COLOMBES MUNICIPALE</poste>
+ <poste code="0920130">TRESORERIE COLOMBES</poste>
+ <poste code="0540020">TRESORERIE DE COLOMBEY-LES-BELLES</poste>
+ <poste code="0310410">TRESORERIE COLOMIERS-LEGUEVIN</poste>
+ <poste code="0700080">TRESORERIE COMBEAUFONTAINE</poste>
+ <poste code="0350430">TRESORERIE COMBOURG</poste>
+ <poste code="0630360">TRESORERIE COMBRONDE</poste>
+ <poste code="0590080">TRESORERIE COMINES</poste>
+ <poste code="0030160">TRESORERIE DE COMMENTRY</poste>
+ <poste code="0550060">TRESORERIE COMMERCY</poste>
+ <poste code="0600570">TRESORERIE COMPIEGNE</poste>
+ <poste code="0600470">TRESORERIE COMPIEGNE MUNICIPALE</poste>
+ <poste code="0831050">TRESORERIE COMPS-SUR-ARTUBY</poste>
+ <poste code="0292030">TRESORERIE CONCARNEAU</poste>
+ <poste code="0270030">TRESORERIE CONCHES-EN-OUCHE</poste>
+ <poste code="0150080">TRESORERIE CONDAT</poste>
+ <poste code="0020420">TRESORERIE CONDE-EN-BRIE</poste>
+ <poste code="0595030">TRESORERIE CONDE-SUR-L'ESCAUT</poste>
+ <poste code="0140170">TRESORERIE CONDE-SUR-NOIREAU</poste>
+ <poste code="0320080">TRESORERIE CONDOM</poste>
+ <poste code="0690040">TRESORERIE CONDRIEU</poste>
+ <poste code="0781020">TRESORERIE CONFLANS-SAINTE-HONORINE</poste>
+ <poste code="0160190">TRESORERIE CONFOLENS</poste>
+ <poste code="0720130">TRESORERIE DE CONLIE</poste>
+ <poste code="0720140">TRESORERIE DE CONNERRE-MONTFORT</poste>
+ <poste code="0060030">TRESORERIE CONTES</poste>
+ <poste code="0410060">TRESORERIE CONTRES</poste>
+ <poste code="0800140">TRESORERIE CONTY</poste>
+ <poste code="0910060">TRESORERIE CORBEIL-VILLABE</poste>
+ <poste code="0910080">TRESORERIE CORBEIL-VILLABE MUNICIPALE</poste>
+ <poste code="0910350">TRESORERIE ESSONNE AMENDES</poste>
+ <poste code="0800150">TRESORERIE CORBIE</poste>
+ <poste code="0580070">TRESORERIE CORBIGNY</poste>
+ <poste code="0880520">TRESORERIE CORCIEUX</poste>
+ <poste code="0810080">TRESORERIE CORDES-VAOUR</poste>
+ <poste code="0220040">TRESORERIE CORLAY</poste>
+ <poste code="0950060">TRESORERIE CORMEILLES-EN-PARISIS</poste>
+ <poste code="0880100">TRESORERIE CORNIMONT</poste>
+ <poste code="0380100">TRESORERIE CORPS</poste>
+ <poste code="0190060">TRESORERIE CORREZE</poste>
+ <poste code="02B0090">TRESORERIE CORTE-OMESSA</poste>
+ <poste code="0580080">TRESORERIE COSNE-COURS-SUR-LOIRE</poste>
+ <poste code="0530090">TRESORERIE DE COSSE-LE-VIVIEN</poste>
+ <poste code="0710590">TRESORERIE DE COUCHES-PARIS-L'HOPITAL</poste>
+ <poste code="0070120">TRESORERIE COUCOURON</poste>
+ <poste code="0020090">TRESORERIE COUCY-LE-CHATEAU</poste>
+ <poste code="0594060">TRESORERIE COUDEKERQUE-BRANCHE</poste>
+ <poste code="0860060">TRESORERIE COUHE</poste>
+ <poste code="0110180">TRESORERIE COUIZA</poste>
+ <poste code="0770080">TRESORERIE DE COULOMMIERS</poste>
+ <poste code="0790160">TRESORERIE DE COULONGES - VAL D'EGRAY</poste>
+ <poste code="0920150">TRESORERIE COURBEVOIE</poste>
+ <poste code="0920160">TRESORERIE COURBEVOIE MUNICIPALE</poste>
+ <poste code="0570110">TRESORERIE COURCELLES-CHAUSSY</poste>
+ <poste code="0170030">TRESORERIE COURCON-NUAILLE-D'AUNIS</poste>
+ <poste code="0910070">TRESORERIE EVRY MUNICIPALE</poste>
+ <poste code="0340090">TRESORERIE DE COURNONTERRAL</poste>
+ <poste code="0630510">TRESORERIE COURPIERE</poste>
+ <poste code="0140180">TRESORERIE COURSEULLES-SUR-MER</poste>
+ <poste code="0890150">TRESORERIE DE COURSON-LES-CARRIERES-OUANNE</poste>
+ <poste code="0450350">TRESORERIE COURTENAY</poste>
+ <poste code="0280180">TRESORERIE COURVILLE-SUR-EURE</poste>
+ <poste code="0500060">TRESORERIE COUTANCES</poste>
+ <poste code="0330640">TRESORERIE COUTRAS</poste>
+ <poste code="0170270">TRESORERIE COZES-MORTAGNE-SUR-GIRONDE</poste>
+ <poste code="0530110">TRESORERIE DE CRAON</poste>
+ <poste code="0430090">TRESORERIE CRAPONNE-SUR-ARZON</poste>
+ <poste code="0800620">TRESORERIE DE CRECY-EN-PONTHIEU</poste>
+ <poste code="0600350">TRESORERIE DE CREIL</poste>
+ <poste code="0600440">TRESORERIE CREIL MUNICIPALE</poste>
+ <poste code="0381050">TRESORERIE CREMIEU-TREPT</poste>
+ <poste code="0330300">TRESORERIE DE CREON</poste>
+ <poste code="0600360">TRESORERIE CREPY-EN-VALOIS</poste>
+ <poste code="0260090">TRESORERIE CREST</poste>
+ <poste code="0940080">TRESORERIE CRETEIL CENTRE HOSPITALIER</poste>
+ <poste code="0940004">CE CENTRE ENCAISSEMENT CRETEIL</poste>
+ <poste code="0940000">TRESORERIE GENERALE DU VAL-DE-MARNE</poste>
+ <poste code="0940007">CENTRE REGIONAL DES PENSIONS DU VAL-DE-MARNE</poste>
+ <poste code="0940008">CENTRE DE FORMATION DEPARTEMENTAL DU VAL-DE-MARNE</poste>
+ <poste code="0940009">DEPARTEMENT INFORMATIQUE DU VAL-DE-MARNE</poste>
+ <poste code="0940070">TRESORERIE CRETEIL</poste>
+ <poste code="0940360">TRESORERIE DE CRETEIL MUNICIPALE</poste>
+ <poste code="0940900">PAIERIE DEPARTEMENTALE DU VAL-DE-MARNE</poste>
+ <poste code="0940001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DU VAL DE MARNE</poste>
+ <poste code="0571040">TRESORERIE CREUTZWALD</poste>
+ <poste code="0762030">TRESORERIE CRIQUETOT-L'ESNEVAL</poste>
+ <poste code="0230250">TRESORERIE DE CROCQ - LA COURTINE</poste>
+ <poste code="0620200">TRESORERIE CROISILLES</poste>
+ <poste code="0290090">TRESORERIE CROZON</poste>
+ <poste code="0740140">TRESORERIE CRUSEILLES</poste>
+ <poste code="0830050">TRESORERIE CUERS</poste>
+ <poste code="0310440">TRESORERIE CUGNAUX</poste>
+ <poste code="0593030">TRESORERIE DE CUINCY</poste>
+ <poste code="0710090">TRESORERIE CUISEAUX</poste>
+ <poste code="0710100">TRESORERIE CUISERY-MONTPONT-MONTRET</poste>
+ <poste code="0630520">TRESORERIE CUNLHAT</poste>
+ <poste code="0870210">TRESORERIE D' ORADOUR-SUR-VAYRES</poste>
+ <poste code="0030180">TRESORERIE CUSSET</poste>
+ <poste code="0110190">TRESORERIE CUXAC-CABARDES</poste>
+ <poste code="1210000">TRESORERIE AMBASSADE DE FRANCE AU SENEGAL</poste>
+ <poste code="0470190">TRESORERIE DAMAZAN</poste>
+ <poste code="0670070">TRESORERIE DAMBACH-LA-VILLE</poste>
+ <poste code="0772070">TRESORERIE DAMMARTIN-EN-GOELE-ST-SOUPPLETS</poste>
+ <poste code="0390300">TRESORERIE DAMPIERRE</poste>
+ <poste code="0700120">TRESORERIE DE DAMPIERRE-SUR-SALON-LAVONCOURT</poste>
+ <poste code="0270040">TRESORERIE DAMVILLE</poste>
+ <poste code="0550340">TRESORERIE DE DAMVILLERS</poste>
+ <poste code="0860310">TRESORERIE DANGE-SAINT-ROMAIN</poste>
+ <poste code="0681050">TRESORERIE DANNEMARIE</poste>
+ <poste code="0290100">TRESORERIE DAOULAS</poste>
+ <poste code="0880130">TRESORERIE DE DARNEY</poste>
+ <poste code="0400230">TRESORERIE DAX</poste>
+ <poste code="0400320">TRESORERIE DAX CENTRE HOSPITALIER</poste>
+ <poste code="0140591">TRESORERIE ANNEXE DE DEAUVILLE</poste>
+ <poste code="0120320">TRESORERIE DECAZEVILLE</poste>
+ <poste code="0580090">TRESORERIE DECIZE</poste>
+ <poste code="0900050">TRESORERIE DE DELLE</poste>
+ <poste code="0570130">TRESORERIE DELME</poste>
+ <poste code="0595040">TRESORERIE DE DENAIN IMPÔTS</poste>
+ <poste code="0595050">TRESORERIE DENAIN MUNICIPALE</poste>
+ <poste code="0360090">TRESORERIE CHATEAUROUX BANLIEUE</poste>
+ <poste code="0440070">TRESORERIE DERVAL</poste>
+ <poste code="0370140">TRESORERIE DESCARTES</poste>
+ <poste code="0622100">TRESORERIE DESVRES</poste>
+ <poste code="0760120">TRESORERIE DEVILLE-LES-ROUEN</poste>
+ <poste code="0260100">TRESORERIE DIE</poste>
+ <poste code="0760560">TRESORERIE DIEPPE CENTRE ET EST</poste>
+ <poste code="0760570">TRESORERIE DIEPPE MUNICIPALE</poste>
+ <poste code="0550350">TRESORERIE DE DIEUE-SUR-MEUSE</poste>
+ <poste code="0260320">TRESORERIE DIEULEFIT-LA BEGUDE-DE-MAZENC</poste>
+ <poste code="0570140">TRESORERIE DIEUZE</poste>
+ <poste code="0040000">TRESORERIE GENERALE DES ALPES-DE-HAUTE-PROVENCE</poste>
+ <poste code="0040080">TRESORERIE DIGNE-LES-BAINS</poste>
+ <poste code="0040900">PAIERIE DEPARTEMENTALE DES ALPES-DE-HAUTE-PROVENCE</poste>
+ <poste code="0710110">TRESORERIE DIGOIN</poste>
+ <poste code="0210000">TRESORERIE GENERALE DE LA COTE-D'OR</poste>
+ <poste code="0210007">CENTRE REGIONAL DES PENSIONS DE LA COTE-D'OR</poste>
+ <poste code="0210008">CENTRE DE FORMATION DEPARTEMENTAL DE LA COTE-D'OR</poste>
+ <poste code="0210009">DEPARTEMENT INFORMATIQUE DE LA COTE-D'OR</poste>
+ <poste code="0210030">TRESORERIE DE DIJON BANLIEUE</poste>
+ <poste code="0210110">TRESORERIE DIJON NORD</poste>
+ <poste code="0210120">TRESORERIE DIJON SUD ET AMENDES</poste>
+ <poste code="0210130">TRESORERIE DIJON MUNICIPALE</poste>
+ <poste code="0210140">TRESORERIE DIJON CHU</poste>
+ <poste code="0210800">PAIERIE REGIONALE DE BOURGOGNE</poste>
+ <poste code="0210900">PAIERIE DEPARTEMENTALE DE LA COTE-D'OR</poste>
+ <poste code="0210001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE LA CÔTE D'OR</poste>
+ <poste code="0210080">TRESORERIE DIJON OPAC ET OPDHLM</poste>
+ <poste code="0220250">TRESORERIE DE DINAN VILLE ET BANLIEUE</poste>
+ <poste code="0350440">TRESORERIE DE DINARD</poste>
+ <poste code="0140490">TRESORERIE DIVES-SUR-MER</poste>
+ <poste code="1710000">TRESORERIE AMBASSADE DE FRANCE EN REPUBLIQUE DE DJIBOUTI</poste>
+ <poste code="0880150">TRESORERIE DOCELLES</poste>
+ <poste code="0350450">TRESORERIE DE DOL-DE-BRETAGNE</poste>
+ <poste code="0390310">TRESORERIE DOLE COLLEGIALE</poste>
+ <poste code="0390320">TRESORERIE DOLE MUNICIPALE</poste>
+ <poste code="0380120">TRESORERIE DOMENE</poste>
+ <poste code="0610120">TRESORERIE DE DOMFRONT</poste>
+ <poste code="0240090">TRESORERIE DOMME</poste>
+ <poste code="0880170">TRESORERIE DOMPAIRE-VAUBEXY</poste>
+ <poste code="0710190">TRESORERIE DE MATOUR</poste>
+ <poste code="0030050">TRESORERIE DOMPIERRE-SUR-BESBRE</poste>
+ <poste code="0770090">TRESORERIE DONNEMARIE-DONTILLY</poste>
+ <poste code="0580100">TRESORERIE DONZY-CHATEAUNEUF-VAL-DE-BARGIS</poste>
+ <poste code="0510340">TRESORERIE DE DORMANS</poste>
+ <poste code="0580110">TRESORERIE DORNES</poste>
+ <poste code="0593000">RECETTE DES FINANCES DOUAI</poste>
+ <poste code="0593040">TRESORERIE DE DOUAI</poste>
+ <poste code="0593050">TRESORERIE DOUAI MUNICIPALE</poste>
+ <poste code="0292040">TRESORERIE DOUARNENEZ</poste>
+ <poste code="0595060">TRESORERIE DOUCHY-LES-MINES</poste>
+ <poste code="0760130">TRESORERIE DOUDEVILLE</poste>
+ <poste code="0490510">TRESORERIE DOUE-LA-FONTAINE</poste>
+ <poste code="0520150">TRESORERIE DOULAINCOURT-SAUCOURT</poste>
+ <poste code="0550360">TRESORERIE DE DUN-SUR-MEUSE</poste>
+ <poste code="0520160">TRESORERIE DOULEVANT-LE-CHATEAU</poste>
+ <poste code="0800680">TRESORERIE DOULLENS</poste>
+ <poste code="0910090">TRESORERIE DOURDAN</poste>
+ <poste code="0810220">TRESORERIE DOURGNE</poste>
+ <poste code="0740150">TRESORERIE DOUVAINE-BONS-EN-CHABLAIS</poste>
+ <poste code="0140200">TRESORERIE DOUVRES-LA-DELIVRANDE</poste>
+ <poste code="0620650">TRESORERIE DOUVRIN</poste>
+ <poste code="0140500">TRESORERIE DOZULE</poste>
+ <poste code="0831070">TRESORERIE DE DRAGUIGNAN IMPOTS</poste>
+ <poste code="0831000">RECETTE DES FINANCES DRAGUIGNAN</poste>
+ <poste code="0831080">TRESORERIE DRAGUIGNAN MUNICIPALE</poste>
+ <poste code="0930080">TRESORERIE DRANCY</poste>
+ <poste code="0930090">TRESORERIE DRANCY MUNICIPALE</poste>
+ <poste code="0910100">TRESORERIE DRAVEIL</poste>
+ <poste code="0280360">TRESORERIE DE DREUX MUNICIPALE</poste>
+ <poste code="0280350">TRESORERIE DE DREUX ET PAYS DROUAIS</poste>
+ <poste code="0410240">TRESORERIE DE DROUE</poste>
+ <poste code="0671040">TRESORERIE DRULINGEN</poste>
+ <poste code="0671050">TRESORERIE DRUSENHEIM</poste>
+ <poste code="0500270">TRESORERIE DUCEY</poste>
+ <poste code="0760140">TRESORERIE DUCLAIR</poste>
+ <poste code="0230070">TRESORERIE DUN-LE-PALESTEL</poste>
+ <poste code="0180150">TRESORERIE DUN-SUR-AURON</poste>
+ <poste code="0594000">RECETTE DES FINANCES DUNKERQUE</poste>
+ <poste code="0594080">TRESORERIE DUNKERQUE MUNICIPALE ET COM.URB</poste>
+ <poste code="0594160">TRESORERIE DUNKERQUE ET. HOSP.</poste>
+ <poste code="0594070">TRESORERIE DE DUNKERQUE</poste>
+ <poste code="0470200">TRESORERIE DURAS</poste>
+ <poste code="0110420">TRESORERIE DURBAN-CORBIERES</poste>
+ <poste code="0490130">TRESORERIE DURTAL</poste>
+ <poste code="0950070">TRESORERIE EAUBONNE</poste>
+ <poste code="0320250">TRESORERIE MONTREAL</poste>
+ <poste code="0320090">TRESORERIE EAUZE</poste>
+ <poste code="0030200">TRESORERIE EBREUIL-BELLENAVES</poste>
+ <poste code="0700130">TRESORERIE ECHENOZ-LA-MELINE-ET-COLOMBIER</poste>
+ <poste code="0380130">TRESORERIE ECHIROLLES</poste>
+ <poste code="0720160">TRESORERIE ECOMMOY</poste>
+ <poste code="0270250">TRESORERIE ECOS ET TOURNY</poste>
+ <poste code="0610320">TRESORERIE D' ECOUCHE</poste>
+ <poste code="0951010">TRESORERIE ECOUEN</poste>
+ <poste code="0690050">TRESORERIE D' ECULLY</poste>
+ <poste code="0190070">TRESORERIE EGLETONS</poste>
+ <poste code="0540360">TRESORERIE EINVILLE-AU-JARD</poste>
+ <poste code="0760150">TRESORERIE D' ELBEUF</poste>
+ <poste code="0660070">TRESORERIE ELNE</poste>
+ <poste code="0560020">TRESORERIE ELVEN</poste>
+ <poste code="0050050">TRESORERIE D' EMBRUN-SAVINES</poste>
+ <poste code="0951020">TRESORERIE D' ENGHIEN-LES-BAINS</poste>
+ <poste code="0630600">TRESORERIE ENNEZAT</poste>
+ <poste code="0680070">TRESORERIE ENSISHEIM</poste>
+ <poste code="0120060">TRESORERIE D' ENTRAYGUES-SAINT-AMANS</poste>
+ <poste code="0760580">TRESORERIE ENVERMEU</poste>
+ <poste code="0710600">TRESORERIE D' EPINAC</poste>
+ <poste code="0880220">TRESORERIE D' HADOL-DARNIEULLES</poste>
+ <poste code="0880000">TRESORERIE GENERALE DES VOSGES</poste>
+ <poste code="0880190">TRESORERIE D' EPINAL-POINCARE</poste>
+ <poste code="0880490">TRESORERIE DES VOSGES-OPHLM VILLE D'EPINAL</poste>
+ <poste code="0880900">PAIERIE DEPARTEMENTALE DES VOSGES</poste>
+ <poste code="0880180">TRESORERIE D' EPINAL AUBERT</poste>
+ <poste code="0931050">TRESORERIE EPINAY-SUR-SEINE</poste>
+ <poste code="0781030">TRESORERIE EPONE</poste>
+ <poste code="0500430">TRESORERIE EQUEURDREVILLE-HAINNEVILLE</poste>
+ <poste code="0950100">TRESORERIE ERMONT</poste>
+ <poste code="0530120">TRESORERIE D' ERNEE</poste>
+ <poste code="0670120">TRESORERIE ERSTEIN</poste>
+ <poste code="0120070">TRESORERIE ESPALION</poste>
+ <poste code="0540030">TRESORERIE ESSEY-LES-NANCY</poste>
+ <poste code="0120080">TRESORERIE ESTAING</poste>
+ <poste code="0100150">TRESORERIE D' ESTISSAC</poste>
+ <poste code="0600480">TRESORERIE ESTREES-SAINT-DENIS</poste>
+ <poste code="0220050">TRESORERIE ETABLES-SUR-MER</poste>
+ <poste code="0550370">TRESORERIE ETAIN</poste>
+ <poste code="0910370">TRESORERIE D' ETAMPES</poste>
+ <poste code="0910380">TRESORERIE D' ETAMPES COLLECTIVITES</poste>
+ <poste code="0710620">TRESORERIE DE SAINT-LEGER-SOUS-BEUVRAY</poste>
+ <poste code="0622190">TRESORERIE ETAPLES</poste>
+ <poste code="0330720">TRESORERIE ETAULIERS</poste>
+ <poste code="0560260">TRESORERIE BELZ</poste>
+ <poste code="0270260">TRESORERIE ETREPAGNY</poste>
+ <poste code="0760590">TRESORERIE EU</poste>
+ <poste code="0230260">TRESORERIE D' EVAUX-LES-BAINS</poste>
+ <poste code="0740160">TRESORERIE EVIAN-LES-BAINS</poste>
+ <poste code="0270000">TRESORERIE GENERALE DE L' EURE</poste>
+ <poste code="0270060">TRESORERIE EVREUX MUNICIPALE</poste>
+ <poste code="0270420">TRESORERIE D' EVREUX ETABLIS HOSPITALIERS</poste>
+ <poste code="0270900">PAIERIE DEPARTEMENTALE DE L' EURE</poste>
+ <poste code="0270050">TRESORERIE EVREUX</poste>
+ <poste code="0270001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE L' EURE</poste>
+ <poste code="0530130">TRESORERIE D' EVRON</poste>
+ <poste code="0910000">TRESORERIE GENERALE DE L' ESSONNE</poste>
+ <poste code="0910360">TRESORERIE EVRY</poste>
+ <poste code="0910900">PAIERIE DEPARTEMENTALE DE L' ESSONNE</poste>
+ <poste code="9500000">PAIERIE GENERALE AUX ARMEES</poste>
+ <poste code="0910001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE L' ESSONNE</poste>
+ <poste code="0240120">TRESORERIE HAUTEFORT</poste>
+ <poste code="0240100">TRESORERIE D' EXCIDEUIL</poste>
+ <poste code="0132070">TRESORERIE MALLEMORT</poste>
+ <poste code="0132060">TRESORERIE EYGUIERES</poste>
+ <poste code="0190080">TRESORERIE EYGURANDE</poste>
+ <poste code="0240490">TRESORERIE EYMET</poste>
+ <poste code="0870100">TRESORERIE EYMOUTIERS</poste>
+ <poste code="0951060">TRESORERIE EZANVILLE</poste>
+ <poste code="0140230">TRESORERIE FALAISE</poste>
+ <poste code="0571050">TRESORERIE FAULQUEMONT</poste>
+ <poste code="0622290">TRESORERIE FAUQUEMBERGUES</poste>
+ <poste code="0762120">TRESORERIE FAUVILLE-EN-CAUX</poste>
+ <poste code="0740170">TRESORERIE FAVERGES</poste>
+ <poste code="0430100">TRESORERIE FAY-SUR-LIGNON</poste>
+ <poste code="0831090">TRESORERIE FAYENCE</poste>
+ <poste code="0762050">TRESORERIE FECAMP</poste>
+ <poste code="0762060">TRESORERIE FECAMP MUNICIPALE</poste>
+ <poste code="0230270">TRESORERIE DE FELLETIN - GENTIOUX PIGEROLLES</poste>
+ <poste code="0570170">TRESORERIE FENETRANGE</poste>
+ <poste code="0010130">TRESORERIE FERNEY-VOLTAIRE</poste>
+ <poste code="0681080">TRESORERIE FERRETTE</poste>
+ <poste code="0450360">TRESORERIE FERRIERES-EN GATINAIS</poste>
+ <poste code="0422190">TRESORERIE DE FEURS</poste>
+ <poste code="0460090">TRESORERIE FIGEAC</poste>
+ <poste code="0420030">TRESORERIE FIRMINY</poste>
+ <poste code="0512030">TRESORERIE DE FISMES</poste>
+ <poste code="0610340">TRESORERIE DE FLERS ET MESSEI</poste>
+ <poste code="0320110">TRESORERIE FLEURANCE</poste>
+ <poste code="0270270">TRESORERIE FLEURY-SUR-ANDELLE</poste>
+ <poste code="0800690">TRESORERIE FLIXECOURT</poste>
+ <poste code="0480070">TRESORERIE FLORAC-BARRE-DES-CEVENNES</poste>
+ <poste code="0570630">TRESORERIE FLORANGE</poste>
+ <poste code="0090000">TRESORERIE GENERALE DE L' ARIEGE</poste>
+ <poste code="0090070">TRESORERIE FOIX</poste>
+ <poste code="0090080">TRESORERIE FOIX BANLIEUE</poste>
+ <poste code="0090900">PAIERIE DEPARTEMENTALE DE L' ARIEGE</poste>
+ <poste code="0380410">TRESORERIE DE FONTAINE</poste>
+ <poste code="0210170">TRESORERIE FONTAINE-FRANCAISE</poste>
+ <poste code="0760700">TRESORERIE FONTAINE-LE-DUN</poste>
+ <poste code="0770340">TRESORERIE FONTAINEBLEAU MUNICIPALE</poste>
+ <poste code="0850210">TRESORERIE DE FONTENAY-LE-COMTE</poste>
+ <poste code="0941040">TRESORERIE DE FONTENAY-SOUS-BOIS</poste>
+ <poste code="0570180">TRESORERIE FONTOY</poste>
+ <poste code="0571070">TRESORERIE DE FORBACH PORTE DE FRANCE</poste>
+ <poste code="0040100">TRESORERIE FORCALQUIER</poste>
+ <poste code="0760710">TRESORERIE FORGES-LES-EAUX</poste>
+ <poste code="0600180">TRESORERIE DE FORMERIE-SONGEONS</poste>
+ <poste code="1030007">CENTRE REGIONAL DES PENSIONS DE LA MARTINIQUE</poste>
+ <poste code="1030008">CENTRE DE FORMATION DEPARTEMENTAL DE LA MARTINIQUE</poste>
+ <poste code="1030009">DEPARTEMENT INFORMATIQUE DE LA MARTINIQUE</poste>
+ <poste code="1030040">TRESORERIE FORT-DE-FRANCE CTRE HOSP.</poste>
+ <poste code="1030000">TRESORERIE GENERALE DE LA MARTINIQUE</poste>
+ <poste code="1030020">TRESORERIE FORT-DE-FRANCE EST-AMENDES</poste>
+ <poste code="1030030">TRESORERIE DE FORT-DE-FRANCE MUNICIPALE</poste>
+ <poste code="1030120">TRESORERIE DE FORT-DE-FRANCE OUEST ET BANLIEUE</poste>
+ <poste code="1030800">PAIERIE REGIONALE DE LA MARTINIQUE</poste>
+ <poste code="1030900">PAIERIE DEPARTEMENTALE DE LA MARTINIQUE</poste>
+ <poste code="0292050">TRESORERIE FOUESNANT</poste>
+ <poste code="0350110">TRESORERIE DE FOUGERES</poste>
+ <poste code="0350120">TRESORERIE DE FOUGERES COLLECTIVITÉS</poste>
+ <poste code="0700160">TRESORERIE FOUGEROLLES</poste>
+ <poste code="0595200">TRESORERIE FOURMIES</poste>
+ <poste code="0780290">TRESORERIE FOURQUEUX</poste>
+ <poste code="0880530">TRESORERIE FRAIZE</poste>
+ <poste code="0950290">TRESORERIE SAINT-LEU-FRANCONVILLE</poste>
+ <poste code="0740180">TRESORERIE FRANGY</poste>
+ <poste code="0831100">TRESORERIE FREJUS</poste>
+ <poste code="0720200">TRESORERIE FRESNAY-SUR-SARTHE</poste>
+ <poste code="0700170">TRESORERIE FRESNE-SAINT-MAMES-FRETIGNEY</poste>
+ <poste code="0940280">TRESORERIE DE FRESNES</poste>
+ <poste code="0550380">TRESORERIE FRESNES-EN-WOEVRE</poste>
+ <poste code="0620240">TRESORERIE D' AUXI-LE-CHATEAU-FREVENT</poste>
+ <poste code="0571080">TRESORERIE FREYMING-MERLEBACH</poste>
+ <poste code="0800600">TRESORERIE FRIVILLE-ESCARBOTIN</poste>
+ <poste code="0600190">TRESORERIE FROISSY</poste>
+ <poste code="0790200">TRESORERIE FRONTENAY-ROHAN-ROHAN</poste>
+ <poste code="0730160">TRESORERIE GRESY-SUR-ISERE</poste>
+ <poste code="0340100">TRESORERIE FRONTIGNAN</poste>
+ <poste code="0310110">TRESORERIE FRONTON</poste>
+ <poste code="0622200">TRESORERIE FRUGES</poste>
+ <poste code="0080190">TRESORERIE FUMAY</poste>
+ <poste code="0470210">TRESORERIE FUMEL</poste>
+ <poste code="0400020">TRESORERIE GABARRET</poste>
+ <poste code="0610350">TRESORERIE DE GACE</poste>
+ <poste code="0930110">TRESORERIE DE GAGNY</poste>
+ <poste code="0810090">TRESORERIE DE GAILLAC-CADALEN</poste>
+ <poste code="0270280">TRESORERIE GAILLON</poste>
+ <poste code="0800630">TRESORERIE GAMACHES</poste>
+ <poste code="0340110">TRESORERIE GANGES</poste>
+ <poste code="0030220">TRESORERIE GANNAT</poste>
+ <poste code="0050000">TRESORERIE GENERALE DES HAUTES-ALPES</poste>
+ <poste code="0050060">TRESORERIE DE GAP</poste>
+ <poste code="0050900">PAIERIE DEPARTEMENTALE DES HAUTES-ALPES</poste>
+ <poste code="0780080">TRESORERIE GARANCIERES</poste>
+ <poste code="0131060">TRESORERIE GARDANNE</poste>
+ <poste code="0781040">TRESORERIE GARGENVILLE</poste>
+ <poste code="0951100">TRESORERIE GARGES-LES-GONESSE</poste>
+ <poste code="0640090">TRESORERIE GARLIN</poste>
+ <poste code="0400030">TRESORERIE GEAUNE</poste>
+ <poste code="0170280">TRESORERIE GEMOZAC-TESSON</poste>
+ <poste code="0860070">TRESORERIE GENCAY</poste>
+ <poste code="0210180">TRESORERIE GENLIS</poste>
+ <poste code="0490340">TRESORERIE GENNES</poste>
+ <poste code="0920180">TRESORERIE GENNEVILLIERS</poste>
+ <poste code="0300470">TRESORERIE GENOLHAC</poste>
+ <poste code="0880540">TRESORERIE GERARDMER</poste>
+ <poste code="0210190">TRESORERIE GEVREY-CHAMBERTIN</poste>
+ <poste code="0010140">TRESORERIE GEX</poste>
+ <poste code="02B0190">TRESORERIE PRUNELLI-DI-FIUMORBO</poste>
+ <poste code="0450370">TRESORERIE GIEN</poste>
+ <poste code="0340120">TRESORERIE GIGNAC</poste>
+ <poste code="0320120">TRESORERIE GIMONT</poste>
+ <poste code="0110440">TRESORERIE GINESTAS</poste>
+ <poste code="0900060">TRESORERIE GIROMAGNY</poste>
+ <poste code="0270290">TRESORERIE GISORS</poste>
+ <poste code="0080200">TRESORERIE GIVET</poste>
+ <poste code="0690070">TRESORERIE DE GIVORS</poste>
+ <poste code="0710510">TRESORERIE GIVRY-MERCUREY</poste>
+ <poste code="0762070">TRESORERIE GODERVILLE</poste>
+ <poste code="0380140">TRESORERIE GONCELIN</poste>
+ <poste code="0160220">TRESORERIE GOND-PONTOUVRE</poste>
+ <poste code="0550120">TRESORERIE DE GONDRECOURT-LE-CHATEAU</poste>
+ <poste code="0951030">TRESORERIE GONESSE</poste>
+ <poste code="0840120">TRESORERIE GORDES</poste>
+ <poste code="0530150">TRESORERIE DE GORRON</poste>
+ <poste code="0310490">TRESORERIE DE GOURDAN-POLIGNAN</poste>
+ <poste code="0460100">TRESORERIE GOURDON</poste>
+ <poste code="0560220">TRESORERIE DE GOURIN-LE FAOUET</poste>
+ <poste code="0760720">TRESORERIE GOURNAY-EN-BRAY</poste>
+ <poste code="0230090">TRESORERIE GOUZON</poste>
+ <poste code="0180170">TRESORERIE DE GRACAY</poste>
+ <poste code="0460110">TRESORERIE GRAMAT</poste>
+ <poste code="1010050">TRESORERIE MARIE-GALANTE</poste>
+ <poste code="0760230">TRESORERIE GRAND-COURONNE</poste>
+ <poste code="0080210">TRESORERIE GRANDPRE</poste>
+ <poste code="0600200">TRESORERIE GRANDVILLIERS</poste>
+ <poste code="0880550">TRESORERIE GRANGES-SUR-VOLOGNE</poste>
+ <poste code="0500080">TRESORERIE GRANVILLE</poste>
+ <poste code="0061180">TRESORERIE GRASSE LA PAOUTE</poste>
+ <poste code="0061090">TRESORERIE GRASSE MUNICIPALE ET BANLIEUE</poste>
+ <poste code="0061000">RECETTE DES FINANCES GRASSE</poste>
+ <poste code="0810230">TRESORERIE GRAULHET</poste>
+ <poste code="0594090">TRESORERIE GRAVELINES</poste>
+ <poste code="0700190">TRESORERIE GRAY-AUTREY</poste>
+ <poste code="0310120">TRESORERIE GRENADE</poste>
+ <poste code="0400040">TRESORERIE GRENADE-SUR-L'ADOUR</poste>
+ <poste code="0380007">CENTRE REGIONAL DES PENSIONS DE L' ISERE</poste>
+ <poste code="0380008">CENTRE DE FORMATION DEPARTEMENTAL DE L' ISERE</poste>
+ <poste code="0380009">DEPARTEMENT INFORMATIQUE DE L' ISERE</poste>
+ <poste code="0380180">TRESORERIE DE GRENOBLE AMENDES & PROD DIVERS</poste>
+ <poste code="0380190">TRESORERIE GRENOBLE MUNICIPALE</poste>
+ <poste code="0380191">TRESORERIE DE GRENOBLE MUNICIPALE SERV. EAUX</poste>
+ <poste code="0380540">TRESORERIE DE L' OPAC GRENOBLOIS-ACTIS</poste>
+ <poste code="0380900">PAIERIE DEPARTEMENTALE DE L' ISERE</poste>
+ <poste code="0380001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE L' ISERE</poste>
+ <poste code="0380000">TRESORERIE GENERALE DE L' ISERE</poste>
+ <poste code="0380170">TRESORERIE DE GRENOBLE</poste>
+ <poste code="0260330">TRESORERIE GRIGNAN-TAULIGNAN</poste>
+ <poste code="0910340">TRESORERIE GRIGNY</poste>
+ <poste code="0831110">TRESORERIE GRIMAUD</poste>
+ <poste code="0820070">TRESORERIE GRISOLLES</poste>
+ <poste code="0571090">TRESORERIE GROSTENQUIN-MORHANGE</poste>
+ <poste code="0680080">TRESORERIE DE GUEBWILLER</poste>
+ <poste code="0440360">TRESORERIE DE GUEMENE-PENFAO</poste>
+ <poste code="0560230">TRESORERIE GUEMENE-SUR-SCORFF</poste>
+ <poste code="0560040">TRESORERIE GUER</poste>
+ <poste code="0441060">TRESORERIE GUERANDE</poste>
+ <poste code="0230000">TRESORERIE GENERALE DE LA CREUSE</poste>
+ <poste code="0230110">TRESORERIE GUERET</poste>
+ <poste code="0230180">TRESORERIE GUERET PIQUERELLE</poste>
+ <poste code="0230900">PAIERIE DEPARTEMENTALE DE LA CREUSE</poste>
+ <poste code="0580130">TRESORERIE GUERIGNY</poste>
+ <poste code="0710120">TRESORERIE GUEUGNON-ISSY-L'EVEQUE</poste>
+ <poste code="0350150">TRESORERIE GUICHEN</poste>
+ <poste code="0770130">TRESORERIE GUIGNES</poste>
+ <poste code="0020210">TRESORERIE GUIGNICOURT-NEUFCHATEL</poste>
+ <poste code="0060050">TRESORERIE DE GUILLAUMES</poste>
+ <poste code="0050080">TRESORERIE GUILLESTRE</poste>
+ <poste code="0622110">TRESORERIE GUINES</poste>
+ <poste code="0220340">TRESORERIE GUINGAMP</poste>
+ <poste code="0290120">TRESORERIE DE BREST BANLIEUE</poste>
+ <poste code="0020540">TRESORERIE GUISE</poste>
+ <poste code="0330660">TRESORERIE GUITRES-SAINT-DENIS-DE-PILE</poste>
+ <poste code="0700210">TRESORERIE GY</poste>
+ <poste code="0400050">TRESORERIE HAGETMAU</poste>
+ <poste code="0671060">TRESORERIE D' HAGUENAU</poste>
+ <poste code="0671070">TRESORERIE HAGUENAU MUNICIPALE</poste>
+ <poste code="0671000">RECETTE DES FINANCES D' HAGUENAU</poste>
+ <poste code="0800640">TRESORERIE HALLENCOURT-AIRAINES</poste>
+ <poste code="0590120">TRESORERIE HALLUIN</poste>
+ <poste code="0800540">TRESORERIE HAM-NESLE</poste>
+ <poste code="0762080">TRESORERIE HARFLEUR</poste>
+ <poste code="0540080">TRESORERIE D' HAROUE-VEZELISE</poste>
+ <poste code="0640400">TRESORERIE D' HASPARREN</poste>
+ <poste code="0671080">TRESORERIE HATTEN</poste>
+ <poste code="0590130">TRESORERIE DE LOOS-LES-WEPPES</poste>
+ <poste code="0260110">TRESORERIE LE GRAND-SERRE-MORAS</poste>
+ <poste code="0010150">TRESORERIE HAUTEVILLE-LOMPNES</poste>
+ <poste code="0595210">TRESORERIE HAUTMONT</poste>
+ <poste code="0570220">TRESORERIE HAYANGE</poste>
+ <poste code="0594180">TRESORERIE HAZEBROUCK</poste>
+ <poste code="0640390">TRESORERIE HENDAYE</poste>
+ <poste code="0620670">TRESORERIE D' HENIN-BEAUMONT</poste>
+ <poste code="0620680">TRESORERIE HENIN-BEAUMONT MUNICIPALE</poste>
+ <poste code="0560280">TRESORERIE HENNEBONT</poste>
+ <poste code="0441070">TRESORERIE HERBIGNAC</poste>
+ <poste code="0700220">TRESORERIE HERICOURT-ET-CHAMPEY</poste>
+ <poste code="0250390">TRESORERIE HERIMONCOURT</poste>
+ <poste code="0030230">TRESORERIE HERISSON</poste>
+ <poste code="0512050">TRESORERIE D' HERMONVILLE</poste>
+ <poste code="0140470">TRESORERIE HEROUVILLE-SAINT-CLAIR</poste>
+ <poste code="0620690">TRESORERIE HERSIN-COUPIGNY</poste>
+ <poste code="0622210">TRESORERIE D' HESDIN-LE-PARCQ</poste>
+ <poste code="0381040">TRESORERIE HEYRIEUX</poste>
+ <poste code="0681100">TRESORERIE HIRSINGUE</poste>
+ <poste code="0020670">TRESORERIE D' HIRSON</poste>
+ <poste code="0670180">TRESORERIE HOCHFELDEN</poste>
+ <poste code="0670200">TRESORERIE HOERDT</poste>
+ <poste code="0594100">TRESORERIE HONDSCHOOTE</poste>
+ <poste code="0140510">TRESORERIE HONFLEUR</poste>
+ <poste code="0800700">TRESORERIE HORNOY-LE-BOURG</poste>
+ <poste code="0620700">TRESORERIE HOUDAIN</poste>
+ <poste code="0781050">TRESORERIE DE HOUILLES</poste>
+ <poste code="0622220">TRESORERIE HUCQUELIERS</poste>
+ <poste code="0030240">TRESORERIE HURIEL-COURCAIS</poste>
+ <poste code="0830070">TRESORERIE HYERES MUNICIPALE</poste>
+ <poste code="0830060">TRESORERIE HYERES</poste>
+ <poste code="0640410">TRESORERIE IHOLDY</poste>
+ <poste code="0660090">TRESORERIE ILLE-SUR-TET</poste>
+ <poste code="0280220">TRESORERIE ILLIERS-COMBRAY</poste>
+ <poste code="0670220">TRESORERIE ILLKIRCH-GRAFFENSTADEN</poste>
+ <poste code="0671090">TRESORERIE INGWILLER</poste>
+ <poste code="0210210">TRESORERIE IS-SUR-TILLE</poste>
+ <poste code="0620710">TRESORERIE ISBERGUES</poste>
+ <poste code="0140270">TRESORERIE ISIGNY-SUR-MER</poste>
+ <poste code="0870350">TRESORERIE OPDHLM DE LA HAUTE-VIENNE</poste>
+ <poste code="0630140">TRESORERIE ISSOIRE</poste>
+ <poste code="0360170">TRESORERIE D' ISSOUDUN</poste>
+ <poste code="0920190">TRESORERIE D' ISSY-LES-MOULINEAUX</poste>
+ <poste code="0132140">TRESORERIE D' ISTRES</poste>
+ <poste code="0270080">TRESORERIE IVRY-LA-BATAILLE</poste>
+ <poste code="0940130">TRESORERIE IVRY-SUR-SEINE</poste>
+ <poste code="0940140">TRESORERIE IVRY-SUR-SEINE MUNICIPALE</poste>
+ <poste code="0280230">TRESORERIE JANVILLE</poste>
+ <poste code="0350170">TRESORERIE JANZE</poste>
+ <poste code="0450120">TRESORERIE JARGEAU</poste>
+ <poste code="0160240">TRESORERIE JARNAC</poste>
+ <poste code="0540420">TRESORERIE DE JARNY-CHAMBLEY</poste>
+ <poste code="0540410">TRESORERIE DE CONFLANS-EN-JARNISY</poste>
+ <poste code="0320150">TRESORERIE JEGUN</poste>
+ <poste code="0595220">TRESORERIE JEUMONT</poste>
+ <poste code="0540430">TRESORERIE DE JOEUF</poste>
+ <poste code="0890230">TRESORERIE JOIGNY</poste>
+ <poste code="0520180">TRESORERIE JOINVILLE ET POISSONS</poste>
+ <poste code="0170290">TRESORERIE JONZAC</poste>
+ <poste code="0560050">TRESORERIE JOSSELIN</poste>
+ <poste code="0370390">TRESORERIE DE TOURS BANLIEUE OUEST</poste>
+ <poste code="0070140">TRESORERIE JOYEUSE</poste>
+ <poste code="0220280">TRESORERIE JUGON-LES-LACS</poste>
+ <poste code="0190270">TRESORERIE DE JUILLAC</poste>
+ <poste code="0630160">TRESORERIE JUMEAUX</poste>
+ <poste code="0080220">TRESORERIE JUNIVILLE</poste>
+ <poste code="0700230">TRESORERIE DE JUSSEY-VITREY</poste>
+ <poste code="0911050">TRESORERIE JUVISY-SUR-ORGE</poste>
+ <poste code="0680090">TRESORERIE KAYSERSBERG</poste>
+ <poste code="1620020">TRESORERIE DE LA PROVINCE NORD</poste>
+ <poste code="1020040">TRESORERIE KOUROU</poste>
+ <poste code="0610160">TRESORERIE DE L'AIGLE</poste>
+ <poste code="0690010">TRESORERIE L'ARBRESLE</poste>
+ <poste code="0050010">TRESORERIE L'ARGENTIERE-LA-BESSEE</poste>
+ <poste code="0060040">TRESORERIE L'ESCARENE</poste>
+ <poste code="0940120">TRESORERIE L'HAY-LES-ROSES</poste>
+ <poste code="0370150">TRESORERIE L'ILE-BOUCHARD</poste>
+ <poste code="0850310">TRESORERIE DE L'ILE-D'YEU</poste>
+ <poste code="02B0100">TRESORERIE L'ILE-ROUSSE</poste>
+ <poste code="0950120">TRESORERIE L'ISLE-ADAM</poste>
+ <poste code="0310500">TRESORERIE L'ISLE-EN-DODON</poste>
+ <poste code="0860080">TRESORERIE L'ISLE JOURDAIN</poste>
+ <poste code="0320140">TRESORERIE L'ISLE-JOURDAIN</poste>
+ <poste code="0840130">TRESORERIE DE L'ISLE-SUR-LA-SORGUE</poste>
+ <poste code="0250400">TRESORERIE DE L'ISLE-SUR-LE-DOUBS</poste>
+ <poste code="0890220">TRESORERIE L'ISLE-SUR-SEREIN</poste>
+ <poste code="0310320">TRESORERIE DE L'UNION</poste>
+ <poste code="0650060">TRESORERIE LA BARTHE-DE-NESTE</poste>
+ <poste code="0590070">TRESORERIE DE LA BASSEE</poste>
+ <poste code="0090030">TRESORERIE LA BASTIDE-DE-SEROU</poste>
+ <poste code="0441040">TRESORERIE DE LA BAULE-ESCOUBLAC</poste>
+ <poste code="0480040">TRESORERIE LA CANOURGUE-ST-GERMAIN-DU-TEIL</poste>
+ <poste code="0020660">TRESORERIE LA CAPELLE</poste>
+ <poste code="0780410">TRESORERIE LA CELLE-SAINT-CLOUD</poste>
+ <poste code="0430070">TRESORERIE LA CHAISE-DIEU</poste>
+ <poste code="0730110">TRESORERIE LA CHAMBRE</poste>
+ <poste code="0710030">TRESORERIE LA CHAPELLE-DE-GUINCHAY</poste>
+ <poste code="0260060">TRESORERIE LA CHAPELLE-EN-VERCORS</poste>
+ <poste code="0770310">TRESORERIE LA CHAPELLE-LA REINE-LARCHANT</poste>
+ <poste code="0580020">TRESORERIE LA CHARITE-SUR-LOIRE</poste>
+ <poste code="0850200">TRESORERIE DU PAYS DE LA CHATAIGNERAIE</poste>
+ <poste code="0360120">TRESORERIE DE LA CHATRE</poste>
+ <poste code="0220020">TRESORERIE LA CHEZE</poste>
+ <poste code="0130030">TRESORERIE LA CIOTAT</poste>
+ <poste code="0710060">TRESORERIE LA CLAYETTE</poste>
+ <poste code="0381020">TRESORERIE LA COTE-SAINT-ANDRE</poste>
+ <poste code="0931040">TRESORERIE LA COURNEUVE MUNICIPALE</poste>
+ <poste code="0160200">TRESORERIE LA COURONNE</poste>
+ <poste code="0790060">TRESORERIE LA CRECHE</poste>
+ <poste code="0020130">TRESORERIE LA FERE</poste>
+ <poste code="0910120">TRESORERIE LA FERTE-ALAIS</poste>
+ <poste code="0720170">TRESORERIE LA FERTE-BERNARD</poste>
+ <poste code="0610330">TRESORERIE DE LA FERTE-FRENEL</poste>
+ <poste code="0770100">TRESORERIE LA-FERTE-GAUCHER-CHOISY-EN-BRIE</poste>
+ <poste code="0772100">TRESORERIE LA FERTE-SOUS-JOUARRE</poste>
+ <poste code="0610130">TRESORERIE LA FERTE-MACE</poste>
+ <poste code="0450090">TRESORERIE LA FERTE-SAINT-AUBIN</poste>
+ <poste code="0760690">TRESORERIE LA FEUILLIE</poste>
+ <poste code="0720180">TRESORERIE DE LA FLECHE</poste>
+ <poste code="1620070">TRESORERIE DE LA FOA</poste>
+ <poste code="0240510">TRESORERIE DE LA FORCE</poste>
+ <poste code="0560030">TRESORERIE LA GACILLY</poste>
+ <poste code="0920170">TRESORERIE LA GARENNE-COLOMBES</poste>
+ <poste code="0300480">TRESORERIE DE LA GRAND-COMBE</poste>
+ <poste code="0350140">TRESORERIE LA GUERCHE-DE-BRETAGNE</poste>
+ <poste code="0180180">TRESORERIE LA GUERCHE-SUR-L'AUBOIS</poste>
+ <poste code="0710130">TRESORERIE DE LA GUICHE</poste>
+ <poste code="0500090">TRESORERIE LA HAYE-DU-PUITS</poste>
+ <poste code="0500280">TRESORERIE LA HAYE-PESNEL</poste>
+ <poste code="0170040">TRESORERIE LA JARRIE</poste>
+ <poste code="0280240">TRESORERIE LA LOUPE</poste>
+ <poste code="0580160">TRESORERIE LA MACHINE</poste>
+ <poste code="0590270">TRESORERIE LA MADELEINE</poste>
+ <poste code="0850320">TRESORERIE LA MOTHE-ACHARD</poste>
+ <poste code="0790270">TRESORERIE LA MOTHE-SAINT-HERAY</poste>
+ <poste code="0040160">TRESORERIE LA MOTTE.TURRIERS</poste>
+ <poste code="0730390">TRESORERIE DE LA MOTTE SERVOLEX</poste>
+ <poste code="0380290">TRESORERIE LA MURE</poste>
+ <poste code="0671140">TRESORERIE LA PETITE-PIERRE</poste>
+ <poste code="02B0180">TRESORERIE LA PORTA</poste>
+ <poste code="0330730">TRESORERIE LA REOLE</poste>
+ <poste code="0560120">TRESORERIE DE LA ROCHE-MUZILLAC</poste>
+ <poste code="0190120">TRESORERIE LA ROCHE-CANILLAC</poste>
+ <poste code="0740210">TRESORERIE LA ROCHE-SUR-FORON</poste>
+ <poste code="0850010">TRESORERIE LA ROCHE CARDIJN</poste>
+ <poste code="0850000">TRESORERIE GENERALE DE LA VENDEE</poste>
+ <poste code="0850140">TRESORERIE PAYS YONNAIS ET ESSART MUNICIPAL</poste>
+ <poste code="0850180">TRESORERIE OPDHLM DE LA VENDEE</poste>
+ <poste code="0850900">PAIERIE DEPARTEMENTALE DE LA VENDEE</poste>
+ <poste code="0850170">TRESORERIE LA ROCHE-SUR-YON HOPITAUX</poste>
+ <poste code="0710270">TRESORERIE DE LA ROCHE-VINEUSE</poste>
+ <poste code="0160350">TRESORERIE LA ROCHEFOUCAULD</poste>
+ <poste code="0170000">TRESORERIE GENERALE DE LA CHARENTE-MARITIME</poste>
+ <poste code="0170090">TRESORERIE LA ROCHELLE</poste>
+ <poste code="0170110">TRESORERIE LA ROCHELLE MUNICIPALE</poste>
+ <poste code="0170160">TRESORERIE LA ROCHELLE ETS HOSP.</poste>
+ <poste code="0170900">PAIERIE DEPARTEMENTALE DE LA CHARENTE-MARITIME</poste>
+ <poste code="0730260">TRESORERIE LA ROCHETTE</poste>
+ <poste code="0490480">TRESORERIE LA ROMAGNE-MONTFAUCON</poste>
+ <poste code="0131130">TRESORERIE LA ROQUE-D'ANTHERON</poste>
+ <poste code="0830120">TRESORERIE LA ROQUEBRUSSANNE</poste>
+ <poste code="0340440">TRESORERIE LA SALVETAT-SUR-AGOUT</poste>
+ <poste code="0270390">TRESORERIE LA SAUSSAYE</poste>
+ <poste code="0830140">TRESORERIE LA SEYNE-SUR-MER</poste>
+ <poste code="0830150">TRESORERIE LA SEYNE-SUR-MER MUNICIPALE</poste>
+ <poste code="0230170">TRESORERIE LA SOUTERRAINE</poste>
+ <poste code="0720500">TRESORERIE DE LA SUZE-SUR-SARTHE</poste>
+ <poste code="0381230">TRESORERIE LA TOUR-DU-PIN</poste>
+ <poste code="0170390">TRESORERIE LA TREMBLADE</poste>
+ <poste code="0860220">TRESORERIE LA TRIMOUILLE</poste>
+ <poste code="1030100">TRESORERIE TRINITE</poste>
+ <poste code="0380200">TRESORERIE GRENOBLE CHU</poste>
+ <poste code="0830210">TRESORERIE TOULON-LA SEYNE-SUR-MER CHI</poste>
+ <poste code="0830220">TRESORERIE LA VALETTE-DU-VAR</poste>
+ <poste code="0381120">TRESORERIE LA VERPILLIERE</poste>
+ <poste code="0070410">TRESORERIE DE LA VOULTE-SUR-RHONE</poste>
+ <poste code="0460120">TRESORERIE DE LABASTIDE-MURAT</poste>
+ <poste code="0820080">TRESORERIE LABASTIDE-SAINT-PIERRE</poste>
+ <poste code="0400060">TRESORERIE LABRIT</poste>
+ <poste code="0810240">TRESORERIE LABRUGUIERE</poste>
+ <poste code="0460130">TRESORERIE DE LACAPELLE ET LIVERNON</poste>
+ <poste code="0810250">TRESORERIE LACAUNE</poste>
+ <poste code="0900080">TRESORERIE LACHAPELLE-SOUS-ROUGEMONT</poste>
+ <poste code="0600510">TRESORERIE LA CROIX-SAINT-OUEN</poste>
+ <poste code="0820090">TRESORERIE LAFRANCAISE-MOLIERES</poste>
+ <poste code="0010170">TRESORERIE LAGNIEU</poste>
+ <poste code="0772110">TRESORERIE LAGNY-SUR-MARNE</poste>
+ <poste code="0110220">TRESORERIE LAGRASSE</poste>
+ <poste code="0190140">TRESORERIE DE TULLE MONTANA</poste>
+ <poste code="0120090">TRESORERIE LAGUIOLE</poste>
+ <poste code="0210220">TRESORERIE LAIGNES</poste>
+ <poste code="0460140">TRESORERIE LALBENQUE</poste>
+ <poste code="0240520">TRESORERIE DE LALINDE</poste>
+ <poste code="0340420">TRESORERIE DE LAMALOU-BAINS-ST-GERVAIS-S-MARE</poste>
+ <poste code="0880250">TRESORERIE LAMARCHE-MARTIGNY-LES-BAINS</poste>
+ <poste code="0070150">TRESORERIE DE LAMASTRE</poste>
+ <poste code="0220070">TRESORERIE LAMBALLE</poste>
+ <poste code="0590520">TRESORERIE LAMBERSART</poste>
+ <poste code="0131080">TRESORERIE LAMBESC</poste>
+ <poste code="0410090">TRESORERIE LAMOTTE-BEUVRON</poste>
+ <poste code="0690510">TRESORERIE LAMURE-SUR-AZERGUES</poste>
+ <poste code="0290130">TRESORERIE LANDERNEAU</poste>
+ <poste code="0290230">TRESORERIE DE LANDIVISIAU</poste>
+ <poste code="0595230">TRESORERIE LANDRECIES</poste>
+ <poste code="0430120">TRESORERIE LANGEAC</poste>
+ <poste code="0370170">TRESORERIE LANGEAIS</poste>
+ <poste code="0480100">TRESORERIE LANGOGNE</poste>
+ <poste code="0330350">TRESORERIE LANGON-SAINT-MACAIRE</poste>
+ <poste code="0520340">TRESORERIE LANGRES</poste>
+ <poste code="0290240">TRESORERIE LANMEUR</poste>
+ <poste code="0650140">TRESORERIE LANNEMEZAN</poste>
+ <poste code="0650150">TRESORERIE LANNEMEZAN CTRE HOSP. SPEC.</poste>
+ <poste code="0290140">TRESORERIE LANNILIS</poste>
+ <poste code="0220350">TRESORERIE LANNION</poste>
+ <poste code="0240140">TRESORERIE DE LANOUAILLE</poste>
+ <poste code="0730170">TRESORERIE LANSLEBOURG-MONT-CENIS</poste>
+ <poste code="0220450">TRESORERIE DE LANVOLLON-PLOUHA</poste>
+ <poste code="0020000">TRESORERIE GENERALE DE L' AISNE</poste>
+ <poste code="0020150">TRESORERIE DE LAON</poste>
+ <poste code="0020160">TRESORERIE DE LAON MUNICIPALE ET BANLIEUE</poste>
+ <poste code="0020170">TRESORERIE LAON CENTRE HOSPITALIER</poste>
+ <poste code="0020900">PAIERIE DEPARTEMENTALE DE L' AISNE</poste>
+ <poste code="0020001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE L' AISNE</poste>
+ <poste code="0030260">TRESORERIE LAPALISSE</poste>
+ <poste code="0190090">TRESORERIE LAPLEAU</poste>
+ <poste code="0680100">TRESORERIE LAPOUTROIE</poste>
+ <poste code="0050090">TRESORERIE LARAGNE-ORPIERRE</poste>
+ <poste code="0190280">TRESORERIE LARCHE</poste>
+ <poste code="0070160">TRESORERIE LARGENTIERE</poste>
+ <poste code="0090230">TRESORERIE LAROQUE-D'OLMES</poste>
+ <poste code="0470060">TRESORERIE LAROQUE-TIMBAUT-BEAUVILLE</poste>
+ <poste code="0150100">TRESORERIE LAROQUEBROU</poste>
+ <poste code="0640100">TRESORERIE LARUNS</poste>
+ <poste code="0300110">TRESORERIE LASALLE</poste>
+ <poste code="0530190">TRESORERIE LASSAY-LES-CHATEAUX</poste>
+ <poste code="0600490">TRESORERIE LASSIGNY</poste>
+ <poste code="0460150">TRESORERIE LATRONQUIERE-SOUSCEYRAC</poste>
+ <poste code="0671100">TRESORERIE LAUTERBOURG</poste>
+ <poste code="0810260">TRESORERIE LAUTREC</poste>
+ <poste code="0820100">TRESORERIE LAUZERTE</poste>
+ <poste code="0530000">TRESORERIE GENERALE DE LA MAYENNE</poste>
+ <poste code="0530200">TRESORERIE DE LAVAL MURAT</poste>
+ <poste code="0530210">TRESORERIE LAVAL CENTRE HOSPITALIER</poste>
+ <poste code="0530220">TRESORERIE PAYS DE LAVAL</poste>
+ <poste code="0530900">PAIERIE DEPARTEMENTALE DE LA MAYENNE</poste>
+ <poste code="0470070">TRESORERIE LAVARDAC</poste>
+ <poste code="0810270">TRESORERIE LAVAUR</poste>
+ <poste code="0090090">TRESORERIE LAVELANET-BELESTA</poste>
+ <poste code="0620720">TRESORERIE LAVENTIE</poste>
+ <poste code="0540160">TRESORERIE NANCY CTRE PSYCHO. DPTAL</poste>
+ <poste code="0061030">TRESORERIE LE BAR-SUR-LOUP</poste>
+ <poste code="0830010">TRESORERIE LE BEAUSSET</poste>
+ <poste code="0140060">TRESORERIE LE BENY-BOCAGE</poste>
+ <poste code="0360050">TRESORERIE DE LE BLANC</poste>
+ <poste code="0930050">TRESORERIE LE BLANC-MESNIL</poste>
+ <poste code="0480030">TRESORERIE LE BLEYMARD</poste>
+ <poste code="0690490">TRESORERIE LE BOIS-D'OINGT</poste>
+ <poste code="0660040">TRESORERIE LE BOULOU</poste>
+ <poste code="0380050">TRESORERIE LE BOURG-D'OISANS</poste>
+ <poste code="0530050">TRESORERIE DE LE BOURGNEUF-LA-FORET</poste>
+ <poste code="0330210">TRESORERIE LE BOUSCAT</poste>
+ <poste code="0240040">TRESORERIE LE BUGUE</poste>
+ <poste code="0061140">TRESORERIE LE CANNET</poste>
+ <poste code="0593130">TRESORERIE LE CATEAU-CATILLON</poste>
+ <poste code="0020530">TRESORERIE LE CATELET</poste>
+ <poste code="0420020">TRESORERIE DU CHAMBON FEUGEROLLES</poste>
+ <poste code="0170170">TRESORERIE LE CHATEAU-D'OLERON</poste>
+ <poste code="0730130">TRESORERIE LE CHATELARD</poste>
+ <poste code="0770040">TRESORERIE LE CHATELET-EN-BRIE</poste>
+ <poste code="0780380">TRESORERIE VERSAILLES CENTRE HOSPITALIER</poste>
+ <poste code="0780420">TRESORERIE LE CHESNAY</poste>
+ <poste code="0080140">TRESORERIE LE CHESNE</poste>
+ <poste code="0070100">TRESORERIE LE CHEYLARD</poste>
+ <poste code="0480060">TRESORERIE LE COLLET-DE-DEZE</poste>
+ <poste code="0422030">TRESORERIE LE COTEAU</poste>
+ <poste code="0710390">TRESORERIE LE CREUSOT</poste>
+ <poste code="0030190">TRESORERIE LE DONJON</poste>
+ <poste code="0870080">TRESORERIE LE DORAT</poste>
+ <poste code="0290110">TRESORERIE LE FAOU</poste>
+ <poste code="0560210">TRESORERIE DE LE FAOUET</poste>
+ <poste code="0090220">TRESORERIE LE FOSSAT</poste>
+ <poste code="1030050">TRESORERIE FRANCOIS</poste>
+ <poste code="0381180">TRESORERIE LE GRAND-LEMPS ET BIOL</poste>
+ <poste code="0720230">TRESORERIE LE GRAND-LUCE-LA CHARTRE</poste>
+ <poste code="0760500">TRESORERIE LE GRAND-QUEVILLY</poste>
+ <poste code="0762000">RECETTE DES FINANCES LE HAVRE</poste>
+ <poste code="0762090">TRESORERIE LE HAVRE IMPÔTS</poste>
+ <poste code="0762130">TRESORERIE LE HAVRE MUNICIPALE</poste>
+ <poste code="0762140">TRESORERIE LE HAVRE CENTRE HOSPITALIER</poste>
+ <poste code="0940100">TRESORERIE DU NORD VAL-DE-BIEVRE</poste>
+ <poste code="1030060">TRESORERIE LAMENTIN</poste>
+ <poste code="0830090">TRESORERIE LE LAVANDOU</poste>
+ <poste code="0490160">TRESORERIE LE LION-D'ANGERS</poste>
+ <poste code="0440100">TRESORERIE LE LOROUX-BOTTEREAU</poste>
+ <poste code="0490170">TRESORERIE LE LOUROUX-BECONNAIS</poste>
+ <poste code="0831130">TRESORERIE LE LUC</poste>
+ <poste code="0720260">TRESORERIE LE LUDE</poste>
+ <poste code="0720000">TRESORERIE GENERALE DE LA SARTHE</poste>
+ <poste code="0720290">TRESORERIE LE MANS FLORE</poste>
+ <poste code="0720310">TRESORERIE LE MANS PÉRIPHÉRIE ET AMENDES</poste>
+ <poste code="0720320">TRESORERIE AGGLOMÉRATION MANCELLE ET CHS</poste>
+ <poste code="0720340">TRESORERIE LE MANS CENTRE HOSPITALIER</poste>
+ <poste code="0720900">PAIERIE DEPARTEMENTALE DE LA SARTHE</poste>
+ <poste code="0720330">TRESORERIE LE MANS VILLE</poste>
+ <poste code="1030070">TRESORERIE MARIN</poste>
+ <poste code="0090240">TRESORERIE LE MAS-D'AZIL</poste>
+ <poste code="0030280">TRESORERIE LE-MAYET-DE-MONTAGNE</poste>
+ <poste code="0610360">TRESORERIE LE MERLERAULT</poste>
+ <poste code="0760280">TRESORERIE LE MESNIL-ESNARD</poste>
+ <poste code="0140290">TRESORERIE LE MOLAY-LITTRY</poste>
+ <poste code="0430150">TRESORERIE LE MONASTIER-SUR-GAZEILLE</poste>
+ <poste code="0050100">TRESORERIE MONETIER-LES-BAINS ET LA GRAVE</poste>
+ <poste code="0630190">TRESORERIE LE MONT-DORE LA TOUR D' AUVERGNE</poste>
+ <poste code="0030070">TRESORERIE LE MONTET</poste>
+ <poste code="1010070">TRESORERIE LE MOULE</poste>
+ <poste code="0831140">TRESORERIE LE MUY</poste>
+ <poste code="0270330">TRESORERIE LE NEUBOURG</poste>
+ <poste code="0020560">TRESORERIE LE NOUVION-EN-THIERACHE</poste>
+ <poste code="0560310">TRESORERIE LE PALAIS</poste>
+ <poste code="0941060">TRESORERIE LE PERREUX-SUR-MARNE</poste>
+ <poste code="0760320">TRESORERIE LE PETIT-QUEVILLY</poste>
+ <poste code="0850120">TRESORERIE LE POIRE-SUR-VIE</poste>
+ <poste code="0730250">TRESORERIE LE PONT-DE-BEAUVOISIN</poste>
+ <poste code="0381210">TRESORERIE LE-PONT-DE-BEAUVOISIN</poste>
+ <poste code="1040010">TRESORERIE LE PORT</poste>
+ <poste code="0430000">TRESORERIE GENERALE DE LA HAUTE-LOIRE</poste>
+ <poste code="0430230">TRESORERIE LE PUY VILLE</poste>
+ <poste code="0430220">TRESORERIE LE PUY SAINT-LOUIS</poste>
+ <poste code="0430300">TRESORERIE DE PUY SAINT-JEAN</poste>
+ <poste code="0430900">PAIERIE DEPARTEMENTALE DE LA HAUTE-LOIRE</poste>
+ <poste code="0430001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE LA HAUTE LOIRE</poste>
+ <poste code="0595270">TRESORERIE LE QUESNOY</poste>
+ <poste code="0930210">TRESORERIE DU RAINCY MUNICIPALE</poste>
+ <poste code="0250440">TRESORERIE LE RUSSEY</poste>
+ <poste code="1040110">TRESORERIE LE TAMPON</poste>
+ <poste code="0070310">TRESORERIE DE LE TEIL-ROCHEMAURE</poste>
+ <poste code="0610270">TRESORERIE DE LE THEIL-SUR-HUISNE ET NOCE</poste>
+ <poste code="0880410">TRESORERIE LE THILLOT</poste>
+ <poste code="0622240">TRESORERIE LE TOUQUET-PARIS-PLAGE</poste>
+ <poste code="0380430">TRESORERIE LE TOUVET</poste>
+ <poste code="0760660">TRESORERIE LE TREPORT</poste>
+ <poste code="0780390">TRESORERIE LE VESINET</poste>
+ <poste code="0300390">TRESORERIE LE VIGAN</poste>
+ <poste code="0320160">TRESORERIE LECTOURE</poste>
+ <poste code="0300490">TRESORERIE LEDIGNAN</poste>
+ <poste code="0620730">TRESORERIE LEFOREST</poste>
+ <poste code="0640110">TRESORERIE LEMBEYE</poste>
+ <poste code="0860320">TRESORERIE LENCLOITRE</poste>
+ <poste code="0620750">TRESORERIE LENS MUNICIPALE</poste>
+ <poste code="0620740">TRESORERIE DE LENS</poste>
+ <poste code="0620760">TRESORERIE LENS CENTRE HOSPITALIER</poste>
+ <poste code="0620001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DU PAS DE CALAIS</poste>
+ <poste code="0381160">TRESORERIE LES ABRETS</poste>
+ <poste code="1010008">CENTRE DE FORMATION DEPARTEMENTAL DES ANTILLES-GUYANE</poste>
+ <poste code="1010010">TRESORERIE LES ABYMES-ET-LE-GOSIER</poste>
+ <poste code="0180010">TRESORERIE LES AIX-D'ANGILLON</poste>
+ <poste code="0270160">TRESORERIE LES ANDELYS</poste>
+ <poste code="0381170">TRESORERIE LES AVENIERES</poste>
+ <poste code="0730140">TRESORERIE LES ECHELLES</poste>
+ <poste code="0850070">TRESORERIE LES HERBIERS-MOUCHAMPS</poste>
+ <poste code="0630180">TRESORERIE LES MARTRES-DE-VEYRE</poste>
+ <poste code="0340160">TRESORERIE LES MATELLES</poste>
+ <poste code="0040140">TRESORERIE LES MEES</poste>
+ <poste code="0781130">TRESORERIE LES MUREAUX</poste>
+ <poste code="0131110">TRESORERIE LES PENNES-MIRABEAU</poste>
+ <poste code="0500450">TRESORERIE LES PIEUX</poste>
+ <poste code="0490190">TRESORERIE LES PONTS-DE-CE</poste>
+ <poste code="0850360">TRESORERIE CÔTE DE LUMIERE</poste>
+ <poste code="0850350">TRESORERIE DES SABLES D'OLONNE</poste>
+ <poste code="1030110">TRESORERIE TROIS-ILETS</poste>
+ <poste code="0860380">TRESORERIE LES TROIS-MOUTIERS</poste>
+ <poste code="0911060">TRESORERIE LES ULIS</poste>
+ <poste code="0070370">TRESORERIE LES VANS</poste>
+ <poste code="0640120">TRESORERIE DE LESCAR RIVES DU GAVE</poste>
+ <poste code="0290150">TRESORERIE LESNEVEN</poste>
+ <poste code="0330360">TRESORERIE LESPARRE-MEDOC</poste>
+ <poste code="0500100">TRESORERIE LESSAY</poste>
+ <poste code="0110450">TRESORERIE LEUCATE</poste>
+ <poste code="0920210">TRESORERIE LEVALLOIS-PERRET MUNICIPALE</poste>
+ <poste code="0920410">TRESORERIE OPDHLM DES HAUTS-DE-SEINE</poste>
+ <poste code="0920200">TRESORERIE LEVALLOIS-PERRET</poste>
+ <poste code="0060060">TRESORERIE LEVENS</poste>
+ <poste code="02A0070">TRESORERIE LEVIE</poste>
+ <poste code="0250290">TRESORERIE LEVIER</poste>
+ <poste code="0360180">TRESORERIE LEVROUX</poste>
+ <poste code="0220360">TRESORERIE LEZARDRIEUX</poste>
+ <poste code="0790210">TRESORERIE LEZAY</poste>
+ <poste code="0110460">TRESORERIE LEZIGNAN-CORBIERES</poste>
+ <poste code="0630530">TRESORERIE LEZOUX</poste>
+ <poste code="0600560">TRESORERIE LIANCOURT</poste>
+ <poste code="0330650">TRESORERIE DE LIBOURNE-FRONSAC-VAYRES</poste>
+ <poste code="0330770">TRESORERIE LIBOURNE MUNICIPALE</poste>
+ <poste code="0330771">TRESORERIE DE LIBOURNE MUNICIPALE HOP. BOULIN</poste>
+ <poste code="1320000">TRESORERIE AMBASSADE DE FRANCE AU GABON</poste>
+ <poste code="0622120">TRESORERIE LICQUES</poste>
+ <poste code="0020180">TRESORERIE LIESSE</poste>
+ <poste code="0770250">TRESORERIE DE SENART GESTION PUBLIQUE LOCALE</poste>
+ <poste code="0770270">TRESORERIE DE SENART</poste>
+ <poste code="0620770">TRESORERIE LIEVIN</poste>
+ <poste code="0880270">TRESORERIE LIFFOL-LE-GRAND</poste>
+ <poste code="0350180">TRESORERIE LIFFRE</poste>
+ <poste code="0180220">TRESORERIE DE LIGNIERES</poste>
+ <poste code="0550150">TRESORERIE DE LIGNY-EN-BARROIS</poste>
+ <poste code="0370190">TRESORERIE LIGUEIL</poste>
+ <poste code="0590000">TRESORERIE GENERALE DU NORD</poste>
+ <poste code="0590007">CENTRE REGIONAL DES PENSIONS DU NORD</poste>
+ <poste code="0590008">CENTRE DE FORMATION DEPARTEMENTAL DU NORD</poste>
+ <poste code="0590009">DEPARTEMENT INFORMATIQUE DU NORD</poste>
+ <poste code="0590240">TRESORERIE LILLE MUNICIPALE</poste>
+ <poste code="0590250">RECETTE DES FINANCES DE LILLE CHU</poste>
+ <poste code="0590530">TRESORERIE LILLE COMMUNAUTE URBAINE</poste>
+ <poste code="0590800">PAIERIE REGIONALE DU NORD-PAS-DE-CALAIS</poste>
+ <poste code="0590900">PAIERIE DEPARTEMENTALE DU NORD</poste>
+ <poste code="0590006">CENTRE NATIONAL DE GESTION DES CONCOURS DE LILLE (CONCOURS)</poste>
+ <poste code="0590005">CPS CENTRE PRÉLÈVEMENT SERVICE</poste>
+ <poste code="0590180">TRESORERIE DU GRAND LILLE</poste>
+ <poste code="0599000">RECETTE DES FINANCES DE LILLE</poste>
+ <poste code="0590230">TRESORERIE LILLE AMENDES</poste>
+ <poste code="0590001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DU NORD</poste>
+ <poste code="0590004">CE CENTRE ENCAISSEMENT LILLE</poste>
+ <poste code="0762160">TRESORERIE LILLEBONNE</poste>
+ <poste code="0620780">TRESORERIE LILLERS</poste>
+ <poste code="0781060">TRESORERIE LIMAY</poste>
+ <poste code="0870000">TRESORERIE GENERALE DE LA HAUTE-VIENNE</poste>
+ <poste code="0870009">DEPARTEMENT INFORMATIQUE DE LA HAUTE-VIENNE</poste>
+ <poste code="0870110">TRESORERIE DE LIMOGES 1ERE DIVISION</poste>
+ <poste code="0870120">TRESORERIE DE LIMOGES 2EME DIVISION</poste>
+ <poste code="0870130">TRESORERIE LIMOGES BANLIEUE</poste>
+ <poste code="0870140">TRESORERIE LIMOGES MUNICIPALE</poste>
+ <poste code="0870150">TRESORERIE DE LIMOGES CHU ET CH ESQUIROL</poste>
+ <poste code="0870340">TRESORERIE LIMOGES OPHLM</poste>
+ <poste code="0870800">PAIERIE REGIONALE DE LIMOUSIN</poste>
+ <poste code="0870900">PAIERIE DEPARTEMENTALE DE LA HAUTE-VIENNE</poste>
+ <poste code="0870151">TRESORERIE DE LIMOGES CHU-CH ESQUIROL - ANNEXE</poste>
+ <poste code="0870007">CENTRE REGIONAL DES PENSIONS DE LA HAUTE-VIENNE</poste>
+ <poste code="0870008">CENTRE DE FORMATION DEPARTEMENTAL DE LA HAUTE-VIENNE</poste>
+ <poste code="0870002">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE LA HAUTE VIENNE</poste>
+ <poste code="0460170">TRESORERIE LIMOGNE-EN-QUERCY</poste>
+ <poste code="0911070">TRESORERIE LIMOURS</poste>
+ <poste code="0110230">TRESORERIE DE LIMOUX</poste>
+ <poste code="0670560">TRESORERIE STRASBOURG OUEST-LINGOLSHEIM</poste>
+ <poste code="0140520">TRESORERIE DE LISIEUX INTERCOM</poste>
+ <poste code="0140570">TRESORERIE DE LISIEUX</poste>
+ <poste code="0140530">TRESORERIE LIVAROT</poste>
+ <poste code="0930130">TRESORERIE LIVRY-GARGAN</poste>
+ <poste code="0772130">TRESORERIE LIZY-CROUY-SUR-OURCQ</poste>
+ <poste code="0370200">TRESORERIE DE LOCHES</poste>
+ <poste code="0560060">TRESORERIE LOCMINE</poste>
+ <poste code="0340130">TRESORERIE LODEVE</poste>
+ <poste code="0320320">TRESORERIE SAMATAN</poste>
+ <poste code="0320170">TRESORERIE LOMBEZ</poste>
+ <poste code="1770000">TRESORERIE AMBASSADE DE FRANCE EN GRANDE-BRETAGNE</poste>
+ <poste code="0911080">TRESORERIE LONGJUMEAU</poste>
+ <poste code="0780310">TRESORERIE DE LONGNES</poste>
+ <poste code="0490350">TRESORERIE DE LONGUE-JUMELLES</poste>
+ <poste code="0760620">TRESORERIE LONGUEVILLE-SUR-SCIE</poste>
+ <poste code="0540440">TRESORERIE DE LONGUYON</poste>
+ <poste code="0540450">TRESORERIE DE LONGWY-VILLERUPT</poste>
+ <poste code="0390000">TRESORERIE GENERALE DU JURA</poste>
+ <poste code="0390150">TRESORERIE LONS MUNICIPALE ET EPL</poste>
+ <poste code="0390900">PAIERIE DEPARTEMENTALE DU JURA</poste>
+ <poste code="0390100">TRESORERIE DE LONS IMPOTS ET AMENDES</poste>
+ <poste code="0831120">TRESORERIE LORGUES</poste>
+ <poste code="0560290">TRESORERIE DE LORIENT</poste>
+ <poste code="0560300">TRESORERIE DE LORIENT COLLECTIVITES</poste>
+ <poste code="0560340">TRESORERIE DE LORIENT HÔPITAUX-HLM</poste>
+ <poste code="0260120">TRESORERIE LORIOL-SUR-DROME</poste>
+ <poste code="0580140">TRESORERIE LORMES</poste>
+ <poste code="0570230">TRESORERIE LORQUIN</poste>
+ <poste code="0770350">TRESORERIE LORREZ-LE-BOCAGE-PREAUX</poste>
+ <poste code="0450380">TRESORERIE DE LORRIS</poste>
+ <poste code="0220090">TRESORERIE LOUDEAC</poste>
+ <poste code="0860330">TRESORERIE LOUDUN</poste>
+ <poste code="0720250">TRESORERIE LOUE-BRULON</poste>
+ <poste code="0710140">TRESORERIE LOUHANS</poste>
+ <poste code="0170050">TRESORERIE LOULAY-VILLENEUVE-LA-COMTESSE</poste>
+ <poste code="0650170">TRESORERIE DE LOURDES</poste>
+ <poste code="0650180">TRESORERIE LOURES-BAROUSSE</poste>
+ <poste code="0270300">TRESORERIE LOUVIERS</poste>
+ <poste code="0350190">TRESORERIE LOUVIGNE-DU-DESERT</poste>
+ <poste code="0951040">TRESORERIE LOUVRES-GOUSSAINVILLE</poste>
+ <poste code="0190340">TRESORERIE ARNAC-POMPADOUR</poste>
+ <poste code="0190290">TRESORERIE LUBERSAC</poste>
+ <poste code="0260130">TRESORERIE LUC-EN-DIOIS</poste>
+ <poste code="0280130">TRESORERIE CHARTRES BANLIEUE</poste>
+ <poste code="0710610">TRESORERIE DE LUCENAY-L'EVEQUE</poste>
+ <poste code="0850230">TRESORERIE LUCON-SAINT-MICHEL-EN-L'HERM</poste>
+ <poste code="0710150">TRESORERIE DE LUGNY</poste>
+ <poste code="0622300">TRESORERIE LUMBRES</poste>
+ <poste code="0340150">TRESORERIE DE LUNEL</poste>
+ <poste code="0760630">TRESORERIE LUNERAY</poste>
+ <poste code="0540380">TRESORERIE LUNEVILLE</poste>
+ <poste code="0030060">TRESORERIE LURCY-LEVIS</poste>
+ <poste code="0700250">TRESORERIE DE LURE</poste>
+ <poste code="0860100">TRESORERIE LUSIGNAN</poste>
+ <poste code="0100170">TRESORERIE DE LUSIGNY-SUR-BARSE</poste>
+ <poste code="0860110">TRESORERIE LUSSAC-LES-CHATEAUX</poste>
+ <poste code="0700270">TRESORERIE DE LUXEUIL-LES-BAINS</poste>
+ <poste code="0370210">TRESORERIE DE LUYNES</poste>
+ <poste code="0650190">TRESORERIE LUZ-SAINT-SAUVEUR</poste>
+ <poste code="0951050">TRESORERIE LUZARCHES</poste>
+ <poste code="0460190">TRESORERIE LUZECH</poste>
+ <poste code="0090100">TRESORERIE LUZENAC-LES-CABANNES</poste>
+ <poste code="0630620">TRESORERIE DE LUZILLAT</poste>
+ <poste code="0580150">TRESORERIE LUZY</poste>
+ <poste code="0690000">TRESORERIE GENERALE DU RHONE</poste>
+ <poste code="0690007">CENTRE REGIONAL DES PENSIONS DU RHONE</poste>
+ <poste code="0690008">CENTRE DE FORMATION DEPARTEMENTAL DU RHONE</poste>
+ <poste code="0690009">DEPARTEMENT INFORMATIQUE DU RHONE</poste>
+ <poste code="0690100">TRESORERIE LYON PRESQU'ÎLE</poste>
+ <poste code="0690110">TRESORERIE DE LYON PART DIEU</poste>
+ <poste code="0690130">TRESORERIE LYON 5EME ET 9EME ARRONDTS</poste>
+ <poste code="0690150">TRESORERIE LYON 7EME ARRONDISSEMENT</poste>
+ <poste code="0690160">TRESORERIE LYON 8EME ARRONDISSEMENT</poste>
+ <poste code="0690180">TRESORERIE LYON AMENDES</poste>
+ <poste code="0690220">RECETTE DES FINANCES LYON HOSPICES CIVILS</poste>
+ <poste code="0690410">TRESORERIE LYON COMMUNAUTE URBAINE</poste>
+ <poste code="0690900">PAIERIE DEPARTEMENTALE DU RHONE</poste>
+ <poste code="3000010">ECOLE DES CADRES B</poste>
+ <poste code="0690001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DU RHÔNE</poste>
+ <poste code="0690190">RECETTE DES FINANCES LYON MUNICIPALE</poste>
+ <poste code="0690005">CPS CENTRE PRELEVEMENT SERVICE</poste>
+ <poste code="0590160">TRESORERIE LANNOY</poste>
+ <poste code="0440110">TRESORERIE MACHECOUL</poste>
+ <poste code="0710000">TRESORERIE GENERALE DE SAONE-ET-LOIRE</poste>
+ <poste code="0710160">TRESORERIE MACON</poste>
+ <poste code="0710170">TRESORERIE DE MACON MUNICIPALE</poste>
+ <poste code="0710900">PAIERIE DEPARTEMENTALE DE SAONE-ET-LOIRE</poste>
+ <poste code="1840000">TRESORERIE AMBASSADE DE FRANCE EN ESPAGNE</poste>
+ <poste code="0510360">TRESORERIE EPERNAY MUNICIPALE</poste>
+ <poste code="0510350">TRESORERIE D' EPERNAY BANLIEUE</poste>
+ <poste code="0870160">TRESORERIE DE MAGNAC-LAVAL</poste>
+ <poste code="0950150">TRESORERIE MAGNY-EN-VEXIN</poste>
+ <poste code="0250410">TRESORERIE MAICHE</poste>
+ <poste code="0850240">TRESORERIE DE MAILLEZAIS-BENET ET VIX</poste>
+ <poste code="0280250">TRESORERIE DE MAINTENON</poste>
+ <poste code="0280900">PAIERIE DEPARTEMENTALE D'EURE-ET-LOIR</poste>
+ <poste code="0940150">TRESORERIE DE MAISONS-ALFORT/ALFORTVILLE</poste>
+ <poste code="0781070">TRESORERIE DE MAISONS-LAFFITTE</poste>
+ <poste code="0570250">TRESORERIE MAIZIERES-LES-METZ</poste>
+ <poste code="0921070">TRESORERIE MALAKOFF</poste>
+ <poste code="0190250">TRESORERIE DE MALEMORT</poste>
+ <poste code="0450390">TRESORERIE DE MALESHERBES</poste>
+ <poste code="0560070">TRESORERIE MALESTROIT</poste>
+ <poste code="0720280">TRESORERIE MAMERS-SAINT-COSME-EN-VAIRAIS</poste>
+ <poste code="1430000">TRESORERIE GENERALE DE MAYOTTE</poste>
+ <poste code="1430010">TRESORERIE MAYOTTE MUNICIPALE</poste>
+ <poste code="1430900">PAIERIE DEPARTEMENTALE DE MAYOTTE</poste>
+ <poste code="0061150">TRESORERIE MANDELIEU LA NAPOULE</poste>
+ <poste code="0040130">TRESORERIE MANOSQUE</poste>
+ <poste code="0040001">CELLULE CONTRÔLE REDEVANCE AUDIOVISUELLE DES ALPES DE HAUTE PROVENCE</poste>
+ <poste code="0160260">TRESORERIE MANSLE</poste>
+ <poste code="0781080">TRESORERIE MANTES-LA-JOLIE</poste>
+ <poste code="0781090">TRESORERIE MANTES-LA-JOLIE MUNICIPALE</poste>
+ <poste code="0781100">TRESORERIE MANTES-LA-VILLE</poste>
+ <poste code="0630380">TRESORERIE MANZAT</poste>
+ <poste code="0170060">TRESORERIE MARANS</poste>
+ <poste code="0250200">TRESORERIE MARCHAUX</poste>
+ <poste code="0410250">TRESORERIE MARCHENOIR</poste>
+ <poste code="0593060">TRESORERIE MARCHIENNES</poste>
+ <poste code="0320180">TRESORERIE MARCIAC</poste>
+ <poste code="0710180">TRESORERIE MARCIGNY -SAINT CHRISTOPHE</poste>
+ <poste code="0120110">TRESORERIE MARCILLAC-VALLON-CONQUES</poste>
+ <poste code="0030270">TRESORERIE MARCILLAT-DURDAT</poste>
+ <poste code="0100190">TRESORERIE DE MARCILLY-LE-HAYER</poste>
+ <poste code="0670260">TRESORERIE MARCKOLSHEIM</poste>
+ <poste code="0590280">TRESORERIE MARCQ-EN-BAROEUL</poste>
+ <poste code="0170180">TRESORERIE MARENNES</poste>
+ <poste code="0240160">TRESORERIE MAREUIL</poste>
+ <poste code="0850080">TRESORERIE MAREUIL-SUR-LAY-DISSAIS</poste>
+ <poste code="0600500">TRESORERIE MARGNY-LES-COMPIEGNE</poste>
+ <poste code="0131090">TRESORERIE MARIGNANE</poste>
+ <poste code="0500110">TRESORERIE DE MARIGNY</poste>
+ <poste code="0950160">TRESORERIE MARINES</poste>
+ <poste code="0020190">TRESORERIE DE MARLE</poste>
+ <poste code="0595080">TRESORERIE MARLY</poste>
+ <poste code="0780180">TRESORERIE MARLY-LE-ROI</poste>
+ <poste code="0470220">TRESORERIE DE MARMANDE</poste>
+ <poste code="0470230">TRESORERIE DE MARMANDE MUNICIPALE</poste>
+ <poste code="0671110">TRESORERIE MARMOUTIER</poste>
+ <poste code="0700290">TRESORERIE DE MARNAY-PESMES</poste>
+ <poste code="0772210">TRESORERIE MARNE-LA-VALLEE</poste>
+ <poste code="0772090">TRESORERIE BUSSY SAINT GEORGES</poste>
+ <poste code="0772080">TRESORERIE DE MAGNY-LE-HONGRE</poste>
+ <poste code="0720370">TRESORERIE DE MAROLLES-LES-BRAULTS</poste>
+ <poste code="0760260">TRESORERIE MAROMME</poste>
+ <poste code="0620170">TRESORERIE MARQUION</poste>
+ <poste code="0622130">TRESORERIE MARQUISE</poste>
+ <poste code="0340390">TRESORERIE MARSEILLAN</poste>
+ <poste code="0130230">TRESORERIE MARSEILLE 12E ET 13E ARRONDT</poste>
+ <poste code="0130000">TRESORERIE GENERALE DES BOUCHES-DU-RHONE</poste>
+ <poste code="0130007">CENTRE REGIONAL DES PENSIONS DES BOUCHES-DU-RHONE</poste>
+ <poste code="0130008">CENTRE DE FORMATION DEPARTEMENTAL DES BOUCHES-DU-RHONE</poste>
+ <poste code="0130009">DEPARTEMENT INFORMATIQUE DES BOUCHES-DU-RHONE</poste>
+ <poste code="0130040">TRESORERIE DE MARSEILLE 1ER ET 6EME ARRONDT</poste>
+ <poste code="0130070">TRESORERIE MARSEILLE 3EME ET 14EME ARRONDT</poste>
+ <poste code="0130080">TRESORERIE MARSEILLE 4EME ARRONDISSEMENT</poste>
+ <poste code="0130090">TRESORERIE MARSEILLE 5EME ARRONDISSEMENT</poste>
+ <poste code="0130120">TRESORERIE DE MARSEILLE 7EME ARRONDISSEMENT</poste>
+ <poste code="0130130">TRESORERIE MARSEILLE 8EME ARRONDISSEMENT</poste>
+ <poste code="0130140">TRESORERIE DE MARSEILLE 10E ET 11E ARRONDT</poste>
+ <poste code="0130160">TRESORERIE DE MARSEILLE 2E,15E ET 16E ARRONDT</poste>
+ <poste code="0130170">TRESORERIE MARSEILLE AMENDES</poste>
+ <poste code="0130180">RECETTE DES FINANCES MARSEILLE MUNICIPALE</poste>
+ <poste code="0130190">RECETTE DES FINANCES MARSEILLE ASSISTANCE PUBLIQUE</poste>
+ <poste code="0130210">TRESORERIE MARSEILLE 9EME ARRONDISSEMENT</poste>
+ <poste code="0130250">TRESORERIE DE MARSEILLE HOSPITALIERE</poste>
+ <poste code="0130800">PAIERIE REGIONALE DE PROVENCE-ALPES-COTE D'AZUR</poste>
+ <poste code="0130900">PAIERIE DEPARTEMENTALE DES BOUCHES-DU-RHONE</poste>
+ <poste code="0130001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DES BOUCHES DU RHÔNE</poste>
+ <poste code="0139000">RECETTE DES FINANCES DE MARSEILLE</poste>
+ <poste code="0460200">TRESORERIE MARTEL</poste>
+ <poste code="0132150">TRESORERIE MARTIGUES</poste>
+ <poste code="0480120">TRESORERIE MARVEJOLS</poste>
+ <poste code="0680270">TRESORERIE MASEVAUX</poste>
+ <poste code="0593180">TRESORERIE DE MASNIERES</poste>
+ <poste code="0320190">TRESORERIE MASSEUBE</poste>
+ <poste code="0150120">TRESORERIE MASSIAC</poste>
+ <poste code="0911090">TRESORERIE MASSY</poste>
+ <poste code="0170300">TRESORERIE MATHA-BEAUVAIS-SUR-MATHA</poste>
+ <poste code="0220290">TRESORERIE MATIGNON</poste>
+ <poste code="0595240">TRESORERIE MAUBEUGE VILLE</poste>
+ <poste code="0595250">TRESORERIE DE MAUBEUGE BANLIEUE</poste>
+ <poste code="0595260">TRESORERIE MAUBEUGE MUNICIPALE</poste>
+ <poste code="0650200">TRESORERIE MAUBOURGUET</poste>
+ <poste code="0340170">TRESORERIE DE MAUGUIO</poste>
+ <poste code="0781110">TRESORERIE MAULE</poste>
+ <poste code="0790130">TRESORERIE MAULEON</poste>
+ <poste code="0640140">TRESORERIE MAULEON-LICHARRE</poste>
+ <poste code="0780120">TRESORERIE MAUREPAS</poste>
+ <poste code="0150130">TRESORERIE MAURIAC</poste>
+ <poste code="0560080">TRESORERIE MAURON</poste>
+ <poste code="0150140">TRESORERIE MAURS</poste>
+ <poste code="0132080">TRESORERIE MAUSSANE-VALLEE DES BAUX</poste>
+ <poste code="0320200">TRESORERIE MAUVEZIN-COLOGNE</poste>
+ <poste code="0790220">TRESORERIE MAUZE-SUR-LE-MIGNON</poste>
+ <poste code="0540110">TRESORERIE DE MAXEVILLE</poste>
+ <poste code="0530240">TRESORERIE MAYENNE SAINT-MARTIN</poste>
+ <poste code="0530250">TRESORERIE DU PAYS DE MAYENNE</poste>
+ <poste code="0810280">TRESORERIE MAZAMET</poste>
+ <poste code="0790230">TRESORERIE MAZIERES-EN-GATINE</poste>
+ <poste code="0772190">TRESORERIE DE MEAUX</poste>
+ <poste code="0772000">RECETTE DES FINANCES MEAUX</poste>
+ <poste code="0772140">TRESORERIE MEAUX MUNICIPALE.ET BANLIEUE</poste>
+ <poste code="0180240">TRESORERIE DE MEHUN-SUR-YEVRE</poste>
+ <poste code="0700300">TRESORERIE MELISEY-FAUCOGNEY</poste>
+ <poste code="0790240">TRESORERIE MELLE</poste>
+ <poste code="0770000">TRESORERIE GENERALE DE SEINE-ET-MARNE</poste>
+ <poste code="0770150">TRESORERIE MELUN VAL DE SEINE SEC PU LOCAL</poste>
+ <poste code="0770160">TRESORERIE MELUN VAL DE SEINE IMPOTS</poste>
+ <poste code="0770290">TRESORERIE SEINE-ET-MARNE AMENDES</poste>
+ <poste code="0770900">PAIERIE DEPARTEMENTALE DE SEINE-ET-MARNE</poste>
+ <poste code="0770001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE SEINE ET MARNE</poste>
+ <poste code="0480130">TRESORERIE MENDE</poste>
+ <poste code="0480900">PAIERIE DEPARTEMENTALE DE LA LOZERE</poste>
+ <poste code="0480000">TRESORERIE GENERALE DE LA LOZERE</poste>
+ <poste code="0790250">TRESORERIE MENIGOUTE</poste>
+ <poste code="0910190">TRESORERIE MENNECY</poste>
+ <poste code="0380230">TRESORERIE MENS</poste>
+ <poste code="0060070">TRESORERIE DE MENTON</poste>
+ <poste code="0060080">TRESORERIE DE MENTON MUNICIPALE</poste>
+ <poste code="0410110">TRESORERIE MER</poste>
+ <poste code="0220110">TRESORERIE MERDRIGNAC</poste>
+ <poste code="0330580">TRESORERIE MERIGNAC</poste>
+ <poste code="0671120">TRESORERIE MERTZWILLER</poste>
+ <poste code="0600250">TRESORERIE MERU</poste>
+ <poste code="0594190">TRESORERIE MERVILLE</poste>
+ <poste code="0100210">TRESORERIE DE MERY-SUR-SEINE</poste>
+ <poste code="0530260">TRESORERIE DE PAYS DE MESLAY-GREZ</poste>
+ <poste code="0570000">TRESORERIE GENERALE DE LA MOSELLE</poste>
+ <poste code="0570007">CENTRE REGIONAL DES PENSIONS DE LA MOSELLE</poste>
+ <poste code="0570008">CENTRE DE FORMATION DEPARTEMENTAL DE LA MOSELLE</poste>
+ <poste code="0570009">DEPARTEMENT INFORMATIQUE DE LA MOSELLE</poste>
+ <poste code="0570270">TRESORERIE METZ SERPENOISE</poste>
+ <poste code="0570300">TRESORERIE METZ MUNICIPALE</poste>
+ <poste code="0570600">TRESORERIE METZ ESPLANADE</poste>
+ <poste code="0570610">TRESORERIE METZ-THIONVILLE ETS. HOSP</poste>
+ <poste code="0570800">PAIERIE REGIONALE DE LORRAINE</poste>
+ <poste code="0570900">PAIERIE DEPARTEMENTALE DE LA MOSELLE</poste>
+ <poste code="0570006">PÔLE NATIONAL DE SOUTIEN AU RESEAU DE METZ - SECTEUR PUBLIC LOCAL</poste>
+ <poste code="0570001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE LA MOSELLE</poste>
+ <poste code="0570310">TRESORERIE METZERVISSE</poste>
+ <poste code="0921080">TRESORERIE DE MEUDON</poste>
+ <poste code="0781120">TRESORERIE MEULAN</poste>
+ <poste code="0450130">TRESORERIE MEUNG-SUR-LOIRE</poste>
+ <poste code="0010190">TRESORERIE MEXIMIEUX</poste>
+ <poste code="0380450">TRESORERIE MEYLAN</poste>
+ <poste code="0190100">TRESORERIE MEYMAC</poste>
+ <poste code="0480140">TRESORERIE MEYRUEIS</poste>
+ <poste code="0190300">TRESORERIE MEYSSAC</poste>
+ <poste code="0690370">TRESORERIE DE MEYZIEU</poste>
+ <poste code="0340180">TRESORERIE MEZE</poste>
+ <poste code="0140540">TRESORERIE MEZIDON-CANON</poste>
+ <poste code="0470090">TRESORERIE MEZIN</poste>
+ <poste code="0320210">TRESORERIE MIELAN</poste>
+ <poste code="0890270">TRESORERIE MIGENNES</poste>
+ <poste code="0660100">TRESORERIE MILLAS</poste>
+ <poste code="0120330">TRESORERIE MILLAU-SAINT-BEAUZELY-VEZINS</poste>
+ <poste code="0910210">TRESORERIE MILLY-LA-FORET</poste>
+ <poste code="0400070">TRESORERIE MIMIZAN</poste>
+ <poste code="0132170">TRESORERIE MIRAMAS</poste>
+ <poste code="0170310">TRESORERIE MIRAMBEAU</poste>
+ <poste code="0470250">TRESORERIE MIRAMONT-DE-GUYENNE</poste>
+ <poste code="0320230">TRESORERIE MIRANDE-MONTESQUIOU</poste>
+ <poste code="0860120">TRESORERIE MIREBEAU</poste>
+ <poste code="0210250">TRESORERIE MIREBEAU</poste>
+ <poste code="0880300">TRESORERIE MIRECOURT</poste>
+ <poste code="0090250">TRESORERIE MIREPOIX</poste>
+ <poste code="0010200">TRESORERIE MIRIBEL</poste>
+ <poste code="0730200">TRESORERIE MODANE</poste>
+ <poste code="0380240">TRESORERIE MOIRANS-VOREPPE</poste>
+ <poste code="0390350">TRESORERIE MOIRANS-EN-MONTAGNE</poste>
+ <poste code="0440120">TRESORERIE MOISDON-LA-RIVIERE</poste>
+ <poste code="0820120">TRESORERIE MOISSAC</poste>
+ <poste code="0670290">TRESORERIE DE MOLSHEIM</poste>
+ <poste code="0820140">TRESORERIE MONCLAR-DE-QUERCY</poste>
+ <poste code="0220120">TRESORERIE DE MONCONTOUR</poste>
+ <poste code="0790260">TRESORERIE MONCOUTANT</poste>
+ <poste code="0140260">TRESORERIE CAEN BANLIEUE EST</poste>
+ <poste code="0410260">TRESORERIE MONDOUBLEAU</poste>
+ <poste code="0640150">TRESORERIE MONEIN</poste>
+ <poste code="0380250">TRESORERIE MONESTIER-DE-CLERMONT</poste>
+ <poste code="0810120">TRESORERIE MONESTIES</poste>
+ <poste code="0470270">TRESORERIE DE MONFLANQUIN</poste>
+ <poste code="0430160">TRESORERIE MONISTROL-SUR-LOIRE</poste>
+ <poste code="0690520">TRESORERIE MONSOLS</poste>
+ <poste code="0400001">DEPARTEMENT DES VERIFICATIONS DES LANDES</poste>
+ <poste code="0400080">TRESORERIE MONT-DE-MARSAN</poste>
+ <poste code="0400090">TRESORERIE MONT-DE-MARSAN MUNICIPALE</poste>
+ <poste code="0400190">TRESORERIE OPDHLM DES LANDES</poste>
+ <poste code="0400900">PAIERIE DEPARTEMENTALE DES LANDES</poste>
+ <poste code="0400000">TRESORERIE GENERALE DES LANDES</poste>
+ <poste code="0660110">TRESORERIE MONT-LOUIS</poste>
+ <poste code="0390370">TRESORERIE DU VAL D'AMOUR</poste>
+ <poste code="0850090">TRESORERIE DE MONTAIGU-ROCHESERVIERE</poste>
+ <poste code="0820150">TRESORERIE MONTAIGU-DE-QUERCY</poste>
+ <poste code="0630400">TRESORERIE DE MONTAIGUT-EN-COMBRAILLE</poste>
+ <poste code="0381190">TRESORERIE MONTALIEU-VERCIEU</poste>
+ <poste code="0450400">TRESORERIE MONTARGIS</poste>
+ <poste code="0450410">TRESORERIE MONTARGIS MUNICIPALE</poste>
+ <poste code="0310160">TRESORERIE DES VALLEES DU TARN ET DU GIROU</poste>
+ <poste code="0820000">TRESORERIE GENERALE DE TARN-ET-GARONNE</poste>
+ <poste code="0820160">TRESORERIE MONTAUBAN</poste>
+ <poste code="0820170">TRESORERIE DE MONTAUBAN MUNICIPALE</poste>
+ <poste code="0820900">PAIERIE DEPARTEMENTALE DU TARN-ET-GARONNE</poste>
+ <poste code="0820001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DU TARN ET GARONNE</poste>
+ <poste code="0350220">TRESORERIE MONTAUBAN</poste>
+ <poste code="0210260">TRESORERIE MONTBARD</poste>
+ <poste code="0120340">TRESORERIE DE MONTBAZENS-LANUEJOULS</poste>
+ <poste code="0370240">TRESORERIE DE MONTBAZON</poste>
+ <poste code="0250420">TRESORERIE MONTBELIARD MUNICIPALE</poste>
+ <poste code="0900121">TRESORERIE BELFORT ETS H MONTBELIARD</poste>
+ <poste code="0700310">TRESORERIE MONTBOZON-DAMPIERRE-SUR-LINOTTE</poste>
+ <poste code="0420230">TRESORERIE MONTBRISON</poste>
+ <poste code="0160300">TRESORERIE DE MONTBRON</poste>
+ <poste code="0710450">TRESORERIE MONTCEAU-LES-MINES</poste>
+ <poste code="0710430">TRESORERIE DE MONTCENIS-MONTCHANIN</poste>
+ <poste code="0460210">TRESORERIE MONTCUQ</poste>
+ <poste code="0800310">TRESORERIE MONTDIDIER</poste>
+ <poste code="0500440">TRESORERIE MONTEBOURG</poste>
+ <poste code="0820180">TRESORERIE MONTECH</poste>
+ <poste code="0260360">TRESORERIE MONTELIMAR</poste>
+ <poste code="0770360">TRESORERIE MONTEREAU-FAULT-YONNE</poste>
+ <poste code="0840230">TRESORERIE MONTEUX</poste>
+ <poste code="0430170">TRESORERIE MONTFAUCON-EN-VELAY</poste>
+ <poste code="0840070">TRESORERIE AVIGNON CTRE HOSP.SPEC.MONTFAVET</poste>
+ <poste code="0930140">TRESORERIE DE MONTFERMEIL MUN. ET HOP.</poste>
+ <poste code="0400240">TRESORERIE MONTFORT-EN-CHALOSSE</poste>
+ <poste code="0780210">TRESORERIE MONTFORT-L'AMAURY</poste>
+ <poste code="0350230">TRESORERIE MONTFORT</poste>
+ <poste code="0270320">TRESORERIE MONTFORT-SUR-RISLE</poste>
+ <poste code="0910220">TRESORERIE MONTGERON</poste>
+ <poste code="0080290">TRESORERIE MONTHERME</poste>
+ <poste code="0880310">TRESORERIE MONTHUREUX-SUR-SAONE</poste>
+ <poste code="0520210">TRESORERIE MONTIER-EN-DER</poste>
+ <poste code="0550170">TRESORERIE DE MONTIERS-SUR-SAULX</poste>
+ <poste code="0240180">TRESORERIE MONTIGNAC-PLAZAC</poste>
+ <poste code="0780060">TRESORERIE MONTIGNY-LE-BRETONNEUX</poste>
+ <poste code="0780460">TRESORERIE YVELINES AMENDES</poste>
+ <poste code="0570320">TRESORERIE MONTIGNY-PAYS MESSIN</poste>
+ <poste code="0210270">TRESORERIE MONTIGNY-SUR-AUBE</poste>
+ <poste code="0762170">TRESORERIE MONTIVILLIERS</poste>
+ <poste code="0911100">TRESORERIE MONTLHERY</poste>
+ <poste code="0170320">TRESORERIE MONTLIEU-LA-GARDE-CHEVANCEAUX</poste>
+ <poste code="0030300">TRESORERIE DE MONTLUCON MUNICIPALE</poste>
+ <poste code="0030290">TRESORERIE DE MONTLUCON-CHATEAU</poste>
+ <poste code="0030370">TRESORERIE DE MONTLUÇON ETS HOSPITALIERS</poste>
+ <poste code="0010210">TRESORERIE MONTLUEL</poste>
+ <poste code="0030320">TRESORERIE MONTMARAULT</poste>
+ <poste code="0500120">TRESORERIE MONTMARTIN-QUETTREVILLE</poste>
+ <poste code="0550400">TRESORERIE MONTMEDY</poste>
+ <poste code="0730210">TRESORERIE MONTMELIAN</poste>
+ <poste code="0260150">TRESORERIE MONTMEYRAN</poste>
+ <poste code="0510390">TRESORERIE MONTMIRAIL</poste>
+ <poste code="0390380">TRESORERIE MONTMIREY-LE-CHATEAU</poste>
+ <poste code="0160320">TRESORERIE MONTMOREAU-SAINT-CYBARD</poste>
+ <poste code="0951070">TRESORERIE DE MONTMORENCY</poste>
+ <poste code="0860130">TRESORERIE MONTMORILLON</poste>
+ <poste code="0441120">TRESORERIE DE MONTOIR DE BRETAGNE</poste>
+ <poste code="0410270">TRESORERIE MONTOIRE-SAVIGNY</poste>
+ <poste code="0340000">TRESORERIE GENERALE DE L' HERAULT</poste>
+ <poste code="0340007">CENTRE REGIONAL DES PENSIONS DE L' HERAULT</poste>
+ <poste code="0340008">CENTRE DE FORMATION DEPARTEMENTAL DE L' HERAULT</poste>
+ <poste code="0340009">DEPARTEMENT INFORMATIQUE DE L' HERAULT</poste>
+ <poste code="0340190">TRESORERIE MONTPELLIER 1ERE DIVISION</poste>
+ <poste code="0340200">TRESORERIE MONTPELLIER 2EME DIVISION</poste>
+ <poste code="0340210">TRESORERIE MONTPELLIER MUNICIPALE</poste>
+ <poste code="0340220">TRESORERIE DE MONTPELLIER CHR</poste>
+ <poste code="0340320">TRESORERIE HERAULT AMENDES</poste>
+ <poste code="0340800">PAIERIE REGIONALE DE LANGUEDOC-ROUSSILLON</poste>
+ <poste code="0340900">PAIERIE DEPARTEMENTALE DE L' HERAULT</poste>
+ <poste code="0340001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE L' HERAULT</poste>
+ <poste code="0340006">PÔLE NATIONAL ANAFI HOSP-HLM - RISQUES COLLOC</poste>
+ <poste code="0340005">CPS CENTRE PRÉLÈVEMENT SERVICE</poste>
+ <poste code="0070170">TRESORERIE MONTPEZAT-SOUS-BAUZON</poste>
+ <poste code="0240190">TRESORERIE MONTPON-MENESTEROL-VAUCLAIRE</poste>
+ <poste code="0110260">TRESORERIE MONTREAL</poste>
+ <poste code="0810290">TRESORERIE MONTREDON-LABESSONNIE</poste>
+ <poste code="0310510">TRESORERIE DE MONTREJEAU</poste>
+ <poste code="0622230">TRESORERIE MONTREUIL-SUR-MER</poste>
+ <poste code="0930150">TRESORERIE MONTREUIL</poste>
+ <poste code="0750009">DEPARTEMENT INFORMATIQUE DE LA RECETTE GENERALE DES FINANCES</poste>
+ <poste code="0930160">TRESORERIE MONTREUIL MUNICIPALE</poste>
+ <poste code="0490520">TRESORERIE MONTREUIL-BELLAY</poste>
+ <poste code="4130000">DGCP 3ÈME SD - SYSTÈME D'INFORMATION</poste>
+ <poste code="4130100">DGCP 3A - PILOTAGE</poste>
+ <poste code="4140000">DGCP 4ÈME SD - RECETTES DE L'ETAT</poste>
+ <poste code="4130200">DGCP 3B - MOYENS INFORMATIQUES</poste>
+ <poste code="4130300">DGCP 3C - RECOUVREMENT DE L'IMPÔT</poste>
+ <poste code="4140100">DGCP 4A - PILOTAGE, RELATIONS USAGERS</poste>
+ <poste code="4130400">DGCP 3D - PROJETS DE DÉVELOPPEMENT</poste>
+ <poste code="4140200">DGCP 4B -RECOUVREMT GESTION/EXPERTISE</poste>
+ <poste code="4130500">DGCP 3E - COMPTABILITÉS-DÉPENSES ETAT</poste>
+ <poste code="4136000">DGCP EQUIPE PROJET ÉDITIQUE</poste>
+ <poste code="4140300">DGCP 4C - MOA SYSTÈME D'INFORMATION</poste>
+ <poste code="4138000">DGCP MISSION SÉCURITÉ DU SI</poste>
+ <poste code="4148000">DGCP AMENDES : RÉINGÉNIERIE</poste>
+ <poste code="4138100">DGCP CELLULE D'ANIMATION DU SI</poste>
+ <poste code="0900090">TRESORERIE DE MONTREUX-CHATEAU</poste>
+ <poste code="0490470">TRESORERIE MONTREVAULT</poste>
+ <poste code="0010220">TRESORERIE MONTREVEL-EN-BRESSE</poste>
+ <poste code="0410130">TRESORERIE MONTRICHARD</poste>
+ <poste code="0921090">TRESORERIE MONTROUGE</poste>
+ <poste code="0150150">TRESORERIE MONTSALVY</poste>
+ <poste code="0580170">TRESORERIE MONTSAUCHE</poste>
+ <poste code="0760290">TRESORERIE MONTVILLE</poste>
+ <poste code="0400110">TRESORERIE MORCENX</poste>
+ <poste code="0410280">TRESORERIE MOREE</poste>
+ <poste code="0381200">TRESORERIE MORESTEL</poste>
+ <poste code="0770370">TRESORERIE MORET-SUR-LOING</poste>
+ <poste code="0800320">TRESORERIE MOREUIL</poste>
+ <poste code="0390390">TRESORERIE DE MOREZ</poste>
+ <poste code="0640160">TRESORERIE DE MORLAAS</poste>
+ <poste code="0290250">TRESORERIE MORLAIX ET BANLIEUE</poste>
+ <poste code="0290260">TRESORERIE MORLAIX MUNICIPALE</poste>
+ <poste code="0840240">TRESORERIE DE MORMOIRON</poste>
+ <poste code="0690240">TRESORERIE MORNANT</poste>
+ <poste code="1010060">TRESORERIE MORNE-A-L'EAU</poste>
+ <poste code="0610190">TRESORERIE DE MORTAGNE-AU-PERCHE</poste>
+ <poste code="0850100">TRESORERIE MORTAGNE-SUR-SEVRE-TIFFAUGES</poste>
+ <poste code="0500300">TRESORERIE DE MORTAIN-SOURDEVAL</poste>
+ <poste code="0250480">TRESORERIE MORTEAU</poste>
+ <poste code="0061160">TRESORERIE MOUGINS</poste>
+ <poste code="0030000">TRESORERIE GENERALE DE L' ALLIER</poste>
+ <poste code="0030080">TRESORERIE DE MOULINS MUNICIPALE</poste>
+ <poste code="0030900">PAIERIE DEPARTEMENTALE DE L' ALLIER</poste>
+ <poste code="0580180">TRESORERIE MOULINS-ENGILBERT</poste>
+ <poste code="0640030">TRESORERIE DU BASSIN DE LACQ</poste>
+ <poste code="0510120">TRESORERIE MOURMELON-LE-GRAND</poste>
+ <poste code="0250310">TRESORERIE DE MOUTHE-LABERGEMENT-JOUGNE</poste>
+ <poste code="0850330">TRESORERIE DE MOUTIERS-LES-MAUXFAITS</poste>
+ <poste code="0730230">TRESORERIE DE MOUTIERS</poste>
+ <poste code="0600320">TRESORERIE MOUY</poste>
+ <poste code="0020550">TRESORERIE MOY-DE-L'AISNE</poste>
+ <poste code="0570340">TRESORERIE MOYEUVRE-GRANDE</poste>
+ <poste code="0400250">TRESORERIE MUGRON</poste>
+ <poste code="0681000">RECETTE DES FINANCES MULHOUSE</poste>
+ <poste code="0681120">TRESORERIE DE MULHOUSE RECOUVREMENT</poste>
+ <poste code="0681170">TRESORERIE MULHOUSE MUNICIPALE</poste>
+ <poste code="0681240">TRESORERIE DE MULHOUSE CENTRE HOSPITALIER</poste>
+ <poste code="0681250">TRESORERIE DE MULHOUSE COURONNE</poste>
+ <poste code="0680110">TRESORERIE MUNSTER</poste>
+ <poste code="0680130">TRESORERIE MUNTZENHEIM</poste>
+ <poste code="0220130">TRESORERIE MUR-DE-BRETAGNE</poste>
+ <poste code="0150160">TRESORERIE MURAT</poste>
+ <poste code="0310190">TRESORERIE MURET</poste>
+ <poste code="0340400">TRESORERIE DE MURVIEL-LES-BEZIERS-AUTIGNAC</poste>
+ <poste code="0240570">TRESORERIE DE VILLAMBLARD</poste>
+ <poste code="0240200">TRESORERIE MUSSIDAN</poste>
+ <poste code="0670310">TRESORERIE MUTTERSHOLTZ</poste>
+ <poste code="0670320">TRESORERIE MUTZIG</poste>
+ <poste code="0310200">TRESORERIE NAILLOUX</poste>
+ <poste code="0120350">TRESORERIE NAJAC</poste>
+ <poste code="9200000">AG.COMPT.APPROVISIONNEMENT DES ARMEES EN PRODUITS PETROLIERS</poste>
+ <poste code="0540001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE LA MEURTHE ET MOSELLE</poste>
+ <poste code="0540000">TRESORERIE GENERALE DE MEURTHE-ET-MOSELLE</poste>
+ <poste code="0540130">TRESORERIE DE NANCY</poste>
+ <poste code="0540140">TRESORERIE NANCY MUNICIPALE</poste>
+ <poste code="0540150">TRESORERIE NANCY C.H.U</poste>
+ <poste code="0540900">PAIERIE DEPARTEMENTALE DE MEURTHE-ET-MOSELLE</poste>
+ <poste code="0770200">TRESORERIE DE NANGIS</poste>
+ <poste code="0120360">TRESORERIE DU LARZAC</poste>
+ <poste code="0920000">TRESORERIE GENERALE DES HAUTS-DE-SEINE</poste>
+ <poste code="0920008">CENTRE DE FORMATION DEPARTEMENTAL DES HAUTS-DE-SEINE</poste>
+ <poste code="0920009">DEPARTEMENT INFORMATIQUE DES HAUTS-DE-SEINE</poste>
+ <poste code="0920260">TRESORERIE DE NANTERRE MUNICIPALE</poste>
+ <poste code="0920900">PAIERIE DEPARTEMENTALE DES HAUTS-DE-SEINE</poste>
+ <poste code="0920250">TRESORERIE NANTERRE</poste>
+ <poste code="0920420">TRESORERIE HAUTS-DE-SEINE AMENDES</poste>
+ <poste code="0920001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DES HAUTS DE SEINE</poste>
+ <poste code="0440000">TRESORERIE GENERALE DE LOIRE-ATLANTIQUE</poste>
+ <poste code="0440007">CENTRE REGIONAL DES PENSIONS DE LOIRE-ATLANTIQUE</poste>
+ <poste code="0440008">CENTRE DE FORMATION DEPARTEMENTAL DE LOIRE-ATLANTIQUE</poste>
+ <poste code="0440009">DEPARTEMENT INFORMATIQUE DE LOIRE-ATLANTIQUE</poste>
+ <poste code="0440130">TRESORERIE NANTES I PETIT-BOIS</poste>
+ <poste code="0440150">TRESORERIE DE NANTES FEYDEAU</poste>
+ <poste code="0440160">TRESORERIE DE NANTES-LES-PONTS AMENDES</poste>
+ <poste code="0440190">TRESORERIE DE NANTES MUNICIPALE</poste>
+ <poste code="0440200">TRESORERIE NANTES CHU</poste>
+ <poste code="0440800">PAIERIE REGIONALE DES PAYS DE LA LOIRE</poste>
+ <poste code="0440900">PAIERIE DEPARTEMENTALE DE LOIRE-ATLANTIQUE</poste>
+ <poste code="9300000">TRESORERIE GENERALE POUR L'ETRANGER</poste>
+ <poste code="9300007">CENTRE REGIONAL DES PENSIONS POUR L'ETRANGER</poste>
+ <poste code="9190000">AGENCE COMPTABLE ETS AUTONOMIE FINANCIÈRE - TGE</poste>
+ <poste code="0440001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE LOIRE ATLANTIQUE</poste>
+ <poste code="0600380">TRESORERIE NANTEUIL-LE-HAUDOUIN</poste>
+ <poste code="0870180">TRESORERIE DE NANTIAT</poste>
+ <poste code="0010230">TRESORERIE NANTUA</poste>
+ <poste code="0110490">TRESORERIE NARBONNE AGGLOMERATION</poste>
+ <poste code="0110470">TRESORERIE DE NARBONNE VILLE</poste>
+ <poste code="0120130">TRESORERIE DE NAUCELLE</poste>
+ <poste code="0640180">TRESORERIE NAVARRENX</poste>
+ <poste code="0640190">TRESORERIE NAY</poste>
+ <poste code="0780230">TRESORERIE NEAUPHLE-LE-CHATEAU</poste>
+ <poste code="0820190">TRESORERIE NEGREPELISSE</poste>
+ <poste code="0770380">TRESORERIE NEMOURS-BOURRON-MARLOTTE</poste>
+ <poste code="0470100">TRESORERIE NERAC</poste>
+ <poste code="0680140">TRESORERIE DE NEUF-BRISACH</poste>
+ <poste code="0880120">TRESORERIE COUSSEY-MARTIGNY-LES-GERBONVAUX</poste>
+ <poste code="0880320">TRESORERIE NEUFCHATEAU</poste>
+ <poste code="0760730">TRESORERIE DE NEUFCHATEL-EN-BRAY</poste>
+ <poste code="0370260">TRESORERIE DE NEUILLE-PONT-PIERRE</poste>
+ <poste code="0600390">TRESORERIE NEUILLY-EN-THELLE</poste>
+ <poste code="0930170">TRESORERIE NEUILLY-PLAISANCE</poste>
+ <poste code="0930350">TRESORERIE VILLE-EVRARD CHS</poste>
+ <poste code="0920270">TRESORERIE NEUILLY-SUR-SEINE</poste>
+ <poste code="0920280">TRESORERIE NEUILLY-SUR-SEINE MUNICIPALE</poste>
+ <poste code="0410140">TRESORERIE NEUNG-SUR-BEUVRON</poste>
+ <poste code="0540220">TRESORERIE NEUVES-MAISONS</poste>
+ <poste code="0190110">TRESORERIE NEUVIC</poste>
+ <poste code="0450150">TRESORERIE NEUVILLE-AUX-BOIS</poste>
+ <poste code="0860140">TRESORERIE NEUVILLE-DE-POITOU</poste>
+ <poste code="0593190">TRESORERIE DE NEUVILLE-SAINT-REMY</poste>
+ <poste code="0690250">TRESORERIE DE NEUVILLE-SUR-SAONE</poste>
+ <poste code="0370270">TRESORERIE DE NEUVY-LE-ROI</poste>
+ <poste code="0580000">TRESORERIE GENERALE DE LA NIEVRE</poste>
+ <poste code="0580190">TRESORERIE NEVERS</poste>
+ <poste code="0580200">TRESORERIE NEVERS MUNICIPALE ET BANLIEUE</poste>
+ <poste code="0580210">TRESORERIE NEVERS HOPITAL</poste>
+ <poste code="0580900">PAIERIE DEPARTEMENTALE DE LA NIEVRE</poste>
+ <poste code="0870190">TRESORERIE DE NEXON</poste>
+ <poste code="0060000">TRESORERIE GENERALE DES ALPES-MARITIMES</poste>
+ <poste code="0060007">CENTRE REGIONAL DES PENSIONS DES ALPES-MARITIMES</poste>
+ <poste code="0060008">CENTRE DE FORMATION DEPARTEMENTAL DES ALPES-MARITIMES</poste>
+ <poste code="0060009">DEPARTEMENT INFORMATIQUE DES ALPES-MARITIMES</poste>
+ <poste code="0060090">TRESORERIE NICE PORT-ROSSINI</poste>
+ <poste code="0060120">TRESORERIE NICE ARENES-VERDI</poste>
+ <poste code="0060130">TRESORERIE NICE LA PLAINE</poste>
+ <poste code="0060140">TRESORERIE ALPES MARITIMES AMENDES</poste>
+ <poste code="0060150">TRESORERIE NICE MUNICIPALE</poste>
+ <poste code="0060160">TRESORERIE NICE CENTRE HOSPITALIER</poste>
+ <poste code="0060260">TRESORERIE NICE OPHLM</poste>
+ <poste code="0060900">PAIERIE DEPARTEMENTALE DES ALPES-MARITIMES</poste>
+ <poste code="0060001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DES ALPES MARITIMES</poste>
+ <poste code="0671130">TRESORERIE NIEDERBRONN-LES-BAINS</poste>
+ <poste code="0300000">TRESORERIE GENERALE DU GARD</poste>
+ <poste code="0300150">TRESORERIE NIMES NORD</poste>
+ <poste code="0300160">TRESORERIE DE NIMES SUD</poste>
+ <poste code="0300180">TRESORERIE NIMES MUNICIPALE</poste>
+ <poste code="0300190">TRESORERIE NIMES CHU</poste>
+ <poste code="0300900">PAIERIE DEPARTEMENTALE DU GARD</poste>
+ <poste code="0300001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DU GARD</poste>
+ <poste code="0300170">TRESORERIE DE NIMES BANLIEUE</poste>
+ <poste code="0790000">TRESORERIE GENERALE DES DEUX-SEVRES</poste>
+ <poste code="0790180">TRESORERIE NIORT CENTRE HOSPITALIER</poste>
+ <poste code="0790290">TRESORERIE DE NIORT</poste>
+ <poste code="0790300">TRESORERIE MUNICIPALE DE NIORT-SEVRE</poste>
+ <poste code="0790900">PAIERIE DEPARTEMENTALE DES DEUX-SEVRES</poste>
+ <poste code="0790420">TRESORERIE DE NIORT OPAC SUD-DEUX-SEVRES</poste>
+ <poste code="0600270">TRESORERIE NOAILLES</poste>
+ <poste code="0320260">TRESORERIE NOGARO</poste>
+ <poste code="0520220">TRESORERIE NOGENT-BIESLES</poste>
+ <poste code="0280370">TRESORERIE NOGENT-LE-ROI</poste>
+ <poste code="0280270">TRESORERIE DE NOGENT-LE-ROTROU THIRON-GARDAIS</poste>
+ <poste code="0941050">TRESORERIE NOGENT-SUR-MARNE</poste>
+ <poste code="0941000">RECETTE DES FINANCES NOGENT-SUR-MARNE</poste>
+ <poste code="0100250">TRESORERIE DE NOGENT-SUR-SEINE</poste>
+ <poste code="0422200">TRESORERIE NOIRETABLE</poste>
+ <poste code="0850340">TRESORERIE NOIRMOUTIER-EN-L'ILE</poste>
+ <poste code="3000000">ECOLE NATIONALE DU TRESOR PUBLIC - SCN</poste>
+ <poste code="3000022">ECOLE ENT-PREPARATION AUX CONCOURS</poste>
+ <poste code="0930490">TRESORERIE DES NON RESIDENTS</poste>
+ <poste code="0756000">AGENCE COMPTABLE DES SERVICES INDUSTRIELS DE L'ARMEMENT</poste>
+ <poste code="0930008">CENTRE DE FORMATION DEPARTEMENTAL DE LA SEINE-SAINT-DENIS</poste>
+ <poste code="0930340">TRESORERIE NOISY-LE-GRAND</poste>
+ <poste code="3000020">ECOLE DES CADRES C</poste>
+ <poste code="3000030">CENTRE NATIONAL DE DOCUMENTATION DU TRESOR PUBLIC</poste>
+ <poste code="4006000">DGCP PROGRAMME HELIOS</poste>
+ <poste code="4110300">DGCP 1C : RESP. DES COMPTABLES</poste>
+ <poste code="4268000">DGCP MISSION VÉRIF COMPTES DE GESTION</poste>
+ <poste code="4008121">DGCP SERVICES GÉNÉRAUX - ANNEXE NOISY</poste>
+ <poste code="9470001">SCE DE CONTRÔLE BUDGÉTAIRE COMPTABLE MINISTÉRIEL MINEFI - ANNEXE NOISY-LE-GRAND</poste>
+ <poste code="0930180">TRESORERIE DE NOISY-LE-SEC</poste>
+ <poste code="0930006">PÔLE NATIONAL DE GESTION DES PENSIONS</poste>
+ <poste code="0210550">TRESORERIE NOLAY</poste>
+ <poste code="0540180">TRESORERIE DE NOMENY</poste>
+ <poste code="0270100">TRESORERIE NONANCOURT</poste>
+ <poste code="0240220">TRESORERIE DE NONTRON</poste>
+ <poste code="0440210">TRESORERIE NORT-SUR-ERDRE</poste>
+ <poste code="1620001">TRESORERIE GENERALE DE LA NOUVELLE-CALEDONIE</poste>
+ <poste code="1620000">TRESORERIE GENERALE DE LA NOUVELLE-CALEDONIE</poste>
+ <poste code="1620010">TRESORERIE DE LA PROVINCE SUD</poste>
+ <poste code="1620040">TRESORERIE DE LA PROVINCE DES ILES LOYAUTE</poste>
+ <poste code="1620050">PAIERIE DE LA NOUVELLE CALÉDONIE ET ETS PCS</poste>
+ <poste code="1620060">TRESORERIE CENTRES HOSPITALIERS DE NOUMEA</poste>
+ <poste code="0080320">TRESORERIE NOUZONVILLE</poste>
+ <poste code="0490370">TRESORERIE NOYANT</poste>
+ <poste code="0600520">TRESORERIE NOYON</poste>
+ <poste code="0440220">TRESORERIE NOZAY</poste>
+ <poste code="0390160">TRESORERIE NOZEROY-CENSEAU</poste>
+ <poste code="0210560">TRESORERIE NUITS-SAINT-GEORGES</poste>
+ <poste code="0260370">TRESORERIE NYONS</poste>
+ <poste code="1350000">TRESORERIE AMBASSADE DE FRANCE AU TCHAD</poste>
+ <poste code="0670350">TRESORERIE OBERNAI</poste>
+ <poste code="0670390">TRESORERIE ROSHEIM</poste>
+ <poste code="0190350">TRESORERIE AYEN</poste>
+ <poste code="0190310">TRESORERIE D' OBJAT</poste>
+ <poste code="0760640">TRESORERIE OFFRANVILLE</poste>
+ <poste code="0800710">TRESORERIE OISEMONT</poste>
+ <poste code="0830100">TRESORERIE OLLIOULES</poste>
+ <poste code="0640200">TRESORERIE OLORON-ARAMITS</poste>
+ <poste code="0410150">TRESORERIE D' ONZAIN-HERBAULT</poste>
+ <poste code="0840250">TRESORERIE ORANGE</poste>
+ <poste code="0140550">TRESORERIE ORBEC</poste>
+ <poste code="0593070">TRESORERIE ORCHIES</poste>
+ <poste code="0390170">TRESORERIE ORGELET</poste>
+ <poste code="0132090">TRESORERIE ORGON</poste>
+ <poste code="0450170">TRESORERIE D' ORLEANS</poste>
+ <poste code="0450000">TRESORERIE GENERALE DU LOIRET</poste>
+ <poste code="0450001">ANNEXE T.G. DU LOIRET</poste>
+ <poste code="0450110">TRESORERIE ORLEANS BANLIEUE</poste>
+ <poste code="0450800">PAIERIE REGIONALE DE CENTRE</poste>
+ <poste code="0450190">TRESORERIE D' ORLEANS MUNICIPALE</poste>
+ <poste code="0450200">TRESORERIE ORLEANS CENTRES HOSPITALIERS</poste>
+ <poste code="0450900">PAIERIE DEPARTEMENTALE DU LOIRET</poste>
+ <poste code="0450002">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DU LOIRET</poste>
+ <poste code="0450160">TRESORERIE OLIVET</poste>
+ <poste code="0940300">TRESORERIE ORLY</poste>
+ <poste code="0250160">TRESORERIE ORNANS</poste>
+ <poste code="0911110">TRESORERIE ORSAY</poste>
+ <poste code="0640210">TRESORERIE D' ORTHEZ</poste>
+ <poste code="0650230">TRESORERIE OSSUN</poste>
+ <poste code="0681180">TRESORERIE OTTMARSHEIM</poste>
+ <poste code="1250000">TRESORERIE AMBASSADE DE FRANCE AU BURKINA-FASO</poste>
+ <poste code="0140250">TRESORERIE OUISTREHAM</poste>
+ <poste code="0690260">TRESORERIE OULLINS</poste>
+ <poste code="0090120">TRESORERIE OUST-MASSAT</poste>
+ <poste code="0450420">TRESORERIE OUTARVILLE</poste>
+ <poste code="0622090">TRESORERIE D' OUTREAU</poste>
+ <poste code="0622310">TRESORERIE OYE-PLAGE</poste>
+ <poste code="0010240">TRESORERIE OYONNAX</poste>
+ <poste code="0270110">TRESORERIE PACY-SUR-EURE</poste>
+ <poste code="0441190">TRESORERIE PAIMBOEUF</poste>
+ <poste code="0220460">TRESORERIE PAIMPOL</poste>
+ <poste code="0911120">TRESORERIE PALAISEAU</poste>
+ <poste code="0911000">RECETTE DES FINANCES PALAISEAU</poste>
+ <poste code="0090260">TRESORERIE DE PAMIERS</poste>
+ <poste code="0930190">TRESORERIE PANTIN</poste>
+ <poste code="0930200">TRESORERIE PANTIN MUNICIPALE</poste>
+ <poste code="0930390">TRESORERIE SEINE-SAINT-DENIS AMENDES</poste>
+ <poste code="9130000">AGENCE COMPTABLE DIRECTION GRANDES ENTREPRISES</poste>
+ <poste code="1610020">TRESORERIE DU VENT, AUSTRALES ET ARCHIPELS</poste>
+ <poste code="1610000">TRESORERIE GENERALE DE LA POLYNESIE FRANCAISE</poste>
+ <poste code="1610050">TRESORERIE DES ETABLISSEMENTS PUBLICS</poste>
+ <poste code="1610060">TRESORERIE DE LA PAIERIE DE POLYNESIE FRANCAISE</poste>
+ <poste code="1610070">TRESORERIE CTRE HOSP DE POLYNESIE FRANCAISE</poste>
+ <poste code="0710230">TRESORERIE PARAY-LE-MONIAL</poste>
+ <poste code="0400120">TRESORERIE PARENTIS-EN-BORN</poste>
+ <poste code="0750060">TRESORERIE PARIS 5E ARRONDISSEMENT</poste>
+ <poste code="0750110">TRESORERIE PARIS 8 E</poste>
+ <poste code="0750000">RECETTE GENERALE DES FINANCES DE PARIS</poste>
+ <poste code="0750001">RECETTE GENERALE DES FINANCES DE PARIS - ANNEXE NDV</poste>
+ <poste code="0750008">CENTRE DE FORMATION DEPARTEMENTAL DE LA R.G.F. DE PARIS</poste>
+ <poste code="0750010">TRESORERIE DE PARIS CENTRE</poste>
+ <poste code="0750080">TRESORERIE PARIS 6E ARRONDT</poste>
+ <poste code="0750100">TRESORERIE PARIS 7E ARRONDISSEMENT</poste>
+ <poste code="0750140">TRESORERIE PARIS 9E ARRONDT 1ERE DIVISION</poste>
+ <poste code="0750150">TRESORERIE PARIS 9E ARRONDT 2EME DIVISION</poste>
+ <poste code="0750160">TRESORERIE PARIS 10E ARRONDT 1ERE DIVISION</poste>
+ <poste code="0750170">TRESORERIE PARIS 10E ARRONDT 2EME DIVISION</poste>
+ <poste code="0750180">TRESORERIE PARIS 11E ARRONDT 1ERE DIVISION</poste>
+ <poste code="0750190">TRESORERIE DE PARIS 11E ARRONDT 2EME DIVISION</poste>
+ <poste code="0750210">TRESORERIE PARIS 12E ARRONDT 1ERE DIVISION</poste>
+ <poste code="0750220">TRESORERIE PARIS 12E ARRONDT 2EME DIVISION</poste>
+ <poste code="0750230">TRESORERIE PARIS 13E ARRONDT 1ERE DIVISION</poste>
+ <poste code="0750240">TRESORERIE PARIS 13E ARRONDT 2EME DIVISION</poste>
+ <poste code="0750250">TRESORERIE PARIS 14E ARRONDT 1ERE DIVISION</poste>
+ <poste code="0750260">TRESORERIE PARIS 14E ARRONDT 2EME DIVISION</poste>
+ <poste code="0750280">TRESORERIE PARIS 15E ARRONDT 1ERE DIVISION</poste>
+ <poste code="0750290">TRESORERIE PARIS 15E ARRONDT 2EME DIVISION</poste>
+ <poste code="0750300">TRESORERIE PARIS 15E ARRONDT 3EME DIVISION</poste>
+ <poste code="0750310">TRESORERIE PARIS 16E ARRONDT 1ERE DIVISION</poste>
+ <poste code="0750320">TRESORERIE PARIS 16E ARRONDT 2EME DIVISION</poste>
+ <poste code="0750330">TRESORERIE PARIS 16E ARRONDT 3EME DIVISION</poste>
+ <poste code="0750340">TRESORERIE PARIS 17E ARRONDT 1ERE DIVISION</poste>
+ <poste code="0750350">TRESORERIE PARIS 17E ARRONDT 2EME DIVISION</poste>
+ <poste code="0750360">TRESORERIE PARIS 17E ARRONDT 3EME DIVISION</poste>
+ <poste code="0750370">TRESORERIE PARIS 17E ARRONDT 4EME DIVISION</poste>
+ <poste code="0750380">TRESORERIE DE PARIS 18E ARRONDT 1ERE DIVISION</poste>
+ <poste code="0750400">TRESORERIE PARIS 18E ARRONDT 2EME DIVISION</poste>
+ <poste code="0750410">TRESORERIE PARIS 19E ARRONDT 1ERE DIVISION</poste>
+ <poste code="0750420">TRESORERIE PARIS 19E ARRONDT 2EME DIVISION</poste>
+ <poste code="0750430">TRESORERIE PARIS 20E ARRONDT 1ERE DIVISION</poste>
+ <poste code="0750440">TRESORERIE PARIS 20E ARRONDT 2EME DIVISION</poste>
+ <poste code="0750450">TRESORERIE PARIS 15E ARRONDT 4EME DIVISION</poste>
+ <poste code="0750470">TRESORERIE PARIS 16E ARRONDT 4EME DIVISION</poste>
+ <poste code="0750610">TRESORERIE PARIS AMENDES 1ERE DIVISION</poste>
+ <poste code="0750620">TRESORERIE PARIS AMENDES 2EME DIVISION</poste>
+ <poste code="0750630">TRESORERIE PARIS AMENDES DE TRANSPORTS</poste>
+ <poste code="0750640">TRESORERIE PARIS CENTRES HOSPITALIERS SPEC.</poste>
+ <poste code="0750650">TRESORERIE ETABLISSEMENTS PUBLICS LOCAUX</poste>
+ <poste code="0750660">TRESORERIE CENTRE D'ACTION SOCIALE DE PARIS</poste>
+ <poste code="0750990">RECETTE GENERALE DES FINANCES DE PARIS-VILLE-DÉPT-PRÉF POLICE</poste>
+ <poste code="0751000">AGENCE COMPTABLE DES SERVICES DES AEROPORTS DE PARIS</poste>
+ <poste code="0752000">PAIERIE GENERALE DU TRESOR</poste>
+ <poste code="0752009">DEPARTEMENT INFORMATIQUE DE LA PAIERIE GÉNÉRALE DU TRÉSOR</poste>
+ <poste code="0753000">TRESORERIE GENERALE DE L' ASSISTANCE PUB. - HOPITAUX PARIS</poste>
+ <poste code="0753001">TRESORERIE GENERALE ANNEXE ASSISTANCE PUB.-HÔP.PARIS</poste>
+ <poste code="0753009">DEPARTEMENT INFORMATIQUE DE L' ASSISTANCE PUB. - HOPITAUX PARIS</poste>
+ <poste code="0754000">RECETTE PRINCIPALE REGIONALE DES DOUANES DE PARIS</poste>
+ <poste code="0755000">AGENCE COMPTABLE DES IMPOTS DE PARIS</poste>
+ <poste code="9000000">TRESORERIE GENERALE DE L' ACCT</poste>
+ <poste code="9000009">DEPARTEMENT INFORMATIQUE DE L' ACCT</poste>
+ <poste code="9100000">AGENCE COMPTABLE DOCUMENTATION FRANCAISE</poste>
+ <poste code="9150000">AGENCE COMPTABLE FONDS PEREQ. TRANSPORTS AERIENS</poste>
+ <poste code="9300010">SERVICE DE LA TRESORERIE DE L' ANTENNE TGE</poste>
+ <poste code="9420000">SCE DE CONTRÔLE BUDGÉTAIRE COMPTABLE MINISTÉRIEL AUPRES DU MINISTERE CHARGE DE L'INTERIEUR</poste>
+ <poste code="0750991">RECETTE GENERALE DES FINANCES DE PARIS - RÉGION</poste>
+ <poste code="0750992">RECETTE GENERALE DES FINANCES DE PARIS - ETS INTERDEPARTEMENTAUX</poste>
+ <poste code="0750993">RECETTE GENERALE DES FINANCES DE PARIS - AUTRES ETS LOCAUX</poste>
+ <poste code="9510000">SCE DE CONTRÔLE BUDGÉTAIRE COMPTABLE MINISTÉRIEL AUPRES DES SERVICES DU 1ER MINISTRE</poste>
+ <poste code="9520000">SCE DE CONTRÔLE BUDGÉTAIRE COMPTABLE MINISTÉRIEL AUPRES DU MINISTÈRE CHARGÉ DE LA CULTURE</poste>
+ <poste code="9120000">AGENCE COMPTABLE DU B.A. MONNAIES ET MÉDAILLES</poste>
+ <poste code="9170000">AGENCE COMPTABLE BA PUBLI OFFICIELLES - INFO ADMI</poste>
+ <poste code="9090009">DEPARTEMENT INFORMATIQUE CBLE CENTRALISATEUR COMPTES ÉTAT</poste>
+ <poste code="9110000">AGENCE COMPTABLE DU SERVICE CTRE NAT.FONCTION PUBL.TERRITOR.</poste>
+ <poste code="0759000">AGENCE COMPT. REGIE INDUSTRIELLE ETABLISSEMENTS PENITENTIAIRES</poste>
+ <poste code="9430000">SCE DE CONTRÔLE BUDGÉTAIRE COMPTABLE MINISTÉRIEL AUPRES DU MINISTÈRE CHARGÉ DE LA JUSTICE</poste>
+ <poste code="0750006">PÔLE NATIONAL DE SOUTIEN AU RESEAU MOYENS DE PAIEMENT DU SPL</poste>
+ <poste code="0750007">CENTRE REGIONAL DES PENSIONS DU TRESOR</poste>
+ <poste code="9530000">SCE DE CONTRÔLE BUDGÉTAIRE COMPTABLE MINISTÉRIEL AUPRES DU MINISTÈRE DE L'ENVIRONNEMENT</poste>
+ <poste code="9940001">RECETTE DES FINANCES DOMAINE - ANNEXE ST-PÉTERSBOURG</poste>
+ <poste code="9700000">RECETTE GENERALE DES FINANCES LIQUIDATION OP REDEVANCE</poste>
+ <poste code="0750002">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE PARIS</poste>
+ <poste code="4000000">DGCP DIRECTION GÉNÉRALE</poste>
+ <poste code="4008300">DGCP CONTRÔLE DE GESTION</poste>
+ <poste code="4100000">DGCP SERVICE RESSOURCES RÉSEAU</poste>
+ <poste code="4200000">DGCP SERVICE FONCTION COMPTABLE ÉTAT</poste>
+ <poste code="4110000">DGCP 1ÈRE SD : PILOTAGE-BUDGET-RÉSEAU</poste>
+ <poste code="4008000">DGCP MISSION AUDIT EVAL CONTRÔLE</poste>
+ <poste code="4120000">DGCP 2ÈME SD - RESSOURCES HUMAINES</poste>
+ <poste code="4008100">DGCP CABINET DU DIRECTEUR GÉNÉRAL</poste>
+ <poste code="4126000">DGCP MISSION SIRH (SEQUOIA)</poste>
+ <poste code="4008110">DGCP COMMUNICATION</poste>
+ <poste code="4008120">DGCP SERVICES GENERAUX</poste>
+ <poste code="4010000">DGCP SCN COPERNIC</poste>
+ <poste code="4110100">DGCP 1A - PILOTAGE ET RÉSEAU</poste>
+ <poste code="4120100">DGCP 2A - PILOTAGE ET DIALOGUE SOCIAL</poste>
+ <poste code="4008200">DGCP PORTAIL MINEFI COLLOC</poste>
+ <poste code="4108000">DGCP MISSION DE COOP INTERNATIONALE</poste>
+ <poste code="4110200">DGCP 1B - MOYENS BUDG. ET IMMO.</poste>
+ <poste code="4118000">DGCP CELLULE QUALITÉ SIMPLIFICATION</poste>
+ <poste code="4120300">DGCP 2C - CADRES SUP, AGENTS CPTABLES</poste>
+ <poste code="4110500">DGCP CELLULE SÉCURITÉ</poste>
+ <poste code="4120400">DGCP 2D - PERSONNELS DE CATÉGORIE A</poste>
+ <poste code="4110400">DGCP 1D : EXPERTISE ET ACTIONS ÉCO.</poste>
+ <poste code="4150000">DGCP 5ÈME SD : SECTEUR PUBLIC LOCAL</poste>
+ <poste code="4150100">DGCP 5A : PILOTAGE ET MOA DU SI</poste>
+ <poste code="4150200">DGCP 5B : EXPERTISE JURIDIQUE</poste>
+ <poste code="4270000">DGCP 7ÈME SD : ORG. COMPTABLE/DÉPENSE</poste>
+ <poste code="4150300">DGCP 5C : COMPTABILITÉS LOCALES</poste>
+ <poste code="4206000">DGCP FCE-MISSION CONDUITE CHANGEMENT</poste>
+ <poste code="4270100">DGCP 7A -ORGANISATION COMPTABLE</poste>
+ <poste code="4150400">DGCP 5D : ACTIV. BANC. ET SERV. FIN</poste>
+ <poste code="4206100">DGCP FCE-MISSION DOCTRINE COMPTABLE</poste>
+ <poste code="4270200">DGCP 7B : MODERNISATION DE LA DÉPENSE</poste>
+ <poste code="4270300">DGCP 7C - RÉMUNÉRATIONS ET PENSIONS</poste>
+ <poste code="4270400">DGCP 7D : OPÉRATEURS DE L ETAT</poste>
+ <poste code="4260000">DGCP 6ÈME SD - NORMES ET AUDITS COMPT</poste>
+ <poste code="4260100">DGCP 6A - CONTRÔLE ET AUDIT INTERNES</poste>
+ <poste code="4260200">DGCP 6B - COMPTABILITÉ DE L'ÉTAT</poste>
+ <poste code="4260300">DGCP 6C - COMPTES NATIONAUX</poste>
+ <poste code="9470000">SCE DE CONTRÔLE BUDGÉTAIRE COMPTABLE MINISTÉRIEL AUPRES DU MINÉFI</poste>
+ <poste code="4006100">DGCP MISSION CNE DGI/DGCP - ACCUEIL</poste>
+ <poste code="4300000">DGCP SERVICE FRANCE DOMAINE</poste>
+ <poste code="4300100">DGCP MISSIONS DOMANIALES</poste>
+ <poste code="4306000">DGCP POLITIQUE IMMOBILIÈRE DE L'ETAT</poste>
+ <poste code="9090000">RECETTE DES FINANCES CBLE CENTRALISATEUR COMPTES ÉTAT</poste>
+ <poste code="4120200">DGCP 2B - FORMATION ET GPEEC</poste>
+ <poste code="4120500">DGCP 2E - PERSONNELS B,C,CONTRACTUELS</poste>
+ <poste code="9540000">SCE DE CONTRÔLE BUDGÉTAIRE COMPTABLE MINISTÉRIEL AUPRES DU MINISTÈRE JEUNESSE ET SPORTS</poste>
+ <poste code="4260101">DGCP BUREAU 6A - ANNEXE AURIOL</poste>
+ <poste code="9490000">SCE DE CONTRÔLE BUDGÉTAIRE COMPTABLE MINISTÉRIEL AUPRES DU MINISTÈRE AFFAIRES SOCIALES</poste>
+ <poste code="9480000">SCE DE CONTRÔLE BUDGÉTAIRE COMPTABLE MINISTÉRIEL AUPRES DU MINISTÈRE CHARGÉ DE L'EMPLOI</poste>
+ <poste code="9140000">AGENCE COMPTABLE DU BA CONTRÔLE EXPLOITATION AÉRIEN</poste>
+ <poste code="9160000">AGENCE COMPTABLE DU BA DES JOURNAUX OFFICIELS</poste>
+ <poste code="0750480">TRESORERIE PARIS 20E ARRONDT 3EME DIVISION</poste>
+ <poste code="9450000">SCE DE CONTRÔLE BUDGÉTAIRE COMPTABLE MINISTÉRIEL AUPRES DU MINISTÈRE DE L'ÉQUIPEMENT</poste>
+ <poste code="9410000">SCE DE CONTRÔLE BUDGÉTAIRE COMPTABLE MINISTÉRIEL AUPRES DU MINISTÈRE AGRICULTURE</poste>
+ <poste code="9440000">SCE DE CONTRÔLE BUDGÉTAIRE COMPTABLE MINISTÉRIEL AUPRES DU MINISTÈRE DE L'OUTRE-MER</poste>
+ <poste code="9460000">SCE DE CONTRÔLE BUDGÉTAIRE COMPTABLE MINISTÉRIEL AUPRES DU MINISTÈRE DE L'ÉDUCATION ET RECH</poste>
+ <poste code="0790320">TRESORERIE DE PARTHENAY</poste>
+ <poste code="0450220">TRESORERIE PATAY</poste>
+ <poste code="0640000">TRESORERIE GENERALE DES PYRENEES-ATLANTIQUES</poste>
+ <poste code="0640230">TRESORERIE DE PAU</poste>
+ <poste code="0640250">TRESORERIE PAU ETABLISSEMENTS HOSPITALIERS</poste>
+ <poste code="0640260">TRESORERIE PAU MUNICIPALE</poste>
+ <poste code="0640900">PAIERIE DEPARTEMENTALE DES PYRENEES-ATLANTIQUES</poste>
+ <poste code="0640001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DES PYRENEES-ATLANTIQUES</poste>
+ <poste code="0330390">TRESORERIE DE PAUILLAC</poste>
+ <poste code="0430180">TRESORERIE PAULHAGUET</poste>
+ <poste code="1500000">TRESORERIE AMBASSADE DE FRANCE EN CHINE A PEKIN</poste>
+ <poste code="0420070">TRESORERIE PELUSSIN</poste>
+ <poste code="0470280">TRESORERIE PENNE-D'AGENAIS</poste>
+ <poste code="0500140">TRESORERIE PERIERS-SAINT-SAUVEUR-LENDELIN</poste>
+ <poste code="0170100">TRESORERIE LA ROCHELLE BANLIEUE</poste>
+ <poste code="0240000">TRESORERIE GENERALE DE LA DORDOGNE</poste>
+ <poste code="0240240">TRESORERIE DE PERIGUEUX MUNICIPALE</poste>
+ <poste code="0240450">TRESORERIE PERIGUEUX ETS HOSP</poste>
+ <poste code="0240900">PAIERIE DEPARTEMENTALE DE LA DORDOGNE</poste>
+ <poste code="0240230">TRESORERIE DE PERIGUEUX</poste>
+ <poste code="0240001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE LA DORDOGNE</poste>
+ <poste code="0620410">TRESORERIE HEUCHIN-PERNES</poste>
+ <poste code="0840260">TRESORERIE PERNES-LES-FONTAINES</poste>
+ <poste code="0010290">TRESORERIE BOURG BANLIEUE</poste>
+ <poste code="0800560">TRESORERIE PERONNE</poste>
+ <poste code="0660000">TRESORERIE GENERALE DES PYRENEES-ORIENTALES</poste>
+ <poste code="0660130">TRESORERIE PERPIGNAN</poste>
+ <poste code="0660140">TRESORERIE PERPIGNAN MUNICIPALE</poste>
+ <poste code="0660150">TRESORERIE PERPIGNAN HOSPICES</poste>
+ <poste code="0660290">TRESORERIE DE PERPIGNAN HLM</poste>
+ <poste code="0660001">CELLULE CONTRÔLE REDEVANCE AUDIOVISUELLE DES PYRENEES ORIENTALES</poste>
+ <poste code="0710240">TRESORERIE DE PERRECY-PALINGES</poste>
+ <poste code="0220370">TRESORERIE PERROS-GUIREC</poste>
+ <poste code="0840150">TRESORERIE PERTUIS</poste>
+ <poste code="0330410">TRESORERIE PESSAC</poste>
+ <poste code="0400260">TRESORERIE PEYREHORADE</poste>
+ <poste code="0110300">TRESORERIE PEYRIAC-MINERVOIS</poste>
+ <poste code="0131120">TRESORERIE PEYROLLES-EN-PROVENCE</poste>
+ <poste code="0340410">TRESORERIE PEZENAS</poste>
+ <poste code="0590300">TRESORERIE PHALEMPIN</poste>
+ <poste code="0570350">TRESORERIE PHALSBOURG</poste>
+ <poste code="02A0060">TRESORERIE EVISA</poste>
+ <poste code="0800350">TRESORERIE PICQUIGNY</poste>
+ <poste code="02B0170">TRESORERIE PIEDICROCE</poste>
+ <poste code="0870230">TRESORERIE DE PIERRE-BUFFIERE</poste>
+ <poste code="0710520">TRESORERIE PIERRE-DE-BRESSE-SAINT-MARTIN</poste>
+ <poste code="0830110">TRESORERIE PIERREFEU-DU-VAR CTRE PSYCHO.</poste>
+ <poste code="0250170">TRESORERIE DE PIERREFONTAINE-LES VARANS</poste>
+ <poste code="0260380">TRESORERIE PIERRELATTE</poste>
+ <poste code="0100260">TRESORERIE DE PINEY</poste>
+ <poste code="0350250">TRESORERIE DE PIPRIAC-MAURE</poste>
+ <poste code="0400130">TRESORERIE PISSOS</poste>
+ <poste code="0450430">TRESORERIE PITHIVIERS</poste>
+ <poste code="0290160">TRESORERIE PLABENNEC</poste>
+ <poste code="0320010">TRESORERIE AIGNAN</poste>
+ <poste code="0320270">TRESORERIE PLAISANCE</poste>
+ <poste code="0780240">TRESORERIE PLAISIR ETS HOSP</poste>
+ <poste code="0780350">TRESORERIE PLAISIR</poste>
+ <poste code="0220300">TRESORERIE PLANCOET</poste>
+ <poste code="0150190">TRESORERIE PLEAUX</poste>
+ <poste code="0350260">TRESORERIE PLELAN-LE-GRAND</poste>
+ <poste code="0220150">TRESORERIE PLENEUF-VAL-ANDRE</poste>
+ <poste code="0220380">TRESORERIE PLESTIN-LES-GREVES</poste>
+ <poste code="0860350">TRESORERIE PLEUMARTIN</poste>
+ <poste code="0290170">TRESORERIE PLEYBEN</poste>
+ <poste code="0290310">TRESORERIE SAINT-THEGONNEC</poste>
+ <poste code="0560100">TRESORERIE PLOERMEL</poste>
+ <poste code="0220160">TRESORERIE DE PLOEUC-SUR-LIE</poste>
+ <poste code="0292060">TRESORERIE PLOGASTEL ET PLONEOUR</poste>
+ <poste code="0880330">TRESORERIE PLOMBIERES-LES-BAINS</poste>
+ <poste code="0220390">TRESORERIE PLOUARET</poste>
+ <poste code="0560320">TRESORERIE PLOUAY</poste>
+ <poste code="0220310">TRESORERIE PLOUBALAY</poste>
+ <poste code="0290180">TRESORERIE PLOUDALMEZEAU</poste>
+ <poste code="0290270">TRESORERIE PLOUESCAT</poste>
+ <poste code="0290280">TRESORERIE PLOUIGNEAU-GUERLESQUIN</poste>
+ <poste code="0560330">TRESORERIE PLUVIGNER</poste>
+ <poste code="0330420">TRESORERIE PODENSAC</poste>
+ <poste code="1620030">TRESORERIE DE POINDIMIE</poste>
+ <poste code="1010090">TRESORERIE POINTE-A-PITRE</poste>
+ <poste code="1010180">TRESORERIE POINTE-A-PITRE MUNICIPALE</poste>
+ <poste code="1010100">TRESORERIE POINTE-NOIRE</poste>
+ <poste code="0781140">TRESORERIE POISSY</poste>
+ <poste code="0781000">RECETTE DES FINANCES POISSY VAL DE SEINE</poste>
+ <poste code="0860000">TRESORERIE GENERALE DE LA VIENNE</poste>
+ <poste code="0860020">TRESORERIE BIARD</poste>
+ <poste code="0860150">TRESORERIE POITIERS</poste>
+ <poste code="0860160">TRESORERIE POITIERS MUNICIPALE</poste>
+ <poste code="0860170">TRESORERIE POITIERS ETS HOSP.</poste>
+ <poste code="0860291">TRESORERIE ANNEXE OPAC VILLE DE POITIERS</poste>
+ <poste code="0860800">PAIERIE REGIONALE DE POITOU-CHARENTES</poste>
+ <poste code="0860900">PAIERIE DEPARTEMENTALE DE LA VIENNE</poste>
+ <poste code="0860001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE LA VIENNE</poste>
+ <poste code="0860006">PÔLE NATIONAL P@BLO</poste>
+ <poste code="0800360">TRESORERIE POIX-DE-P-QUEVAUVILLERS</poste>
+ <poste code="0080350">TRESORERIE POIX-TERRON</poste>
+ <poste code="0390190">TRESORERIE POLIGNY</poste>
+ <poste code="0010250">TRESORERIE PONCIN</poste>
+ <poste code="0170330">TRESORERIE PONS-PERIGNAC</poste>
+ <poste code="0590310">TRESORERIE PONT-A-MARCQ</poste>
+ <poste code="0540200">TRESORERIE PONT-A-MOUSSON</poste>
+ <poste code="0620810">TRESORERIE PONT-A-VENDIN</poste>
+ <poste code="0270340">TRESORERIE DE PONT-AUDEMER</poste>
+ <poste code="0292080">TRESORERIE PONT-AVEN</poste>
+ <poste code="0292090">TRESORERIE DE PONT-CROIX</poste>
+ <poste code="0010260">TRESORERIE PONT-D'AIN</poste>
+ <poste code="0381150">TRESORERIE PONT-DE-CHERUY</poste>
+ <poste code="0270350">TRESORERIE PONT-DE-L'ARCHE</poste>
+ <poste code="0250430">TRESORERIE PONT-DE-ROIDE</poste>
+ <poste code="0120140">TRESORERIE DU LEVEZOU</poste>
+ <poste code="0010270">TRESORERIE PONT-DE-VAUX</poste>
+ <poste code="0010280">TRESORERIE PONT-DE-VEYLE</poste>
+ <poste code="0630220">TRESORERIE PONT-DU-CHATEAU</poste>
+ <poste code="0292100">TRESORERIE PONT-L'ABBE</poste>
+ <poste code="0140560">TRESORERIE PONT-L'EVEQUE</poste>
+ <poste code="0600400">TRESORERIE PONT-SAINTE-MAXENCE</poste>
+ <poste code="0300200">TRESORERIE PONT-SAINT-ESPRIT</poste>
+ <poste code="0890490">TRESORERIE PONT-SUR-YONNE</poste>
+ <poste code="0640280">TRESORERIE PONTACQ-SOUMOULOU</poste>
+ <poste code="0210290">TRESORERIE PONTAILLER-SUR-SAONE</poste>
+ <poste code="0250320">TRESORERIE PONTARLIER ET BANLIEUE</poste>
+ <poste code="0250330">TRESORERIE PONTARLIER MUNICIPALE</poste>
+ <poste code="0770280">TRESORERIE ROISSY-PONTAULT-COMBAULT</poste>
+ <poste code="0630420">TRESORERIE PONTAUMUR</poste>
+ <poste code="0380300">TRESORERIE PONTCHARRA</poste>
+ <poste code="0441080">TRESORERIE DE PONTCHATEAU</poste>
+ <poste code="02B0130">TRESORERIE MOROSAGLIA</poste>
+ <poste code="0512070">TRESORERIE DE PONTFAVERGER-BEINE-NAUROY</poste>
+ <poste code="0630430">TRESORERIE PONTGIBAUD</poste>
+ <poste code="0560240">TRESORERIE PONTIVY</poste>
+ <poste code="0950320">TRESORERIE PONTOISE CENTRE HOSP</poste>
+ <poste code="0500310">TRESORERIE PONTORSON</poste>
+ <poste code="0220400">TRESORERIE PONTRIEUX</poste>
+ <poste code="0441170">TRESORERIE PORNIC</poste>
+ <poste code="0132160">TRESORERIE PORT-DE-BOUC</poste>
+ <poste code="0560350">TRESORERIE PORT-LOUIS</poste>
+ <poste code="1010110">TRESORERIE PORT-LOUIS</poste>
+ <poste code="0700350">TRESORERIE PORT-SUR-SAONE</poste>
+ <poste code="0660160">TRESORERIE PORT-VENDRES</poste>
+ <poste code="02A0130">TRESORERIE PORTO-VECCHIO</poste>
+ <poste code="0490200">TRESORERIE POUANCE</poste>
+ <poste code="0580220">TRESORERIE POUGUES-LES-EAUX</poste>
+ <poste code="0250090">TRESORERIE POUILLEY-LES-VIGNES</poste>
+ <poste code="0400270">TRESORERIE POUILLON</poste>
+ <poste code="0210570">TRESORERIE POUILLY-EN-AUXOIS</poste>
+ <poste code="0580230">TRESORERIE POUILLY-SUR-LOIRE</poste>
+ <poste code="0850250">TRESORERIE POUZAUGES</poste>
+ <poste code="0430210">TRESORERIE PRADELLES-LANDOS</poste>
+ <poste code="0660170">TRESORERIE PRADES</poste>
+ <poste code="0790330">TRESORERIE PRAHECQ</poste>
+ <poste code="0660180">TRESORERIE PRATS-DE-MOLLO-LA-PRESTE</poste>
+ <poste code="0520380">TRESORERIE DE PRAUTHOY</poste>
+ <poste code="0470110">TRESORERIE DE PRAYSSAS</poste>
+ <poste code="0530290">TRESORERIE PRE-EN-PAIL</poste>
+ <poste code="0210300">TRESORERIE PRECY-SOUS-THIL</poste>
+ <poste code="0580240">TRESORERIE PREMERY</poste>
+ <poste code="0370300">TRESORERIE PREUILLY-SUR-CLAISE</poste>
+ <poste code="0070000">TRESORERIE GENERALE DE L' ARDECHE</poste>
+ <poste code="0070180">TRESORERIE DE PRIVAS MUNICIPALE</poste>
+ <poste code="0070900">PAIERIE DEPARTEMENTALE DE L' ARDECHE</poste>
+ <poste code="0070420">TRESORERIE DE PRIVAS</poste>
+ <poste code="0770210">TRESORERIE PROVINS</poste>
+ <poste code="0060170">TRESORERIE DE PUGET-THENIERS</poste>
+ <poste code="0610390">TRESORERIE DE PUTANGES-PONT-ECREPIN</poste>
+ <poste code="0920300">TRESORERIE PUTEAUX MUNICIPALE</poste>
+ <poste code="9250000">AGENCE COMPTABLE AGENCE COMPTABLE PARC EQUIPEMENT</poste>
+ <poste code="0571110">TRESORERIE PUTTELANGE-AUX-LACS</poste>
+ <poste code="0460230">TRESORERIE PUY-L'EVEQUE-DURAVEL</poste>
+ <poste code="0260180">TRESORERIE PUY-SAINT-MARTIN-BOURDEAUX</poste>
+ <poste code="0810300">TRESORERIE DE PUYLAURENS</poste>
+ <poste code="0590320">TRESORERIE QUESNOY-SUR-DEULE</poste>
+ <poste code="0560110">TRESORERIE DE QUESTEMBERT</poste>
+ <poste code="0500460">TRESORERIE QUETTEHOU</poste>
+ <poste code="0110320">TRESORERIE DE QUILLAN</poste>
+ <poste code="0292110">TRESORERIE QUIMPER BANLIEUE</poste>
+ <poste code="0292000">RECETTE DES FINANCES QUIMPER</poste>
+ <poste code="0292120">TRESORERIE QUIMPER MUNICIPALE</poste>
+ <poste code="0292160">TRESORERIE QUIMPER CENTRES HOSPITALIERS</poste>
+ <poste code="0292130">TRESORERIE QUIMPERLE</poste>
+ <poste code="0250180">TRESORERIE QUINGEY</poste>
+ <poste code="0220180">TRESORERIE QUINTIN</poste>
+ <poste code="0300210">TRESORERIE QUISSAC-SAUVE</poste>
+ <poste code="0810140">TRESORERIE RABASTENS-SALVAGNAC</poste>
+ <poste code="0650250">TRESORERIE RABASTENS-DE-BIGORRE</poste>
+ <poste code="1180000">TRESORERIE AMBASSADE DE FRANCE AU MAROC</poste>
+ <poste code="0595100">TRESORERIE RAISMES</poste>
+ <poste code="0880340">TRESORERIE RAMBERVILLERS-XAFFEVILLERS</poste>
+ <poste code="0780260">TRESORERIE RAMBOUILLET</poste>
+ <poste code="0880570">TRESORERIE RAON-L'ETAPE</poste>
+ <poste code="0330680">TRESORERIE RAUZAN</poste>
+ <poste code="0810150">TRESORERIE REALMONT</poste>
+ <poste code="0772160">TRESORERIE REBAIS-VILLENEUVE-SUR-BELLOT</poste>
+ <poste code="0210320">TRESORERIE RECEY-SUR-OURCE</poste>
+ <poste code="0350270">TRESORERIE REDON</poste>
+ <poste code="0740200">TRESORERIE REIGNIER</poste>
+ <poste code="0512080">TRESORERIE REIMS 1ERE DIVISION</poste>
+ <poste code="0512090">TRESORERIE REIMS 2EME DIVISION</poste>
+ <poste code="0512100">TRESORERIE REIMS BANLIEUE BOURGOGNE</poste>
+ <poste code="0512110">TRESORERIE DE REIMS MUNICIPALE</poste>
+ <poste code="0512120">TRESORERIE DE REIMS CHR</poste>
+ <poste code="0512001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE REIMS</poste>
+ <poste code="0512000">RECETTE DES FINANCES REIMS</poste>
+ <poste code="0610240">TRESORERIE REMALARD</poste>
+ <poste code="0570390">TRESORERIE REMILLY</poste>
+ <poste code="0880350">TRESORERIE REMIREMONT</poste>
+ <poste code="0300220">TRESORERIE REMOULINS</poste>
+ <poste code="0260390">TRESORERIE REMUZAT-LA MOTTE CHALANCON</poste>
+ <poste code="0422080">TRESORERIE DE RENAISON</poste>
+ <poste code="0350000">TRESORERIE GENERALE D' ILLE-ET-VILAINE</poste>
+ <poste code="0350007">CENTRE REGIONAL DES PENSIONS D' ILLE-ET-VILAINE</poste>
+ <poste code="0350008">CENTRE DE FORMATION DEPARTEMENTAL D' ILLE-ET-VILAINE</poste>
+ <poste code="0350009">DEPARTEMENT INFORMATIQUE ILLE-ET-VILAINE</poste>
+ <poste code="0350290">TRESORERIE RENNES COLOMBIER</poste>
+ <poste code="0350320">TRESORERIE RENNES CH GUILLAUME REGNIER</poste>
+ <poste code="0350330">TRESORERIE RENNES CHU</poste>
+ <poste code="0350800">PAIERIE REGIONALE DE BRETAGNE</poste>
+ <poste code="0350900">PAIERIE DEPARTEMENTALE D' ILLE-ET-VILAINE</poste>
+ <poste code="0350001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE L' ILLE ET VILAINE</poste>
+ <poste code="0350004">CE CENTRE ENCAISSEMENT RENNES</poste>
+ <poste code="0350006">PÔLE NATIONAL DE SOUTIEN AU RESEAU DE RENNES - FPTH</poste>
+ <poste code="0350002">ANNEXE PÔLE INTERRÉGIONAL APUREMENT SPL</poste>
+ <poste code="0350300">TRESORERIE ILLE-ET-VILAINE AMENDES</poste>
+ <poste code="0350310">TRESORERIE RENNES MUNICIPALE</poste>
+ <poste code="0350500">TRESORERIE DU CONTROLE AUTOMATISE</poste>
+ <poste code="0350400">TRESORERIE CENTRE ENCAISSEMENT DES AMENDES</poste>
+ <poste code="0080370">TRESORERIE RENWEZ</poste>
+ <poste code="0120150">TRESORERIE DU SEGALA MERIDIONAL</poste>
+ <poste code="0600530">TRESORERIE RESSONS-SUR-MATZ</poste>
+ <poste code="0080380">TRESORERIE DE RETHEL</poste>
+ <poste code="0350340">TRESORERIE RETIERS</poste>
+ <poste code="0310210">TRESORERIE REVEL</poste>
+ <poste code="0440260">TRESORERIE DE REZE</poste>
+ <poste code="0670370">TRESORERIE RHINAU</poste>
+ <poste code="0831150">TRESORERIE RIANS</poste>
+ <poste code="0680150">TRESORERIE DE RIBEAUVILLE</poste>
+ <poste code="0600540">TRESORERIE RIBECOURT-DRESLINCOURT</poste>
+ <poste code="0020570">TRESORERIE RIBEMONT-ORIGNY</poste>
+ <poste code="0240270">TRESORERIE DE RIBERAC</poste>
+ <poste code="0370310">TRESORERIE RICHELIEU</poste>
+ <poste code="0310600">TRESORERIE RIEUMES</poste>
+ <poste code="0120370">TRESORERIE RIEUPEYROUX</poste>
+ <poste code="0040190">TRESORERIE RIEZ-ET-MOUSTIERS</poste>
+ <poste code="0120160">TRESORERIE DE RIGNAC</poste>
+ <poste code="0690380">TRESORERIE DE RILLIEUX-LA-PAPE</poste>
+ <poste code="0630450">TRESORERIE RIOM</poste>
+ <poste code="0150210">TRESORERIE RIOM-ES-MONTAGNES</poste>
+ <poste code="0700360">TRESORERIE RIOZ-VORAY-SUR-L'OGNON</poste>
+ <poste code="0910290">TRESORERIE RIS-ORANGIS</poste>
+ <poste code="0320290">TRESORERIE RISCLE</poste>
+ <poste code="0420090">TRESORERIE RIVE-DE-GIER</poste>
+ <poste code="0380330">TRESORERIE RIVES</poste>
+ <poste code="0660190">TRESORERIE DE RIVESALTES</poste>
+ <poste code="0422090">TRESORERIE ROANNE</poste>
+ <poste code="0422000">RECETTE DES FINANCES ROANNE</poste>
+ <poste code="0422100">TRESORERIE ROANNE MUNICIPALE</poste>
+ <poste code="0870240">TRESORERIE DE ROCHECHOUART</poste>
+ <poste code="0170190">TRESORERIE DE ROCHEFORT ET BANLIEUE</poste>
+ <poste code="0170200">TRESORERIE DE ROCHEFORT ET BANLIEUE MUNICIPALE</poste>
+ <poste code="0630230">TRESORERIE ROCHEFORT-MONTAGNE</poste>
+ <poste code="0080400">TRESORERIE ROCROI-MAUBERT</poste>
+ <poste code="0120000">TRESORERIE GENERALE DE L' AVEYRON</poste>
+ <poste code="0120170">TRESORERIE RODEZ</poste>
+ <poste code="0120900">PAIERIE DEPARTEMENTALE DE L' AVEYRON</poste>
+ <poste code="0120190">TRESORERIE RODEZ HOPITAL</poste>
+ <poste code="0671150">TRESORERIE ROESCHWOOG</poste>
+ <poste code="0560140">TRESORERIE ROHAN</poste>
+ <poste code="0571120">TRESORERIE ROHRBACH-LES-BITCHE</poste>
+ <poste code="0800570">TRESORERIE ROISEL</poste>
+ <poste code="0520390">TRESORERIE DE ROLAMPONT</poste>
+ <poste code="0930220">TRESORERIE DE ROMAINVILLE MUNICIPALE</poste>
+ <poste code="0260190">TRESORERIE DE ROMANS-BOURG-DE-PEAGE</poste>
+ <poste code="0260200">TRESORERIE DE ROMANS-BOURG DE PEAGE COL. LOC.</poste>
+ <poste code="0570420">TRESORERIE ROMBAS</poste>
+ <poste code="1870000">TRESORERIE AMBASSADE DE FRANCE EN ITALIE</poste>
+ <poste code="0100320">TRESORERIE DE ROMILLY-SUR-SEINE</poste>
+ <poste code="0410170">TRESORERIE ROMORANTIN-LANTHENAY</poste>
+ <poste code="0590330">TRESORERIE DE RONCHIN</poste>
+ <poste code="0060180">TRESORERIE ROQUEBILLIERE</poste>
+ <poste code="0810310">TRESORERIE DE ROQUECOURBE</poste>
+ <poste code="0400140">TRESORERIE ROQUEFORT</poste>
+ <poste code="0300230">TRESORERIE ROQUEMAURE</poste>
+ <poste code="0060190">TRESORERIE ROQUESTERON</poste>
+ <poste code="0130200">TRESORERIE ROQUEVAIRE</poste>
+ <poste code="0800420">TRESORERIE ROSIERES-EN-SANTERRE</poste>
+ <poste code="0292140">TRESORERIE DE ROSPORDEN</poste>
+ <poste code="0220410">TRESORERIE ROSTRENEN</poste>
+ <poste code="0590350">TRESORERIE DE ROUBAIX</poste>
+ <poste code="0590380">TRESORERIE ROUBAIX MUNICIPALE</poste>
+ <poste code="0590390">TRESORERIE ROUBAIX CENTRE HOSPITALIER</poste>
+ <poste code="0760000">TRESORERIE GENERALE DE LA SEINE-MARITIME</poste>
+ <poste code="0760007">CENTRE REGIONAL DES PENSIONS DE LA SEINE-MARITIME</poste>
+ <poste code="0760008">CENTRE DE FORMATION DEPARTEMENTAL DE LA SEINE-MARITIME</poste>
+ <poste code="0760009">DEPARTEMENT INFORMATIQUE DE LA SEINE-MARITIME</poste>
+ <poste code="0760370">TRESORERIE ROUEN MUNICIPALE</poste>
+ <poste code="0760380">TRESORERIE ROUEN CHU</poste>
+ <poste code="0760510">TRESORERIE SEINE-MARITIME AMENDES</poste>
+ <poste code="0760800">PAIERIE REGIONALE DE HAUTE-NORMANDIE</poste>
+ <poste code="0760900">PAIERIE DEPARTEMENTALE DE LA SEINE-MARITIME</poste>
+ <poste code="0760110">TRESORERIE DARNETAL</poste>
+ <poste code="0760350">TRESORERIE DE ROUEN IMPÔTS</poste>
+ <poste code="0760001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE LA SEINE MARITIME</poste>
+ <poste code="0760006">PÔLE NATIONAL DE SOUTIEN AU RESEAU DE ROUEN - RECOUVREMENT AMIABLE</poste>
+ <poste code="0680180">TRESORERIE ROUFFACH</poste>
+ <poste code="0680190">TRESORERIE ROUFFACH CH</poste>
+ <poste code="0250210">TRESORERIE DE ROUGEMONT</poste>
+ <poste code="0160360">TRESORERIE ROUILLAC</poste>
+ <poste code="0381070">TRESORERIE DU ROUSSILLONNAIS</poste>
+ <poste code="0620310">TRESORERIE ROUVROY</poste>
+ <poste code="0170380">TRESORERIE ROYAN</poste>
+ <poste code="0380340">TRESORERIE ROYBON</poste>
+ <poste code="0800430">TRESORERIE ROYE</poste>
+ <poste code="0230150">TRESORERIE DE ROYERE-DE-VASSIVIERE</poste>
+ <poste code="0770230">TRESORERIE ROZAY</poste>
+ <poste code="0020240">TRESORERIE ROZOY-SUR-SERRE-MONTCORNET</poste>
+ <poste code="0800650">TRESORERIE RUE</poste>
+ <poste code="0920310">TRESORERIE RUEIL-MALMAISON</poste>
+ <poste code="0920320">TRESORERIE RUEIL-MALMAISON MUNICIPALE</poste>
+ <poste code="0160370">TRESORERIE RUELLE-SUR-TOUVRE</poste>
+ <poste code="0160380">TRESORERIE RUFFEC-NANTEUIL-EN-VALLEE</poste>
+ <poste code="0270120">TRESORERIE RUGLES</poste>
+ <poste code="0740220">TRESORERIE DE RUMILLY-ALBY</poste>
+ <poste code="0720450">TRESORERIE SABLE-SUR-SARTHE-PRECIGNE</poste>
+ <poste code="0400150">TRESORERIE SABRES</poste>
+ <poste code="0150230">TRESORERIE SAIGNES</poste>
+ <poste code="0660200">TRESORERIE SAILLAGOUSE</poste>
+ <poste code="0595280">TRESORERIE SAINS-DU-NORD</poste>
+ <poste code="0530300">TRESORERIE DE SAINT-AIGNAN-SUR-ROE</poste>
+ <poste code="1040020">TRESORERIE SAINT-ANDRE</poste>
+ <poste code="1040030">TRESORERIE SAINT-BENOIT</poste>
+ <poste code="0480190">TRESORERIE SAINT-CHELY-D'APCHER</poste>
+ <poste code="1040007">CENTRE REGIONAL DES PENSIONS DE LA REUNION</poste>
+ <poste code="1040009">DEPARTEMENT INFORMATIQUE DE LA REUNION</poste>
+ <poste code="1040040">TRESORERIE SAINT-DENIS</poste>
+ <poste code="1040130">TRESORERIE SAINT-DENIS MUNICIPALE</poste>
+ <poste code="1040900">PAIERIE DEPARTEMENTALE DE LA REUNION</poste>
+ <poste code="1040050">TRESORERIE SAINT-JOSEPH</poste>
+ <poste code="1040090">TRESORERIE SAINT-PIERRE</poste>
+ <poste code="1050000">TRESORERIE GENERALE SAINT-PIERRE-ET-MIQUELON</poste>
+ <poste code="0831190">TRESORERIE SAINT-TROPEZ</poste>
+ <poste code="1040800">PAIERIE REGIONALE DE LA REUNION</poste>
+ <poste code="0170360">TRESORERIE DE SAINTES ET BANLIEUE</poste>
+ <poste code="0170370">TRESORERIE DE SAINTES ET BANLIEUE MUNICIPALE</poste>
+ <poste code="0931000">RECETTE DES FINANCES SAINT-DENIS</poste>
+ <poste code="0410210">TRESORERIE SALBRIS</poste>
+ <poste code="0831200">TRESORERIE SALERNES</poste>
+ <poste code="0640300">TRESORERIE SALIES-DE-BEARN</poste>
+ <poste code="0310540">TRESORERIE SALIES-DU-SALAT-ST-MARTORY</poste>
+ <poste code="0390220">TRESORERIE SALINS-LES-BAINS</poste>
+ <poste code="0740260">TRESORERIE SALLANCHES</poste>
+ <poste code="0110370">TRESORERIE SALLES-SUR-L'HERS</poste>
+ <poste code="0131140">TRESORERIE SALON-DE-PROVENCE</poste>
+ <poste code="0740270">TRESORERIE SAMOENS</poste>
+ <poste code="0180320">TRESORERIE DE SANCERGUES</poste>
+ <poste code="0180330">TRESORERIE DE SANCERRE</poste>
+ <poste code="0180340">TRESORERIE SANCOINS</poste>
+ <poste code="0950310">TRESORERIE SANNOIS</poste>
+ <poste code="02A0090">TRESORERIE SANTA-MARIA-SICHE</poste>
+ <poste code="0320330">TRESORERIE SARAMON</poste>
+ <poste code="0951080">TRESORERIE SARCELLES</poste>
+ <poste code="0951000">RECETTE DES FINANCES SARCELLES</poste>
+ <poste code="0240350">TRESORERIE SARLAT-LA-CANEDA</poste>
+ <poste code="0571140">TRESORERIE SARRALBE</poste>
+ <poste code="0671160">TRESORERIE SARRE-UNION</poste>
+ <poste code="0570450">TRESORERIE DE SARREBOURG</poste>
+ <poste code="0571170">TRESORERIE SARREGUEMINES MUNICIPALE</poste>
+ <poste code="0571000">RECETTE DES FINANCES SARREGUEMINES</poste>
+ <poste code="0571160">TRESORERIE DE SARREGUEMINES CENTRE ET CAMPAGNE</poste>
+ <poste code="02A0110">TRESORERIE DE SARTENE-OLMETO</poste>
+ <poste code="0781150">TRESORERIE DE SARTROUVILLE COLLECTIV. LOCALES</poste>
+ <poste code="0560150">TRESORERIE SARZEAU</poste>
+ <poste code="0070290">TRESORERIE DE SATILLIEU</poste>
+ <poste code="0430280">TRESORERIE SAUGUES</poste>
+ <poste code="0170410">TRESORERIE SAUJON</poste>
+ <poste code="0210370">TRESORERIE SAULIEU</poste>
+ <poste code="0490390">TRESORERIE SAUMUR MUNICIPALE</poste>
+ <poste code="0490410">TRESORERIE DE SAUMUR</poste>
+ <poste code="0240550">TRESORERIE SIGOULES ET SAUSSIGNAC</poste>
+ <poste code="0640310">TRESORERIE SAUVETERRE-DE-BEARN</poste>
+ <poste code="0330760">TRESORERIE SAUVETERRE-DE-GUYENNE-PELLEGRUE</poste>
+ <poste code="0630580">TRESORERIE SAUXILLANGES</poste>
+ <poste code="0790380">TRESORERIE SAUZE-VAUSSAIS</poste>
+ <poste code="0260340">TRESORERIE MARSANNE-SAUZET</poste>
+ <poste code="0441150">TRESORERIE SAVENAY</poste>
+ <poste code="0090270">TRESORERIE SAVERDUN-MAZERES</poste>
+ <poste code="0671170">TRESORERIE DE SAVERNE</poste>
+ <poste code="0240360">TRESORERIE DE SAVIGNAC-LES-EGLISES</poste>
+ <poste code="0911140">TRESORERIE SAVIGNY-SUR-ORGE</poste>
+ <poste code="0921110">TRESORERIE DE SCEAUX</poste>
+ <poste code="0921140">TRESORERIE DE SCEAUX MUNICIPALE</poste>
+ <poste code="0700390">TRESORERIE SCEY-SUR-SAONE-ET-SAINT-ALBIN</poste>
+ <poste code="0670450">TRESORERIE STRASBOURG NORD-SCHILTIGHEIM</poste>
+ <poste code="0670440">TRESORERIE SCHILTIGHEIM</poste>
+ <poste code="0670005">CPS CENTRE PRÉLÈVEMENT SERVICE</poste>
+ <poste code="0670460">TRESORERIE SCHIRMECK</poste>
+ <poste code="0590420">TRESORERIE SECLIN</poste>
+ <poste code="0790390">TRESORERIE SECONDIGNY</poste>
+ <poste code="0080450">TRESORERIE DE SEDAN</poste>
+ <poste code="0080440">TRESORERIE DE SEDAN MIRBRITZ</poste>
+ <poste code="0260410">TRESORERIE SEDERON</poste>
+ <poste code="0610260">TRESORERIE DE SEES</poste>
+ <poste code="0160430">TRESORERIE SEGONZAC</poste>
+ <poste code="0490260">TRESORERIE SEGRE</poste>
+ <poste code="0490270">TRESORERIE SEICHES-SUR-LE-LOIR</poste>
+ <poste code="0190160">TRESORERIE SEILHAC</poste>
+ <poste code="0670470">TRESORERIE DE SELESTAT</poste>
+ <poste code="0410220">TRESORERIE SELLES-SUR-CHER</poste>
+ <poste code="0390240">TRESORERIE SELLIERES</poste>
+ <poste code="0410330">TRESORERIE SELOMMES</poste>
+ <poste code="0210410">TRESORERIE SELONGEY</poste>
+ <poste code="0671180">TRESORERIE SELTZ</poste>
+ <poste code="0210420">TRESORERIE SEMUR-EN-AUXOIS</poste>
+ <poste code="0600430">TRESORERIE DE SENLIS</poste>
+ <poste code="0710550">TRESORERIE DE SENNECEY-SAINT-GERMAIN-DU-PLAIN</poste>
+ <poste code="0280390">TRESORERIE SENONCHES</poste>
+ <poste code="0880600">TRESORERIE SENONES</poste>
+ <poste code="0890510">TRESORERIE SENS AGGLOMERATION SENONAISE</poste>
+ <poste code="0890520">TRESORERIE SENS MUNICIPALE</poste>
+ <poste code="0681220">TRESORERIE SEPPOIS-LE-BAS</poste>
+ <poste code="0890530">TRESORERIE SERGINES</poste>
+ <poste code="0600280">TRESORERIE SERIFONTAINE</poste>
+ <poste code="0340450">TRESORERIE SERIGNAN</poste>
+ <poste code="0510180">TRESORERIE SERMAIZE-LES-BAINS</poste>
+ <poste code="0050200">TRESORERIE DE SERRES-ASPRES</poste>
+ <poste code="0070300">TRESORERIE SERRIERES</poste>
+ <poste code="0340290">TRESORERIE SETE</poste>
+ <poste code="0340300">TRESORERIE SETE MUNICIPALE</poste>
+ <poste code="0210590">TRESORERIE SEURRE</poste>
+ <poste code="0120430">TRESORERIE DE SEVERAC-LE-CHATEAU</poste>
+ <poste code="0930290">TRESORERIE DE SEVRAN MUNICIPALE</poste>
+ <poste code="0921120">TRESORERIE DE SEVRES</poste>
+ <poste code="0040230">TRESORERIE SEYNE</poste>
+ <poste code="0740060">TRESORERIE SEYNOD</poste>
+ <poste code="0740280">TRESORERIE SEYSSEL</poste>
+ <poste code="0510410">TRESORERIE DE SEZANNE</poste>
+ <poste code="0570500">TRESORERIE SIERCK-LES-BAINS</poste>
+ <poste code="0681230">TRESORERIE SIERENTZ</poste>
+ <poste code="0110510">TRESORERIE SIGEAN</poste>
+ <poste code="0080470">TRESORERIE SIGNY-L'ABBAYE-RUMIGNY</poste>
+ <poste code="0720490">TRESORERIE DE SILLE-LE-GUILLAUME</poste>
+ <poste code="0593090">TRESORERIE SIN-LE-NOBLE</poste>
+ <poste code="0020270">TRESORERIE SISSONNE</poste>
+ <poste code="0040240">TRESORERIE DE SISTERON-ST-VINCENT-SUR-JABRON</poste>
+ <poste code="0830240">TRESORERIE SIX-FOURS-LES-PLAGES</poste>
+ <poste code="0250470">TRESORERIE SOCHAUX</poste>
+ <poste code="0020480">TRESORERIE SOISSONS</poste>
+ <poste code="0593200">TRESORERIE SOLESMES</poste>
+ <poste code="0830160">TRESORERIE SOLLIES-PONT</poste>
+ <poste code="0595290">TRESORERIE SOLRE-LE-CHATEAU</poste>
+ <poste code="0593100">TRESORERIE SOMAIN</poste>
+ <poste code="0210430">TRESORERIE SOMBERNON</poste>
+ <poste code="0300310">TRESORERIE SOMMIERES</poste>
+ <poste code="0840160">TRESORERIE SORGUES</poste>
+ <poste code="0190170">TRESORERIE SORNAC</poste>
+ <poste code="0060220">TRESORERIE DE SOSPEL</poste>
+ <poste code="0760440">TRESORERIE SOTTEVILLE-LES-ROUEN</poste>
+ <poste code="0460290">TRESORERIE DE SOUILLAC</poste>
+ <poste code="0550410">TRESORERIE DE SOUILLY</poste>
+ <poste code="0330520">TRESORERIE SAINT-VIVIEN-DE-MEDOC</poste>
+ <poste code="0680220">TRESORERIE SOULTZ-HAUT-RHIN</poste>
+ <poste code="0671190">TRESORERIE SOULTZ-SOUS-FORETS</poste>
+ <poste code="0400300">TRESORERIE SOUSTONS</poste>
+ <poste code="0550420">TRESORERIE SPINCOURT</poste>
+ <poste code="0120380">TRESORERIE SAINT-AFFRIQUE</poste>
+ <poste code="0070210">TRESORERIE SAINT-AGREVE</poste>
+ <poste code="0410190">TRESORERIE SAINT-AIGNAN</poste>
+ <poste code="0170340">TRESORERIE SAINT-AIGULIN</poste>
+ <poste code="0480170">TRESORERIE SAINT-ALBAN-SUR-LIMAGNOLE</poste>
+ <poste code="0595120">TRESORERIE SAINT-AMAND-LES-EAUX</poste>
+ <poste code="0410320">TRESORERIE SAINT-AMAND-LONGPRE</poste>
+ <poste code="0180280">TRESORERIE DE SAINT-AMAND-MONTROND</poste>
+ <poste code="0810320">TRESORERIE SAINT-AMANS-SOULT</poste>
+ <poste code="0160390">TRESORERIE SAINT-AMANT-DE-BOIXE</poste>
+ <poste code="0630240">TRESORERIE SAINT-AMANT-TALLENDE</poste>
+ <poste code="0680280">TRESORERIE SAINT-AMARIN</poste>
+ <poste code="0300500">TRESORERIE DE SAINT-AMBROIX</poste>
+ <poste code="0880390">TRESORERIE DE SAINT-AME</poste>
+ <poste code="0132100">TRESORERIE SAINT-ANDIOL</poste>
+ <poste code="0590400">TRESORERIE SAINT-ANDRE</poste>
+ <poste code="0330740">TRESORERIE SAINT-ANDRE-DE-CUBZAC</poste>
+ <poste code="0270130">TRESORERIE SAINT-ANDRE-DE-L'EURE</poste>
+ <poste code="0040200">TRESORERIE SAINT-ANDRE-LES-ALPES</poste>
+ <poste code="0820200">TRESORERIE SAINT-ANTONIN-NOBLE-VAL</poste>
+ <poste code="0780270">TRESORERIE SAINT-ARNOULT-EN-YVELINES</poste>
+ <poste code="0240210">TRESORERIE DE NEUVIC</poste>
+ <poste code="0240290">TRESORERIE SAINT-ASTIER</poste>
+ <poste code="0350350">TRESORERIE SAINT-AUBIN-D'AUBIGNE</poste>
+ <poste code="0760390">TRESORERIE SAINT-AUBIN-LES-ELBEUF</poste>
+ <poste code="0240300">TRESORERIE SAINT-AULAYE-LA-ROCHE-CHALAIS</poste>
+ <poste code="0571130">TRESORERIE SAINT-AVOLD</poste>
+ <poste code="1010120">TRESORERIE DE SAINT-BARTHELEMY</poste>
+ <poste code="0310520">TRESORERIE SAINT-BEAT-CIERP</poste>
+ <poste code="0580260">TRESORERIE SAINT-BENIN-D'AZY</poste>
+ <poste code="0520240">TRESORERIE DE SAINT-BLIN-SEMILLY</poste>
+ <poste code="0050150">TRESORERIE DE SAINT-BONNET-SAINT-FIRMIN</poste>
+ <poste code="0420260">TRESORERIE SAINT-BONNET-LE-CHATEAU</poste>
+ <poste code="0441180">TRESORERIE MINDIN ETS MEDICO-SOCIAUX</poste>
+ <poste code="0220000">TRESORERIE GENERALE DES COTES-D'ARMOR</poste>
+ <poste code="0220100">TRESORERIE SAINT-BRIEUC CENTRE HOSPITALIER</poste>
+ <poste code="0220190">TRESORERIE DE SAINT-BRIEUC LA BAIE</poste>
+ <poste code="0220200">TRESORERIE DE SAINT-BRIEUC BANLIEUE</poste>
+ <poste code="0220210">TRESORERIE SAINT-BRIEUC MUNICIPALE</poste>
+ <poste code="0220900">PAIERIE DEPARTEMENTALE DES COTES-D'ARMOR</poste>
+ <poste code="0220001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DES CÔTES D'ARMOR</poste>
+ <poste code="0720460">TRESORERIE SAINT-CALAIS BESSE</poste>
+ <poste code="0460240">TRESORERIE SAINT-CERE</poste>
+ <poste code="0420100">TRESORERIE SAINT-CHAMOND</poste>
+ <poste code="0300250">TRESORERIE SAINT-CHAPTES</poste>
+ <poste code="0320300">TRESORERIE DE SAINT-CLAR-MIRADOUX</poste>
+ <poste code="0160410">TRESORERIE SAINT-CLAUD</poste>
+ <poste code="0390410">TRESORERIE SAINT-CLAUDE MUN. ET BAN</poste>
+ <poste code="0920330">TRESORERIE SAINT-CLOUD</poste>
+ <poste code="0830040">TRESORERIE SAINT-CYR-SUR-MER</poste>
+ <poste code="1040990">SERVICE COMPTABLE DE LA COLLECTIVITÉ DES TERRES AUSTRALES ANTARCTIQUES FR</poste>
+ <poste code="0931060">TRESORERIE SAINT-DENIS</poste>
+ <poste code="0931070">TRESORERIE SAINT-DENIS MUNICIPALE</poste>
+ <poste code="0931080">TRESORERIE SAINT-DENIS CENTRE HOSPITALIER</poste>
+ <poste code="1040120">TRESORERIE SAINT-DENIS CTRE HOSP. DPT</poste>
+ <poste code="1040000">TRESORERIE GENERALE DE LA REUNION</poste>
+ <poste code="0430240">TRESORERIE SAINT-DIDIER-EN-VELAY</poste>
+ <poste code="0880580">TRESORERIE DE SAINT-DIE CARNOT</poste>
+ <poste code="0880590">TRESORERIE SAINT-DIE MUNICIPALE</poste>
+ <poste code="0520280">TRESORERIE SAINT-DIZIER ETS HOSP. ET OPHLM</poste>
+ <poste code="0520250">TRESORERIE SAINT-DIZIER</poste>
+ <poste code="0260220">TRESORERIE SAINT-DONAT-SUR-L'HERBASSE</poste>
+ <poste code="0380350">TRESORERIE SAINT-EGREVE</poste>
+ <poste code="1030080">TRESORERIE SAINT-ESPRIT</poste>
+ <poste code="0660280">TRESORERIE SAINT-ESTEVE</poste>
+ <poste code="0420120">TRESORERIE SAINT-ETIENNE NORD</poste>
+ <poste code="0420130">TRESORERIE SAINT-ETIENNE SUD EST</poste>
+ <poste code="0420140">TRESORERIE SAINT-ETIENNE SUD OUEST</poste>
+ <poste code="0420150">TRESORERIE SAINT-ETIENNE BANLIEUE</poste>
+ <poste code="0420900">PAIERIE DEPARTEMENTALE DE LA LOIRE</poste>
+ <poste code="0420000">TRESORERIE GENERALE DE LA LOIRE</poste>
+ <poste code="0420160">TRESORERIE SAINT-ETIENNE MUNICIPALE</poste>
+ <poste code="0420170">TRESORERIE SAINT-ETIENNE CHU</poste>
+ <poste code="0640420">TRESORERIE SAINT-ETIENNE-DE-BAIGORRY</poste>
+ <poste code="0440370">TRESORERIE SAINT-ETIENNE-DE-MONTLUC</poste>
+ <poste code="0380360">TRESORERIE SAINT-ETIENNE-DE-SAINT-GEOIRS</poste>
+ <poste code="0060200">TRESORERIE SAINT-ETIENNE-DE-TINEE</poste>
+ <poste code="0770030">TRESORERIE SAINT FARGEAU PONTHIERRY</poste>
+ <poste code="0070230">TRESORERIE DE SAINT-FELICIEN</poste>
+ <poste code="02B0200">TRESORERIE SAINT-FLORENT</poste>
+ <poste code="0490490">TRESORERIE SAINT-FLORENT-LE-VIEIL</poste>
+ <poste code="0180290">TRESORERIE DE SAINT-FLORENT-SUR-CHER</poste>
+ <poste code="0890370">TRESORERIE DE SAINT-FLORENTIN</poste>
+ <poste code="0150250">TRESORERIE SAINT-FLOUR</poste>
+ <poste code="0850150">TRESORERIE SAINT-FULGENT</poste>
+ <poste code="0420270">TRESORERIE SAINT-GALMIER</poste>
+ <poste code="0310530">TRESORERIE SAINT-GAUDENS</poste>
+ <poste code="0420190">TRESORERIE DE SAINT-GENEST-MALIFAUX</poste>
+ <poste code="0120220">TRESORERIE DES DEUX VALLEES</poste>
+ <poste code="0170350">TRESORERIE SAINT-GENIS-DE-SAINTONGE-ST-FORT</poste>
+ <poste code="0690280">TRESORERIE SAINT-GENIS-LAVAL</poste>
+ <poste code="0381220">TRESORERIE SAINT-GEOIRE-EN-VALDAINE</poste>
+ <poste code="0860190">TRESORERIE SAINT-GEORGES-LES-BAILLARGEAUX</poste>
+ <poste code="0490240">TRESORERIE SAINT-GEORGES-SUR-LOIRE</poste>
+ <poste code="0030330">TRESORERIE SAINT-GERMAIN-DES-FOSSES</poste>
+ <poste code="0710530">TRESORERIE SAINT-GERMAIN-DU-BOIS-MERVANS</poste>
+ <poste code="0780280">TRESORERIE SAINT-GERMAIN-EN-LAYE</poste>
+ <poste code="0780110">TRESORERIE SAINT-GERMAIN-POISSY CH</poste>
+ <poste code="0422110">TRESORERIE SAINT-GERMAIN-LAVAL</poste>
+ <poste code="0630270">TRESORERIE SAINT-GERMAIN-LEMBRON</poste>
+ <poste code="0630460">TRESORERIE DE SAINT-GERVAIS-D'AUVERGNE</poste>
+ <poste code="0740230">TRESORERIE SAINT-GERVAIS-LES-BAINS</poste>
+ <poste code="0460260">TRESORERIE DE SAINT-GERY</poste>
+ <poste code="0300270">TRESORERIE SAINT-GILLES</poste>
+ <poste code="0850370">TRESORERIE SAINT-GILLES-CROIX-DE-VIE</poste>
+ <poste code="0090160">TRESORERIE SAINT-GIRONS</poste>
+ <poste code="0440170">TRESORERIE SAINT-HERBLAIN</poste>
+ <poste code="0110340">TRESORERIE SAINT-HILAIRE</poste>
+ <poste code="0500320">TRESORERIE SAINT-HILAIRE - ISIGNY</poste>
+ <poste code="0250450">TRESORERIE SAINT-HIPPOLYTE</poste>
+ <poste code="0300280">TRESORERIE SAINT-HIPPOLYTE-DU-FORT</poste>
+ <poste code="0500330">TRESORERIE SAINT-JAMES</poste>
+ <poste code="0170120">TRESORERIE SAINT-JEAN-D'ANGELY</poste>
+ <poste code="0740070">TRESORERIE LE BIOT</poste>
+ <poste code="0381090">TRESORERIE SAINT-JEAN-DE-BOURNAY</poste>
+ <poste code="0450250">TRESORERIE ST-JEAN-DE-BRAYE</poste>
+ <poste code="0500170">TRESORERIE SAINT-JEAN-DE-DAYE</poste>
+ <poste code="0210580">TRESORERIE SAINT-JEAN-DE-LOSNE</poste>
+ <poste code="0640430">TRESORERIE SAINT-JEAN-DE-LUZ</poste>
+ <poste code="0730320">TRESORERIE SAINT-JEAN-DE-MAURIENNE</poste>
+ <poste code="0850380">TRESORERIE SAINT-JEAN-DE-MONTS</poste>
+ <poste code="0860360">TRESORERIE SAINT-JEAN-DE-SAUVES</poste>
+ <poste code="0300510">TRESORERIE SAINT-JEAN-DU-GARD-ST ANDRE</poste>
+ <poste code="0260230">TRESORERIE SAINT-JEAN-EN-ROYANS</poste>
+ <poste code="0640440">TRESORERIE SAINT-JEAN-PIED-DE-PORT</poste>
+ <poste code="0420290">TRESORERIE SAINT-JEAN-SOLEYMIEUX</poste>
+ <poste code="0050180">TRESORERIE SAINT-JEAN-SAINT-NICOLAS</poste>
+ <poste code="0740240">TRESORERIE SAINT-JEOIRE</poste>
+ <poste code="0430250">TRESORERIE SAINT-JULIEN-CHAPTEUIL</poste>
+ <poste code="0740250">TRESORERIE SAINT-JULIEN-EN-GENEVOIS</poste>
+ <poste code="0860200">TRESORERIE SAINT-JULIEN-L'ARS</poste>
+ <poste code="0870260">TRESORERIE SAINT-JUNIEN</poste>
+ <poste code="0600550">TRESORERIE SAINT-JUST-EN-CHAUSSEE</poste>
+ <poste code="0420300">TRESORERIE SAINT-JUST-SAINT-RAMBERT</poste>
+ <poste code="0690290">TRESORERIE SAINT-LAURENT-DE-CHAMOUSSET</poste>
+ <poste code="0660210">TRESORERIE SAINT-LAURENT-DE-LA-SALANQUE</poste>
+ <poste code="0650260">TRESORERIE SAINT-LAURENT-DE-NESTE</poste>
+ <poste code="1020030">TRESORERIE SAINT-LAURENT-DU-MARONI</poste>
+ <poste code="0380390">TRESORERIE SAINT-LAURENT-DU-PONT</poste>
+ <poste code="0061170">TRESORERIE SAINT-LAURENT DU VAR</poste>
+ <poste code="0010310">TRESORERIE SAINT-LAURENT-SUR-SAONE</poste>
+ <poste code="0870280">TRESORERIE SAINT-LEONARD-DE-NOBLAT</poste>
+ <poste code="1040060">TRESORERIE SAINT-LEU</poste>
+ <poste code="0600410">TRESORERIE SAINT-LEU-D'ESSERENT</poste>
+ <poste code="0500000">TRESORERIE GENERALE DE LA MANCHE</poste>
+ <poste code="0500180">TRESORERIE SAINT-LO-CANISY</poste>
+ <poste code="0500900">PAIERIE DEPARTEMENTALE DE LA MANCHE</poste>
+ <poste code="0330480">TRESORERIE SAINT-LOUBES</poste>
+ <poste code="0681200">TRESORERIE SAINT-LOUIS</poste>
+ <poste code="1040070">TRESORERIE SAINT-LOUIS</poste>
+ <poste code="0700370">TRESORERIE SAINT-LOUP-CONFLANS</poste>
+ <poste code="0310620">TRESORERIE SAINT-LYS</poste>
+ <poste code="0790360">TRESORERIE SAINT-MAIXENT L'ECOLE</poste>
+ <poste code="0350490">TRESORERIE SAINT MALO</poste>
+ <poste code="0350470">TRESORERIE DE SAINT-MALO MUNICIPALE</poste>
+ <poste code="0150260">TRESORERIE SAINT-MAMET-LA-SALVETAT</poste>
+ <poste code="0380400">TRESORERIE SAINT-MARCELLIN</poste>
+ <poste code="1010140">TRESORERIE DE SAINT-MARTIN</poste>
+ <poste code="0180300">TRESORERIE SAINT-MARTIN-D'AUXIGNY</poste>
+ <poste code="0380560">TRESORERIE SAINT-MARTIN-D'HERES</poste>
+ <poste code="0170130">TRESORERIE SAINT-MARTIN-DE-RE</poste>
+ <poste code="0400280">TRESORERIE SAINT-MARTIN-DE-SEIGNANX</poste>
+ <poste code="0150270">TRESORERIE SAINT-MARTIN-VALMEROUX</poste>
+ <poste code="0490250">TRESORERIE SAINT-MATHURIN-SUR-LOIRE</poste>
+ <poste code="0941080">TRESORERIE SAINT-MAUR-DES-FOSSES</poste>
+ <poste code="0941090">TRESORERIE SAINT-MAUR-DES-FOSSES MUNICIPALE</poste>
+ <poste code="0940340">TRESORERIE SAINT-MAURICE ETS HOSPITALIERS</poste>
+ <poste code="9940000">RECETTE DES FINANCES COMPTABLE SPÉCIALISÉ DU DOMAINE</poste>
+ <poste code="9930000">DIRECTION NATIONALE DES INTERVENTIONS DOMANIALES</poste>
+ <poste code="0830130">TRESORERIE SAINT-MAXIMIN-LA-SAINTE-BAUME</poste>
+ <poste code="0330620">TRESORERIE SAINT-MEDARD-EN-JALLES</poste>
+ <poste code="0350380">TRESORERIE SAINT-MEEN-LE-GRAND</poste>
+ <poste code="0160040">TRESORERIE ANGOULEME CENTRE HOSPITALIER</poste>
+ <poste code="0730330">TRESORERIE SAINT-MICHEL-DE-MAURIENNE</poste>
+ <poste code="0550230">TRESORERIE DE SAINT-MIHIEL</poste>
+ <poste code="0441130">TRESORERIE SAINT-NAZAIRE MUNICIPALE</poste>
+ <poste code="0441160">TRESORERIE SAINT-NAZAIRE ETAB.HOSPITALIERS</poste>
+ <poste code="0441000">RECETTE DES FINANCES SAINT-NAZAIRE</poste>
+ <poste code="0441110">TRESORERIE DE SAINT-NAZAIRE</poste>
+ <poste code="0820210">TRESORERIE SAINT-NICOLAS-DE-LA-GRAVE</poste>
+ <poste code="0540230">TRESORERIE SAINT-NICOLAS-DE-PORT</poste>
+ <poste code="0220420">TRESORERIE SAINT-NICOLAS-DU-PELEM</poste>
+ <poste code="0622320">TRESORERIE DE SAINT-OMER</poste>
+ <poste code="0931090">TRESORERIE SAINT-OUEN</poste>
+ <poste code="0931100">TRESORERIE SAINT-OUEN MUNICIPALE</poste>
+ <poste code="0950220">TRESORERIE SAINT-OUEN-L'AUMONE</poste>
+ <poste code="0640450">TRESORERIE SAINT-PALAIS</poste>
+ <poste code="0720080">TRESORERIE SAINT-PATERNE</poste>
+ <poste code="1040150">TRESORERIE SAINT PAUL MUNICIPALE HOPITAUX</poste>
+ <poste code="0810330">TRESORERIE SAINT-PAUL-CAP-DE-JOUX</poste>
+ <poste code="1040080">TRESORERIE SAINT-PAUL</poste>
+ <poste code="0660220">TRESORERIE SAINT-PAUL-DE-FENOUILLET</poste>
+ <poste code="0400220">TRESORERIE DE SAINT-PAUL-LES-DAX</poste>
+ <poste code="0260400">TRESORERIE SAINT-PAUL-TROIS-CHATEAUX-SUZE</poste>
+ <poste code="0430270">TRESORERIE SAINT-PAULIEN</poste>
+ <poste code="0070270">TRESORERIE SAINT-PERAY</poste>
+ <poste code="0440300">TRESORERIE DE SAINT-PHILBERT-DE-GRAND-LIEU</poste>
+ <poste code="1030090">TRESORERIE SAINT-PIERRE</poste>
+ <poste code="1040140">TRESORERIE SAINT-PIERRE GHSR</poste>
+ <poste code="0730340">TRESORERIE SAINT-PIERRE-D'ALBIGNY</poste>
+ <poste code="0170220">TRESORERIE SAINT-PIERRE-D'OLERON</poste>
+ <poste code="0240330">TRESORERIE DE SAINT-PIERRE-DE-CHIGNAC</poste>
+ <poste code="0370400">TRESORERIE DE TOURS BANLIEUE SUD</poste>
+ <poste code="0500480">TRESORERIE SAINT-PIERRE-EGLISE</poste>
+ <poste code="0580270">TRESORERIE SAINT-PIERRE-LE-MOUTIER</poste>
+ <poste code="0140580">TRESORERIE DE SAINT-PIERRE-SUR-DIVES</poste>
+ <poste code="0070280">TRESORERIE SAINT-PIERREVILLE</poste>
+ <poste code="0290300">TRESORERIE SAINT-POL-DE-LEON</poste>
+ <poste code="0594120">TRESORERIE SAINT-POL-SUR-MER</poste>
+ <poste code="0620430">TRESORERIE DE SAINT-POL-MONCHEAUX</poste>
+ <poste code="0340430">TRESORERIE DE SAINT-PONS-DE-THOMIERES</poste>
+ <poste code="0170400">TRESORERIE ST-PORCHAIRE-PT-L'ABBE-D'ARNOULT</poste>
+ <poste code="0030110">TRESORERIE SAINT-POURCAIN-SUR-SIOULE</poste>
+ <poste code="0690390">TRESORERIE DE SAINT-PRIEST</poste>
+ <poste code="0190150">TRESORERIE SAINT-PRIVAT</poste>
+ <poste code="0300410">TRESORERIE DE PAYS D'ALES</poste>
+ <poste code="0020580">TRESORERIE DE SAINT-QUENTIN</poste>
+ <poste code="0020600">TRESORERIE DE SAINT-QUENTIN MUNICIPALE</poste>
+ <poste code="0020610">TRESORERIE SAINT-QUENTIN CENTRE HOSPITALIER</poste>
+ <poste code="0260010">TRESORERIE ALBON</poste>
+ <poste code="0010320">TRESORERIE SAINT-RAMBERT-EN-BUGEY</poste>
+ <poste code="0831160">TRESORERIE SAINT-RAPHAEL</poste>
+ <poste code="0710490">TRESORERIE CHALON-SUR-SAONE PERIPHERIE</poste>
+ <poste code="0132110">TRESORERIE SAINT-REMY-DE-PROVENCE</poste>
+ <poste code="0630550">TRESORERIE SAINT-REMY-SUR-DUROLLE</poste>
+ <poste code="0290190">TRESORERIE SAINT-RENAN</poste>
+ <poste code="0762180">TRESORERIE SAINT-ROMAIN-DE-COLBOSC</poste>
+ <poste code="0120400">TRESORERIE SAINT-ROME-DE-TARN-BROQUIES</poste>
+ <poste code="0580280">TRESORERIE SAINT-SAULGE</poste>
+ <poste code="0890380">TRESORERIE ST-SAUVEUR-EN-PUISAYE-LAINSECQ</poste>
+ <poste code="0060210">TRESORERIE SAINT-SAUVEUR-SUR-TINEE</poste>
+ <poste code="0330750">TRESORERIE SAINT-SAVIN</poste>
+ <poste code="0860210">TRESORERIE SAINT-SAVIN</poste>
+ <poste code="0170230">TRESORERIE SAINT-SAVINIEN</poste>
+ <poste code="0210360">TRESORERIE SAINT-SEINE-L'ABBAYE</poste>
+ <poste code="0140350">TRESORERIE SAINT-SEVER-CALVADOS</poste>
+ <poste code="0400160">TRESORERIE SAINT-SEVER</poste>
+ <poste code="0020620">TRESORERIE SAINT-SIMON-FLAVY</poste>
+ <poste code="0810340">TRESORERIE DE SAINT-SULPICE</poste>
+ <poste code="0690400">TRESORERIE DE SAINT-SYMPHORIEN-D'OZON</poste>
+ <poste code="0422150">TRESORERIE SAINT-SYMPHORIEN-DE-LAY</poste>
+ <poste code="0690300">TRESORERIE SAINT-SYMPHORIEN-SUR-COISE</poste>
+ <poste code="0010330">TRESORERIE SAINT-TRIVIER-DE-COURTES</poste>
+ <poste code="0010340">TRESORERIE SAINT-TRIVIER-SUR-MOIGNANS</poste>
+ <poste code="0760740">TRESORERIE SAINT-VALERY-EN-CAUX</poste>
+ <poste code="0800660">TRESORERIE DE SAINT-VALERY-SUR-SOMME</poste>
+ <poste code="0260240">TRESORERIE SAINT-VALLIER</poste>
+ <poste code="0790370">TRESORERIE SAINT-VARENT</poste>
+ <poste code="0230160">TRESORERIE SAINT-VAURY</poste>
+ <poste code="0620820">TRESORERIE SAINT-VENANT</poste>
+ <poste code="0400290">TRESORERIE SAINT-VINCENT-DE-TYROSSE</poste>
+ <poste code="0250240">TRESORERIE SAINT-VIT-BOUSSIERES</poste>
+ <poste code="0870320">TRESORERIE DE SAINT-YRIEIX-LA-PERCHE</poste>
+ <poste code="0931110">TRESORERIE STAINS</poste>
+ <poste code="0240540">TRESORERIE SAINTE-ALVERE</poste>
+ <poste code="1010150">TRESORERIE SAINTE-ANNE</poste>
+ <poste code="0090150">TRESORERIE SAINTE-CROIX-VOLVESTRE</poste>
+ <poste code="0430020">TRESORERIE AUZON-SAINTE-FLORINE</poste>
+ <poste code="0330690">TRESORERIE SAINTE-FOY-LA-GRANDE</poste>
+ <poste code="0911130">TRESORERIE SAINTE-GENEVIEVE-DES-BOIS</poste>
+ <poste code="0120210">TRESORERIE DE L' ARGENCE ET DU CARLADEZ</poste>
+ <poste code="0850260">TRESORERIE SAINTE-HERMINE</poste>
+ <poste code="0470290">TRESORERIE SAINTE-LIVRADE-SUR-LOT</poste>
+ <poste code="0680210">TRESORERIE SAINTE-MARIE-AUX-MINES</poste>
+ <poste code="0370330">TRESORERIE SAINTE-MAURE-DE-TOURAINE</poste>
+ <poste code="0510160">TRESORERIE STE-MENEHOULD-VILLE-SUR-TOURBE</poste>
+ <poste code="0500470">TRESORERIE SAINTE-MERE-EGLISE</poste>
+ <poste code="1010160">TRESORERIE SAINTE-ROSE</poste>
+ <poste code="0250380">TRESORERIE MONTBELIARD ET DES DEUX VALLEES</poste>
+ <poste code="1040100">TRESORERIE SAINTE-SUZANNE</poste>
+ <poste code="0594200">TRESORERIE STEENVOORDE</poste>
+ <poste code="0550430">TRESORERIE STENAY</poste>
+ <poste code="0670000">TRESORERIE GENERALE DU BAS-RHIN</poste>
+ <poste code="0670007">CENTRE REGIONAL DES PENSIONS DU BAS-RHIN</poste>
+ <poste code="0670008">CENTRE DE FORMATION DEPARTEMENTAL DU BAS-RHIN</poste>
+ <poste code="0670009">DEPARTEMENT INFORMATIQUE DU BAS-RHIN</poste>
+ <poste code="0670530">TRESORERIE STRASBOURG KLEBER</poste>
+ <poste code="0670540">TRESORERIE STRASBOURG EST</poste>
+ <poste code="0670570">TRESORERIE STRASBOURG AMENDES</poste>
+ <poste code="0670600">TRESORERIE STRASBOURG HOP. UNIVERSITAIRES</poste>
+ <poste code="0670900">PAIERIE DEPARTEMENTALE DU BAS-RHIN</poste>
+ <poste code="0670580">RECETTE DES FINANCES STRASBOURG MUNICIPALE ET COM.URB</poste>
+ <poste code="0670800">PAIERIE REGIONALE D'ALSACE</poste>
+ <poste code="0510210">TRESORERIE SUIPPES</poste>
+ <poste code="0450300">TRESORERIE SULLY-SUR-LOIRE</poste>
+ <poste code="0920360">TRESORERIE DE SURESNES</poste>
+ <poste code="0170140">TRESORERIE SURGERES</poste>
+ <poste code="0260250">TRESORERIE TAIN-L'HERMITAGE</poste>
+ <poste code="0330180">TRESORERIE BORDEAUX CHU</poste>
+ <poste code="0330540">TRESORERIE TALENCE</poste>
+ <poste code="0050210">TRESORERIE DE TALLARD</poste>
+ <poste code="0740290">TRESORERIE TANINGES</poste>
+ <poste code="0580290">TRESORERIE TANNAY</poste>
+ <poste code="0690530">TRESORERIE TARARE</poste>
+ <poste code="0132120">TRESORERIE TARASCON</poste>
+ <poste code="0090200">TRESORERIE TARASCON-SUR-ARIEGE</poste>
+ <poste code="0650000">TRESORERIE GENERALE DES HAUTES-PYRENEES</poste>
+ <poste code="0650240">TRESORERIE TARBES ADOUR ECHEZ</poste>
+ <poste code="0650280">TRESORERIE DE TARBES</poste>
+ <poste code="0650290">TRESORERIE TARBES MUNICIPALE</poste>
+ <poste code="0650900">PAIERIE DEPARTEMENTALE DES HAUTES-PYRENEES</poste>
+ <poste code="0640330">TRESORERIE TARDETS-SORHOLUS</poste>
+ <poste code="0400310">TRESORERIE TARTAS</poste>
+ <poste code="0690310">TRESORERIE DE TASSIN-LA-DEMI-LUNE</poste>
+ <poste code="0590440">TRESORERIE DE TEMPLEUVE-LA-PÉVÈLE</poste>
+ <poste code="0430310">TRESORERIE TENCE</poste>
+ <poste code="0060230">TRESORERIE DE TENDE</poste>
+ <poste code="0020350">TRESORERIE TERGNIER</poste>
+ <poste code="0240380">TRESORERIE DE THENON</poste>
+ <poste code="0240370">TRESORERIE TERRASSON-LA-BACHELLERIE</poste>
+ <poste code="0520400">TRESORERIE TERRE-NATALE</poste>
+ <poste code="0680290">TRESORERIE THANN</poste>
+ <poste code="0880400">TRESORERIE THAON-LES-VOSGES</poste>
+ <poste code="0622330">TRESORERIE DE THEROUANNE</poste>
+ <poste code="0640340">TRESORERIE DE THEZE</poste>
+ <poste code="0540240">TRESORERIE DE THIAUCOURT-REGNIEVILLE</poste>
+ <poste code="0270400">TRESORERIE THIBERVILLE</poste>
+ <poste code="0630560">TRESORERIE THIERS</poste>
+ <poste code="0570640">TRESORERIE THIONVILLE-TROIS-FRONTIERES</poste>
+ <poste code="0570540">TRESORERIE THIONVILLE MUNICIPALE</poste>
+ <poste code="0570611">TRESORERIE DE METZ-THIONVILLE ETS.HOSP.BEL AIR</poste>
+ <poste code="0240390">TRESORERIE DE THIVIERS</poste>
+ <poste code="0690540">TRESORERIE DE THIZY-COURS-LA-VILLE</poste>
+ <poste code="0010370">TRESORERIE THOISSEY</poste>
+ <poste code="0740300">TRESORERIE THONES</poste>
+ <poste code="0740310">TRESORERIE THONON-LES-BAINS-LULLIN</poste>
+ <poste code="0490280">TRESORERIE DE THOUARCE</poste>
+ <poste code="0790410">TRESORERIE THOUARS</poste>
+ <poste code="0600460">TRESORERIE THOUROTTE</poste>
+ <poste code="0070320">TRESORERIE DE THUEYTS</poste>
+ <poste code="0660240">TRESORERIE THUIR</poste>
+ <poste code="0140360">TRESORERIE THURY-HARCOURT</poste>
+ <poste code="0490290">TRESORERIE TIERCE</poste>
+ <poste code="0140370">TRESORERIE TILLY-SUR-SEULLES</poste>
+ <poste code="0610400">TRESORERIE TINCHEBRAY</poste>
+ <poste code="0350480">TRESORERIE TINTENIAC</poste>
+ <poste code="0240400">TRESORERIE DE TOCANE-SAINT-APRE-LISLE</poste>
+ <poste code="0170240">TRESORERIE TONNAY-BOUTONNE</poste>
+ <poste code="0170250">TRESORERIE TONNAY-CHARENTE</poste>
+ <poste code="0470310">TRESORERIE TONNEINS</poste>
+ <poste code="0890410">TRESORERIE TONNERRE</poste>
+ <poste code="0500230">TRESORERIE TORIGNI-TESSY</poste>
+ <poste code="0760650">TRESORERIE DE TOTES</poste>
+ <poste code="0890420">TRESORERIE TOUCY</poste>
+ <poste code="0540070">TRESORERIE DE TOUL</poste>
+ <poste code="0540250">TRESORERIE DE TOUL-COLLECTIVITES</poste>
+ <poste code="0830000">TRESORERIE GENERALE DU VAR</poste>
+ <poste code="0830180">TRESORERIE TOULON EST</poste>
+ <poste code="0830190">TRESORERIE TOULON CENTRE ET OUEST</poste>
+ <poste code="0830200">TRESORERIE TOULON MUNICIPALE</poste>
+ <poste code="0830230">TRESORERIE VAR AMENDES</poste>
+ <poste code="0830001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DU VAR</poste>
+ <poste code="0830900">PAIERIE DEPARTEMENTALE DU VAR</poste>
+ <poste code="0310000">TRESORERIE GENERALE DE LA HAUTE-GARONNE</poste>
+ <poste code="0310007">CENTRE REGIONAL DES PENSIONS DE LA HAUTE-GARONNE</poste>
+ <poste code="0310008">CENTRE DE FORMATION DEPARTEMENTAL DE LA HAUTE-GARONNE</poste>
+ <poste code="0310009">DEPARTEMENT INFORMATIQUE DE LA HAUTE-GARONNE</poste>
+ <poste code="0310270">TRESORERIE DE TOULOUSE CITE</poste>
+ <poste code="0310280">TRESORERIE TOULOUSE-COTE-PAVEE</poste>
+ <poste code="0310290">TRESORERIE TOULOUSE BASSO CAMBO</poste>
+ <poste code="0310340">TRESORERIE TOULOUSE AMENDES</poste>
+ <poste code="0310350">RECETTE DES FINANCES TOULOUSE MUNICIPALE</poste>
+ <poste code="0310360">TRESORERIE TOULOUSE CHU</poste>
+ <poste code="0310370">TRESORERIE HOPITAL SPEC. MARCHANT-TOULOUSE</poste>
+ <poste code="0310800">PAIERIE REGIONALE DE MIDI-PYRENEES</poste>
+ <poste code="0310006">PÔLE NATIONAL DE SOUTIEN AU RESEAU DOMAINE DES RESSOURCES HUMAINES</poste>
+ <poste code="0310900">PAIERIE DEPARTEMENTALE DE LA HAUTE-GARONNE</poste>
+ <poste code="0310910">PÔLE NATIONAL DE LA REDEVANCE AUDIOVISUELLE DE TOULOUSE</poste>
+ <poste code="0310005">CENTRE AMENDE SERVICE DE TOULOUSE</poste>
+ <poste code="0590470">TRESORERIE DE TOURCOING MUNICIPALE</poste>
+ <poste code="0590480">TRESORERIE TOURCOING CENTRE HOSPITALIER</poste>
+ <poste code="0590450">TRESORERIE TOURCOING</poste>
+ <poste code="0500490">TRESORERIE TOURLAVILLE</poste>
+ <poste code="0770240">TRESORERIE TOURNAN-EN-BRIE</poste>
+ <poste code="0650300">TRESORERIE TOURNAY</poste>
+ <poste code="0470320">TRESORERIE TOURNON-D'AGENAIS</poste>
+ <poste code="0070330">TRESORERIE TOURNON-SUR-RHONE</poste>
+ <poste code="0710350">TRESORERIE TOURNUS</poste>
+ <poste code="0370000">TRESORERIE GENERALE EN INDRE-ET-LOIRE</poste>
+ <poste code="0370007">CENTRE REGIONAL DES PENSIONS D' INDRE-ET-LOIRE</poste>
+ <poste code="0370008">CENTRE DE FORMATION DEPARTEMENTAL D' INDRE-ET-LOIRE</poste>
+ <poste code="0370009">DEPARTEMENT INFORMATIQUE D' INDRE-ET-LOIRE</poste>
+ <poste code="0370370">TRESORERIE DE TOURS</poste>
+ <poste code="0370410">TRESORERIE DE TOURS MUNICIPALE</poste>
+ <poste code="0370420">TRESORERIE TOURS CHU</poste>
+ <poste code="0370440">TRESORERIE OPAC D'INDRE-ET-LOIRE</poste>
+ <poste code="0370900">PAIERIE DEPARTEMENTALE D' INDRE-ET-LOIRE</poste>
+ <poste code="0370001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE L' INDRE ET LOIRE</poste>
+ <poste code="0370450">TRESORERIE DE L' OPAC DE TOURS</poste>
+ <poste code="0710360">TRESORERIE DE TRAMAYES</poste>
+ <poste code="0780430">TRESORERIE TRAPPES</poste>
+ <poste code="0220430">TRESORERIE DE TREGUIER-LA ROCHE-DERRIEN</poste>
+ <poste code="0190180">TRESORERIE TREIGNAC</poste>
+ <poste code="0490300">TRESORERIE DE TRELAZE</poste>
+ <poste code="0595300">TRESORERIE TRELON</poste>
+ <poste code="0930370">TRESORERIE TREMBLAY-EN-FRANCE</poste>
+ <poste code="0131150">TRESORERIE TRETS</poste>
+ <poste code="0140380">TRESORERIE TREVIERES</poste>
+ <poste code="0010390">TRESORERIE TREVOUX</poste>
+ <poste code="0650310">TRESORERIE TRIE-SUR-BAISE</poste>
+ <poste code="0781160">TRESORERIE TRIEL-SUR-SEINE</poste>
+ <poste code="0595110">TRESORERIE TRITH-SAINT-LEGER</poste>
+ <poste code="0140390">TRESORERIE TROARN-ARGENCES</poste>
+ <poste code="0140590">TRESORERIE TROUVILLE-SUR-MER-DEAUVILLE</poste>
+ <poste code="0100360">TRESORERIE DE TROYES MUNICIPALE</poste>
+ <poste code="0100350">TRESORERIE DE TROYES</poste>
+ <poste code="0100000">TRESORERIE GENERALE DE L' AUBE</poste>
+ <poste code="0100280">TRESORERIE DE PONT-SAINTE-MARIE</poste>
+ <poste code="0100330">TRESORERIE DE SAINTE-SAVINE</poste>
+ <poste code="0100370">TRESORERIE DE TROYES CENTRE HOSPITALIER</poste>
+ <poste code="0100900">PAIERIE DEPARTEMENTALE DE L' AUBE</poste>
+ <poste code="0670620">TRESORERIE DE TRUCHTERSHEIM</poste>
+ <poste code="0110520">TRESORERIE TUCHAN</poste>
+ <poste code="0190000">TRESORERIE GENERALE DE LA CORREZE</poste>
+ <poste code="0190190">TRESORERIE TULLE</poste>
+ <poste code="0759001">AGENCE COMPTABLE DE LA RIEP - ANNEXE TULLE</poste>
+ <poste code="0190900">PAIERIE DEPARTEMENTALE DE LA CORREZE</poste>
+ <poste code="0380460">TRESORERIE TULLINS</poste>
+ <poste code="1190000">TRESORERIE AMBASSADE DE FRANCE EN TUNISIE</poste>
+ <poste code="0730350">TRESORERIE UGINE</poste>
+ <poste code="0190200">TRESORERIE USSEL</poste>
+ <poste code="0640460">TRESORERIE USTARITZ</poste>
+ <poste code="1610010">TRESORERIE DES ILES-SOUS-LE-VENT</poste>
+ <poste code="1630000">PAIERIE DES ILES WALLIS ET FUTUNA</poste>
+ <poste code="0190210">TRESORERIE UZERCHE</poste>
+ <poste code="0300350">TRESORERIE UZES</poste>
+ <poste code="0810350">TRESORERIE VABRE</poste>
+ <poste code="0020490">TRESORERIE DE VAILLY-SUR-AISNE-CHASSEMY</poste>
+ <poste code="0840270">TRESORERIE DE VAISON-LA-ROMAINE</poste>
+ <poste code="0520360">TRESORERIE LE VAL-DE-MEUSE</poste>
+ <poste code="0270410">TRESORERIE VAL-DE-REUIL</poste>
+ <poste code="0380470">TRESORERIE VALBONNAIS</poste>
+ <poste code="0250250">TRESORERIE VALDAHON</poste>
+ <poste code="0900100">TRESORERIE VALDOIE</poste>
+ <poste code="0360290">TRESORERIE DE VALENCAY</poste>
+ <poste code="0260000">TRESORERIE GENERALE DE LA DROME</poste>
+ <poste code="0260260">TRESORERIE VALENCE</poste>
+ <poste code="0260270">TRESORERIE VALENCE MUNICIPALE</poste>
+ <poste code="0260280">TRESORERIE VALENCE HOPITAUX</poste>
+ <poste code="0260290">TRESORERIE VALENCE OPHLM</poste>
+ <poste code="0260900">PAIERIE DEPARTEMENTALE DE LA DROME</poste>
+ <poste code="0820230">TRESORERIE VALENCE-D'AGEN</poste>
+ <poste code="0810170">TRESORERIE VALENCE-D'ALBIGEOIS</poste>
+ <poste code="0320360">TRESORERIE VALENCE-SUR-BAISE</poste>
+ <poste code="0595000">RECETTE DES FINANCES VALENCIENNES</poste>
+ <poste code="0595090">TRESORERIE ONNAING</poste>
+ <poste code="0595160">TRESORERIE VALENCIENNES CENTRE HOSPITALIER</poste>
+ <poste code="0595140">TRESORERIE DE VALENCIENNES</poste>
+ <poste code="0061120">TRESORERIE VALLAURIS</poste>
+ <poste code="0300360">TRESORERIE VALLERAUGUE</poste>
+ <poste code="0070350">TRESORERIE VALLON-PONT-D'ARC</poste>
+ <poste code="0762150">TRESORERIE VALMONT</poste>
+ <poste code="0500500">TRESORERIE VALOGNES</poste>
+ <poste code="0840280">TRESORERIE VALREAS</poste>
+ <poste code="0070360">TRESORERIE VALS-LES-BAINS</poste>
+ <poste code="0540280">TRESORERIE VANDOEUVRE-LES-NANCY</poste>
+ <poste code="0560000">TRESORERIE GENERALE DU MORBIHAN</poste>
+ <poste code="0560170">TRESORERIE VANNES-CLISSON</poste>
+ <poste code="0560180">TRESORERIE VANNES-MENIMUR</poste>
+ <poste code="0560190">TRESORERIE VANNES MUNICIPALE</poste>
+ <poste code="0560900">PAIERIE DEPARTEMENTALE DU MORBIHAN</poste>
+ <poste code="0560001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DU MORBIHAN</poste>
+ <poste code="0921130">TRESORERIE VANVES</poste>
+ <poste code="0550440">TRESORERIE DE VARENNES-EN-ARGONNE</poste>
+ <poste code="0030340">TRESORERIE VARENNES-SUR-ALLIER</poste>
+ <poste code="0090280">TRESORERIE VARILHES</poste>
+ <poste code="0580300">TRESORERIE VARZY</poste>
+ <poste code="0550280">TRESORERIE DE VAUCOULEURS - VOID VACON</poste>
+ <poste code="0690320">TRESORERIE VAUGNERAY</poste>
+ <poste code="0690450">TRESORERIE VAULX-EN-VELIN</poste>
+ <poste code="0300370">TRESORERIE VAUVERT</poste>
+ <poste code="0700410">TRESORERIE VAUVILLERS</poste>
+ <poste code="0240560">TRESORERIE DE VELINES ET LAMOTHE-MONTRAVEL</poste>
+ <poste code="0210440">TRESORERIE VENAREY-LES-LAUMES</poste>
+ <poste code="0061130">TRESORERIE VENCE</poste>
+ <poste code="0100380">TRESORERIE DE VENDEUVRE-SUR-BARSE</poste>
+ <poste code="0410350">TRESORERIE VENDOME</poste>
+ <poste code="0690330">TRESORERIE DE VENISSIEUX</poste>
+ <poste code="0550450">TRESORERIE DE VERDUN</poste>
+ <poste code="0820240">TRESORERIE VERDUN-SUR-GARONNE</poste>
+ <poste code="0710560">TRESORERIE VERDUN-SUR-LE-DOUBS</poste>
+ <poste code="0300380">TRESORERIE VERGEZE</poste>
+ <poste code="0240410">TRESORERIE VERGT</poste>
+ <poste code="0020630">TRESORERIE VERMAND</poste>
+ <poste code="0890440">TRESORERIE VERMENTON</poste>
+ <poste code="0270140">TRESORERIE VERNEUIL-SUR-AVRE</poste>
+ <poste code="0270150">TRESORERIE VERNON</poste>
+ <poste code="0570550">TRESORERIE VERNY</poste>
+ <poste code="0780000">TRESORERIE GENERALE DES YVELINES</poste>
+ <poste code="0780008">CENTRE DE FORMATION DEPARTEMENTAL DES YVELINES</poste>
+ <poste code="0780009">DEPARTEMENT INFORMATIQUE DES YVELINES</poste>
+ <poste code="0780330">TRESORERIE DE VERSAILLES</poste>
+ <poste code="0780360">TRESORERIE DE VERSAILLES BANLIEUE</poste>
+ <poste code="0780370">TRESORERIE DE VERSAILLES MUNICIPALE</poste>
+ <poste code="0780900">PAIERIE DEPARTEMENTALE YVELINES</poste>
+ <poste code="0780450">TRESORERIE DE L' OPIEVOY-HLM</poste>
+ <poste code="0780001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DES YVELINES</poste>
+ <poste code="0630320">TRESORERIE VERTAIZON</poste>
+ <poste code="0440180">TRESORERIE DE VERTOU</poste>
+ <poste code="0020690">TRESORERIE VERVINS</poste>
+ <poste code="0512160">TRESORERIE DE VERZY</poste>
+ <poste code="02B0220">TRESORERIE VESCOVATO</poste>
+ <poste code="0700000">TRESORERIE GENERALE DE LA HAUTE-SAONE</poste>
+ <poste code="0700440">TRESORERIE VESOUL</poste>
+ <poste code="0700900">PAIERIE DEPARTEMENTALE DE LA HAUTE-SAONE</poste>
+ <poste code="0050230">TRESORERIE VEYNES</poste>
+ <poste code="0300530">TRESORERIE DE VEZENOBRES</poste>
+ <poste code="0951090">TRESORERIE VIARMES</poste>
+ <poste code="0720520">TRESORERIE VIBRAYE</poste>
+ <poste code="0650320">TRESORERIE VIC-EN-BIGORRE</poste>
+ <poste code="0320370">TRESORERIE VIC-FEZENSAC</poste>
+ <poste code="0630330">TRESORERIE VIC-LE-COMTE</poste>
+ <poste code="0020500">TRESORERIE VIC-SUR-AISNE</poste>
+ <poste code="0150300">TRESORERIE VIC-SUR-CERE</poste>
+ <poste code="0570560">TRESORERIE VIC-SUR-SEILLE</poste>
+ <poste code="0090210">TRESORERIE VICDESSOS</poste>
+ <poste code="0030350">TRESORERIE VICHY</poste>
+ <poste code="02A0120">TRESORERIE VICO</poste>
+ <poste code="0650330">TRESORERIE VIELLE-AURE</poste>
+ <poste code="0381000">RECETTE DES FINANCES VIENNE</poste>
+ <poste code="0381140">TRESORERIE VIENNE MUNICIPALE</poste>
+ <poste code="0381130">TRESORERIE DE VIENNE</poste>
+ <poste code="0180400">TRESORERIE DE VIERZON VILLE ET CAMPAGNE</poste>
+ <poste code="0380480">TRESORERIE VIF</poste>
+ <poste code="0190320">TRESORERIE VIGEOIS</poste>
+ <poste code="0550290">TRESORERIE DE VIGNEULLES-LES-HATTONCHATEL</poste>
+ <poste code="0910320">TRESORERIE VIGNEUX-SUR-SEINE</poste>
+ <poste code="0520260">TRESORERIE VIGNORY</poste>
+ <poste code="0950270">TRESORERIE VIGNY</poste>
+ <poste code="0570570">TRESORERIE VIGY</poste>
+ <poste code="0490530">TRESORERIE DE VIHIERS</poste>
+ <poste code="0530320">TRESORERIE VILLAINES-LA-JUHEL</poste>
+ <poste code="0380490">TRESORERIE VILLARD-DE-LANS</poste>
+ <poste code="0010400">TRESORERIE VILLARS-LES-DOMBES</poste>
+ <poste code="0670630">TRESORERIE VILLE</poste>
+ <poste code="02B0050">TRESORERIE CAP CORSE</poste>
+ <poste code="0512180">TRESORERIE VILLE-EN-TARDENOIS</poste>
+ <poste code="0160440">TRESORERIE VILLEBOIS-LAVALETTE</poste>
+ <poste code="0500370">TRESORERIE DE VILLEDIEU-PERCY</poste>
+ <poste code="0480230">TRESORERIE VILLEFORT</poste>
+ <poste code="0660260">TRESORERIE DU CONFLENT</poste>
+ <poste code="0310390">TRESORERIE VILLEFRANCHE-DE-LAURAGAIS</poste>
+ <poste code="0120450">TRESORERIE VILLEFRANCHE-DE-ROUERGUE</poste>
+ <poste code="0690550">TRESORERIE DE VILLEFRANCHE HERON</poste>
+ <poste code="0060250">TRESORERIE VILLEFRANCHE-SUR-MER</poste>
+ <poste code="0690560">TRESORERIE VILLEFRANCHE RIVOLI</poste>
+ <poste code="0940320">TRESORERIE VILLEJUIF CHS PAUL GUIRAUD</poste>
+ <poste code="0940210">TRESORERIE VILLEJUIF</poste>
+ <poste code="0911150">TRESORERIE VILLEMOISSON-SUR-ORGE</poste>
+ <poste code="0330590">TRESORERIE VILLENAVE-D'ORNON</poste>
+ <poste code="0120460">TRESORERIE VILLENEUVE</poste>
+ <poste code="0590010">TRESORERIE DE VILLENEUVE-D'ASCQ</poste>
+ <poste code="0070390">TRESORERIE VILLENEUVE-DE-BERG</poste>
+ <poste code="0400180">TRESORERIE VILLENEUVE-DE-MARSAN</poste>
+ <poste code="0890560">TRESORERIE DE VILLENEUVE-L'ARCHEVEQUE</poste>
+ <poste code="0920380">TRESORERIE VILLENEUVE-LA-GARENNE</poste>
+ <poste code="0940220">TRESORERIE DE VILLENEUVE-LE-ROI</poste>
+ <poste code="0300400">TRESORERIE VILLENEUVE-LES-AVIGNON</poste>
+ <poste code="0940230">TRESORERIE VILLENEUVE-SAINT-GEORGES</poste>
+ <poste code="0470330">TRESORERIE VILLENEUVE-SUR-LOT</poste>
+ <poste code="0890570">TRESORERIE DE VILLENEUVE-SUR-YONNE</poste>
+ <poste code="0930360">TRESORERIE AULNAY-SOUS-BOIS ET. HOSP.</poste>
+ <poste code="0470340">TRESORERIE VILLEREAL</poste>
+ <poste code="0140420">TRESORERIE DE VILLERS-BOCAGE</poste>
+ <poste code="0800460">TRESORERIE VILLERS-BOCAGE</poste>
+ <poste code="0020510">TRESORERIE DE VILLERS-COTTERETS</poste>
+ <poste code="0700450">TRESORERIE VILLERSEXEL</poste>
+ <poste code="0690340">TRESORERIE DE VILLEURBANNE</poste>
+ <poste code="0690350">TRESORERIE DE VILLEURBANNE MUNICIPALE</poste>
+ <poste code="0951110">TRESORERIE VILLIERS-LE-BEL</poste>
+ <poste code="0941100">TRESORERIE DE VILLIERS-SUR-MARNE</poste>
+ <poste code="0610420">TRESORERIE VIMOUTIERS</poste>
+ <poste code="0620470">TRESORERIE VIMY</poste>
+ <poste code="0380500">TRESORERIE VINAY</poste>
+ <poste code="0660270">TRESORERIE VINCA</poste>
+ <poste code="0941120">TRESORERIE VINCENNES MUNICIPALE</poste>
+ <poste code="0941110">TRESORERIE DE VINCENNES</poste>
+ <poste code="0140430">TRESORERIE VIRE</poste>
+ <poste code="0381240">TRESORERIE VIRIEU</poste>
+ <poste code="0910330">TRESORERIE VIRY-CHATILLON</poste>
+ <poste code="0350390">TRESORERIE VITRE</poste>
+ <poste code="0131170">TRESORERIE VITROLLES</poste>
+ <poste code="0620480">TRESORERIE VITRY-EN-ARTOIS</poste>
+ <poste code="0510150">TRESORERIE DE VITRY - RURAL</poste>
+ <poste code="0510280">TRESORERIE DE VITRY-LE-FRANCOIS</poste>
+ <poste code="0940260">TRESORERIE VITRY-SUR-SEINE</poste>
+ <poste code="0940270">TRESORERIE VITRY-SUR-SEINE MUNICIPALE</poste>
+ <poste code="0210470">TRESORERIE VITTEAUX</poste>
+ <poste code="0880450">TRESORERIE VITTEL-REMONCOURT</poste>
+ <poste code="0860260">TRESORERIE VIVONNE</poste>
+ <poste code="0380520">TRESORERIE VIZILLE</poste>
+ <poste code="0380530">TRESORERIE VOIRON</poste>
+ <poste code="0390270">TRESORERIE VOITEUR</poste>
+ <poste code="0040280">TRESORERIE VOLONNE</poste>
+ <poste code="0630470">TRESORERIE VOLVIC</poste>
+ <poste code="0430320">TRESORERIE VOREY</poste>
+ <poste code="0860270">TRESORERIE VOUILLE</poste>
+ <poste code="0370430">TRESORERIE DE VOUVRAY</poste>
+ <poste code="0080510">TRESORERIE VOUZIERS</poste>
+ <poste code="0280310">TRESORERIE DE VOVES-ORGERES EN BEAUCE</poste>
+ <poste code="1780000">TRESORERIE AMBASSADE DE FRANCE AUX ETATS-UNIS</poste>
+ <poste code="0590090">TRESORERIE DE WASQUEHAL</poste>
+ <poste code="0670640">TRESORERIE WASSELONNE</poste>
+ <poste code="0020640">TRESORERIE WASSIGNY</poste>
+ <poste code="0520270">TRESORERIE DE WASSY</poste>
+ <poste code="0590490">TRESORERIE WATTIGNIES</poste>
+ <poste code="0590500">TRESORERIE WATTRELOS</poste>
+ <poste code="0590110">TRESORERIE FOURNES-EN-WEPPES</poste>
+ <poste code="0671200">TRESORERIE DE WISSEMBOURG</poste>
+ <poste code="0671210">TRESORERIE WOERTH</poste>
+ <poste code="0594150">TRESORERIE WORMHOUT</poste>
+ <poste code="0880480">TRESORERIE XERTIGNY</poste>
+ <poste code="1390000">TRESORERIE AMBASSADE DE FRANCE AU CAMEROUN</poste>
+ <poste code="0730360">TRESORERIE D' YENNE</poste>
+ <poste code="0760480">TRESORERIE YERVILLE</poste>
+ <poste code="0430330">TRESORERIE YSSINGEAUX</poste>
+ <poste code="0760490">TRESORERIE YVETOT</poste>
+ <poste code="0030130">TRESORERIE DE MOULINS</poste>
+ </xsl:variable>
+
+ <xsl:template match="/*[position()=1]">
+ <xsl:if test="local-name() = 'PES_Aller'">
+ <PES_Aller xmlns="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/aller"
+ xmlns:added="http://projets.admisource.gouv.fr/xemelios/namespaces#added"
+ xmlns:n="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/aller"
+ xmlns:ano="http://projets.admisource.gouv.fr/xemelios/namespaces#anomally">
+ <xsl:for-each select="./@*">
+ <xsl:attribute name="{local-name(.)}" namespace="{namespace-uri(.)}" select="."/>
+ </xsl:for-each>
+ <xsl:variable name="signatureGlobaleMetier">
+ <xsl:choose>
+ <xsl:when test="exists(/n:PES_Aller/ds:Signature)">
+ <xsl:choose>
+ <xsl:when test="not(exists(/n:PES_Aller/*/ds:Signature))">
+ <xsl:choose>
+ <xsl:when test="exists(/n:PES_Aller/*[local-name()='PES_DepenseAller'])">
+ <xsl:choose>
+ <xsl:when test="exists(/n:PES_Aller/*[local-name()='PES_DepenseAller']/*[local-name()='EnTeteDepense'])">
+ <xsl:choose>
+ <xsl:when test="exists(/n:PES_Aller/*[local-name()='PES_DepenseAller']/*[local-name()='EnTeteDepense']/*[local-name()='InfoDematerialisee'])">
+ <xsl:choose>
+ <xsl:when test="./*[local-name()='PES_DepenseAller']/*[local-name()='EnTeteDepense']/*[local-name()='InfoDematerialisee']/@V='1'">
+ <xsl:value-of select="true()"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="false()"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="false()"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="false()"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="false()"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="false()"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="false()"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:comment> This file is <xsl:if test="not($signatureGlobaleMetier)">not </xsl:if>signed </xsl:comment>
+ <xsl:for-each select="./*">
+ <xsl:call-template name="writeElement">
+ <xsl:with-param name="el" select="."/>
+ <xsl:with-param name="signatureGlobale" select="$signatureGlobaleMetier"/>
+ </xsl:call-template>
+ </xsl:for-each>
+ </PES_Aller>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template name="writeElement">
+ <xsl:param name="el"/>
+ <xsl:param name="signatureGlobale" select="false()"/>
+ <xsl:choose>
+ <xsl:when test="namespace-uri($el) = 'http://projets.admisource.gouv.fr/xemelios/namespaces#anomally'">
+ <xsl:element name="{name($el)}" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#anomally">
+ <xsl:for-each select="$el/@*">
+ <xsl:attribute name="{name(.)}" namespace="{namespace-uri(.)}">
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+ </xsl:for-each>
+ <xsl:value-of select="text()" disable-output-escaping="yes"/>
+ <xsl:for-each select="$el/*">
+ <xsl:call-template name="writeElement"><xsl:with-param name="el" select="."/><xsl:with-param name="signatureGlobale" select="$signatureGlobale"/></xsl:call-template>
+ </xsl:for-each>
+ </xsl:element>
+ </xsl:when>
+ <xsl:when test="namespace-uri($el) = 'http://www.w3.org/2000/09/xmldsig#'">
+ <!--xsl:if test="local-name($el)='Signature' and local-name($el/..)='PES_Aller' and (count($signatureGlobale/child::node()) gt 0)"-->
+ <xsl:element name="{name($el)}" namespace="http://www.w3.org/2000/09/xmldsig#">
+ <xsl:for-each select="$el/@*">
+ <xsl:attribute name="{name(.)}" namespace="{namespace-uri(.)}">
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+ </xsl:for-each>
+ <xsl:value-of select="text()" disable-output-escaping="yes"/>
+ <xsl:for-each select="$el/*">
+ <xsl:call-template name="writeElement"><xsl:with-param name="el" select="."/><xsl:with-param name="signatureGlobale" select="$signatureGlobale"/></xsl:call-template>
+ </xsl:for-each>
+ </xsl:element>
+ <!--/xsl:if-->
+ </xsl:when>
+ <xsl:when test="namespace-uri($el) = 'http://uri.etsi.org/01903/v1.1.1#'">
+ <xsl:element name="{name($el)}" namespace="http://uri.etsi.org/01903/v1.1.1#">
+ <xsl:for-each select="$el/@*">
+ <xsl:attribute name="{name(.)}" namespace="{namespace-uri(.)}">
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+ </xsl:for-each>
+ <xsl:value-of select="text()" disable-output-escaping="yes"/>
+ <xsl:for-each select="$el/*">
+ <xsl:call-template name="writeElement"><xsl:with-param name="el" select="."/><xsl:with-param name="signatureGlobale" select="$signatureGlobale"/></xsl:call-template>
+ </xsl:for-each>
+ </xsl:element>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="local-name($el) = 'LibellePoste'"></xsl:when>
+ <xsl:otherwise>
+ <xsl:element name="{local-name($el)}" namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/aller">
+ <xsl:for-each select="$el/@*">
+ <xsl:choose>
+ <xsl:when test="namespace-uri(.) = 'http://projets.admisource.gouv.fr/xemelios/namespaces#anomally'">
+ <xsl:attribute name="{local-name(.)}" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#anomally">
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="{local-name(.)}">
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ <xsl:choose>
+ <xsl:when test="contains('|ModRegl|',concat('|',name($el),'|'))">
+ <xsl:attribute name="Libelle" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#added"><xsl:value-of select="$mode.reglement//reglement[@Code=$el/@V]/@Libelle"/></xsl:attribute>
+ </xsl:when>
+ <xsl:when test="contains('|CpteBancaire|',concat('|',name($el),'|'))">
+ <xsl:attribute name="rib" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#added">
+ <xsl:value-of select="$el/*[local-name()='CodeEtab'][1]/@V"/>
+ <xsl:value-of select="$el/*[local-name()='CodeGuic'][1]/@V"/>
+ <xsl:value-of select="$el/*[local-name()='IdCpte'][1]/@V"/>
+ <xsl:value-of select="$el/*[local-name()='CleRib'][1]/@V"/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="contains('|Bordereau|Piece|LigneDePiece|PJRef',concat('|',name($el)))">
+ <xsl:attribute name="generated-id" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#added">
+ <xsl:value-of select="generate-id()"/>
+ </xsl:attribute>
+ <!--xsl:attribute name="tag-name" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#added">
+ <xsl:value-of select="name($el)"/>
+ </xsl:attribute-->
+ </xsl:when>
+ <xsl:when test="local-name($el) = 'InfoTiers'">
+ <xsl:attribute name="key" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#added">
+ <xsl:value-of select="concat(./*[local-name()='Nom'][1]/@V,' ',./*[local-name()='Prenom'][1]/@V)"/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="local-name($el) = 'InfoLignePce'">
+ <xsl:attribute name="imputation" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#added">
+ <xsl:value-of select="concat(./*[local-name()='Nature'][1]/@V,'-',./*[local-name()='Fonction'][1]/@V,'-',./*[local-name()='Operation'][1]/@V)"/>
+ </xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+ <xsl:choose>
+ <xsl:when test="local-name($el)='Bordereau'">
+ <xsl:attribute name="nbPiece" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#added"><xsl:value-of select="count($el/*[local-name()='Piece'])"/></xsl:attribute>
+ <xsl:attribute name="montantTTC" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#added">
+ <xsl:value-of select="sum(./*[local-name()='BlocBordereau'][1]/*[local-name()='MtBordHT'][1]/@V) + sum(./*[local-name()='BlocBordereau'][1]/*[local-name()='MtBord'][1]/*[local-name()='TVA'][1]/@V)"/>
+ </xsl:attribute>
+ <xsl:attribute name="LibelleTypBord" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#added">
+ <xsl:variable name="codTypBord" select="./*[local-name()='BlocBordereau'][1]/*[local-name()='TypBord'][1]/@V"/>
+ <xsl:choose>
+ <xsl:when test="$codTypBord='01'">Bordereau de mandats</xsl:when>
+ <xsl:when test="$codTypBord='02'">Bordereau d'annulation de mandats</xsl:when>
+ <xsl:when test="$codTypBord='03'">Bordereau d'ordres de paiement ordonnateur</xsl:when>
+ <xsl:when test="$codTypBord='04'">Bordereau de mandats émis d'office</xsl:when>
+ </xsl:choose>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="name($el)='Piece'">
+ <xsl:attribute name="nbLigne" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#added"><xsl:value-of select="count($el/*[local-name()='LigneDePiece'])"/></xsl:attribute>
+ <xsl:attribute name="montantHT" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#added">
+ <xsl:value-of select="sum($el/*[local-name()='LigneDePiece']/*[local-name()='BlocLignePiece']/*[local-name()='InfoLignePce']/*[local-name()='MtHT']/@V)"/>
+ </xsl:attribute>
+ <xsl:attribute name="LibelleTypPiece" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#added">
+ <xsl:variable name="codTypPiece" select="$el/*[local-name()='BlocPiece']/*[local-name()='InfoPce']/*[local-name()='TypPce']/@V"/>
+ <xsl:choose>
+ <xsl:when test="$codTypPiece='01'">Mandat ordinaire</xsl:when>
+ <xsl:when test="$codTypPiece='02'">Mandat correctif</xsl:when>
+ <xsl:when test="$codTypPiece='03'">Mandat ordre budgétaire</xsl:when>
+ <xsl:when test="$codTypPiece='04'">Mandat d'ordre mixte</xsl:when>
+ <xsl:when test="$codTypPiece='05'">Mandat émis après paiement</xsl:when>
+ <xsl:when test="$codTypPiece='06'">Mandat global</xsl:when>
+ <xsl:when test="$codTypPiece='07'">Mandat d'admission en non valeurs</xsl:when>
+ <xsl:when test="$codTypPiece='08'">Mandat collectif</xsl:when>
+ <xsl:when test="$codTypPiece='09'">Mandat sur marché</xsl:when>
+ <xsl:when test="$codTypPiece='10'">Mandat de rattachement</xsl:when>
+ <xsl:when test="$codTypPiece='11'">Ordre de paiement</xsl:when>
+ <xsl:when test="$codTypPiece='13'">Charges constatées d'avance</xsl:when>
+ </xsl:choose>
+ </xsl:attribute>
+ <xsl:attribute name="LibelleNatPiece" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#added">
+ <xsl:variable name="codNatPiece" select="$el/*[local-name()='BlocPiece']/*[local-name()='InfoPce']/*[local-name()='NatPce']/@V"/>
+ <xsl:choose>
+ <xsl:when test="$codNatPiece='01'">Fonctionnement</xsl:when>
+ <xsl:when test="$codNatPiece='02'">Investissement</xsl:when>
+ <xsl:when test="$codNatPiece='03'">Inventaire</xsl:when>
+ <xsl:when test="$codNatPiece='04'">Emprunt</xsl:when>
+ <xsl:when test="$codNatPiece='05'">Régie</xsl:when>
+ <xsl:when test="$codNatPiece='06'">Annulation / Réduction</xsl:when>
+ <xsl:when test="$codNatPiece='07'">Complémentaire</xsl:when>
+ <xsl:when test="$codNatPiece='08'">Ré-émis</xsl:when>
+ <xsl:when test="$codNatPiece='09'">Annulant un titre</xsl:when>
+ <xsl:when test="$codNatPiece='10'">Annulation du mandat de rattachement</xsl:when>
+ <xsl:when test="$codNatPiece='11'">Paie</xsl:when>
+ <xsl:when test="$codNatPiece='12'">Retenue de garantie</xsl:when>
+ <xsl:when test="$codNatPiece='13'">Dernier acompte sur marché</xsl:when>
+ <xsl:when test="$codNatPiece='14'">Avance forfaitaire</xsl:when>
+ <xsl:when test="$codNatPiece='15'">Autre</xsl:when>
+ <xsl:when test="$codNatPiece='18'">Cession</xsl:when>
+ </xsl:choose>
+ </xsl:attribute>
+ <xsl:attribute name="montantTTC" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#added">
+ <xsl:value-of select="sum($el/*[local-name()='LigneDePiece']/*[local-name()='BlocLignePiece']/*[local-name()='InfoLignePce']/*[local-name()='MtHT']/@V) + sum($el/*[local-name()='LigneDePiece']/*[local-name()='BlocLignePiece']/*[local-name()='InfoLignePce']/*[local-name()='MtTVA']/@V)"/>
+ </xsl:attribute>
+ <xsl:choose>
+ <xsl:when test="local-name()='Piece'">
+ <xsl:attribute name="avecPJ" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#added">
+ <xsl:value-of select="count($el/descendant::node()[local-name()='PJRef']) > 0"/>
+ </xsl:attribute>
+ <xsl:attribute name="nbPJ" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#added">
+ <xsl:value-of select="count($el/descendant::node()[local-name()='PJRef'])"/>
+ </xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+ <!--xsl:choose>
+ <xsl:when test="count(*[local-name()='BlocPiece']/*[local-name()='PJRef']) > 0">
+ <xsl:attribute name="avecPJ" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#added">true</xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="avecPJ" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#added">false</xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose-->
+ <xsl:choose>
+ <xsl:when test="$el/*[local-name()='BlocPiece']/*[local-name()='DGP']/*[local-name()='Dgp']/@V = 'true' or $el/*[local-name()='BlocPiece']/*[local-name()='DGP']/*[local-name()='Dgp']/@V = '1'">
+ <xsl:attribute name="DGP" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#added">true</xsl:attribute>
+ <xsl:attribute name="EligibleDGP" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#added">Oui</xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="DGP" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#added">false</xsl:attribute>
+ <xsl:attribute name="EligibleDGP" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#added">Non</xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:for-each select="//PJRef">
+ <added:AllPJRef added:generated-id="{generate-id()}">
+ <n:Support V="{Support/@V}"/>
+ <n:IdUnique V="{IdUnique/@V}"/>
+ <xsl:if test="NomPJ">
+ <n:NomPJ V="{NomPJ/@V}"/>
+ </xsl:if>
+ </added:AllPJRef>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:when test="local-name($el)='LigneDePiece'">
+ <xsl:attribute name="montantTTC" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#added">
+ <xsl:value-of select="sum($el/*[local-name()='BlocLignePiece']/*[local-name()='InfoLignePce']/*[local-name()='MtHT']/@V) + sum($el/*[local-name()='BlocLignePiece']/*[local-name()='InfoLignePce']/*[local-name()='MtTVA']/@V)"/>
+ </xsl:attribute>
+ <xsl:attribute name="LibelleCatTiersLignePiece" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#added">
+ <xsl:variable name="codCatTiers" select="$el/*[local-name()='Tiers']/*[local-name()='InfoTiers']/*[local-name()='CatTiers']/@V"/>
+ <xsl:choose>
+ <xsl:when test="$codCatTiers='01'">Personnes physiques</xsl:when>
+ <xsl:when test="$codCatTiers='20'">État et établissements publics nationaux</xsl:when>
+ <xsl:when test="$codCatTiers='21'">Régions</xsl:when>
+ <xsl:when test="$codCatTiers='22'">Départements</xsl:when>
+ <xsl:when test="$codCatTiers='23'">Communes</xsl:when>
+ <xsl:when test="$codCatTiers='24'">Groupements de collectivités</xsl:when>
+ <xsl:when test="$codCatTiers='25'">Caisses des écoles</xsl:when>
+ <xsl:when test="$codCatTiers='26'">CCAS</xsl:when>
+ <xsl:when test="$codCatTiers='27'">Établissements publics de santé</xsl:when>
+ <xsl:when test="$codCatTiers='28'">École nationale de la santé publique</xsl:when>
+ <xsl:when test="$codCatTiers='29'">Autres établissements publics et organismes internationaux</xsl:when>
+ <xsl:when test="$codCatTiers='50'">Personnes morales de droit privé autres qu'organismes sociaux</xsl:when>
+ <xsl:when test="$codCatTiers='60'">Caisses de sécurité sociale régime général</xsl:when>
+ <xsl:when test="$codCatTiers='61'">Caisses de sécurité sociale régime agricole</xsl:when>
+ <xsl:when test="$codCatTiers='62'">Sécurité sociale des travailleurs non salariés et professions non agricoles</xsl:when>
+ <xsl:when test="$codCatTiers='63'">Autres régimes obligatoires de sécurité sociale</xsl:when>
+ <xsl:when test="$codCatTiers='64'">Mutuelles et organismes d'assurance</xsl:when>
+ <xsl:when test="$codCatTiers='65'">Divers autres tiers payants</xsl:when>
+ <xsl:when test="$codCatTiers='70'">CNRACL</xsl:when>
+ <xsl:when test="$codCatTiers='71'">IRCANTEC</xsl:when>
+ <xsl:when test="$codCatTiers='72'">ASSEDIC</xsl:when>
+ <xsl:when test="$codCatTiers='73'">Caisses mutualistes de retraite complémentaires</xsl:when>
+ <xsl:when test="$codCatTiers='74'">Autres organismes sociaux</xsl:when>
+ </xsl:choose>
+ </xsl:attribute>
+ <xsl:attribute name="LibelleNatIdTiersLignePiece" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#added">
+ <xsl:variable name="codNatIdTiers" select="$el/*[local-name()='Tiers']/*[local-name()='InfoTiers']/*[local-name()='NatIdTiers']/@V"/>
+ <xsl:choose>
+ <xsl:when test="$codNatIdTiers='01'">Siret</xsl:when>
+ <xsl:when test="$codNatIdTiers='02'">Siren</xsl:when>
+ <xsl:when test="$codNatIdTiers='03'">Finess</xsl:when>
+ <xsl:when test="$codNatIdTiers='04'">Nir</xsl:when>
+ </xsl:choose>
+ </xsl:attribute>
+ <xsl:attribute name="LibelleNatJurLignePiece" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#added">
+ <xsl:variable name="codNatJur" select="$el/*[local-name()='Tiers']/*[local-name()='InfoTiers']/*[local-name()='NatJur']/@V"/>
+ <xsl:choose>
+ <xsl:when test="$codNatJur='00'">Inconnue</xsl:when>
+ <xsl:when test="$codNatJur='01'">Particuliers</xsl:when>
+ <xsl:when test="$codNatJur='02'">Artisan / Commerçant / Agriculteur</xsl:when>
+ <xsl:when test="$codNatJur='03'">Société</xsl:when>
+ <xsl:when test="$codNatJur='04'">CAM ou caisse appliquant les mêmes règles</xsl:when>
+ <xsl:when test="$codNatJur='05'">Caisse complémentaire</xsl:when>
+ <xsl:when test="$codNatJur='06'">Association</xsl:when>
+ <xsl:when test="$codNatJur='07'">Etat ou organisme d'Etat</xsl:when>
+ <xsl:when test="$codNatJur='08'">Etablissement public national</xsl:when>
+ <xsl:when test="$codNatJur='09'">Collectivité territoriale / EPL / EPS</xsl:when>
+ <xsl:when test="$codNatJur='10'">Etat étranger / Ambassade</xsl:when>
+ <xsl:when test="$codNatJur='11'">CAF</xsl:when>
+ </xsl:choose>
+ </xsl:attribute>
+ <xsl:attribute name="LibelleNatPceOrigLignePiece" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#added">
+ <xsl:variable name="codNatPce" select="$el/*[local-name()='BlocLignePiece']/*[local-name()='RattachPiece']/*[local-name()='NatPceOrig']/@V"/>
+ <xsl:choose>
+ <xsl:when test="$codNatPce='01'">Mandat</xsl:when>
+ <xsl:when test="$codNatPce='02'">Titre</xsl:when>
+ <xsl:when test="$codNatPce='03'">Paiement</xsl:when>
+ <xsl:when test="$codNatPce='04'">Liste non valeur</xsl:when>
+ </xsl:choose>
+ </xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+ <xsl:choose>
+ <xsl:when test="contains('|CptBancaire',concat('|',local-name($el)))"><xsl:attribute name="rib" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#added"><xsl:value-of select="$el/*[local-name()='CodeEtab']/@V"/><xsl:value-of select="$el/*[local-name()='CodeGuic']/@V"/><xsl:value-of select="$el/*[local-name()='IdCpte']/@V"/><xsl:value-of select="$el/*[local-name()='CleRib']/@V"/></xsl:attribute></xsl:when>
+ </xsl:choose>
+ <xsl:if test="contains('|Bordereau',concat('|',local-name($el)))">
+ <xsl:attribute name="primary-key" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#added"><xsl:value-of select="*[local-name()='BlocBordereau']/*[local-name()='Exer']/@V"/>-<xsl:value-of select="*[local-name()='BlocBordereau']/*[local-name()='TypBord']/@V"/>-<xsl:value-of select="*[local-name()='BlocBordereau']/*[local-name()='IdBord']/@V"></xsl:value-of></xsl:attribute>
+ </xsl:if>
+ <xsl:for-each select="$el/*">
+ <xsl:call-template name="writeElement">
+ <xsl:with-param name="el" select="."/>
+ <xsl:with-param name="signatureGlobale" select="$signatureGlobale"/>
+ </xsl:call-template>
+ </xsl:for-each>
+ <xsl:value-of select="$el/text()" disable-output-escaping="yes"/>
+ <xsl:if test="local-name($el)='Bordereau'">
+ <xsl:if test="$signatureGlobale">
+ <xsl:copy-of select="/n:PES_Aller/ds:Signature"/>
+ </xsl:if>
+ </xsl:if>
+ </xsl:element>
+ <xsl:if test="contains('|IdPost',concat('|',local-name($el)))">
+ <xsl:element name="LibellePoste" namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/aller">
+ <xsl:variable name="code" select="$el/@V"/>
+ <xsl:attribute name="V"><xsl:value-of select="$postes/poste[starts-with(@code,$code)][1]/text()"/></xsl:attribute>
+ </xsl:element>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+</xsl:transform>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE xsl:stylesheet [
+<!ENTITY nbsp " ">
+]>
+
+<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:java="xalan://xml.apache.org/xalan/java" xmlns:fn="http://projets.admisource.gouv.fr/xemelios/namespaces#functions" xmlns:added="http://projets.admisource.gouv.fr/xemelios/namespaces#added" xmlns:ano="http://projets.admisource.gouv.fr/xemelios/namspaces#anomally" xmlns:n="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/aller" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" exclude-result-prefixes="fn java" version="2.0">
+ <!-- xmlns:xem="http://admisource.gouv.fr/projects/xemelios/ext" -->
+ <!--xsl:param name="encoding" select="'UTF-8'"/-->
+
+ <xsl:output method="xml" indent="yes"/>
+
+ <xsl:output encoding="ISO-8859-1"/>
+ <xsl:output version="1.0"/>
+
+ <!--xsl:output encoding="ISO-8859-1"/>
+ <xsl:output version="1.0"/-->
+ <xsl:param name="language" select="'fr'"/>
+
+ <xsl:variable name="postes">
+ <poste code="0800610">TRESORERIE ABBEVILLE ET BANLIEUE</poste>
+ <poste code="0800580">TRESORERIE ABBEVILLE MUNICIPALE</poste>
+ <poste code="1220000">TRESORERIE AMBASSADE DE FRANCE EN COTE-D'IVOIRE</poste>
+ <poste code="0740010">TRESORERIE ABONDANCE</poste>
+ <poste code="0800010">TRESORERIE ACHEUX-EN-AMIENOIS</poste>
+ <poste code="0340330">TRESORERIE AGDE</poste>
+ <poste code="0470000">TRESORERIE GENERALE DE LOT-ET-GARONNE</poste>
+ <poste code="0470010">TRESORERIE AGEN</poste>
+ <poste code="0470350">TRESORERIE OPAC DE LOT-ET-GARONNE</poste>
+ <poste code="0470900">PAIERIE DEPARTEMENTALE DE LOT-ET-GARONNE</poste>
+ <poste code="0470020">TRESORERIE AGEN ETABLISSEMENTS HOSPITALIERS</poste>
+ <poste code="0470120">TRESORERIE DE PUYMIROL-LAPLUME</poste>
+ <poste code="0470140">TRESORERIE D' AGEN MUNICIPALE</poste>
+ <poste code="0500200">TRESORERIE SAINT-MALO-DE-LA-LANDE</poste>
+ <poste code="0230010">TRESORERIE AHUN</poste>
+ <poste code="0160010">TRESORERIE AIGRE</poste>
+ <poste code="0170010">TRESORERIE AIGREFEUILLE-D'AUNIS</poste>
+ <poste code="0440010">TRESORERIE AIGREFEUILLE-SUR-MAINE</poste>
+ <poste code="0730010">TRESORERIE AIGUEBELLE</poste>
+ <poste code="0630590">TRESORERIE AIGUEPERSE</poste>
+ <poste code="0300010">TRESORERIE AIGUES-MORTES</poste>
+ <poste code="0470030">TRESORERIE AIGUILLON</poste>
+ <poste code="0890010">TRESORERIE AILLANT-SUR-THOLON-GUERCHY</poste>
+ <poste code="0800020">TRESORERIE AILLY-SUR-NOYE</poste>
+ <poste code="0730020">TRESORERIE AIME</poste>
+ <poste code="0400010">TRESORERIE AIRE-SUR-L'ADOUR</poste>
+ <poste code="0622250">TRESORERIE D' AIRE-SUR-LA-LYS</poste>
+ <poste code="0790020">TRESORERIE AIRVAULT-VALLEE DU THOUET</poste>
+ <poste code="0100010">TRESORERIE D' AIX-EN-OTHE</poste>
+ <poste code="0131000">RECETTE DES FINANCES AIX-EN-PROVENCE</poste>
+ <poste code="0131010">TRESORERIE AIX-EN-PROVENCE SUD</poste>
+ <poste code="0131020">TRESORERIE D' AIX-EN-PROVENCE NORD</poste>
+ <poste code="0131030">TRESORERIE D' AIX-EN-PROVENCE MUNICIPALE</poste>
+ <poste code="0131040">TRESORERIE AIX-EN-PROVENCE ETS HOSPITALIERS</poste>
+ <poste code="0730030">TRESORERIE AIX-LES-BAINS</poste>
+ <poste code="0870010">TRESORERIE AIXE-SUR-VIENNE</poste>
+ <poste code="02A0000">TRESORERIE GENERALE DE LA CORSE-DU-SUD</poste>
+ <poste code="02A0007">CENTRE REGIONAL DES PENSIONS DE LA CORSE-DU-SUD</poste>
+ <poste code="02A0009">DEPARTEMENT INFORMATIQUE DE LA CORSE-DU-SUD</poste>
+ <poste code="02A0010">TRESORERIE AJACCIO</poste>
+ <poste code="02A0020">TRESORERIE AJACCIO MUNICIPALE</poste>
+ <poste code="02A0030">TRESORERIE AJACCIO RURAL</poste>
+ <poste code="02A0800">PAIERIE REGIONALE DE CORSE</poste>
+ <poste code="02A0900">PAIERIE DEPARTEMENTALE DE LA CORSE-DU-SUD</poste>
+ <poste code="0810010">TRESORERIE ALBAN</poste>
+ <poste code="0730040">TRESORERIE ALBENS</poste>
+ <poste code="0800490">TRESORERIE ALBERT</poste>
+ <poste code="0730050">TRESORERIE D' ALBERTVILLE</poste>
+ <poste code="0570010">TRESORERIE ALBESTROFF</poste>
+ <poste code="0810020">TRESORERIE ALBI TRESOR</poste>
+ <poste code="0810000">TRESORERIE GENERALE DU TARN</poste>
+ <poste code="0810030">TRESORERIE ALBI-VILLE ET PERIPHERIE</poste>
+ <poste code="0810900">PAIERIE DEPARTEMENTALE DU TARN</poste>
+ <poste code="0690360">TRESORERIE ALBIGNY-SUR-SAONE ETS HOSP. DPTX</poste>
+ <poste code="0610000">TRESORERIE GENERALE DE L' ORNE</poste>
+ <poste code="0610020">TRESORERIE D' ALENCON VILLE ET CAMPAGNE</poste>
+ <poste code="0610040">TRESORERIE ALENCON HOPITAUX</poste>
+ <poste code="0610900">PAIERIE DEPARTEMENTALE DE L' ORNE</poste>
+ <poste code="02B0120">TRESORERIE MOITA</poste>
+ <poste code="0300430">TRESORERIE ALES MUNICIPALE</poste>
+ <poste code="0940010">TRESORERIE MALE ALFORTVILLE/MAISONS-ALFORT</poste>
+ <poste code="1110000">TRESORERIE AMBASSADE DE FRANCE A ALGER</poste>
+ <poste code="0570020">TRESORERIE ALGRANGE</poste>
+ <poste code="0560010">TRESORERIE ALLAIRE</poste>
+ <poste code="0150010">TRESORERIE ALLANCHE</poste>
+ <poste code="0190220">TRESORERIE ALLASSAC</poste>
+ <poste code="0130010">TRESORERIE ALLAUCH</poste>
+ <poste code="0380020">TRESORERIE ALLEVARD</poste>
+ <poste code="0490310">TRESORERIE ALLONNES</poste>
+ <poste code="0681010">TRESORERIE ALTKIRCH</poste>
+ <poste code="0110030">TRESORERIE ALZONNE</poste>
+ <poste code="0700010">TRESORERIE AMANCE-FAVERNEY</poste>
+ <poste code="0250010">TRESORERIE D' AMANCEY</poste>
+ <poste code="0330010">TRESORERIE AMBARES-ET-LAGRAVE</poste>
+ <poste code="0870020">TRESORERIE AMBAZAC</poste>
+ <poste code="0010010">TRESORERIE D' AMBERIEU-EN-BUGEY</poste>
+ <poste code="0630480">TRESORERIE D' AMBERT</poste>
+ <poste code="0370010">TRESORERIE AMBOISE-POCE</poste>
+ <poste code="0530010">TRESORERIE AMBRIERES-LES-VALLEES</poste>
+ <poste code="0800040">TRESORERIE AMIENS CENTRE</poste>
+ <poste code="0800000">TRESORERIE GENERALE DE LA SOMME</poste>
+ <poste code="0800007">CENTRE REGIONAL DES PENSIONS DE LA SOMME</poste>
+ <poste code="0800008">CENTRE DE FORMATION DEPARTEMENTAL DE LA SOMME</poste>
+ <poste code="0800009">DEPARTEMENT INFORMATIQUE DE LA SOMME</poste>
+ <poste code="0800060">TRESORERIE AMIENS BANLIEUE ET AMENDES</poste>
+ <poste code="0800070">TRESORERIE AMIENS MUNICIPALE</poste>
+ <poste code="0800900">PAIERIE DEPARTEMENTALE DE LA SOMME</poste>
+ <poste code="0800080">TRESORERIE AMIENS ETS HOSP.</poste>
+ <poste code="0800800">PAIERIE REGIONALE DE PICARDIE</poste>
+ <poste code="0800001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE LA SOMME</poste>
+ <poste code="0400200">TRESORERIE AMOU-POMAREZ</poste>
+ <poste code="0690460">TRESORERIE AMPLEPUIS</poste>
+ <poste code="0440020">TRESORERIE ANCENIS</poste>
+ <poste code="0550010">TRESORERIE D' ANCERVILLE</poste>
+ <poste code="0890020">TRESORERIE ANCY-LE-FRANC</poste>
+ <poste code="0520010">TRESORERIE ANDELOT-BLANCHEVILLE</poste>
+ <poste code="0300440">TRESORERIE ANDUZE</poste>
+ <poste code="0280320">TRESORERIE ANET</poste>
+ <poste code="0490000">TRESORERIE GENERALE DE MAINE-ET-LOIRE</poste>
+ <poste code="0490020">TRESORERIE ANGERS OUEST</poste>
+ <poste code="0490030">TRESORERIE ANGERS MUNICIPALE</poste>
+ <poste code="0490040">TRESORERIE ANGERS CHU</poste>
+ <poste code="0490001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DU MAINE ET LOIRE</poste>
+ <poste code="0490010">TRESORERIE ANGERS EST ET AMENDES</poste>
+ <poste code="0490060">TRESORERIE D' AVRILLE</poste>
+ <poste code="0490900">PAIERIE DEPARTEMENTALE DE MAINE-ET-LOIRE</poste>
+ <poste code="0850280">TRESORERIE ANGLES</poste>
+ <poste code="0640470">TRESORERIE ANGLET-ADOUR-OCEAN</poste>
+ <poste code="0510300">TRESORERIE ANGLURE</poste>
+ <poste code="0160000">TRESORERIE GENERALE DE LA CHARENTE</poste>
+ <poste code="0160001">TRESORERIE GENERALE SERVICE DES AFFAIRES COMMUNALES</poste>
+ <poste code="0160002">TRESORERIE GENERALE CONTROLE FINANCIER LOCAL</poste>
+ <poste code="0160003">TRESORERIE GENERALE ACTION ECONOMIQUE</poste>
+ <poste code="0160020">TRESORERIE ANGOULEME</poste>
+ <poste code="0160030">TRESORERIE ANGOULEME MUNICIPALE</poste>
+ <poste code="0160150">TRESORERIE ANGOULEME OPHLM</poste>
+ <poste code="0160900">PAIERIE DEPARTEMENTALE DE LA CHARENTE</poste>
+ <poste code="0593010">TRESORERIE ANICHE</poste>
+ <poste code="0020010">TRESORERIE ANIZY-LE-CHATEAU</poste>
+ <poste code="0740030">TRESORERIE ANNECY</poste>
+ <poste code="0740040">TRESORERIE ANNECY MUNICIPALE</poste>
+ <poste code="0740900">PAIERIE DEPARTEMENTALE DE LA HAUTE-SAVOIE</poste>
+ <poste code="0740001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE LA HAUTE SAVOIE</poste>
+ <poste code="0740320">TRESORERIE ANNECY LE VIEUX</poste>
+ <poste code="0740000">TRESORERIE GENERALE DE LA HAUTE-SAVOIE</poste>
+ <poste code="0740050">TRESORERIE ANNEMASSE</poste>
+ <poste code="0590020">TRESORERIE ANNOEULLIN</poste>
+ <poste code="0070020">TRESORERIE ANNONAY</poste>
+ <poste code="0040010">TRESORERIE D' ANNOT</poste>
+ <poste code="1410000">TRESORERIE AMBASSADE DE FRANCE EN REPUBLIQUE DE MADAGASCAR</poste>
+ <poste code="0061010">TRESORERIE ANTIBES</poste>
+ <poste code="0061020">TRESORERIE ANTIBES MUNICIPALE</poste>
+ <poste code="0921010">TRESORERIE D' ANTONY</poste>
+ <poste code="0921000">RECETTE DES FINANCES ANTONY</poste>
+ <poste code="0070040">TRESORERIE ANTRAIGUES</poste>
+ <poste code="0350010">TRESORERIE D' ANTRAIN-SAINT BRICE</poste>
+ <poste code="0595010">TRESORERIE D' ANZIN</poste>
+ <poste code="0840010">TRESORERIE APT</poste>
+ <poste code="0300030">TRESORERIE ARAMON</poste>
+ <poste code="0390020">TRESORERIE ARBOIS</poste>
+ <poste code="0520020">TRESORERIE D' ARC-EN-BARROIS</poste>
+ <poste code="0330020">TRESORERIE D' ARCACHON</poste>
+ <poste code="0100020">TRESORERIE D' ARCIS-SUR-AUBE</poste>
+ <poste code="0360020">TRESORERIE ARDENTES</poste>
+ <poste code="0630010">TRESORERIE ARDES-SUR-COUZE</poste>
+ <poste code="0622260">TRESORERIE ARDRES-EPERLECQUES</poste>
+ <poste code="0650020">TRESORERIE ARGELES-GAZOST</poste>
+ <poste code="0660010">TRESORERIE ARGELES-SUR-MER</poste>
+ <poste code="0610290">TRESORERIE D' ARGENTAN</poste>
+ <poste code="0190010">TRESORERIE ARGENTAT</poste>
+ <poste code="0950010">TRESORERIE ARGENTEUIL HLM</poste>
+ <poste code="0950020">TRESORERIE ARGENTEUIL</poste>
+ <poste code="0950030">TRESORERIE ARGENTEUIL MUNICIPALE</poste>
+ <poste code="0950040">TRESORERIE ARGENTEUIL CENTRE HOSPITALIER</poste>
+ <poste code="0790030">TRESORERIE D' ARGENTON LES VALLÉES</poste>
+ <poste code="0360030">TRESORERIE D' ARGENTON-SUR-CREUSE</poste>
+ <poste code="0350020">TRESORERIE ARGENTRE-DU-PLESSIS</poste>
+ <poste code="0390040">TRESORERIE D' ARINTHOD</poste>
+ <poste code="0630490">TRESORERIE D' ARLANC</poste>
+ <poste code="0132000">RECETTE DES FINANCES ARLES</poste>
+ <poste code="0132010">TRESORERIE ARLES MUNICIPALE ET CAMARGUE</poste>
+ <poste code="0132030">TRESORERIE ARLES CENTRE HOSPITALIER</poste>
+ <poste code="0132130">TRESORERIE PAYS D'ARLES</poste>
+ <poste code="0660020">TRESORERIE ARLES-SUR-TECH</poste>
+ <poste code="0593020">TRESORERIE ARLEUX</poste>
+ <poste code="0590030">TRESORERIE D' ARMENTIERES</poste>
+ <poste code="0590040">TRESORERIE ARMENTIERES MUNICIPALE</poste>
+ <poste code="0210490">TRESORERIE ARNAY-LE-DUC</poste>
+ <poste code="0911010">TRESORERIE ARPAJON</poste>
+ <poste code="0622270">TRESORERIE D' ARQUES</poste>
+ <poste code="0620490">TRESORERIE ARRAS CENTRE HOSPITALIER</poste>
+ <poste code="0620000">TRESORERIE GENERALE DU PAS-DE-CALAIS</poste>
+ <poste code="0620030">TRESORERIE D' ARRAS</poste>
+ <poste code="0620040">TRESORERIE ARRAS MUNICIPALE</poste>
+ <poste code="0620420">TRESORERIE D' ARRAS BANLIEUE</poste>
+ <poste code="0620900">PAIERIE DEPARTEMENTALE DU PAS-DE-CALAIS</poste>
+ <poste code="0650030">TRESORERIE D' ARREAU-BORDERES-LOURON</poste>
+ <poste code="0570030">TRESORERIE ARS-SUR-MOSELLE</poste>
+ <poste code="0010440">TRESORERIE D' ARTEMARE</poste>
+ <poste code="0450010">TRESORERIE ARTENAY</poste>
+ <poste code="0640040">TRESORERIE ARUDY</poste>
+ <poste code="0640050">TRESORERIE ARZACQ-MORLANNE</poste>
+ <poste code="0080010">TRESORERIE ASFELD</poste>
+ <poste code="0920020">TRESORERIE ASNIERES-SUR-SEINE</poste>
+ <poste code="0920030">TRESORERIE D' ASNIERES-SUR-SEINE MUNICIPALE</poste>
+ <poste code="0310450">TRESORERIE ASPET</poste>
+ <poste code="0610300">TRESORERIE ATHIS-DE-L'ORNE</poste>
+ <poste code="0911020">TRESORERIE ATHIS-MONS</poste>
+ <poste code="0600450">TRESORERIE ATTICHY</poste>
+ <poste code="0080020">TRESORERIE ATTIGNY-TOURTERON</poste>
+ <poste code="0130020">TRESORERIE AUBAGNE</poste>
+ <poste code="0070050">TRESORERIE AUBENAS</poste>
+ <poste code="0931010">TRESORERIE D' AUBERVILLIERS</poste>
+ <poste code="0931020">TRESORERIE AUBERVILLIERS MUNICIPALE</poste>
+ <poste code="0160050">TRESORERIE AUBETERRE-SUR-DRONNE</poste>
+ <poste code="0620050">TRESORERIE AUBIGNY-EN-ARTOIS</poste>
+ <poste code="0180030">TRESORERIE D' AUBIGNY-SUR-NERE</poste>
+ <poste code="0120250">TRESORERIE AUBIN</poste>
+ <poste code="0230190">TRESORERIE D' AUBUSSON - ST SULPICE LES CHAMPS</poste>
+ <poste code="0310420">TRESORERIE AUCAMVILLE</poste>
+ <poste code="0320000">TRESORERIE GENERALE DU GERS</poste>
+ <poste code="0320900">PAIERIE DEPARTEMENTALE DU GERS</poste>
+ <poste code="0320020">TRESORERIE AUCH VILLE</poste>
+ <poste code="0320030">TRESORERIE AUCH BANLIEUE</poste>
+ <poste code="0620590">TRESORERIE AUCHEL</poste>
+ <poste code="0330030">TRESORERIE AUDENGE</poste>
+ <poste code="0250340">TRESORERIE AUDINCOURT</poste>
+ <poste code="0622280">TRESORERIE AUDRUICQ</poste>
+ <poste code="0540390">TRESORERIE D' AUDUN-LE-ROMAN - PIENNES</poste>
+ <poste code="0570040">TRESORERIE AUDUN-LE-TICHE</poste>
+ <poste code="0170020">TRESORERIE AULNAY-DE-SAINTONGE-NERE</poste>
+ <poste code="0930030">TRESORERIE D' AULNAY-SOUS-BOIS</poste>
+ <poste code="0800590">TRESORERIE AULT</poste>
+ <poste code="0760670">TRESORERIE D' AUMALE</poste>
+ <poste code="0140030">TRESORERIE AUNAY-SUR-ODON</poste>
+ <poste code="0280010">TRESORERIE AUNEAU</poste>
+ <poste code="0600020">TRESORERIE AUNEUIL</poste>
+ <poste code="0831020">TRESORERIE AUPS</poste>
+ <poste code="0560250">TRESORERIE AURAY</poste>
+ <poste code="0310460">TRESORERIE AURIGNAC</poste>
+ <poste code="0150030">TRESORERIE AURILLAC BANLIEUE</poste>
+ <poste code="0150000">TRESORERIE GENERALE DU CANTAL</poste>
+ <poste code="0150020">TRESORERIE D' AURILLAC</poste>
+ <poste code="0150900">PAIERIE DEPARTEMENTALE DU CANTAL</poste>
+ <poste code="0310550">TRESORERIE D' AUTERIVE</poste>
+ <poste code="0280020">TRESORERIE AUTHON/PERCHE-LA-BAZOCHE-GOUET</poste>
+ <poste code="0710580">TRESORERIE D' AUTUN</poste>
+ <poste code="0890000">TRESORERIE GENERALE DE L' YONNE</poste>
+ <poste code="0890030">TRESORERIE D' AUXERRE</poste>
+ <poste code="0890040">TRESORERIE AUXERRE ETS HOSP.</poste>
+ <poste code="0890900">PAIERIE DEPARTEMENTALE DE L' YONNE</poste>
+ <poste code="0210040">TRESORERIE AUXONNE</poste>
+ <poste code="0230200">TRESORERIE D' AUZANCES</poste>
+ <poste code="0860010">TRESORERIE D' AVAILLES-LIMOUZINE</poste>
+ <poste code="0890060">TRESORERIE D' AVALLON</poste>
+ <poste code="0620070">TRESORERIE D' AVESNES LE COMTE</poste>
+ <poste code="0593110">TRESORERIE AVESNES-LEZ-AUBERT</poste>
+ <poste code="0595170">TRESORERIE D' AVESNES-SUR-HELPE</poste>
+ <poste code="0840000">TRESORERIE GENERALE DE VAUCLUSE</poste>
+ <poste code="0840030">TRESORERIE D' AVIGNON</poste>
+ <poste code="0840050">TRESORERIE AVIGNON MUNICIPALE</poste>
+ <poste code="0840060">TRESORERIE AVIGNON CENTRE HOSPITALIER</poste>
+ <poste code="0840900">PAIERIE DEPARTEMENTALE DE VAUCLUSE</poste>
+ <poste code="0840001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DU VAUCLUSE</poste>
+ <poste code="0620080">TRESORERIE AVION</poste>
+ <poste code="0510310">TRESORERIE D' AVIZE</poste>
+ <poste code="0770330">TRESORERIE AVON</poste>
+ <poste code="0500240">TRESORERIE AVRANCHES</poste>
+ <poste code="0090020">TRESORERIE AX-LES-THERMES</poste>
+ <poste code="0110040">TRESORERIE AXAT</poste>
+ <poste code="0510320">TRESORERIE D' AY</poste>
+ <poste code="0370020">TRESORERIE AZAY-LE-RIDEAU</poste>
+ <poste code="0540300">TRESORERIE DE BACCARAT-BADONVILLER</poste>
+ <poste code="0760530">TRESORERIE BACQUEVILLE-EN-CAUX</poste>
+ <poste code="0650050">TRESORERIE BAGNERES-DE-BIGORRE-CAMPAN</poste>
+ <poste code="0310470">TRESORERIE BAGNERES-DE-LUCHON</poste>
+ <poste code="0921020">TRESORERIE BAGNEUX</poste>
+ <poste code="0930040">TRESORERIE BAGNOLET</poste>
+ <poste code="0300040">TRESORERIE BAGNOLS-SUR-CEZE</poste>
+ <poste code="1010080">TRESORERIE PETIT-BOURG</poste>
+ <poste code="0160070">TRESORERIE BAIGNES-SAINTE-RADEGONDE</poste>
+ <poste code="0594170">TRESORERIE BAILLEUL</poste>
+ <poste code="0350030">TRESORERIE BAIN-DE-BRETAGNE</poste>
+ <poste code="0880010">TRESORERIE BAINS-LES-BAINS</poste>
+ <poste code="0422050">TRESORERIE BALBIGNY</poste>
+ <poste code="0720020">TRESORERIE DE BALLON-MONTBIZOT</poste>
+ <poste code="0310310">TRESORERIE BALMA</poste>
+ <poste code="0310001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE HAUTE GARONNE</poste>
+ <poste code="0310002">ANNEXE PÔLE INTERRÉGIONAL APUREMENT SPL</poste>
+ <poste code="1280000">TRESORERIE AMBASSADE DE FRANCE AU MALI</poste>
+ <poste code="0292020">TRESORERIE BANNALEC</poste>
+ <poste code="0040020">TRESORERIE BANON ET SAINT-ETIENNE</poste>
+ <poste code="0620090">TRESORERIE DE BAPAUME</poste>
+ <poste code="0550000">TRESORERIE GENERALE DE LA MEUSE</poste>
+ <poste code="0550030">TRESORERIE DE BAR-LE-DUC VILLE</poste>
+ <poste code="0550210">TRESORERIE DU PAYS DE REVIGNY-OPAC DE LA MEUSE</poste>
+ <poste code="0550900">PAIERIE DEPARTEMENTALE DE LA MEUSE</poste>
+ <poste code="0100040">TRESORERIE DE BAR-SUR-AUBE</poste>
+ <poste code="0100060">TRESORERIE DE BAR-SUR-SEINE</poste>
+ <poste code="0120240">TRESORERIE DE BARAQUEVILLE</poste>
+ <poste code="0132040">TRESORERIE BARBENTANE</poste>
+ <poste code="0160080">TRESORERIE BARBEZIEUX-SAINT-HILAIRE</poste>
+ <poste code="0040030">TRESORERIE DE BARCELONNETTE</poste>
+ <poste code="0760020">TRESORERIE DE BARENTIN</poste>
+ <poste code="0500250">TRESORERIE BARENTON-LE TEILLEUL</poste>
+ <poste code="0300450">TRESORERIE DE BARJAC</poste>
+ <poste code="0831030">TRESORERIE BARJOLS-TAVERNES</poste>
+ <poste code="0500380">TRESORERIE DE BARNEVILLE-PORTBAIL</poste>
+ <poste code="0670010">TRESORERIE BARR</poste>
+ <poste code="0430030">TRESORERIE BAS-EN-BASSET</poste>
+ <poste code="1030010">TRESORERIE BASSE-POINTE</poste>
+ <poste code="1010000">TRESORERIE GENERALE DE LA GUADELOUPE</poste>
+ <poste code="1010020">TRESORERIE DE BASSE-TERRE</poste>
+ <poste code="1010800">PAIERIE REGIONALE DE LA GUADELOUPE</poste>
+ <poste code="1010900">PAIERIE DEPARTEMENTALE DE LA GUADELOUPE</poste>
+ <poste code="1010130">TRESORERIE DE BASSE-TERRE MUNCIPALE ET HOSPIT.</poste>
+ <poste code="02B0000">TRESORERIE GENERALE DE LA HAUTE-CORSE</poste>
+ <poste code="02B0010">TRESORERIE BASTIA</poste>
+ <poste code="02B0020">TRESORERIE DE BASTIA MUNICIPALE</poste>
+ <poste code="02B0900">PAIERIE DEPARTEMENTALE DE LA HAUTE-CORSE</poste>
+ <poste code="0560200">TRESORERIE BAUD</poste>
+ <poste code="0490320">TRESORERIE BAUGE</poste>
+ <poste code="0180040">TRESORERIE BAUGY-SAVIGNY-EN-SEPTAINE</poste>
+ <poste code="0250020">TRESORERIE BAUME-LES-DAMES</poste>
+ <poste code="0595180">TRESORERIE BAVAY</poste>
+ <poste code="0140050">TRESORERIE BAYEUX-MONCEAUX-EN-BESSIN</poste>
+ <poste code="0640350">TRESORERIE BAYONNE</poste>
+ <poste code="0640360">TRESORERIE BAYONNE MUNICIPALE</poste>
+ <poste code="0640480">TRESORERIE BAYONNE CENTRE HOSPITALIER</poste>
+ <poste code="0330050">TRESORERIE BAZAS</poste>
+ <poste code="0310030">TRESORERIE MONTGISCARD-BAZIEGE</poste>
+ <poste code="0300050">TRESORERIE BEAUCAIRE</poste>
+ <poste code="0950240">TRESORERIE DE BEAUCHAMP-TAVERNY</poste>
+ <poste code="0390050">TRESORERIE DE BEAUFORT</poste>
+ <poste code="0490070">TRESORERIE BEAUFORT-EN-VALLEE</poste>
+ <poste code="0730060">TRESORERIE BEAUFORT</poste>
+ <poste code="0450030">TRESORERIE BEAUGENCY</poste>
+ <poste code="0690470">TRESORERIE BEAUJEU</poste>
+ <poste code="0190230">TRESORERIE BEAULIEU-SUR-DORDOGNE</poste>
+ <poste code="0820020">TRESORERIE BEAUMONT-LAVIT-DE-LOMAGNE</poste>
+ <poste code="0500390">TRESORERIE BEAUMONT-HAGUE</poste>
+ <poste code="0270180">TRESORERIE BEAUMONT-LE-ROGER</poste>
+ <poste code="0950050">TRESORERIE BEAUMONT-SUR-OISE</poste>
+ <poste code="0720040">TRESORERIE BEAUMONT-SUR-SARTHE</poste>
+ <poste code="0210510">TRESORERIE BEAUNE</poste>
+ <poste code="0450310">TRESORERIE DE BEAUNE-LA-ROLANDE</poste>
+ <poste code="0490420">TRESORERIE BEAUPREAU</poste>
+ <poste code="0381010">TRESORERIE BEAUREPAIRE</poste>
+ <poste code="0020320">TRESORERIE BEAURIEUX-ROUCY-CORBENY</poste>
+ <poste code="0550050">TRESORERIE DE BEAUSITE</poste>
+ <poste code="0060010">TRESORERIE BEAUSOLEIL</poste>
+ <poste code="0600000">TRESORERIE GENERALE DE L' OISE</poste>
+ <poste code="0600040">TRESORERIE DE BEAUVAIS VILLE</poste>
+ <poste code="0600050">TRESORERIE DE BEAUVAIS BANLIEUE</poste>
+ <poste code="0600070">TRESORERIE DE BEAUVAIS MUNICIPALE</poste>
+ <poste code="0600900">PAIERIE DEPARTEMENTALE DE L' OISE</poste>
+ <poste code="0600580">TRESORERIE DE BEAUVAIS AMENDES</poste>
+ <poste code="0600001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE L' OISE</poste>
+ <poste code="0850290">TRESORERIE BEAUVOIR-SUR-MER</poste>
+ <poste code="0790050">TRESORERIE BEAUVOIR-SUR-NIORT</poste>
+ <poste code="0350050">TRESORERIE BECHEREL</poste>
+ <poste code="0340340">TRESORERIE DE BEDARIEUX</poste>
+ <poste code="0640060">TRESORERIE BEDOUS</poste>
+ <poste code="0220320">TRESORERIE BEGARD</poste>
+ <poste code="0330060">TRESORERIE BEGLES</poste>
+ <poste code="0110060">TRESORERIE BELCAIRE-RODOME</poste>
+ <poste code="0900000">TRESORERIE GENERALE DU TERRITOIRE-DE-BELFORT</poste>
+ <poste code="0900040">TRESORERIE BELFORT VILLE</poste>
+ <poste code="0900110">TRESORERIE BELFORT TERRITOIRE HABITAT</poste>
+ <poste code="0900120">TRESORERIE DE BELFORT ETS. HOSPITALIERS</poste>
+ <poste code="0900900">PAIERIE DEPARTEMENTALE DU TERRITOIRE-DE-BELFORT</poste>
+ <poste code="0900020">TRESORERIE DE BELFORT</poste>
+ <poste code="0330070">TRESORERIE DE BELIN-BELIET</poste>
+ <poste code="0870030">TRESORERIE DE BELLAC</poste>
+ <poste code="0230210">TRESORERIE DE BELLEGARDE-EN-MARCHE</poste>
+ <poste code="0010020">TRESORERIE BELLEGARDE-SUR-VALSERINE</poste>
+ <poste code="0610070">TRESORERIE BELLEME</poste>
+ <poste code="0760540">TRESORERIE BELLENCOMBRE</poste>
+ <poste code="0030140">TRESORERIE BELLERIVE-SUR-ALLIER</poste>
+ <poste code="0020470">TRESORERIE DE BELLEU-SOISSONS BANLIEUE</poste>
+ <poste code="0690480">TRESORERIE BELLEVILLE</poste>
+ <poste code="0010030">TRESORERIE BELLEY</poste>
+ <poste code="0422010">TRESORERIE BELMONT-DE-LA-LOIRE</poste>
+ <poste code="0120260">TRESORERIE DE RANCE ET ROUGIERS</poste>
+ <poste code="0110070">TRESORERIE BELPECH</poste>
+ <poste code="0240020">TRESORERIE BELVES</poste>
+ <poste code="0110080">TRESORERIE BELVEZE-DU-RAZES</poste>
+ <poste code="0230020">TRESORERIE DE BENEVENT L'ABBAYE-LE GRAND BOURG</poste>
+ <poste code="0670030">TRESORERIE BENFELD</poste>
+ <poste code="0622170">TRESORERIE DE BERCK</poste>
+ <poste code="0240470">TRESORERIE BERGERAC MUNICIPALE ET BANLIEUE</poste>
+ <poste code="0240590">TRESORERIE DE BERGERAC</poste>
+ <poste code="0594010">TRESORERIE BERGUES</poste>
+ <poste code="0595190">TRESORERIE BERLAIMONT</poste>
+ <poste code="1830000">TRESORERIE AMBASSADE DE FRANCE EN ALLEMAGNE</poste>
+ <poste code="0800670">TRESORERIE BERNAVILLE</poste>
+ <poste code="0270190">TRESORERIE DE BERNAY</poste>
+ <poste code="0131050">TRESORERIE BERRE-L'ETANG</poste>
+ <poste code="0250000">TRESORERIE GENERALE DU DOUBS</poste>
+ <poste code="0250007">CENTRE REGIONAL DES PENSIONS DU DOUBS</poste>
+ <poste code="0250008">CENTRE DE FORMATION DEPARTEMENTAL DU DOUBS</poste>
+ <poste code="0250009">DEPARTEMENT INFORMATIQUE DU DOUBS</poste>
+ <poste code="0250030">TRESORERIE BESANCON</poste>
+ <poste code="0250050">TRESORERIE DU GRAND BESANCON</poste>
+ <poste code="0250060">TRESORERIE BESANCON CHRU</poste>
+ <poste code="0250130">TRESORERIE MORRE-ROULANS</poste>
+ <poste code="0250280">TRESORERIE BESANCON ETS HOSP. DPTAUX</poste>
+ <poste code="0250800">PAIERIE REGIONALE DE FRANCHE-COMTE</poste>
+ <poste code="0250900">PAIERIE DEPARTEMENTALE DOUBS</poste>
+ <poste code="0250001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DU DOUBS</poste>
+ <poste code="0250006">PÔLE NATIONAL DE SOUTIEN AU RESEAU DE BESANCON - RJC</poste>
+ <poste code="0250490">TRESORERIE DE L' OPDHLM DU DOUBS-HABITAT 25</poste>
+ <poste code="0630020">TRESORERIE BESSE-ET-SAINT-ANASTAISE</poste>
+ <poste code="0830020">TRESORERIE BESSE-SUR-ISSOLE</poste>
+ <poste code="0300460">TRESORERIE BESSEGES</poste>
+ <poste code="0870040">TRESORERIE DE BESSINES-SUR-GARTEMPE</poste>
+ <poste code="0620600">TRESORERIE BETHUNE</poste>
+ <poste code="0620610">TRESORERIE BETHUNE MUNICIPALE</poste>
+ <poste code="0620620">TRESORERIE BEUVRY</poste>
+ <poste code="0270200">TRESORERIE BEUZEVILLE</poste>
+ <poste code="0190240">TRESORERIE BEYNAT</poste>
+ <poste code="0340350">TRESORERIE BEZIERS</poste>
+ <poste code="0340360">TRESORERIE BEZIERS MUNICIPALE</poste>
+ <poste code="0340370">TRESORERIE DE BEZIERS ETS HOSP</poste>
+ <poste code="0950300">TRESORERIE BEZONS</poste>
+ <poste code="0640370">TRESORERIE BIARRITZ</poste>
+ <poste code="0911030">TRESORERIE BIEVRES</poste>
+ <poste code="0760040">TRESORERIE BIHOREL</poste>
+ <poste code="0630030">TRESORERIE BILLOM-SAINT-DIER-D'AUVERGNE</poste>
+ <poste code="0671010">TRESORERIE BISCHWILLER</poste>
+ <poste code="0571010">TRESORERIE BITCHE</poste>
+ <poste code="0310430">TRESORERIE BLAGNAC</poste>
+ <poste code="0440350">TRESORERIE BLAIN</poste>
+ <poste code="0760030">TRESORERIE BLAINVILLE-CREVON</poste>
+ <poste code="0540330">TRESORERIE DE BAYON-BLAINVILLE-SUR-L'EAU</poste>
+ <poste code="0540340">TRESORERIE DE BLAMONT - CIREY-SUR-VEZOUZE</poste>
+ <poste code="0760550">TRESORERIE DE BLANGY-SUR-BRESLE</poste>
+ <poste code="0330080">TRESORERIE BLANQUEFORT</poste>
+ <poste code="0160090">TRESORERIE BLANZAC-PORCHERESSE</poste>
+ <poste code="0330700">TRESORERIE BLAYE</poste>
+ <poste code="0890070">TRESORERIE BLENEAU-SAINT-FARGEAU</poste>
+ <poste code="0370030">TRESORERIE BLERE</poste>
+ <poste code="0390060">TRESORERIE BLETTERANS</poste>
+ <poste code="0210520">TRESORERIE BLIGNY-SUR-OUCHE</poste>
+ <poste code="0680010">TRESORERIE BLODELSHEIM</poste>
+ <poste code="0410000">TRESORERIE GENERALE DE LOIR-ET-CHER</poste>
+ <poste code="0410030">TRESORERIE BLOIS MUNICIPALE</poste>
+ <poste code="0410360">TRESORERIE OPAC.DE.LOIR.ET.CHER</poste>
+ <poste code="0410900">PAIERIE DEPARTEMENTALE DE LOIR-ET-CHER</poste>
+ <poste code="0410010">TRESORERIE BLOIS VILLE</poste>
+ <poste code="0930000">TRESORERIE GENERALE DE LA SEINE-SAINT-DENIS</poste>
+ <poste code="0930009">DEPARTEMENT INFORMATIQUE DE LA SEINE-SAINT-DENIS</poste>
+ <poste code="0930320">TRESORERIE DE BOBIGNY MUNICIPALE</poste>
+ <poste code="0930900">PAIERIE DEPARTEMENTALE DE LA SEINE-SAINT-DENIS</poste>
+ <poste code="0930001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE LA SEINE SAINT DENIS</poste>
+ <poste code="0740080">TRESORERIE BOEGE</poste>
+ <poste code="0422180">TRESORERIE DE BOEN SUR LIGNON</poste>
+ <poste code="0020520">TRESORERIE BOHAIN-EN-VERMANDOIS</poste>
+ <poste code="0920050">TRESORERIE DE BOIS-COLOMBES</poste>
+ <poste code="0940020">TRESORERIE DE BOISSY-SAINT-LEGER</poste>
+ <poste code="0762020">TRESORERIE BOLBEC</poste>
+ <poste code="0840200">TRESORERIE BOLLENE-MONDRAGON</poste>
+ <poste code="0930060">TRESORERIE DE BONDY</poste>
+ <poste code="0930400">TRESORERIE DE BONDY MUNICIPALE</poste>
+ <poste code="02A0040">TRESORERIE BONIFACIO</poste>
+ <poste code="0230030">TRESORERIE BONNAT-LOURDOUEIX-SAINT-PIERRE</poste>
+ <poste code="0860390">TRESORERIE VOUNEUIL-SUR-VIENNE</poste>
+ <poste code="0280080">TRESORERIE BONNEVAL</poste>
+ <poste code="0740090">TRESORERIE BONNEVILLE</poste>
+ <poste code="0781010">TRESORERIE BONNIERES-SUR-SEINE</poste>
+ <poste code="0330000">TRESORERIE GENERALE DE LA GIRONDE</poste>
+ <poste code="0330007">CENTRE REGIONAL DES PENSIONS DE LA GIRONDE</poste>
+ <poste code="0330008">CENTRE DE FORMATION DEPARTEMENTAL DE LA GIRONDE</poste>
+ <poste code="0330009">DEPARTEMENT INFORMATIQUE DE LA GIRONDE</poste>
+ <poste code="0330170">RECETTE DES FINANCES BORDEAUX MUNICIPALE</poste>
+ <poste code="0330181">TRESORERIE DE BORDEAUX CHU ANNEXE CH PERRENS</poste>
+ <poste code="0330800">PAIERIE REGIONALE D'AQUITAINE</poste>
+ <poste code="0330900">PAIERIE DEPARTEMENTALE DE LA GIRONDE</poste>
+ <poste code="0330001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE LA GIRONDE</poste>
+ <poste code="0330006">PÔLE NATIONAL DE SOUTIEN AU RESEAU DE BORDEAUX</poste>
+ <poste code="0330120">TRESORERIE BORDEAUX AMENDES</poste>
+ <poste code="0330140">TRESORERIE DE BORDEAUX RIVE GAUCHE</poste>
+ <poste code="0330160">TRESORERIE BORDEAUX EST</poste>
+ <poste code="0330171">RECETTE DES FINANCES SERVICE DE LA COMMUNAUTE URBAINE</poste>
+ <poste code="02B0040">TRESORERIE BORGO-CAMPILE</poste>
+ <poste code="0190020">TRESORERIE BORT-LES-ORGUES</poste>
+ <poste code="0440030">TRESORERIE DE BOUAYE</poste>
+ <poste code="0595020">TRESORERIE BOUCHAIN</poste>
+ <poste code="0100070">TRESORERIE DE BOUILLY</poste>
+ <poste code="0571020">TRESORERIE BOULAY</poste>
+ <poste code="0920060">TRESORERIE BOULOGNE-BILLANCOURT</poste>
+ <poste code="0920070">TRESORERIE BOULOGNE-BILLANCOURT MUNICIPALE</poste>
+ <poste code="0310480">TRESORERIE BOULOGNE-SUR-GESSE-BLAJAN</poste>
+ <poste code="0622000">RECETTE DES FINANCES BOULOGNE-SUR-MER</poste>
+ <poste code="0622020">TRESORERIE DE BOULOGNE-SUR-MER</poste>
+ <poste code="0622030">TRESORERIE BOULOGNE-SUR-MER MUNICIPALE</poste>
+ <poste code="0622040">TRESORERIE BOULOGNE-SUR-MER CTRE HOSP</poste>
+ <poste code="0720070">TRESORERIE BOULOIRE-PARIGNE</poste>
+ <poste code="0030010">TRESORERIE DE BOURBON-L'ARCHAMBAULT</poste>
+ <poste code="0710020">TRESORERIE BOURBON-LANCY</poste>
+ <poste code="0520300">TRESORERIE BOURBONNE-LES-BAINS</poste>
+ <poste code="0594030">TRESORERIE BOURBOURG</poste>
+ <poste code="0270370">TRESORERIE DE ROUTOT-BOURG-ACHARD</poste>
+ <poste code="0420010">TRESORERIE DE BOURG-ARGENTAL</poste>
+ <poste code="0010000">TRESORERIE GENERALE DE L' AIN</poste>
+ <poste code="0010050">TRESORERIE DE BOURG-EN-BRESSE</poste>
+ <poste code="0010060">TRESORERIE BOURG-EN-BRESSE MUNICIPALE</poste>
+ <poste code="0010900">PAIERIE DEPARTEMENTALE DE L' AIN</poste>
+ <poste code="0010001">CELLULE CONTRÔLE REDEVANCE AUDIOVISUELLE DE L' AIN</poste>
+ <poste code="0630040">TRESORERIE DE BOURG-LASTIC-HERMENT</poste>
+ <poste code="0660050">TRESORERIE BOURG-MADAME</poste>
+ <poste code="0070080">TRESORERIE BOURG-SAINT-ANDEOL</poste>
+ <poste code="0730070">TRESORERIE DE BOURG-SAINT-MAURICE</poste>
+ <poste code="0330710">TRESORERIE BOURG SUR GIRONDE</poste>
+ <poste code="0230040">TRESORERIE DE BOURGANEUF - PONTARION</poste>
+ <poste code="0180050">TRESORERIE BOURGES</poste>
+ <poste code="0180900">PAIERIE DEPARTEMENTALE DU CHER</poste>
+ <poste code="0180060">TRESORERIE BOURGES MUNICIPALE</poste>
+ <poste code="0180070">TRESORERIE DE BOURGES CH JACQUES COEUR</poste>
+ <poste code="0180410">TRESORERIE BOURGES H.L.M</poste>
+ <poste code="0180420">TRESORERIE DE BOURGES ETS SPECIALISES</poste>
+ <poste code="0180000">TRESORERIE GENERALE DU CHER</poste>
+ <poste code="0381100">TRESORERIE BOURGOIN-JALLIEU COLLECTIVITES</poste>
+ <poste code="0381110">TRESORERIE BOURGOIN-JALLIEU</poste>
+ <poste code="0270210">TRESORERIE DE BOURGTHEROULDE-INFREVILLE</poste>
+ <poste code="0370050">TRESORERIE BOURGUEIL</poste>
+ <poste code="0520040">TRESORERIE BOURMONT</poste>
+ <poste code="0230050">TRESORERIE BOUSSAC</poste>
+ <poste code="0671020">TRESORERIE BOUXWILLER</poste>
+ <poste code="0571030">TRESORERIE BOUZONVILLE</poste>
+ <poste code="0730080">TRESORERIE BOZEL</poste>
+ <poste code="0120020">TRESORERIE BOZOULS</poste>
+ <poste code="0410040">TRESORERIE BRACIEUX</poste>
+ <poste code="0110400">TRESORERIE DE VILLASAVARY</poste>
+ <poste code="0240030">TRESORERIE BRANTOME</poste>
+ <poste code="0810190">TRESORERIE BRASSAC</poste>
+ <poste code="0770300">TRESORERIE BRAY-SUR-SEINE</poste>
+ <poste code="0800510">TRESORERIE BRAY-SUR-SOMME</poste>
+ <poste code="0500260">TRESORERIE BRECEY-SAINT-POIS</poste>
+ <poste code="0500010">TRESORERIE BREHAL-GAVRAY</poste>
+ <poste code="0060020">TRESORERIE DE BREIL-SUR-ROYA</poste>
+ <poste code="0600080">TRESORERIE BRESLES</poste>
+ <poste code="0790070">TRESORERIE BRESSUIRE</poste>
+ <poste code="0290200">TRESORERIE BREST BELLEVUE</poste>
+ <poste code="0290000">TRESORERIE GENERALE DU FINISTERE</poste>
+ <poste code="0290030">TRESORERIE DE BREST QUATRE-MOULINS</poste>
+ <poste code="0290040">TRESORERIE BREST MUNICIPALE ET COM.URB</poste>
+ <poste code="0290041">TRESORERIE ANNEXE OPAC</poste>
+ <poste code="0290050">TRESORERIE BREST CHU</poste>
+ <poste code="0290900">PAIERIE DEPARTEMENTALE D' FINISTERE</poste>
+ <poste code="0290001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DU FINISTERE</poste>
+ <poste code="0460020">TRESORERIE DE BRETENOUX-VAYRAC</poste>
+ <poste code="0600090">TRESORERIE DE BRETEUIL-CREVECOEUR-LE-GRAND</poste>
+ <poste code="0270010">TRESORERIE BRETEUIL-SUR-ITON</poste>
+ <poste code="0140090">TRESORERIE BRETTEVILLE-SUR-LAIZE</poste>
+ <poste code="0280330">TRESORERIE BREZOLLES</poste>
+ <poste code="0050030">TRESORERIE BRIANCON</poste>
+ <poste code="0450320">TRESORERIE DE BRIARE</poste>
+ <poste code="0500400">TRESORERIE BRICQUEBEC</poste>
+ <poste code="0770010">TRESORERIE BRIE-COMTE-ROBERT</poste>
+ <poste code="0100080">TRESORERIE DE BRIENNE-LE-CHATEAU</poste>
+ <poste code="0890080">TRESORERIE DE BRIENON-SUR-ARMANCON</poste>
+ <poste code="0540400">TRESORERIE DE BRIEY</poste>
+ <poste code="0830030">TRESORERIE BRIGNOLES</poste>
+ <poste code="0270220">TRESORERIE BRIONNE</poste>
+ <poste code="0430050">TRESORERIE BRIOUDE</poste>
+ <poste code="0790080">TRESORERIE BRIOUX-SUR-BOUTONNE</poste>
+ <poste code="0490080">TRESORERIE BRISSAC-QUINCE</poste>
+ <poste code="0190260">TRESORERIE BRIVE MUNICIPALE</poste>
+ <poste code="0190330">TRESORERIE BRIVE VILLE</poste>
+ <poste code="0690210">TRESORERIE LE VINATIER CTRE HOSP. SPEC</poste>
+ <poste code="0690430">TRESORERIE DE BRON</poste>
+ <poste code="0220230">TRESORERIE BROONS</poste>
+ <poste code="0280100">TRESORERIE BROU</poste>
+ <poste code="0620630">TRESORERIE BRUAY-LA BUISSIERE</poste>
+ <poste code="0670060">TRESORERIE DE BRUMATH</poste>
+ <poste code="0910050">TRESORERIE BRUNOY</poste>
+ <poste code="0880040">TRESORERIE DE BRUYERES</poste>
+ <poste code="0760060">TRESORERIE BUCHY</poste>
+ <poste code="0190030">TRESORERIE BUGEAT</poste>
+ <poste code="0260310">TRESORERIE DE BUIS-LES-BARONNIES</poste>
+ <poste code="0880050">TRESORERIE BULGNEVILLE</poste>
+ <poste code="0620640">TRESORERIE BULLY-LES-MINES</poste>
+ <poste code="0170260">TRESORERIE BURIE</poste>
+ <poste code="0860290">TRESORERIE POITIERS OPAC</poste>
+ <poste code="0710470">TRESORERIE BUXY-SAINT-GENGOUX-LE-NATIONAL</poste>
+ <poste code="0360060">TRESORERIE BUZANCAIS</poste>
+ <poste code="0080070">TRESORERIE BUZANCY</poste>
+ <poste code="0540300">TRESORERIE DE BACCARAT-BADONVILLER</poste>
+ <poste code="0760530">TRESORERIE BACQUEVILLE-EN-CAUX</poste>
+ <poste code="0650050">TRESORERIE BAGNERES-DE-BIGORRE-CAMPAN</poste>
+ <poste code="0310470">TRESORERIE BAGNERES-DE-LUCHON</poste>
+ <poste code="0921020">TRESORERIE BAGNEUX</poste>
+ <poste code="0930040">TRESORERIE BAGNOLET</poste>
+ <poste code="0300040">TRESORERIE BAGNOLS-SUR-CEZE</poste>
+ <poste code="1010080">TRESORERIE PETIT-BOURG</poste>
+ <poste code="0160070">TRESORERIE BAIGNES-SAINTE-RADEGONDE</poste>
+ <poste code="0594170">TRESORERIE BAILLEUL</poste>
+ <poste code="0350030">TRESORERIE BAIN-DE-BRETAGNE</poste>
+ <poste code="0880010">TRESORERIE BAINS-LES-BAINS</poste>
+ <poste code="0422050">TRESORERIE BALBIGNY</poste>
+ <poste code="0720020">TRESORERIE DE BALLON-MONTBIZOT</poste>
+ <poste code="0310310">TRESORERIE BALMA</poste>
+ <poste code="0310001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE HAUTE GARONNE</poste>
+ <poste code="0310002">ANNEXE PÔLE INTERRÉGIONAL APUREMENT SPL</poste>
+ <poste code="1280000">TRESORERIE AMBASSADE DE FRANCE AU MALI</poste>
+ <poste code="0292020">TRESORERIE BANNALEC</poste>
+ <poste code="0040020">TRESORERIE BANON ET SAINT-ETIENNE</poste>
+ <poste code="0620090">TRESORERIE DE BAPAUME</poste>
+ <poste code="0550000">TRESORERIE GENERALE DE LA MEUSE</poste>
+ <poste code="0550030">TRESORERIE DE BAR-LE-DUC VILLE</poste>
+ <poste code="0550210">TRESORERIE DU PAYS DE REVIGNY-OPAC DE LA MEUSE</poste>
+ <poste code="0550900">PAIERIE DEPARTEMENTALE DE LA MEUSE</poste>
+ <poste code="0100040">TRESORERIE DE BAR-SUR-AUBE</poste>
+ <poste code="0100060">TRESORERIE DE BAR-SUR-SEINE</poste>
+ <poste code="0120240">TRESORERIE DE BARAQUEVILLE</poste>
+ <poste code="0132040">TRESORERIE BARBENTANE</poste>
+ <poste code="0160080">TRESORERIE BARBEZIEUX-SAINT-HILAIRE</poste>
+ <poste code="0040030">TRESORERIE DE BARCELONNETTE</poste>
+ <poste code="0760020">TRESORERIE DE BARENTIN</poste>
+ <poste code="0500250">TRESORERIE BARENTON-LE TEILLEUL</poste>
+ <poste code="0300450">TRESORERIE DE BARJAC</poste>
+ <poste code="0831030">TRESORERIE BARJOLS-TAVERNES</poste>
+ <poste code="0500380">TRESORERIE DE BARNEVILLE-PORTBAIL</poste>
+ <poste code="0670010">TRESORERIE BARR</poste>
+ <poste code="0430030">TRESORERIE BAS-EN-BASSET</poste>
+ <poste code="1030010">TRESORERIE BASSE-POINTE</poste>
+ <poste code="1010000">TRESORERIE GENERALE DE LA GUADELOUPE</poste>
+ <poste code="1010020">TRESORERIE DE BASSE-TERRE</poste>
+ <poste code="1010800">PAIERIE REGIONALE DE LA GUADELOUPE</poste>
+ <poste code="1010900">PAIERIE DEPARTEMENTALE DE LA GUADELOUPE</poste>
+ <poste code="1010130">TRESORERIE DE BASSE-TERRE MUNCIPALE ET HOSPIT.</poste>
+ <poste code="02B0000">TRESORERIE GENERALE DE LA HAUTE-CORSE</poste>
+ <poste code="02B0010">TRESORERIE BASTIA</poste>
+ <poste code="02B0020">TRESORERIE DE BASTIA MUNICIPALE</poste>
+ <poste code="02B0900">PAIERIE DEPARTEMENTALE DE LA HAUTE-CORSE</poste>
+ <poste code="0560200">TRESORERIE BAUD</poste>
+ <poste code="0490320">TRESORERIE BAUGE</poste>
+ <poste code="0180040">TRESORERIE BAUGY-SAVIGNY-EN-SEPTAINE</poste>
+ <poste code="0250020">TRESORERIE BAUME-LES-DAMES</poste>
+ <poste code="0595180">TRESORERIE BAVAY</poste>
+ <poste code="0140050">TRESORERIE BAYEUX-MONCEAUX-EN-BESSIN</poste>
+ <poste code="0640350">TRESORERIE BAYONNE</poste>
+ <poste code="0640360">TRESORERIE BAYONNE MUNICIPALE</poste>
+ <poste code="0640480">TRESORERIE BAYONNE CENTRE HOSPITALIER</poste>
+ <poste code="0330050">TRESORERIE BAZAS</poste>
+ <poste code="0310030">TRESORERIE MONTGISCARD-BAZIEGE</poste>
+ <poste code="0300050">TRESORERIE BEAUCAIRE</poste>
+ <poste code="0950240">TRESORERIE DE BEAUCHAMP-TAVERNY</poste>
+ <poste code="0390050">TRESORERIE DE BEAUFORT</poste>
+ <poste code="0490070">TRESORERIE BEAUFORT-EN-VALLEE</poste>
+ <poste code="0730060">TRESORERIE BEAUFORT</poste>
+ <poste code="0450030">TRESORERIE BEAUGENCY</poste>
+ <poste code="0690470">TRESORERIE BEAUJEU</poste>
+ <poste code="0190230">TRESORERIE BEAULIEU-SUR-DORDOGNE</poste>
+ <poste code="0820020">TRESORERIE BEAUMONT-LAVIT-DE-LOMAGNE</poste>
+ <poste code="0500390">TRESORERIE BEAUMONT-HAGUE</poste>
+ <poste code="0270180">TRESORERIE BEAUMONT-LE-ROGER</poste>
+ <poste code="0950050">TRESORERIE BEAUMONT-SUR-OISE</poste>
+ <poste code="0720040">TRESORERIE BEAUMONT-SUR-SARTHE</poste>
+ <poste code="0210510">TRESORERIE BEAUNE</poste>
+ <poste code="0450310">TRESORERIE DE BEAUNE-LA-ROLANDE</poste>
+ <poste code="0490420">TRESORERIE BEAUPREAU</poste>
+ <poste code="0381010">TRESORERIE BEAUREPAIRE</poste>
+ <poste code="0020320">TRESORERIE BEAURIEUX-ROUCY-CORBENY</poste>
+ <poste code="0550050">TRESORERIE DE BEAUSITE</poste>
+ <poste code="0060010">TRESORERIE BEAUSOLEIL</poste>
+ <poste code="0600000">TRESORERIE GENERALE DE L' OISE</poste>
+ <poste code="0600040">TRESORERIE DE BEAUVAIS VILLE</poste>
+ <poste code="0600050">TRESORERIE DE BEAUVAIS BANLIEUE</poste>
+ <poste code="0600070">TRESORERIE DE BEAUVAIS MUNICIPALE</poste>
+ <poste code="0600900">PAIERIE DEPARTEMENTALE DE L' OISE</poste>
+ <poste code="0600580">TRESORERIE DE BEAUVAIS AMENDES</poste>
+ <poste code="0600001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE L' OISE</poste>
+ <poste code="0850290">TRESORERIE BEAUVOIR-SUR-MER</poste>
+ <poste code="0790050">TRESORERIE BEAUVOIR-SUR-NIORT</poste>
+ <poste code="0350050">TRESORERIE BECHEREL</poste>
+ <poste code="0340340">TRESORERIE DE BEDARIEUX</poste>
+ <poste code="0640060">TRESORERIE BEDOUS</poste>
+ <poste code="0220320">TRESORERIE BEGARD</poste>
+ <poste code="0330060">TRESORERIE BEGLES</poste>
+ <poste code="0110060">TRESORERIE BELCAIRE-RODOME</poste>
+ <poste code="0900000">TRESORERIE GENERALE DU TERRITOIRE-DE-BELFORT</poste>
+ <poste code="0900040">TRESORERIE BELFORT VILLE</poste>
+ <poste code="0900110">TRESORERIE BELFORT TERRITOIRE HABITAT</poste>
+ <poste code="0900120">TRESORERIE DE BELFORT ETS. HOSPITALIERS</poste>
+ <poste code="0900900">PAIERIE DEPARTEMENTALE DU TERRITOIRE-DE-BELFORT</poste>
+ <poste code="0900020">TRESORERIE DE BELFORT</poste>
+ <poste code="0330070">TRESORERIE DE BELIN-BELIET</poste>
+ <poste code="0870030">TRESORERIE DE BELLAC</poste>
+ <poste code="0230210">TRESORERIE DE BELLEGARDE-EN-MARCHE</poste>
+ <poste code="0010020">TRESORERIE BELLEGARDE-SUR-VALSERINE</poste>
+ <poste code="0610070">TRESORERIE BELLEME</poste>
+ <poste code="0760540">TRESORERIE BELLENCOMBRE</poste>
+ <poste code="0030140">TRESORERIE BELLERIVE-SUR-ALLIER</poste>
+ <poste code="0020470">TRESORERIE DE BELLEU-SOISSONS BANLIEUE</poste>
+ <poste code="0690480">TRESORERIE BELLEVILLE</poste>
+ <poste code="0010030">TRESORERIE BELLEY</poste>
+ <poste code="0422010">TRESORERIE BELMONT-DE-LA-LOIRE</poste>
+ <poste code="0120260">TRESORERIE DE RANCE ET ROUGIERS</poste>
+ <poste code="0110070">TRESORERIE BELPECH</poste>
+ <poste code="0240020">TRESORERIE BELVES</poste>
+ <poste code="0110080">TRESORERIE BELVEZE-DU-RAZES</poste>
+ <poste code="0230020">TRESORERIE DE BENEVENT L'ABBAYE-LE GRAND BOURG</poste>
+ <poste code="0670030">TRESORERIE BENFELD</poste>
+ <poste code="0622170">TRESORERIE DE BERCK</poste>
+ <poste code="0240470">TRESORERIE BERGERAC MUNICIPALE ET BANLIEUE</poste>
+ <poste code="0240590">TRESORERIE DE BERGERAC</poste>
+ <poste code="0594010">TRESORERIE BERGUES</poste>
+ <poste code="0595190">TRESORERIE BERLAIMONT</poste>
+ <poste code="1830000">TRESORERIE AMBASSADE DE FRANCE EN ALLEMAGNE</poste>
+ <poste code="0800670">TRESORERIE BERNAVILLE</poste>
+ <poste code="0270190">TRESORERIE DE BERNAY</poste>
+ <poste code="0131050">TRESORERIE BERRE-L'ETANG</poste>
+ <poste code="0250000">TRESORERIE GENERALE DU DOUBS</poste>
+ <poste code="0250007">CENTRE REGIONAL DES PENSIONS DU DOUBS</poste>
+ <poste code="0250008">CENTRE DE FORMATION DEPARTEMENTAL DU DOUBS</poste>
+ <poste code="0250009">DEPARTEMENT INFORMATIQUE DU DOUBS</poste>
+ <poste code="0250030">TRESORERIE BESANCON</poste>
+ <poste code="0250050">TRESORERIE DU GRAND BESANCON</poste>
+ <poste code="0250060">TRESORERIE BESANCON CHRU</poste>
+ <poste code="0250130">TRESORERIE MORRE-ROULANS</poste>
+ <poste code="0250280">TRESORERIE BESANCON ETS HOSP. DPTAUX</poste>
+ <poste code="0250800">PAIERIE REGIONALE DE FRANCHE-COMTE</poste>
+ <poste code="0250900">PAIERIE DEPARTEMENTALE DOUBS</poste>
+ <poste code="0250001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DU DOUBS</poste>
+ <poste code="0250006">PÔLE NATIONAL DE SOUTIEN AU RESEAU DE BESANCON - RJC</poste>
+ <poste code="0250490">TRESORERIE DE L' OPDHLM DU DOUBS-HABITAT 25</poste>
+ <poste code="0630020">TRESORERIE BESSE-ET-SAINT-ANASTAISE</poste>
+ <poste code="0830020">TRESORERIE BESSE-SUR-ISSOLE</poste>
+ <poste code="0300460">TRESORERIE BESSEGES</poste>
+ <poste code="0870040">TRESORERIE DE BESSINES-SUR-GARTEMPE</poste>
+ <poste code="0620600">TRESORERIE BETHUNE</poste>
+ <poste code="0620610">TRESORERIE BETHUNE MUNICIPALE</poste>
+ <poste code="0620620">TRESORERIE BEUVRY</poste>
+ <poste code="0270200">TRESORERIE BEUZEVILLE</poste>
+ <poste code="0190240">TRESORERIE BEYNAT</poste>
+ <poste code="0340350">TRESORERIE BEZIERS</poste>
+ <poste code="0340360">TRESORERIE BEZIERS MUNICIPALE</poste>
+ <poste code="0340370">TRESORERIE DE BEZIERS ETS HOSP</poste>
+ <poste code="0950300">TRESORERIE BEZONS</poste>
+ <poste code="0640370">TRESORERIE BIARRITZ</poste>
+ <poste code="0911030">TRESORERIE BIEVRES</poste>
+ <poste code="0760040">TRESORERIE BIHOREL</poste>
+ <poste code="0630030">TRESORERIE BILLOM-SAINT-DIER-D'AUVERGNE</poste>
+ <poste code="0671010">TRESORERIE BISCHWILLER</poste>
+ <poste code="0571010">TRESORERIE BITCHE</poste>
+ <poste code="0310430">TRESORERIE BLAGNAC</poste>
+ <poste code="0440350">TRESORERIE BLAIN</poste>
+ <poste code="0760030">TRESORERIE BLAINVILLE-CREVON</poste>
+ <poste code="0540330">TRESORERIE DE BAYON-BLAINVILLE-SUR-L'EAU</poste>
+ <poste code="0540340">TRESORERIE DE BLAMONT - CIREY-SUR-VEZOUZE</poste>
+ <poste code="0760550">TRESORERIE DE BLANGY-SUR-BRESLE</poste>
+ <poste code="0330080">TRESORERIE BLANQUEFORT</poste>
+ <poste code="0160090">TRESORERIE BLANZAC-PORCHERESSE</poste>
+ <poste code="0330700">TRESORERIE BLAYE</poste>
+ <poste code="0890070">TRESORERIE BLENEAU-SAINT-FARGEAU</poste>
+ <poste code="0370030">TRESORERIE BLERE</poste>
+ <poste code="0390060">TRESORERIE BLETTERANS</poste>
+ <poste code="0210520">TRESORERIE BLIGNY-SUR-OUCHE</poste>
+ <poste code="0680010">TRESORERIE BLODELSHEIM</poste>
+ <poste code="0410000">TRESORERIE GENERALE DE LOIR-ET-CHER</poste>
+ <poste code="0410030">TRESORERIE BLOIS MUNICIPALE</poste>
+ <poste code="0410360">TRESORERIE OPAC.DE.LOIR.ET.CHER</poste>
+ <poste code="0410900">PAIERIE DEPARTEMENTALE DE LOIR-ET-CHER</poste>
+ <poste code="0410010">TRESORERIE BLOIS VILLE</poste>
+ <poste code="0930000">TRESORERIE GENERALE DE LA SEINE-SAINT-DENIS</poste>
+ <poste code="0930009">DEPARTEMENT INFORMATIQUE DE LA SEINE-SAINT-DENIS</poste>
+ <poste code="0930320">TRESORERIE DE BOBIGNY MUNICIPALE</poste>
+ <poste code="0930900">PAIERIE DEPARTEMENTALE DE LA SEINE-SAINT-DENIS</poste>
+ <poste code="0930001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE LA SEINE SAINT DENIS</poste>
+ <poste code="0740080">TRESORERIE BOEGE</poste>
+ <poste code="0422180">TRESORERIE DE BOEN SUR LIGNON</poste>
+ <poste code="0020520">TRESORERIE BOHAIN-EN-VERMANDOIS</poste>
+ <poste code="0920050">TRESORERIE DE BOIS-COLOMBES</poste>
+ <poste code="0940020">TRESORERIE DE BOISSY-SAINT-LEGER</poste>
+ <poste code="0762020">TRESORERIE BOLBEC</poste>
+ <poste code="0840200">TRESORERIE BOLLENE-MONDRAGON</poste>
+ <poste code="0930060">TRESORERIE DE BONDY</poste>
+ <poste code="0930400">TRESORERIE DE BONDY MUNICIPALE</poste>
+ <poste code="02A0040">TRESORERIE BONIFACIO</poste>
+ <poste code="0230030">TRESORERIE BONNAT-LOURDOUEIX-SAINT-PIERRE</poste>
+ <poste code="0860390">TRESORERIE VOUNEUIL-SUR-VIENNE</poste>
+ <poste code="0280080">TRESORERIE BONNEVAL</poste>
+ <poste code="0740090">TRESORERIE BONNEVILLE</poste>
+ <poste code="0781010">TRESORERIE BONNIERES-SUR-SEINE</poste>
+ <poste code="0330000">TRESORERIE GENERALE DE LA GIRONDE</poste>
+ <poste code="0330007">CENTRE REGIONAL DES PENSIONS DE LA GIRONDE</poste>
+ <poste code="0330008">CENTRE DE FORMATION DEPARTEMENTAL DE LA GIRONDE</poste>
+ <poste code="0330009">DEPARTEMENT INFORMATIQUE DE LA GIRONDE</poste>
+ <poste code="0330170">RECETTE DES FINANCES BORDEAUX MUNICIPALE</poste>
+ <poste code="0330181">TRESORERIE DE BORDEAUX CHU ANNEXE CH PERRENS</poste>
+ <poste code="0330800">PAIERIE REGIONALE D'AQUITAINE</poste>
+ <poste code="0330900">PAIERIE DEPARTEMENTALE DE LA GIRONDE</poste>
+ <poste code="0330001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE LA GIRONDE</poste>
+ <poste code="0330006">PÔLE NATIONAL DE SOUTIEN AU RESEAU DE BORDEAUX</poste>
+ <poste code="0330120">TRESORERIE BORDEAUX AMENDES</poste>
+ <poste code="0330140">TRESORERIE DE BORDEAUX RIVE GAUCHE</poste>
+ <poste code="0330160">TRESORERIE BORDEAUX EST</poste>
+ <poste code="0330171">RECETTE DES FINANCES SERVICE DE LA COMMUNAUTE URBAINE</poste>
+ <poste code="02B0040">TRESORERIE BORGO-CAMPILE</poste>
+ <poste code="0190020">TRESORERIE BORT-LES-ORGUES</poste>
+ <poste code="0440030">TRESORERIE DE BOUAYE</poste>
+ <poste code="0595020">TRESORERIE BOUCHAIN</poste>
+ <poste code="0100070">TRESORERIE DE BOUILLY</poste>
+ <poste code="0571020">TRESORERIE BOULAY</poste>
+ <poste code="0920060">TRESORERIE BOULOGNE-BILLANCOURT</poste>
+ <poste code="0920070">TRESORERIE BOULOGNE-BILLANCOURT MUNICIPALE</poste>
+ <poste code="0310480">TRESORERIE BOULOGNE-SUR-GESSE-BLAJAN</poste>
+ <poste code="0622000">RECETTE DES FINANCES BOULOGNE-SUR-MER</poste>
+ <poste code="0622020">TRESORERIE DE BOULOGNE-SUR-MER</poste>
+ <poste code="0622030">TRESORERIE BOULOGNE-SUR-MER MUNICIPALE</poste>
+ <poste code="0622040">TRESORERIE BOULOGNE-SUR-MER CTRE HOSP</poste>
+ <poste code="0720070">TRESORERIE BOULOIRE-PARIGNE</poste>
+ <poste code="0030010">TRESORERIE DE BOURBON-L'ARCHAMBAULT</poste>
+ <poste code="0710020">TRESORERIE BOURBON-LANCY</poste>
+ <poste code="0520300">TRESORERIE BOURBONNE-LES-BAINS</poste>
+ <poste code="0594030">TRESORERIE BOURBOURG</poste>
+ <poste code="0270370">TRESORERIE DE ROUTOT-BOURG-ACHARD</poste>
+ <poste code="0420010">TRESORERIE DE BOURG-ARGENTAL</poste>
+ <poste code="0010000">TRESORERIE GENERALE DE L' AIN</poste>
+ <poste code="0010050">TRESORERIE DE BOURG-EN-BRESSE</poste>
+ <poste code="0010060">TRESORERIE BOURG-EN-BRESSE MUNICIPALE</poste>
+ <poste code="0010900">PAIERIE DEPARTEMENTALE DE L' AIN</poste>
+ <poste code="0010001">CELLULE CONTRÔLE REDEVANCE AUDIOVISUELLE DE L' AIN</poste>
+ <poste code="0630040">TRESORERIE DE BOURG-LASTIC-HERMENT</poste>
+ <poste code="0660050">TRESORERIE BOURG-MADAME</poste>
+ <poste code="0070080">TRESORERIE BOURG-SAINT-ANDEOL</poste>
+ <poste code="0730070">TRESORERIE DE BOURG-SAINT-MAURICE</poste>
+ <poste code="0330710">TRESORERIE BOURG SUR GIRONDE</poste>
+ <poste code="0230040">TRESORERIE DE BOURGANEUF - PONTARION</poste>
+ <poste code="0180050">TRESORERIE BOURGES</poste>
+ <poste code="0180900">PAIERIE DEPARTEMENTALE DU CHER</poste>
+ <poste code="0180060">TRESORERIE BOURGES MUNICIPALE</poste>
+ <poste code="0180070">TRESORERIE DE BOURGES CH JACQUES COEUR</poste>
+ <poste code="0180410">TRESORERIE BOURGES H.L.M</poste>
+ <poste code="0180420">TRESORERIE DE BOURGES ETS SPECIALISES</poste>
+ <poste code="0180000">TRESORERIE GENERALE DU CHER</poste>
+ <poste code="0381100">TRESORERIE BOURGOIN-JALLIEU COLLECTIVITES</poste>
+ <poste code="0381110">TRESORERIE BOURGOIN-JALLIEU</poste>
+ <poste code="0270210">TRESORERIE DE BOURGTHEROULDE-INFREVILLE</poste>
+ <poste code="0370050">TRESORERIE BOURGUEIL</poste>
+ <poste code="0520040">TRESORERIE BOURMONT</poste>
+ <poste code="0230050">TRESORERIE BOUSSAC</poste>
+ <poste code="0671020">TRESORERIE BOUXWILLER</poste>
+ <poste code="0571030">TRESORERIE BOUZONVILLE</poste>
+ <poste code="0730080">TRESORERIE BOZEL</poste>
+ <poste code="0120020">TRESORERIE BOZOULS</poste>
+ <poste code="0410040">TRESORERIE BRACIEUX</poste>
+ <poste code="0110400">TRESORERIE DE VILLASAVARY</poste>
+ <poste code="0240030">TRESORERIE BRANTOME</poste>
+ <poste code="0810190">TRESORERIE BRASSAC</poste>
+ <poste code="0770300">TRESORERIE BRAY-SUR-SEINE</poste>
+ <poste code="0800510">TRESORERIE BRAY-SUR-SOMME</poste>
+ <poste code="0500260">TRESORERIE BRECEY-SAINT-POIS</poste>
+ <poste code="0500010">TRESORERIE BREHAL-GAVRAY</poste>
+ <poste code="0060020">TRESORERIE DE BREIL-SUR-ROYA</poste>
+ <poste code="0600080">TRESORERIE BRESLES</poste>
+ <poste code="0790070">TRESORERIE BRESSUIRE</poste>
+ <poste code="0290200">TRESORERIE BREST BELLEVUE</poste>
+ <poste code="0290000">TRESORERIE GENERALE DU FINISTERE</poste>
+ <poste code="0290030">TRESORERIE DE BREST QUATRE-MOULINS</poste>
+ <poste code="0290040">TRESORERIE BREST MUNICIPALE ET COM.URB</poste>
+ <poste code="0290041">TRESORERIE ANNEXE OPAC</poste>
+ <poste code="0290050">TRESORERIE BREST CHU</poste>
+ <poste code="0290900">PAIERIE DEPARTEMENTALE D' FINISTERE</poste>
+ <poste code="0290001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DU FINISTERE</poste>
+ <poste code="0460020">TRESORERIE DE BRETENOUX-VAYRAC</poste>
+ <poste code="0600090">TRESORERIE DE BRETEUIL-CREVECOEUR-LE-GRAND</poste>
+ <poste code="0270010">TRESORERIE BRETEUIL-SUR-ITON</poste>
+ <poste code="0140090">TRESORERIE BRETTEVILLE-SUR-LAIZE</poste>
+ <poste code="0280330">TRESORERIE BREZOLLES</poste>
+ <poste code="0050030">TRESORERIE BRIANCON</poste>
+ <poste code="0450320">TRESORERIE DE BRIARE</poste>
+ <poste code="0500400">TRESORERIE BRICQUEBEC</poste>
+ <poste code="0770010">TRESORERIE BRIE-COMTE-ROBERT</poste>
+ <poste code="0100080">TRESORERIE DE BRIENNE-LE-CHATEAU</poste>
+ <poste code="0890080">TRESORERIE DE BRIENON-SUR-ARMANCON</poste>
+ <poste code="0540400">TRESORERIE DE BRIEY</poste>
+ <poste code="0830030">TRESORERIE BRIGNOLES</poste>
+ <poste code="0270220">TRESORERIE BRIONNE</poste>
+ <poste code="0430050">TRESORERIE BRIOUDE</poste>
+ <poste code="0790080">TRESORERIE BRIOUX-SUR-BOUTONNE</poste>
+ <poste code="0490080">TRESORERIE BRISSAC-QUINCE</poste>
+ <poste code="0190260">TRESORERIE BRIVE MUNICIPALE</poste>
+ <poste code="0190330">TRESORERIE BRIVE VILLE</poste>
+ <poste code="0690210">TRESORERIE LE VINATIER CTRE HOSP. SPEC</poste>
+ <poste code="0690430">TRESORERIE DE BRON</poste>
+ <poste code="0220230">TRESORERIE BROONS</poste>
+ <poste code="0280100">TRESORERIE BROU</poste>
+ <poste code="0620630">TRESORERIE BRUAY-LA BUISSIERE</poste>
+ <poste code="0670060">TRESORERIE DE BRUMATH</poste>
+ <poste code="0910050">TRESORERIE BRUNOY</poste>
+ <poste code="0880040">TRESORERIE DE BRUYERES</poste>
+ <poste code="0760060">TRESORERIE BUCHY</poste>
+ <poste code="0190030">TRESORERIE BUGEAT</poste>
+ <poste code="0260310">TRESORERIE DE BUIS-LES-BARONNIES</poste>
+ <poste code="0880050">TRESORERIE BULGNEVILLE</poste>
+ <poste code="0620640">TRESORERIE BULLY-LES-MINES</poste>
+ <poste code="0170260">TRESORERIE BURIE</poste>
+ <poste code="0860290">TRESORERIE POITIERS OPAC</poste>
+ <poste code="0710470">TRESORERIE BUXY-SAINT-GENGOUX-LE-NATIONAL</poste>
+ <poste code="0360060">TRESORERIE BUZANCAIS</poste>
+ <poste code="0080070">TRESORERIE BUZANCY</poste>
+ <poste code="0660250">TRESORERIE DE CABESTANY</poste>
+ <poste code="0660900">PAIERIE DEPARTEMENTALE DES PYRENEES-ORIENTALES</poste>
+ <poste code="0140110">TRESORERIE CABOURG</poste>
+ <poste code="0940030">TRESORERIE CACHAN</poste>
+ <poste code="0840090">TRESORERIE CADENET</poste>
+ <poste code="0330220">TRESORERIE DE CADILLAC</poste>
+ <poste code="0140000">TRESORERIE GENERALE DU CALVADOS</poste>
+ <poste code="0140007">CENTRE REGIONAL DES PENSIONS DU CALVADOS</poste>
+ <poste code="0140008">CENTRE DE FORMATION DEPARTEMENTAL DU CALVADOS</poste>
+ <poste code="0140009">DEPARTEMENT INFORMATIQUE DU CALVADOS</poste>
+ <poste code="0140120">TRESORERIE DE CAEN BASSIN SAINT-PIERRE</poste>
+ <poste code="0140130">TRESORERIE CAEN MUNICIPALE</poste>
+ <poste code="0140140">TRESORERIE CAEN CHU</poste>
+ <poste code="0140440">TRESORERIE DU CALVADOS</poste>
+ <poste code="0140450">TRESORERIE CAEN AMENDES</poste>
+ <poste code="0140900">PAIERIE DEPARTEMENTALE DU CALVADOS</poste>
+ <poste code="0140001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DU CALVADOS</poste>
+ <poste code="0140100">TRESORERIE CAEN BANLIEUE OUEST</poste>
+ <poste code="0140800">PAIERIE REGIONALE DE BASSE-NORMANDIE</poste>
+ <poste code="0061040">TRESORERIE CAGNES-SUR-MER</poste>
+ <poste code="0460000">TRESORERIE GENERALE DU LOT</poste>
+ <poste code="0460900">PAIERIE DEPARTEMENTALE DU LOT</poste>
+ <poste code="0460030">TRESORERIE DE CAHORS</poste>
+ <poste code="02B0060">TRESORERIE CALACUCCIA</poste>
+ <poste code="0622080">TRESORERIE CALAIS MUNICIPALE</poste>
+ <poste code="0622160">TRESORERIE CALAIS CTRE. HOSPIT. ET BANLIEUE</poste>
+ <poste code="0622050">TRESORERIE DE CALAIS</poste>
+ <poste code="0220330">TRESORERIE CALLAC</poste>
+ <poste code="0690020">TRESORERIE DE CALUIRE-ET-CUIRE</poste>
+ <poste code="02B0070">TRESORERIE CALVI</poste>
+ <poste code="0330230">TRESORERIE CAMBES</poste>
+ <poste code="0640380">TRESORERIE CAMBO-LES-BAINS</poste>
+ <poste code="0593120">TRESORERIE CAMBRAI MUNICIPALE ET HOSP</poste>
+ <poste code="0593170">TRESORERIE CAMBRAI BANLIEUE EST</poste>
+ <poste code="0140480">TRESORERIE DE CAMBREMER</poste>
+ <poste code="0622180">TRESORERIE CAMPAGNE-LES-HESDIN</poste>
+ <poste code="0350410">TRESORERIE CANCALE</poste>
+ <poste code="0490090">TRESORERIE CANDE</poste>
+ <poste code="0061050">TRESORERIE CANNES</poste>
+ <poste code="0061070">TRESORERIE CANNES MUNICIPALE</poste>
+ <poste code="0061080">TRESORERIE CANNES CENTRE HOSPITALIER</poste>
+ <poste code="0760680">TRESORERIE CANY-BARVILLE</poste>
+ <poste code="0120300">TRESORERIE CAPDENAC-GARE</poste>
+ <poste code="0110100">TRESORERIE CAPENDU</poste>
+ <poste code="0340380">TRESORERIE DE CAPESTANG</poste>
+ <poste code="1010030">TRESORERIE DE CAPESTERRE</poste>
+ <poste code="0310050">TRESORERIE CARAMAN-LANTA</poste>
+ <poste code="0310560">TRESORERIE DU VOLVESTRE</poste>
+ <poste code="0110000">TRESORERIE GENERALE DE L' AUDE</poste>
+ <poste code="0110410">TRESORERIE CARCASSONNE ETAB HOSPITALIERS</poste>
+ <poste code="0110110">TRESORERIE DE CARCASSONNE VILLE</poste>
+ <poste code="0110130">TRESORERIE CARCASSONNE AGGLOMERATION</poste>
+ <poste code="0110900">PAIERIE DEPARTEMENTALE DE L' AUDE</poste>
+ <poste code="0831040">TRESORERIE COTIGNAC-CARCES</poste>
+ <poste code="0500030">TRESORERIE CARENTAN</poste>
+ <poste code="0290210">TRESORERIE DE CARHAIX-PLOUGUER</poste>
+ <poste code="0080080">TRESORERIE DE CARIGNAN</poste>
+ <poste code="0810050">TRESORERIE CARMAUX-PAMPELONNE</poste>
+ <poste code="0560270">TRESORERIE CARNAC</poste>
+ <poste code="0840210">TRESORERIE DE CARPENTRAS</poste>
+ <poste code="0840290">TRESORERIE DE CARPENTRAS ETS. HOSPITALIERS</poste>
+ <poste code="0440340">TRESORERIE DE CARQUEFOU</poste>
+ <poste code="0610090">TRESORERIE CARROUGES</poste>
+ <poste code="0620660">TRESORERIE CARVIN</poste>
+ <poste code="0594050">TRESORERIE DE CASSEL</poste>
+ <poste code="0310070">TRESORERIE CASTANET-TOLOSAN</poste>
+ <poste code="0470160">TRESORERIE CASTELJALOUX</poste>
+ <poste code="0040050">TRESORERIE DE CASTELLANE</poste>
+ <poste code="0470170">TRESORERIE CASTELMORON-SUR-LOT</poste>
+ <poste code="0330240">TRESORERIE DE CASTELNAU-DE-MEDOC</poste>
+ <poste code="0340020">TRESORERIE DE CASTELNAU-LE-LEZ</poste>
+ <poste code="0650110">TRESORERIE DE CASTELNAU-GALAN</poste>
+ <poste code="0460050">TRESORERIE CASTELNAU-MONTRATIER</poste>
+ <poste code="0110140">TRESORERIE CASTELNAUDARY</poste>
+ <poste code="0820040">TRESORERIE CASTELSARRASIN</poste>
+ <poste code="0400210">TRESORERIE CASTETS</poste>
+ <poste code="0090060">TRESORERIE CASTILLON-EN-COUSERANS</poste>
+ <poste code="0330630">TRESORERIE CASTILLON-LA-BATAILLE</poste>
+ <poste code="0470180">TRESORERIE DE CASTILLONNES</poste>
+ <poste code="0810200">TRESORERIE CASTRES</poste>
+ <poste code="0810210">TRESORERIE CASTRES VILLE</poste>
+ <poste code="0330250">TRESORERIE CASTRES-GIRONDE</poste>
+ <poste code="0340030">TRESORERIE DE CASTRIES</poste>
+ <poste code="0460060">TRESORERIE CATUS</poste>
+ <poste code="0760080">TRESORERIE CAUDEBEC-EN-CAUX</poste>
+ <poste code="0593140">TRESORERIE DE CAUDRY</poste>
+ <poste code="0220240">TRESORERIE CAULNES</poste>
+ <poste code="0820050">TRESORERIE CAUSSADE-CAYLUS</poste>
+ <poste code="0840100">TRESORERIE CAVAILLON</poste>
+ <poste code="1020000">TRESORERIE GENERALE DE LA GUYANE</poste>
+ <poste code="1020020">TRESORERIE CAYENNE AMANDIERS</poste>
+ <poste code="1020800">PAIERIE REGIONALE DE LA GUYANE</poste>
+ <poste code="1020900">PAIERIE DEPARTEMENTALE DE LA GUYANE</poste>
+ <poste code="1020010">TRESORERIE DE CAYENNE ILE</poste>
+ <poste code="0430060">TRESORERIE CAYRES</poste>
+ <poste code="0460070">TRESORERIE CAZALS-SALVIAC</poste>
+ <poste code="0320060">TRESORERIE CAZAUBON</poste>
+ <poste code="0310570">TRESORERIE CAZERES-MARTRES-TOLOSANE</poste>
+ <poste code="0790090">TRESORERIE CELLES-SUR-BELLE</poste>
+ <poste code="0330290">TRESORERIE CENON</poste>
+ <poste code="0720100">TRESORERIE DE CERANS-MANSIGNE</poste>
+ <poste code="0660060">TRESORERIE CERET</poste>
+ <poste code="0950000">TRESORERIE GENERALE DU VAL-D'OISE</poste>
+ <poste code="0950008">CENTRE DE FORMATION DEPARTEMENTAL DU VAL-D'OISE</poste>
+ <poste code="0950200">TRESORERIE DE CERGY</poste>
+ <poste code="0950900">PAIERIE DEPARTEMENTALE DU VAL-D'OISE</poste>
+ <poste code="0950330">TRESORERIE DE CERGY COLLECTIVITES</poste>
+ <poste code="0950350">TRESORERIE VAL D'OISE AMENDES</poste>
+ <poste code="0950001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DU VAL D'OISE</poste>
+ <poste code="0030150">TRESORERIE CERILLY-AINAY-LE-CHATEAU</poste>
+ <poste code="0790100">TRESORERIE CERIZAY</poste>
+ <poste code="0680250">TRESORERIE CERNAY</poste>
+ <poste code="02B0210">TRESORERIE SAN-NICOLAO</poste>
+ <poste code="0350060">TRESORERIE DE RENNES BANLIEUE EST</poste>
+ <poste code="0160110">TRESORERIE CHABANAIS</poste>
+ <poste code="0260050">TRESORERIE CHABEUIL</poste>
+ <poste code="0890090">TRESORERIE CHABLIS</poste>
+ <poste code="0710480">TRESORERIE CHAGNY-SAINT-LEGER-SUR-DHEUNE</poste>
+ <poste code="0530060">TRESORERIE CHAILLAND-JUVIGNE</poste>
+ <poste code="0850190">TRESORERIE DE CHAILLE-LES-MARAIS</poste>
+ <poste code="0110160">TRESORERIE CHALABRE</poste>
+ <poste code="0160120">TRESORERIE CHALAIS</poste>
+ <poste code="0520310">TRESORERIE DE CHALINDREY</poste>
+ <poste code="0850300">TRESORERIE CHALLANS-PALLUAU</poste>
+ <poste code="0730310">TRESORERIE DE CHALLES-LES-EAUX</poste>
+ <poste code="0710500">TRESORERIE CHALON-SUR-SAONE MUNICIPALE</poste>
+ <poste code="0710570">TRESORERIE CHALON-SUR-SAONE VILLE</poste>
+ <poste code="0490100">TRESORERIE CHALONNES-SUR-LOIRE</poste>
+ <poste code="0510040">TRESORERIE DE CHALONS-EN-CHAMPAGNE MUNICIPALE</poste>
+ <poste code="0510800">PAIERIE REGIONALE DE CHAMPAGNE-ARDENNE</poste>
+ <poste code="0510000">TRESORERIE GENERALE DE LA MARNE</poste>
+ <poste code="0510007">CENTRE REGIONAL DES PENSIONS DE LA MARNE</poste>
+ <poste code="0510008">CENTRE DE FORMATION DEPARTEMENTAL DE LA MARNE</poste>
+ <poste code="0510009">DEPARTEMENT INFORMATIQUE DE LA MARNE</poste>
+ <poste code="0510030">TRESORERIE DE CHALONS-EN-CHAMPAGNE</poste>
+ <poste code="0510060">TRESORERIE DE CHALONS-EN-CHAMPAGNE ETS HOSP</poste>
+ <poste code="0510080">TRESORERIE CHALONS - BANLIEUE SUD</poste>
+ <poste code="0510140">TRESORERIE CHALONS - BANLIEUE NORD</poste>
+ <poste code="0510290">TRESORERIE CHALONS-EN-CHAMPAGNE HLM</poste>
+ <poste code="0510900">PAIERIE DEPARTEMENTALE DE LA MARNE</poste>
+ <poste code="0870050">TRESORERIE CHALUS-DOURNAZAC</poste>
+ <poste code="0630800">PAIERIE REGIONALE D'AUVERGNE</poste>
+ <poste code="0190040">TRESORERIE CHAMBERET</poste>
+ <poste code="0730000">TRESORERIE GENERALE DE LA SAVOIE</poste>
+ <poste code="0730090">TRESORERIE CHAMBERY</poste>
+ <poste code="0730100">TRESORERIE DE CHAMBERY MUNICIPALE</poste>
+ <poste code="0730370">TRESORERIE CHAMBERY ETS HOSP.</poste>
+ <poste code="0730380">TRESORERIE DE L' OPAC DE LA SAVOIE</poste>
+ <poste code="0730900">PAIERIE DEPARTEMENTALE DE LA SAVOIE</poste>
+ <poste code="0600330">TRESORERIE CHAMBLY</poste>
+ <poste code="0230220">TRESORERIE DE CHAMBON-SUR-VOUEIZE</poste>
+ <poste code="0740120">TRESORERIE CHAMONIX-MONT-BLANC</poste>
+ <poste code="0730120">TRESORERIE DE CHAMOUX-SUR-GELON</poste>
+ <poste code="0160130">TRESORERIE CHAMPAGNE-MOUTON</poste>
+ <poste code="0700040">TRESORERIE CHAMPAGNEY</poste>
+ <poste code="0390080">TRESORERIE CHAMPAGNOLE</poste>
+ <poste code="0630060">TRESORERIE CHAMPEIX</poste>
+ <poste code="0941010">TRESORERIE DE CHAMPIGNY-SUR-MARNE</poste>
+ <poste code="0490430">TRESORERIE CHAMPTOCEAUX</poste>
+ <poste code="0600340">TRESORERIE CHANTILLY</poste>
+ <poste code="0850050">TRESORERIE CHANTONNAY</poste>
+ <poste code="0100090">TRESORERIE DE CHAOURCE</poste>
+ <poste code="0690800">PAIERIE REGIONALE DE RHONE-ALPES</poste>
+ <poste code="0940350">TRESORERIE VAL-DE-MARNE AMENDES</poste>
+ <poste code="0940050">TRESORERIE CHARENTON-LE-PONT</poste>
+ <poste code="0080000">TRESORERIE GENERALE DES ARDENNES</poste>
+ <poste code="0080090">TRESORERIE DE CHARLEVILLE COURS BRIAND</poste>
+ <poste code="0080100">TRESORERIE DE CHARLEVILLE-MEZIERES BOURBON</poste>
+ <poste code="0080110">TRESORERIE CHARLEVILLE-MEZIERES ETS HOSP</poste>
+ <poste code="0080900">PAIERIE DEPARTEMENTALE DES ARDENNES</poste>
+ <poste code="0422020">TRESORERIE CHARLIEU-POUILLY</poste>
+ <poste code="0020390">TRESORERIE DE CHARLY-SUR-MARNE</poste>
+ <poste code="0880060">TRESORERIE CHARMES-BRANTIGNY</poste>
+ <poste code="0890110">TRESORERIE CHARNY</poste>
+ <poste code="0710040">TRESORERIE CHAROLLES-ST-BONNET-DE-JOUX</poste>
+ <poste code="0280000">TRESORERIE GENERALE D'EURE-ET-LOIR</poste>
+ <poste code="0280120">TRESORERIE CHARTRES-VILLE</poste>
+ <poste code="0280140">TRESORERIE CHARTRES MUNICIPALE</poste>
+ <poste code="0280001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE L' EURE ET LOIR</poste>
+ <poste code="0350070">TRESORERIE DE CHARTRES-DE-BRETAGNE</poste>
+ <poste code="0160140">TRESORERIE DE CHASSENEUIL-SUR-BONNIEURE</poste>
+ <poste code="0580030">TRESORERIE CHATEAU-CHINON</poste>
+ <poste code="0720120">TRESORERIE CHATEAU-DU-LOIR</poste>
+ <poste code="0530070">TRESORERIE CHATEAU-GONTIER</poste>
+ <poste code="0370080">TRESORERIE CHATEAU-LA-VALLIERE</poste>
+ <poste code="0770320">TRESORERIE CHATEAU-LANDON-BEAUMONT-DU-GAT</poste>
+ <poste code="0450330">TRESORERIE CHATEAU-RENARD</poste>
+ <poste code="0370090">TRESORERIE CHATEAU-RENAULT</poste>
+ <poste code="0570100">TRESORERIE CHATEAU-SALINS</poste>
+ <poste code="0020400">TRESORERIE DE CHATEAU-THIERRY-ET-BANLIEUE</poste>
+ <poste code="0050040">TRESORERIE CHATEAU-VILLE-VIEILLE</poste>
+ <poste code="0440050">TRESORERIE DE CHATEAUBRIANT</poste>
+ <poste code="0280150">TRESORERIE CHATEAUDUN</poste>
+ <poste code="0350090">TRESORERIE CHATEAUGIRON</poste>
+ <poste code="0290060">TRESORERIE CHATEAULIN</poste>
+ <poste code="0180110">TRESORERIE CHATEAUMEILLANT-CULAN</poste>
+ <poste code="0290070">TRESORERIE CHATEAUNEUF-DU-FAOU</poste>
+ <poste code="0280340">TRESORERIE CHATEAUNEUF-EN-THYMERAIS</poste>
+ <poste code="0350420">TRESORERIE CHATEAUNEUF-D'ILLE-ET-VILAINE</poste>
+ <poste code="0870060">TRESORERIE CHATEAUNEUF-LA-FORET</poste>
+ <poste code="0160160">TRESORERIE CHATEAUNEUF-SUR-CHARENTE</poste>
+ <poste code="0180120">TRESORERIE DE CHATEAUNEUF-SUR-CHER</poste>
+ <poste code="0450060">TRESORERIE CHATEAUNEUF-SUR-LOIRE</poste>
+ <poste code="0490110">TRESORERIE CHATEAUNEUF-SUR-SARTHE</poste>
+ <poste code="0132050">TRESORERIE CHATEAURENARD</poste>
+ <poste code="0360000">TRESORERIE GENERALE DE L' INDRE</poste>
+ <poste code="0360100">TRESORERIE CHATEAUROUX MUNICIPALE</poste>
+ <poste code="0360900">PAIERIE DEPARTEMENTALE DE L'INDRE</poste>
+ <poste code="0360080">TRESORERIE CHATEAUROUX VILLE</poste>
+ <poste code="0520070">TRESORERIE CHATEAUVILLAIN</poste>
+ <poste code="0880080">TRESORERIE CHATEL-SUR-MOSELLE</poste>
+ <poste code="0220440">TRESORERIE CHATELAUDREN</poste>
+ <poste code="0860300">TRESORERIE DES COLLECTIVITES DU CHATELLERAUDAIS</poste>
+ <poste code="0860370">TRESORERIE DE CHATELLERAULT</poste>
+ <poste code="9800000">TRESORERIE GENERALE DES CREANCES SPECIALES DU TRESOR</poste>
+ <poste code="9800006">PÔLE NATIONAL D' ASSISTANCE RECOUVT CONTENTIEUX</poste>
+ <poste code="0230060">TRESORERIE CHATELUS-MALVALEIX</poste>
+ <poste code="0921030">TRESORERIE CHATENAY-MALABRY</poste>
+ <poste code="0880090">TRESORERIE DE CHATENOIS</poste>
+ <poste code="0921040">TRESORERIE CHATILLON</poste>
+ <poste code="0450340">TRESORERIE CHATILLON-COLIGNY</poste>
+ <poste code="0580050">TRESORERIE CHATILLON-EN-BAZOIS</poste>
+ <poste code="0260080">TRESORERIE CHATILLON-LUS-LA-CROIX-HAUTE</poste>
+ <poste code="0010100">TRESORERIE CHATILLON-SUR-CHALARONNE</poste>
+ <poste code="0360110">TRESORERIE CHATILLON-SUR-INDRE-CLION</poste>
+ <poste code="0210090">TRESORERIE CHATILLON-SUR-SEINE</poste>
+ <poste code="0780040">TRESORERIE CHATOU</poste>
+ <poste code="0150070">TRESORERIE CHAUDES-AIGUES-PIERREFORT</poste>
+ <poste code="0710050">TRESORERIE CHAUFFAILLES</poste>
+ <poste code="0800520">TRESORERIE CHAULNES</poste>
+ <poste code="0520000">TRESORERIE GENERALE DE LA HAUTE-MARNE</poste>
+ <poste code="0520080">TRESORERIE CHAUMONT</poste>
+ <poste code="0520900">PAIERIE DEPARTEMENTALE DE LA HAUTE-MARNE</poste>
+ <poste code="0600110">TRESORERIE DE CHAUMONT-EN-VEXIN</poste>
+ <poste code="0020330">TRESORERIE CHAUNY</poste>
+ <poste code="0390290">TRESORERIE CHAUSSIN-LE DESCHAUX</poste>
+ <poste code="0860040">TRESORERIE CHAUVIGNY</poste>
+ <poste code="0690500">TRESORERIE DE CHAZAY-D'AZERGUES</poste>
+ <poste code="0420210">TRESORERIE CHAZELLES-SUR-LYON</poste>
+ <poste code="0790140">TRESORERIE CHEF-BOUTONNE</poste>
+ <poste code="0772030">TRESORERIE DE CHELLES</poste>
+ <poste code="0490440">TRESORERIE CHEMILLE</poste>
+ <poste code="0230230">TRESORERIE CHENERAILLES</poste>
+ <poste code="0941030">TRESORERIE DE CHENNEVIERES-SUR-MARNE</poste>
+ <poste code="0210480">TRESORERIE CHENOVE</poste>
+ <poste code="0500410">TRESORERIE CHERBOURG</poste>
+ <poste code="0500420">TRESORERIE CHERBOURG MUNICIPALE</poste>
+ <poste code="0890480">TRESORERIE CHEROY-DOMATS</poste>
+ <poste code="0520110">TRESORERIE CHEVILLON</poste>
+ <poste code="0780050">TRESORERIE CHEVREUSE</poste>
+ <poste code="0911040">TRESORERIE CHILLY-MAZARIN</poste>
+ <poste code="0370110">TRESORERIE CHINON</poste>
+ <poste code="0940060">TRESORERIE DE CHOISY-LE-ROI</poste>
+ <poste code="0490450">TRESORERIE CHOLET MUNICIPALE ET VEZINS</poste>
+ <poste code="0490500">TRESORERIE DE CHOLET</poste>
+ <poste code="0860050">TRESORERIE CIVRAY</poste>
+ <poste code="0390090">TRESORERIE CLAIRVAUX-LES-LACS</poste>
+ <poste code="0921050">TRESORERIE DE CLAMART</poste>
+ <poste code="0580060">TRESORERIE CLAMECY</poste>
+ <poste code="0593150">TRESORERIE DE CLARY</poste>
+ <poste code="0772040">TRESORERIE CLAYE-SOUILLY</poste>
+ <poste code="0760100">TRESORERIE CLERES</poste>
+ <poste code="0600120">TRESORERIE CLERMONT</poste>
+ <poste code="0600130">TRESORERIE CLERMONT CHSI</poste>
+ <poste code="0550320">TRESORERIE CLERMONT-EN-ARGONNE</poste>
+ <poste code="0630100">TRESORERIE DE CLERMONT-FERRAND BANLIEUE</poste>
+ <poste code="0630110">TRESORERIE DE CLERMONT-FERRAND MUNICIPALE</poste>
+ <poste code="0630000">TRESORERIE GENERALE DU PUY-DE-DOME</poste>
+ <poste code="0630007">CENTRE REGIONAL DES PENSIONS DU PUY-DE-DOME</poste>
+ <poste code="0630008">CENTRE DE FORMATION DEPARTEMENTAL DU PUY-DE-DOME</poste>
+ <poste code="0630009">DEPARTEMENT INFORMATIQUE DU PUY-DE-DOME</poste>
+ <poste code="0630070">TRESORERIE DE CLERMONT-FERRAND 1ERE DIVISION</poste>
+ <poste code="0630120">TRESORERIE CLERMONT-FERRAND CHU</poste>
+ <poste code="0630340">TRESORERIE CLERMONT-FERRAND OPAC</poste>
+ <poste code="0630900">PAIERIE DEPARTEMENTALE DU PUY-DE-DOME</poste>
+ <poste code="0630001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DU PUY DE DÔME</poste>
+ <poste code="0630080">TRESORERIE CLERMONT-FERRAND 2EME DIVISION</poste>
+ <poste code="0340070">TRESORERIE CLERMONT-L'HERAULT</poste>
+ <poste code="0250360">TRESORERIE DE CLERVAL</poste>
+ <poste code="0920110">TRESORERIE CLICHY</poste>
+ <poste code="0920120">TRESORERIE CLICHY MUNICIPALE</poste>
+ <poste code="0440060">TRESORERIE CLISSON</poste>
+ <poste code="0280160">TRESORERIE CLOYES-COURTALAIN</poste>
+ <poste code="0710070">TRESORERIE CLUNY-SALORNAY</poste>
+ <poste code="0740130">TRESORERIE CLUSES</poste>
+ <poste code="0160170">TRESORERIE COGNAC</poste>
+ <poste code="0160180">TRESORERIE COGNAC MUNICIPALE</poste>
+ <poste code="0010110">TRESORERIE COLIGNY</poste>
+ <poste code="0220030">TRESORERIE COLLINEE</poste>
+ <poste code="0680230">TRESORERIE WINTZENHEIM</poste>
+ <poste code="0680900">PAIERIE DEPARTEMENTALE DU HAUT-RHIN</poste>
+ <poste code="0680000">TRESORERIE GENERALE DU HAUT-RHIN</poste>
+ <poste code="0680020">TRESORERIE DE COLMAR</poste>
+ <poste code="0680040">TRESORERIE COLMAR MUNICIPALE</poste>
+ <poste code="0680050">TRESORERIE ETS HOSP. PUBLICS DE COLMAR</poste>
+ <poste code="0680300">TRESORERIE HAUT RHIN AMENDES</poste>
+ <poste code="0040060">TRESORERIE COLMARS</poste>
+ <poste code="0920140">TRESORERIE DE COLOMBES MUNICIPALE</poste>
+ <poste code="0920130">TRESORERIE COLOMBES</poste>
+ <poste code="0540020">TRESORERIE DE COLOMBEY-LES-BELLES</poste>
+ <poste code="0310410">TRESORERIE COLOMIERS-LEGUEVIN</poste>
+ <poste code="0700080">TRESORERIE COMBEAUFONTAINE</poste>
+ <poste code="0350430">TRESORERIE COMBOURG</poste>
+ <poste code="0630360">TRESORERIE COMBRONDE</poste>
+ <poste code="0590080">TRESORERIE COMINES</poste>
+ <poste code="0030160">TRESORERIE DE COMMENTRY</poste>
+ <poste code="0550060">TRESORERIE COMMERCY</poste>
+ <poste code="0600570">TRESORERIE COMPIEGNE</poste>
+ <poste code="0600470">TRESORERIE COMPIEGNE MUNICIPALE</poste>
+ <poste code="0831050">TRESORERIE COMPS-SUR-ARTUBY</poste>
+ <poste code="0292030">TRESORERIE CONCARNEAU</poste>
+ <poste code="0270030">TRESORERIE CONCHES-EN-OUCHE</poste>
+ <poste code="0150080">TRESORERIE CONDAT</poste>
+ <poste code="0020420">TRESORERIE CONDE-EN-BRIE</poste>
+ <poste code="0595030">TRESORERIE CONDE-SUR-L'ESCAUT</poste>
+ <poste code="0140170">TRESORERIE CONDE-SUR-NOIREAU</poste>
+ <poste code="0320080">TRESORERIE CONDOM</poste>
+ <poste code="0690040">TRESORERIE CONDRIEU</poste>
+ <poste code="0781020">TRESORERIE CONFLANS-SAINTE-HONORINE</poste>
+ <poste code="0160190">TRESORERIE CONFOLENS</poste>
+ <poste code="0720130">TRESORERIE DE CONLIE</poste>
+ <poste code="0720140">TRESORERIE DE CONNERRE-MONTFORT</poste>
+ <poste code="0060030">TRESORERIE CONTES</poste>
+ <poste code="0410060">TRESORERIE CONTRES</poste>
+ <poste code="0800140">TRESORERIE CONTY</poste>
+ <poste code="0910060">TRESORERIE CORBEIL-VILLABE</poste>
+ <poste code="0910080">TRESORERIE CORBEIL-VILLABE MUNICIPALE</poste>
+ <poste code="0910350">TRESORERIE ESSONNE AMENDES</poste>
+ <poste code="0800150">TRESORERIE CORBIE</poste>
+ <poste code="0580070">TRESORERIE CORBIGNY</poste>
+ <poste code="0880520">TRESORERIE CORCIEUX</poste>
+ <poste code="0810080">TRESORERIE CORDES-VAOUR</poste>
+ <poste code="0220040">TRESORERIE CORLAY</poste>
+ <poste code="0950060">TRESORERIE CORMEILLES-EN-PARISIS</poste>
+ <poste code="0880100">TRESORERIE CORNIMONT</poste>
+ <poste code="0380100">TRESORERIE CORPS</poste>
+ <poste code="0190060">TRESORERIE CORREZE</poste>
+ <poste code="02B0090">TRESORERIE CORTE-OMESSA</poste>
+ <poste code="0580080">TRESORERIE COSNE-COURS-SUR-LOIRE</poste>
+ <poste code="0530090">TRESORERIE DE COSSE-LE-VIVIEN</poste>
+ <poste code="0710590">TRESORERIE DE COUCHES-PARIS-L'HOPITAL</poste>
+ <poste code="0070120">TRESORERIE COUCOURON</poste>
+ <poste code="0020090">TRESORERIE COUCY-LE-CHATEAU</poste>
+ <poste code="0594060">TRESORERIE COUDEKERQUE-BRANCHE</poste>
+ <poste code="0860060">TRESORERIE COUHE</poste>
+ <poste code="0110180">TRESORERIE COUIZA</poste>
+ <poste code="0770080">TRESORERIE DE COULOMMIERS</poste>
+ <poste code="0790160">TRESORERIE DE COULONGES - VAL D'EGRAY</poste>
+ <poste code="0920150">TRESORERIE COURBEVOIE</poste>
+ <poste code="0920160">TRESORERIE COURBEVOIE MUNICIPALE</poste>
+ <poste code="0570110">TRESORERIE COURCELLES-CHAUSSY</poste>
+ <poste code="0170030">TRESORERIE COURCON-NUAILLE-D'AUNIS</poste>
+ <poste code="0910070">TRESORERIE EVRY MUNICIPALE</poste>
+ <poste code="0340090">TRESORERIE DE COURNONTERRAL</poste>
+ <poste code="0630510">TRESORERIE COURPIERE</poste>
+ <poste code="0140180">TRESORERIE COURSEULLES-SUR-MER</poste>
+ <poste code="0890150">TRESORERIE DE COURSON-LES-CARRIERES-OUANNE</poste>
+ <poste code="0450350">TRESORERIE COURTENAY</poste>
+ <poste code="0280180">TRESORERIE COURVILLE-SUR-EURE</poste>
+ <poste code="0500060">TRESORERIE COUTANCES</poste>
+ <poste code="0330640">TRESORERIE COUTRAS</poste>
+ <poste code="0170270">TRESORERIE COZES-MORTAGNE-SUR-GIRONDE</poste>
+ <poste code="0530110">TRESORERIE DE CRAON</poste>
+ <poste code="0430090">TRESORERIE CRAPONNE-SUR-ARZON</poste>
+ <poste code="0800620">TRESORERIE DE CRECY-EN-PONTHIEU</poste>
+ <poste code="0600350">TRESORERIE DE CREIL</poste>
+ <poste code="0600440">TRESORERIE CREIL MUNICIPALE</poste>
+ <poste code="0381050">TRESORERIE CREMIEU-TREPT</poste>
+ <poste code="0330300">TRESORERIE DE CREON</poste>
+ <poste code="0600360">TRESORERIE CREPY-EN-VALOIS</poste>
+ <poste code="0260090">TRESORERIE CREST</poste>
+ <poste code="0940080">TRESORERIE CRETEIL CENTRE HOSPITALIER</poste>
+ <poste code="0940004">CE CENTRE ENCAISSEMENT CRETEIL</poste>
+ <poste code="0940000">TRESORERIE GENERALE DU VAL-DE-MARNE</poste>
+ <poste code="0940007">CENTRE REGIONAL DES PENSIONS DU VAL-DE-MARNE</poste>
+ <poste code="0940008">CENTRE DE FORMATION DEPARTEMENTAL DU VAL-DE-MARNE</poste>
+ <poste code="0940009">DEPARTEMENT INFORMATIQUE DU VAL-DE-MARNE</poste>
+ <poste code="0940070">TRESORERIE CRETEIL</poste>
+ <poste code="0940360">TRESORERIE DE CRETEIL MUNICIPALE</poste>
+ <poste code="0940900">PAIERIE DEPARTEMENTALE DU VAL-DE-MARNE</poste>
+ <poste code="0940001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DU VAL DE MARNE</poste>
+ <poste code="0571040">TRESORERIE CREUTZWALD</poste>
+ <poste code="0762030">TRESORERIE CRIQUETOT-L'ESNEVAL</poste>
+ <poste code="0230250">TRESORERIE DE CROCQ - LA COURTINE</poste>
+ <poste code="0620200">TRESORERIE CROISILLES</poste>
+ <poste code="0290090">TRESORERIE CROZON</poste>
+ <poste code="0740140">TRESORERIE CRUSEILLES</poste>
+ <poste code="0830050">TRESORERIE CUERS</poste>
+ <poste code="0310440">TRESORERIE CUGNAUX</poste>
+ <poste code="0593030">TRESORERIE DE CUINCY</poste>
+ <poste code="0710090">TRESORERIE CUISEAUX</poste>
+ <poste code="0710100">TRESORERIE CUISERY-MONTPONT-MONTRET</poste>
+ <poste code="0630520">TRESORERIE CUNLHAT</poste>
+ <poste code="0870210">TRESORERIE D' ORADOUR-SUR-VAYRES</poste>
+ <poste code="0030180">TRESORERIE CUSSET</poste>
+ <poste code="0110190">TRESORERIE CUXAC-CABARDES</poste>
+ <poste code="1210000">TRESORERIE AMBASSADE DE FRANCE AU SENEGAL</poste>
+ <poste code="0470190">TRESORERIE DAMAZAN</poste>
+ <poste code="0670070">TRESORERIE DAMBACH-LA-VILLE</poste>
+ <poste code="0772070">TRESORERIE DAMMARTIN-EN-GOELE-ST-SOUPPLETS</poste>
+ <poste code="0390300">TRESORERIE DAMPIERRE</poste>
+ <poste code="0700120">TRESORERIE DE DAMPIERRE-SUR-SALON-LAVONCOURT</poste>
+ <poste code="0270040">TRESORERIE DAMVILLE</poste>
+ <poste code="0550340">TRESORERIE DE DAMVILLERS</poste>
+ <poste code="0860310">TRESORERIE DANGE-SAINT-ROMAIN</poste>
+ <poste code="0681050">TRESORERIE DANNEMARIE</poste>
+ <poste code="0290100">TRESORERIE DAOULAS</poste>
+ <poste code="0880130">TRESORERIE DE DARNEY</poste>
+ <poste code="0400230">TRESORERIE DAX</poste>
+ <poste code="0400320">TRESORERIE DAX CENTRE HOSPITALIER</poste>
+ <poste code="0140591">TRESORERIE ANNEXE DE DEAUVILLE</poste>
+ <poste code="0120320">TRESORERIE DECAZEVILLE</poste>
+ <poste code="0580090">TRESORERIE DECIZE</poste>
+ <poste code="0900050">TRESORERIE DE DELLE</poste>
+ <poste code="0570130">TRESORERIE DELME</poste>
+ <poste code="0595040">TRESORERIE DE DENAIN IMPÔTS</poste>
+ <poste code="0595050">TRESORERIE DENAIN MUNICIPALE</poste>
+ <poste code="0360090">TRESORERIE CHATEAUROUX BANLIEUE</poste>
+ <poste code="0440070">TRESORERIE DERVAL</poste>
+ <poste code="0370140">TRESORERIE DESCARTES</poste>
+ <poste code="0622100">TRESORERIE DESVRES</poste>
+ <poste code="0760120">TRESORERIE DEVILLE-LES-ROUEN</poste>
+ <poste code="0260100">TRESORERIE DIE</poste>
+ <poste code="0760560">TRESORERIE DIEPPE CENTRE ET EST</poste>
+ <poste code="0760570">TRESORERIE DIEPPE MUNICIPALE</poste>
+ <poste code="0550350">TRESORERIE DE DIEUE-SUR-MEUSE</poste>
+ <poste code="0260320">TRESORERIE DIEULEFIT-LA BEGUDE-DE-MAZENC</poste>
+ <poste code="0570140">TRESORERIE DIEUZE</poste>
+ <poste code="0040000">TRESORERIE GENERALE DES ALPES-DE-HAUTE-PROVENCE</poste>
+ <poste code="0040080">TRESORERIE DIGNE-LES-BAINS</poste>
+ <poste code="0040900">PAIERIE DEPARTEMENTALE DES ALPES-DE-HAUTE-PROVENCE</poste>
+ <poste code="0710110">TRESORERIE DIGOIN</poste>
+ <poste code="0210000">TRESORERIE GENERALE DE LA COTE-D'OR</poste>
+ <poste code="0210007">CENTRE REGIONAL DES PENSIONS DE LA COTE-D'OR</poste>
+ <poste code="0210008">CENTRE DE FORMATION DEPARTEMENTAL DE LA COTE-D'OR</poste>
+ <poste code="0210009">DEPARTEMENT INFORMATIQUE DE LA COTE-D'OR</poste>
+ <poste code="0210030">TRESORERIE DE DIJON BANLIEUE</poste>
+ <poste code="0210110">TRESORERIE DIJON NORD</poste>
+ <poste code="0210120">TRESORERIE DIJON SUD ET AMENDES</poste>
+ <poste code="0210130">TRESORERIE DIJON MUNICIPALE</poste>
+ <poste code="0210140">TRESORERIE DIJON CHU</poste>
+ <poste code="0210800">PAIERIE REGIONALE DE BOURGOGNE</poste>
+ <poste code="0210900">PAIERIE DEPARTEMENTALE DE LA COTE-D'OR</poste>
+ <poste code="0210001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE LA CÔTE D'OR</poste>
+ <poste code="0210080">TRESORERIE DIJON OPAC ET OPDHLM</poste>
+ <poste code="0220250">TRESORERIE DE DINAN VILLE ET BANLIEUE</poste>
+ <poste code="0350440">TRESORERIE DE DINARD</poste>
+ <poste code="0140490">TRESORERIE DIVES-SUR-MER</poste>
+ <poste code="1710000">TRESORERIE AMBASSADE DE FRANCE EN REPUBLIQUE DE DJIBOUTI</poste>
+ <poste code="0880150">TRESORERIE DOCELLES</poste>
+ <poste code="0350450">TRESORERIE DE DOL-DE-BRETAGNE</poste>
+ <poste code="0390310">TRESORERIE DOLE COLLEGIALE</poste>
+ <poste code="0390320">TRESORERIE DOLE MUNICIPALE</poste>
+ <poste code="0380120">TRESORERIE DOMENE</poste>
+ <poste code="0610120">TRESORERIE DE DOMFRONT</poste>
+ <poste code="0240090">TRESORERIE DOMME</poste>
+ <poste code="0880170">TRESORERIE DOMPAIRE-VAUBEXY</poste>
+ <poste code="0710190">TRESORERIE DE MATOUR</poste>
+ <poste code="0030050">TRESORERIE DOMPIERRE-SUR-BESBRE</poste>
+ <poste code="0770090">TRESORERIE DONNEMARIE-DONTILLY</poste>
+ <poste code="0580100">TRESORERIE DONZY-CHATEAUNEUF-VAL-DE-BARGIS</poste>
+ <poste code="0510340">TRESORERIE DE DORMANS</poste>
+ <poste code="0580110">TRESORERIE DORNES</poste>
+ <poste code="0593000">RECETTE DES FINANCES DOUAI</poste>
+ <poste code="0593040">TRESORERIE DE DOUAI</poste>
+ <poste code="0593050">TRESORERIE DOUAI MUNICIPALE</poste>
+ <poste code="0292040">TRESORERIE DOUARNENEZ</poste>
+ <poste code="0595060">TRESORERIE DOUCHY-LES-MINES</poste>
+ <poste code="0760130">TRESORERIE DOUDEVILLE</poste>
+ <poste code="0490510">TRESORERIE DOUE-LA-FONTAINE</poste>
+ <poste code="0520150">TRESORERIE DOULAINCOURT-SAUCOURT</poste>
+ <poste code="0550360">TRESORERIE DE DUN-SUR-MEUSE</poste>
+ <poste code="0520160">TRESORERIE DOULEVANT-LE-CHATEAU</poste>
+ <poste code="0800680">TRESORERIE DOULLENS</poste>
+ <poste code="0910090">TRESORERIE DOURDAN</poste>
+ <poste code="0810220">TRESORERIE DOURGNE</poste>
+ <poste code="0740150">TRESORERIE DOUVAINE-BONS-EN-CHABLAIS</poste>
+ <poste code="0140200">TRESORERIE DOUVRES-LA-DELIVRANDE</poste>
+ <poste code="0620650">TRESORERIE DOUVRIN</poste>
+ <poste code="0140500">TRESORERIE DOZULE</poste>
+ <poste code="0831070">TRESORERIE DE DRAGUIGNAN IMPOTS</poste>
+ <poste code="0831000">RECETTE DES FINANCES DRAGUIGNAN</poste>
+ <poste code="0831080">TRESORERIE DRAGUIGNAN MUNICIPALE</poste>
+ <poste code="0930080">TRESORERIE DRANCY</poste>
+ <poste code="0930090">TRESORERIE DRANCY MUNICIPALE</poste>
+ <poste code="0910100">TRESORERIE DRAVEIL</poste>
+ <poste code="0280360">TRESORERIE DE DREUX MUNICIPALE</poste>
+ <poste code="0280350">TRESORERIE DE DREUX ET PAYS DROUAIS</poste>
+ <poste code="0410240">TRESORERIE DE DROUE</poste>
+ <poste code="0671040">TRESORERIE DRULINGEN</poste>
+ <poste code="0671050">TRESORERIE DRUSENHEIM</poste>
+ <poste code="0500270">TRESORERIE DUCEY</poste>
+ <poste code="0760140">TRESORERIE DUCLAIR</poste>
+ <poste code="0230070">TRESORERIE DUN-LE-PALESTEL</poste>
+ <poste code="0180150">TRESORERIE DUN-SUR-AURON</poste>
+ <poste code="0594000">RECETTE DES FINANCES DUNKERQUE</poste>
+ <poste code="0594080">TRESORERIE DUNKERQUE MUNICIPALE ET COM.URB</poste>
+ <poste code="0594160">TRESORERIE DUNKERQUE ET. HOSP.</poste>
+ <poste code="0594070">TRESORERIE DE DUNKERQUE</poste>
+ <poste code="0470200">TRESORERIE DURAS</poste>
+ <poste code="0110420">TRESORERIE DURBAN-CORBIERES</poste>
+ <poste code="0490130">TRESORERIE DURTAL</poste>
+ <poste code="0950070">TRESORERIE EAUBONNE</poste>
+ <poste code="0320250">TRESORERIE MONTREAL</poste>
+ <poste code="0320090">TRESORERIE EAUZE</poste>
+ <poste code="0030200">TRESORERIE EBREUIL-BELLENAVES</poste>
+ <poste code="0700130">TRESORERIE ECHENOZ-LA-MELINE-ET-COLOMBIER</poste>
+ <poste code="0380130">TRESORERIE ECHIROLLES</poste>
+ <poste code="0720160">TRESORERIE ECOMMOY</poste>
+ <poste code="0270250">TRESORERIE ECOS ET TOURNY</poste>
+ <poste code="0610320">TRESORERIE D' ECOUCHE</poste>
+ <poste code="0951010">TRESORERIE ECOUEN</poste>
+ <poste code="0690050">TRESORERIE D' ECULLY</poste>
+ <poste code="0190070">TRESORERIE EGLETONS</poste>
+ <poste code="0540360">TRESORERIE EINVILLE-AU-JARD</poste>
+ <poste code="0760150">TRESORERIE D' ELBEUF</poste>
+ <poste code="0660070">TRESORERIE ELNE</poste>
+ <poste code="0560020">TRESORERIE ELVEN</poste>
+ <poste code="0050050">TRESORERIE D' EMBRUN-SAVINES</poste>
+ <poste code="0951020">TRESORERIE D' ENGHIEN-LES-BAINS</poste>
+ <poste code="0630600">TRESORERIE ENNEZAT</poste>
+ <poste code="0680070">TRESORERIE ENSISHEIM</poste>
+ <poste code="0120060">TRESORERIE D' ENTRAYGUES-SAINT-AMANS</poste>
+ <poste code="0760580">TRESORERIE ENVERMEU</poste>
+ <poste code="0710600">TRESORERIE D' EPINAC</poste>
+ <poste code="0880220">TRESORERIE D' HADOL-DARNIEULLES</poste>
+ <poste code="0880000">TRESORERIE GENERALE DES VOSGES</poste>
+ <poste code="0880190">TRESORERIE D' EPINAL-POINCARE</poste>
+ <poste code="0880490">TRESORERIE DES VOSGES-OPHLM VILLE D'EPINAL</poste>
+ <poste code="0880900">PAIERIE DEPARTEMENTALE DES VOSGES</poste>
+ <poste code="0880180">TRESORERIE D' EPINAL AUBERT</poste>
+ <poste code="0931050">TRESORERIE EPINAY-SUR-SEINE</poste>
+ <poste code="0781030">TRESORERIE EPONE</poste>
+ <poste code="0500430">TRESORERIE EQUEURDREVILLE-HAINNEVILLE</poste>
+ <poste code="0950100">TRESORERIE ERMONT</poste>
+ <poste code="0530120">TRESORERIE D' ERNEE</poste>
+ <poste code="0670120">TRESORERIE ERSTEIN</poste>
+ <poste code="0120070">TRESORERIE ESPALION</poste>
+ <poste code="0540030">TRESORERIE ESSEY-LES-NANCY</poste>
+ <poste code="0120080">TRESORERIE ESTAING</poste>
+ <poste code="0100150">TRESORERIE D' ESTISSAC</poste>
+ <poste code="0600480">TRESORERIE ESTREES-SAINT-DENIS</poste>
+ <poste code="0220050">TRESORERIE ETABLES-SUR-MER</poste>
+ <poste code="0550370">TRESORERIE ETAIN</poste>
+ <poste code="0910370">TRESORERIE D' ETAMPES</poste>
+ <poste code="0910380">TRESORERIE D' ETAMPES COLLECTIVITES</poste>
+ <poste code="0710620">TRESORERIE DE SAINT-LEGER-SOUS-BEUVRAY</poste>
+ <poste code="0622190">TRESORERIE ETAPLES</poste>
+ <poste code="0330720">TRESORERIE ETAULIERS</poste>
+ <poste code="0560260">TRESORERIE BELZ</poste>
+ <poste code="0270260">TRESORERIE ETREPAGNY</poste>
+ <poste code="0760590">TRESORERIE EU</poste>
+ <poste code="0230260">TRESORERIE D' EVAUX-LES-BAINS</poste>
+ <poste code="0740160">TRESORERIE EVIAN-LES-BAINS</poste>
+ <poste code="0270000">TRESORERIE GENERALE DE L' EURE</poste>
+ <poste code="0270060">TRESORERIE EVREUX MUNICIPALE</poste>
+ <poste code="0270420">TRESORERIE D' EVREUX ETABLIS HOSPITALIERS</poste>
+ <poste code="0270900">PAIERIE DEPARTEMENTALE DE L' EURE</poste>
+ <poste code="0270050">TRESORERIE EVREUX</poste>
+ <poste code="0270001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE L' EURE</poste>
+ <poste code="0530130">TRESORERIE D' EVRON</poste>
+ <poste code="0910000">TRESORERIE GENERALE DE L' ESSONNE</poste>
+ <poste code="0910360">TRESORERIE EVRY</poste>
+ <poste code="0910900">PAIERIE DEPARTEMENTALE DE L' ESSONNE</poste>
+ <poste code="9500000">PAIERIE GENERALE AUX ARMEES</poste>
+ <poste code="0910001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE L' ESSONNE</poste>
+ <poste code="0240120">TRESORERIE HAUTEFORT</poste>
+ <poste code="0240100">TRESORERIE D' EXCIDEUIL</poste>
+ <poste code="0132070">TRESORERIE MALLEMORT</poste>
+ <poste code="0132060">TRESORERIE EYGUIERES</poste>
+ <poste code="0190080">TRESORERIE EYGURANDE</poste>
+ <poste code="0240490">TRESORERIE EYMET</poste>
+ <poste code="0870100">TRESORERIE EYMOUTIERS</poste>
+ <poste code="0951060">TRESORERIE EZANVILLE</poste>
+ <poste code="0140230">TRESORERIE FALAISE</poste>
+ <poste code="0571050">TRESORERIE FAULQUEMONT</poste>
+ <poste code="0622290">TRESORERIE FAUQUEMBERGUES</poste>
+ <poste code="0762120">TRESORERIE FAUVILLE-EN-CAUX</poste>
+ <poste code="0740170">TRESORERIE FAVERGES</poste>
+ <poste code="0430100">TRESORERIE FAY-SUR-LIGNON</poste>
+ <poste code="0831090">TRESORERIE FAYENCE</poste>
+ <poste code="0762050">TRESORERIE FECAMP</poste>
+ <poste code="0762060">TRESORERIE FECAMP MUNICIPALE</poste>
+ <poste code="0230270">TRESORERIE DE FELLETIN - GENTIOUX PIGEROLLES</poste>
+ <poste code="0570170">TRESORERIE FENETRANGE</poste>
+ <poste code="0010130">TRESORERIE FERNEY-VOLTAIRE</poste>
+ <poste code="0681080">TRESORERIE FERRETTE</poste>
+ <poste code="0450360">TRESORERIE FERRIERES-EN GATINAIS</poste>
+ <poste code="0422190">TRESORERIE DE FEURS</poste>
+ <poste code="0460090">TRESORERIE FIGEAC</poste>
+ <poste code="0420030">TRESORERIE FIRMINY</poste>
+ <poste code="0512030">TRESORERIE DE FISMES</poste>
+ <poste code="0610340">TRESORERIE DE FLERS ET MESSEI</poste>
+ <poste code="0320110">TRESORERIE FLEURANCE</poste>
+ <poste code="0270270">TRESORERIE FLEURY-SUR-ANDELLE</poste>
+ <poste code="0800690">TRESORERIE FLIXECOURT</poste>
+ <poste code="0480070">TRESORERIE FLORAC-BARRE-DES-CEVENNES</poste>
+ <poste code="0570630">TRESORERIE FLORANGE</poste>
+ <poste code="0090000">TRESORERIE GENERALE DE L' ARIEGE</poste>
+ <poste code="0090070">TRESORERIE FOIX</poste>
+ <poste code="0090080">TRESORERIE FOIX BANLIEUE</poste>
+ <poste code="0090900">PAIERIE DEPARTEMENTALE DE L' ARIEGE</poste>
+ <poste code="0380410">TRESORERIE DE FONTAINE</poste>
+ <poste code="0210170">TRESORERIE FONTAINE-FRANCAISE</poste>
+ <poste code="0760700">TRESORERIE FONTAINE-LE-DUN</poste>
+ <poste code="0770340">TRESORERIE FONTAINEBLEAU MUNICIPALE</poste>
+ <poste code="0850210">TRESORERIE DE FONTENAY-LE-COMTE</poste>
+ <poste code="0941040">TRESORERIE DE FONTENAY-SOUS-BOIS</poste>
+ <poste code="0570180">TRESORERIE FONTOY</poste>
+ <poste code="0571070">TRESORERIE DE FORBACH PORTE DE FRANCE</poste>
+ <poste code="0040100">TRESORERIE FORCALQUIER</poste>
+ <poste code="0760710">TRESORERIE FORGES-LES-EAUX</poste>
+ <poste code="0600180">TRESORERIE DE FORMERIE-SONGEONS</poste>
+ <poste code="1030007">CENTRE REGIONAL DES PENSIONS DE LA MARTINIQUE</poste>
+ <poste code="1030008">CENTRE DE FORMATION DEPARTEMENTAL DE LA MARTINIQUE</poste>
+ <poste code="1030009">DEPARTEMENT INFORMATIQUE DE LA MARTINIQUE</poste>
+ <poste code="1030040">TRESORERIE FORT-DE-FRANCE CTRE HOSP.</poste>
+ <poste code="1030000">TRESORERIE GENERALE DE LA MARTINIQUE</poste>
+ <poste code="1030020">TRESORERIE FORT-DE-FRANCE EST-AMENDES</poste>
+ <poste code="1030030">TRESORERIE DE FORT-DE-FRANCE MUNICIPALE</poste>
+ <poste code="1030120">TRESORERIE DE FORT-DE-FRANCE OUEST ET BANLIEUE</poste>
+ <poste code="1030800">PAIERIE REGIONALE DE LA MARTINIQUE</poste>
+ <poste code="1030900">PAIERIE DEPARTEMENTALE DE LA MARTINIQUE</poste>
+ <poste code="0292050">TRESORERIE FOUESNANT</poste>
+ <poste code="0350110">TRESORERIE DE FOUGERES</poste>
+ <poste code="0350120">TRESORERIE DE FOUGERES COLLECTIVITÉS</poste>
+ <poste code="0700160">TRESORERIE FOUGEROLLES</poste>
+ <poste code="0595200">TRESORERIE FOURMIES</poste>
+ <poste code="0780290">TRESORERIE FOURQUEUX</poste>
+ <poste code="0880530">TRESORERIE FRAIZE</poste>
+ <poste code="0950290">TRESORERIE SAINT-LEU-FRANCONVILLE</poste>
+ <poste code="0740180">TRESORERIE FRANGY</poste>
+ <poste code="0831100">TRESORERIE FREJUS</poste>
+ <poste code="0720200">TRESORERIE FRESNAY-SUR-SARTHE</poste>
+ <poste code="0700170">TRESORERIE FRESNE-SAINT-MAMES-FRETIGNEY</poste>
+ <poste code="0940280">TRESORERIE DE FRESNES</poste>
+ <poste code="0550380">TRESORERIE FRESNES-EN-WOEVRE</poste>
+ <poste code="0620240">TRESORERIE D' AUXI-LE-CHATEAU-FREVENT</poste>
+ <poste code="0571080">TRESORERIE FREYMING-MERLEBACH</poste>
+ <poste code="0800600">TRESORERIE FRIVILLE-ESCARBOTIN</poste>
+ <poste code="0600190">TRESORERIE FROISSY</poste>
+ <poste code="0790200">TRESORERIE FRONTENAY-ROHAN-ROHAN</poste>
+ <poste code="0730160">TRESORERIE GRESY-SUR-ISERE</poste>
+ <poste code="0340100">TRESORERIE FRONTIGNAN</poste>
+ <poste code="0310110">TRESORERIE FRONTON</poste>
+ <poste code="0622200">TRESORERIE FRUGES</poste>
+ <poste code="0080190">TRESORERIE FUMAY</poste>
+ <poste code="0470210">TRESORERIE FUMEL</poste>
+ <poste code="0400020">TRESORERIE GABARRET</poste>
+ <poste code="0610350">TRESORERIE DE GACE</poste>
+ <poste code="0930110">TRESORERIE DE GAGNY</poste>
+ <poste code="0810090">TRESORERIE DE GAILLAC-CADALEN</poste>
+ <poste code="0270280">TRESORERIE GAILLON</poste>
+ <poste code="0800630">TRESORERIE GAMACHES</poste>
+ <poste code="0340110">TRESORERIE GANGES</poste>
+ <poste code="0030220">TRESORERIE GANNAT</poste>
+ <poste code="0050000">TRESORERIE GENERALE DES HAUTES-ALPES</poste>
+ <poste code="0050060">TRESORERIE DE GAP</poste>
+ <poste code="0050900">PAIERIE DEPARTEMENTALE DES HAUTES-ALPES</poste>
+ <poste code="0780080">TRESORERIE GARANCIERES</poste>
+ <poste code="0131060">TRESORERIE GARDANNE</poste>
+ <poste code="0781040">TRESORERIE GARGENVILLE</poste>
+ <poste code="0951100">TRESORERIE GARGES-LES-GONESSE</poste>
+ <poste code="0640090">TRESORERIE GARLIN</poste>
+ <poste code="0400030">TRESORERIE GEAUNE</poste>
+ <poste code="0170280">TRESORERIE GEMOZAC-TESSON</poste>
+ <poste code="0860070">TRESORERIE GENCAY</poste>
+ <poste code="0210180">TRESORERIE GENLIS</poste>
+ <poste code="0490340">TRESORERIE GENNES</poste>
+ <poste code="0920180">TRESORERIE GENNEVILLIERS</poste>
+ <poste code="0300470">TRESORERIE GENOLHAC</poste>
+ <poste code="0880540">TRESORERIE GERARDMER</poste>
+ <poste code="0210190">TRESORERIE GEVREY-CHAMBERTIN</poste>
+ <poste code="0010140">TRESORERIE GEX</poste>
+ <poste code="02B0190">TRESORERIE PRUNELLI-DI-FIUMORBO</poste>
+ <poste code="0450370">TRESORERIE GIEN</poste>
+ <poste code="0340120">TRESORERIE GIGNAC</poste>
+ <poste code="0320120">TRESORERIE GIMONT</poste>
+ <poste code="0110440">TRESORERIE GINESTAS</poste>
+ <poste code="0900060">TRESORERIE GIROMAGNY</poste>
+ <poste code="0270290">TRESORERIE GISORS</poste>
+ <poste code="0080200">TRESORERIE GIVET</poste>
+ <poste code="0690070">TRESORERIE DE GIVORS</poste>
+ <poste code="0710510">TRESORERIE GIVRY-MERCUREY</poste>
+ <poste code="0762070">TRESORERIE GODERVILLE</poste>
+ <poste code="0380140">TRESORERIE GONCELIN</poste>
+ <poste code="0160220">TRESORERIE GOND-PONTOUVRE</poste>
+ <poste code="0550120">TRESORERIE DE GONDRECOURT-LE-CHATEAU</poste>
+ <poste code="0951030">TRESORERIE GONESSE</poste>
+ <poste code="0840120">TRESORERIE GORDES</poste>
+ <poste code="0530150">TRESORERIE DE GORRON</poste>
+ <poste code="0310490">TRESORERIE DE GOURDAN-POLIGNAN</poste>
+ <poste code="0460100">TRESORERIE GOURDON</poste>
+ <poste code="0560220">TRESORERIE DE GOURIN-LE FAOUET</poste>
+ <poste code="0760720">TRESORERIE GOURNAY-EN-BRAY</poste>
+ <poste code="0230090">TRESORERIE GOUZON</poste>
+ <poste code="0180170">TRESORERIE DE GRACAY</poste>
+ <poste code="0460110">TRESORERIE GRAMAT</poste>
+ <poste code="1010050">TRESORERIE MARIE-GALANTE</poste>
+ <poste code="0760230">TRESORERIE GRAND-COURONNE</poste>
+ <poste code="0080210">TRESORERIE GRANDPRE</poste>
+ <poste code="0600200">TRESORERIE GRANDVILLIERS</poste>
+ <poste code="0880550">TRESORERIE GRANGES-SUR-VOLOGNE</poste>
+ <poste code="0500080">TRESORERIE GRANVILLE</poste>
+ <poste code="0061180">TRESORERIE GRASSE LA PAOUTE</poste>
+ <poste code="0061090">TRESORERIE GRASSE MUNICIPALE ET BANLIEUE</poste>
+ <poste code="0061000">RECETTE DES FINANCES GRASSE</poste>
+ <poste code="0810230">TRESORERIE GRAULHET</poste>
+ <poste code="0594090">TRESORERIE GRAVELINES</poste>
+ <poste code="0700190">TRESORERIE GRAY-AUTREY</poste>
+ <poste code="0310120">TRESORERIE GRENADE</poste>
+ <poste code="0400040">TRESORERIE GRENADE-SUR-L'ADOUR</poste>
+ <poste code="0380007">CENTRE REGIONAL DES PENSIONS DE L' ISERE</poste>
+ <poste code="0380008">CENTRE DE FORMATION DEPARTEMENTAL DE L' ISERE</poste>
+ <poste code="0380009">DEPARTEMENT INFORMATIQUE DE L' ISERE</poste>
+ <poste code="0380180">TRESORERIE DE GRENOBLE AMENDES & PROD DIVERS</poste>
+ <poste code="0380190">TRESORERIE GRENOBLE MUNICIPALE</poste>
+ <poste code="0380191">TRESORERIE DE GRENOBLE MUNICIPALE SERV. EAUX</poste>
+ <poste code="0380540">TRESORERIE DE L' OPAC GRENOBLOIS-ACTIS</poste>
+ <poste code="0380900">PAIERIE DEPARTEMENTALE DE L' ISERE</poste>
+ <poste code="0380001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE L' ISERE</poste>
+ <poste code="0380000">TRESORERIE GENERALE DE L' ISERE</poste>
+ <poste code="0380170">TRESORERIE DE GRENOBLE</poste>
+ <poste code="0260330">TRESORERIE GRIGNAN-TAULIGNAN</poste>
+ <poste code="0910340">TRESORERIE GRIGNY</poste>
+ <poste code="0831110">TRESORERIE GRIMAUD</poste>
+ <poste code="0820070">TRESORERIE GRISOLLES</poste>
+ <poste code="0571090">TRESORERIE GROSTENQUIN-MORHANGE</poste>
+ <poste code="0680080">TRESORERIE DE GUEBWILLER</poste>
+ <poste code="0440360">TRESORERIE DE GUEMENE-PENFAO</poste>
+ <poste code="0560230">TRESORERIE GUEMENE-SUR-SCORFF</poste>
+ <poste code="0560040">TRESORERIE GUER</poste>
+ <poste code="0441060">TRESORERIE GUERANDE</poste>
+ <poste code="0230000">TRESORERIE GENERALE DE LA CREUSE</poste>
+ <poste code="0230110">TRESORERIE GUERET</poste>
+ <poste code="0230180">TRESORERIE GUERET PIQUERELLE</poste>
+ <poste code="0230900">PAIERIE DEPARTEMENTALE DE LA CREUSE</poste>
+ <poste code="0580130">TRESORERIE GUERIGNY</poste>
+ <poste code="0710120">TRESORERIE GUEUGNON-ISSY-L'EVEQUE</poste>
+ <poste code="0350150">TRESORERIE GUICHEN</poste>
+ <poste code="0770130">TRESORERIE GUIGNES</poste>
+ <poste code="0020210">TRESORERIE GUIGNICOURT-NEUFCHATEL</poste>
+ <poste code="0060050">TRESORERIE DE GUILLAUMES</poste>
+ <poste code="0050080">TRESORERIE GUILLESTRE</poste>
+ <poste code="0622110">TRESORERIE GUINES</poste>
+ <poste code="0220340">TRESORERIE GUINGAMP</poste>
+ <poste code="0290120">TRESORERIE DE BREST BANLIEUE</poste>
+ <poste code="0020540">TRESORERIE GUISE</poste>
+ <poste code="0330660">TRESORERIE GUITRES-SAINT-DENIS-DE-PILE</poste>
+ <poste code="0700210">TRESORERIE GY</poste>
+ <poste code="0400050">TRESORERIE HAGETMAU</poste>
+ <poste code="0671060">TRESORERIE D' HAGUENAU</poste>
+ <poste code="0671070">TRESORERIE HAGUENAU MUNICIPALE</poste>
+ <poste code="0671000">RECETTE DES FINANCES D' HAGUENAU</poste>
+ <poste code="0800640">TRESORERIE HALLENCOURT-AIRAINES</poste>
+ <poste code="0590120">TRESORERIE HALLUIN</poste>
+ <poste code="0800540">TRESORERIE HAM-NESLE</poste>
+ <poste code="0762080">TRESORERIE HARFLEUR</poste>
+ <poste code="0540080">TRESORERIE D' HAROUE-VEZELISE</poste>
+ <poste code="0640400">TRESORERIE D' HASPARREN</poste>
+ <poste code="0671080">TRESORERIE HATTEN</poste>
+ <poste code="0590130">TRESORERIE DE LOOS-LES-WEPPES</poste>
+ <poste code="0260110">TRESORERIE LE GRAND-SERRE-MORAS</poste>
+ <poste code="0010150">TRESORERIE HAUTEVILLE-LOMPNES</poste>
+ <poste code="0595210">TRESORERIE HAUTMONT</poste>
+ <poste code="0570220">TRESORERIE HAYANGE</poste>
+ <poste code="0594180">TRESORERIE HAZEBROUCK</poste>
+ <poste code="0640390">TRESORERIE HENDAYE</poste>
+ <poste code="0620670">TRESORERIE D' HENIN-BEAUMONT</poste>
+ <poste code="0620680">TRESORERIE HENIN-BEAUMONT MUNICIPALE</poste>
+ <poste code="0560280">TRESORERIE HENNEBONT</poste>
+ <poste code="0441070">TRESORERIE HERBIGNAC</poste>
+ <poste code="0700220">TRESORERIE HERICOURT-ET-CHAMPEY</poste>
+ <poste code="0250390">TRESORERIE HERIMONCOURT</poste>
+ <poste code="0030230">TRESORERIE HERISSON</poste>
+ <poste code="0512050">TRESORERIE D' HERMONVILLE</poste>
+ <poste code="0140470">TRESORERIE HEROUVILLE-SAINT-CLAIR</poste>
+ <poste code="0620690">TRESORERIE HERSIN-COUPIGNY</poste>
+ <poste code="0622210">TRESORERIE D' HESDIN-LE-PARCQ</poste>
+ <poste code="0381040">TRESORERIE HEYRIEUX</poste>
+ <poste code="0681100">TRESORERIE HIRSINGUE</poste>
+ <poste code="0020670">TRESORERIE D' HIRSON</poste>
+ <poste code="0670180">TRESORERIE HOCHFELDEN</poste>
+ <poste code="0670200">TRESORERIE HOERDT</poste>
+ <poste code="0594100">TRESORERIE HONDSCHOOTE</poste>
+ <poste code="0140510">TRESORERIE HONFLEUR</poste>
+ <poste code="0800700">TRESORERIE HORNOY-LE-BOURG</poste>
+ <poste code="0620700">TRESORERIE HOUDAIN</poste>
+ <poste code="0781050">TRESORERIE DE HOUILLES</poste>
+ <poste code="0622220">TRESORERIE HUCQUELIERS</poste>
+ <poste code="0030240">TRESORERIE HURIEL-COURCAIS</poste>
+ <poste code="0830070">TRESORERIE HYERES MUNICIPALE</poste>
+ <poste code="0830060">TRESORERIE HYERES</poste>
+ <poste code="0640410">TRESORERIE IHOLDY</poste>
+ <poste code="0660090">TRESORERIE ILLE-SUR-TET</poste>
+ <poste code="0280220">TRESORERIE ILLIERS-COMBRAY</poste>
+ <poste code="0670220">TRESORERIE ILLKIRCH-GRAFFENSTADEN</poste>
+ <poste code="0671090">TRESORERIE INGWILLER</poste>
+ <poste code="0210210">TRESORERIE IS-SUR-TILLE</poste>
+ <poste code="0620710">TRESORERIE ISBERGUES</poste>
+ <poste code="0140270">TRESORERIE ISIGNY-SUR-MER</poste>
+ <poste code="0870350">TRESORERIE OPDHLM DE LA HAUTE-VIENNE</poste>
+ <poste code="0630140">TRESORERIE ISSOIRE</poste>
+ <poste code="0360170">TRESORERIE D' ISSOUDUN</poste>
+ <poste code="0920190">TRESORERIE D' ISSY-LES-MOULINEAUX</poste>
+ <poste code="0132140">TRESORERIE D' ISTRES</poste>
+ <poste code="0270080">TRESORERIE IVRY-LA-BATAILLE</poste>
+ <poste code="0940130">TRESORERIE IVRY-SUR-SEINE</poste>
+ <poste code="0940140">TRESORERIE IVRY-SUR-SEINE MUNICIPALE</poste>
+ <poste code="0280230">TRESORERIE JANVILLE</poste>
+ <poste code="0350170">TRESORERIE JANZE</poste>
+ <poste code="0450120">TRESORERIE JARGEAU</poste>
+ <poste code="0160240">TRESORERIE JARNAC</poste>
+ <poste code="0540420">TRESORERIE DE JARNY-CHAMBLEY</poste>
+ <poste code="0540410">TRESORERIE DE CONFLANS-EN-JARNISY</poste>
+ <poste code="0320150">TRESORERIE JEGUN</poste>
+ <poste code="0595220">TRESORERIE JEUMONT</poste>
+ <poste code="0540430">TRESORERIE DE JOEUF</poste>
+ <poste code="0890230">TRESORERIE JOIGNY</poste>
+ <poste code="0520180">TRESORERIE JOINVILLE ET POISSONS</poste>
+ <poste code="0170290">TRESORERIE JONZAC</poste>
+ <poste code="0560050">TRESORERIE JOSSELIN</poste>
+ <poste code="0370390">TRESORERIE DE TOURS BANLIEUE OUEST</poste>
+ <poste code="0070140">TRESORERIE JOYEUSE</poste>
+ <poste code="0220280">TRESORERIE JUGON-LES-LACS</poste>
+ <poste code="0190270">TRESORERIE DE JUILLAC</poste>
+ <poste code="0630160">TRESORERIE JUMEAUX</poste>
+ <poste code="0080220">TRESORERIE JUNIVILLE</poste>
+ <poste code="0700230">TRESORERIE DE JUSSEY-VITREY</poste>
+ <poste code="0911050">TRESORERIE JUVISY-SUR-ORGE</poste>
+ <poste code="0680090">TRESORERIE KAYSERSBERG</poste>
+ <poste code="1620020">TRESORERIE DE LA PROVINCE NORD</poste>
+ <poste code="1020040">TRESORERIE KOUROU</poste>
+ <poste code="0610160">TRESORERIE DE L'AIGLE</poste>
+ <poste code="0690010">TRESORERIE L'ARBRESLE</poste>
+ <poste code="0050010">TRESORERIE L'ARGENTIERE-LA-BESSEE</poste>
+ <poste code="0060040">TRESORERIE L'ESCARENE</poste>
+ <poste code="0940120">TRESORERIE L'HAY-LES-ROSES</poste>
+ <poste code="0370150">TRESORERIE L'ILE-BOUCHARD</poste>
+ <poste code="0850310">TRESORERIE DE L'ILE-D'YEU</poste>
+ <poste code="02B0100">TRESORERIE L'ILE-ROUSSE</poste>
+ <poste code="0950120">TRESORERIE L'ISLE-ADAM</poste>
+ <poste code="0310500">TRESORERIE L'ISLE-EN-DODON</poste>
+ <poste code="0860080">TRESORERIE L'ISLE JOURDAIN</poste>
+ <poste code="0320140">TRESORERIE L'ISLE-JOURDAIN</poste>
+ <poste code="0840130">TRESORERIE DE L'ISLE-SUR-LA-SORGUE</poste>
+ <poste code="0250400">TRESORERIE DE L'ISLE-SUR-LE-DOUBS</poste>
+ <poste code="0890220">TRESORERIE L'ISLE-SUR-SEREIN</poste>
+ <poste code="0310320">TRESORERIE DE L'UNION</poste>
+ <poste code="0650060">TRESORERIE LA BARTHE-DE-NESTE</poste>
+ <poste code="0590070">TRESORERIE DE LA BASSEE</poste>
+ <poste code="0090030">TRESORERIE LA BASTIDE-DE-SEROU</poste>
+ <poste code="0441040">TRESORERIE DE LA BAULE-ESCOUBLAC</poste>
+ <poste code="0480040">TRESORERIE LA CANOURGUE-ST-GERMAIN-DU-TEIL</poste>
+ <poste code="0020660">TRESORERIE LA CAPELLE</poste>
+ <poste code="0780410">TRESORERIE LA CELLE-SAINT-CLOUD</poste>
+ <poste code="0430070">TRESORERIE LA CHAISE-DIEU</poste>
+ <poste code="0730110">TRESORERIE LA CHAMBRE</poste>
+ <poste code="0710030">TRESORERIE LA CHAPELLE-DE-GUINCHAY</poste>
+ <poste code="0260060">TRESORERIE LA CHAPELLE-EN-VERCORS</poste>
+ <poste code="0770310">TRESORERIE LA CHAPELLE-LA REINE-LARCHANT</poste>
+ <poste code="0580020">TRESORERIE LA CHARITE-SUR-LOIRE</poste>
+ <poste code="0850200">TRESORERIE DU PAYS DE LA CHATAIGNERAIE</poste>
+ <poste code="0360120">TRESORERIE DE LA CHATRE</poste>
+ <poste code="0220020">TRESORERIE LA CHEZE</poste>
+ <poste code="0130030">TRESORERIE LA CIOTAT</poste>
+ <poste code="0710060">TRESORERIE LA CLAYETTE</poste>
+ <poste code="0381020">TRESORERIE LA COTE-SAINT-ANDRE</poste>
+ <poste code="0931040">TRESORERIE LA COURNEUVE MUNICIPALE</poste>
+ <poste code="0160200">TRESORERIE LA COURONNE</poste>
+ <poste code="0790060">TRESORERIE LA CRECHE</poste>
+ <poste code="0020130">TRESORERIE LA FERE</poste>
+ <poste code="0910120">TRESORERIE LA FERTE-ALAIS</poste>
+ <poste code="0720170">TRESORERIE LA FERTE-BERNARD</poste>
+ <poste code="0610330">TRESORERIE DE LA FERTE-FRENEL</poste>
+ <poste code="0770100">TRESORERIE LA-FERTE-GAUCHER-CHOISY-EN-BRIE</poste>
+ <poste code="0772100">TRESORERIE LA FERTE-SOUS-JOUARRE</poste>
+ <poste code="0610130">TRESORERIE LA FERTE-MACE</poste>
+ <poste code="0450090">TRESORERIE LA FERTE-SAINT-AUBIN</poste>
+ <poste code="0760690">TRESORERIE LA FEUILLIE</poste>
+ <poste code="0720180">TRESORERIE DE LA FLECHE</poste>
+ <poste code="1620070">TRESORERIE DE LA FOA</poste>
+ <poste code="0240510">TRESORERIE DE LA FORCE</poste>
+ <poste code="0560030">TRESORERIE LA GACILLY</poste>
+ <poste code="0920170">TRESORERIE LA GARENNE-COLOMBES</poste>
+ <poste code="0300480">TRESORERIE DE LA GRAND-COMBE</poste>
+ <poste code="0350140">TRESORERIE LA GUERCHE-DE-BRETAGNE</poste>
+ <poste code="0180180">TRESORERIE LA GUERCHE-SUR-L'AUBOIS</poste>
+ <poste code="0710130">TRESORERIE DE LA GUICHE</poste>
+ <poste code="0500090">TRESORERIE LA HAYE-DU-PUITS</poste>
+ <poste code="0500280">TRESORERIE LA HAYE-PESNEL</poste>
+ <poste code="0170040">TRESORERIE LA JARRIE</poste>
+ <poste code="0280240">TRESORERIE LA LOUPE</poste>
+ <poste code="0580160">TRESORERIE LA MACHINE</poste>
+ <poste code="0590270">TRESORERIE LA MADELEINE</poste>
+ <poste code="0850320">TRESORERIE LA MOTHE-ACHARD</poste>
+ <poste code="0790270">TRESORERIE LA MOTHE-SAINT-HERAY</poste>
+ <poste code="0040160">TRESORERIE LA MOTTE.TURRIERS</poste>
+ <poste code="0730390">TRESORERIE DE LA MOTTE SERVOLEX</poste>
+ <poste code="0380290">TRESORERIE LA MURE</poste>
+ <poste code="0671140">TRESORERIE LA PETITE-PIERRE</poste>
+ <poste code="02B0180">TRESORERIE LA PORTA</poste>
+ <poste code="0330730">TRESORERIE LA REOLE</poste>
+ <poste code="0560120">TRESORERIE DE LA ROCHE-MUZILLAC</poste>
+ <poste code="0190120">TRESORERIE LA ROCHE-CANILLAC</poste>
+ <poste code="0740210">TRESORERIE LA ROCHE-SUR-FORON</poste>
+ <poste code="0850010">TRESORERIE LA ROCHE CARDIJN</poste>
+ <poste code="0850000">TRESORERIE GENERALE DE LA VENDEE</poste>
+ <poste code="0850140">TRESORERIE PAYS YONNAIS ET ESSART MUNICIPAL</poste>
+ <poste code="0850180">TRESORERIE OPDHLM DE LA VENDEE</poste>
+ <poste code="0850900">PAIERIE DEPARTEMENTALE DE LA VENDEE</poste>
+ <poste code="0850170">TRESORERIE LA ROCHE-SUR-YON HOPITAUX</poste>
+ <poste code="0710270">TRESORERIE DE LA ROCHE-VINEUSE</poste>
+ <poste code="0160350">TRESORERIE LA ROCHEFOUCAULD</poste>
+ <poste code="0170000">TRESORERIE GENERALE DE LA CHARENTE-MARITIME</poste>
+ <poste code="0170090">TRESORERIE LA ROCHELLE</poste>
+ <poste code="0170110">TRESORERIE LA ROCHELLE MUNICIPALE</poste>
+ <poste code="0170160">TRESORERIE LA ROCHELLE ETS HOSP.</poste>
+ <poste code="0170900">PAIERIE DEPARTEMENTALE DE LA CHARENTE-MARITIME</poste>
+ <poste code="0730260">TRESORERIE LA ROCHETTE</poste>
+ <poste code="0490480">TRESORERIE LA ROMAGNE-MONTFAUCON</poste>
+ <poste code="0131130">TRESORERIE LA ROQUE-D'ANTHERON</poste>
+ <poste code="0830120">TRESORERIE LA ROQUEBRUSSANNE</poste>
+ <poste code="0340440">TRESORERIE LA SALVETAT-SUR-AGOUT</poste>
+ <poste code="0270390">TRESORERIE LA SAUSSAYE</poste>
+ <poste code="0830140">TRESORERIE LA SEYNE-SUR-MER</poste>
+ <poste code="0830150">TRESORERIE LA SEYNE-SUR-MER MUNICIPALE</poste>
+ <poste code="0230170">TRESORERIE LA SOUTERRAINE</poste>
+ <poste code="0720500">TRESORERIE DE LA SUZE-SUR-SARTHE</poste>
+ <poste code="0381230">TRESORERIE LA TOUR-DU-PIN</poste>
+ <poste code="0170390">TRESORERIE LA TREMBLADE</poste>
+ <poste code="0860220">TRESORERIE LA TRIMOUILLE</poste>
+ <poste code="1030100">TRESORERIE TRINITE</poste>
+ <poste code="0380200">TRESORERIE GRENOBLE CHU</poste>
+ <poste code="0830210">TRESORERIE TOULON-LA SEYNE-SUR-MER CHI</poste>
+ <poste code="0830220">TRESORERIE LA VALETTE-DU-VAR</poste>
+ <poste code="0381120">TRESORERIE LA VERPILLIERE</poste>
+ <poste code="0070410">TRESORERIE DE LA VOULTE-SUR-RHONE</poste>
+ <poste code="0460120">TRESORERIE DE LABASTIDE-MURAT</poste>
+ <poste code="0820080">TRESORERIE LABASTIDE-SAINT-PIERRE</poste>
+ <poste code="0400060">TRESORERIE LABRIT</poste>
+ <poste code="0810240">TRESORERIE LABRUGUIERE</poste>
+ <poste code="0460130">TRESORERIE DE LACAPELLE ET LIVERNON</poste>
+ <poste code="0810250">TRESORERIE LACAUNE</poste>
+ <poste code="0900080">TRESORERIE LACHAPELLE-SOUS-ROUGEMONT</poste>
+ <poste code="0600510">TRESORERIE LA CROIX-SAINT-OUEN</poste>
+ <poste code="0820090">TRESORERIE LAFRANCAISE-MOLIERES</poste>
+ <poste code="0010170">TRESORERIE LAGNIEU</poste>
+ <poste code="0772110">TRESORERIE LAGNY-SUR-MARNE</poste>
+ <poste code="0110220">TRESORERIE LAGRASSE</poste>
+ <poste code="0190140">TRESORERIE DE TULLE MONTANA</poste>
+ <poste code="0120090">TRESORERIE LAGUIOLE</poste>
+ <poste code="0210220">TRESORERIE LAIGNES</poste>
+ <poste code="0460140">TRESORERIE LALBENQUE</poste>
+ <poste code="0240520">TRESORERIE DE LALINDE</poste>
+ <poste code="0340420">TRESORERIE DE LAMALOU-BAINS-ST-GERVAIS-S-MARE</poste>
+ <poste code="0880250">TRESORERIE LAMARCHE-MARTIGNY-LES-BAINS</poste>
+ <poste code="0070150">TRESORERIE DE LAMASTRE</poste>
+ <poste code="0220070">TRESORERIE LAMBALLE</poste>
+ <poste code="0590520">TRESORERIE LAMBERSART</poste>
+ <poste code="0131080">TRESORERIE LAMBESC</poste>
+ <poste code="0410090">TRESORERIE LAMOTTE-BEUVRON</poste>
+ <poste code="0690510">TRESORERIE LAMURE-SUR-AZERGUES</poste>
+ <poste code="0290130">TRESORERIE LANDERNEAU</poste>
+ <poste code="0290230">TRESORERIE DE LANDIVISIAU</poste>
+ <poste code="0595230">TRESORERIE LANDRECIES</poste>
+ <poste code="0430120">TRESORERIE LANGEAC</poste>
+ <poste code="0370170">TRESORERIE LANGEAIS</poste>
+ <poste code="0480100">TRESORERIE LANGOGNE</poste>
+ <poste code="0330350">TRESORERIE LANGON-SAINT-MACAIRE</poste>
+ <poste code="0520340">TRESORERIE LANGRES</poste>
+ <poste code="0290240">TRESORERIE LANMEUR</poste>
+ <poste code="0650140">TRESORERIE LANNEMEZAN</poste>
+ <poste code="0650150">TRESORERIE LANNEMEZAN CTRE HOSP. SPEC.</poste>
+ <poste code="0290140">TRESORERIE LANNILIS</poste>
+ <poste code="0220350">TRESORERIE LANNION</poste>
+ <poste code="0240140">TRESORERIE DE LANOUAILLE</poste>
+ <poste code="0730170">TRESORERIE LANSLEBOURG-MONT-CENIS</poste>
+ <poste code="0220450">TRESORERIE DE LANVOLLON-PLOUHA</poste>
+ <poste code="0020000">TRESORERIE GENERALE DE L' AISNE</poste>
+ <poste code="0020150">TRESORERIE DE LAON</poste>
+ <poste code="0020160">TRESORERIE DE LAON MUNICIPALE ET BANLIEUE</poste>
+ <poste code="0020170">TRESORERIE LAON CENTRE HOSPITALIER</poste>
+ <poste code="0020900">PAIERIE DEPARTEMENTALE DE L' AISNE</poste>
+ <poste code="0020001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE L' AISNE</poste>
+ <poste code="0030260">TRESORERIE LAPALISSE</poste>
+ <poste code="0190090">TRESORERIE LAPLEAU</poste>
+ <poste code="0680100">TRESORERIE LAPOUTROIE</poste>
+ <poste code="0050090">TRESORERIE LARAGNE-ORPIERRE</poste>
+ <poste code="0190280">TRESORERIE LARCHE</poste>
+ <poste code="0070160">TRESORERIE LARGENTIERE</poste>
+ <poste code="0090230">TRESORERIE LAROQUE-D'OLMES</poste>
+ <poste code="0470060">TRESORERIE LAROQUE-TIMBAUT-BEAUVILLE</poste>
+ <poste code="0150100">TRESORERIE LAROQUEBROU</poste>
+ <poste code="0640100">TRESORERIE LARUNS</poste>
+ <poste code="0300110">TRESORERIE LASALLE</poste>
+ <poste code="0530190">TRESORERIE LASSAY-LES-CHATEAUX</poste>
+ <poste code="0600490">TRESORERIE LASSIGNY</poste>
+ <poste code="0460150">TRESORERIE LATRONQUIERE-SOUSCEYRAC</poste>
+ <poste code="0671100">TRESORERIE LAUTERBOURG</poste>
+ <poste code="0810260">TRESORERIE LAUTREC</poste>
+ <poste code="0820100">TRESORERIE LAUZERTE</poste>
+ <poste code="0530000">TRESORERIE GENERALE DE LA MAYENNE</poste>
+ <poste code="0530200">TRESORERIE DE LAVAL MURAT</poste>
+ <poste code="0530210">TRESORERIE LAVAL CENTRE HOSPITALIER</poste>
+ <poste code="0530220">TRESORERIE PAYS DE LAVAL</poste>
+ <poste code="0530900">PAIERIE DEPARTEMENTALE DE LA MAYENNE</poste>
+ <poste code="0470070">TRESORERIE LAVARDAC</poste>
+ <poste code="0810270">TRESORERIE LAVAUR</poste>
+ <poste code="0090090">TRESORERIE LAVELANET-BELESTA</poste>
+ <poste code="0620720">TRESORERIE LAVENTIE</poste>
+ <poste code="0540160">TRESORERIE NANCY CTRE PSYCHO. DPTAL</poste>
+ <poste code="0061030">TRESORERIE LE BAR-SUR-LOUP</poste>
+ <poste code="0830010">TRESORERIE LE BEAUSSET</poste>
+ <poste code="0140060">TRESORERIE LE BENY-BOCAGE</poste>
+ <poste code="0360050">TRESORERIE DE LE BLANC</poste>
+ <poste code="0930050">TRESORERIE LE BLANC-MESNIL</poste>
+ <poste code="0480030">TRESORERIE LE BLEYMARD</poste>
+ <poste code="0690490">TRESORERIE LE BOIS-D'OINGT</poste>
+ <poste code="0660040">TRESORERIE LE BOULOU</poste>
+ <poste code="0380050">TRESORERIE LE BOURG-D'OISANS</poste>
+ <poste code="0530050">TRESORERIE DE LE BOURGNEUF-LA-FORET</poste>
+ <poste code="0330210">TRESORERIE LE BOUSCAT</poste>
+ <poste code="0240040">TRESORERIE LE BUGUE</poste>
+ <poste code="0061140">TRESORERIE LE CANNET</poste>
+ <poste code="0593130">TRESORERIE LE CATEAU-CATILLON</poste>
+ <poste code="0020530">TRESORERIE LE CATELET</poste>
+ <poste code="0420020">TRESORERIE DU CHAMBON FEUGEROLLES</poste>
+ <poste code="0170170">TRESORERIE LE CHATEAU-D'OLERON</poste>
+ <poste code="0730130">TRESORERIE LE CHATELARD</poste>
+ <poste code="0770040">TRESORERIE LE CHATELET-EN-BRIE</poste>
+ <poste code="0780380">TRESORERIE VERSAILLES CENTRE HOSPITALIER</poste>
+ <poste code="0780420">TRESORERIE LE CHESNAY</poste>
+ <poste code="0080140">TRESORERIE LE CHESNE</poste>
+ <poste code="0070100">TRESORERIE LE CHEYLARD</poste>
+ <poste code="0480060">TRESORERIE LE COLLET-DE-DEZE</poste>
+ <poste code="0422030">TRESORERIE LE COTEAU</poste>
+ <poste code="0710390">TRESORERIE LE CREUSOT</poste>
+ <poste code="0030190">TRESORERIE LE DONJON</poste>
+ <poste code="0870080">TRESORERIE LE DORAT</poste>
+ <poste code="0290110">TRESORERIE LE FAOU</poste>
+ <poste code="0560210">TRESORERIE DE LE FAOUET</poste>
+ <poste code="0090220">TRESORERIE LE FOSSAT</poste>
+ <poste code="1030050">TRESORERIE FRANCOIS</poste>
+ <poste code="0381180">TRESORERIE LE GRAND-LEMPS ET BIOL</poste>
+ <poste code="0720230">TRESORERIE LE GRAND-LUCE-LA CHARTRE</poste>
+ <poste code="0760500">TRESORERIE LE GRAND-QUEVILLY</poste>
+ <poste code="0762000">RECETTE DES FINANCES LE HAVRE</poste>
+ <poste code="0762090">TRESORERIE LE HAVRE IMPÔTS</poste>
+ <poste code="0762130">TRESORERIE LE HAVRE MUNICIPALE</poste>
+ <poste code="0762140">TRESORERIE LE HAVRE CENTRE HOSPITALIER</poste>
+ <poste code="0940100">TRESORERIE DU NORD VAL-DE-BIEVRE</poste>
+ <poste code="1030060">TRESORERIE LAMENTIN</poste>
+ <poste code="0830090">TRESORERIE LE LAVANDOU</poste>
+ <poste code="0490160">TRESORERIE LE LION-D'ANGERS</poste>
+ <poste code="0440100">TRESORERIE LE LOROUX-BOTTEREAU</poste>
+ <poste code="0490170">TRESORERIE LE LOUROUX-BECONNAIS</poste>
+ <poste code="0831130">TRESORERIE LE LUC</poste>
+ <poste code="0720260">TRESORERIE LE LUDE</poste>
+ <poste code="0720000">TRESORERIE GENERALE DE LA SARTHE</poste>
+ <poste code="0720290">TRESORERIE LE MANS FLORE</poste>
+ <poste code="0720310">TRESORERIE LE MANS PÉRIPHÉRIE ET AMENDES</poste>
+ <poste code="0720320">TRESORERIE AGGLOMÉRATION MANCELLE ET CHS</poste>
+ <poste code="0720340">TRESORERIE LE MANS CENTRE HOSPITALIER</poste>
+ <poste code="0720900">PAIERIE DEPARTEMENTALE DE LA SARTHE</poste>
+ <poste code="0720330">TRESORERIE LE MANS VILLE</poste>
+ <poste code="1030070">TRESORERIE MARIN</poste>
+ <poste code="0090240">TRESORERIE LE MAS-D'AZIL</poste>
+ <poste code="0030280">TRESORERIE LE-MAYET-DE-MONTAGNE</poste>
+ <poste code="0610360">TRESORERIE LE MERLERAULT</poste>
+ <poste code="0760280">TRESORERIE LE MESNIL-ESNARD</poste>
+ <poste code="0140290">TRESORERIE LE MOLAY-LITTRY</poste>
+ <poste code="0430150">TRESORERIE LE MONASTIER-SUR-GAZEILLE</poste>
+ <poste code="0050100">TRESORERIE MONETIER-LES-BAINS ET LA GRAVE</poste>
+ <poste code="0630190">TRESORERIE LE MONT-DORE LA TOUR D' AUVERGNE</poste>
+ <poste code="0030070">TRESORERIE LE MONTET</poste>
+ <poste code="1010070">TRESORERIE LE MOULE</poste>
+ <poste code="0831140">TRESORERIE LE MUY</poste>
+ <poste code="0270330">TRESORERIE LE NEUBOURG</poste>
+ <poste code="0020560">TRESORERIE LE NOUVION-EN-THIERACHE</poste>
+ <poste code="0560310">TRESORERIE LE PALAIS</poste>
+ <poste code="0941060">TRESORERIE LE PERREUX-SUR-MARNE</poste>
+ <poste code="0760320">TRESORERIE LE PETIT-QUEVILLY</poste>
+ <poste code="0850120">TRESORERIE LE POIRE-SUR-VIE</poste>
+ <poste code="0730250">TRESORERIE LE PONT-DE-BEAUVOISIN</poste>
+ <poste code="0381210">TRESORERIE LE-PONT-DE-BEAUVOISIN</poste>
+ <poste code="1040010">TRESORERIE LE PORT</poste>
+ <poste code="0430000">TRESORERIE GENERALE DE LA HAUTE-LOIRE</poste>
+ <poste code="0430230">TRESORERIE LE PUY VILLE</poste>
+ <poste code="0430220">TRESORERIE LE PUY SAINT-LOUIS</poste>
+ <poste code="0430300">TRESORERIE DE PUY SAINT-JEAN</poste>
+ <poste code="0430900">PAIERIE DEPARTEMENTALE DE LA HAUTE-LOIRE</poste>
+ <poste code="0430001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE LA HAUTE LOIRE</poste>
+ <poste code="0595270">TRESORERIE LE QUESNOY</poste>
+ <poste code="0930210">TRESORERIE DU RAINCY MUNICIPALE</poste>
+ <poste code="0250440">TRESORERIE LE RUSSEY</poste>
+ <poste code="1040110">TRESORERIE LE TAMPON</poste>
+ <poste code="0070310">TRESORERIE DE LE TEIL-ROCHEMAURE</poste>
+ <poste code="0610270">TRESORERIE DE LE THEIL-SUR-HUISNE ET NOCE</poste>
+ <poste code="0880410">TRESORERIE LE THILLOT</poste>
+ <poste code="0622240">TRESORERIE LE TOUQUET-PARIS-PLAGE</poste>
+ <poste code="0380430">TRESORERIE LE TOUVET</poste>
+ <poste code="0760660">TRESORERIE LE TREPORT</poste>
+ <poste code="0780390">TRESORERIE LE VESINET</poste>
+ <poste code="0300390">TRESORERIE LE VIGAN</poste>
+ <poste code="0320160">TRESORERIE LECTOURE</poste>
+ <poste code="0300490">TRESORERIE LEDIGNAN</poste>
+ <poste code="0620730">TRESORERIE LEFOREST</poste>
+ <poste code="0640110">TRESORERIE LEMBEYE</poste>
+ <poste code="0860320">TRESORERIE LENCLOITRE</poste>
+ <poste code="0620750">TRESORERIE LENS MUNICIPALE</poste>
+ <poste code="0620740">TRESORERIE DE LENS</poste>
+ <poste code="0620760">TRESORERIE LENS CENTRE HOSPITALIER</poste>
+ <poste code="0620001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DU PAS DE CALAIS</poste>
+ <poste code="0381160">TRESORERIE LES ABRETS</poste>
+ <poste code="1010008">CENTRE DE FORMATION DEPARTEMENTAL DES ANTILLES-GUYANE</poste>
+ <poste code="1010010">TRESORERIE LES ABYMES-ET-LE-GOSIER</poste>
+ <poste code="0180010">TRESORERIE LES AIX-D'ANGILLON</poste>
+ <poste code="0270160">TRESORERIE LES ANDELYS</poste>
+ <poste code="0381170">TRESORERIE LES AVENIERES</poste>
+ <poste code="0730140">TRESORERIE LES ECHELLES</poste>
+ <poste code="0850070">TRESORERIE LES HERBIERS-MOUCHAMPS</poste>
+ <poste code="0630180">TRESORERIE LES MARTRES-DE-VEYRE</poste>
+ <poste code="0340160">TRESORERIE LES MATELLES</poste>
+ <poste code="0040140">TRESORERIE LES MEES</poste>
+ <poste code="0781130">TRESORERIE LES MUREAUX</poste>
+ <poste code="0131110">TRESORERIE LES PENNES-MIRABEAU</poste>
+ <poste code="0500450">TRESORERIE LES PIEUX</poste>
+ <poste code="0490190">TRESORERIE LES PONTS-DE-CE</poste>
+ <poste code="0850360">TRESORERIE CÔTE DE LUMIERE</poste>
+ <poste code="0850350">TRESORERIE DES SABLES D'OLONNE</poste>
+ <poste code="1030110">TRESORERIE TROIS-ILETS</poste>
+ <poste code="0860380">TRESORERIE LES TROIS-MOUTIERS</poste>
+ <poste code="0911060">TRESORERIE LES ULIS</poste>
+ <poste code="0070370">TRESORERIE LES VANS</poste>
+ <poste code="0640120">TRESORERIE DE LESCAR RIVES DU GAVE</poste>
+ <poste code="0290150">TRESORERIE LESNEVEN</poste>
+ <poste code="0330360">TRESORERIE LESPARRE-MEDOC</poste>
+ <poste code="0500100">TRESORERIE LESSAY</poste>
+ <poste code="0110450">TRESORERIE LEUCATE</poste>
+ <poste code="0920210">TRESORERIE LEVALLOIS-PERRET MUNICIPALE</poste>
+ <poste code="0920410">TRESORERIE OPDHLM DES HAUTS-DE-SEINE</poste>
+ <poste code="0920200">TRESORERIE LEVALLOIS-PERRET</poste>
+ <poste code="0060060">TRESORERIE LEVENS</poste>
+ <poste code="02A0070">TRESORERIE LEVIE</poste>
+ <poste code="0250290">TRESORERIE LEVIER</poste>
+ <poste code="0360180">TRESORERIE LEVROUX</poste>
+ <poste code="0220360">TRESORERIE LEZARDRIEUX</poste>
+ <poste code="0790210">TRESORERIE LEZAY</poste>
+ <poste code="0110460">TRESORERIE LEZIGNAN-CORBIERES</poste>
+ <poste code="0630530">TRESORERIE LEZOUX</poste>
+ <poste code="0600560">TRESORERIE LIANCOURT</poste>
+ <poste code="0330650">TRESORERIE DE LIBOURNE-FRONSAC-VAYRES</poste>
+ <poste code="0330770">TRESORERIE LIBOURNE MUNICIPALE</poste>
+ <poste code="0330771">TRESORERIE DE LIBOURNE MUNICIPALE HOP. BOULIN</poste>
+ <poste code="1320000">TRESORERIE AMBASSADE DE FRANCE AU GABON</poste>
+ <poste code="0622120">TRESORERIE LICQUES</poste>
+ <poste code="0020180">TRESORERIE LIESSE</poste>
+ <poste code="0770250">TRESORERIE DE SENART GESTION PUBLIQUE LOCALE</poste>
+ <poste code="0770270">TRESORERIE DE SENART</poste>
+ <poste code="0620770">TRESORERIE LIEVIN</poste>
+ <poste code="0880270">TRESORERIE LIFFOL-LE-GRAND</poste>
+ <poste code="0350180">TRESORERIE LIFFRE</poste>
+ <poste code="0180220">TRESORERIE DE LIGNIERES</poste>
+ <poste code="0550150">TRESORERIE DE LIGNY-EN-BARROIS</poste>
+ <poste code="0370190">TRESORERIE LIGUEIL</poste>
+ <poste code="0590000">TRESORERIE GENERALE DU NORD</poste>
+ <poste code="0590007">CENTRE REGIONAL DES PENSIONS DU NORD</poste>
+ <poste code="0590008">CENTRE DE FORMATION DEPARTEMENTAL DU NORD</poste>
+ <poste code="0590009">DEPARTEMENT INFORMATIQUE DU NORD</poste>
+ <poste code="0590240">TRESORERIE LILLE MUNICIPALE</poste>
+ <poste code="0590250">RECETTE DES FINANCES DE LILLE CHU</poste>
+ <poste code="0590530">TRESORERIE LILLE COMMUNAUTE URBAINE</poste>
+ <poste code="0590800">PAIERIE REGIONALE DU NORD-PAS-DE-CALAIS</poste>
+ <poste code="0590900">PAIERIE DEPARTEMENTALE DU NORD</poste>
+ <poste code="0590006">CENTRE NATIONAL DE GESTION DES CONCOURS DE LILLE (CONCOURS)</poste>
+ <poste code="0590005">CPS CENTRE PRÉLÈVEMENT SERVICE</poste>
+ <poste code="0590180">TRESORERIE DU GRAND LILLE</poste>
+ <poste code="0599000">RECETTE DES FINANCES DE LILLE</poste>
+ <poste code="0590230">TRESORERIE LILLE AMENDES</poste>
+ <poste code="0590001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DU NORD</poste>
+ <poste code="0590004">CE CENTRE ENCAISSEMENT LILLE</poste>
+ <poste code="0762160">TRESORERIE LILLEBONNE</poste>
+ <poste code="0620780">TRESORERIE LILLERS</poste>
+ <poste code="0781060">TRESORERIE LIMAY</poste>
+ <poste code="0870000">TRESORERIE GENERALE DE LA HAUTE-VIENNE</poste>
+ <poste code="0870009">DEPARTEMENT INFORMATIQUE DE LA HAUTE-VIENNE</poste>
+ <poste code="0870110">TRESORERIE DE LIMOGES 1ERE DIVISION</poste>
+ <poste code="0870120">TRESORERIE DE LIMOGES 2EME DIVISION</poste>
+ <poste code="0870130">TRESORERIE LIMOGES BANLIEUE</poste>
+ <poste code="0870140">TRESORERIE LIMOGES MUNICIPALE</poste>
+ <poste code="0870150">TRESORERIE DE LIMOGES CHU ET CH ESQUIROL</poste>
+ <poste code="0870340">TRESORERIE LIMOGES OPHLM</poste>
+ <poste code="0870800">PAIERIE REGIONALE DE LIMOUSIN</poste>
+ <poste code="0870900">PAIERIE DEPARTEMENTALE DE LA HAUTE-VIENNE</poste>
+ <poste code="0870151">TRESORERIE DE LIMOGES CHU-CH ESQUIROL - ANNEXE</poste>
+ <poste code="0870007">CENTRE REGIONAL DES PENSIONS DE LA HAUTE-VIENNE</poste>
+ <poste code="0870008">CENTRE DE FORMATION DEPARTEMENTAL DE LA HAUTE-VIENNE</poste>
+ <poste code="0870002">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE LA HAUTE VIENNE</poste>
+ <poste code="0460170">TRESORERIE LIMOGNE-EN-QUERCY</poste>
+ <poste code="0911070">TRESORERIE LIMOURS</poste>
+ <poste code="0110230">TRESORERIE DE LIMOUX</poste>
+ <poste code="0670560">TRESORERIE STRASBOURG OUEST-LINGOLSHEIM</poste>
+ <poste code="0140520">TRESORERIE DE LISIEUX INTERCOM</poste>
+ <poste code="0140570">TRESORERIE DE LISIEUX</poste>
+ <poste code="0140530">TRESORERIE LIVAROT</poste>
+ <poste code="0930130">TRESORERIE LIVRY-GARGAN</poste>
+ <poste code="0772130">TRESORERIE LIZY-CROUY-SUR-OURCQ</poste>
+ <poste code="0370200">TRESORERIE DE LOCHES</poste>
+ <poste code="0560060">TRESORERIE LOCMINE</poste>
+ <poste code="0340130">TRESORERIE LODEVE</poste>
+ <poste code="0320320">TRESORERIE SAMATAN</poste>
+ <poste code="0320170">TRESORERIE LOMBEZ</poste>
+ <poste code="1770000">TRESORERIE AMBASSADE DE FRANCE EN GRANDE-BRETAGNE</poste>
+ <poste code="0911080">TRESORERIE LONGJUMEAU</poste>
+ <poste code="0780310">TRESORERIE DE LONGNES</poste>
+ <poste code="0490350">TRESORERIE DE LONGUE-JUMELLES</poste>
+ <poste code="0760620">TRESORERIE LONGUEVILLE-SUR-SCIE</poste>
+ <poste code="0540440">TRESORERIE DE LONGUYON</poste>
+ <poste code="0540450">TRESORERIE DE LONGWY-VILLERUPT</poste>
+ <poste code="0390000">TRESORERIE GENERALE DU JURA</poste>
+ <poste code="0390150">TRESORERIE LONS MUNICIPALE ET EPL</poste>
+ <poste code="0390900">PAIERIE DEPARTEMENTALE DU JURA</poste>
+ <poste code="0390100">TRESORERIE DE LONS IMPOTS ET AMENDES</poste>
+ <poste code="0831120">TRESORERIE LORGUES</poste>
+ <poste code="0560290">TRESORERIE DE LORIENT</poste>
+ <poste code="0560300">TRESORERIE DE LORIENT COLLECTIVITES</poste>
+ <poste code="0560340">TRESORERIE DE LORIENT HÔPITAUX-HLM</poste>
+ <poste code="0260120">TRESORERIE LORIOL-SUR-DROME</poste>
+ <poste code="0580140">TRESORERIE LORMES</poste>
+ <poste code="0570230">TRESORERIE LORQUIN</poste>
+ <poste code="0770350">TRESORERIE LORREZ-LE-BOCAGE-PREAUX</poste>
+ <poste code="0450380">TRESORERIE DE LORRIS</poste>
+ <poste code="0220090">TRESORERIE LOUDEAC</poste>
+ <poste code="0860330">TRESORERIE LOUDUN</poste>
+ <poste code="0720250">TRESORERIE LOUE-BRULON</poste>
+ <poste code="0710140">TRESORERIE LOUHANS</poste>
+ <poste code="0170050">TRESORERIE LOULAY-VILLENEUVE-LA-COMTESSE</poste>
+ <poste code="0650170">TRESORERIE DE LOURDES</poste>
+ <poste code="0650180">TRESORERIE LOURES-BAROUSSE</poste>
+ <poste code="0270300">TRESORERIE LOUVIERS</poste>
+ <poste code="0350190">TRESORERIE LOUVIGNE-DU-DESERT</poste>
+ <poste code="0951040">TRESORERIE LOUVRES-GOUSSAINVILLE</poste>
+ <poste code="0190340">TRESORERIE ARNAC-POMPADOUR</poste>
+ <poste code="0190290">TRESORERIE LUBERSAC</poste>
+ <poste code="0260130">TRESORERIE LUC-EN-DIOIS</poste>
+ <poste code="0280130">TRESORERIE CHARTRES BANLIEUE</poste>
+ <poste code="0710610">TRESORERIE DE LUCENAY-L'EVEQUE</poste>
+ <poste code="0850230">TRESORERIE LUCON-SAINT-MICHEL-EN-L'HERM</poste>
+ <poste code="0710150">TRESORERIE DE LUGNY</poste>
+ <poste code="0622300">TRESORERIE LUMBRES</poste>
+ <poste code="0340150">TRESORERIE DE LUNEL</poste>
+ <poste code="0760630">TRESORERIE LUNERAY</poste>
+ <poste code="0540380">TRESORERIE LUNEVILLE</poste>
+ <poste code="0030060">TRESORERIE LURCY-LEVIS</poste>
+ <poste code="0700250">TRESORERIE DE LURE</poste>
+ <poste code="0860100">TRESORERIE LUSIGNAN</poste>
+ <poste code="0100170">TRESORERIE DE LUSIGNY-SUR-BARSE</poste>
+ <poste code="0860110">TRESORERIE LUSSAC-LES-CHATEAUX</poste>
+ <poste code="0700270">TRESORERIE DE LUXEUIL-LES-BAINS</poste>
+ <poste code="0370210">TRESORERIE DE LUYNES</poste>
+ <poste code="0650190">TRESORERIE LUZ-SAINT-SAUVEUR</poste>
+ <poste code="0951050">TRESORERIE LUZARCHES</poste>
+ <poste code="0460190">TRESORERIE LUZECH</poste>
+ <poste code="0090100">TRESORERIE LUZENAC-LES-CABANNES</poste>
+ <poste code="0630620">TRESORERIE DE LUZILLAT</poste>
+ <poste code="0580150">TRESORERIE LUZY</poste>
+ <poste code="0690000">TRESORERIE GENERALE DU RHONE</poste>
+ <poste code="0690007">CENTRE REGIONAL DES PENSIONS DU RHONE</poste>
+ <poste code="0690008">CENTRE DE FORMATION DEPARTEMENTAL DU RHONE</poste>
+ <poste code="0690009">DEPARTEMENT INFORMATIQUE DU RHONE</poste>
+ <poste code="0690100">TRESORERIE LYON PRESQU'ÎLE</poste>
+ <poste code="0690110">TRESORERIE DE LYON PART DIEU</poste>
+ <poste code="0690130">TRESORERIE LYON 5EME ET 9EME ARRONDTS</poste>
+ <poste code="0690150">TRESORERIE LYON 7EME ARRONDISSEMENT</poste>
+ <poste code="0690160">TRESORERIE LYON 8EME ARRONDISSEMENT</poste>
+ <poste code="0690180">TRESORERIE LYON AMENDES</poste>
+ <poste code="0690220">RECETTE DES FINANCES LYON HOSPICES CIVILS</poste>
+ <poste code="0690410">TRESORERIE LYON COMMUNAUTE URBAINE</poste>
+ <poste code="0690900">PAIERIE DEPARTEMENTALE DU RHONE</poste>
+ <poste code="3000010">ECOLE DES CADRES B</poste>
+ <poste code="0690001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DU RHÔNE</poste>
+ <poste code="0690190">RECETTE DES FINANCES LYON MUNICIPALE</poste>
+ <poste code="0690005">CPS CENTRE PRELEVEMENT SERVICE</poste>
+ <poste code="0590160">TRESORERIE LANNOY</poste>
+ <poste code="0440110">TRESORERIE MACHECOUL</poste>
+ <poste code="0710000">TRESORERIE GENERALE DE SAONE-ET-LOIRE</poste>
+ <poste code="0710160">TRESORERIE MACON</poste>
+ <poste code="0710170">TRESORERIE DE MACON MUNICIPALE</poste>
+ <poste code="0710900">PAIERIE DEPARTEMENTALE DE SAONE-ET-LOIRE</poste>
+ <poste code="1840000">TRESORERIE AMBASSADE DE FRANCE EN ESPAGNE</poste>
+ <poste code="0510360">TRESORERIE EPERNAY MUNICIPALE</poste>
+ <poste code="0510350">TRESORERIE D' EPERNAY BANLIEUE</poste>
+ <poste code="0870160">TRESORERIE DE MAGNAC-LAVAL</poste>
+ <poste code="0950150">TRESORERIE MAGNY-EN-VEXIN</poste>
+ <poste code="0250410">TRESORERIE MAICHE</poste>
+ <poste code="0850240">TRESORERIE DE MAILLEZAIS-BENET ET VIX</poste>
+ <poste code="0280250">TRESORERIE DE MAINTENON</poste>
+ <poste code="0280900">PAIERIE DEPARTEMENTALE D'EURE-ET-LOIR</poste>
+ <poste code="0940150">TRESORERIE DE MAISONS-ALFORT/ALFORTVILLE</poste>
+ <poste code="0781070">TRESORERIE DE MAISONS-LAFFITTE</poste>
+ <poste code="0570250">TRESORERIE MAIZIERES-LES-METZ</poste>
+ <poste code="0921070">TRESORERIE MALAKOFF</poste>
+ <poste code="0190250">TRESORERIE DE MALEMORT</poste>
+ <poste code="0450390">TRESORERIE DE MALESHERBES</poste>
+ <poste code="0560070">TRESORERIE MALESTROIT</poste>
+ <poste code="0720280">TRESORERIE MAMERS-SAINT-COSME-EN-VAIRAIS</poste>
+ <poste code="1430000">TRESORERIE GENERALE DE MAYOTTE</poste>
+ <poste code="1430010">TRESORERIE MAYOTTE MUNICIPALE</poste>
+ <poste code="1430900">PAIERIE DEPARTEMENTALE DE MAYOTTE</poste>
+ <poste code="0061150">TRESORERIE MANDELIEU LA NAPOULE</poste>
+ <poste code="0040130">TRESORERIE MANOSQUE</poste>
+ <poste code="0040001">CELLULE CONTRÔLE REDEVANCE AUDIOVISUELLE DES ALPES DE HAUTE PROVENCE</poste>
+ <poste code="0160260">TRESORERIE MANSLE</poste>
+ <poste code="0781080">TRESORERIE MANTES-LA-JOLIE</poste>
+ <poste code="0781090">TRESORERIE MANTES-LA-JOLIE MUNICIPALE</poste>
+ <poste code="0781100">TRESORERIE MANTES-LA-VILLE</poste>
+ <poste code="0630380">TRESORERIE MANZAT</poste>
+ <poste code="0170060">TRESORERIE MARANS</poste>
+ <poste code="0250200">TRESORERIE MARCHAUX</poste>
+ <poste code="0410250">TRESORERIE MARCHENOIR</poste>
+ <poste code="0593060">TRESORERIE MARCHIENNES</poste>
+ <poste code="0320180">TRESORERIE MARCIAC</poste>
+ <poste code="0710180">TRESORERIE MARCIGNY -SAINT CHRISTOPHE</poste>
+ <poste code="0120110">TRESORERIE MARCILLAC-VALLON-CONQUES</poste>
+ <poste code="0030270">TRESORERIE MARCILLAT-DURDAT</poste>
+ <poste code="0100190">TRESORERIE DE MARCILLY-LE-HAYER</poste>
+ <poste code="0670260">TRESORERIE MARCKOLSHEIM</poste>
+ <poste code="0590280">TRESORERIE MARCQ-EN-BAROEUL</poste>
+ <poste code="0170180">TRESORERIE MARENNES</poste>
+ <poste code="0240160">TRESORERIE MAREUIL</poste>
+ <poste code="0850080">TRESORERIE MAREUIL-SUR-LAY-DISSAIS</poste>
+ <poste code="0600500">TRESORERIE MARGNY-LES-COMPIEGNE</poste>
+ <poste code="0131090">TRESORERIE MARIGNANE</poste>
+ <poste code="0500110">TRESORERIE DE MARIGNY</poste>
+ <poste code="0950160">TRESORERIE MARINES</poste>
+ <poste code="0020190">TRESORERIE DE MARLE</poste>
+ <poste code="0595080">TRESORERIE MARLY</poste>
+ <poste code="0780180">TRESORERIE MARLY-LE-ROI</poste>
+ <poste code="0470220">TRESORERIE DE MARMANDE</poste>
+ <poste code="0470230">TRESORERIE DE MARMANDE MUNICIPALE</poste>
+ <poste code="0671110">TRESORERIE MARMOUTIER</poste>
+ <poste code="0700290">TRESORERIE DE MARNAY-PESMES</poste>
+ <poste code="0772210">TRESORERIE MARNE-LA-VALLEE</poste>
+ <poste code="0772090">TRESORERIE BUSSY SAINT GEORGES</poste>
+ <poste code="0772080">TRESORERIE DE MAGNY-LE-HONGRE</poste>
+ <poste code="0720370">TRESORERIE DE MAROLLES-LES-BRAULTS</poste>
+ <poste code="0760260">TRESORERIE MAROMME</poste>
+ <poste code="0620170">TRESORERIE MARQUION</poste>
+ <poste code="0622130">TRESORERIE MARQUISE</poste>
+ <poste code="0340390">TRESORERIE MARSEILLAN</poste>
+ <poste code="0130230">TRESORERIE MARSEILLE 12E ET 13E ARRONDT</poste>
+ <poste code="0130000">TRESORERIE GENERALE DES BOUCHES-DU-RHONE</poste>
+ <poste code="0130007">CENTRE REGIONAL DES PENSIONS DES BOUCHES-DU-RHONE</poste>
+ <poste code="0130008">CENTRE DE FORMATION DEPARTEMENTAL DES BOUCHES-DU-RHONE</poste>
+ <poste code="0130009">DEPARTEMENT INFORMATIQUE DES BOUCHES-DU-RHONE</poste>
+ <poste code="0130040">TRESORERIE DE MARSEILLE 1ER ET 6EME ARRONDT</poste>
+ <poste code="0130070">TRESORERIE MARSEILLE 3EME ET 14EME ARRONDT</poste>
+ <poste code="0130080">TRESORERIE MARSEILLE 4EME ARRONDISSEMENT</poste>
+ <poste code="0130090">TRESORERIE MARSEILLE 5EME ARRONDISSEMENT</poste>
+ <poste code="0130120">TRESORERIE DE MARSEILLE 7EME ARRONDISSEMENT</poste>
+ <poste code="0130130">TRESORERIE MARSEILLE 8EME ARRONDISSEMENT</poste>
+ <poste code="0130140">TRESORERIE DE MARSEILLE 10E ET 11E ARRONDT</poste>
+ <poste code="0130160">TRESORERIE DE MARSEILLE 2E,15E ET 16E ARRONDT</poste>
+ <poste code="0130170">TRESORERIE MARSEILLE AMENDES</poste>
+ <poste code="0130180">RECETTE DES FINANCES MARSEILLE MUNICIPALE</poste>
+ <poste code="0130190">RECETTE DES FINANCES MARSEILLE ASSISTANCE PUBLIQUE</poste>
+ <poste code="0130210">TRESORERIE MARSEILLE 9EME ARRONDISSEMENT</poste>
+ <poste code="0130250">TRESORERIE DE MARSEILLE HOSPITALIERE</poste>
+ <poste code="0130800">PAIERIE REGIONALE DE PROVENCE-ALPES-COTE D'AZUR</poste>
+ <poste code="0130900">PAIERIE DEPARTEMENTALE DES BOUCHES-DU-RHONE</poste>
+ <poste code="0130001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DES BOUCHES DU RHÔNE</poste>
+ <poste code="0139000">RECETTE DES FINANCES DE MARSEILLE</poste>
+ <poste code="0460200">TRESORERIE MARTEL</poste>
+ <poste code="0132150">TRESORERIE MARTIGUES</poste>
+ <poste code="0480120">TRESORERIE MARVEJOLS</poste>
+ <poste code="0680270">TRESORERIE MASEVAUX</poste>
+ <poste code="0593180">TRESORERIE DE MASNIERES</poste>
+ <poste code="0320190">TRESORERIE MASSEUBE</poste>
+ <poste code="0150120">TRESORERIE MASSIAC</poste>
+ <poste code="0911090">TRESORERIE MASSY</poste>
+ <poste code="0170300">TRESORERIE MATHA-BEAUVAIS-SUR-MATHA</poste>
+ <poste code="0220290">TRESORERIE MATIGNON</poste>
+ <poste code="0595240">TRESORERIE MAUBEUGE VILLE</poste>
+ <poste code="0595250">TRESORERIE DE MAUBEUGE BANLIEUE</poste>
+ <poste code="0595260">TRESORERIE MAUBEUGE MUNICIPALE</poste>
+ <poste code="0650200">TRESORERIE MAUBOURGUET</poste>
+ <poste code="0340170">TRESORERIE DE MAUGUIO</poste>
+ <poste code="0781110">TRESORERIE MAULE</poste>
+ <poste code="0790130">TRESORERIE MAULEON</poste>
+ <poste code="0640140">TRESORERIE MAULEON-LICHARRE</poste>
+ <poste code="0780120">TRESORERIE MAUREPAS</poste>
+ <poste code="0150130">TRESORERIE MAURIAC</poste>
+ <poste code="0560080">TRESORERIE MAURON</poste>
+ <poste code="0150140">TRESORERIE MAURS</poste>
+ <poste code="0132080">TRESORERIE MAUSSANE-VALLEE DES BAUX</poste>
+ <poste code="0320200">TRESORERIE MAUVEZIN-COLOGNE</poste>
+ <poste code="0790220">TRESORERIE MAUZE-SUR-LE-MIGNON</poste>
+ <poste code="0540110">TRESORERIE DE MAXEVILLE</poste>
+ <poste code="0530240">TRESORERIE MAYENNE SAINT-MARTIN</poste>
+ <poste code="0530250">TRESORERIE DU PAYS DE MAYENNE</poste>
+ <poste code="0810280">TRESORERIE MAZAMET</poste>
+ <poste code="0790230">TRESORERIE MAZIERES-EN-GATINE</poste>
+ <poste code="0772190">TRESORERIE DE MEAUX</poste>
+ <poste code="0772000">RECETTE DES FINANCES MEAUX</poste>
+ <poste code="0772140">TRESORERIE MEAUX MUNICIPALE.ET BANLIEUE</poste>
+ <poste code="0180240">TRESORERIE DE MEHUN-SUR-YEVRE</poste>
+ <poste code="0700300">TRESORERIE MELISEY-FAUCOGNEY</poste>
+ <poste code="0790240">TRESORERIE MELLE</poste>
+ <poste code="0770000">TRESORERIE GENERALE DE SEINE-ET-MARNE</poste>
+ <poste code="0770150">TRESORERIE MELUN VAL DE SEINE SEC PU LOCAL</poste>
+ <poste code="0770160">TRESORERIE MELUN VAL DE SEINE IMPOTS</poste>
+ <poste code="0770290">TRESORERIE SEINE-ET-MARNE AMENDES</poste>
+ <poste code="0770900">PAIERIE DEPARTEMENTALE DE SEINE-ET-MARNE</poste>
+ <poste code="0770001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE SEINE ET MARNE</poste>
+ <poste code="0480130">TRESORERIE MENDE</poste>
+ <poste code="0480900">PAIERIE DEPARTEMENTALE DE LA LOZERE</poste>
+ <poste code="0480000">TRESORERIE GENERALE DE LA LOZERE</poste>
+ <poste code="0790250">TRESORERIE MENIGOUTE</poste>
+ <poste code="0910190">TRESORERIE MENNECY</poste>
+ <poste code="0380230">TRESORERIE MENS</poste>
+ <poste code="0060070">TRESORERIE DE MENTON</poste>
+ <poste code="0060080">TRESORERIE DE MENTON MUNICIPALE</poste>
+ <poste code="0410110">TRESORERIE MER</poste>
+ <poste code="0220110">TRESORERIE MERDRIGNAC</poste>
+ <poste code="0330580">TRESORERIE MERIGNAC</poste>
+ <poste code="0671120">TRESORERIE MERTZWILLER</poste>
+ <poste code="0600250">TRESORERIE MERU</poste>
+ <poste code="0594190">TRESORERIE MERVILLE</poste>
+ <poste code="0100210">TRESORERIE DE MERY-SUR-SEINE</poste>
+ <poste code="0530260">TRESORERIE DE PAYS DE MESLAY-GREZ</poste>
+ <poste code="0570000">TRESORERIE GENERALE DE LA MOSELLE</poste>
+ <poste code="0570007">CENTRE REGIONAL DES PENSIONS DE LA MOSELLE</poste>
+ <poste code="0570008">CENTRE DE FORMATION DEPARTEMENTAL DE LA MOSELLE</poste>
+ <poste code="0570009">DEPARTEMENT INFORMATIQUE DE LA MOSELLE</poste>
+ <poste code="0570270">TRESORERIE METZ SERPENOISE</poste>
+ <poste code="0570300">TRESORERIE METZ MUNICIPALE</poste>
+ <poste code="0570600">TRESORERIE METZ ESPLANADE</poste>
+ <poste code="0570610">TRESORERIE METZ-THIONVILLE ETS. HOSP</poste>
+ <poste code="0570800">PAIERIE REGIONALE DE LORRAINE</poste>
+ <poste code="0570900">PAIERIE DEPARTEMENTALE DE LA MOSELLE</poste>
+ <poste code="0570006">PÔLE NATIONAL DE SOUTIEN AU RESEAU DE METZ - SECTEUR PUBLIC LOCAL</poste>
+ <poste code="0570001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE LA MOSELLE</poste>
+ <poste code="0570310">TRESORERIE METZERVISSE</poste>
+ <poste code="0921080">TRESORERIE DE MEUDON</poste>
+ <poste code="0781120">TRESORERIE MEULAN</poste>
+ <poste code="0450130">TRESORERIE MEUNG-SUR-LOIRE</poste>
+ <poste code="0010190">TRESORERIE MEXIMIEUX</poste>
+ <poste code="0380450">TRESORERIE MEYLAN</poste>
+ <poste code="0190100">TRESORERIE MEYMAC</poste>
+ <poste code="0480140">TRESORERIE MEYRUEIS</poste>
+ <poste code="0190300">TRESORERIE MEYSSAC</poste>
+ <poste code="0690370">TRESORERIE DE MEYZIEU</poste>
+ <poste code="0340180">TRESORERIE MEZE</poste>
+ <poste code="0140540">TRESORERIE MEZIDON-CANON</poste>
+ <poste code="0470090">TRESORERIE MEZIN</poste>
+ <poste code="0320210">TRESORERIE MIELAN</poste>
+ <poste code="0890270">TRESORERIE MIGENNES</poste>
+ <poste code="0660100">TRESORERIE MILLAS</poste>
+ <poste code="0120330">TRESORERIE MILLAU-SAINT-BEAUZELY-VEZINS</poste>
+ <poste code="0910210">TRESORERIE MILLY-LA-FORET</poste>
+ <poste code="0400070">TRESORERIE MIMIZAN</poste>
+ <poste code="0132170">TRESORERIE MIRAMAS</poste>
+ <poste code="0170310">TRESORERIE MIRAMBEAU</poste>
+ <poste code="0470250">TRESORERIE MIRAMONT-DE-GUYENNE</poste>
+ <poste code="0320230">TRESORERIE MIRANDE-MONTESQUIOU</poste>
+ <poste code="0860120">TRESORERIE MIREBEAU</poste>
+ <poste code="0210250">TRESORERIE MIREBEAU</poste>
+ <poste code="0880300">TRESORERIE MIRECOURT</poste>
+ <poste code="0090250">TRESORERIE MIREPOIX</poste>
+ <poste code="0010200">TRESORERIE MIRIBEL</poste>
+ <poste code="0730200">TRESORERIE MODANE</poste>
+ <poste code="0380240">TRESORERIE MOIRANS-VOREPPE</poste>
+ <poste code="0390350">TRESORERIE MOIRANS-EN-MONTAGNE</poste>
+ <poste code="0440120">TRESORERIE MOISDON-LA-RIVIERE</poste>
+ <poste code="0820120">TRESORERIE MOISSAC</poste>
+ <poste code="0670290">TRESORERIE DE MOLSHEIM</poste>
+ <poste code="0820140">TRESORERIE MONCLAR-DE-QUERCY</poste>
+ <poste code="0220120">TRESORERIE DE MONCONTOUR</poste>
+ <poste code="0790260">TRESORERIE MONCOUTANT</poste>
+ <poste code="0140260">TRESORERIE CAEN BANLIEUE EST</poste>
+ <poste code="0410260">TRESORERIE MONDOUBLEAU</poste>
+ <poste code="0640150">TRESORERIE MONEIN</poste>
+ <poste code="0380250">TRESORERIE MONESTIER-DE-CLERMONT</poste>
+ <poste code="0810120">TRESORERIE MONESTIES</poste>
+ <poste code="0470270">TRESORERIE DE MONFLANQUIN</poste>
+ <poste code="0430160">TRESORERIE MONISTROL-SUR-LOIRE</poste>
+ <poste code="0690520">TRESORERIE MONSOLS</poste>
+ <poste code="0400001">DEPARTEMENT DES VERIFICATIONS DES LANDES</poste>
+ <poste code="0400080">TRESORERIE MONT-DE-MARSAN</poste>
+ <poste code="0400090">TRESORERIE MONT-DE-MARSAN MUNICIPALE</poste>
+ <poste code="0400190">TRESORERIE OPDHLM DES LANDES</poste>
+ <poste code="0400900">PAIERIE DEPARTEMENTALE DES LANDES</poste>
+ <poste code="0400000">TRESORERIE GENERALE DES LANDES</poste>
+ <poste code="0660110">TRESORERIE MONT-LOUIS</poste>
+ <poste code="0390370">TRESORERIE DU VAL D'AMOUR</poste>
+ <poste code="0850090">TRESORERIE DE MONTAIGU-ROCHESERVIERE</poste>
+ <poste code="0820150">TRESORERIE MONTAIGU-DE-QUERCY</poste>
+ <poste code="0630400">TRESORERIE DE MONTAIGUT-EN-COMBRAILLE</poste>
+ <poste code="0381190">TRESORERIE MONTALIEU-VERCIEU</poste>
+ <poste code="0450400">TRESORERIE MONTARGIS</poste>
+ <poste code="0450410">TRESORERIE MONTARGIS MUNICIPALE</poste>
+ <poste code="0310160">TRESORERIE DES VALLEES DU TARN ET DU GIROU</poste>
+ <poste code="0820000">TRESORERIE GENERALE DE TARN-ET-GARONNE</poste>
+ <poste code="0820160">TRESORERIE MONTAUBAN</poste>
+ <poste code="0820170">TRESORERIE DE MONTAUBAN MUNICIPALE</poste>
+ <poste code="0820900">PAIERIE DEPARTEMENTALE DU TARN-ET-GARONNE</poste>
+ <poste code="0820001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DU TARN ET GARONNE</poste>
+ <poste code="0350220">TRESORERIE MONTAUBAN</poste>
+ <poste code="0210260">TRESORERIE MONTBARD</poste>
+ <poste code="0120340">TRESORERIE DE MONTBAZENS-LANUEJOULS</poste>
+ <poste code="0370240">TRESORERIE DE MONTBAZON</poste>
+ <poste code="0250420">TRESORERIE MONTBELIARD MUNICIPALE</poste>
+ <poste code="0900121">TRESORERIE BELFORT ETS H MONTBELIARD</poste>
+ <poste code="0700310">TRESORERIE MONTBOZON-DAMPIERRE-SUR-LINOTTE</poste>
+ <poste code="0420230">TRESORERIE MONTBRISON</poste>
+ <poste code="0160300">TRESORERIE DE MONTBRON</poste>
+ <poste code="0710450">TRESORERIE MONTCEAU-LES-MINES</poste>
+ <poste code="0710430">TRESORERIE DE MONTCENIS-MONTCHANIN</poste>
+ <poste code="0460210">TRESORERIE MONTCUQ</poste>
+ <poste code="0800310">TRESORERIE MONTDIDIER</poste>
+ <poste code="0500440">TRESORERIE MONTEBOURG</poste>
+ <poste code="0820180">TRESORERIE MONTECH</poste>
+ <poste code="0260360">TRESORERIE MONTELIMAR</poste>
+ <poste code="0770360">TRESORERIE MONTEREAU-FAULT-YONNE</poste>
+ <poste code="0840230">TRESORERIE MONTEUX</poste>
+ <poste code="0430170">TRESORERIE MONTFAUCON-EN-VELAY</poste>
+ <poste code="0840070">TRESORERIE AVIGNON CTRE HOSP.SPEC.MONTFAVET</poste>
+ <poste code="0930140">TRESORERIE DE MONTFERMEIL MUN. ET HOP.</poste>
+ <poste code="0400240">TRESORERIE MONTFORT-EN-CHALOSSE</poste>
+ <poste code="0780210">TRESORERIE MONTFORT-L'AMAURY</poste>
+ <poste code="0350230">TRESORERIE MONTFORT</poste>
+ <poste code="0270320">TRESORERIE MONTFORT-SUR-RISLE</poste>
+ <poste code="0910220">TRESORERIE MONTGERON</poste>
+ <poste code="0080290">TRESORERIE MONTHERME</poste>
+ <poste code="0880310">TRESORERIE MONTHUREUX-SUR-SAONE</poste>
+ <poste code="0520210">TRESORERIE MONTIER-EN-DER</poste>
+ <poste code="0550170">TRESORERIE DE MONTIERS-SUR-SAULX</poste>
+ <poste code="0240180">TRESORERIE MONTIGNAC-PLAZAC</poste>
+ <poste code="0780060">TRESORERIE MONTIGNY-LE-BRETONNEUX</poste>
+ <poste code="0780460">TRESORERIE YVELINES AMENDES</poste>
+ <poste code="0570320">TRESORERIE MONTIGNY-PAYS MESSIN</poste>
+ <poste code="0210270">TRESORERIE MONTIGNY-SUR-AUBE</poste>
+ <poste code="0762170">TRESORERIE MONTIVILLIERS</poste>
+ <poste code="0911100">TRESORERIE MONTLHERY</poste>
+ <poste code="0170320">TRESORERIE MONTLIEU-LA-GARDE-CHEVANCEAUX</poste>
+ <poste code="0030300">TRESORERIE DE MONTLUCON MUNICIPALE</poste>
+ <poste code="0030290">TRESORERIE DE MONTLUCON-CHATEAU</poste>
+ <poste code="0030370">TRESORERIE DE MONTLUÇON ETS HOSPITALIERS</poste>
+ <poste code="0010210">TRESORERIE MONTLUEL</poste>
+ <poste code="0030320">TRESORERIE MONTMARAULT</poste>
+ <poste code="0500120">TRESORERIE MONTMARTIN-QUETTREVILLE</poste>
+ <poste code="0550400">TRESORERIE MONTMEDY</poste>
+ <poste code="0730210">TRESORERIE MONTMELIAN</poste>
+ <poste code="0260150">TRESORERIE MONTMEYRAN</poste>
+ <poste code="0510390">TRESORERIE MONTMIRAIL</poste>
+ <poste code="0390380">TRESORERIE MONTMIREY-LE-CHATEAU</poste>
+ <poste code="0160320">TRESORERIE MONTMOREAU-SAINT-CYBARD</poste>
+ <poste code="0951070">TRESORERIE DE MONTMORENCY</poste>
+ <poste code="0860130">TRESORERIE MONTMORILLON</poste>
+ <poste code="0441120">TRESORERIE DE MONTOIR DE BRETAGNE</poste>
+ <poste code="0410270">TRESORERIE MONTOIRE-SAVIGNY</poste>
+ <poste code="0340000">TRESORERIE GENERALE DE L' HERAULT</poste>
+ <poste code="0340007">CENTRE REGIONAL DES PENSIONS DE L' HERAULT</poste>
+ <poste code="0340008">CENTRE DE FORMATION DEPARTEMENTAL DE L' HERAULT</poste>
+ <poste code="0340009">DEPARTEMENT INFORMATIQUE DE L' HERAULT</poste>
+ <poste code="0340190">TRESORERIE MONTPELLIER 1ERE DIVISION</poste>
+ <poste code="0340200">TRESORERIE MONTPELLIER 2EME DIVISION</poste>
+ <poste code="0340210">TRESORERIE MONTPELLIER MUNICIPALE</poste>
+ <poste code="0340220">TRESORERIE DE MONTPELLIER CHR</poste>
+ <poste code="0340320">TRESORERIE HERAULT AMENDES</poste>
+ <poste code="0340800">PAIERIE REGIONALE DE LANGUEDOC-ROUSSILLON</poste>
+ <poste code="0340900">PAIERIE DEPARTEMENTALE DE L' HERAULT</poste>
+ <poste code="0340001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE L' HERAULT</poste>
+ <poste code="0340006">PÔLE NATIONAL ANAFI HOSP-HLM - RISQUES COLLOC</poste>
+ <poste code="0340005">CPS CENTRE PRÉLÈVEMENT SERVICE</poste>
+ <poste code="0070170">TRESORERIE MONTPEZAT-SOUS-BAUZON</poste>
+ <poste code="0240190">TRESORERIE MONTPON-MENESTEROL-VAUCLAIRE</poste>
+ <poste code="0110260">TRESORERIE MONTREAL</poste>
+ <poste code="0810290">TRESORERIE MONTREDON-LABESSONNIE</poste>
+ <poste code="0310510">TRESORERIE DE MONTREJEAU</poste>
+ <poste code="0622230">TRESORERIE MONTREUIL-SUR-MER</poste>
+ <poste code="0930150">TRESORERIE MONTREUIL</poste>
+ <poste code="0750009">DEPARTEMENT INFORMATIQUE DE LA RECETTE GENERALE DES FINANCES</poste>
+ <poste code="0930160">TRESORERIE MONTREUIL MUNICIPALE</poste>
+ <poste code="0490520">TRESORERIE MONTREUIL-BELLAY</poste>
+ <poste code="4130000">DGCP 3ÈME SD - SYSTÈME D'INFORMATION</poste>
+ <poste code="4130100">DGCP 3A - PILOTAGE</poste>
+ <poste code="4140000">DGCP 4ÈME SD - RECETTES DE L'ETAT</poste>
+ <poste code="4130200">DGCP 3B - MOYENS INFORMATIQUES</poste>
+ <poste code="4130300">DGCP 3C - RECOUVREMENT DE L'IMPÔT</poste>
+ <poste code="4140100">DGCP 4A - PILOTAGE, RELATIONS USAGERS</poste>
+ <poste code="4130400">DGCP 3D - PROJETS DE DÉVELOPPEMENT</poste>
+ <poste code="4140200">DGCP 4B -RECOUVREMT GESTION/EXPERTISE</poste>
+ <poste code="4130500">DGCP 3E - COMPTABILITÉS-DÉPENSES ETAT</poste>
+ <poste code="4136000">DGCP EQUIPE PROJET ÉDITIQUE</poste>
+ <poste code="4140300">DGCP 4C - MOA SYSTÈME D'INFORMATION</poste>
+ <poste code="4138000">DGCP MISSION SÉCURITÉ DU SI</poste>
+ <poste code="4148000">DGCP AMENDES : RÉINGÉNIERIE</poste>
+ <poste code="4138100">DGCP CELLULE D'ANIMATION DU SI</poste>
+ <poste code="0900090">TRESORERIE DE MONTREUX-CHATEAU</poste>
+ <poste code="0490470">TRESORERIE MONTREVAULT</poste>
+ <poste code="0010220">TRESORERIE MONTREVEL-EN-BRESSE</poste>
+ <poste code="0410130">TRESORERIE MONTRICHARD</poste>
+ <poste code="0921090">TRESORERIE MONTROUGE</poste>
+ <poste code="0150150">TRESORERIE MONTSALVY</poste>
+ <poste code="0580170">TRESORERIE MONTSAUCHE</poste>
+ <poste code="0760290">TRESORERIE MONTVILLE</poste>
+ <poste code="0400110">TRESORERIE MORCENX</poste>
+ <poste code="0410280">TRESORERIE MOREE</poste>
+ <poste code="0381200">TRESORERIE MORESTEL</poste>
+ <poste code="0770370">TRESORERIE MORET-SUR-LOING</poste>
+ <poste code="0800320">TRESORERIE MOREUIL</poste>
+ <poste code="0390390">TRESORERIE DE MOREZ</poste>
+ <poste code="0640160">TRESORERIE DE MORLAAS</poste>
+ <poste code="0290250">TRESORERIE MORLAIX ET BANLIEUE</poste>
+ <poste code="0290260">TRESORERIE MORLAIX MUNICIPALE</poste>
+ <poste code="0840240">TRESORERIE DE MORMOIRON</poste>
+ <poste code="0690240">TRESORERIE MORNANT</poste>
+ <poste code="1010060">TRESORERIE MORNE-A-L'EAU</poste>
+ <poste code="0610190">TRESORERIE DE MORTAGNE-AU-PERCHE</poste>
+ <poste code="0850100">TRESORERIE MORTAGNE-SUR-SEVRE-TIFFAUGES</poste>
+ <poste code="0500300">TRESORERIE DE MORTAIN-SOURDEVAL</poste>
+ <poste code="0250480">TRESORERIE MORTEAU</poste>
+ <poste code="0061160">TRESORERIE MOUGINS</poste>
+ <poste code="0030000">TRESORERIE GENERALE DE L' ALLIER</poste>
+ <poste code="0030080">TRESORERIE DE MOULINS MUNICIPALE</poste>
+ <poste code="0030900">PAIERIE DEPARTEMENTALE DE L' ALLIER</poste>
+ <poste code="0580180">TRESORERIE MOULINS-ENGILBERT</poste>
+ <poste code="0640030">TRESORERIE DU BASSIN DE LACQ</poste>
+ <poste code="0510120">TRESORERIE MOURMELON-LE-GRAND</poste>
+ <poste code="0250310">TRESORERIE DE MOUTHE-LABERGEMENT-JOUGNE</poste>
+ <poste code="0850330">TRESORERIE DE MOUTIERS-LES-MAUXFAITS</poste>
+ <poste code="0730230">TRESORERIE DE MOUTIERS</poste>
+ <poste code="0600320">TRESORERIE MOUY</poste>
+ <poste code="0020550">TRESORERIE MOY-DE-L'AISNE</poste>
+ <poste code="0570340">TRESORERIE MOYEUVRE-GRANDE</poste>
+ <poste code="0400250">TRESORERIE MUGRON</poste>
+ <poste code="0681000">RECETTE DES FINANCES MULHOUSE</poste>
+ <poste code="0681120">TRESORERIE DE MULHOUSE RECOUVREMENT</poste>
+ <poste code="0681170">TRESORERIE MULHOUSE MUNICIPALE</poste>
+ <poste code="0681240">TRESORERIE DE MULHOUSE CENTRE HOSPITALIER</poste>
+ <poste code="0681250">TRESORERIE DE MULHOUSE COURONNE</poste>
+ <poste code="0680110">TRESORERIE MUNSTER</poste>
+ <poste code="0680130">TRESORERIE MUNTZENHEIM</poste>
+ <poste code="0220130">TRESORERIE MUR-DE-BRETAGNE</poste>
+ <poste code="0150160">TRESORERIE MURAT</poste>
+ <poste code="0310190">TRESORERIE MURET</poste>
+ <poste code="0340400">TRESORERIE DE MURVIEL-LES-BEZIERS-AUTIGNAC</poste>
+ <poste code="0240570">TRESORERIE DE VILLAMBLARD</poste>
+ <poste code="0240200">TRESORERIE MUSSIDAN</poste>
+ <poste code="0670310">TRESORERIE MUTTERSHOLTZ</poste>
+ <poste code="0670320">TRESORERIE MUTZIG</poste>
+ <poste code="0310200">TRESORERIE NAILLOUX</poste>
+ <poste code="0120350">TRESORERIE NAJAC</poste>
+ <poste code="9200000">AG.COMPT.APPROVISIONNEMENT DES ARMEES EN PRODUITS PETROLIERS</poste>
+ <poste code="0540001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE LA MEURTHE ET MOSELLE</poste>
+ <poste code="0540000">TRESORERIE GENERALE DE MEURTHE-ET-MOSELLE</poste>
+ <poste code="0540130">TRESORERIE DE NANCY</poste>
+ <poste code="0540140">TRESORERIE NANCY MUNICIPALE</poste>
+ <poste code="0540150">TRESORERIE NANCY C.H.U</poste>
+ <poste code="0540900">PAIERIE DEPARTEMENTALE DE MEURTHE-ET-MOSELLE</poste>
+ <poste code="0770200">TRESORERIE DE NANGIS</poste>
+ <poste code="0120360">TRESORERIE DU LARZAC</poste>
+ <poste code="0920000">TRESORERIE GENERALE DES HAUTS-DE-SEINE</poste>
+ <poste code="0920008">CENTRE DE FORMATION DEPARTEMENTAL DES HAUTS-DE-SEINE</poste>
+ <poste code="0920009">DEPARTEMENT INFORMATIQUE DES HAUTS-DE-SEINE</poste>
+ <poste code="0920260">TRESORERIE DE NANTERRE MUNICIPALE</poste>
+ <poste code="0920900">PAIERIE DEPARTEMENTALE DES HAUTS-DE-SEINE</poste>
+ <poste code="0920250">TRESORERIE NANTERRE</poste>
+ <poste code="0920420">TRESORERIE HAUTS-DE-SEINE AMENDES</poste>
+ <poste code="0920001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DES HAUTS DE SEINE</poste>
+ <poste code="0440000">TRESORERIE GENERALE DE LOIRE-ATLANTIQUE</poste>
+ <poste code="0440007">CENTRE REGIONAL DES PENSIONS DE LOIRE-ATLANTIQUE</poste>
+ <poste code="0440008">CENTRE DE FORMATION DEPARTEMENTAL DE LOIRE-ATLANTIQUE</poste>
+ <poste code="0440009">DEPARTEMENT INFORMATIQUE DE LOIRE-ATLANTIQUE</poste>
+ <poste code="0440130">TRESORERIE NANTES I PETIT-BOIS</poste>
+ <poste code="0440150">TRESORERIE DE NANTES FEYDEAU</poste>
+ <poste code="0440160">TRESORERIE DE NANTES-LES-PONTS AMENDES</poste>
+ <poste code="0440190">TRESORERIE DE NANTES MUNICIPALE</poste>
+ <poste code="0440200">TRESORERIE NANTES CHU</poste>
+ <poste code="0440800">PAIERIE REGIONALE DES PAYS DE LA LOIRE</poste>
+ <poste code="0440900">PAIERIE DEPARTEMENTALE DE LOIRE-ATLANTIQUE</poste>
+ <poste code="9300000">TRESORERIE GENERALE POUR L'ETRANGER</poste>
+ <poste code="9300007">CENTRE REGIONAL DES PENSIONS POUR L'ETRANGER</poste>
+ <poste code="9190000">AGENCE COMPTABLE ETS AUTONOMIE FINANCIÈRE - TGE</poste>
+ <poste code="0440001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE LOIRE ATLANTIQUE</poste>
+ <poste code="0600380">TRESORERIE NANTEUIL-LE-HAUDOUIN</poste>
+ <poste code="0870180">TRESORERIE DE NANTIAT</poste>
+ <poste code="0010230">TRESORERIE NANTUA</poste>
+ <poste code="0110490">TRESORERIE NARBONNE AGGLOMERATION</poste>
+ <poste code="0110470">TRESORERIE DE NARBONNE VILLE</poste>
+ <poste code="0120130">TRESORERIE DE NAUCELLE</poste>
+ <poste code="0640180">TRESORERIE NAVARRENX</poste>
+ <poste code="0640190">TRESORERIE NAY</poste>
+ <poste code="0780230">TRESORERIE NEAUPHLE-LE-CHATEAU</poste>
+ <poste code="0820190">TRESORERIE NEGREPELISSE</poste>
+ <poste code="0770380">TRESORERIE NEMOURS-BOURRON-MARLOTTE</poste>
+ <poste code="0470100">TRESORERIE NERAC</poste>
+ <poste code="0680140">TRESORERIE DE NEUF-BRISACH</poste>
+ <poste code="0880120">TRESORERIE COUSSEY-MARTIGNY-LES-GERBONVAUX</poste>
+ <poste code="0880320">TRESORERIE NEUFCHATEAU</poste>
+ <poste code="0760730">TRESORERIE DE NEUFCHATEL-EN-BRAY</poste>
+ <poste code="0370260">TRESORERIE DE NEUILLE-PONT-PIERRE</poste>
+ <poste code="0600390">TRESORERIE NEUILLY-EN-THELLE</poste>
+ <poste code="0930170">TRESORERIE NEUILLY-PLAISANCE</poste>
+ <poste code="0930350">TRESORERIE VILLE-EVRARD CHS</poste>
+ <poste code="0920270">TRESORERIE NEUILLY-SUR-SEINE</poste>
+ <poste code="0920280">TRESORERIE NEUILLY-SUR-SEINE MUNICIPALE</poste>
+ <poste code="0410140">TRESORERIE NEUNG-SUR-BEUVRON</poste>
+ <poste code="0540220">TRESORERIE NEUVES-MAISONS</poste>
+ <poste code="0190110">TRESORERIE NEUVIC</poste>
+ <poste code="0450150">TRESORERIE NEUVILLE-AUX-BOIS</poste>
+ <poste code="0860140">TRESORERIE NEUVILLE-DE-POITOU</poste>
+ <poste code="0593190">TRESORERIE DE NEUVILLE-SAINT-REMY</poste>
+ <poste code="0690250">TRESORERIE DE NEUVILLE-SUR-SAONE</poste>
+ <poste code="0370270">TRESORERIE DE NEUVY-LE-ROI</poste>
+ <poste code="0580000">TRESORERIE GENERALE DE LA NIEVRE</poste>
+ <poste code="0580190">TRESORERIE NEVERS</poste>
+ <poste code="0580200">TRESORERIE NEVERS MUNICIPALE ET BANLIEUE</poste>
+ <poste code="0580210">TRESORERIE NEVERS HOPITAL</poste>
+ <poste code="0580900">PAIERIE DEPARTEMENTALE DE LA NIEVRE</poste>
+ <poste code="0870190">TRESORERIE DE NEXON</poste>
+ <poste code="0060000">TRESORERIE GENERALE DES ALPES-MARITIMES</poste>
+ <poste code="0060007">CENTRE REGIONAL DES PENSIONS DES ALPES-MARITIMES</poste>
+ <poste code="0060008">CENTRE DE FORMATION DEPARTEMENTAL DES ALPES-MARITIMES</poste>
+ <poste code="0060009">DEPARTEMENT INFORMATIQUE DES ALPES-MARITIMES</poste>
+ <poste code="0060090">TRESORERIE NICE PORT-ROSSINI</poste>
+ <poste code="0060120">TRESORERIE NICE ARENES-VERDI</poste>
+ <poste code="0060130">TRESORERIE NICE LA PLAINE</poste>
+ <poste code="0060140">TRESORERIE ALPES MARITIMES AMENDES</poste>
+ <poste code="0060150">TRESORERIE NICE MUNICIPALE</poste>
+ <poste code="0060160">TRESORERIE NICE CENTRE HOSPITALIER</poste>
+ <poste code="0060260">TRESORERIE NICE OPHLM</poste>
+ <poste code="0060900">PAIERIE DEPARTEMENTALE DES ALPES-MARITIMES</poste>
+ <poste code="0060001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DES ALPES MARITIMES</poste>
+ <poste code="0671130">TRESORERIE NIEDERBRONN-LES-BAINS</poste>
+ <poste code="0300000">TRESORERIE GENERALE DU GARD</poste>
+ <poste code="0300150">TRESORERIE NIMES NORD</poste>
+ <poste code="0300160">TRESORERIE DE NIMES SUD</poste>
+ <poste code="0300180">TRESORERIE NIMES MUNICIPALE</poste>
+ <poste code="0300190">TRESORERIE NIMES CHU</poste>
+ <poste code="0300900">PAIERIE DEPARTEMENTALE DU GARD</poste>
+ <poste code="0300001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DU GARD</poste>
+ <poste code="0300170">TRESORERIE DE NIMES BANLIEUE</poste>
+ <poste code="0790000">TRESORERIE GENERALE DES DEUX-SEVRES</poste>
+ <poste code="0790180">TRESORERIE NIORT CENTRE HOSPITALIER</poste>
+ <poste code="0790290">TRESORERIE DE NIORT</poste>
+ <poste code="0790300">TRESORERIE MUNICIPALE DE NIORT-SEVRE</poste>
+ <poste code="0790900">PAIERIE DEPARTEMENTALE DES DEUX-SEVRES</poste>
+ <poste code="0790420">TRESORERIE DE NIORT OPAC SUD-DEUX-SEVRES</poste>
+ <poste code="0600270">TRESORERIE NOAILLES</poste>
+ <poste code="0320260">TRESORERIE NOGARO</poste>
+ <poste code="0520220">TRESORERIE NOGENT-BIESLES</poste>
+ <poste code="0280370">TRESORERIE NOGENT-LE-ROI</poste>
+ <poste code="0280270">TRESORERIE DE NOGENT-LE-ROTROU THIRON-GARDAIS</poste>
+ <poste code="0941050">TRESORERIE NOGENT-SUR-MARNE</poste>
+ <poste code="0941000">RECETTE DES FINANCES NOGENT-SUR-MARNE</poste>
+ <poste code="0100250">TRESORERIE DE NOGENT-SUR-SEINE</poste>
+ <poste code="0422200">TRESORERIE NOIRETABLE</poste>
+ <poste code="0850340">TRESORERIE NOIRMOUTIER-EN-L'ILE</poste>
+ <poste code="3000000">ECOLE NATIONALE DU TRESOR PUBLIC - SCN</poste>
+ <poste code="3000022">ECOLE ENT-PREPARATION AUX CONCOURS</poste>
+ <poste code="0930490">TRESORERIE DES NON RESIDENTS</poste>
+ <poste code="0756000">AGENCE COMPTABLE DES SERVICES INDUSTRIELS DE L'ARMEMENT</poste>
+ <poste code="0930008">CENTRE DE FORMATION DEPARTEMENTAL DE LA SEINE-SAINT-DENIS</poste>
+ <poste code="0930340">TRESORERIE NOISY-LE-GRAND</poste>
+ <poste code="3000020">ECOLE DES CADRES C</poste>
+ <poste code="3000030">CENTRE NATIONAL DE DOCUMENTATION DU TRESOR PUBLIC</poste>
+ <poste code="4006000">DGCP PROGRAMME HELIOS</poste>
+ <poste code="4110300">DGCP 1C : RESP. DES COMPTABLES</poste>
+ <poste code="4268000">DGCP MISSION VÉRIF COMPTES DE GESTION</poste>
+ <poste code="4008121">DGCP SERVICES GÉNÉRAUX - ANNEXE NOISY</poste>
+ <poste code="9470001">SCE DE CONTRÔLE BUDGÉTAIRE COMPTABLE MINISTÉRIEL MINEFI - ANNEXE NOISY-LE-GRAND</poste>
+ <poste code="0930180">TRESORERIE DE NOISY-LE-SEC</poste>
+ <poste code="0930006">PÔLE NATIONAL DE GESTION DES PENSIONS</poste>
+ <poste code="0210550">TRESORERIE NOLAY</poste>
+ <poste code="0540180">TRESORERIE DE NOMENY</poste>
+ <poste code="0270100">TRESORERIE NONANCOURT</poste>
+ <poste code="0240220">TRESORERIE DE NONTRON</poste>
+ <poste code="0440210">TRESORERIE NORT-SUR-ERDRE</poste>
+ <poste code="1620001">TRESORERIE GENERALE DE LA NOUVELLE-CALEDONIE</poste>
+ <poste code="1620000">TRESORERIE GENERALE DE LA NOUVELLE-CALEDONIE</poste>
+ <poste code="1620010">TRESORERIE DE LA PROVINCE SUD</poste>
+ <poste code="1620040">TRESORERIE DE LA PROVINCE DES ILES LOYAUTE</poste>
+ <poste code="1620050">PAIERIE DE LA NOUVELLE CALÉDONIE ET ETS PCS</poste>
+ <poste code="1620060">TRESORERIE CENTRES HOSPITALIERS DE NOUMEA</poste>
+ <poste code="0080320">TRESORERIE NOUZONVILLE</poste>
+ <poste code="0490370">TRESORERIE NOYANT</poste>
+ <poste code="0600520">TRESORERIE NOYON</poste>
+ <poste code="0440220">TRESORERIE NOZAY</poste>
+ <poste code="0390160">TRESORERIE NOZEROY-CENSEAU</poste>
+ <poste code="0210560">TRESORERIE NUITS-SAINT-GEORGES</poste>
+ <poste code="0260370">TRESORERIE NYONS</poste>
+ <poste code="1350000">TRESORERIE AMBASSADE DE FRANCE AU TCHAD</poste>
+ <poste code="0670350">TRESORERIE OBERNAI</poste>
+ <poste code="0670390">TRESORERIE ROSHEIM</poste>
+ <poste code="0190350">TRESORERIE AYEN</poste>
+ <poste code="0190310">TRESORERIE D' OBJAT</poste>
+ <poste code="0760640">TRESORERIE OFFRANVILLE</poste>
+ <poste code="0800710">TRESORERIE OISEMONT</poste>
+ <poste code="0830100">TRESORERIE OLLIOULES</poste>
+ <poste code="0640200">TRESORERIE OLORON-ARAMITS</poste>
+ <poste code="0410150">TRESORERIE D' ONZAIN-HERBAULT</poste>
+ <poste code="0840250">TRESORERIE ORANGE</poste>
+ <poste code="0140550">TRESORERIE ORBEC</poste>
+ <poste code="0593070">TRESORERIE ORCHIES</poste>
+ <poste code="0390170">TRESORERIE ORGELET</poste>
+ <poste code="0132090">TRESORERIE ORGON</poste>
+ <poste code="0450170">TRESORERIE D' ORLEANS</poste>
+ <poste code="0450000">TRESORERIE GENERALE DU LOIRET</poste>
+ <poste code="0450001">ANNEXE T.G. DU LOIRET</poste>
+ <poste code="0450110">TRESORERIE ORLEANS BANLIEUE</poste>
+ <poste code="0450800">PAIERIE REGIONALE DE CENTRE</poste>
+ <poste code="0450190">TRESORERIE D' ORLEANS MUNICIPALE</poste>
+ <poste code="0450200">TRESORERIE ORLEANS CENTRES HOSPITALIERS</poste>
+ <poste code="0450900">PAIERIE DEPARTEMENTALE DU LOIRET</poste>
+ <poste code="0450002">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DU LOIRET</poste>
+ <poste code="0450160">TRESORERIE OLIVET</poste>
+ <poste code="0940300">TRESORERIE ORLY</poste>
+ <poste code="0250160">TRESORERIE ORNANS</poste>
+ <poste code="0911110">TRESORERIE ORSAY</poste>
+ <poste code="0640210">TRESORERIE D' ORTHEZ</poste>
+ <poste code="0650230">TRESORERIE OSSUN</poste>
+ <poste code="0681180">TRESORERIE OTTMARSHEIM</poste>
+ <poste code="1250000">TRESORERIE AMBASSADE DE FRANCE AU BURKINA-FASO</poste>
+ <poste code="0140250">TRESORERIE OUISTREHAM</poste>
+ <poste code="0690260">TRESORERIE OULLINS</poste>
+ <poste code="0090120">TRESORERIE OUST-MASSAT</poste>
+ <poste code="0450420">TRESORERIE OUTARVILLE</poste>
+ <poste code="0622090">TRESORERIE D' OUTREAU</poste>
+ <poste code="0622310">TRESORERIE OYE-PLAGE</poste>
+ <poste code="0010240">TRESORERIE OYONNAX</poste>
+ <poste code="0270110">TRESORERIE PACY-SUR-EURE</poste>
+ <poste code="0441190">TRESORERIE PAIMBOEUF</poste>
+ <poste code="0220460">TRESORERIE PAIMPOL</poste>
+ <poste code="0911120">TRESORERIE PALAISEAU</poste>
+ <poste code="0911000">RECETTE DES FINANCES PALAISEAU</poste>
+ <poste code="0090260">TRESORERIE DE PAMIERS</poste>
+ <poste code="0930190">TRESORERIE PANTIN</poste>
+ <poste code="0930200">TRESORERIE PANTIN MUNICIPALE</poste>
+ <poste code="0930390">TRESORERIE SEINE-SAINT-DENIS AMENDES</poste>
+ <poste code="9130000">AGENCE COMPTABLE DIRECTION GRANDES ENTREPRISES</poste>
+ <poste code="1610020">TRESORERIE DU VENT, AUSTRALES ET ARCHIPELS</poste>
+ <poste code="1610000">TRESORERIE GENERALE DE LA POLYNESIE FRANCAISE</poste>
+ <poste code="1610050">TRESORERIE DES ETABLISSEMENTS PUBLICS</poste>
+ <poste code="1610060">TRESORERIE DE LA PAIERIE DE POLYNESIE FRANCAISE</poste>
+ <poste code="1610070">TRESORERIE CTRE HOSP DE POLYNESIE FRANCAISE</poste>
+ <poste code="0710230">TRESORERIE PARAY-LE-MONIAL</poste>
+ <poste code="0400120">TRESORERIE PARENTIS-EN-BORN</poste>
+ <poste code="0750060">TRESORERIE PARIS 5E ARRONDISSEMENT</poste>
+ <poste code="0750110">TRESORERIE PARIS 8 E</poste>
+ <poste code="0750000">RECETTE GENERALE DES FINANCES DE PARIS</poste>
+ <poste code="0750001">RECETTE GENERALE DES FINANCES DE PARIS - ANNEXE NDV</poste>
+ <poste code="0750008">CENTRE DE FORMATION DEPARTEMENTAL DE LA R.G.F. DE PARIS</poste>
+ <poste code="0750010">TRESORERIE DE PARIS CENTRE</poste>
+ <poste code="0750080">TRESORERIE PARIS 6E ARRONDT</poste>
+ <poste code="0750100">TRESORERIE PARIS 7E ARRONDISSEMENT</poste>
+ <poste code="0750140">TRESORERIE PARIS 9E ARRONDT 1ERE DIVISION</poste>
+ <poste code="0750150">TRESORERIE PARIS 9E ARRONDT 2EME DIVISION</poste>
+ <poste code="0750160">TRESORERIE PARIS 10E ARRONDT 1ERE DIVISION</poste>
+ <poste code="0750170">TRESORERIE PARIS 10E ARRONDT 2EME DIVISION</poste>
+ <poste code="0750180">TRESORERIE PARIS 11E ARRONDT 1ERE DIVISION</poste>
+ <poste code="0750190">TRESORERIE DE PARIS 11E ARRONDT 2EME DIVISION</poste>
+ <poste code="0750210">TRESORERIE PARIS 12E ARRONDT 1ERE DIVISION</poste>
+ <poste code="0750220">TRESORERIE PARIS 12E ARRONDT 2EME DIVISION</poste>
+ <poste code="0750230">TRESORERIE PARIS 13E ARRONDT 1ERE DIVISION</poste>
+ <poste code="0750240">TRESORERIE PARIS 13E ARRONDT 2EME DIVISION</poste>
+ <poste code="0750250">TRESORERIE PARIS 14E ARRONDT 1ERE DIVISION</poste>
+ <poste code="0750260">TRESORERIE PARIS 14E ARRONDT 2EME DIVISION</poste>
+ <poste code="0750280">TRESORERIE PARIS 15E ARRONDT 1ERE DIVISION</poste>
+ <poste code="0750290">TRESORERIE PARIS 15E ARRONDT 2EME DIVISION</poste>
+ <poste code="0750300">TRESORERIE PARIS 15E ARRONDT 3EME DIVISION</poste>
+ <poste code="0750310">TRESORERIE PARIS 16E ARRONDT 1ERE DIVISION</poste>
+ <poste code="0750320">TRESORERIE PARIS 16E ARRONDT 2EME DIVISION</poste>
+ <poste code="0750330">TRESORERIE PARIS 16E ARRONDT 3EME DIVISION</poste>
+ <poste code="0750340">TRESORERIE PARIS 17E ARRONDT 1ERE DIVISION</poste>
+ <poste code="0750350">TRESORERIE PARIS 17E ARRONDT 2EME DIVISION</poste>
+ <poste code="0750360">TRESORERIE PARIS 17E ARRONDT 3EME DIVISION</poste>
+ <poste code="0750370">TRESORERIE PARIS 17E ARRONDT 4EME DIVISION</poste>
+ <poste code="0750380">TRESORERIE DE PARIS 18E ARRONDT 1ERE DIVISION</poste>
+ <poste code="0750400">TRESORERIE PARIS 18E ARRONDT 2EME DIVISION</poste>
+ <poste code="0750410">TRESORERIE PARIS 19E ARRONDT 1ERE DIVISION</poste>
+ <poste code="0750420">TRESORERIE PARIS 19E ARRONDT 2EME DIVISION</poste>
+ <poste code="0750430">TRESORERIE PARIS 20E ARRONDT 1ERE DIVISION</poste>
+ <poste code="0750440">TRESORERIE PARIS 20E ARRONDT 2EME DIVISION</poste>
+ <poste code="0750450">TRESORERIE PARIS 15E ARRONDT 4EME DIVISION</poste>
+ <poste code="0750470">TRESORERIE PARIS 16E ARRONDT 4EME DIVISION</poste>
+ <poste code="0750610">TRESORERIE PARIS AMENDES 1ERE DIVISION</poste>
+ <poste code="0750620">TRESORERIE PARIS AMENDES 2EME DIVISION</poste>
+ <poste code="0750630">TRESORERIE PARIS AMENDES DE TRANSPORTS</poste>
+ <poste code="0750640">TRESORERIE PARIS CENTRES HOSPITALIERS SPEC.</poste>
+ <poste code="0750650">TRESORERIE ETABLISSEMENTS PUBLICS LOCAUX</poste>
+ <poste code="0750660">TRESORERIE CENTRE D'ACTION SOCIALE DE PARIS</poste>
+ <poste code="0750990">RECETTE GENERALE DES FINANCES DE PARIS-VILLE-DÉPT-PRÉF POLICE</poste>
+ <poste code="0751000">AGENCE COMPTABLE DES SERVICES DES AEROPORTS DE PARIS</poste>
+ <poste code="0752000">PAIERIE GENERALE DU TRESOR</poste>
+ <poste code="0752009">DEPARTEMENT INFORMATIQUE DE LA PAIERIE GÉNÉRALE DU TRÉSOR</poste>
+ <poste code="0753000">TRESORERIE GENERALE DE L' ASSISTANCE PUB. - HOPITAUX PARIS</poste>
+ <poste code="0753001">TRESORERIE GENERALE ANNEXE ASSISTANCE PUB.-HÔP.PARIS</poste>
+ <poste code="0753009">DEPARTEMENT INFORMATIQUE DE L' ASSISTANCE PUB. - HOPITAUX PARIS</poste>
+ <poste code="0754000">RECETTE PRINCIPALE REGIONALE DES DOUANES DE PARIS</poste>
+ <poste code="0755000">AGENCE COMPTABLE DES IMPOTS DE PARIS</poste>
+ <poste code="9000000">TRESORERIE GENERALE DE L' ACCT</poste>
+ <poste code="9000009">DEPARTEMENT INFORMATIQUE DE L' ACCT</poste>
+ <poste code="9100000">AGENCE COMPTABLE DOCUMENTATION FRANCAISE</poste>
+ <poste code="9150000">AGENCE COMPTABLE FONDS PEREQ. TRANSPORTS AERIENS</poste>
+ <poste code="9300010">SERVICE DE LA TRESORERIE DE L' ANTENNE TGE</poste>
+ <poste code="9420000">SCE DE CONTRÔLE BUDGÉTAIRE COMPTABLE MINISTÉRIEL AUPRES DU MINISTERE CHARGE DE L'INTERIEUR</poste>
+ <poste code="0750991">RECETTE GENERALE DES FINANCES DE PARIS - RÉGION</poste>
+ <poste code="0750992">RECETTE GENERALE DES FINANCES DE PARIS - ETS INTERDEPARTEMENTAUX</poste>
+ <poste code="0750993">RECETTE GENERALE DES FINANCES DE PARIS - AUTRES ETS LOCAUX</poste>
+ <poste code="9510000">SCE DE CONTRÔLE BUDGÉTAIRE COMPTABLE MINISTÉRIEL AUPRES DES SERVICES DU 1ER MINISTRE</poste>
+ <poste code="9520000">SCE DE CONTRÔLE BUDGÉTAIRE COMPTABLE MINISTÉRIEL AUPRES DU MINISTÈRE CHARGÉ DE LA CULTURE</poste>
+ <poste code="9120000">AGENCE COMPTABLE DU B.A. MONNAIES ET MÉDAILLES</poste>
+ <poste code="9170000">AGENCE COMPTABLE BA PUBLI OFFICIELLES - INFO ADMI</poste>
+ <poste code="9090009">DEPARTEMENT INFORMATIQUE CBLE CENTRALISATEUR COMPTES ÉTAT</poste>
+ <poste code="9110000">AGENCE COMPTABLE DU SERVICE CTRE NAT.FONCTION PUBL.TERRITOR.</poste>
+ <poste code="0759000">AGENCE COMPT. REGIE INDUSTRIELLE ETABLISSEMENTS PENITENTIAIRES</poste>
+ <poste code="9430000">SCE DE CONTRÔLE BUDGÉTAIRE COMPTABLE MINISTÉRIEL AUPRES DU MINISTÈRE CHARGÉ DE LA JUSTICE</poste>
+ <poste code="0750006">PÔLE NATIONAL DE SOUTIEN AU RESEAU MOYENS DE PAIEMENT DU SPL</poste>
+ <poste code="0750007">CENTRE REGIONAL DES PENSIONS DU TRESOR</poste>
+ <poste code="9530000">SCE DE CONTRÔLE BUDGÉTAIRE COMPTABLE MINISTÉRIEL AUPRES DU MINISTÈRE DE L'ENVIRONNEMENT</poste>
+ <poste code="9940001">RECETTE DES FINANCES DOMAINE - ANNEXE ST-PÉTERSBOURG</poste>
+ <poste code="9700000">RECETTE GENERALE DES FINANCES LIQUIDATION OP REDEVANCE</poste>
+ <poste code="0750002">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE PARIS</poste>
+ <poste code="4000000">DGCP DIRECTION GÉNÉRALE</poste>
+ <poste code="4008300">DGCP CONTRÔLE DE GESTION</poste>
+ <poste code="4100000">DGCP SERVICE RESSOURCES RÉSEAU</poste>
+ <poste code="4200000">DGCP SERVICE FONCTION COMPTABLE ÉTAT</poste>
+ <poste code="4110000">DGCP 1ÈRE SD : PILOTAGE-BUDGET-RÉSEAU</poste>
+ <poste code="4008000">DGCP MISSION AUDIT EVAL CONTRÔLE</poste>
+ <poste code="4120000">DGCP 2ÈME SD - RESSOURCES HUMAINES</poste>
+ <poste code="4008100">DGCP CABINET DU DIRECTEUR GÉNÉRAL</poste>
+ <poste code="4126000">DGCP MISSION SIRH (SEQUOIA)</poste>
+ <poste code="4008110">DGCP COMMUNICATION</poste>
+ <poste code="4008120">DGCP SERVICES GENERAUX</poste>
+ <poste code="4010000">DGCP SCN COPERNIC</poste>
+ <poste code="4110100">DGCP 1A - PILOTAGE ET RÉSEAU</poste>
+ <poste code="4120100">DGCP 2A - PILOTAGE ET DIALOGUE SOCIAL</poste>
+ <poste code="4008200">DGCP PORTAIL MINEFI COLLOC</poste>
+ <poste code="4108000">DGCP MISSION DE COOP INTERNATIONALE</poste>
+ <poste code="4110200">DGCP 1B - MOYENS BUDG. ET IMMO.</poste>
+ <poste code="4118000">DGCP CELLULE QUALITÉ SIMPLIFICATION</poste>
+ <poste code="4120300">DGCP 2C - CADRES SUP, AGENTS CPTABLES</poste>
+ <poste code="4110500">DGCP CELLULE SÉCURITÉ</poste>
+ <poste code="4120400">DGCP 2D - PERSONNELS DE CATÉGORIE A</poste>
+ <poste code="4110400">DGCP 1D : EXPERTISE ET ACTIONS ÉCO.</poste>
+ <poste code="4150000">DGCP 5ÈME SD : SECTEUR PUBLIC LOCAL</poste>
+ <poste code="4150100">DGCP 5A : PILOTAGE ET MOA DU SI</poste>
+ <poste code="4150200">DGCP 5B : EXPERTISE JURIDIQUE</poste>
+ <poste code="4270000">DGCP 7ÈME SD : ORG. COMPTABLE/DÉPENSE</poste>
+ <poste code="4150300">DGCP 5C : COMPTABILITÉS LOCALES</poste>
+ <poste code="4206000">DGCP FCE-MISSION CONDUITE CHANGEMENT</poste>
+ <poste code="4270100">DGCP 7A -ORGANISATION COMPTABLE</poste>
+ <poste code="4150400">DGCP 5D : ACTIV. BANC. ET SERV. FIN</poste>
+ <poste code="4206100">DGCP FCE-MISSION DOCTRINE COMPTABLE</poste>
+ <poste code="4270200">DGCP 7B : MODERNISATION DE LA DÉPENSE</poste>
+ <poste code="4270300">DGCP 7C - RÉMUNÉRATIONS ET PENSIONS</poste>
+ <poste code="4270400">DGCP 7D : OPÉRATEURS DE L ETAT</poste>
+ <poste code="4260000">DGCP 6ÈME SD - NORMES ET AUDITS COMPT</poste>
+ <poste code="4260100">DGCP 6A - CONTRÔLE ET AUDIT INTERNES</poste>
+ <poste code="4260200">DGCP 6B - COMPTABILITÉ DE L'ÉTAT</poste>
+ <poste code="4260300">DGCP 6C - COMPTES NATIONAUX</poste>
+ <poste code="9470000">SCE DE CONTRÔLE BUDGÉTAIRE COMPTABLE MINISTÉRIEL AUPRES DU MINÉFI</poste>
+ <poste code="4006100">DGCP MISSION CNE DGI/DGCP - ACCUEIL</poste>
+ <poste code="4300000">DGCP SERVICE FRANCE DOMAINE</poste>
+ <poste code="4300100">DGCP MISSIONS DOMANIALES</poste>
+ <poste code="4306000">DGCP POLITIQUE IMMOBILIÈRE DE L'ETAT</poste>
+ <poste code="9090000">RECETTE DES FINANCES CBLE CENTRALISATEUR COMPTES ÉTAT</poste>
+ <poste code="4120200">DGCP 2B - FORMATION ET GPEEC</poste>
+ <poste code="4120500">DGCP 2E - PERSONNELS B,C,CONTRACTUELS</poste>
+ <poste code="9540000">SCE DE CONTRÔLE BUDGÉTAIRE COMPTABLE MINISTÉRIEL AUPRES DU MINISTÈRE JEUNESSE ET SPORTS</poste>
+ <poste code="4260101">DGCP BUREAU 6A - ANNEXE AURIOL</poste>
+ <poste code="9490000">SCE DE CONTRÔLE BUDGÉTAIRE COMPTABLE MINISTÉRIEL AUPRES DU MINISTÈRE AFFAIRES SOCIALES</poste>
+ <poste code="9480000">SCE DE CONTRÔLE BUDGÉTAIRE COMPTABLE MINISTÉRIEL AUPRES DU MINISTÈRE CHARGÉ DE L'EMPLOI</poste>
+ <poste code="9140000">AGENCE COMPTABLE DU BA CONTRÔLE EXPLOITATION AÉRIEN</poste>
+ <poste code="9160000">AGENCE COMPTABLE DU BA DES JOURNAUX OFFICIELS</poste>
+ <poste code="0750480">TRESORERIE PARIS 20E ARRONDT 3EME DIVISION</poste>
+ <poste code="9450000">SCE DE CONTRÔLE BUDGÉTAIRE COMPTABLE MINISTÉRIEL AUPRES DU MINISTÈRE DE L'ÉQUIPEMENT</poste>
+ <poste code="9410000">SCE DE CONTRÔLE BUDGÉTAIRE COMPTABLE MINISTÉRIEL AUPRES DU MINISTÈRE AGRICULTURE</poste>
+ <poste code="9440000">SCE DE CONTRÔLE BUDGÉTAIRE COMPTABLE MINISTÉRIEL AUPRES DU MINISTÈRE DE L'OUTRE-MER</poste>
+ <poste code="9460000">SCE DE CONTRÔLE BUDGÉTAIRE COMPTABLE MINISTÉRIEL AUPRES DU MINISTÈRE DE L'ÉDUCATION ET RECH</poste>
+ <poste code="0790320">TRESORERIE DE PARTHENAY</poste>
+ <poste code="0450220">TRESORERIE PATAY</poste>
+ <poste code="0640000">TRESORERIE GENERALE DES PYRENEES-ATLANTIQUES</poste>
+ <poste code="0640230">TRESORERIE DE PAU</poste>
+ <poste code="0640250">TRESORERIE PAU ETABLISSEMENTS HOSPITALIERS</poste>
+ <poste code="0640260">TRESORERIE PAU MUNICIPALE</poste>
+ <poste code="0640900">PAIERIE DEPARTEMENTALE DES PYRENEES-ATLANTIQUES</poste>
+ <poste code="0640001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DES PYRENEES-ATLANTIQUES</poste>
+ <poste code="0330390">TRESORERIE DE PAUILLAC</poste>
+ <poste code="0430180">TRESORERIE PAULHAGUET</poste>
+ <poste code="1500000">TRESORERIE AMBASSADE DE FRANCE EN CHINE A PEKIN</poste>
+ <poste code="0420070">TRESORERIE PELUSSIN</poste>
+ <poste code="0470280">TRESORERIE PENNE-D'AGENAIS</poste>
+ <poste code="0500140">TRESORERIE PERIERS-SAINT-SAUVEUR-LENDELIN</poste>
+ <poste code="0170100">TRESORERIE LA ROCHELLE BANLIEUE</poste>
+ <poste code="0240000">TRESORERIE GENERALE DE LA DORDOGNE</poste>
+ <poste code="0240240">TRESORERIE DE PERIGUEUX MUNICIPALE</poste>
+ <poste code="0240450">TRESORERIE PERIGUEUX ETS HOSP</poste>
+ <poste code="0240900">PAIERIE DEPARTEMENTALE DE LA DORDOGNE</poste>
+ <poste code="0240230">TRESORERIE DE PERIGUEUX</poste>
+ <poste code="0240001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE LA DORDOGNE</poste>
+ <poste code="0620410">TRESORERIE HEUCHIN-PERNES</poste>
+ <poste code="0840260">TRESORERIE PERNES-LES-FONTAINES</poste>
+ <poste code="0010290">TRESORERIE BOURG BANLIEUE</poste>
+ <poste code="0800560">TRESORERIE PERONNE</poste>
+ <poste code="0660000">TRESORERIE GENERALE DES PYRENEES-ORIENTALES</poste>
+ <poste code="0660130">TRESORERIE PERPIGNAN</poste>
+ <poste code="0660140">TRESORERIE PERPIGNAN MUNICIPALE</poste>
+ <poste code="0660150">TRESORERIE PERPIGNAN HOSPICES</poste>
+ <poste code="0660290">TRESORERIE DE PERPIGNAN HLM</poste>
+ <poste code="0660001">CELLULE CONTRÔLE REDEVANCE AUDIOVISUELLE DES PYRENEES ORIENTALES</poste>
+ <poste code="0710240">TRESORERIE DE PERRECY-PALINGES</poste>
+ <poste code="0220370">TRESORERIE PERROS-GUIREC</poste>
+ <poste code="0840150">TRESORERIE PERTUIS</poste>
+ <poste code="0330410">TRESORERIE PESSAC</poste>
+ <poste code="0400260">TRESORERIE PEYREHORADE</poste>
+ <poste code="0110300">TRESORERIE PEYRIAC-MINERVOIS</poste>
+ <poste code="0131120">TRESORERIE PEYROLLES-EN-PROVENCE</poste>
+ <poste code="0340410">TRESORERIE PEZENAS</poste>
+ <poste code="0590300">TRESORERIE PHALEMPIN</poste>
+ <poste code="0570350">TRESORERIE PHALSBOURG</poste>
+ <poste code="02A0060">TRESORERIE EVISA</poste>
+ <poste code="0800350">TRESORERIE PICQUIGNY</poste>
+ <poste code="02B0170">TRESORERIE PIEDICROCE</poste>
+ <poste code="0870230">TRESORERIE DE PIERRE-BUFFIERE</poste>
+ <poste code="0710520">TRESORERIE PIERRE-DE-BRESSE-SAINT-MARTIN</poste>
+ <poste code="0830110">TRESORERIE PIERREFEU-DU-VAR CTRE PSYCHO.</poste>
+ <poste code="0250170">TRESORERIE DE PIERREFONTAINE-LES VARANS</poste>
+ <poste code="0260380">TRESORERIE PIERRELATTE</poste>
+ <poste code="0100260">TRESORERIE DE PINEY</poste>
+ <poste code="0350250">TRESORERIE DE PIPRIAC-MAURE</poste>
+ <poste code="0400130">TRESORERIE PISSOS</poste>
+ <poste code="0450430">TRESORERIE PITHIVIERS</poste>
+ <poste code="0290160">TRESORERIE PLABENNEC</poste>
+ <poste code="0320010">TRESORERIE AIGNAN</poste>
+ <poste code="0320270">TRESORERIE PLAISANCE</poste>
+ <poste code="0780240">TRESORERIE PLAISIR ETS HOSP</poste>
+ <poste code="0780350">TRESORERIE PLAISIR</poste>
+ <poste code="0220300">TRESORERIE PLANCOET</poste>
+ <poste code="0150190">TRESORERIE PLEAUX</poste>
+ <poste code="0350260">TRESORERIE PLELAN-LE-GRAND</poste>
+ <poste code="0220150">TRESORERIE PLENEUF-VAL-ANDRE</poste>
+ <poste code="0220380">TRESORERIE PLESTIN-LES-GREVES</poste>
+ <poste code="0860350">TRESORERIE PLEUMARTIN</poste>
+ <poste code="0290170">TRESORERIE PLEYBEN</poste>
+ <poste code="0290310">TRESORERIE SAINT-THEGONNEC</poste>
+ <poste code="0560100">TRESORERIE PLOERMEL</poste>
+ <poste code="0220160">TRESORERIE DE PLOEUC-SUR-LIE</poste>
+ <poste code="0292060">TRESORERIE PLOGASTEL ET PLONEOUR</poste>
+ <poste code="0880330">TRESORERIE PLOMBIERES-LES-BAINS</poste>
+ <poste code="0220390">TRESORERIE PLOUARET</poste>
+ <poste code="0560320">TRESORERIE PLOUAY</poste>
+ <poste code="0220310">TRESORERIE PLOUBALAY</poste>
+ <poste code="0290180">TRESORERIE PLOUDALMEZEAU</poste>
+ <poste code="0290270">TRESORERIE PLOUESCAT</poste>
+ <poste code="0290280">TRESORERIE PLOUIGNEAU-GUERLESQUIN</poste>
+ <poste code="0560330">TRESORERIE PLUVIGNER</poste>
+ <poste code="0330420">TRESORERIE PODENSAC</poste>
+ <poste code="1620030">TRESORERIE DE POINDIMIE</poste>
+ <poste code="1010090">TRESORERIE POINTE-A-PITRE</poste>
+ <poste code="1010180">TRESORERIE POINTE-A-PITRE MUNICIPALE</poste>
+ <poste code="1010100">TRESORERIE POINTE-NOIRE</poste>
+ <poste code="0781140">TRESORERIE POISSY</poste>
+ <poste code="0781000">RECETTE DES FINANCES POISSY VAL DE SEINE</poste>
+ <poste code="0860000">TRESORERIE GENERALE DE LA VIENNE</poste>
+ <poste code="0860020">TRESORERIE BIARD</poste>
+ <poste code="0860150">TRESORERIE POITIERS</poste>
+ <poste code="0860160">TRESORERIE POITIERS MUNICIPALE</poste>
+ <poste code="0860170">TRESORERIE POITIERS ETS HOSP.</poste>
+ <poste code="0860291">TRESORERIE ANNEXE OPAC VILLE DE POITIERS</poste>
+ <poste code="0860800">PAIERIE REGIONALE DE POITOU-CHARENTES</poste>
+ <poste code="0860900">PAIERIE DEPARTEMENTALE DE LA VIENNE</poste>
+ <poste code="0860001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE LA VIENNE</poste>
+ <poste code="0860006">PÔLE NATIONAL P@BLO</poste>
+ <poste code="0800360">TRESORERIE POIX-DE-P-QUEVAUVILLERS</poste>
+ <poste code="0080350">TRESORERIE POIX-TERRON</poste>
+ <poste code="0390190">TRESORERIE POLIGNY</poste>
+ <poste code="0010250">TRESORERIE PONCIN</poste>
+ <poste code="0170330">TRESORERIE PONS-PERIGNAC</poste>
+ <poste code="0590310">TRESORERIE PONT-A-MARCQ</poste>
+ <poste code="0540200">TRESORERIE PONT-A-MOUSSON</poste>
+ <poste code="0620810">TRESORERIE PONT-A-VENDIN</poste>
+ <poste code="0270340">TRESORERIE DE PONT-AUDEMER</poste>
+ <poste code="0292080">TRESORERIE PONT-AVEN</poste>
+ <poste code="0292090">TRESORERIE DE PONT-CROIX</poste>
+ <poste code="0010260">TRESORERIE PONT-D'AIN</poste>
+ <poste code="0381150">TRESORERIE PONT-DE-CHERUY</poste>
+ <poste code="0270350">TRESORERIE PONT-DE-L'ARCHE</poste>
+ <poste code="0250430">TRESORERIE PONT-DE-ROIDE</poste>
+ <poste code="0120140">TRESORERIE DU LEVEZOU</poste>
+ <poste code="0010270">TRESORERIE PONT-DE-VAUX</poste>
+ <poste code="0010280">TRESORERIE PONT-DE-VEYLE</poste>
+ <poste code="0630220">TRESORERIE PONT-DU-CHATEAU</poste>
+ <poste code="0292100">TRESORERIE PONT-L'ABBE</poste>
+ <poste code="0140560">TRESORERIE PONT-L'EVEQUE</poste>
+ <poste code="0600400">TRESORERIE PONT-SAINTE-MAXENCE</poste>
+ <poste code="0300200">TRESORERIE PONT-SAINT-ESPRIT</poste>
+ <poste code="0890490">TRESORERIE PONT-SUR-YONNE</poste>
+ <poste code="0640280">TRESORERIE PONTACQ-SOUMOULOU</poste>
+ <poste code="0210290">TRESORERIE PONTAILLER-SUR-SAONE</poste>
+ <poste code="0250320">TRESORERIE PONTARLIER ET BANLIEUE</poste>
+ <poste code="0250330">TRESORERIE PONTARLIER MUNICIPALE</poste>
+ <poste code="0770280">TRESORERIE ROISSY-PONTAULT-COMBAULT</poste>
+ <poste code="0630420">TRESORERIE PONTAUMUR</poste>
+ <poste code="0380300">TRESORERIE PONTCHARRA</poste>
+ <poste code="0441080">TRESORERIE DE PONTCHATEAU</poste>
+ <poste code="02B0130">TRESORERIE MOROSAGLIA</poste>
+ <poste code="0512070">TRESORERIE DE PONTFAVERGER-BEINE-NAUROY</poste>
+ <poste code="0630430">TRESORERIE PONTGIBAUD</poste>
+ <poste code="0560240">TRESORERIE PONTIVY</poste>
+ <poste code="0950320">TRESORERIE PONTOISE CENTRE HOSP</poste>
+ <poste code="0500310">TRESORERIE PONTORSON</poste>
+ <poste code="0220400">TRESORERIE PONTRIEUX</poste>
+ <poste code="0441170">TRESORERIE PORNIC</poste>
+ <poste code="0132160">TRESORERIE PORT-DE-BOUC</poste>
+ <poste code="0560350">TRESORERIE PORT-LOUIS</poste>
+ <poste code="1010110">TRESORERIE PORT-LOUIS</poste>
+ <poste code="0700350">TRESORERIE PORT-SUR-SAONE</poste>
+ <poste code="0660160">TRESORERIE PORT-VENDRES</poste>
+ <poste code="02A0130">TRESORERIE PORTO-VECCHIO</poste>
+ <poste code="0490200">TRESORERIE POUANCE</poste>
+ <poste code="0580220">TRESORERIE POUGUES-LES-EAUX</poste>
+ <poste code="0250090">TRESORERIE POUILLEY-LES-VIGNES</poste>
+ <poste code="0400270">TRESORERIE POUILLON</poste>
+ <poste code="0210570">TRESORERIE POUILLY-EN-AUXOIS</poste>
+ <poste code="0580230">TRESORERIE POUILLY-SUR-LOIRE</poste>
+ <poste code="0850250">TRESORERIE POUZAUGES</poste>
+ <poste code="0430210">TRESORERIE PRADELLES-LANDOS</poste>
+ <poste code="0660170">TRESORERIE PRADES</poste>
+ <poste code="0790330">TRESORERIE PRAHECQ</poste>
+ <poste code="0660180">TRESORERIE PRATS-DE-MOLLO-LA-PRESTE</poste>
+ <poste code="0520380">TRESORERIE DE PRAUTHOY</poste>
+ <poste code="0470110">TRESORERIE DE PRAYSSAS</poste>
+ <poste code="0530290">TRESORERIE PRE-EN-PAIL</poste>
+ <poste code="0210300">TRESORERIE PRECY-SOUS-THIL</poste>
+ <poste code="0580240">TRESORERIE PREMERY</poste>
+ <poste code="0370300">TRESORERIE PREUILLY-SUR-CLAISE</poste>
+ <poste code="0070000">TRESORERIE GENERALE DE L' ARDECHE</poste>
+ <poste code="0070180">TRESORERIE DE PRIVAS MUNICIPALE</poste>
+ <poste code="0070900">PAIERIE DEPARTEMENTALE DE L' ARDECHE</poste>
+ <poste code="0070420">TRESORERIE DE PRIVAS</poste>
+ <poste code="0770210">TRESORERIE PROVINS</poste>
+ <poste code="0060170">TRESORERIE DE PUGET-THENIERS</poste>
+ <poste code="0610390">TRESORERIE DE PUTANGES-PONT-ECREPIN</poste>
+ <poste code="0920300">TRESORERIE PUTEAUX MUNICIPALE</poste>
+ <poste code="9250000">AGENCE COMPTABLE AGENCE COMPTABLE PARC EQUIPEMENT</poste>
+ <poste code="0571110">TRESORERIE PUTTELANGE-AUX-LACS</poste>
+ <poste code="0460230">TRESORERIE PUY-L'EVEQUE-DURAVEL</poste>
+ <poste code="0260180">TRESORERIE PUY-SAINT-MARTIN-BOURDEAUX</poste>
+ <poste code="0810300">TRESORERIE DE PUYLAURENS</poste>
+ <poste code="0590320">TRESORERIE QUESNOY-SUR-DEULE</poste>
+ <poste code="0560110">TRESORERIE DE QUESTEMBERT</poste>
+ <poste code="0500460">TRESORERIE QUETTEHOU</poste>
+ <poste code="0110320">TRESORERIE DE QUILLAN</poste>
+ <poste code="0292110">TRESORERIE QUIMPER BANLIEUE</poste>
+ <poste code="0292000">RECETTE DES FINANCES QUIMPER</poste>
+ <poste code="0292120">TRESORERIE QUIMPER MUNICIPALE</poste>
+ <poste code="0292160">TRESORERIE QUIMPER CENTRES HOSPITALIERS</poste>
+ <poste code="0292130">TRESORERIE QUIMPERLE</poste>
+ <poste code="0250180">TRESORERIE QUINGEY</poste>
+ <poste code="0220180">TRESORERIE QUINTIN</poste>
+ <poste code="0300210">TRESORERIE QUISSAC-SAUVE</poste>
+ <poste code="0810140">TRESORERIE RABASTENS-SALVAGNAC</poste>
+ <poste code="0650250">TRESORERIE RABASTENS-DE-BIGORRE</poste>
+ <poste code="1180000">TRESORERIE AMBASSADE DE FRANCE AU MAROC</poste>
+ <poste code="0595100">TRESORERIE RAISMES</poste>
+ <poste code="0880340">TRESORERIE RAMBERVILLERS-XAFFEVILLERS</poste>
+ <poste code="0780260">TRESORERIE RAMBOUILLET</poste>
+ <poste code="0880570">TRESORERIE RAON-L'ETAPE</poste>
+ <poste code="0330680">TRESORERIE RAUZAN</poste>
+ <poste code="0810150">TRESORERIE REALMONT</poste>
+ <poste code="0772160">TRESORERIE REBAIS-VILLENEUVE-SUR-BELLOT</poste>
+ <poste code="0210320">TRESORERIE RECEY-SUR-OURCE</poste>
+ <poste code="0350270">TRESORERIE REDON</poste>
+ <poste code="0740200">TRESORERIE REIGNIER</poste>
+ <poste code="0512080">TRESORERIE REIMS 1ERE DIVISION</poste>
+ <poste code="0512090">TRESORERIE REIMS 2EME DIVISION</poste>
+ <poste code="0512100">TRESORERIE REIMS BANLIEUE BOURGOGNE</poste>
+ <poste code="0512110">TRESORERIE DE REIMS MUNICIPALE</poste>
+ <poste code="0512120">TRESORERIE DE REIMS CHR</poste>
+ <poste code="0512001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE REIMS</poste>
+ <poste code="0512000">RECETTE DES FINANCES REIMS</poste>
+ <poste code="0610240">TRESORERIE REMALARD</poste>
+ <poste code="0570390">TRESORERIE REMILLY</poste>
+ <poste code="0880350">TRESORERIE REMIREMONT</poste>
+ <poste code="0300220">TRESORERIE REMOULINS</poste>
+ <poste code="0260390">TRESORERIE REMUZAT-LA MOTTE CHALANCON</poste>
+ <poste code="0422080">TRESORERIE DE RENAISON</poste>
+ <poste code="0350000">TRESORERIE GENERALE D' ILLE-ET-VILAINE</poste>
+ <poste code="0350007">CENTRE REGIONAL DES PENSIONS D' ILLE-ET-VILAINE</poste>
+ <poste code="0350008">CENTRE DE FORMATION DEPARTEMENTAL D' ILLE-ET-VILAINE</poste>
+ <poste code="0350009">DEPARTEMENT INFORMATIQUE ILLE-ET-VILAINE</poste>
+ <poste code="0350290">TRESORERIE RENNES COLOMBIER</poste>
+ <poste code="0350320">TRESORERIE RENNES CH GUILLAUME REGNIER</poste>
+ <poste code="0350330">TRESORERIE RENNES CHU</poste>
+ <poste code="0350800">PAIERIE REGIONALE DE BRETAGNE</poste>
+ <poste code="0350900">PAIERIE DEPARTEMENTALE D' ILLE-ET-VILAINE</poste>
+ <poste code="0350001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE L' ILLE ET VILAINE</poste>
+ <poste code="0350004">CE CENTRE ENCAISSEMENT RENNES</poste>
+ <poste code="0350006">PÔLE NATIONAL DE SOUTIEN AU RESEAU DE RENNES - FPTH</poste>
+ <poste code="0350002">ANNEXE PÔLE INTERRÉGIONAL APUREMENT SPL</poste>
+ <poste code="0350300">TRESORERIE ILLE-ET-VILAINE AMENDES</poste>
+ <poste code="0350310">TRESORERIE RENNES MUNICIPALE</poste>
+ <poste code="0350500">TRESORERIE DU CONTROLE AUTOMATISE</poste>
+ <poste code="0350400">TRESORERIE CENTRE ENCAISSEMENT DES AMENDES</poste>
+ <poste code="0080370">TRESORERIE RENWEZ</poste>
+ <poste code="0120150">TRESORERIE DU SEGALA MERIDIONAL</poste>
+ <poste code="0600530">TRESORERIE RESSONS-SUR-MATZ</poste>
+ <poste code="0080380">TRESORERIE DE RETHEL</poste>
+ <poste code="0350340">TRESORERIE RETIERS</poste>
+ <poste code="0310210">TRESORERIE REVEL</poste>
+ <poste code="0440260">TRESORERIE DE REZE</poste>
+ <poste code="0670370">TRESORERIE RHINAU</poste>
+ <poste code="0831150">TRESORERIE RIANS</poste>
+ <poste code="0680150">TRESORERIE DE RIBEAUVILLE</poste>
+ <poste code="0600540">TRESORERIE RIBECOURT-DRESLINCOURT</poste>
+ <poste code="0020570">TRESORERIE RIBEMONT-ORIGNY</poste>
+ <poste code="0240270">TRESORERIE DE RIBERAC</poste>
+ <poste code="0370310">TRESORERIE RICHELIEU</poste>
+ <poste code="0310600">TRESORERIE RIEUMES</poste>
+ <poste code="0120370">TRESORERIE RIEUPEYROUX</poste>
+ <poste code="0040190">TRESORERIE RIEZ-ET-MOUSTIERS</poste>
+ <poste code="0120160">TRESORERIE DE RIGNAC</poste>
+ <poste code="0690380">TRESORERIE DE RILLIEUX-LA-PAPE</poste>
+ <poste code="0630450">TRESORERIE RIOM</poste>
+ <poste code="0150210">TRESORERIE RIOM-ES-MONTAGNES</poste>
+ <poste code="0700360">TRESORERIE RIOZ-VORAY-SUR-L'OGNON</poste>
+ <poste code="0910290">TRESORERIE RIS-ORANGIS</poste>
+ <poste code="0320290">TRESORERIE RISCLE</poste>
+ <poste code="0420090">TRESORERIE RIVE-DE-GIER</poste>
+ <poste code="0380330">TRESORERIE RIVES</poste>
+ <poste code="0660190">TRESORERIE DE RIVESALTES</poste>
+ <poste code="0422090">TRESORERIE ROANNE</poste>
+ <poste code="0422000">RECETTE DES FINANCES ROANNE</poste>
+ <poste code="0422100">TRESORERIE ROANNE MUNICIPALE</poste>
+ <poste code="0870240">TRESORERIE DE ROCHECHOUART</poste>
+ <poste code="0170190">TRESORERIE DE ROCHEFORT ET BANLIEUE</poste>
+ <poste code="0170200">TRESORERIE DE ROCHEFORT ET BANLIEUE MUNICIPALE</poste>
+ <poste code="0630230">TRESORERIE ROCHEFORT-MONTAGNE</poste>
+ <poste code="0080400">TRESORERIE ROCROI-MAUBERT</poste>
+ <poste code="0120000">TRESORERIE GENERALE DE L' AVEYRON</poste>
+ <poste code="0120170">TRESORERIE RODEZ</poste>
+ <poste code="0120900">PAIERIE DEPARTEMENTALE DE L' AVEYRON</poste>
+ <poste code="0120190">TRESORERIE RODEZ HOPITAL</poste>
+ <poste code="0671150">TRESORERIE ROESCHWOOG</poste>
+ <poste code="0560140">TRESORERIE ROHAN</poste>
+ <poste code="0571120">TRESORERIE ROHRBACH-LES-BITCHE</poste>
+ <poste code="0800570">TRESORERIE ROISEL</poste>
+ <poste code="0520390">TRESORERIE DE ROLAMPONT</poste>
+ <poste code="0930220">TRESORERIE DE ROMAINVILLE MUNICIPALE</poste>
+ <poste code="0260190">TRESORERIE DE ROMANS-BOURG-DE-PEAGE</poste>
+ <poste code="0260200">TRESORERIE DE ROMANS-BOURG DE PEAGE COL. LOC.</poste>
+ <poste code="0570420">TRESORERIE ROMBAS</poste>
+ <poste code="1870000">TRESORERIE AMBASSADE DE FRANCE EN ITALIE</poste>
+ <poste code="0100320">TRESORERIE DE ROMILLY-SUR-SEINE</poste>
+ <poste code="0410170">TRESORERIE ROMORANTIN-LANTHENAY</poste>
+ <poste code="0590330">TRESORERIE DE RONCHIN</poste>
+ <poste code="0060180">TRESORERIE ROQUEBILLIERE</poste>
+ <poste code="0810310">TRESORERIE DE ROQUECOURBE</poste>
+ <poste code="0400140">TRESORERIE ROQUEFORT</poste>
+ <poste code="0300230">TRESORERIE ROQUEMAURE</poste>
+ <poste code="0060190">TRESORERIE ROQUESTERON</poste>
+ <poste code="0130200">TRESORERIE ROQUEVAIRE</poste>
+ <poste code="0800420">TRESORERIE ROSIERES-EN-SANTERRE</poste>
+ <poste code="0292140">TRESORERIE DE ROSPORDEN</poste>
+ <poste code="0220410">TRESORERIE ROSTRENEN</poste>
+ <poste code="0590350">TRESORERIE DE ROUBAIX</poste>
+ <poste code="0590380">TRESORERIE ROUBAIX MUNICIPALE</poste>
+ <poste code="0590390">TRESORERIE ROUBAIX CENTRE HOSPITALIER</poste>
+ <poste code="0760000">TRESORERIE GENERALE DE LA SEINE-MARITIME</poste>
+ <poste code="0760007">CENTRE REGIONAL DES PENSIONS DE LA SEINE-MARITIME</poste>
+ <poste code="0760008">CENTRE DE FORMATION DEPARTEMENTAL DE LA SEINE-MARITIME</poste>
+ <poste code="0760009">DEPARTEMENT INFORMATIQUE DE LA SEINE-MARITIME</poste>
+ <poste code="0760370">TRESORERIE ROUEN MUNICIPALE</poste>
+ <poste code="0760380">TRESORERIE ROUEN CHU</poste>
+ <poste code="0760510">TRESORERIE SEINE-MARITIME AMENDES</poste>
+ <poste code="0760800">PAIERIE REGIONALE DE HAUTE-NORMANDIE</poste>
+ <poste code="0760900">PAIERIE DEPARTEMENTALE DE LA SEINE-MARITIME</poste>
+ <poste code="0760110">TRESORERIE DARNETAL</poste>
+ <poste code="0760350">TRESORERIE DE ROUEN IMPÔTS</poste>
+ <poste code="0760001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE LA SEINE MARITIME</poste>
+ <poste code="0760006">PÔLE NATIONAL DE SOUTIEN AU RESEAU DE ROUEN - RECOUVREMENT AMIABLE</poste>
+ <poste code="0680180">TRESORERIE ROUFFACH</poste>
+ <poste code="0680190">TRESORERIE ROUFFACH CH</poste>
+ <poste code="0250210">TRESORERIE DE ROUGEMONT</poste>
+ <poste code="0160360">TRESORERIE ROUILLAC</poste>
+ <poste code="0381070">TRESORERIE DU ROUSSILLONNAIS</poste>
+ <poste code="0620310">TRESORERIE ROUVROY</poste>
+ <poste code="0170380">TRESORERIE ROYAN</poste>
+ <poste code="0380340">TRESORERIE ROYBON</poste>
+ <poste code="0800430">TRESORERIE ROYE</poste>
+ <poste code="0230150">TRESORERIE DE ROYERE-DE-VASSIVIERE</poste>
+ <poste code="0770230">TRESORERIE ROZAY</poste>
+ <poste code="0020240">TRESORERIE ROZOY-SUR-SERRE-MONTCORNET</poste>
+ <poste code="0800650">TRESORERIE RUE</poste>
+ <poste code="0920310">TRESORERIE RUEIL-MALMAISON</poste>
+ <poste code="0920320">TRESORERIE RUEIL-MALMAISON MUNICIPALE</poste>
+ <poste code="0160370">TRESORERIE RUELLE-SUR-TOUVRE</poste>
+ <poste code="0160380">TRESORERIE RUFFEC-NANTEUIL-EN-VALLEE</poste>
+ <poste code="0270120">TRESORERIE RUGLES</poste>
+ <poste code="0740220">TRESORERIE DE RUMILLY-ALBY</poste>
+ <poste code="0720450">TRESORERIE SABLE-SUR-SARTHE-PRECIGNE</poste>
+ <poste code="0400150">TRESORERIE SABRES</poste>
+ <poste code="0150230">TRESORERIE SAIGNES</poste>
+ <poste code="0660200">TRESORERIE SAILLAGOUSE</poste>
+ <poste code="0595280">TRESORERIE SAINS-DU-NORD</poste>
+ <poste code="0530300">TRESORERIE DE SAINT-AIGNAN-SUR-ROE</poste>
+ <poste code="1040020">TRESORERIE SAINT-ANDRE</poste>
+ <poste code="1040030">TRESORERIE SAINT-BENOIT</poste>
+ <poste code="0480190">TRESORERIE SAINT-CHELY-D'APCHER</poste>
+ <poste code="1040007">CENTRE REGIONAL DES PENSIONS DE LA REUNION</poste>
+ <poste code="1040009">DEPARTEMENT INFORMATIQUE DE LA REUNION</poste>
+ <poste code="1040040">TRESORERIE SAINT-DENIS</poste>
+ <poste code="1040130">TRESORERIE SAINT-DENIS MUNICIPALE</poste>
+ <poste code="1040900">PAIERIE DEPARTEMENTALE DE LA REUNION</poste>
+ <poste code="1040050">TRESORERIE SAINT-JOSEPH</poste>
+ <poste code="1040090">TRESORERIE SAINT-PIERRE</poste>
+ <poste code="1050000">TRESORERIE GENERALE SAINT-PIERRE-ET-MIQUELON</poste>
+ <poste code="0831190">TRESORERIE SAINT-TROPEZ</poste>
+ <poste code="1040800">PAIERIE REGIONALE DE LA REUNION</poste>
+ <poste code="0170360">TRESORERIE DE SAINTES ET BANLIEUE</poste>
+ <poste code="0170370">TRESORERIE DE SAINTES ET BANLIEUE MUNICIPALE</poste>
+ <poste code="0931000">RECETTE DES FINANCES SAINT-DENIS</poste>
+ <poste code="0410210">TRESORERIE SALBRIS</poste>
+ <poste code="0831200">TRESORERIE SALERNES</poste>
+ <poste code="0640300">TRESORERIE SALIES-DE-BEARN</poste>
+ <poste code="0310540">TRESORERIE SALIES-DU-SALAT-ST-MARTORY</poste>
+ <poste code="0390220">TRESORERIE SALINS-LES-BAINS</poste>
+ <poste code="0740260">TRESORERIE SALLANCHES</poste>
+ <poste code="0110370">TRESORERIE SALLES-SUR-L'HERS</poste>
+ <poste code="0131140">TRESORERIE SALON-DE-PROVENCE</poste>
+ <poste code="0740270">TRESORERIE SAMOENS</poste>
+ <poste code="0180320">TRESORERIE DE SANCERGUES</poste>
+ <poste code="0180330">TRESORERIE DE SANCERRE</poste>
+ <poste code="0180340">TRESORERIE SANCOINS</poste>
+ <poste code="0950310">TRESORERIE SANNOIS</poste>
+ <poste code="02A0090">TRESORERIE SANTA-MARIA-SICHE</poste>
+ <poste code="0320330">TRESORERIE SARAMON</poste>
+ <poste code="0951080">TRESORERIE SARCELLES</poste>
+ <poste code="0951000">RECETTE DES FINANCES SARCELLES</poste>
+ <poste code="0240350">TRESORERIE SARLAT-LA-CANEDA</poste>
+ <poste code="0571140">TRESORERIE SARRALBE</poste>
+ <poste code="0671160">TRESORERIE SARRE-UNION</poste>
+ <poste code="0570450">TRESORERIE DE SARREBOURG</poste>
+ <poste code="0571170">TRESORERIE SARREGUEMINES MUNICIPALE</poste>
+ <poste code="0571000">RECETTE DES FINANCES SARREGUEMINES</poste>
+ <poste code="0571160">TRESORERIE DE SARREGUEMINES CENTRE ET CAMPAGNE</poste>
+ <poste code="02A0110">TRESORERIE DE SARTENE-OLMETO</poste>
+ <poste code="0781150">TRESORERIE DE SARTROUVILLE COLLECTIV. LOCALES</poste>
+ <poste code="0560150">TRESORERIE SARZEAU</poste>
+ <poste code="0070290">TRESORERIE DE SATILLIEU</poste>
+ <poste code="0430280">TRESORERIE SAUGUES</poste>
+ <poste code="0170410">TRESORERIE SAUJON</poste>
+ <poste code="0210370">TRESORERIE SAULIEU</poste>
+ <poste code="0490390">TRESORERIE SAUMUR MUNICIPALE</poste>
+ <poste code="0490410">TRESORERIE DE SAUMUR</poste>
+ <poste code="0240550">TRESORERIE SIGOULES ET SAUSSIGNAC</poste>
+ <poste code="0640310">TRESORERIE SAUVETERRE-DE-BEARN</poste>
+ <poste code="0330760">TRESORERIE SAUVETERRE-DE-GUYENNE-PELLEGRUE</poste>
+ <poste code="0630580">TRESORERIE SAUXILLANGES</poste>
+ <poste code="0790380">TRESORERIE SAUZE-VAUSSAIS</poste>
+ <poste code="0260340">TRESORERIE MARSANNE-SAUZET</poste>
+ <poste code="0441150">TRESORERIE SAVENAY</poste>
+ <poste code="0090270">TRESORERIE SAVERDUN-MAZERES</poste>
+ <poste code="0671170">TRESORERIE DE SAVERNE</poste>
+ <poste code="0240360">TRESORERIE DE SAVIGNAC-LES-EGLISES</poste>
+ <poste code="0911140">TRESORERIE SAVIGNY-SUR-ORGE</poste>
+ <poste code="0921110">TRESORERIE DE SCEAUX</poste>
+ <poste code="0921140">TRESORERIE DE SCEAUX MUNICIPALE</poste>
+ <poste code="0700390">TRESORERIE SCEY-SUR-SAONE-ET-SAINT-ALBIN</poste>
+ <poste code="0670450">TRESORERIE STRASBOURG NORD-SCHILTIGHEIM</poste>
+ <poste code="0670440">TRESORERIE SCHILTIGHEIM</poste>
+ <poste code="0670005">CPS CENTRE PRÉLÈVEMENT SERVICE</poste>
+ <poste code="0670460">TRESORERIE SCHIRMECK</poste>
+ <poste code="0590420">TRESORERIE SECLIN</poste>
+ <poste code="0790390">TRESORERIE SECONDIGNY</poste>
+ <poste code="0080450">TRESORERIE DE SEDAN</poste>
+ <poste code="0080440">TRESORERIE DE SEDAN MIRBRITZ</poste>
+ <poste code="0260410">TRESORERIE SEDERON</poste>
+ <poste code="0610260">TRESORERIE DE SEES</poste>
+ <poste code="0160430">TRESORERIE SEGONZAC</poste>
+ <poste code="0490260">TRESORERIE SEGRE</poste>
+ <poste code="0490270">TRESORERIE SEICHES-SUR-LE-LOIR</poste>
+ <poste code="0190160">TRESORERIE SEILHAC</poste>
+ <poste code="0670470">TRESORERIE DE SELESTAT</poste>
+ <poste code="0410220">TRESORERIE SELLES-SUR-CHER</poste>
+ <poste code="0390240">TRESORERIE SELLIERES</poste>
+ <poste code="0410330">TRESORERIE SELOMMES</poste>
+ <poste code="0210410">TRESORERIE SELONGEY</poste>
+ <poste code="0671180">TRESORERIE SELTZ</poste>
+ <poste code="0210420">TRESORERIE SEMUR-EN-AUXOIS</poste>
+ <poste code="0600430">TRESORERIE DE SENLIS</poste>
+ <poste code="0710550">TRESORERIE DE SENNECEY-SAINT-GERMAIN-DU-PLAIN</poste>
+ <poste code="0280390">TRESORERIE SENONCHES</poste>
+ <poste code="0880600">TRESORERIE SENONES</poste>
+ <poste code="0890510">TRESORERIE SENS AGGLOMERATION SENONAISE</poste>
+ <poste code="0890520">TRESORERIE SENS MUNICIPALE</poste>
+ <poste code="0681220">TRESORERIE SEPPOIS-LE-BAS</poste>
+ <poste code="0890530">TRESORERIE SERGINES</poste>
+ <poste code="0600280">TRESORERIE SERIFONTAINE</poste>
+ <poste code="0340450">TRESORERIE SERIGNAN</poste>
+ <poste code="0510180">TRESORERIE SERMAIZE-LES-BAINS</poste>
+ <poste code="0050200">TRESORERIE DE SERRES-ASPRES</poste>
+ <poste code="0070300">TRESORERIE SERRIERES</poste>
+ <poste code="0340290">TRESORERIE SETE</poste>
+ <poste code="0340300">TRESORERIE SETE MUNICIPALE</poste>
+ <poste code="0210590">TRESORERIE SEURRE</poste>
+ <poste code="0120430">TRESORERIE DE SEVERAC-LE-CHATEAU</poste>
+ <poste code="0930290">TRESORERIE DE SEVRAN MUNICIPALE</poste>
+ <poste code="0921120">TRESORERIE DE SEVRES</poste>
+ <poste code="0040230">TRESORERIE SEYNE</poste>
+ <poste code="0740060">TRESORERIE SEYNOD</poste>
+ <poste code="0740280">TRESORERIE SEYSSEL</poste>
+ <poste code="0510410">TRESORERIE DE SEZANNE</poste>
+ <poste code="0570500">TRESORERIE SIERCK-LES-BAINS</poste>
+ <poste code="0681230">TRESORERIE SIERENTZ</poste>
+ <poste code="0110510">TRESORERIE SIGEAN</poste>
+ <poste code="0080470">TRESORERIE SIGNY-L'ABBAYE-RUMIGNY</poste>
+ <poste code="0720490">TRESORERIE DE SILLE-LE-GUILLAUME</poste>
+ <poste code="0593090">TRESORERIE SIN-LE-NOBLE</poste>
+ <poste code="0020270">TRESORERIE SISSONNE</poste>
+ <poste code="0040240">TRESORERIE DE SISTERON-ST-VINCENT-SUR-JABRON</poste>
+ <poste code="0830240">TRESORERIE SIX-FOURS-LES-PLAGES</poste>
+ <poste code="0250470">TRESORERIE SOCHAUX</poste>
+ <poste code="0020480">TRESORERIE SOISSONS</poste>
+ <poste code="0593200">TRESORERIE SOLESMES</poste>
+ <poste code="0830160">TRESORERIE SOLLIES-PONT</poste>
+ <poste code="0595290">TRESORERIE SOLRE-LE-CHATEAU</poste>
+ <poste code="0593100">TRESORERIE SOMAIN</poste>
+ <poste code="0210430">TRESORERIE SOMBERNON</poste>
+ <poste code="0300310">TRESORERIE SOMMIERES</poste>
+ <poste code="0840160">TRESORERIE SORGUES</poste>
+ <poste code="0190170">TRESORERIE SORNAC</poste>
+ <poste code="0060220">TRESORERIE DE SOSPEL</poste>
+ <poste code="0760440">TRESORERIE SOTTEVILLE-LES-ROUEN</poste>
+ <poste code="0460290">TRESORERIE DE SOUILLAC</poste>
+ <poste code="0550410">TRESORERIE DE SOUILLY</poste>
+ <poste code="0330520">TRESORERIE SAINT-VIVIEN-DE-MEDOC</poste>
+ <poste code="0680220">TRESORERIE SOULTZ-HAUT-RHIN</poste>
+ <poste code="0671190">TRESORERIE SOULTZ-SOUS-FORETS</poste>
+ <poste code="0400300">TRESORERIE SOUSTONS</poste>
+ <poste code="0550420">TRESORERIE SPINCOURT</poste>
+ <poste code="0120380">TRESORERIE SAINT-AFFRIQUE</poste>
+ <poste code="0070210">TRESORERIE SAINT-AGREVE</poste>
+ <poste code="0410190">TRESORERIE SAINT-AIGNAN</poste>
+ <poste code="0170340">TRESORERIE SAINT-AIGULIN</poste>
+ <poste code="0480170">TRESORERIE SAINT-ALBAN-SUR-LIMAGNOLE</poste>
+ <poste code="0595120">TRESORERIE SAINT-AMAND-LES-EAUX</poste>
+ <poste code="0410320">TRESORERIE SAINT-AMAND-LONGPRE</poste>
+ <poste code="0180280">TRESORERIE DE SAINT-AMAND-MONTROND</poste>
+ <poste code="0810320">TRESORERIE SAINT-AMANS-SOULT</poste>
+ <poste code="0160390">TRESORERIE SAINT-AMANT-DE-BOIXE</poste>
+ <poste code="0630240">TRESORERIE SAINT-AMANT-TALLENDE</poste>
+ <poste code="0680280">TRESORERIE SAINT-AMARIN</poste>
+ <poste code="0300500">TRESORERIE DE SAINT-AMBROIX</poste>
+ <poste code="0880390">TRESORERIE DE SAINT-AME</poste>
+ <poste code="0132100">TRESORERIE SAINT-ANDIOL</poste>
+ <poste code="0590400">TRESORERIE SAINT-ANDRE</poste>
+ <poste code="0330740">TRESORERIE SAINT-ANDRE-DE-CUBZAC</poste>
+ <poste code="0270130">TRESORERIE SAINT-ANDRE-DE-L'EURE</poste>
+ <poste code="0040200">TRESORERIE SAINT-ANDRE-LES-ALPES</poste>
+ <poste code="0820200">TRESORERIE SAINT-ANTONIN-NOBLE-VAL</poste>
+ <poste code="0780270">TRESORERIE SAINT-ARNOULT-EN-YVELINES</poste>
+ <poste code="0240210">TRESORERIE DE NEUVIC</poste>
+ <poste code="0240290">TRESORERIE SAINT-ASTIER</poste>
+ <poste code="0350350">TRESORERIE SAINT-AUBIN-D'AUBIGNE</poste>
+ <poste code="0760390">TRESORERIE SAINT-AUBIN-LES-ELBEUF</poste>
+ <poste code="0240300">TRESORERIE SAINT-AULAYE-LA-ROCHE-CHALAIS</poste>
+ <poste code="0571130">TRESORERIE SAINT-AVOLD</poste>
+ <poste code="1010120">TRESORERIE DE SAINT-BARTHELEMY</poste>
+ <poste code="0310520">TRESORERIE SAINT-BEAT-CIERP</poste>
+ <poste code="0580260">TRESORERIE SAINT-BENIN-D'AZY</poste>
+ <poste code="0520240">TRESORERIE DE SAINT-BLIN-SEMILLY</poste>
+ <poste code="0050150">TRESORERIE DE SAINT-BONNET-SAINT-FIRMIN</poste>
+ <poste code="0420260">TRESORERIE SAINT-BONNET-LE-CHATEAU</poste>
+ <poste code="0441180">TRESORERIE MINDIN ETS MEDICO-SOCIAUX</poste>
+ <poste code="0220000">TRESORERIE GENERALE DES COTES-D'ARMOR</poste>
+ <poste code="0220100">TRESORERIE SAINT-BRIEUC CENTRE HOSPITALIER</poste>
+ <poste code="0220190">TRESORERIE DE SAINT-BRIEUC LA BAIE</poste>
+ <poste code="0220200">TRESORERIE DE SAINT-BRIEUC BANLIEUE</poste>
+ <poste code="0220210">TRESORERIE SAINT-BRIEUC MUNICIPALE</poste>
+ <poste code="0220900">PAIERIE DEPARTEMENTALE DES COTES-D'ARMOR</poste>
+ <poste code="0220001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DES CÔTES D'ARMOR</poste>
+ <poste code="0720460">TRESORERIE SAINT-CALAIS BESSE</poste>
+ <poste code="0460240">TRESORERIE SAINT-CERE</poste>
+ <poste code="0420100">TRESORERIE SAINT-CHAMOND</poste>
+ <poste code="0300250">TRESORERIE SAINT-CHAPTES</poste>
+ <poste code="0320300">TRESORERIE DE SAINT-CLAR-MIRADOUX</poste>
+ <poste code="0160410">TRESORERIE SAINT-CLAUD</poste>
+ <poste code="0390410">TRESORERIE SAINT-CLAUDE MUN. ET BAN</poste>
+ <poste code="0920330">TRESORERIE SAINT-CLOUD</poste>
+ <poste code="0830040">TRESORERIE SAINT-CYR-SUR-MER</poste>
+ <poste code="1040990">SERVICE COMPTABLE DE LA COLLECTIVITÉ DES TERRES AUSTRALES ANTARCTIQUES FR</poste>
+ <poste code="0931060">TRESORERIE SAINT-DENIS</poste>
+ <poste code="0931070">TRESORERIE SAINT-DENIS MUNICIPALE</poste>
+ <poste code="0931080">TRESORERIE SAINT-DENIS CENTRE HOSPITALIER</poste>
+ <poste code="1040120">TRESORERIE SAINT-DENIS CTRE HOSP. DPT</poste>
+ <poste code="1040000">TRESORERIE GENERALE DE LA REUNION</poste>
+ <poste code="0430240">TRESORERIE SAINT-DIDIER-EN-VELAY</poste>
+ <poste code="0880580">TRESORERIE DE SAINT-DIE CARNOT</poste>
+ <poste code="0880590">TRESORERIE SAINT-DIE MUNICIPALE</poste>
+ <poste code="0520280">TRESORERIE SAINT-DIZIER ETS HOSP. ET OPHLM</poste>
+ <poste code="0520250">TRESORERIE SAINT-DIZIER</poste>
+ <poste code="0260220">TRESORERIE SAINT-DONAT-SUR-L'HERBASSE</poste>
+ <poste code="0380350">TRESORERIE SAINT-EGREVE</poste>
+ <poste code="1030080">TRESORERIE SAINT-ESPRIT</poste>
+ <poste code="0660280">TRESORERIE SAINT-ESTEVE</poste>
+ <poste code="0420120">TRESORERIE SAINT-ETIENNE NORD</poste>
+ <poste code="0420130">TRESORERIE SAINT-ETIENNE SUD EST</poste>
+ <poste code="0420140">TRESORERIE SAINT-ETIENNE SUD OUEST</poste>
+ <poste code="0420150">TRESORERIE SAINT-ETIENNE BANLIEUE</poste>
+ <poste code="0420900">PAIERIE DEPARTEMENTALE DE LA LOIRE</poste>
+ <poste code="0420000">TRESORERIE GENERALE DE LA LOIRE</poste>
+ <poste code="0420160">TRESORERIE SAINT-ETIENNE MUNICIPALE</poste>
+ <poste code="0420170">TRESORERIE SAINT-ETIENNE CHU</poste>
+ <poste code="0640420">TRESORERIE SAINT-ETIENNE-DE-BAIGORRY</poste>
+ <poste code="0440370">TRESORERIE SAINT-ETIENNE-DE-MONTLUC</poste>
+ <poste code="0380360">TRESORERIE SAINT-ETIENNE-DE-SAINT-GEOIRS</poste>
+ <poste code="0060200">TRESORERIE SAINT-ETIENNE-DE-TINEE</poste>
+ <poste code="0770030">TRESORERIE SAINT FARGEAU PONTHIERRY</poste>
+ <poste code="0070230">TRESORERIE DE SAINT-FELICIEN</poste>
+ <poste code="02B0200">TRESORERIE SAINT-FLORENT</poste>
+ <poste code="0490490">TRESORERIE SAINT-FLORENT-LE-VIEIL</poste>
+ <poste code="0180290">TRESORERIE DE SAINT-FLORENT-SUR-CHER</poste>
+ <poste code="0890370">TRESORERIE DE SAINT-FLORENTIN</poste>
+ <poste code="0150250">TRESORERIE SAINT-FLOUR</poste>
+ <poste code="0850150">TRESORERIE SAINT-FULGENT</poste>
+ <poste code="0420270">TRESORERIE SAINT-GALMIER</poste>
+ <poste code="0310530">TRESORERIE SAINT-GAUDENS</poste>
+ <poste code="0420190">TRESORERIE DE SAINT-GENEST-MALIFAUX</poste>
+ <poste code="0120220">TRESORERIE DES DEUX VALLEES</poste>
+ <poste code="0170350">TRESORERIE SAINT-GENIS-DE-SAINTONGE-ST-FORT</poste>
+ <poste code="0690280">TRESORERIE SAINT-GENIS-LAVAL</poste>
+ <poste code="0381220">TRESORERIE SAINT-GEOIRE-EN-VALDAINE</poste>
+ <poste code="0860190">TRESORERIE SAINT-GEORGES-LES-BAILLARGEAUX</poste>
+ <poste code="0490240">TRESORERIE SAINT-GEORGES-SUR-LOIRE</poste>
+ <poste code="0030330">TRESORERIE SAINT-GERMAIN-DES-FOSSES</poste>
+ <poste code="0710530">TRESORERIE SAINT-GERMAIN-DU-BOIS-MERVANS</poste>
+ <poste code="0780280">TRESORERIE SAINT-GERMAIN-EN-LAYE</poste>
+ <poste code="0780110">TRESORERIE SAINT-GERMAIN-POISSY CH</poste>
+ <poste code="0422110">TRESORERIE SAINT-GERMAIN-LAVAL</poste>
+ <poste code="0630270">TRESORERIE SAINT-GERMAIN-LEMBRON</poste>
+ <poste code="0630460">TRESORERIE DE SAINT-GERVAIS-D'AUVERGNE</poste>
+ <poste code="0740230">TRESORERIE SAINT-GERVAIS-LES-BAINS</poste>
+ <poste code="0460260">TRESORERIE DE SAINT-GERY</poste>
+ <poste code="0300270">TRESORERIE SAINT-GILLES</poste>
+ <poste code="0850370">TRESORERIE SAINT-GILLES-CROIX-DE-VIE</poste>
+ <poste code="0090160">TRESORERIE SAINT-GIRONS</poste>
+ <poste code="0440170">TRESORERIE SAINT-HERBLAIN</poste>
+ <poste code="0110340">TRESORERIE SAINT-HILAIRE</poste>
+ <poste code="0500320">TRESORERIE SAINT-HILAIRE - ISIGNY</poste>
+ <poste code="0250450">TRESORERIE SAINT-HIPPOLYTE</poste>
+ <poste code="0300280">TRESORERIE SAINT-HIPPOLYTE-DU-FORT</poste>
+ <poste code="0500330">TRESORERIE SAINT-JAMES</poste>
+ <poste code="0170120">TRESORERIE SAINT-JEAN-D'ANGELY</poste>
+ <poste code="0740070">TRESORERIE LE BIOT</poste>
+ <poste code="0381090">TRESORERIE SAINT-JEAN-DE-BOURNAY</poste>
+ <poste code="0450250">TRESORERIE ST-JEAN-DE-BRAYE</poste>
+ <poste code="0500170">TRESORERIE SAINT-JEAN-DE-DAYE</poste>
+ <poste code="0210580">TRESORERIE SAINT-JEAN-DE-LOSNE</poste>
+ <poste code="0640430">TRESORERIE SAINT-JEAN-DE-LUZ</poste>
+ <poste code="0730320">TRESORERIE SAINT-JEAN-DE-MAURIENNE</poste>
+ <poste code="0850380">TRESORERIE SAINT-JEAN-DE-MONTS</poste>
+ <poste code="0860360">TRESORERIE SAINT-JEAN-DE-SAUVES</poste>
+ <poste code="0300510">TRESORERIE SAINT-JEAN-DU-GARD-ST ANDRE</poste>
+ <poste code="0260230">TRESORERIE SAINT-JEAN-EN-ROYANS</poste>
+ <poste code="0640440">TRESORERIE SAINT-JEAN-PIED-DE-PORT</poste>
+ <poste code="0420290">TRESORERIE SAINT-JEAN-SOLEYMIEUX</poste>
+ <poste code="0050180">TRESORERIE SAINT-JEAN-SAINT-NICOLAS</poste>
+ <poste code="0740240">TRESORERIE SAINT-JEOIRE</poste>
+ <poste code="0430250">TRESORERIE SAINT-JULIEN-CHAPTEUIL</poste>
+ <poste code="0740250">TRESORERIE SAINT-JULIEN-EN-GENEVOIS</poste>
+ <poste code="0860200">TRESORERIE SAINT-JULIEN-L'ARS</poste>
+ <poste code="0870260">TRESORERIE SAINT-JUNIEN</poste>
+ <poste code="0600550">TRESORERIE SAINT-JUST-EN-CHAUSSEE</poste>
+ <poste code="0420300">TRESORERIE SAINT-JUST-SAINT-RAMBERT</poste>
+ <poste code="0690290">TRESORERIE SAINT-LAURENT-DE-CHAMOUSSET</poste>
+ <poste code="0660210">TRESORERIE SAINT-LAURENT-DE-LA-SALANQUE</poste>
+ <poste code="0650260">TRESORERIE SAINT-LAURENT-DE-NESTE</poste>
+ <poste code="1020030">TRESORERIE SAINT-LAURENT-DU-MARONI</poste>
+ <poste code="0380390">TRESORERIE SAINT-LAURENT-DU-PONT</poste>
+ <poste code="0061170">TRESORERIE SAINT-LAURENT DU VAR</poste>
+ <poste code="0010310">TRESORERIE SAINT-LAURENT-SUR-SAONE</poste>
+ <poste code="0870280">TRESORERIE SAINT-LEONARD-DE-NOBLAT</poste>
+ <poste code="1040060">TRESORERIE SAINT-LEU</poste>
+ <poste code="0600410">TRESORERIE SAINT-LEU-D'ESSERENT</poste>
+ <poste code="0500000">TRESORERIE GENERALE DE LA MANCHE</poste>
+ <poste code="0500180">TRESORERIE SAINT-LO-CANISY</poste>
+ <poste code="0500900">PAIERIE DEPARTEMENTALE DE LA MANCHE</poste>
+ <poste code="0330480">TRESORERIE SAINT-LOUBES</poste>
+ <poste code="0681200">TRESORERIE SAINT-LOUIS</poste>
+ <poste code="1040070">TRESORERIE SAINT-LOUIS</poste>
+ <poste code="0700370">TRESORERIE SAINT-LOUP-CONFLANS</poste>
+ <poste code="0310620">TRESORERIE SAINT-LYS</poste>
+ <poste code="0790360">TRESORERIE SAINT-MAIXENT L'ECOLE</poste>
+ <poste code="0350490">TRESORERIE SAINT MALO</poste>
+ <poste code="0350470">TRESORERIE DE SAINT-MALO MUNICIPALE</poste>
+ <poste code="0150260">TRESORERIE SAINT-MAMET-LA-SALVETAT</poste>
+ <poste code="0380400">TRESORERIE SAINT-MARCELLIN</poste>
+ <poste code="1010140">TRESORERIE DE SAINT-MARTIN</poste>
+ <poste code="0180300">TRESORERIE SAINT-MARTIN-D'AUXIGNY</poste>
+ <poste code="0380560">TRESORERIE SAINT-MARTIN-D'HERES</poste>
+ <poste code="0170130">TRESORERIE SAINT-MARTIN-DE-RE</poste>
+ <poste code="0400280">TRESORERIE SAINT-MARTIN-DE-SEIGNANX</poste>
+ <poste code="0150270">TRESORERIE SAINT-MARTIN-VALMEROUX</poste>
+ <poste code="0490250">TRESORERIE SAINT-MATHURIN-SUR-LOIRE</poste>
+ <poste code="0941080">TRESORERIE SAINT-MAUR-DES-FOSSES</poste>
+ <poste code="0941090">TRESORERIE SAINT-MAUR-DES-FOSSES MUNICIPALE</poste>
+ <poste code="0940340">TRESORERIE SAINT-MAURICE ETS HOSPITALIERS</poste>
+ <poste code="9940000">RECETTE DES FINANCES COMPTABLE SPÉCIALISÉ DU DOMAINE</poste>
+ <poste code="9930000">DIRECTION NATIONALE DES INTERVENTIONS DOMANIALES</poste>
+ <poste code="0830130">TRESORERIE SAINT-MAXIMIN-LA-SAINTE-BAUME</poste>
+ <poste code="0330620">TRESORERIE SAINT-MEDARD-EN-JALLES</poste>
+ <poste code="0350380">TRESORERIE SAINT-MEEN-LE-GRAND</poste>
+ <poste code="0160040">TRESORERIE ANGOULEME CENTRE HOSPITALIER</poste>
+ <poste code="0730330">TRESORERIE SAINT-MICHEL-DE-MAURIENNE</poste>
+ <poste code="0550230">TRESORERIE DE SAINT-MIHIEL</poste>
+ <poste code="0441130">TRESORERIE SAINT-NAZAIRE MUNICIPALE</poste>
+ <poste code="0441160">TRESORERIE SAINT-NAZAIRE ETAB.HOSPITALIERS</poste>
+ <poste code="0441000">RECETTE DES FINANCES SAINT-NAZAIRE</poste>
+ <poste code="0441110">TRESORERIE DE SAINT-NAZAIRE</poste>
+ <poste code="0820210">TRESORERIE SAINT-NICOLAS-DE-LA-GRAVE</poste>
+ <poste code="0540230">TRESORERIE SAINT-NICOLAS-DE-PORT</poste>
+ <poste code="0220420">TRESORERIE SAINT-NICOLAS-DU-PELEM</poste>
+ <poste code="0622320">TRESORERIE DE SAINT-OMER</poste>
+ <poste code="0931090">TRESORERIE SAINT-OUEN</poste>
+ <poste code="0931100">TRESORERIE SAINT-OUEN MUNICIPALE</poste>
+ <poste code="0950220">TRESORERIE SAINT-OUEN-L'AUMONE</poste>
+ <poste code="0640450">TRESORERIE SAINT-PALAIS</poste>
+ <poste code="0720080">TRESORERIE SAINT-PATERNE</poste>
+ <poste code="1040150">TRESORERIE SAINT PAUL MUNICIPALE HOPITAUX</poste>
+ <poste code="0810330">TRESORERIE SAINT-PAUL-CAP-DE-JOUX</poste>
+ <poste code="1040080">TRESORERIE SAINT-PAUL</poste>
+ <poste code="0660220">TRESORERIE SAINT-PAUL-DE-FENOUILLET</poste>
+ <poste code="0400220">TRESORERIE DE SAINT-PAUL-LES-DAX</poste>
+ <poste code="0260400">TRESORERIE SAINT-PAUL-TROIS-CHATEAUX-SUZE</poste>
+ <poste code="0430270">TRESORERIE SAINT-PAULIEN</poste>
+ <poste code="0070270">TRESORERIE SAINT-PERAY</poste>
+ <poste code="0440300">TRESORERIE DE SAINT-PHILBERT-DE-GRAND-LIEU</poste>
+ <poste code="1030090">TRESORERIE SAINT-PIERRE</poste>
+ <poste code="1040140">TRESORERIE SAINT-PIERRE GHSR</poste>
+ <poste code="0730340">TRESORERIE SAINT-PIERRE-D'ALBIGNY</poste>
+ <poste code="0170220">TRESORERIE SAINT-PIERRE-D'OLERON</poste>
+ <poste code="0240330">TRESORERIE DE SAINT-PIERRE-DE-CHIGNAC</poste>
+ <poste code="0370400">TRESORERIE DE TOURS BANLIEUE SUD</poste>
+ <poste code="0500480">TRESORERIE SAINT-PIERRE-EGLISE</poste>
+ <poste code="0580270">TRESORERIE SAINT-PIERRE-LE-MOUTIER</poste>
+ <poste code="0140580">TRESORERIE DE SAINT-PIERRE-SUR-DIVES</poste>
+ <poste code="0070280">TRESORERIE SAINT-PIERREVILLE</poste>
+ <poste code="0290300">TRESORERIE SAINT-POL-DE-LEON</poste>
+ <poste code="0594120">TRESORERIE SAINT-POL-SUR-MER</poste>
+ <poste code="0620430">TRESORERIE DE SAINT-POL-MONCHEAUX</poste>
+ <poste code="0340430">TRESORERIE DE SAINT-PONS-DE-THOMIERES</poste>
+ <poste code="0170400">TRESORERIE ST-PORCHAIRE-PT-L'ABBE-D'ARNOULT</poste>
+ <poste code="0030110">TRESORERIE SAINT-POURCAIN-SUR-SIOULE</poste>
+ <poste code="0690390">TRESORERIE DE SAINT-PRIEST</poste>
+ <poste code="0190150">TRESORERIE SAINT-PRIVAT</poste>
+ <poste code="0300410">TRESORERIE DE PAYS D'ALES</poste>
+ <poste code="0020580">TRESORERIE DE SAINT-QUENTIN</poste>
+ <poste code="0020600">TRESORERIE DE SAINT-QUENTIN MUNICIPALE</poste>
+ <poste code="0020610">TRESORERIE SAINT-QUENTIN CENTRE HOSPITALIER</poste>
+ <poste code="0260010">TRESORERIE ALBON</poste>
+ <poste code="0010320">TRESORERIE SAINT-RAMBERT-EN-BUGEY</poste>
+ <poste code="0831160">TRESORERIE SAINT-RAPHAEL</poste>
+ <poste code="0710490">TRESORERIE CHALON-SUR-SAONE PERIPHERIE</poste>
+ <poste code="0132110">TRESORERIE SAINT-REMY-DE-PROVENCE</poste>
+ <poste code="0630550">TRESORERIE SAINT-REMY-SUR-DUROLLE</poste>
+ <poste code="0290190">TRESORERIE SAINT-RENAN</poste>
+ <poste code="0762180">TRESORERIE SAINT-ROMAIN-DE-COLBOSC</poste>
+ <poste code="0120400">TRESORERIE SAINT-ROME-DE-TARN-BROQUIES</poste>
+ <poste code="0580280">TRESORERIE SAINT-SAULGE</poste>
+ <poste code="0890380">TRESORERIE ST-SAUVEUR-EN-PUISAYE-LAINSECQ</poste>
+ <poste code="0060210">TRESORERIE SAINT-SAUVEUR-SUR-TINEE</poste>
+ <poste code="0330750">TRESORERIE SAINT-SAVIN</poste>
+ <poste code="0860210">TRESORERIE SAINT-SAVIN</poste>
+ <poste code="0170230">TRESORERIE SAINT-SAVINIEN</poste>
+ <poste code="0210360">TRESORERIE SAINT-SEINE-L'ABBAYE</poste>
+ <poste code="0140350">TRESORERIE SAINT-SEVER-CALVADOS</poste>
+ <poste code="0400160">TRESORERIE SAINT-SEVER</poste>
+ <poste code="0020620">TRESORERIE SAINT-SIMON-FLAVY</poste>
+ <poste code="0810340">TRESORERIE DE SAINT-SULPICE</poste>
+ <poste code="0690400">TRESORERIE DE SAINT-SYMPHORIEN-D'OZON</poste>
+ <poste code="0422150">TRESORERIE SAINT-SYMPHORIEN-DE-LAY</poste>
+ <poste code="0690300">TRESORERIE SAINT-SYMPHORIEN-SUR-COISE</poste>
+ <poste code="0010330">TRESORERIE SAINT-TRIVIER-DE-COURTES</poste>
+ <poste code="0010340">TRESORERIE SAINT-TRIVIER-SUR-MOIGNANS</poste>
+ <poste code="0760740">TRESORERIE SAINT-VALERY-EN-CAUX</poste>
+ <poste code="0800660">TRESORERIE DE SAINT-VALERY-SUR-SOMME</poste>
+ <poste code="0260240">TRESORERIE SAINT-VALLIER</poste>
+ <poste code="0790370">TRESORERIE SAINT-VARENT</poste>
+ <poste code="0230160">TRESORERIE SAINT-VAURY</poste>
+ <poste code="0620820">TRESORERIE SAINT-VENANT</poste>
+ <poste code="0400290">TRESORERIE SAINT-VINCENT-DE-TYROSSE</poste>
+ <poste code="0250240">TRESORERIE SAINT-VIT-BOUSSIERES</poste>
+ <poste code="0870320">TRESORERIE DE SAINT-YRIEIX-LA-PERCHE</poste>
+ <poste code="0931110">TRESORERIE STAINS</poste>
+ <poste code="0240540">TRESORERIE SAINTE-ALVERE</poste>
+ <poste code="1010150">TRESORERIE SAINTE-ANNE</poste>
+ <poste code="0090150">TRESORERIE SAINTE-CROIX-VOLVESTRE</poste>
+ <poste code="0430020">TRESORERIE AUZON-SAINTE-FLORINE</poste>
+ <poste code="0330690">TRESORERIE SAINTE-FOY-LA-GRANDE</poste>
+ <poste code="0911130">TRESORERIE SAINTE-GENEVIEVE-DES-BOIS</poste>
+ <poste code="0120210">TRESORERIE DE L' ARGENCE ET DU CARLADEZ</poste>
+ <poste code="0850260">TRESORERIE SAINTE-HERMINE</poste>
+ <poste code="0470290">TRESORERIE SAINTE-LIVRADE-SUR-LOT</poste>
+ <poste code="0680210">TRESORERIE SAINTE-MARIE-AUX-MINES</poste>
+ <poste code="0370330">TRESORERIE SAINTE-MAURE-DE-TOURAINE</poste>
+ <poste code="0510160">TRESORERIE STE-MENEHOULD-VILLE-SUR-TOURBE</poste>
+ <poste code="0500470">TRESORERIE SAINTE-MERE-EGLISE</poste>
+ <poste code="1010160">TRESORERIE SAINTE-ROSE</poste>
+ <poste code="0250380">TRESORERIE MONTBELIARD ET DES DEUX VALLEES</poste>
+ <poste code="1040100">TRESORERIE SAINTE-SUZANNE</poste>
+ <poste code="0594200">TRESORERIE STEENVOORDE</poste>
+ <poste code="0550430">TRESORERIE STENAY</poste>
+ <poste code="0670000">TRESORERIE GENERALE DU BAS-RHIN</poste>
+ <poste code="0670007">CENTRE REGIONAL DES PENSIONS DU BAS-RHIN</poste>
+ <poste code="0670008">CENTRE DE FORMATION DEPARTEMENTAL DU BAS-RHIN</poste>
+ <poste code="0670009">DEPARTEMENT INFORMATIQUE DU BAS-RHIN</poste>
+ <poste code="0670530">TRESORERIE STRASBOURG KLEBER</poste>
+ <poste code="0670540">TRESORERIE STRASBOURG EST</poste>
+ <poste code="0670570">TRESORERIE STRASBOURG AMENDES</poste>
+ <poste code="0670600">TRESORERIE STRASBOURG HOP. UNIVERSITAIRES</poste>
+ <poste code="0670900">PAIERIE DEPARTEMENTALE DU BAS-RHIN</poste>
+ <poste code="0670580">RECETTE DES FINANCES STRASBOURG MUNICIPALE ET COM.URB</poste>
+ <poste code="0670800">PAIERIE REGIONALE D'ALSACE</poste>
+ <poste code="0510210">TRESORERIE SUIPPES</poste>
+ <poste code="0450300">TRESORERIE SULLY-SUR-LOIRE</poste>
+ <poste code="0920360">TRESORERIE DE SURESNES</poste>
+ <poste code="0170140">TRESORERIE SURGERES</poste>
+ <poste code="0260250">TRESORERIE TAIN-L'HERMITAGE</poste>
+ <poste code="0330180">TRESORERIE BORDEAUX CHU</poste>
+ <poste code="0330540">TRESORERIE TALENCE</poste>
+ <poste code="0050210">TRESORERIE DE TALLARD</poste>
+ <poste code="0740290">TRESORERIE TANINGES</poste>
+ <poste code="0580290">TRESORERIE TANNAY</poste>
+ <poste code="0690530">TRESORERIE TARARE</poste>
+ <poste code="0132120">TRESORERIE TARASCON</poste>
+ <poste code="0090200">TRESORERIE TARASCON-SUR-ARIEGE</poste>
+ <poste code="0650000">TRESORERIE GENERALE DES HAUTES-PYRENEES</poste>
+ <poste code="0650240">TRESORERIE TARBES ADOUR ECHEZ</poste>
+ <poste code="0650280">TRESORERIE DE TARBES</poste>
+ <poste code="0650290">TRESORERIE TARBES MUNICIPALE</poste>
+ <poste code="0650900">PAIERIE DEPARTEMENTALE DES HAUTES-PYRENEES</poste>
+ <poste code="0640330">TRESORERIE TARDETS-SORHOLUS</poste>
+ <poste code="0400310">TRESORERIE TARTAS</poste>
+ <poste code="0690310">TRESORERIE DE TASSIN-LA-DEMI-LUNE</poste>
+ <poste code="0590440">TRESORERIE DE TEMPLEUVE-LA-PÉVÈLE</poste>
+ <poste code="0430310">TRESORERIE TENCE</poste>
+ <poste code="0060230">TRESORERIE DE TENDE</poste>
+ <poste code="0020350">TRESORERIE TERGNIER</poste>
+ <poste code="0240380">TRESORERIE DE THENON</poste>
+ <poste code="0240370">TRESORERIE TERRASSON-LA-BACHELLERIE</poste>
+ <poste code="0520400">TRESORERIE TERRE-NATALE</poste>
+ <poste code="0680290">TRESORERIE THANN</poste>
+ <poste code="0880400">TRESORERIE THAON-LES-VOSGES</poste>
+ <poste code="0622330">TRESORERIE DE THEROUANNE</poste>
+ <poste code="0640340">TRESORERIE DE THEZE</poste>
+ <poste code="0540240">TRESORERIE DE THIAUCOURT-REGNIEVILLE</poste>
+ <poste code="0270400">TRESORERIE THIBERVILLE</poste>
+ <poste code="0630560">TRESORERIE THIERS</poste>
+ <poste code="0570640">TRESORERIE THIONVILLE-TROIS-FRONTIERES</poste>
+ <poste code="0570540">TRESORERIE THIONVILLE MUNICIPALE</poste>
+ <poste code="0570611">TRESORERIE DE METZ-THIONVILLE ETS.HOSP.BEL AIR</poste>
+ <poste code="0240390">TRESORERIE DE THIVIERS</poste>
+ <poste code="0690540">TRESORERIE DE THIZY-COURS-LA-VILLE</poste>
+ <poste code="0010370">TRESORERIE THOISSEY</poste>
+ <poste code="0740300">TRESORERIE THONES</poste>
+ <poste code="0740310">TRESORERIE THONON-LES-BAINS-LULLIN</poste>
+ <poste code="0490280">TRESORERIE DE THOUARCE</poste>
+ <poste code="0790410">TRESORERIE THOUARS</poste>
+ <poste code="0600460">TRESORERIE THOUROTTE</poste>
+ <poste code="0070320">TRESORERIE DE THUEYTS</poste>
+ <poste code="0660240">TRESORERIE THUIR</poste>
+ <poste code="0140360">TRESORERIE THURY-HARCOURT</poste>
+ <poste code="0490290">TRESORERIE TIERCE</poste>
+ <poste code="0140370">TRESORERIE TILLY-SUR-SEULLES</poste>
+ <poste code="0610400">TRESORERIE TINCHEBRAY</poste>
+ <poste code="0350480">TRESORERIE TINTENIAC</poste>
+ <poste code="0240400">TRESORERIE DE TOCANE-SAINT-APRE-LISLE</poste>
+ <poste code="0170240">TRESORERIE TONNAY-BOUTONNE</poste>
+ <poste code="0170250">TRESORERIE TONNAY-CHARENTE</poste>
+ <poste code="0470310">TRESORERIE TONNEINS</poste>
+ <poste code="0890410">TRESORERIE TONNERRE</poste>
+ <poste code="0500230">TRESORERIE TORIGNI-TESSY</poste>
+ <poste code="0760650">TRESORERIE DE TOTES</poste>
+ <poste code="0890420">TRESORERIE TOUCY</poste>
+ <poste code="0540070">TRESORERIE DE TOUL</poste>
+ <poste code="0540250">TRESORERIE DE TOUL-COLLECTIVITES</poste>
+ <poste code="0830000">TRESORERIE GENERALE DU VAR</poste>
+ <poste code="0830180">TRESORERIE TOULON EST</poste>
+ <poste code="0830190">TRESORERIE TOULON CENTRE ET OUEST</poste>
+ <poste code="0830200">TRESORERIE TOULON MUNICIPALE</poste>
+ <poste code="0830230">TRESORERIE VAR AMENDES</poste>
+ <poste code="0830001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DU VAR</poste>
+ <poste code="0830900">PAIERIE DEPARTEMENTALE DU VAR</poste>
+ <poste code="0310000">TRESORERIE GENERALE DE LA HAUTE-GARONNE</poste>
+ <poste code="0310007">CENTRE REGIONAL DES PENSIONS DE LA HAUTE-GARONNE</poste>
+ <poste code="0310008">CENTRE DE FORMATION DEPARTEMENTAL DE LA HAUTE-GARONNE</poste>
+ <poste code="0310009">DEPARTEMENT INFORMATIQUE DE LA HAUTE-GARONNE</poste>
+ <poste code="0310270">TRESORERIE DE TOULOUSE CITE</poste>
+ <poste code="0310280">TRESORERIE TOULOUSE-COTE-PAVEE</poste>
+ <poste code="0310290">TRESORERIE TOULOUSE BASSO CAMBO</poste>
+ <poste code="0310340">TRESORERIE TOULOUSE AMENDES</poste>
+ <poste code="0310350">RECETTE DES FINANCES TOULOUSE MUNICIPALE</poste>
+ <poste code="0310360">TRESORERIE TOULOUSE CHU</poste>
+ <poste code="0310370">TRESORERIE HOPITAL SPEC. MARCHANT-TOULOUSE</poste>
+ <poste code="0310800">PAIERIE REGIONALE DE MIDI-PYRENEES</poste>
+ <poste code="0310006">PÔLE NATIONAL DE SOUTIEN AU RESEAU DOMAINE DES RESSOURCES HUMAINES</poste>
+ <poste code="0310900">PAIERIE DEPARTEMENTALE DE LA HAUTE-GARONNE</poste>
+ <poste code="0310910">PÔLE NATIONAL DE LA REDEVANCE AUDIOVISUELLE DE TOULOUSE</poste>
+ <poste code="0310005">CENTRE AMENDE SERVICE DE TOULOUSE</poste>
+ <poste code="0590470">TRESORERIE DE TOURCOING MUNICIPALE</poste>
+ <poste code="0590480">TRESORERIE TOURCOING CENTRE HOSPITALIER</poste>
+ <poste code="0590450">TRESORERIE TOURCOING</poste>
+ <poste code="0500490">TRESORERIE TOURLAVILLE</poste>
+ <poste code="0770240">TRESORERIE TOURNAN-EN-BRIE</poste>
+ <poste code="0650300">TRESORERIE TOURNAY</poste>
+ <poste code="0470320">TRESORERIE TOURNON-D'AGENAIS</poste>
+ <poste code="0070330">TRESORERIE TOURNON-SUR-RHONE</poste>
+ <poste code="0710350">TRESORERIE TOURNUS</poste>
+ <poste code="0370000">TRESORERIE GENERALE EN INDRE-ET-LOIRE</poste>
+ <poste code="0370007">CENTRE REGIONAL DES PENSIONS D' INDRE-ET-LOIRE</poste>
+ <poste code="0370008">CENTRE DE FORMATION DEPARTEMENTAL D' INDRE-ET-LOIRE</poste>
+ <poste code="0370009">DEPARTEMENT INFORMATIQUE D' INDRE-ET-LOIRE</poste>
+ <poste code="0370370">TRESORERIE DE TOURS</poste>
+ <poste code="0370410">TRESORERIE DE TOURS MUNICIPALE</poste>
+ <poste code="0370420">TRESORERIE TOURS CHU</poste>
+ <poste code="0370440">TRESORERIE OPAC D'INDRE-ET-LOIRE</poste>
+ <poste code="0370900">PAIERIE DEPARTEMENTALE D' INDRE-ET-LOIRE</poste>
+ <poste code="0370001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE L' INDRE ET LOIRE</poste>
+ <poste code="0370450">TRESORERIE DE L' OPAC DE TOURS</poste>
+ <poste code="0710360">TRESORERIE DE TRAMAYES</poste>
+ <poste code="0780430">TRESORERIE TRAPPES</poste>
+ <poste code="0220430">TRESORERIE DE TREGUIER-LA ROCHE-DERRIEN</poste>
+ <poste code="0190180">TRESORERIE TREIGNAC</poste>
+ <poste code="0490300">TRESORERIE DE TRELAZE</poste>
+ <poste code="0595300">TRESORERIE TRELON</poste>
+ <poste code="0930370">TRESORERIE TREMBLAY-EN-FRANCE</poste>
+ <poste code="0131150">TRESORERIE TRETS</poste>
+ <poste code="0140380">TRESORERIE TREVIERES</poste>
+ <poste code="0010390">TRESORERIE TREVOUX</poste>
+ <poste code="0650310">TRESORERIE TRIE-SUR-BAISE</poste>
+ <poste code="0781160">TRESORERIE TRIEL-SUR-SEINE</poste>
+ <poste code="0595110">TRESORERIE TRITH-SAINT-LEGER</poste>
+ <poste code="0140390">TRESORERIE TROARN-ARGENCES</poste>
+ <poste code="0140590">TRESORERIE TROUVILLE-SUR-MER-DEAUVILLE</poste>
+ <poste code="0100360">TRESORERIE DE TROYES MUNICIPALE</poste>
+ <poste code="0100350">TRESORERIE DE TROYES</poste>
+ <poste code="0100000">TRESORERIE GENERALE DE L' AUBE</poste>
+ <poste code="0100280">TRESORERIE DE PONT-SAINTE-MARIE</poste>
+ <poste code="0100330">TRESORERIE DE SAINTE-SAVINE</poste>
+ <poste code="0100370">TRESORERIE DE TROYES CENTRE HOSPITALIER</poste>
+ <poste code="0100900">PAIERIE DEPARTEMENTALE DE L' AUBE</poste>
+ <poste code="0670620">TRESORERIE DE TRUCHTERSHEIM</poste>
+ <poste code="0110520">TRESORERIE TUCHAN</poste>
+ <poste code="0190000">TRESORERIE GENERALE DE LA CORREZE</poste>
+ <poste code="0190190">TRESORERIE TULLE</poste>
+ <poste code="0759001">AGENCE COMPTABLE DE LA RIEP - ANNEXE TULLE</poste>
+ <poste code="0190900">PAIERIE DEPARTEMENTALE DE LA CORREZE</poste>
+ <poste code="0380460">TRESORERIE TULLINS</poste>
+ <poste code="1190000">TRESORERIE AMBASSADE DE FRANCE EN TUNISIE</poste>
+ <poste code="0730350">TRESORERIE UGINE</poste>
+ <poste code="0190200">TRESORERIE USSEL</poste>
+ <poste code="0640460">TRESORERIE USTARITZ</poste>
+ <poste code="1610010">TRESORERIE DES ILES-SOUS-LE-VENT</poste>
+ <poste code="1630000">PAIERIE DES ILES WALLIS ET FUTUNA</poste>
+ <poste code="0190210">TRESORERIE UZERCHE</poste>
+ <poste code="0300350">TRESORERIE UZES</poste>
+ <poste code="0810350">TRESORERIE VABRE</poste>
+ <poste code="0020490">TRESORERIE DE VAILLY-SUR-AISNE-CHASSEMY</poste>
+ <poste code="0840270">TRESORERIE DE VAISON-LA-ROMAINE</poste>
+ <poste code="0520360">TRESORERIE LE VAL-DE-MEUSE</poste>
+ <poste code="0270410">TRESORERIE VAL-DE-REUIL</poste>
+ <poste code="0380470">TRESORERIE VALBONNAIS</poste>
+ <poste code="0250250">TRESORERIE VALDAHON</poste>
+ <poste code="0900100">TRESORERIE VALDOIE</poste>
+ <poste code="0360290">TRESORERIE DE VALENCAY</poste>
+ <poste code="0260000">TRESORERIE GENERALE DE LA DROME</poste>
+ <poste code="0260260">TRESORERIE VALENCE</poste>
+ <poste code="0260270">TRESORERIE VALENCE MUNICIPALE</poste>
+ <poste code="0260280">TRESORERIE VALENCE HOPITAUX</poste>
+ <poste code="0260290">TRESORERIE VALENCE OPHLM</poste>
+ <poste code="0260900">PAIERIE DEPARTEMENTALE DE LA DROME</poste>
+ <poste code="0820230">TRESORERIE VALENCE-D'AGEN</poste>
+ <poste code="0810170">TRESORERIE VALENCE-D'ALBIGEOIS</poste>
+ <poste code="0320360">TRESORERIE VALENCE-SUR-BAISE</poste>
+ <poste code="0595000">RECETTE DES FINANCES VALENCIENNES</poste>
+ <poste code="0595090">TRESORERIE ONNAING</poste>
+ <poste code="0595160">TRESORERIE VALENCIENNES CENTRE HOSPITALIER</poste>
+ <poste code="0595140">TRESORERIE DE VALENCIENNES</poste>
+ <poste code="0061120">TRESORERIE VALLAURIS</poste>
+ <poste code="0300360">TRESORERIE VALLERAUGUE</poste>
+ <poste code="0070350">TRESORERIE VALLON-PONT-D'ARC</poste>
+ <poste code="0762150">TRESORERIE VALMONT</poste>
+ <poste code="0500500">TRESORERIE VALOGNES</poste>
+ <poste code="0840280">TRESORERIE VALREAS</poste>
+ <poste code="0070360">TRESORERIE VALS-LES-BAINS</poste>
+ <poste code="0540280">TRESORERIE VANDOEUVRE-LES-NANCY</poste>
+ <poste code="0560000">TRESORERIE GENERALE DU MORBIHAN</poste>
+ <poste code="0560170">TRESORERIE VANNES-CLISSON</poste>
+ <poste code="0560180">TRESORERIE VANNES-MENIMUR</poste>
+ <poste code="0560190">TRESORERIE VANNES MUNICIPALE</poste>
+ <poste code="0560900">PAIERIE DEPARTEMENTALE DU MORBIHAN</poste>
+ <poste code="0560001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DU MORBIHAN</poste>
+ <poste code="0921130">TRESORERIE VANVES</poste>
+ <poste code="0550440">TRESORERIE DE VARENNES-EN-ARGONNE</poste>
+ <poste code="0030340">TRESORERIE VARENNES-SUR-ALLIER</poste>
+ <poste code="0090280">TRESORERIE VARILHES</poste>
+ <poste code="0580300">TRESORERIE VARZY</poste>
+ <poste code="0550280">TRESORERIE DE VAUCOULEURS - VOID VACON</poste>
+ <poste code="0690320">TRESORERIE VAUGNERAY</poste>
+ <poste code="0690450">TRESORERIE VAULX-EN-VELIN</poste>
+ <poste code="0300370">TRESORERIE VAUVERT</poste>
+ <poste code="0700410">TRESORERIE VAUVILLERS</poste>
+ <poste code="0240560">TRESORERIE DE VELINES ET LAMOTHE-MONTRAVEL</poste>
+ <poste code="0210440">TRESORERIE VENAREY-LES-LAUMES</poste>
+ <poste code="0061130">TRESORERIE VENCE</poste>
+ <poste code="0100380">TRESORERIE DE VENDEUVRE-SUR-BARSE</poste>
+ <poste code="0410350">TRESORERIE VENDOME</poste>
+ <poste code="0690330">TRESORERIE DE VENISSIEUX</poste>
+ <poste code="0550450">TRESORERIE DE VERDUN</poste>
+ <poste code="0820240">TRESORERIE VERDUN-SUR-GARONNE</poste>
+ <poste code="0710560">TRESORERIE VERDUN-SUR-LE-DOUBS</poste>
+ <poste code="0300380">TRESORERIE VERGEZE</poste>
+ <poste code="0240410">TRESORERIE VERGT</poste>
+ <poste code="0020630">TRESORERIE VERMAND</poste>
+ <poste code="0890440">TRESORERIE VERMENTON</poste>
+ <poste code="0270140">TRESORERIE VERNEUIL-SUR-AVRE</poste>
+ <poste code="0270150">TRESORERIE VERNON</poste>
+ <poste code="0570550">TRESORERIE VERNY</poste>
+ <poste code="0780000">TRESORERIE GENERALE DES YVELINES</poste>
+ <poste code="0780008">CENTRE DE FORMATION DEPARTEMENTAL DES YVELINES</poste>
+ <poste code="0780009">DEPARTEMENT INFORMATIQUE DES YVELINES</poste>
+ <poste code="0780330">TRESORERIE DE VERSAILLES</poste>
+ <poste code="0780360">TRESORERIE DE VERSAILLES BANLIEUE</poste>
+ <poste code="0780370">TRESORERIE DE VERSAILLES MUNICIPALE</poste>
+ <poste code="0780900">PAIERIE DEPARTEMENTALE YVELINES</poste>
+ <poste code="0780450">TRESORERIE DE L' OPIEVOY-HLM</poste>
+ <poste code="0780001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DES YVELINES</poste>
+ <poste code="0630320">TRESORERIE VERTAIZON</poste>
+ <poste code="0440180">TRESORERIE DE VERTOU</poste>
+ <poste code="0020690">TRESORERIE VERVINS</poste>
+ <poste code="0512160">TRESORERIE DE VERZY</poste>
+ <poste code="02B0220">TRESORERIE VESCOVATO</poste>
+ <poste code="0700000">TRESORERIE GENERALE DE LA HAUTE-SAONE</poste>
+ <poste code="0700440">TRESORERIE VESOUL</poste>
+ <poste code="0700900">PAIERIE DEPARTEMENTALE DE LA HAUTE-SAONE</poste>
+ <poste code="0050230">TRESORERIE VEYNES</poste>
+ <poste code="0300530">TRESORERIE DE VEZENOBRES</poste>
+ <poste code="0951090">TRESORERIE VIARMES</poste>
+ <poste code="0720520">TRESORERIE VIBRAYE</poste>
+ <poste code="0650320">TRESORERIE VIC-EN-BIGORRE</poste>
+ <poste code="0320370">TRESORERIE VIC-FEZENSAC</poste>
+ <poste code="0630330">TRESORERIE VIC-LE-COMTE</poste>
+ <poste code="0020500">TRESORERIE VIC-SUR-AISNE</poste>
+ <poste code="0150300">TRESORERIE VIC-SUR-CERE</poste>
+ <poste code="0570560">TRESORERIE VIC-SUR-SEILLE</poste>
+ <poste code="0090210">TRESORERIE VICDESSOS</poste>
+ <poste code="0030350">TRESORERIE VICHY</poste>
+ <poste code="02A0120">TRESORERIE VICO</poste>
+ <poste code="0650330">TRESORERIE VIELLE-AURE</poste>
+ <poste code="0381000">RECETTE DES FINANCES VIENNE</poste>
+ <poste code="0381140">TRESORERIE VIENNE MUNICIPALE</poste>
+ <poste code="0381130">TRESORERIE DE VIENNE</poste>
+ <poste code="0180400">TRESORERIE DE VIERZON VILLE ET CAMPAGNE</poste>
+ <poste code="0380480">TRESORERIE VIF</poste>
+ <poste code="0190320">TRESORERIE VIGEOIS</poste>
+ <poste code="0550290">TRESORERIE DE VIGNEULLES-LES-HATTONCHATEL</poste>
+ <poste code="0910320">TRESORERIE VIGNEUX-SUR-SEINE</poste>
+ <poste code="0520260">TRESORERIE VIGNORY</poste>
+ <poste code="0950270">TRESORERIE VIGNY</poste>
+ <poste code="0570570">TRESORERIE VIGY</poste>
+ <poste code="0490530">TRESORERIE DE VIHIERS</poste>
+ <poste code="0530320">TRESORERIE VILLAINES-LA-JUHEL</poste>
+ <poste code="0380490">TRESORERIE VILLARD-DE-LANS</poste>
+ <poste code="0010400">TRESORERIE VILLARS-LES-DOMBES</poste>
+ <poste code="0670630">TRESORERIE VILLE</poste>
+ <poste code="02B0050">TRESORERIE CAP CORSE</poste>
+ <poste code="0512180">TRESORERIE VILLE-EN-TARDENOIS</poste>
+ <poste code="0160440">TRESORERIE VILLEBOIS-LAVALETTE</poste>
+ <poste code="0500370">TRESORERIE DE VILLEDIEU-PERCY</poste>
+ <poste code="0480230">TRESORERIE VILLEFORT</poste>
+ <poste code="0660260">TRESORERIE DU CONFLENT</poste>
+ <poste code="0310390">TRESORERIE VILLEFRANCHE-DE-LAURAGAIS</poste>
+ <poste code="0120450">TRESORERIE VILLEFRANCHE-DE-ROUERGUE</poste>
+ <poste code="0690550">TRESORERIE DE VILLEFRANCHE HERON</poste>
+ <poste code="0060250">TRESORERIE VILLEFRANCHE-SUR-MER</poste>
+ <poste code="0690560">TRESORERIE VILLEFRANCHE RIVOLI</poste>
+ <poste code="0940320">TRESORERIE VILLEJUIF CHS PAUL GUIRAUD</poste>
+ <poste code="0940210">TRESORERIE VILLEJUIF</poste>
+ <poste code="0911150">TRESORERIE VILLEMOISSON-SUR-ORGE</poste>
+ <poste code="0330590">TRESORERIE VILLENAVE-D'ORNON</poste>
+ <poste code="0120460">TRESORERIE VILLENEUVE</poste>
+ <poste code="0590010">TRESORERIE DE VILLENEUVE-D'ASCQ</poste>
+ <poste code="0070390">TRESORERIE VILLENEUVE-DE-BERG</poste>
+ <poste code="0400180">TRESORERIE VILLENEUVE-DE-MARSAN</poste>
+ <poste code="0890560">TRESORERIE DE VILLENEUVE-L'ARCHEVEQUE</poste>
+ <poste code="0920380">TRESORERIE VILLENEUVE-LA-GARENNE</poste>
+ <poste code="0940220">TRESORERIE DE VILLENEUVE-LE-ROI</poste>
+ <poste code="0300400">TRESORERIE VILLENEUVE-LES-AVIGNON</poste>
+ <poste code="0940230">TRESORERIE VILLENEUVE-SAINT-GEORGES</poste>
+ <poste code="0470330">TRESORERIE VILLENEUVE-SUR-LOT</poste>
+ <poste code="0890570">TRESORERIE DE VILLENEUVE-SUR-YONNE</poste>
+ <poste code="0930360">TRESORERIE AULNAY-SOUS-BOIS ET. HOSP.</poste>
+ <poste code="0470340">TRESORERIE VILLEREAL</poste>
+ <poste code="0140420">TRESORERIE DE VILLERS-BOCAGE</poste>
+ <poste code="0800460">TRESORERIE VILLERS-BOCAGE</poste>
+ <poste code="0020510">TRESORERIE DE VILLERS-COTTERETS</poste>
+ <poste code="0700450">TRESORERIE VILLERSEXEL</poste>
+ <poste code="0690340">TRESORERIE DE VILLEURBANNE</poste>
+ <poste code="0690350">TRESORERIE DE VILLEURBANNE MUNICIPALE</poste>
+ <poste code="0951110">TRESORERIE VILLIERS-LE-BEL</poste>
+ <poste code="0941100">TRESORERIE DE VILLIERS-SUR-MARNE</poste>
+ <poste code="0610420">TRESORERIE VIMOUTIERS</poste>
+ <poste code="0620470">TRESORERIE VIMY</poste>
+ <poste code="0380500">TRESORERIE VINAY</poste>
+ <poste code="0660270">TRESORERIE VINCA</poste>
+ <poste code="0941120">TRESORERIE VINCENNES MUNICIPALE</poste>
+ <poste code="0941110">TRESORERIE DE VINCENNES</poste>
+ <poste code="0140430">TRESORERIE VIRE</poste>
+ <poste code="0381240">TRESORERIE VIRIEU</poste>
+ <poste code="0910330">TRESORERIE VIRY-CHATILLON</poste>
+ <poste code="0350390">TRESORERIE VITRE</poste>
+ <poste code="0131170">TRESORERIE VITROLLES</poste>
+ <poste code="0620480">TRESORERIE VITRY-EN-ARTOIS</poste>
+ <poste code="0510150">TRESORERIE DE VITRY - RURAL</poste>
+ <poste code="0510280">TRESORERIE DE VITRY-LE-FRANCOIS</poste>
+ <poste code="0940260">TRESORERIE VITRY-SUR-SEINE</poste>
+ <poste code="0940270">TRESORERIE VITRY-SUR-SEINE MUNICIPALE</poste>
+ <poste code="0210470">TRESORERIE VITTEAUX</poste>
+ <poste code="0880450">TRESORERIE VITTEL-REMONCOURT</poste>
+ <poste code="0860260">TRESORERIE VIVONNE</poste>
+ <poste code="0380520">TRESORERIE VIZILLE</poste>
+ <poste code="0380530">TRESORERIE VOIRON</poste>
+ <poste code="0390270">TRESORERIE VOITEUR</poste>
+ <poste code="0040280">TRESORERIE VOLONNE</poste>
+ <poste code="0630470">TRESORERIE VOLVIC</poste>
+ <poste code="0430320">TRESORERIE VOREY</poste>
+ <poste code="0860270">TRESORERIE VOUILLE</poste>
+ <poste code="0370430">TRESORERIE DE VOUVRAY</poste>
+ <poste code="0080510">TRESORERIE VOUZIERS</poste>
+ <poste code="0280310">TRESORERIE DE VOVES-ORGERES EN BEAUCE</poste>
+ <poste code="1780000">TRESORERIE AMBASSADE DE FRANCE AUX ETATS-UNIS</poste>
+ <poste code="0590090">TRESORERIE DE WASQUEHAL</poste>
+ <poste code="0670640">TRESORERIE WASSELONNE</poste>
+ <poste code="0020640">TRESORERIE WASSIGNY</poste>
+ <poste code="0520270">TRESORERIE DE WASSY</poste>
+ <poste code="0590490">TRESORERIE WATTIGNIES</poste>
+ <poste code="0590500">TRESORERIE WATTRELOS</poste>
+ <poste code="0590110">TRESORERIE FOURNES-EN-WEPPES</poste>
+ <poste code="0671200">TRESORERIE DE WISSEMBOURG</poste>
+ <poste code="0671210">TRESORERIE WOERTH</poste>
+ <poste code="0594150">TRESORERIE WORMHOUT</poste>
+ <poste code="0880480">TRESORERIE XERTIGNY</poste>
+ <poste code="1390000">TRESORERIE AMBASSADE DE FRANCE AU CAMEROUN</poste>
+ <poste code="0730360">TRESORERIE D' YENNE</poste>
+ <poste code="0760480">TRESORERIE YERVILLE</poste>
+ <poste code="0430330">TRESORERIE YSSINGEAUX</poste>
+ <poste code="0760490">TRESORERIE YVETOT</poste>
+ <poste code="0030130">TRESORERIE DE MOULINS</poste>
+ </xsl:variable>
+
+ <xsl:template match="/*[position()=1]">
+ <xsl:if test="local-name() = 'PES_Aller'">
+ <!--xsl:variable name="signatureGlobaleMetier" select="exists(/n:PES_Aller/ds:signature) and not(exists(/n:PES_Aller/*/ds:signature)) and (/n:PES_Aller/n:PES_DepenseAller/n:EnTeteDepense/n:InfoDematerialisee/@V or /n:PES_Aller/n:PES_RecetteAller/n:EnTeteRecette/n:InfoDematerialisee/@V)"/-->
+ <PES_Aller xmlns="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/aller" xmlns:added="http://projets.admisource.gouv.fr/xemelios/namespaces#added" xmlns:n="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/aller" xmlns:ano="http://projets.admisource.gouv.fr/xemelios/namespaces#anomally">
+ <xsl:for-each select="./@*">
+ <xsl:attribute name="{local-name(.)}" namespace="{namespace-uri(.)}" select="."/>
+ </xsl:for-each>
+ <xsl:variable name="signatureGlobaleMetier">
+ <xsl:choose>
+ <xsl:when test="exists(/n:PES_Aller/ds:Signature)">
+ <xsl:choose>
+ <xsl:when test="not(exists(/n:PES_Aller/*/ds:Signature))">
+ <xsl:choose>
+ <xsl:when test="exists(/n:PES_Aller/*[local-name()='PES_RecetteAller'])">
+ <xsl:choose>
+ <xsl:when test="exists(/n:PES_Aller/*[local-name()='PES_RecetteAller']/*[local-name()='EnTeteRecette'])">
+ <xsl:choose>
+ <xsl:when test="exists(/n:PES_Aller/*[local-name()='PES_RecetteAller']/*[local-name()='EnTeteRecette']/*[local-name()='InfoDematerialisee'])">
+ <xsl:choose>
+ <xsl:when test="./*[local-name()='PES_RecetteAller']/*[local-name()='EnTeteRecette']/*[local-name()='InfoDematerialisee']/@V='1'">
+ <xsl:value-of select="true()"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="false()"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="false()"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="false()"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="false()"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="false()"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="false()"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:comment> This file is <xsl:if test="not($signatureGlobaleMetier)">not </xsl:if>signed </xsl:comment>
+ <xsl:for-each select="./*">
+ <xsl:call-template name="writeElement">
+ <xsl:with-param name="el" select="."/>
+ <xsl:with-param name="signatureGlobale" select="$signatureGlobaleMetier"/>
+ </xsl:call-template>
+ </xsl:for-each>
+ </PES_Aller>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template name="writeElement">
+ <xsl:param name="el"/>
+ <xsl:param name="signatureGlobale" select="false()"/>
+ <xsl:choose>
+ <xsl:when test="namespace-uri($el) = 'http://projets.admisource.gouv.fr/xemelios/namespaces#anomally'">
+ <xsl:element name="{name($el)}" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#anomally">
+ <xsl:for-each select="$el/@*">
+ <xsl:attribute name="{name(.)}" namespace="{namespace-uri(.)}">
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+ </xsl:for-each>
+ <xsl:value-of select="text()" disable-output-escaping="yes"/>
+ <xsl:for-each select="$el/*">
+ <xsl:call-template name="writeElement">
+ <xsl:with-param name="el" select="."/>
+ <xsl:with-param name="signatureGlobale" select="$signatureGlobale"/>
+ </xsl:call-template>
+ </xsl:for-each>
+ </xsl:element>
+ </xsl:when>
+ <xsl:when test="namespace-uri($el) = 'http://www.w3.org/2000/09/xmldsig#'">
+ <xsl:element name="{name($el)}" namespace="http://www.w3.org/2000/09/xmldsig#">
+ <xsl:for-each select="$el/@*">
+ <xsl:attribute name="{name(.)}" namespace="{namespace-uri(.)}">
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+ </xsl:for-each>
+ <xsl:value-of select="text()" disable-output-escaping="yes"/>
+ <xsl:for-each select="$el/*">
+ <xsl:call-template name="writeElement">
+ <xsl:with-param name="el" select="."/>
+ <xsl:with-param name="signatureGlobale" select="$signatureGlobale"/>
+ </xsl:call-template>
+ </xsl:for-each>
+ </xsl:element>
+ </xsl:when>
+ <xsl:when test="namespace-uri($el) = 'http://uri.etsi.org/01903/v1.1.1#'">
+ <xsl:element name="{name($el)}" namespace="http://uri.etsi.org/01903/v1.1.1#">
+ <xsl:for-each select="$el/@*">
+ <xsl:attribute name="{name(.)}" namespace="{namespace-uri(.)}">
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+ </xsl:for-each>
+ <xsl:value-of select="text()" disable-output-escaping="yes"/>
+ <xsl:for-each select="$el/*">
+ <xsl:call-template name="writeElement">
+ <xsl:with-param name="el" select="."/>
+ <xsl:with-param name="signatureGlobale" select="$signatureGlobale"/>
+ </xsl:call-template>
+ </xsl:for-each>
+ </xsl:element>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:element name="{name($el)}" namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/aller">
+ <xsl:for-each select="$el/@*">
+ <xsl:choose>
+ <xsl:when test="namespace-uri(.) = 'http://projets.admisource.gouv.fr/xemelios/namespaces#anomally'">
+ <xsl:attribute name="{local-name(.)}" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#anomally">
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="{local-name(.)}">
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ <xsl:choose>
+ <xsl:when test="contains('|Bordereau|Piece|LigneDePiece|PJRef|Tiers|Recouvrement',concat('|',name($el)))">
+ <xsl:attribute name="generated-id" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#added">
+ <xsl:value-of select="generate-id()"/>
+ </xsl:attribute>
+ <!--xsl:attribute name="tag-name" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#added">
+ <xsl:value-of select="name($el)"/>
+ </xsl:attribute-->
+ </xsl:when>
+ <xsl:when test="local-name($el) = 'InfoTiers'">
+ <xsl:attribute name="key" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#added">
+ <xsl:value-of select="concat(*[local-name()='Nom']/@V,' ',*[local-name()='Prenom']/@V)"/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="local-name($el) = 'InfoLignePiece'">
+ <xsl:attribute name="imputation" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#added">
+ <xsl:value-of select="concat(*[local-name()='Nature']/@V,'-',*[local-name()='Fonction']/@V,'-',*[local-name()='Operation']/@V)"/>
+ </xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+ <xsl:choose>
+ <xsl:when test="local-name($el)='Bordereau'">
+ <xsl:attribute name="nbPiece" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#added">
+ <xsl:value-of select="count(./*[local-name()='Piece'])"/>
+ </xsl:attribute>
+ <xsl:attribute name="montantTTC" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#added">
+ <xsl:value-of select="sum(./*[local-name()='BlocBordereau']/*[local-name()='MtBordHt']/@V) + sum(./*[local-name()='BlocBordereau']/*[local-name()='MtBordTVA']/@V)"/>
+ </xsl:attribute>
+ <xsl:attribute name="TypBordLibelle" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#added">
+ <xsl:variable name="codTypBord" select="*[local-name()='BlocBordereau']/*[local-name()='TypBord']/@V"/>
+ <xsl:choose>
+ <xsl:when test="$codTypBord='01'">Bordereau ordinaire</xsl:when>
+ <xsl:when test="$codTypBord='02'">Bordereau d'annulation/réduction</xsl:when>
+ <xsl:when test="$codTypBord='03'">Bordereau d'ordre de recette</xsl:when>
+ <xsl:when test="$codTypBord='04'">Bordereau de titre émis suite à décision juridictionnelle</xsl:when>
+ <xsl:when test="$codTypBord='05'">Entête P503</xsl:when>
+ <xsl:otherwise>Type de bordereau inconnu</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="local-name($el)='Piece'">
+ <xsl:attribute name="nbLigne" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#added">
+ <xsl:value-of select="count(./*[local-name()='LigneDePiece'])"/>
+ </xsl:attribute>
+ <xsl:attribute name="montantHT" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#added">
+ <xsl:value-of select="sum(./*[local-name()='LigneDePiece']/*[local-name()='BlocLignePiece']/*[local-name()='InfoLignePiece']/*[local-name()='MtHT']/@V)"/>
+ </xsl:attribute>
+ <xsl:attribute name="montantTTC" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#added">
+ <xsl:value-of select="sum(./*[local-name()='LigneDePiece']/*[local-name()='BlocLignePiece']/*[local-name()='InfoLignePiece']/*[local-name()='MtHT']/@V) + sum(./*[local-name()='LigneDePiece']/*[local-name()='BlocLignePiece']/*[local-name()='InfoLignePiece']/*[local-name()='MtTVA']/@V)"/>
+ </xsl:attribute>
+ <xsl:choose>
+ <xsl:when test="count(*[local-name()='BlocPiece']/*[local-name()='PJRef']) > 0">
+ <xsl:attribute name="avecPJ" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#added">true</xsl:attribute>
+ <xsl:attribute name="nbPJ" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#added">
+ <xsl:value-of select="count($el/descendant::node()[local-name()='PJRef'])"/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="avecPJ" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#added">false</xsl:attribute>
+ <xsl:attribute name="nbPJ" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#added">
+ <xsl:value-of select="count($el/descendant::node()[local-name()='PJRef'])"/>
+ </xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:attribute name="TypPceLibelle" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#added">
+ <xsl:variable name="codTypPce" select="*[local-name()='BlocPiece']/*[local-name()='TypPce']/@V"/>
+ <xsl:choose>
+ <xsl:when test="$codTypPce='01'">Titre ordinaire</xsl:when>
+ <xsl:when test="$codTypPce='02'">Titre correctif</xsl:when>
+ <xsl:when test="$codTypPce='03'">Titre d'ordre budgétaire</xsl:when>
+ <xsl:when test="$codTypPce='04'">Titre d'ordre mixte</xsl:when>
+ <xsl:when test="$codTypPce='05'">Titre émis après encaissement</xsl:when>
+ <xsl:when test="$codTypPce='06'">Titre récapitulatif avec rôle</xsl:when>
+ <xsl:when test="$codTypPce='07'">Titre récapitulatif sans rôle</xsl:when>
+ <xsl:when test="$codTypPce='08'">Rôle titre</xsl:when>
+ <xsl:when test="$codTypPce='09'">Titre de majoration</xsl:when>
+ <xsl:when test="$codTypPce='10'">Titre en plusieurs années</xsl:when>
+ <xsl:when test="$codTypPce='11'">Titre de rattachement</xsl:when>
+ <xsl:when test="$codTypPce='12'">Ordre de recette ordonnateur</xsl:when>
+ <xsl:when test="$codTypPce='13'">Demande émission de titre (P503)</xsl:when>
+ <xsl:when test="$codTypPce='14'">Produits constatés d'avance</xsl:when>
+ </xsl:choose>
+ </xsl:attribute>
+ <xsl:attribute name="LibelleNatPiece" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#added">
+ <xsl:variable name="codNatPce" select="*[local-name()='BlocPiece']/*[local-name()='NatPce']/@V"/>
+ <xsl:choose>
+ <xsl:when test="$codNatPce='01'">Fonctionnement</xsl:when>
+ <xsl:when test="$codNatPce='02'">Investissement</xsl:when>
+ <xsl:when test="$codNatPce='03'">Inventaire</xsl:when>
+ <xsl:when test="$codNatPce='04'">Emprunt</xsl:when>
+ <xsl:when test="$codNatPce='05'">Régie</xsl:when>
+ <xsl:when test="$codNatPce='06'">Annulation/Réduction</xsl:when>
+ <xsl:when test="$codNatPce='07'">Complémentaire</xsl:when>
+ <xsl:when test="$codNatPce='08'">Ré-émis</xsl:when>
+ <xsl:when test="$codNatPce='09'">Annulant un mandat</xsl:when>
+ <xsl:when test="$codNatPce='10'">Annulation du titre de rattachement</xsl:when>
+ <xsl:when test="$codNatPce='11'">Marché</xsl:when>
+ <xsl:when test="$codNatPce='12'">Autre</xsl:when>
+ <xsl:when test="$codNatPce='18'">Opération d'ordre liée aux cessions</xsl:when>
+ </xsl:choose>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="local-name($el)='LigneDePiece'">
+ <xsl:variable name="valHT">
+ <xsl:choose>
+ <xsl:when test="./*[local-name()='BlocLignePiece']/*[local-name()='InfoLignePiece']/*[local-name()='MtHT']/@V">
+ <xsl:value-of select="./*[local-name()='BlocLignePiece']/*[local-name()='InfoLignePiece']/*[local-name()='MtHT']/@V"/>
+ </xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="valTVA">
+ <xsl:choose>
+ <xsl:when test="./*[local-name()='BlocLignePiece']/*[local-name()='InfoLignePiece']/*[local-name()='MtTVA']/@V">
+ <xsl:value-of select="./*[local-name()='BlocLignePiece']/*[local-name()='InfoLignePiece']/*[local-name()='MtTVA']/@V"/>
+ </xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:attribute name="montantTTC" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#added">
+ <xsl:value-of select="$valHT + $valTVA"/>
+ </xsl:attribute>
+ <xsl:attribute name="LibelleCatTiersLignePiece" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#added">
+ <xsl:variable name="codCatTiers" select="$el/*[local-name()='Tiers']/*[local-name()='InfoTiers']/*[local-name()='CatTiers']/@V"/>
+ <xsl:choose>
+ <xsl:when test="$codCatTiers='01'">Personnes physiques</xsl:when>
+ <xsl:when test="$codCatTiers='20'">État et établissements publics nationaux</xsl:when>
+ <xsl:when test="$codCatTiers='21'">Régions</xsl:when>
+ <xsl:when test="$codCatTiers='22'">Départements</xsl:when>
+ <xsl:when test="$codCatTiers='23'">Communes</xsl:when>
+ <xsl:when test="$codCatTiers='24'">Groupements de collectivités</xsl:when>
+ <xsl:when test="$codCatTiers='25'">Caisses des écoles</xsl:when>
+ <xsl:when test="$codCatTiers='26'">CCAS</xsl:when>
+ <xsl:when test="$codCatTiers='27'">Établissements publics de santé</xsl:when>
+ <xsl:when test="$codCatTiers='28'">École nationale de la santé publique</xsl:when>
+ <xsl:when test="$codCatTiers='29'">Autres établissements publics et organismes internationaux</xsl:when>
+ <xsl:when test="$codCatTiers='50'">Personnes morales de droit privé autres qu'organismes sociaux</xsl:when>
+ <xsl:when test="$codCatTiers='60'">Caisses de sécurité sociale régime général</xsl:when>
+ <xsl:when test="$codCatTiers='61'">Caisses de sécurité sociale régime agricole</xsl:when>
+ <xsl:when test="$codCatTiers='62'">Sécurité sociale des travailleurs non salariés et professions non agricoles</xsl:when>
+ <xsl:when test="$codCatTiers='63'">Autres régimes obligatoires de sécurité sociale</xsl:when>
+ <xsl:when test="$codCatTiers='64'">Mutuelles et organismes d'assurance</xsl:when>
+ <xsl:when test="$codCatTiers='65'">Divers autres tiers payants</xsl:when>
+ <xsl:when test="$codCatTiers='70'">CNRACL</xsl:when>
+ <xsl:when test="$codCatTiers='71'">IRCANTEC</xsl:when>
+ <xsl:when test="$codCatTiers='72'">ASSEDIC</xsl:when>
+ <xsl:when test="$codCatTiers='73'">Caisses mutualistes de retraite complémentaires</xsl:when>
+ <xsl:when test="$codCatTiers='74'">Autres organismes sociaux</xsl:when>
+ </xsl:choose>
+ </xsl:attribute>
+ <xsl:attribute name="LibelleNatIdTiersLignePiece" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#added">
+ <xsl:variable name="codNatIdTiers" select="$el/*[local-name()='Tiers']/*[local-name()='InfoTiers']/*[local-name()='NatIdTiers']/@V"/>
+ <xsl:choose>
+ <xsl:when test="$codNatIdTiers='01'">Siret</xsl:when>
+ <xsl:when test="$codNatIdTiers='02'">Siren</xsl:when>
+ <xsl:when test="$codNatIdTiers='03'">Finess</xsl:when>
+ <xsl:when test="$codNatIdTiers='04'">Nir</xsl:when>
+ </xsl:choose>
+ </xsl:attribute>
+ <xsl:attribute name="LibelleNatJurLignePiece" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#added">
+ <xsl:variable name="codNatJur" select="$el/*[local-name()='Tiers']/*[local-name()='InfoTiers']/*[local-name()='NatJur']/@V"/>
+ <xsl:choose>
+ <xsl:when test="$codNatJur='00'">Inconnue</xsl:when>
+ <xsl:when test="$codNatJur='01'">Particuliers</xsl:when>
+ <xsl:when test="$codNatJur='02'">Artisan / Commerçant / Agriculteur</xsl:when>
+ <xsl:when test="$codNatJur='03'">Société</xsl:when>
+ <xsl:when test="$codNatJur='04'">CAM ou caisse appliquant les mêmes règles</xsl:when>
+ <xsl:when test="$codNatJur='05'">Caisse complémentaire</xsl:when>
+ <xsl:when test="$codNatJur='06'">Association</xsl:when>
+ <xsl:when test="$codNatJur='07'">Etat ou organisme d'Etat</xsl:when>
+ <xsl:when test="$codNatJur='08'">Etablissement public national</xsl:when>
+ <xsl:when test="$codNatJur='09'">Collectivité territoriale / EPL / EPS</xsl:when>
+ <xsl:when test="$codNatJur='10'">Etat étranger / Ambassade</xsl:when>
+ <xsl:when test="$codNatJur='11'">CAF</xsl:when>
+ </xsl:choose>
+ </xsl:attribute>
+ <xsl:attribute name="LibelleNatPceOrigLignePiece" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#added">
+ <xsl:variable name="codNatPce" select="$el/*[local-name()='BlocLignePiece']/*[local-name()='RattachPiece']/*[local-name()='NatPceOrig']/@V"/>
+ <xsl:choose>
+ <xsl:when test="$codNatPce='01'">Mandat</xsl:when>
+ <xsl:when test="$codNatPce='02'">Titre</xsl:when>
+ <xsl:when test="$codNatPce='03'">Paiement</xsl:when>
+ <xsl:when test="$codNatPce='04'">Liste non valeur</xsl:when>
+ </xsl:choose>
+ </xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+ <xsl:choose>
+ <xsl:when test="local-name()='Piece'">
+ <xsl:attribute name="avecPJ" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#added">
+ <xsl:value-of select="count(descendant::PJRef) > 0"/>
+ </xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+ <xsl:choose>
+ <xsl:when test="contains('|CptBancaire',concat('|',local-name($el)))">
+ <xsl:attribute name="rib" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#added">
+ <xsl:value-of select="$el/*[local-name()='CodeEtab']/@V"/>
+ <xsl:value-of select="$el/*[local-name()='CodeGuic']/@V"/>
+ <xsl:value-of select="$el/*[local-name()='IdCpte']/@V"/>
+ <xsl:value-of select="$el/*[local-name()='CleRib']/@V"/>
+ </xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+ <xsl:if test="contains('|Bordereau',concat('|',local-name($el)))">
+ <xsl:attribute name="primary-key" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#added"><xsl:value-of select="*[local-name()='BlocBordereau']/*[local-name()='Exer']/@V"/>-<xsl:value-of select="*[local-name()='BlocBordereau']/*[local-name()='TypBord']/@V"/>-<xsl:value-of select="*[local-name()='BlocBordereau']/*[local-name()='IdBord']/@V"/></xsl:attribute>
+ </xsl:if>
+ <xsl:if test="local-name()='Piece'">
+ <xsl:for-each select="//PJRef">
+ <added:AllPJRef added:generated-id="{generate-id()}">
+ <n:Support V="{Support/@V}"/>
+ <n:IdUnique V="{IdUnique/@V}"/>
+ <xsl:if test="NomPJ">
+ <n:NomPJ V="{NomPJ/@V}"/>
+ </xsl:if>
+ </added:AllPJRef>
+ </xsl:for-each>
+ </xsl:if>
+ <xsl:for-each select="$el/*">
+ <xsl:call-template name="writeElement">
+ <xsl:with-param name="el" select="."/>
+ <xsl:with-param name="signatureGlobale" select="$signatureGlobale"/>
+ </xsl:call-template>
+ </xsl:for-each>
+ <xsl:value-of select="$el/text()" disable-output-escaping="yes"/>
+ <xsl:if test="local-name($el)='Bordereau'">
+ <xsl:if test="$signatureGlobale">
+ <xsl:copy-of select="$el/../../ds:Signature"/>
+ </xsl:if>
+ </xsl:if>
+ </xsl:element>
+ <xsl:if test="contains('|IdPost',concat('|',local-name($el)))">
+ <xsl:element name="LibellePoste" namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/aller">
+ <xsl:variable name="code" select="$el/@V"/>
+ <xsl:attribute name="V">
+ <xsl:value-of select="$postes/poste[starts-with(@code,$code)][1]/text()"/>
+ </xsl:attribute>
+ </xsl:element>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ </xsl:template>
+</xsl:transform>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE xsl:stylesheet [
+<!ENTITY nbsp " ">
+]>
+
+<xsl:transform
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns:java="xalan://xml.apache.org/xalan/java"
+ xmlns:fn="http://projets.admisource.gouv.fr/xemelios/namespaces#functions"
+ xmlns:added="http://projets.admisource.gouv.fr/xemelios/namespaces#added"
+ xmlns:ano="http://projets.admisource.gouv.fr/xemelios/namspaces#anomally"
+ xmlns:n="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/aller"
+ xmlns="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/aller"
+ exclude-result-prefixes="fn java" version="2.0">
+
+ <xsl:output method="xml" indent="yes"/>
+
+ <xsl:param name="language" select="'fr'"/>
+
+ <xsl:template match="/*[position()=1]">
+ <xsl:if test="local-name() = 'PES_Aller'">
+ <PES_Aller xmlns="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/aller"
+ xmlns:added="http://projets.admisource.gouv.fr/xemelios/namespaces#added"
+ xmlns:n="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/aller"
+ xmlns:ano="http://projets.admisource.gouv.fr/xemelios/namespaces#anomally">
+ <xsl:for-each select="./@*">
+ <xsl:attribute name="{local-name(.)}" namespace="{namespace-uri(.)}" select="."/>
+ </xsl:for-each>
+ <xsl:for-each select="./*">
+ <xsl:call-template name="writeElement">
+ <xsl:with-param name="el" select="."/>
+ </xsl:call-template>
+ </xsl:for-each>
+ </PES_Aller>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template name="convertPJ">
+ <xsl:param name="bloc"/>
+ <xsl:element name="PJRef" namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/aller">
+ <xsl:element name="Support" namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/aller">
+ <xsl:attribute name="V">10</xsl:attribute>
+ </xsl:element>
+ <xsl:element name="IdUnique" namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/aller">
+ <xsl:attribute name="V">
+ <xsl:value-of select="$bloc/IdUnique/@V"></xsl:value-of>
+ </xsl:attribute>
+ </xsl:element>
+ <xsl:element name="NomPJ" namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/aller">
+ <xsl:attribute name="V">
+ <xsl:value-of select="$bloc/NomPJ/@V"></xsl:value-of>
+ </xsl:attribute>
+ </xsl:element>
+ </xsl:element>
+ </xsl:template>
+
+ <xsl:template name="writeElement">
+ <xsl:param name="el"/>
+ <xsl:choose>
+ <xsl:when test="namespace-uri($el) = 'http://projets.admisource.gouv.fr/xemelios/namespaces#anomally'">
+ <xsl:element name="{name($el)}" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#anomally">
+ <xsl:for-each select="$el/@*">
+ <xsl:attribute name="{name(.)}" namespace="{namespace-uri(.)}">
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+ </xsl:for-each>
+ <xsl:value-of select="text()" disable-output-escaping="yes"/>
+ <xsl:for-each select="$el/*">
+ <xsl:call-template name="writeElement"><xsl:with-param name="el" select="."/></xsl:call-template>
+ </xsl:for-each>
+ </xsl:element>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:element name="{name($el)}" namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/aller">
+ <xsl:attribute name="generated-id" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#added">
+ <xsl:value-of select="generate-id()"/>
+ </xsl:attribute>
+ <xsl:for-each select="$el/@*">
+ <xsl:choose>
+ <xsl:when test="namespace-uri(.) = 'http://projets.admisource.gouv.fr/xemelios/namespaces#anomally'">
+ <xsl:attribute name="{local-name(.)}" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#anomally">
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="{local-name(.)}" namespace="{namespace-uri(.)}">
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ <xsl:choose>
+ <xsl:when test="name($el)='PJ' and $el/TypePJ/@V='001'">
+ <xsl:attribute name="LibTypePJ">Document Budgétaire</xsl:attribute>
+ </xsl:when>
+ <xsl:when test="name($el)='PJ' and $el/TypePJ/@V='002'">
+ <xsl:attribute name="LibTypePJ">Facture de Recette</xsl:attribute>
+ </xsl:when>
+ <xsl:when test="name($el)='PJ' and $el/TypePJ/@V='003'">
+ <xsl:attribute name="LibTypePJ">Facture de Dépense</xsl:attribute>
+ </xsl:when>
+ <xsl:when test="name($el)='PJ' and $el/TypePJ/@V='004'">
+ <xsl:attribute name="LibTypePJ">Etat de Paye</xsl:attribute>
+ </xsl:when>
+ <xsl:when test="name($el)='PJ' and $el/TypePJ/@V='005'">
+ <xsl:attribute name="LibTypePJ">Etat d'Aide Sociale</xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+ <xsl:choose>
+ <xsl:when test="name($el)='PJ'">
+ <xsl:call-template name="convertPJ">
+ <xsl:with-param name="bloc" select="."/>
+ </xsl:call-template>
+ </xsl:when>
+ </xsl:choose>
+ <xsl:for-each select="$el/*">
+ <xsl:choose>
+ <!-- ignorer Contenu -->
+ <xsl:when test="name(.)='Contenu'">
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="writeElement">
+ <xsl:with-param name="el" select="."/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ <xsl:value-of select="$el/text()" disable-output-escaping="yes"/>
+ </xsl:element>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ </xsl:template>
+</xsl:transform>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE xsl:stylesheet [
+<!ENTITY nbsp " ">
+]>
+
+<xsl:transform
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
+
+ <xsl:output method="xml" indent="yes"/>
+
+ <xsl:output encoding="ISO-8859-1"/>
+ <xsl:output version="1.0"/>
+ <xsl:param name="language" select="'fr'"/>
+ <xsl:template match="PESFacture">
+ <xsl:processing-instruction name="xml-stylesheet">href="http://xemelios.org/xsl/facture_pes/V1.0/facturePes.xsl" type="text/xsl"</xsl:processing-instruction>
+ <PESFacture>
+ <xsl:for-each select="./@*">
+ <xsl:attribute name="{local-name(.)}" select="."/>
+ </xsl:for-each>
+ <xsl:for-each select="./*">
+ <xsl:call-template name="writeElement">
+ <xsl:with-param name="el" select="."/>
+ </xsl:call-template>
+ </xsl:for-each>
+ </PESFacture>
+ </xsl:template>
+
+ <xsl:template name="writeElement">
+ <xsl:param name="el"/>
+ <xsl:element name="{name($el)}">
+ <xsl:for-each select="$el/@*">
+ <xsl:attribute name="{local-name(.)}" namespace="{namespace-uri(.)}">
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+ </xsl:for-each>
+ <xsl:for-each select="$el/*">
+ <xsl:call-template name="writeElement">
+ <xsl:with-param name="el" select="."/>
+ </xsl:call-template>
+ </xsl:for-each>
+ <xsl:value-of select="$el/text()" disable-output-escaping="yes"/>
+ </xsl:element>
+ </xsl:template>
+</xsl:transform>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE xsl:stylesheet [
+<!ENTITY nbsp " ">
+]>
+<xsl:transform
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns:java="xalan://xml.apache.org/xalan/java"
+ xmlns:fn="http://projets.admisource.gouv.fr/xemelios/namespaces#functions"
+ xmlns:added="http://projets.admisource.gouv.fr/xemelios/namespaces#added"
+ xmlns:ano="http://projets.admisource.gouv.fr/xemelios/namespaces#anomally"
+ xmlns:n="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/aller"
+ xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
+ exclude-result-prefixes="fn java" version="2.0">
+
+ <xsl:output method="xml" indent="yes" standalone="yes"/>
+
+ <!--xsl:output encoding="##output-encoding##"/>
+ <xsl:output version="##xml-version##"/-->
+
+ <xsl:output encoding="ISO-8859-1"/>
+ <xsl:output version="1.0"/>
+
+ <xsl:param name="language" select="'fr'"/>
+
+ <xsl:variable name="postes">
+ <poste code="0800610">TRESORERIE ABBEVILLE ET BANLIEUE</poste>
+ <poste code="0800580">TRESORERIE ABBEVILLE MUNICIPALE</poste>
+ <poste code="1220000">TRESORERIE AMBASSADE DE FRANCE EN COTE-D'IVOIRE</poste>
+ <poste code="0740010">TRESORERIE ABONDANCE</poste>
+ <poste code="0800010">TRESORERIE ACHEUX-EN-AMIENOIS</poste>
+ <poste code="0340330">TRESORERIE AGDE</poste>
+ <poste code="0470000">TRESORERIE GENERALE DE LOT-ET-GARONNE</poste>
+ <poste code="0470010">TRESORERIE AGEN</poste>
+ <poste code="0470350">TRESORERIE OPAC DE LOT-ET-GARONNE</poste>
+ <poste code="0470900">PAIERIE DEPARTEMENTALE DE LOT-ET-GARONNE</poste>
+ <poste code="0470020">TRESORERIE AGEN ETABLISSEMENTS HOSPITALIERS</poste>
+ <poste code="0470120">TRESORERIE DE PUYMIROL-LAPLUME</poste>
+ <poste code="0470140">TRESORERIE D' AGEN MUNICIPALE</poste>
+ <poste code="0500200">TRESORERIE SAINT-MALO-DE-LA-LANDE</poste>
+ <poste code="0230010">TRESORERIE AHUN</poste>
+ <poste code="0160010">TRESORERIE AIGRE</poste>
+ <poste code="0170010">TRESORERIE AIGREFEUILLE-D'AUNIS</poste>
+ <poste code="0440010">TRESORERIE AIGREFEUILLE-SUR-MAINE</poste>
+ <poste code="0730010">TRESORERIE AIGUEBELLE</poste>
+ <poste code="0630590">TRESORERIE AIGUEPERSE</poste>
+ <poste code="0300010">TRESORERIE AIGUES-MORTES</poste>
+ <poste code="0470030">TRESORERIE AIGUILLON</poste>
+ <poste code="0890010">TRESORERIE AILLANT-SUR-THOLON-GUERCHY</poste>
+ <poste code="0800020">TRESORERIE AILLY-SUR-NOYE</poste>
+ <poste code="0730020">TRESORERIE AIME</poste>
+ <poste code="0400010">TRESORERIE AIRE-SUR-L'ADOUR</poste>
+ <poste code="0622250">TRESORERIE D' AIRE-SUR-LA-LYS</poste>
+ <poste code="0790020">TRESORERIE AIRVAULT-VALLEE DU THOUET</poste>
+ <poste code="0100010">TRESORERIE D' AIX-EN-OTHE</poste>
+ <poste code="0131000">RECETTE DES FINANCES AIX-EN-PROVENCE</poste>
+ <poste code="0131010">TRESORERIE AIX-EN-PROVENCE SUD</poste>
+ <poste code="0131020">TRESORERIE D' AIX-EN-PROVENCE NORD</poste>
+ <poste code="0131030">TRESORERIE D' AIX-EN-PROVENCE MUNICIPALE</poste>
+ <poste code="0131040">TRESORERIE AIX-EN-PROVENCE ETS HOSPITALIERS</poste>
+ <poste code="0730030">TRESORERIE AIX-LES-BAINS</poste>
+ <poste code="0870010">TRESORERIE AIXE-SUR-VIENNE</poste>
+ <poste code="02A0000">TRESORERIE GENERALE DE LA CORSE-DU-SUD</poste>
+ <poste code="02A0007">CENTRE REGIONAL DES PENSIONS DE LA CORSE-DU-SUD</poste>
+ <poste code="02A0009">DEPARTEMENT INFORMATIQUE DE LA CORSE-DU-SUD</poste>
+ <poste code="02A0010">TRESORERIE AJACCIO</poste>
+ <poste code="02A0020">TRESORERIE AJACCIO MUNICIPALE</poste>
+ <poste code="02A0030">TRESORERIE AJACCIO RURAL</poste>
+ <poste code="02A0800">PAIERIE REGIONALE DE CORSE</poste>
+ <poste code="02A0900">PAIERIE DEPARTEMENTALE DE LA CORSE-DU-SUD</poste>
+ <poste code="0810010">TRESORERIE ALBAN</poste>
+ <poste code="0730040">TRESORERIE ALBENS</poste>
+ <poste code="0800490">TRESORERIE ALBERT</poste>
+ <poste code="0730050">TRESORERIE D' ALBERTVILLE</poste>
+ <poste code="0570010">TRESORERIE ALBESTROFF</poste>
+ <poste code="0810020">TRESORERIE ALBI TRESOR</poste>
+ <poste code="0810000">TRESORERIE GENERALE DU TARN</poste>
+ <poste code="0810030">TRESORERIE ALBI-VILLE ET PERIPHERIE</poste>
+ <poste code="0810900">PAIERIE DEPARTEMENTALE DU TARN</poste>
+ <poste code="0690360">TRESORERIE ALBIGNY-SUR-SAONE ETS HOSP. DPTX</poste>
+ <poste code="0610000">TRESORERIE GENERALE DE L' ORNE</poste>
+ <poste code="0610020">TRESORERIE D' ALENCON VILLE ET CAMPAGNE</poste>
+ <poste code="0610040">TRESORERIE ALENCON HOPITAUX</poste>
+ <poste code="0610900">PAIERIE DEPARTEMENTALE DE L' ORNE</poste>
+ <poste code="02B0120">TRESORERIE MOITA</poste>
+ <poste code="0300430">TRESORERIE ALES MUNICIPALE</poste>
+ <poste code="0940010">TRESORERIE MALE ALFORTVILLE/MAISONS-ALFORT</poste>
+ <poste code="1110000">TRESORERIE AMBASSADE DE FRANCE A ALGER</poste>
+ <poste code="0570020">TRESORERIE ALGRANGE</poste>
+ <poste code="0560010">TRESORERIE ALLAIRE</poste>
+ <poste code="0150010">TRESORERIE ALLANCHE</poste>
+ <poste code="0190220">TRESORERIE ALLASSAC</poste>
+ <poste code="0130010">TRESORERIE ALLAUCH</poste>
+ <poste code="0380020">TRESORERIE ALLEVARD</poste>
+ <poste code="0490310">TRESORERIE ALLONNES</poste>
+ <poste code="0681010">TRESORERIE ALTKIRCH</poste>
+ <poste code="0110030">TRESORERIE ALZONNE</poste>
+ <poste code="0700010">TRESORERIE AMANCE-FAVERNEY</poste>
+ <poste code="0250010">TRESORERIE D' AMANCEY</poste>
+ <poste code="0330010">TRESORERIE AMBARES-ET-LAGRAVE</poste>
+ <poste code="0870020">TRESORERIE AMBAZAC</poste>
+ <poste code="0010010">TRESORERIE D' AMBERIEU-EN-BUGEY</poste>
+ <poste code="0630480">TRESORERIE D' AMBERT</poste>
+ <poste code="0370010">TRESORERIE AMBOISE-POCE</poste>
+ <poste code="0530010">TRESORERIE AMBRIERES-LES-VALLEES</poste>
+ <poste code="0800040">TRESORERIE AMIENS CENTRE</poste>
+ <poste code="0800000">TRESORERIE GENERALE DE LA SOMME</poste>
+ <poste code="0800007">CENTRE REGIONAL DES PENSIONS DE LA SOMME</poste>
+ <poste code="0800008">CENTRE DE FORMATION DEPARTEMENTAL DE LA SOMME</poste>
+ <poste code="0800009">DEPARTEMENT INFORMATIQUE DE LA SOMME</poste>
+ <poste code="0800060">TRESORERIE AMIENS BANLIEUE ET AMENDES</poste>
+ <poste code="0800070">TRESORERIE AMIENS MUNICIPALE</poste>
+ <poste code="0800900">PAIERIE DEPARTEMENTALE DE LA SOMME</poste>
+ <poste code="0800080">TRESORERIE AMIENS ETS HOSP.</poste>
+ <poste code="0800800">PAIERIE REGIONALE DE PICARDIE</poste>
+ <poste code="0800001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE LA SOMME</poste>
+ <poste code="0400200">TRESORERIE AMOU-POMAREZ</poste>
+ <poste code="0690460">TRESORERIE AMPLEPUIS</poste>
+ <poste code="0440020">TRESORERIE ANCENIS</poste>
+ <poste code="0550010">TRESORERIE D' ANCERVILLE</poste>
+ <poste code="0890020">TRESORERIE ANCY-LE-FRANC</poste>
+ <poste code="0520010">TRESORERIE ANDELOT-BLANCHEVILLE</poste>
+ <poste code="0300440">TRESORERIE ANDUZE</poste>
+ <poste code="0280320">TRESORERIE ANET</poste>
+ <poste code="0490000">TRESORERIE GENERALE DE MAINE-ET-LOIRE</poste>
+ <poste code="0490020">TRESORERIE ANGERS OUEST</poste>
+ <poste code="0490030">TRESORERIE ANGERS MUNICIPALE</poste>
+ <poste code="0490040">TRESORERIE ANGERS CHU</poste>
+ <poste code="0490001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DU MAINE ET LOIRE</poste>
+ <poste code="0490010">TRESORERIE ANGERS EST ET AMENDES</poste>
+ <poste code="0490060">TRESORERIE D' AVRILLE</poste>
+ <poste code="0490900">PAIERIE DEPARTEMENTALE DE MAINE-ET-LOIRE</poste>
+ <poste code="0850280">TRESORERIE ANGLES</poste>
+ <poste code="0640470">TRESORERIE ANGLET-ADOUR-OCEAN</poste>
+ <poste code="0510300">TRESORERIE ANGLURE</poste>
+ <poste code="0160000">TRESORERIE GENERALE DE LA CHARENTE</poste>
+ <poste code="0160001">TRESORERIE GENERALE SERVICE DES AFFAIRES COMMUNALES</poste>
+ <poste code="0160002">TRESORERIE GENERALE CONTROLE FINANCIER LOCAL</poste>
+ <poste code="0160003">TRESORERIE GENERALE ACTION ECONOMIQUE</poste>
+ <poste code="0160020">TRESORERIE ANGOULEME</poste>
+ <poste code="0160030">TRESORERIE ANGOULEME MUNICIPALE</poste>
+ <poste code="0160150">TRESORERIE ANGOULEME OPHLM</poste>
+ <poste code="0160900">PAIERIE DEPARTEMENTALE DE LA CHARENTE</poste>
+ <poste code="0593010">TRESORERIE ANICHE</poste>
+ <poste code="0020010">TRESORERIE ANIZY-LE-CHATEAU</poste>
+ <poste code="0740030">TRESORERIE ANNECY</poste>
+ <poste code="0740040">TRESORERIE ANNECY MUNICIPALE</poste>
+ <poste code="0740900">PAIERIE DEPARTEMENTALE DE LA HAUTE-SAVOIE</poste>
+ <poste code="0740001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE LA HAUTE SAVOIE</poste>
+ <poste code="0740320">TRESORERIE ANNECY LE VIEUX</poste>
+ <poste code="0740000">TRESORERIE GENERALE DE LA HAUTE-SAVOIE</poste>
+ <poste code="0740050">TRESORERIE ANNEMASSE</poste>
+ <poste code="0590020">TRESORERIE ANNOEULLIN</poste>
+ <poste code="0070020">TRESORERIE ANNONAY</poste>
+ <poste code="0040010">TRESORERIE D' ANNOT</poste>
+ <poste code="1410000">TRESORERIE AMBASSADE DE FRANCE EN REPUBLIQUE DE MADAGASCAR</poste>
+ <poste code="0061010">TRESORERIE ANTIBES</poste>
+ <poste code="0061020">TRESORERIE ANTIBES MUNICIPALE</poste>
+ <poste code="0921010">TRESORERIE D' ANTONY</poste>
+ <poste code="0921000">RECETTE DES FINANCES ANTONY</poste>
+ <poste code="0070040">TRESORERIE ANTRAIGUES</poste>
+ <poste code="0350010">TRESORERIE D' ANTRAIN-SAINT BRICE</poste>
+ <poste code="0595010">TRESORERIE D' ANZIN</poste>
+ <poste code="0840010">TRESORERIE APT</poste>
+ <poste code="0300030">TRESORERIE ARAMON</poste>
+ <poste code="0390020">TRESORERIE ARBOIS</poste>
+ <poste code="0520020">TRESORERIE D' ARC-EN-BARROIS</poste>
+ <poste code="0330020">TRESORERIE D' ARCACHON</poste>
+ <poste code="0100020">TRESORERIE D' ARCIS-SUR-AUBE</poste>
+ <poste code="0360020">TRESORERIE ARDENTES</poste>
+ <poste code="0630010">TRESORERIE ARDES-SUR-COUZE</poste>
+ <poste code="0622260">TRESORERIE ARDRES-EPERLECQUES</poste>
+ <poste code="0650020">TRESORERIE ARGELES-GAZOST</poste>
+ <poste code="0660010">TRESORERIE ARGELES-SUR-MER</poste>
+ <poste code="0610290">TRESORERIE D' ARGENTAN</poste>
+ <poste code="0190010">TRESORERIE ARGENTAT</poste>
+ <poste code="0950010">TRESORERIE ARGENTEUIL HLM</poste>
+ <poste code="0950020">TRESORERIE ARGENTEUIL</poste>
+ <poste code="0950030">TRESORERIE ARGENTEUIL MUNICIPALE</poste>
+ <poste code="0950040">TRESORERIE ARGENTEUIL CENTRE HOSPITALIER</poste>
+ <poste code="0790030">TRESORERIE D' ARGENTON LES VALLÉES</poste>
+ <poste code="0360030">TRESORERIE D' ARGENTON-SUR-CREUSE</poste>
+ <poste code="0350020">TRESORERIE ARGENTRE-DU-PLESSIS</poste>
+ <poste code="0390040">TRESORERIE D' ARINTHOD</poste>
+ <poste code="0630490">TRESORERIE D' ARLANC</poste>
+ <poste code="0132000">RECETTE DES FINANCES ARLES</poste>
+ <poste code="0132010">TRESORERIE ARLES MUNICIPALE ET CAMARGUE</poste>
+ <poste code="0132030">TRESORERIE ARLES CENTRE HOSPITALIER</poste>
+ <poste code="0132130">TRESORERIE PAYS D'ARLES</poste>
+ <poste code="0660020">TRESORERIE ARLES-SUR-TECH</poste>
+ <poste code="0593020">TRESORERIE ARLEUX</poste>
+ <poste code="0590030">TRESORERIE D' ARMENTIERES</poste>
+ <poste code="0590040">TRESORERIE ARMENTIERES MUNICIPALE</poste>
+ <poste code="0210490">TRESORERIE ARNAY-LE-DUC</poste>
+ <poste code="0911010">TRESORERIE ARPAJON</poste>
+ <poste code="0622270">TRESORERIE D' ARQUES</poste>
+ <poste code="0620490">TRESORERIE ARRAS CENTRE HOSPITALIER</poste>
+ <poste code="0620000">TRESORERIE GENERALE DU PAS-DE-CALAIS</poste>
+ <poste code="0620030">TRESORERIE D' ARRAS</poste>
+ <poste code="0620040">TRESORERIE ARRAS MUNICIPALE</poste>
+ <poste code="0620420">TRESORERIE D' ARRAS BANLIEUE</poste>
+ <poste code="0620900">PAIERIE DEPARTEMENTALE DU PAS-DE-CALAIS</poste>
+ <poste code="0650030">TRESORERIE D' ARREAU-BORDERES-LOURON</poste>
+ <poste code="0570030">TRESORERIE ARS-SUR-MOSELLE</poste>
+ <poste code="0010440">TRESORERIE D' ARTEMARE</poste>
+ <poste code="0450010">TRESORERIE ARTENAY</poste>
+ <poste code="0640040">TRESORERIE ARUDY</poste>
+ <poste code="0640050">TRESORERIE ARZACQ-MORLANNE</poste>
+ <poste code="0080010">TRESORERIE ASFELD</poste>
+ <poste code="0920020">TRESORERIE ASNIERES-SUR-SEINE</poste>
+ <poste code="0920030">TRESORERIE D' ASNIERES-SUR-SEINE MUNICIPALE</poste>
+ <poste code="0310450">TRESORERIE ASPET</poste>
+ <poste code="0610300">TRESORERIE ATHIS-DE-L'ORNE</poste>
+ <poste code="0911020">TRESORERIE ATHIS-MONS</poste>
+ <poste code="0600450">TRESORERIE ATTICHY</poste>
+ <poste code="0080020">TRESORERIE ATTIGNY-TOURTERON</poste>
+ <poste code="0130020">TRESORERIE AUBAGNE</poste>
+ <poste code="0070050">TRESORERIE AUBENAS</poste>
+ <poste code="0931010">TRESORERIE D' AUBERVILLIERS</poste>
+ <poste code="0931020">TRESORERIE AUBERVILLIERS MUNICIPALE</poste>
+ <poste code="0160050">TRESORERIE AUBETERRE-SUR-DRONNE</poste>
+ <poste code="0620050">TRESORERIE AUBIGNY-EN-ARTOIS</poste>
+ <poste code="0180030">TRESORERIE D' AUBIGNY-SUR-NERE</poste>
+ <poste code="0120250">TRESORERIE AUBIN</poste>
+ <poste code="0230190">TRESORERIE D' AUBUSSON - ST SULPICE LES CHAMPS</poste>
+ <poste code="0310420">TRESORERIE AUCAMVILLE</poste>
+ <poste code="0320000">TRESORERIE GENERALE DU GERS</poste>
+ <poste code="0320900">PAIERIE DEPARTEMENTALE DU GERS</poste>
+ <poste code="0320020">TRESORERIE AUCH VILLE</poste>
+ <poste code="0320030">TRESORERIE AUCH BANLIEUE</poste>
+ <poste code="0620590">TRESORERIE AUCHEL</poste>
+ <poste code="0330030">TRESORERIE AUDENGE</poste>
+ <poste code="0250340">TRESORERIE AUDINCOURT</poste>
+ <poste code="0622280">TRESORERIE AUDRUICQ</poste>
+ <poste code="0540390">TRESORERIE D' AUDUN-LE-ROMAN - PIENNES</poste>
+ <poste code="0570040">TRESORERIE AUDUN-LE-TICHE</poste>
+ <poste code="0170020">TRESORERIE AULNAY-DE-SAINTONGE-NERE</poste>
+ <poste code="0930030">TRESORERIE D' AULNAY-SOUS-BOIS</poste>
+ <poste code="0800590">TRESORERIE AULT</poste>
+ <poste code="0760670">TRESORERIE D' AUMALE</poste>
+ <poste code="0140030">TRESORERIE AUNAY-SUR-ODON</poste>
+ <poste code="0280010">TRESORERIE AUNEAU</poste>
+ <poste code="0600020">TRESORERIE AUNEUIL</poste>
+ <poste code="0831020">TRESORERIE AUPS</poste>
+ <poste code="0560250">TRESORERIE AURAY</poste>
+ <poste code="0310460">TRESORERIE AURIGNAC</poste>
+ <poste code="0150030">TRESORERIE AURILLAC BANLIEUE</poste>
+ <poste code="0150000">TRESORERIE GENERALE DU CANTAL</poste>
+ <poste code="0150020">TRESORERIE D' AURILLAC</poste>
+ <poste code="0150900">PAIERIE DEPARTEMENTALE DU CANTAL</poste>
+ <poste code="0310550">TRESORERIE D' AUTERIVE</poste>
+ <poste code="0280020">TRESORERIE AUTHON/PERCHE-LA-BAZOCHE-GOUET</poste>
+ <poste code="0710580">TRESORERIE D' AUTUN</poste>
+ <poste code="0890000">TRESORERIE GENERALE DE L' YONNE</poste>
+ <poste code="0890030">TRESORERIE D' AUXERRE</poste>
+ <poste code="0890040">TRESORERIE AUXERRE ETS HOSP.</poste>
+ <poste code="0890900">PAIERIE DEPARTEMENTALE DE L' YONNE</poste>
+ <poste code="0210040">TRESORERIE AUXONNE</poste>
+ <poste code="0230200">TRESORERIE D' AUZANCES</poste>
+ <poste code="0860010">TRESORERIE D' AVAILLES-LIMOUZINE</poste>
+ <poste code="0890060">TRESORERIE D' AVALLON</poste>
+ <poste code="0620070">TRESORERIE D' AVESNES LE COMTE</poste>
+ <poste code="0593110">TRESORERIE AVESNES-LEZ-AUBERT</poste>
+ <poste code="0595170">TRESORERIE D' AVESNES-SUR-HELPE</poste>
+ <poste code="0840000">TRESORERIE GENERALE DE VAUCLUSE</poste>
+ <poste code="0840030">TRESORERIE D' AVIGNON</poste>
+ <poste code="0840050">TRESORERIE AVIGNON MUNICIPALE</poste>
+ <poste code="0840060">TRESORERIE AVIGNON CENTRE HOSPITALIER</poste>
+ <poste code="0840900">PAIERIE DEPARTEMENTALE DE VAUCLUSE</poste>
+ <poste code="0840001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DU VAUCLUSE</poste>
+ <poste code="0620080">TRESORERIE AVION</poste>
+ <poste code="0510310">TRESORERIE D' AVIZE</poste>
+ <poste code="0770330">TRESORERIE AVON</poste>
+ <poste code="0500240">TRESORERIE AVRANCHES</poste>
+ <poste code="0090020">TRESORERIE AX-LES-THERMES</poste>
+ <poste code="0110040">TRESORERIE AXAT</poste>
+ <poste code="0510320">TRESORERIE D' AY</poste>
+ <poste code="0370020">TRESORERIE AZAY-LE-RIDEAU</poste>
+ <poste code="0540300">TRESORERIE DE BACCARAT-BADONVILLER</poste>
+ <poste code="0760530">TRESORERIE BACQUEVILLE-EN-CAUX</poste>
+ <poste code="0650050">TRESORERIE BAGNERES-DE-BIGORRE-CAMPAN</poste>
+ <poste code="0310470">TRESORERIE BAGNERES-DE-LUCHON</poste>
+ <poste code="0921020">TRESORERIE BAGNEUX</poste>
+ <poste code="0930040">TRESORERIE BAGNOLET</poste>
+ <poste code="0300040">TRESORERIE BAGNOLS-SUR-CEZE</poste>
+ <poste code="1010080">TRESORERIE PETIT-BOURG</poste>
+ <poste code="0160070">TRESORERIE BAIGNES-SAINTE-RADEGONDE</poste>
+ <poste code="0594170">TRESORERIE BAILLEUL</poste>
+ <poste code="0350030">TRESORERIE BAIN-DE-BRETAGNE</poste>
+ <poste code="0880010">TRESORERIE BAINS-LES-BAINS</poste>
+ <poste code="0422050">TRESORERIE BALBIGNY</poste>
+ <poste code="0720020">TRESORERIE DE BALLON-MONTBIZOT</poste>
+ <poste code="0310310">TRESORERIE BALMA</poste>
+ <poste code="0310001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE HAUTE GARONNE</poste>
+ <poste code="0310002">ANNEXE PÔLE INTERRÉGIONAL APUREMENT SPL</poste>
+ <poste code="1280000">TRESORERIE AMBASSADE DE FRANCE AU MALI</poste>
+ <poste code="0292020">TRESORERIE BANNALEC</poste>
+ <poste code="0040020">TRESORERIE BANON ET SAINT-ETIENNE</poste>
+ <poste code="0620090">TRESORERIE DE BAPAUME</poste>
+ <poste code="0550000">TRESORERIE GENERALE DE LA MEUSE</poste>
+ <poste code="0550030">TRESORERIE DE BAR-LE-DUC VILLE</poste>
+ <poste code="0550210">TRESORERIE DU PAYS DE REVIGNY-OPAC DE LA MEUSE</poste>
+ <poste code="0550900">PAIERIE DEPARTEMENTALE DE LA MEUSE</poste>
+ <poste code="0100040">TRESORERIE DE BAR-SUR-AUBE</poste>
+ <poste code="0100060">TRESORERIE DE BAR-SUR-SEINE</poste>
+ <poste code="0120240">TRESORERIE DE BARAQUEVILLE</poste>
+ <poste code="0132040">TRESORERIE BARBENTANE</poste>
+ <poste code="0160080">TRESORERIE BARBEZIEUX-SAINT-HILAIRE</poste>
+ <poste code="0040030">TRESORERIE DE BARCELONNETTE</poste>
+ <poste code="0760020">TRESORERIE DE BARENTIN</poste>
+ <poste code="0500250">TRESORERIE BARENTON-LE TEILLEUL</poste>
+ <poste code="0300450">TRESORERIE DE BARJAC</poste>
+ <poste code="0831030">TRESORERIE BARJOLS-TAVERNES</poste>
+ <poste code="0500380">TRESORERIE DE BARNEVILLE-PORTBAIL</poste>
+ <poste code="0670010">TRESORERIE BARR</poste>
+ <poste code="0430030">TRESORERIE BAS-EN-BASSET</poste>
+ <poste code="1030010">TRESORERIE BASSE-POINTE</poste>
+ <poste code="1010000">TRESORERIE GENERALE DE LA GUADELOUPE</poste>
+ <poste code="1010020">TRESORERIE DE BASSE-TERRE</poste>
+ <poste code="1010800">PAIERIE REGIONALE DE LA GUADELOUPE</poste>
+ <poste code="1010900">PAIERIE DEPARTEMENTALE DE LA GUADELOUPE</poste>
+ <poste code="1010130">TRESORERIE DE BASSE-TERRE MUNCIPALE ET HOSPIT.</poste>
+ <poste code="02B0000">TRESORERIE GENERALE DE LA HAUTE-CORSE</poste>
+ <poste code="02B0010">TRESORERIE BASTIA</poste>
+ <poste code="02B0020">TRESORERIE DE BASTIA MUNICIPALE</poste>
+ <poste code="02B0900">PAIERIE DEPARTEMENTALE DE LA HAUTE-CORSE</poste>
+ <poste code="0560200">TRESORERIE BAUD</poste>
+ <poste code="0490320">TRESORERIE BAUGE</poste>
+ <poste code="0180040">TRESORERIE BAUGY-SAVIGNY-EN-SEPTAINE</poste>
+ <poste code="0250020">TRESORERIE BAUME-LES-DAMES</poste>
+ <poste code="0595180">TRESORERIE BAVAY</poste>
+ <poste code="0140050">TRESORERIE BAYEUX-MONCEAUX-EN-BESSIN</poste>
+ <poste code="0640350">TRESORERIE BAYONNE</poste>
+ <poste code="0640360">TRESORERIE BAYONNE MUNICIPALE</poste>
+ <poste code="0640480">TRESORERIE BAYONNE CENTRE HOSPITALIER</poste>
+ <poste code="0330050">TRESORERIE BAZAS</poste>
+ <poste code="0310030">TRESORERIE MONTGISCARD-BAZIEGE</poste>
+ <poste code="0300050">TRESORERIE BEAUCAIRE</poste>
+ <poste code="0950240">TRESORERIE DE BEAUCHAMP-TAVERNY</poste>
+ <poste code="0390050">TRESORERIE DE BEAUFORT</poste>
+ <poste code="0490070">TRESORERIE BEAUFORT-EN-VALLEE</poste>
+ <poste code="0730060">TRESORERIE BEAUFORT</poste>
+ <poste code="0450030">TRESORERIE BEAUGENCY</poste>
+ <poste code="0690470">TRESORERIE BEAUJEU</poste>
+ <poste code="0190230">TRESORERIE BEAULIEU-SUR-DORDOGNE</poste>
+ <poste code="0820020">TRESORERIE BEAUMONT-LAVIT-DE-LOMAGNE</poste>
+ <poste code="0500390">TRESORERIE BEAUMONT-HAGUE</poste>
+ <poste code="0270180">TRESORERIE BEAUMONT-LE-ROGER</poste>
+ <poste code="0950050">TRESORERIE BEAUMONT-SUR-OISE</poste>
+ <poste code="0720040">TRESORERIE BEAUMONT-SUR-SARTHE</poste>
+ <poste code="0210510">TRESORERIE BEAUNE</poste>
+ <poste code="0450310">TRESORERIE DE BEAUNE-LA-ROLANDE</poste>
+ <poste code="0490420">TRESORERIE BEAUPREAU</poste>
+ <poste code="0381010">TRESORERIE BEAUREPAIRE</poste>
+ <poste code="0020320">TRESORERIE BEAURIEUX-ROUCY-CORBENY</poste>
+ <poste code="0550050">TRESORERIE DE BEAUSITE</poste>
+ <poste code="0060010">TRESORERIE BEAUSOLEIL</poste>
+ <poste code="0600000">TRESORERIE GENERALE DE L' OISE</poste>
+ <poste code="0600040">TRESORERIE DE BEAUVAIS VILLE</poste>
+ <poste code="0600050">TRESORERIE DE BEAUVAIS BANLIEUE</poste>
+ <poste code="0600070">TRESORERIE DE BEAUVAIS MUNICIPALE</poste>
+ <poste code="0600900">PAIERIE DEPARTEMENTALE DE L' OISE</poste>
+ <poste code="0600580">TRESORERIE DE BEAUVAIS AMENDES</poste>
+ <poste code="0600001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE L' OISE</poste>
+ <poste code="0850290">TRESORERIE BEAUVOIR-SUR-MER</poste>
+ <poste code="0790050">TRESORERIE BEAUVOIR-SUR-NIORT</poste>
+ <poste code="0350050">TRESORERIE BECHEREL</poste>
+ <poste code="0340340">TRESORERIE DE BEDARIEUX</poste>
+ <poste code="0640060">TRESORERIE BEDOUS</poste>
+ <poste code="0220320">TRESORERIE BEGARD</poste>
+ <poste code="0330060">TRESORERIE BEGLES</poste>
+ <poste code="0110060">TRESORERIE BELCAIRE-RODOME</poste>
+ <poste code="0900000">TRESORERIE GENERALE DU TERRITOIRE-DE-BELFORT</poste>
+ <poste code="0900040">TRESORERIE BELFORT VILLE</poste>
+ <poste code="0900110">TRESORERIE BELFORT TERRITOIRE HABITAT</poste>
+ <poste code="0900120">TRESORERIE DE BELFORT ETS. HOSPITALIERS</poste>
+ <poste code="0900900">PAIERIE DEPARTEMENTALE DU TERRITOIRE-DE-BELFORT</poste>
+ <poste code="0900020">TRESORERIE DE BELFORT</poste>
+ <poste code="0330070">TRESORERIE DE BELIN-BELIET</poste>
+ <poste code="0870030">TRESORERIE DE BELLAC</poste>
+ <poste code="0230210">TRESORERIE DE BELLEGARDE-EN-MARCHE</poste>
+ <poste code="0010020">TRESORERIE BELLEGARDE-SUR-VALSERINE</poste>
+ <poste code="0610070">TRESORERIE BELLEME</poste>
+ <poste code="0760540">TRESORERIE BELLENCOMBRE</poste>
+ <poste code="0030140">TRESORERIE BELLERIVE-SUR-ALLIER</poste>
+ <poste code="0020470">TRESORERIE DE BELLEU-SOISSONS BANLIEUE</poste>
+ <poste code="0690480">TRESORERIE BELLEVILLE</poste>
+ <poste code="0010030">TRESORERIE BELLEY</poste>
+ <poste code="0422010">TRESORERIE BELMONT-DE-LA-LOIRE</poste>
+ <poste code="0120260">TRESORERIE DE RANCE ET ROUGIERS</poste>
+ <poste code="0110070">TRESORERIE BELPECH</poste>
+ <poste code="0240020">TRESORERIE BELVES</poste>
+ <poste code="0110080">TRESORERIE BELVEZE-DU-RAZES</poste>
+ <poste code="0230020">TRESORERIE DE BENEVENT L'ABBAYE-LE GRAND BOURG</poste>
+ <poste code="0670030">TRESORERIE BENFELD</poste>
+ <poste code="0622170">TRESORERIE DE BERCK</poste>
+ <poste code="0240470">TRESORERIE BERGERAC MUNICIPALE ET BANLIEUE</poste>
+ <poste code="0240590">TRESORERIE DE BERGERAC</poste>
+ <poste code="0594010">TRESORERIE BERGUES</poste>
+ <poste code="0595190">TRESORERIE BERLAIMONT</poste>
+ <poste code="1830000">TRESORERIE AMBASSADE DE FRANCE EN ALLEMAGNE</poste>
+ <poste code="0800670">TRESORERIE BERNAVILLE</poste>
+ <poste code="0270190">TRESORERIE DE BERNAY</poste>
+ <poste code="0131050">TRESORERIE BERRE-L'ETANG</poste>
+ <poste code="0250000">TRESORERIE GENERALE DU DOUBS</poste>
+ <poste code="0250007">CENTRE REGIONAL DES PENSIONS DU DOUBS</poste>
+ <poste code="0250008">CENTRE DE FORMATION DEPARTEMENTAL DU DOUBS</poste>
+ <poste code="0250009">DEPARTEMENT INFORMATIQUE DU DOUBS</poste>
+ <poste code="0250030">TRESORERIE BESANCON</poste>
+ <poste code="0250050">TRESORERIE DU GRAND BESANCON</poste>
+ <poste code="0250060">TRESORERIE BESANCON CHRU</poste>
+ <poste code="0250130">TRESORERIE MORRE-ROULANS</poste>
+ <poste code="0250280">TRESORERIE BESANCON ETS HOSP. DPTAUX</poste>
+ <poste code="0250800">PAIERIE REGIONALE DE FRANCHE-COMTE</poste>
+ <poste code="0250900">PAIERIE DEPARTEMENTALE DOUBS</poste>
+ <poste code="0250001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DU DOUBS</poste>
+ <poste code="0250006">PÔLE NATIONAL DE SOUTIEN AU RESEAU DE BESANCON - RJC</poste>
+ <poste code="0250490">TRESORERIE DE L' OPDHLM DU DOUBS-HABITAT 25</poste>
+ <poste code="0630020">TRESORERIE BESSE-ET-SAINT-ANASTAISE</poste>
+ <poste code="0830020">TRESORERIE BESSE-SUR-ISSOLE</poste>
+ <poste code="0300460">TRESORERIE BESSEGES</poste>
+ <poste code="0870040">TRESORERIE DE BESSINES-SUR-GARTEMPE</poste>
+ <poste code="0620600">TRESORERIE BETHUNE</poste>
+ <poste code="0620610">TRESORERIE BETHUNE MUNICIPALE</poste>
+ <poste code="0620620">TRESORERIE BEUVRY</poste>
+ <poste code="0270200">TRESORERIE BEUZEVILLE</poste>
+ <poste code="0190240">TRESORERIE BEYNAT</poste>
+ <poste code="0340350">TRESORERIE BEZIERS</poste>
+ <poste code="0340360">TRESORERIE BEZIERS MUNICIPALE</poste>
+ <poste code="0340370">TRESORERIE DE BEZIERS ETS HOSP</poste>
+ <poste code="0950300">TRESORERIE BEZONS</poste>
+ <poste code="0640370">TRESORERIE BIARRITZ</poste>
+ <poste code="0911030">TRESORERIE BIEVRES</poste>
+ <poste code="0760040">TRESORERIE BIHOREL</poste>
+ <poste code="0630030">TRESORERIE BILLOM-SAINT-DIER-D'AUVERGNE</poste>
+ <poste code="0671010">TRESORERIE BISCHWILLER</poste>
+ <poste code="0571010">TRESORERIE BITCHE</poste>
+ <poste code="0310430">TRESORERIE BLAGNAC</poste>
+ <poste code="0440350">TRESORERIE BLAIN</poste>
+ <poste code="0760030">TRESORERIE BLAINVILLE-CREVON</poste>
+ <poste code="0540330">TRESORERIE DE BAYON-BLAINVILLE-SUR-L'EAU</poste>
+ <poste code="0540340">TRESORERIE DE BLAMONT - CIREY-SUR-VEZOUZE</poste>
+ <poste code="0760550">TRESORERIE DE BLANGY-SUR-BRESLE</poste>
+ <poste code="0330080">TRESORERIE BLANQUEFORT</poste>
+ <poste code="0160090">TRESORERIE BLANZAC-PORCHERESSE</poste>
+ <poste code="0330700">TRESORERIE BLAYE</poste>
+ <poste code="0890070">TRESORERIE BLENEAU-SAINT-FARGEAU</poste>
+ <poste code="0370030">TRESORERIE BLERE</poste>
+ <poste code="0390060">TRESORERIE BLETTERANS</poste>
+ <poste code="0210520">TRESORERIE BLIGNY-SUR-OUCHE</poste>
+ <poste code="0680010">TRESORERIE BLODELSHEIM</poste>
+ <poste code="0410000">TRESORERIE GENERALE DE LOIR-ET-CHER</poste>
+ <poste code="0410030">TRESORERIE BLOIS MUNICIPALE</poste>
+ <poste code="0410360">TRESORERIE OPAC.DE.LOIR.ET.CHER</poste>
+ <poste code="0410900">PAIERIE DEPARTEMENTALE DE LOIR-ET-CHER</poste>
+ <poste code="0410010">TRESORERIE BLOIS VILLE</poste>
+ <poste code="0930000">TRESORERIE GENERALE DE LA SEINE-SAINT-DENIS</poste>
+ <poste code="0930009">DEPARTEMENT INFORMATIQUE DE LA SEINE-SAINT-DENIS</poste>
+ <poste code="0930320">TRESORERIE DE BOBIGNY MUNICIPALE</poste>
+ <poste code="0930900">PAIERIE DEPARTEMENTALE DE LA SEINE-SAINT-DENIS</poste>
+ <poste code="0930001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE LA SEINE SAINT DENIS</poste>
+ <poste code="0740080">TRESORERIE BOEGE</poste>
+ <poste code="0422180">TRESORERIE DE BOEN SUR LIGNON</poste>
+ <poste code="0020520">TRESORERIE BOHAIN-EN-VERMANDOIS</poste>
+ <poste code="0920050">TRESORERIE DE BOIS-COLOMBES</poste>
+ <poste code="0940020">TRESORERIE DE BOISSY-SAINT-LEGER</poste>
+ <poste code="0762020">TRESORERIE BOLBEC</poste>
+ <poste code="0840200">TRESORERIE BOLLENE-MONDRAGON</poste>
+ <poste code="0930060">TRESORERIE DE BONDY</poste>
+ <poste code="0930400">TRESORERIE DE BONDY MUNICIPALE</poste>
+ <poste code="02A0040">TRESORERIE BONIFACIO</poste>
+ <poste code="0230030">TRESORERIE BONNAT-LOURDOUEIX-SAINT-PIERRE</poste>
+ <poste code="0860390">TRESORERIE VOUNEUIL-SUR-VIENNE</poste>
+ <poste code="0280080">TRESORERIE BONNEVAL</poste>
+ <poste code="0740090">TRESORERIE BONNEVILLE</poste>
+ <poste code="0781010">TRESORERIE BONNIERES-SUR-SEINE</poste>
+ <poste code="0330000">TRESORERIE GENERALE DE LA GIRONDE</poste>
+ <poste code="0330007">CENTRE REGIONAL DES PENSIONS DE LA GIRONDE</poste>
+ <poste code="0330008">CENTRE DE FORMATION DEPARTEMENTAL DE LA GIRONDE</poste>
+ <poste code="0330009">DEPARTEMENT INFORMATIQUE DE LA GIRONDE</poste>
+ <poste code="0330170">RECETTE DES FINANCES BORDEAUX MUNICIPALE</poste>
+ <poste code="0330181">TRESORERIE DE BORDEAUX CHU ANNEXE CH PERRENS</poste>
+ <poste code="0330800">PAIERIE REGIONALE D'AQUITAINE</poste>
+ <poste code="0330900">PAIERIE DEPARTEMENTALE DE LA GIRONDE</poste>
+ <poste code="0330001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE LA GIRONDE</poste>
+ <poste code="0330006">PÔLE NATIONAL DE SOUTIEN AU RESEAU DE BORDEAUX</poste>
+ <poste code="0330120">TRESORERIE BORDEAUX AMENDES</poste>
+ <poste code="0330140">TRESORERIE DE BORDEAUX RIVE GAUCHE</poste>
+ <poste code="0330160">TRESORERIE BORDEAUX EST</poste>
+ <poste code="0330171">RECETTE DES FINANCES SERVICE DE LA COMMUNAUTE URBAINE</poste>
+ <poste code="02B0040">TRESORERIE BORGO-CAMPILE</poste>
+ <poste code="0190020">TRESORERIE BORT-LES-ORGUES</poste>
+ <poste code="0440030">TRESORERIE DE BOUAYE</poste>
+ <poste code="0595020">TRESORERIE BOUCHAIN</poste>
+ <poste code="0100070">TRESORERIE DE BOUILLY</poste>
+ <poste code="0571020">TRESORERIE BOULAY</poste>
+ <poste code="0920060">TRESORERIE BOULOGNE-BILLANCOURT</poste>
+ <poste code="0920070">TRESORERIE BOULOGNE-BILLANCOURT MUNICIPALE</poste>
+ <poste code="0310480">TRESORERIE BOULOGNE-SUR-GESSE-BLAJAN</poste>
+ <poste code="0622000">RECETTE DES FINANCES BOULOGNE-SUR-MER</poste>
+ <poste code="0622020">TRESORERIE DE BOULOGNE-SUR-MER</poste>
+ <poste code="0622030">TRESORERIE BOULOGNE-SUR-MER MUNICIPALE</poste>
+ <poste code="0622040">TRESORERIE BOULOGNE-SUR-MER CTRE HOSP</poste>
+ <poste code="0720070">TRESORERIE BOULOIRE-PARIGNE</poste>
+ <poste code="0030010">TRESORERIE DE BOURBON-L'ARCHAMBAULT</poste>
+ <poste code="0710020">TRESORERIE BOURBON-LANCY</poste>
+ <poste code="0520300">TRESORERIE BOURBONNE-LES-BAINS</poste>
+ <poste code="0594030">TRESORERIE BOURBOURG</poste>
+ <poste code="0270370">TRESORERIE DE ROUTOT-BOURG-ACHARD</poste>
+ <poste code="0420010">TRESORERIE DE BOURG-ARGENTAL</poste>
+ <poste code="0010000">TRESORERIE GENERALE DE L' AIN</poste>
+ <poste code="0010050">TRESORERIE DE BOURG-EN-BRESSE</poste>
+ <poste code="0010060">TRESORERIE BOURG-EN-BRESSE MUNICIPALE</poste>
+ <poste code="0010900">PAIERIE DEPARTEMENTALE DE L' AIN</poste>
+ <poste code="0010001">CELLULE CONTRÔLE REDEVANCE AUDIOVISUELLE DE L' AIN</poste>
+ <poste code="0630040">TRESORERIE DE BOURG-LASTIC-HERMENT</poste>
+ <poste code="0660050">TRESORERIE BOURG-MADAME</poste>
+ <poste code="0070080">TRESORERIE BOURG-SAINT-ANDEOL</poste>
+ <poste code="0730070">TRESORERIE DE BOURG-SAINT-MAURICE</poste>
+ <poste code="0330710">TRESORERIE BOURG SUR GIRONDE</poste>
+ <poste code="0230040">TRESORERIE DE BOURGANEUF - PONTARION</poste>
+ <poste code="0180050">TRESORERIE BOURGES</poste>
+ <poste code="0180900">PAIERIE DEPARTEMENTALE DU CHER</poste>
+ <poste code="0180060">TRESORERIE BOURGES MUNICIPALE</poste>
+ <poste code="0180070">TRESORERIE DE BOURGES CH JACQUES COEUR</poste>
+ <poste code="0180410">TRESORERIE BOURGES H.L.M</poste>
+ <poste code="0180420">TRESORERIE DE BOURGES ETS SPECIALISES</poste>
+ <poste code="0180000">TRESORERIE GENERALE DU CHER</poste>
+ <poste code="0381100">TRESORERIE BOURGOIN-JALLIEU COLLECTIVITES</poste>
+ <poste code="0381110">TRESORERIE BOURGOIN-JALLIEU</poste>
+ <poste code="0270210">TRESORERIE DE BOURGTHEROULDE-INFREVILLE</poste>
+ <poste code="0370050">TRESORERIE BOURGUEIL</poste>
+ <poste code="0520040">TRESORERIE BOURMONT</poste>
+ <poste code="0230050">TRESORERIE BOUSSAC</poste>
+ <poste code="0671020">TRESORERIE BOUXWILLER</poste>
+ <poste code="0571030">TRESORERIE BOUZONVILLE</poste>
+ <poste code="0730080">TRESORERIE BOZEL</poste>
+ <poste code="0120020">TRESORERIE BOZOULS</poste>
+ <poste code="0410040">TRESORERIE BRACIEUX</poste>
+ <poste code="0110400">TRESORERIE DE VILLASAVARY</poste>
+ <poste code="0240030">TRESORERIE BRANTOME</poste>
+ <poste code="0810190">TRESORERIE BRASSAC</poste>
+ <poste code="0770300">TRESORERIE BRAY-SUR-SEINE</poste>
+ <poste code="0800510">TRESORERIE BRAY-SUR-SOMME</poste>
+ <poste code="0500260">TRESORERIE BRECEY-SAINT-POIS</poste>
+ <poste code="0500010">TRESORERIE BREHAL-GAVRAY</poste>
+ <poste code="0060020">TRESORERIE DE BREIL-SUR-ROYA</poste>
+ <poste code="0600080">TRESORERIE BRESLES</poste>
+ <poste code="0790070">TRESORERIE BRESSUIRE</poste>
+ <poste code="0290200">TRESORERIE BREST BELLEVUE</poste>
+ <poste code="0290000">TRESORERIE GENERALE DU FINISTERE</poste>
+ <poste code="0290030">TRESORERIE DE BREST QUATRE-MOULINS</poste>
+ <poste code="0290040">TRESORERIE BREST MUNICIPALE ET COM.URB</poste>
+ <poste code="0290041">TRESORERIE ANNEXE OPAC</poste>
+ <poste code="0290050">TRESORERIE BREST CHU</poste>
+ <poste code="0290900">PAIERIE DEPARTEMENTALE D' FINISTERE</poste>
+ <poste code="0290001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DU FINISTERE</poste>
+ <poste code="0460020">TRESORERIE DE BRETENOUX-VAYRAC</poste>
+ <poste code="0600090">TRESORERIE DE BRETEUIL-CREVECOEUR-LE-GRAND</poste>
+ <poste code="0270010">TRESORERIE BRETEUIL-SUR-ITON</poste>
+ <poste code="0140090">TRESORERIE BRETTEVILLE-SUR-LAIZE</poste>
+ <poste code="0280330">TRESORERIE BREZOLLES</poste>
+ <poste code="0050030">TRESORERIE BRIANCON</poste>
+ <poste code="0450320">TRESORERIE DE BRIARE</poste>
+ <poste code="0500400">TRESORERIE BRICQUEBEC</poste>
+ <poste code="0770010">TRESORERIE BRIE-COMTE-ROBERT</poste>
+ <poste code="0100080">TRESORERIE DE BRIENNE-LE-CHATEAU</poste>
+ <poste code="0890080">TRESORERIE DE BRIENON-SUR-ARMANCON</poste>
+ <poste code="0540400">TRESORERIE DE BRIEY</poste>
+ <poste code="0830030">TRESORERIE BRIGNOLES</poste>
+ <poste code="0270220">TRESORERIE BRIONNE</poste>
+ <poste code="0430050">TRESORERIE BRIOUDE</poste>
+ <poste code="0790080">TRESORERIE BRIOUX-SUR-BOUTONNE</poste>
+ <poste code="0490080">TRESORERIE BRISSAC-QUINCE</poste>
+ <poste code="0190260">TRESORERIE BRIVE MUNICIPALE</poste>
+ <poste code="0190330">TRESORERIE BRIVE VILLE</poste>
+ <poste code="0690210">TRESORERIE LE VINATIER CTRE HOSP. SPEC</poste>
+ <poste code="0690430">TRESORERIE DE BRON</poste>
+ <poste code="0220230">TRESORERIE BROONS</poste>
+ <poste code="0280100">TRESORERIE BROU</poste>
+ <poste code="0620630">TRESORERIE BRUAY-LA BUISSIERE</poste>
+ <poste code="0670060">TRESORERIE DE BRUMATH</poste>
+ <poste code="0910050">TRESORERIE BRUNOY</poste>
+ <poste code="0880040">TRESORERIE DE BRUYERES</poste>
+ <poste code="0760060">TRESORERIE BUCHY</poste>
+ <poste code="0190030">TRESORERIE BUGEAT</poste>
+ <poste code="0260310">TRESORERIE DE BUIS-LES-BARONNIES</poste>
+ <poste code="0880050">TRESORERIE BULGNEVILLE</poste>
+ <poste code="0620640">TRESORERIE BULLY-LES-MINES</poste>
+ <poste code="0170260">TRESORERIE BURIE</poste>
+ <poste code="0860290">TRESORERIE POITIERS OPAC</poste>
+ <poste code="0710470">TRESORERIE BUXY-SAINT-GENGOUX-LE-NATIONAL</poste>
+ <poste code="0360060">TRESORERIE BUZANCAIS</poste>
+ <poste code="0080070">TRESORERIE BUZANCY</poste>
+ <poste code="0540300">TRESORERIE DE BACCARAT-BADONVILLER</poste>
+ <poste code="0760530">TRESORERIE BACQUEVILLE-EN-CAUX</poste>
+ <poste code="0650050">TRESORERIE BAGNERES-DE-BIGORRE-CAMPAN</poste>
+ <poste code="0310470">TRESORERIE BAGNERES-DE-LUCHON</poste>
+ <poste code="0921020">TRESORERIE BAGNEUX</poste>
+ <poste code="0930040">TRESORERIE BAGNOLET</poste>
+ <poste code="0300040">TRESORERIE BAGNOLS-SUR-CEZE</poste>
+ <poste code="1010080">TRESORERIE PETIT-BOURG</poste>
+ <poste code="0160070">TRESORERIE BAIGNES-SAINTE-RADEGONDE</poste>
+ <poste code="0594170">TRESORERIE BAILLEUL</poste>
+ <poste code="0350030">TRESORERIE BAIN-DE-BRETAGNE</poste>
+ <poste code="0880010">TRESORERIE BAINS-LES-BAINS</poste>
+ <poste code="0422050">TRESORERIE BALBIGNY</poste>
+ <poste code="0720020">TRESORERIE DE BALLON-MONTBIZOT</poste>
+ <poste code="0310310">TRESORERIE BALMA</poste>
+ <poste code="0310001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE HAUTE GARONNE</poste>
+ <poste code="0310002">ANNEXE PÔLE INTERRÉGIONAL APUREMENT SPL</poste>
+ <poste code="1280000">TRESORERIE AMBASSADE DE FRANCE AU MALI</poste>
+ <poste code="0292020">TRESORERIE BANNALEC</poste>
+ <poste code="0040020">TRESORERIE BANON ET SAINT-ETIENNE</poste>
+ <poste code="0620090">TRESORERIE DE BAPAUME</poste>
+ <poste code="0550000">TRESORERIE GENERALE DE LA MEUSE</poste>
+ <poste code="0550030">TRESORERIE DE BAR-LE-DUC VILLE</poste>
+ <poste code="0550210">TRESORERIE DU PAYS DE REVIGNY-OPAC DE LA MEUSE</poste>
+ <poste code="0550900">PAIERIE DEPARTEMENTALE DE LA MEUSE</poste>
+ <poste code="0100040">TRESORERIE DE BAR-SUR-AUBE</poste>
+ <poste code="0100060">TRESORERIE DE BAR-SUR-SEINE</poste>
+ <poste code="0120240">TRESORERIE DE BARAQUEVILLE</poste>
+ <poste code="0132040">TRESORERIE BARBENTANE</poste>
+ <poste code="0160080">TRESORERIE BARBEZIEUX-SAINT-HILAIRE</poste>
+ <poste code="0040030">TRESORERIE DE BARCELONNETTE</poste>
+ <poste code="0760020">TRESORERIE DE BARENTIN</poste>
+ <poste code="0500250">TRESORERIE BARENTON-LE TEILLEUL</poste>
+ <poste code="0300450">TRESORERIE DE BARJAC</poste>
+ <poste code="0831030">TRESORERIE BARJOLS-TAVERNES</poste>
+ <poste code="0500380">TRESORERIE DE BARNEVILLE-PORTBAIL</poste>
+ <poste code="0670010">TRESORERIE BARR</poste>
+ <poste code="0430030">TRESORERIE BAS-EN-BASSET</poste>
+ <poste code="1030010">TRESORERIE BASSE-POINTE</poste>
+ <poste code="1010000">TRESORERIE GENERALE DE LA GUADELOUPE</poste>
+ <poste code="1010020">TRESORERIE DE BASSE-TERRE</poste>
+ <poste code="1010800">PAIERIE REGIONALE DE LA GUADELOUPE</poste>
+ <poste code="1010900">PAIERIE DEPARTEMENTALE DE LA GUADELOUPE</poste>
+ <poste code="1010130">TRESORERIE DE BASSE-TERRE MUNCIPALE ET HOSPIT.</poste>
+ <poste code="02B0000">TRESORERIE GENERALE DE LA HAUTE-CORSE</poste>
+ <poste code="02B0010">TRESORERIE BASTIA</poste>
+ <poste code="02B0020">TRESORERIE DE BASTIA MUNICIPALE</poste>
+ <poste code="02B0900">PAIERIE DEPARTEMENTALE DE LA HAUTE-CORSE</poste>
+ <poste code="0560200">TRESORERIE BAUD</poste>
+ <poste code="0490320">TRESORERIE BAUGE</poste>
+ <poste code="0180040">TRESORERIE BAUGY-SAVIGNY-EN-SEPTAINE</poste>
+ <poste code="0250020">TRESORERIE BAUME-LES-DAMES</poste>
+ <poste code="0595180">TRESORERIE BAVAY</poste>
+ <poste code="0140050">TRESORERIE BAYEUX-MONCEAUX-EN-BESSIN</poste>
+ <poste code="0640350">TRESORERIE BAYONNE</poste>
+ <poste code="0640360">TRESORERIE BAYONNE MUNICIPALE</poste>
+ <poste code="0640480">TRESORERIE BAYONNE CENTRE HOSPITALIER</poste>
+ <poste code="0330050">TRESORERIE BAZAS</poste>
+ <poste code="0310030">TRESORERIE MONTGISCARD-BAZIEGE</poste>
+ <poste code="0300050">TRESORERIE BEAUCAIRE</poste>
+ <poste code="0950240">TRESORERIE DE BEAUCHAMP-TAVERNY</poste>
+ <poste code="0390050">TRESORERIE DE BEAUFORT</poste>
+ <poste code="0490070">TRESORERIE BEAUFORT-EN-VALLEE</poste>
+ <poste code="0730060">TRESORERIE BEAUFORT</poste>
+ <poste code="0450030">TRESORERIE BEAUGENCY</poste>
+ <poste code="0690470">TRESORERIE BEAUJEU</poste>
+ <poste code="0190230">TRESORERIE BEAULIEU-SUR-DORDOGNE</poste>
+ <poste code="0820020">TRESORERIE BEAUMONT-LAVIT-DE-LOMAGNE</poste>
+ <poste code="0500390">TRESORERIE BEAUMONT-HAGUE</poste>
+ <poste code="0270180">TRESORERIE BEAUMONT-LE-ROGER</poste>
+ <poste code="0950050">TRESORERIE BEAUMONT-SUR-OISE</poste>
+ <poste code="0720040">TRESORERIE BEAUMONT-SUR-SARTHE</poste>
+ <poste code="0210510">TRESORERIE BEAUNE</poste>
+ <poste code="0450310">TRESORERIE DE BEAUNE-LA-ROLANDE</poste>
+ <poste code="0490420">TRESORERIE BEAUPREAU</poste>
+ <poste code="0381010">TRESORERIE BEAUREPAIRE</poste>
+ <poste code="0020320">TRESORERIE BEAURIEUX-ROUCY-CORBENY</poste>
+ <poste code="0550050">TRESORERIE DE BEAUSITE</poste>
+ <poste code="0060010">TRESORERIE BEAUSOLEIL</poste>
+ <poste code="0600000">TRESORERIE GENERALE DE L' OISE</poste>
+ <poste code="0600040">TRESORERIE DE BEAUVAIS VILLE</poste>
+ <poste code="0600050">TRESORERIE DE BEAUVAIS BANLIEUE</poste>
+ <poste code="0600070">TRESORERIE DE BEAUVAIS MUNICIPALE</poste>
+ <poste code="0600900">PAIERIE DEPARTEMENTALE DE L' OISE</poste>
+ <poste code="0600580">TRESORERIE DE BEAUVAIS AMENDES</poste>
+ <poste code="0600001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE L' OISE</poste>
+ <poste code="0850290">TRESORERIE BEAUVOIR-SUR-MER</poste>
+ <poste code="0790050">TRESORERIE BEAUVOIR-SUR-NIORT</poste>
+ <poste code="0350050">TRESORERIE BECHEREL</poste>
+ <poste code="0340340">TRESORERIE DE BEDARIEUX</poste>
+ <poste code="0640060">TRESORERIE BEDOUS</poste>
+ <poste code="0220320">TRESORERIE BEGARD</poste>
+ <poste code="0330060">TRESORERIE BEGLES</poste>
+ <poste code="0110060">TRESORERIE BELCAIRE-RODOME</poste>
+ <poste code="0900000">TRESORERIE GENERALE DU TERRITOIRE-DE-BELFORT</poste>
+ <poste code="0900040">TRESORERIE BELFORT VILLE</poste>
+ <poste code="0900110">TRESORERIE BELFORT TERRITOIRE HABITAT</poste>
+ <poste code="0900120">TRESORERIE DE BELFORT ETS. HOSPITALIERS</poste>
+ <poste code="0900900">PAIERIE DEPARTEMENTALE DU TERRITOIRE-DE-BELFORT</poste>
+ <poste code="0900020">TRESORERIE DE BELFORT</poste>
+ <poste code="0330070">TRESORERIE DE BELIN-BELIET</poste>
+ <poste code="0870030">TRESORERIE DE BELLAC</poste>
+ <poste code="0230210">TRESORERIE DE BELLEGARDE-EN-MARCHE</poste>
+ <poste code="0010020">TRESORERIE BELLEGARDE-SUR-VALSERINE</poste>
+ <poste code="0610070">TRESORERIE BELLEME</poste>
+ <poste code="0760540">TRESORERIE BELLENCOMBRE</poste>
+ <poste code="0030140">TRESORERIE BELLERIVE-SUR-ALLIER</poste>
+ <poste code="0020470">TRESORERIE DE BELLEU-SOISSONS BANLIEUE</poste>
+ <poste code="0690480">TRESORERIE BELLEVILLE</poste>
+ <poste code="0010030">TRESORERIE BELLEY</poste>
+ <poste code="0422010">TRESORERIE BELMONT-DE-LA-LOIRE</poste>
+ <poste code="0120260">TRESORERIE DE RANCE ET ROUGIERS</poste>
+ <poste code="0110070">TRESORERIE BELPECH</poste>
+ <poste code="0240020">TRESORERIE BELVES</poste>
+ <poste code="0110080">TRESORERIE BELVEZE-DU-RAZES</poste>
+ <poste code="0230020">TRESORERIE DE BENEVENT L'ABBAYE-LE GRAND BOURG</poste>
+ <poste code="0670030">TRESORERIE BENFELD</poste>
+ <poste code="0622170">TRESORERIE DE BERCK</poste>
+ <poste code="0240470">TRESORERIE BERGERAC MUNICIPALE ET BANLIEUE</poste>
+ <poste code="0240590">TRESORERIE DE BERGERAC</poste>
+ <poste code="0594010">TRESORERIE BERGUES</poste>
+ <poste code="0595190">TRESORERIE BERLAIMONT</poste>
+ <poste code="1830000">TRESORERIE AMBASSADE DE FRANCE EN ALLEMAGNE</poste>
+ <poste code="0800670">TRESORERIE BERNAVILLE</poste>
+ <poste code="0270190">TRESORERIE DE BERNAY</poste>
+ <poste code="0131050">TRESORERIE BERRE-L'ETANG</poste>
+ <poste code="0250000">TRESORERIE GENERALE DU DOUBS</poste>
+ <poste code="0250007">CENTRE REGIONAL DES PENSIONS DU DOUBS</poste>
+ <poste code="0250008">CENTRE DE FORMATION DEPARTEMENTAL DU DOUBS</poste>
+ <poste code="0250009">DEPARTEMENT INFORMATIQUE DU DOUBS</poste>
+ <poste code="0250030">TRESORERIE BESANCON</poste>
+ <poste code="0250050">TRESORERIE DU GRAND BESANCON</poste>
+ <poste code="0250060">TRESORERIE BESANCON CHRU</poste>
+ <poste code="0250130">TRESORERIE MORRE-ROULANS</poste>
+ <poste code="0250280">TRESORERIE BESANCON ETS HOSP. DPTAUX</poste>
+ <poste code="0250800">PAIERIE REGIONALE DE FRANCHE-COMTE</poste>
+ <poste code="0250900">PAIERIE DEPARTEMENTALE DOUBS</poste>
+ <poste code="0250001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DU DOUBS</poste>
+ <poste code="0250006">PÔLE NATIONAL DE SOUTIEN AU RESEAU DE BESANCON - RJC</poste>
+ <poste code="0250490">TRESORERIE DE L' OPDHLM DU DOUBS-HABITAT 25</poste>
+ <poste code="0630020">TRESORERIE BESSE-ET-SAINT-ANASTAISE</poste>
+ <poste code="0830020">TRESORERIE BESSE-SUR-ISSOLE</poste>
+ <poste code="0300460">TRESORERIE BESSEGES</poste>
+ <poste code="0870040">TRESORERIE DE BESSINES-SUR-GARTEMPE</poste>
+ <poste code="0620600">TRESORERIE BETHUNE</poste>
+ <poste code="0620610">TRESORERIE BETHUNE MUNICIPALE</poste>
+ <poste code="0620620">TRESORERIE BEUVRY</poste>
+ <poste code="0270200">TRESORERIE BEUZEVILLE</poste>
+ <poste code="0190240">TRESORERIE BEYNAT</poste>
+ <poste code="0340350">TRESORERIE BEZIERS</poste>
+ <poste code="0340360">TRESORERIE BEZIERS MUNICIPALE</poste>
+ <poste code="0340370">TRESORERIE DE BEZIERS ETS HOSP</poste>
+ <poste code="0950300">TRESORERIE BEZONS</poste>
+ <poste code="0640370">TRESORERIE BIARRITZ</poste>
+ <poste code="0911030">TRESORERIE BIEVRES</poste>
+ <poste code="0760040">TRESORERIE BIHOREL</poste>
+ <poste code="0630030">TRESORERIE BILLOM-SAINT-DIER-D'AUVERGNE</poste>
+ <poste code="0671010">TRESORERIE BISCHWILLER</poste>
+ <poste code="0571010">TRESORERIE BITCHE</poste>
+ <poste code="0310430">TRESORERIE BLAGNAC</poste>
+ <poste code="0440350">TRESORERIE BLAIN</poste>
+ <poste code="0760030">TRESORERIE BLAINVILLE-CREVON</poste>
+ <poste code="0540330">TRESORERIE DE BAYON-BLAINVILLE-SUR-L'EAU</poste>
+ <poste code="0540340">TRESORERIE DE BLAMONT - CIREY-SUR-VEZOUZE</poste>
+ <poste code="0760550">TRESORERIE DE BLANGY-SUR-BRESLE</poste>
+ <poste code="0330080">TRESORERIE BLANQUEFORT</poste>
+ <poste code="0160090">TRESORERIE BLANZAC-PORCHERESSE</poste>
+ <poste code="0330700">TRESORERIE BLAYE</poste>
+ <poste code="0890070">TRESORERIE BLENEAU-SAINT-FARGEAU</poste>
+ <poste code="0370030">TRESORERIE BLERE</poste>
+ <poste code="0390060">TRESORERIE BLETTERANS</poste>
+ <poste code="0210520">TRESORERIE BLIGNY-SUR-OUCHE</poste>
+ <poste code="0680010">TRESORERIE BLODELSHEIM</poste>
+ <poste code="0410000">TRESORERIE GENERALE DE LOIR-ET-CHER</poste>
+ <poste code="0410030">TRESORERIE BLOIS MUNICIPALE</poste>
+ <poste code="0410360">TRESORERIE OPAC.DE.LOIR.ET.CHER</poste>
+ <poste code="0410900">PAIERIE DEPARTEMENTALE DE LOIR-ET-CHER</poste>
+ <poste code="0410010">TRESORERIE BLOIS VILLE</poste>
+ <poste code="0930000">TRESORERIE GENERALE DE LA SEINE-SAINT-DENIS</poste>
+ <poste code="0930009">DEPARTEMENT INFORMATIQUE DE LA SEINE-SAINT-DENIS</poste>
+ <poste code="0930320">TRESORERIE DE BOBIGNY MUNICIPALE</poste>
+ <poste code="0930900">PAIERIE DEPARTEMENTALE DE LA SEINE-SAINT-DENIS</poste>
+ <poste code="0930001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE LA SEINE SAINT DENIS</poste>
+ <poste code="0740080">TRESORERIE BOEGE</poste>
+ <poste code="0422180">TRESORERIE DE BOEN SUR LIGNON</poste>
+ <poste code="0020520">TRESORERIE BOHAIN-EN-VERMANDOIS</poste>
+ <poste code="0920050">TRESORERIE DE BOIS-COLOMBES</poste>
+ <poste code="0940020">TRESORERIE DE BOISSY-SAINT-LEGER</poste>
+ <poste code="0762020">TRESORERIE BOLBEC</poste>
+ <poste code="0840200">TRESORERIE BOLLENE-MONDRAGON</poste>
+ <poste code="0930060">TRESORERIE DE BONDY</poste>
+ <poste code="0930400">TRESORERIE DE BONDY MUNICIPALE</poste>
+ <poste code="02A0040">TRESORERIE BONIFACIO</poste>
+ <poste code="0230030">TRESORERIE BONNAT-LOURDOUEIX-SAINT-PIERRE</poste>
+ <poste code="0860390">TRESORERIE VOUNEUIL-SUR-VIENNE</poste>
+ <poste code="0280080">TRESORERIE BONNEVAL</poste>
+ <poste code="0740090">TRESORERIE BONNEVILLE</poste>
+ <poste code="0781010">TRESORERIE BONNIERES-SUR-SEINE</poste>
+ <poste code="0330000">TRESORERIE GENERALE DE LA GIRONDE</poste>
+ <poste code="0330007">CENTRE REGIONAL DES PENSIONS DE LA GIRONDE</poste>
+ <poste code="0330008">CENTRE DE FORMATION DEPARTEMENTAL DE LA GIRONDE</poste>
+ <poste code="0330009">DEPARTEMENT INFORMATIQUE DE LA GIRONDE</poste>
+ <poste code="0330170">RECETTE DES FINANCES BORDEAUX MUNICIPALE</poste>
+ <poste code="0330181">TRESORERIE DE BORDEAUX CHU ANNEXE CH PERRENS</poste>
+ <poste code="0330800">PAIERIE REGIONALE D'AQUITAINE</poste>
+ <poste code="0330900">PAIERIE DEPARTEMENTALE DE LA GIRONDE</poste>
+ <poste code="0330001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE LA GIRONDE</poste>
+ <poste code="0330006">PÔLE NATIONAL DE SOUTIEN AU RESEAU DE BORDEAUX</poste>
+ <poste code="0330120">TRESORERIE BORDEAUX AMENDES</poste>
+ <poste code="0330140">TRESORERIE DE BORDEAUX RIVE GAUCHE</poste>
+ <poste code="0330160">TRESORERIE BORDEAUX EST</poste>
+ <poste code="0330171">RECETTE DES FINANCES SERVICE DE LA COMMUNAUTE URBAINE</poste>
+ <poste code="02B0040">TRESORERIE BORGO-CAMPILE</poste>
+ <poste code="0190020">TRESORERIE BORT-LES-ORGUES</poste>
+ <poste code="0440030">TRESORERIE DE BOUAYE</poste>
+ <poste code="0595020">TRESORERIE BOUCHAIN</poste>
+ <poste code="0100070">TRESORERIE DE BOUILLY</poste>
+ <poste code="0571020">TRESORERIE BOULAY</poste>
+ <poste code="0920060">TRESORERIE BOULOGNE-BILLANCOURT</poste>
+ <poste code="0920070">TRESORERIE BOULOGNE-BILLANCOURT MUNICIPALE</poste>
+ <poste code="0310480">TRESORERIE BOULOGNE-SUR-GESSE-BLAJAN</poste>
+ <poste code="0622000">RECETTE DES FINANCES BOULOGNE-SUR-MER</poste>
+ <poste code="0622020">TRESORERIE DE BOULOGNE-SUR-MER</poste>
+ <poste code="0622030">TRESORERIE BOULOGNE-SUR-MER MUNICIPALE</poste>
+ <poste code="0622040">TRESORERIE BOULOGNE-SUR-MER CTRE HOSP</poste>
+ <poste code="0720070">TRESORERIE BOULOIRE-PARIGNE</poste>
+ <poste code="0030010">TRESORERIE DE BOURBON-L'ARCHAMBAULT</poste>
+ <poste code="0710020">TRESORERIE BOURBON-LANCY</poste>
+ <poste code="0520300">TRESORERIE BOURBONNE-LES-BAINS</poste>
+ <poste code="0594030">TRESORERIE BOURBOURG</poste>
+ <poste code="0270370">TRESORERIE DE ROUTOT-BOURG-ACHARD</poste>
+ <poste code="0420010">TRESORERIE DE BOURG-ARGENTAL</poste>
+ <poste code="0010000">TRESORERIE GENERALE DE L' AIN</poste>
+ <poste code="0010050">TRESORERIE DE BOURG-EN-BRESSE</poste>
+ <poste code="0010060">TRESORERIE BOURG-EN-BRESSE MUNICIPALE</poste>
+ <poste code="0010900">PAIERIE DEPARTEMENTALE DE L' AIN</poste>
+ <poste code="0010001">CELLULE CONTRÔLE REDEVANCE AUDIOVISUELLE DE L' AIN</poste>
+ <poste code="0630040">TRESORERIE DE BOURG-LASTIC-HERMENT</poste>
+ <poste code="0660050">TRESORERIE BOURG-MADAME</poste>
+ <poste code="0070080">TRESORERIE BOURG-SAINT-ANDEOL</poste>
+ <poste code="0730070">TRESORERIE DE BOURG-SAINT-MAURICE</poste>
+ <poste code="0330710">TRESORERIE BOURG SUR GIRONDE</poste>
+ <poste code="0230040">TRESORERIE DE BOURGANEUF - PONTARION</poste>
+ <poste code="0180050">TRESORERIE BOURGES</poste>
+ <poste code="0180900">PAIERIE DEPARTEMENTALE DU CHER</poste>
+ <poste code="0180060">TRESORERIE BOURGES MUNICIPALE</poste>
+ <poste code="0180070">TRESORERIE DE BOURGES CH JACQUES COEUR</poste>
+ <poste code="0180410">TRESORERIE BOURGES H.L.M</poste>
+ <poste code="0180420">TRESORERIE DE BOURGES ETS SPECIALISES</poste>
+ <poste code="0180000">TRESORERIE GENERALE DU CHER</poste>
+ <poste code="0381100">TRESORERIE BOURGOIN-JALLIEU COLLECTIVITES</poste>
+ <poste code="0381110">TRESORERIE BOURGOIN-JALLIEU</poste>
+ <poste code="0270210">TRESORERIE DE BOURGTHEROULDE-INFREVILLE</poste>
+ <poste code="0370050">TRESORERIE BOURGUEIL</poste>
+ <poste code="0520040">TRESORERIE BOURMONT</poste>
+ <poste code="0230050">TRESORERIE BOUSSAC</poste>
+ <poste code="0671020">TRESORERIE BOUXWILLER</poste>
+ <poste code="0571030">TRESORERIE BOUZONVILLE</poste>
+ <poste code="0730080">TRESORERIE BOZEL</poste>
+ <poste code="0120020">TRESORERIE BOZOULS</poste>
+ <poste code="0410040">TRESORERIE BRACIEUX</poste>
+ <poste code="0110400">TRESORERIE DE VILLASAVARY</poste>
+ <poste code="0240030">TRESORERIE BRANTOME</poste>
+ <poste code="0810190">TRESORERIE BRASSAC</poste>
+ <poste code="0770300">TRESORERIE BRAY-SUR-SEINE</poste>
+ <poste code="0800510">TRESORERIE BRAY-SUR-SOMME</poste>
+ <poste code="0500260">TRESORERIE BRECEY-SAINT-POIS</poste>
+ <poste code="0500010">TRESORERIE BREHAL-GAVRAY</poste>
+ <poste code="0060020">TRESORERIE DE BREIL-SUR-ROYA</poste>
+ <poste code="0600080">TRESORERIE BRESLES</poste>
+ <poste code="0790070">TRESORERIE BRESSUIRE</poste>
+ <poste code="0290200">TRESORERIE BREST BELLEVUE</poste>
+ <poste code="0290000">TRESORERIE GENERALE DU FINISTERE</poste>
+ <poste code="0290030">TRESORERIE DE BREST QUATRE-MOULINS</poste>
+ <poste code="0290040">TRESORERIE BREST MUNICIPALE ET COM.URB</poste>
+ <poste code="0290041">TRESORERIE ANNEXE OPAC</poste>
+ <poste code="0290050">TRESORERIE BREST CHU</poste>
+ <poste code="0290900">PAIERIE DEPARTEMENTALE D' FINISTERE</poste>
+ <poste code="0290001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DU FINISTERE</poste>
+ <poste code="0460020">TRESORERIE DE BRETENOUX-VAYRAC</poste>
+ <poste code="0600090">TRESORERIE DE BRETEUIL-CREVECOEUR-LE-GRAND</poste>
+ <poste code="0270010">TRESORERIE BRETEUIL-SUR-ITON</poste>
+ <poste code="0140090">TRESORERIE BRETTEVILLE-SUR-LAIZE</poste>
+ <poste code="0280330">TRESORERIE BREZOLLES</poste>
+ <poste code="0050030">TRESORERIE BRIANCON</poste>
+ <poste code="0450320">TRESORERIE DE BRIARE</poste>
+ <poste code="0500400">TRESORERIE BRICQUEBEC</poste>
+ <poste code="0770010">TRESORERIE BRIE-COMTE-ROBERT</poste>
+ <poste code="0100080">TRESORERIE DE BRIENNE-LE-CHATEAU</poste>
+ <poste code="0890080">TRESORERIE DE BRIENON-SUR-ARMANCON</poste>
+ <poste code="0540400">TRESORERIE DE BRIEY</poste>
+ <poste code="0830030">TRESORERIE BRIGNOLES</poste>
+ <poste code="0270220">TRESORERIE BRIONNE</poste>
+ <poste code="0430050">TRESORERIE BRIOUDE</poste>
+ <poste code="0790080">TRESORERIE BRIOUX-SUR-BOUTONNE</poste>
+ <poste code="0490080">TRESORERIE BRISSAC-QUINCE</poste>
+ <poste code="0190260">TRESORERIE BRIVE MUNICIPALE</poste>
+ <poste code="0190330">TRESORERIE BRIVE VILLE</poste>
+ <poste code="0690210">TRESORERIE LE VINATIER CTRE HOSP. SPEC</poste>
+ <poste code="0690430">TRESORERIE DE BRON</poste>
+ <poste code="0220230">TRESORERIE BROONS</poste>
+ <poste code="0280100">TRESORERIE BROU</poste>
+ <poste code="0620630">TRESORERIE BRUAY-LA BUISSIERE</poste>
+ <poste code="0670060">TRESORERIE DE BRUMATH</poste>
+ <poste code="0910050">TRESORERIE BRUNOY</poste>
+ <poste code="0880040">TRESORERIE DE BRUYERES</poste>
+ <poste code="0760060">TRESORERIE BUCHY</poste>
+ <poste code="0190030">TRESORERIE BUGEAT</poste>
+ <poste code="0260310">TRESORERIE DE BUIS-LES-BARONNIES</poste>
+ <poste code="0880050">TRESORERIE BULGNEVILLE</poste>
+ <poste code="0620640">TRESORERIE BULLY-LES-MINES</poste>
+ <poste code="0170260">TRESORERIE BURIE</poste>
+ <poste code="0860290">TRESORERIE POITIERS OPAC</poste>
+ <poste code="0710470">TRESORERIE BUXY-SAINT-GENGOUX-LE-NATIONAL</poste>
+ <poste code="0360060">TRESORERIE BUZANCAIS</poste>
+ <poste code="0080070">TRESORERIE BUZANCY</poste>
+ <poste code="0660250">TRESORERIE DE CABESTANY</poste>
+ <poste code="0660900">PAIERIE DEPARTEMENTALE DES PYRENEES-ORIENTALES</poste>
+ <poste code="0140110">TRESORERIE CABOURG</poste>
+ <poste code="0940030">TRESORERIE CACHAN</poste>
+ <poste code="0840090">TRESORERIE CADENET</poste>
+ <poste code="0330220">TRESORERIE DE CADILLAC</poste>
+ <poste code="0140000">TRESORERIE GENERALE DU CALVADOS</poste>
+ <poste code="0140007">CENTRE REGIONAL DES PENSIONS DU CALVADOS</poste>
+ <poste code="0140008">CENTRE DE FORMATION DEPARTEMENTAL DU CALVADOS</poste>
+ <poste code="0140009">DEPARTEMENT INFORMATIQUE DU CALVADOS</poste>
+ <poste code="0140120">TRESORERIE DE CAEN BASSIN SAINT-PIERRE</poste>
+ <poste code="0140130">TRESORERIE CAEN MUNICIPALE</poste>
+ <poste code="0140140">TRESORERIE CAEN CHU</poste>
+ <poste code="0140440">TRESORERIE DU CALVADOS</poste>
+ <poste code="0140450">TRESORERIE CAEN AMENDES</poste>
+ <poste code="0140900">PAIERIE DEPARTEMENTALE DU CALVADOS</poste>
+ <poste code="0140001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DU CALVADOS</poste>
+ <poste code="0140100">TRESORERIE CAEN BANLIEUE OUEST</poste>
+ <poste code="0140800">PAIERIE REGIONALE DE BASSE-NORMANDIE</poste>
+ <poste code="0061040">TRESORERIE CAGNES-SUR-MER</poste>
+ <poste code="0460000">TRESORERIE GENERALE DU LOT</poste>
+ <poste code="0460900">PAIERIE DEPARTEMENTALE DU LOT</poste>
+ <poste code="0460030">TRESORERIE DE CAHORS</poste>
+ <poste code="02B0060">TRESORERIE CALACUCCIA</poste>
+ <poste code="0622080">TRESORERIE CALAIS MUNICIPALE</poste>
+ <poste code="0622160">TRESORERIE CALAIS CTRE. HOSPIT. ET BANLIEUE</poste>
+ <poste code="0622050">TRESORERIE DE CALAIS</poste>
+ <poste code="0220330">TRESORERIE CALLAC</poste>
+ <poste code="0690020">TRESORERIE DE CALUIRE-ET-CUIRE</poste>
+ <poste code="02B0070">TRESORERIE CALVI</poste>
+ <poste code="0330230">TRESORERIE CAMBES</poste>
+ <poste code="0640380">TRESORERIE CAMBO-LES-BAINS</poste>
+ <poste code="0593120">TRESORERIE CAMBRAI MUNICIPALE ET HOSP</poste>
+ <poste code="0593170">TRESORERIE CAMBRAI BANLIEUE EST</poste>
+ <poste code="0140480">TRESORERIE DE CAMBREMER</poste>
+ <poste code="0622180">TRESORERIE CAMPAGNE-LES-HESDIN</poste>
+ <poste code="0350410">TRESORERIE CANCALE</poste>
+ <poste code="0490090">TRESORERIE CANDE</poste>
+ <poste code="0061050">TRESORERIE CANNES</poste>
+ <poste code="0061070">TRESORERIE CANNES MUNICIPALE</poste>
+ <poste code="0061080">TRESORERIE CANNES CENTRE HOSPITALIER</poste>
+ <poste code="0760680">TRESORERIE CANY-BARVILLE</poste>
+ <poste code="0120300">TRESORERIE CAPDENAC-GARE</poste>
+ <poste code="0110100">TRESORERIE CAPENDU</poste>
+ <poste code="0340380">TRESORERIE DE CAPESTANG</poste>
+ <poste code="1010030">TRESORERIE DE CAPESTERRE</poste>
+ <poste code="0310050">TRESORERIE CARAMAN-LANTA</poste>
+ <poste code="0310560">TRESORERIE DU VOLVESTRE</poste>
+ <poste code="0110000">TRESORERIE GENERALE DE L' AUDE</poste>
+ <poste code="0110410">TRESORERIE CARCASSONNE ETAB HOSPITALIERS</poste>
+ <poste code="0110110">TRESORERIE DE CARCASSONNE VILLE</poste>
+ <poste code="0110130">TRESORERIE CARCASSONNE AGGLOMERATION</poste>
+ <poste code="0110900">PAIERIE DEPARTEMENTALE DE L' AUDE</poste>
+ <poste code="0831040">TRESORERIE COTIGNAC-CARCES</poste>
+ <poste code="0500030">TRESORERIE CARENTAN</poste>
+ <poste code="0290210">TRESORERIE DE CARHAIX-PLOUGUER</poste>
+ <poste code="0080080">TRESORERIE DE CARIGNAN</poste>
+ <poste code="0810050">TRESORERIE CARMAUX-PAMPELONNE</poste>
+ <poste code="0560270">TRESORERIE CARNAC</poste>
+ <poste code="0840210">TRESORERIE DE CARPENTRAS</poste>
+ <poste code="0840290">TRESORERIE DE CARPENTRAS ETS. HOSPITALIERS</poste>
+ <poste code="0440340">TRESORERIE DE CARQUEFOU</poste>
+ <poste code="0610090">TRESORERIE CARROUGES</poste>
+ <poste code="0620660">TRESORERIE CARVIN</poste>
+ <poste code="0594050">TRESORERIE DE CASSEL</poste>
+ <poste code="0310070">TRESORERIE CASTANET-TOLOSAN</poste>
+ <poste code="0470160">TRESORERIE CASTELJALOUX</poste>
+ <poste code="0040050">TRESORERIE DE CASTELLANE</poste>
+ <poste code="0470170">TRESORERIE CASTELMORON-SUR-LOT</poste>
+ <poste code="0330240">TRESORERIE DE CASTELNAU-DE-MEDOC</poste>
+ <poste code="0340020">TRESORERIE DE CASTELNAU-LE-LEZ</poste>
+ <poste code="0650110">TRESORERIE DE CASTELNAU-GALAN</poste>
+ <poste code="0460050">TRESORERIE CASTELNAU-MONTRATIER</poste>
+ <poste code="0110140">TRESORERIE CASTELNAUDARY</poste>
+ <poste code="0820040">TRESORERIE CASTELSARRASIN</poste>
+ <poste code="0400210">TRESORERIE CASTETS</poste>
+ <poste code="0090060">TRESORERIE CASTILLON-EN-COUSERANS</poste>
+ <poste code="0330630">TRESORERIE CASTILLON-LA-BATAILLE</poste>
+ <poste code="0470180">TRESORERIE DE CASTILLONNES</poste>
+ <poste code="0810200">TRESORERIE CASTRES</poste>
+ <poste code="0810210">TRESORERIE CASTRES VILLE</poste>
+ <poste code="0330250">TRESORERIE CASTRES-GIRONDE</poste>
+ <poste code="0340030">TRESORERIE DE CASTRIES</poste>
+ <poste code="0460060">TRESORERIE CATUS</poste>
+ <poste code="0760080">TRESORERIE CAUDEBEC-EN-CAUX</poste>
+ <poste code="0593140">TRESORERIE DE CAUDRY</poste>
+ <poste code="0220240">TRESORERIE CAULNES</poste>
+ <poste code="0820050">TRESORERIE CAUSSADE-CAYLUS</poste>
+ <poste code="0840100">TRESORERIE CAVAILLON</poste>
+ <poste code="1020000">TRESORERIE GENERALE DE LA GUYANE</poste>
+ <poste code="1020020">TRESORERIE CAYENNE AMANDIERS</poste>
+ <poste code="1020800">PAIERIE REGIONALE DE LA GUYANE</poste>
+ <poste code="1020900">PAIERIE DEPARTEMENTALE DE LA GUYANE</poste>
+ <poste code="1020010">TRESORERIE DE CAYENNE ILE</poste>
+ <poste code="0430060">TRESORERIE CAYRES</poste>
+ <poste code="0460070">TRESORERIE CAZALS-SALVIAC</poste>
+ <poste code="0320060">TRESORERIE CAZAUBON</poste>
+ <poste code="0310570">TRESORERIE CAZERES-MARTRES-TOLOSANE</poste>
+ <poste code="0790090">TRESORERIE CELLES-SUR-BELLE</poste>
+ <poste code="0330290">TRESORERIE CENON</poste>
+ <poste code="0720100">TRESORERIE DE CERANS-MANSIGNE</poste>
+ <poste code="0660060">TRESORERIE CERET</poste>
+ <poste code="0950000">TRESORERIE GENERALE DU VAL-D'OISE</poste>
+ <poste code="0950008">CENTRE DE FORMATION DEPARTEMENTAL DU VAL-D'OISE</poste>
+ <poste code="0950200">TRESORERIE DE CERGY</poste>
+ <poste code="0950900">PAIERIE DEPARTEMENTALE DU VAL-D'OISE</poste>
+ <poste code="0950330">TRESORERIE DE CERGY COLLECTIVITES</poste>
+ <poste code="0950350">TRESORERIE VAL D'OISE AMENDES</poste>
+ <poste code="0950001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DU VAL D'OISE</poste>
+ <poste code="0030150">TRESORERIE CERILLY-AINAY-LE-CHATEAU</poste>
+ <poste code="0790100">TRESORERIE CERIZAY</poste>
+ <poste code="0680250">TRESORERIE CERNAY</poste>
+ <poste code="02B0210">TRESORERIE SAN-NICOLAO</poste>
+ <poste code="0350060">TRESORERIE DE RENNES BANLIEUE EST</poste>
+ <poste code="0160110">TRESORERIE CHABANAIS</poste>
+ <poste code="0260050">TRESORERIE CHABEUIL</poste>
+ <poste code="0890090">TRESORERIE CHABLIS</poste>
+ <poste code="0710480">TRESORERIE CHAGNY-SAINT-LEGER-SUR-DHEUNE</poste>
+ <poste code="0530060">TRESORERIE CHAILLAND-JUVIGNE</poste>
+ <poste code="0850190">TRESORERIE DE CHAILLE-LES-MARAIS</poste>
+ <poste code="0110160">TRESORERIE CHALABRE</poste>
+ <poste code="0160120">TRESORERIE CHALAIS</poste>
+ <poste code="0520310">TRESORERIE DE CHALINDREY</poste>
+ <poste code="0850300">TRESORERIE CHALLANS-PALLUAU</poste>
+ <poste code="0730310">TRESORERIE DE CHALLES-LES-EAUX</poste>
+ <poste code="0710500">TRESORERIE CHALON-SUR-SAONE MUNICIPALE</poste>
+ <poste code="0710570">TRESORERIE CHALON-SUR-SAONE VILLE</poste>
+ <poste code="0490100">TRESORERIE CHALONNES-SUR-LOIRE</poste>
+ <poste code="0510040">TRESORERIE DE CHALONS-EN-CHAMPAGNE MUNICIPALE</poste>
+ <poste code="0510800">PAIERIE REGIONALE DE CHAMPAGNE-ARDENNE</poste>
+ <poste code="0510000">TRESORERIE GENERALE DE LA MARNE</poste>
+ <poste code="0510007">CENTRE REGIONAL DES PENSIONS DE LA MARNE</poste>
+ <poste code="0510008">CENTRE DE FORMATION DEPARTEMENTAL DE LA MARNE</poste>
+ <poste code="0510009">DEPARTEMENT INFORMATIQUE DE LA MARNE</poste>
+ <poste code="0510030">TRESORERIE DE CHALONS-EN-CHAMPAGNE</poste>
+ <poste code="0510060">TRESORERIE DE CHALONS-EN-CHAMPAGNE ETS HOSP</poste>
+ <poste code="0510080">TRESORERIE CHALONS - BANLIEUE SUD</poste>
+ <poste code="0510140">TRESORERIE CHALONS - BANLIEUE NORD</poste>
+ <poste code="0510290">TRESORERIE CHALONS-EN-CHAMPAGNE HLM</poste>
+ <poste code="0510900">PAIERIE DEPARTEMENTALE DE LA MARNE</poste>
+ <poste code="0870050">TRESORERIE CHALUS-DOURNAZAC</poste>
+ <poste code="0630800">PAIERIE REGIONALE D'AUVERGNE</poste>
+ <poste code="0190040">TRESORERIE CHAMBERET</poste>
+ <poste code="0730000">TRESORERIE GENERALE DE LA SAVOIE</poste>
+ <poste code="0730090">TRESORERIE CHAMBERY</poste>
+ <poste code="0730100">TRESORERIE DE CHAMBERY MUNICIPALE</poste>
+ <poste code="0730370">TRESORERIE CHAMBERY ETS HOSP.</poste>
+ <poste code="0730380">TRESORERIE DE L' OPAC DE LA SAVOIE</poste>
+ <poste code="0730900">PAIERIE DEPARTEMENTALE DE LA SAVOIE</poste>
+ <poste code="0600330">TRESORERIE CHAMBLY</poste>
+ <poste code="0230220">TRESORERIE DE CHAMBON-SUR-VOUEIZE</poste>
+ <poste code="0740120">TRESORERIE CHAMONIX-MONT-BLANC</poste>
+ <poste code="0730120">TRESORERIE DE CHAMOUX-SUR-GELON</poste>
+ <poste code="0160130">TRESORERIE CHAMPAGNE-MOUTON</poste>
+ <poste code="0700040">TRESORERIE CHAMPAGNEY</poste>
+ <poste code="0390080">TRESORERIE CHAMPAGNOLE</poste>
+ <poste code="0630060">TRESORERIE CHAMPEIX</poste>
+ <poste code="0941010">TRESORERIE DE CHAMPIGNY-SUR-MARNE</poste>
+ <poste code="0490430">TRESORERIE CHAMPTOCEAUX</poste>
+ <poste code="0600340">TRESORERIE CHANTILLY</poste>
+ <poste code="0850050">TRESORERIE CHANTONNAY</poste>
+ <poste code="0100090">TRESORERIE DE CHAOURCE</poste>
+ <poste code="0690800">PAIERIE REGIONALE DE RHONE-ALPES</poste>
+ <poste code="0940350">TRESORERIE VAL-DE-MARNE AMENDES</poste>
+ <poste code="0940050">TRESORERIE CHARENTON-LE-PONT</poste>
+ <poste code="0080000">TRESORERIE GENERALE DES ARDENNES</poste>
+ <poste code="0080090">TRESORERIE DE CHARLEVILLE COURS BRIAND</poste>
+ <poste code="0080100">TRESORERIE DE CHARLEVILLE-MEZIERES BOURBON</poste>
+ <poste code="0080110">TRESORERIE CHARLEVILLE-MEZIERES ETS HOSP</poste>
+ <poste code="0080900">PAIERIE DEPARTEMENTALE DES ARDENNES</poste>
+ <poste code="0422020">TRESORERIE CHARLIEU-POUILLY</poste>
+ <poste code="0020390">TRESORERIE DE CHARLY-SUR-MARNE</poste>
+ <poste code="0880060">TRESORERIE CHARMES-BRANTIGNY</poste>
+ <poste code="0890110">TRESORERIE CHARNY</poste>
+ <poste code="0710040">TRESORERIE CHAROLLES-ST-BONNET-DE-JOUX</poste>
+ <poste code="0280000">TRESORERIE GENERALE D'EURE-ET-LOIR</poste>
+ <poste code="0280120">TRESORERIE CHARTRES-VILLE</poste>
+ <poste code="0280140">TRESORERIE CHARTRES MUNICIPALE</poste>
+ <poste code="0280001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE L' EURE ET LOIR</poste>
+ <poste code="0350070">TRESORERIE DE CHARTRES-DE-BRETAGNE</poste>
+ <poste code="0160140">TRESORERIE DE CHASSENEUIL-SUR-BONNIEURE</poste>
+ <poste code="0580030">TRESORERIE CHATEAU-CHINON</poste>
+ <poste code="0720120">TRESORERIE CHATEAU-DU-LOIR</poste>
+ <poste code="0530070">TRESORERIE CHATEAU-GONTIER</poste>
+ <poste code="0370080">TRESORERIE CHATEAU-LA-VALLIERE</poste>
+ <poste code="0770320">TRESORERIE CHATEAU-LANDON-BEAUMONT-DU-GAT</poste>
+ <poste code="0450330">TRESORERIE CHATEAU-RENARD</poste>
+ <poste code="0370090">TRESORERIE CHATEAU-RENAULT</poste>
+ <poste code="0570100">TRESORERIE CHATEAU-SALINS</poste>
+ <poste code="0020400">TRESORERIE DE CHATEAU-THIERRY-ET-BANLIEUE</poste>
+ <poste code="0050040">TRESORERIE CHATEAU-VILLE-VIEILLE</poste>
+ <poste code="0440050">TRESORERIE DE CHATEAUBRIANT</poste>
+ <poste code="0280150">TRESORERIE CHATEAUDUN</poste>
+ <poste code="0350090">TRESORERIE CHATEAUGIRON</poste>
+ <poste code="0290060">TRESORERIE CHATEAULIN</poste>
+ <poste code="0180110">TRESORERIE CHATEAUMEILLANT-CULAN</poste>
+ <poste code="0290070">TRESORERIE CHATEAUNEUF-DU-FAOU</poste>
+ <poste code="0280340">TRESORERIE CHATEAUNEUF-EN-THYMERAIS</poste>
+ <poste code="0350420">TRESORERIE CHATEAUNEUF-D'ILLE-ET-VILAINE</poste>
+ <poste code="0870060">TRESORERIE CHATEAUNEUF-LA-FORET</poste>
+ <poste code="0160160">TRESORERIE CHATEAUNEUF-SUR-CHARENTE</poste>
+ <poste code="0180120">TRESORERIE DE CHATEAUNEUF-SUR-CHER</poste>
+ <poste code="0450060">TRESORERIE CHATEAUNEUF-SUR-LOIRE</poste>
+ <poste code="0490110">TRESORERIE CHATEAUNEUF-SUR-SARTHE</poste>
+ <poste code="0132050">TRESORERIE CHATEAURENARD</poste>
+ <poste code="0360000">TRESORERIE GENERALE DE L' INDRE</poste>
+ <poste code="0360100">TRESORERIE CHATEAUROUX MUNICIPALE</poste>
+ <poste code="0360900">PAIERIE DEPARTEMENTALE DE L'INDRE</poste>
+ <poste code="0360080">TRESORERIE CHATEAUROUX VILLE</poste>
+ <poste code="0520070">TRESORERIE CHATEAUVILLAIN</poste>
+ <poste code="0880080">TRESORERIE CHATEL-SUR-MOSELLE</poste>
+ <poste code="0220440">TRESORERIE CHATELAUDREN</poste>
+ <poste code="0860300">TRESORERIE DES COLLECTIVITES DU CHATELLERAUDAIS</poste>
+ <poste code="0860370">TRESORERIE DE CHATELLERAULT</poste>
+ <poste code="9800000">TRESORERIE GENERALE DES CREANCES SPECIALES DU TRESOR</poste>
+ <poste code="9800006">PÔLE NATIONAL D' ASSISTANCE RECOUVT CONTENTIEUX</poste>
+ <poste code="0230060">TRESORERIE CHATELUS-MALVALEIX</poste>
+ <poste code="0921030">TRESORERIE CHATENAY-MALABRY</poste>
+ <poste code="0880090">TRESORERIE DE CHATENOIS</poste>
+ <poste code="0921040">TRESORERIE CHATILLON</poste>
+ <poste code="0450340">TRESORERIE CHATILLON-COLIGNY</poste>
+ <poste code="0580050">TRESORERIE CHATILLON-EN-BAZOIS</poste>
+ <poste code="0260080">TRESORERIE CHATILLON-LUS-LA-CROIX-HAUTE</poste>
+ <poste code="0010100">TRESORERIE CHATILLON-SUR-CHALARONNE</poste>
+ <poste code="0360110">TRESORERIE CHATILLON-SUR-INDRE-CLION</poste>
+ <poste code="0210090">TRESORERIE CHATILLON-SUR-SEINE</poste>
+ <poste code="0780040">TRESORERIE CHATOU</poste>
+ <poste code="0150070">TRESORERIE CHAUDES-AIGUES-PIERREFORT</poste>
+ <poste code="0710050">TRESORERIE CHAUFFAILLES</poste>
+ <poste code="0800520">TRESORERIE CHAULNES</poste>
+ <poste code="0520000">TRESORERIE GENERALE DE LA HAUTE-MARNE</poste>
+ <poste code="0520080">TRESORERIE CHAUMONT</poste>
+ <poste code="0520900">PAIERIE DEPARTEMENTALE DE LA HAUTE-MARNE</poste>
+ <poste code="0600110">TRESORERIE DE CHAUMONT-EN-VEXIN</poste>
+ <poste code="0020330">TRESORERIE CHAUNY</poste>
+ <poste code="0390290">TRESORERIE CHAUSSIN-LE DESCHAUX</poste>
+ <poste code="0860040">TRESORERIE CHAUVIGNY</poste>
+ <poste code="0690500">TRESORERIE DE CHAZAY-D'AZERGUES</poste>
+ <poste code="0420210">TRESORERIE CHAZELLES-SUR-LYON</poste>
+ <poste code="0790140">TRESORERIE CHEF-BOUTONNE</poste>
+ <poste code="0772030">TRESORERIE DE CHELLES</poste>
+ <poste code="0490440">TRESORERIE CHEMILLE</poste>
+ <poste code="0230230">TRESORERIE CHENERAILLES</poste>
+ <poste code="0941030">TRESORERIE DE CHENNEVIERES-SUR-MARNE</poste>
+ <poste code="0210480">TRESORERIE CHENOVE</poste>
+ <poste code="0500410">TRESORERIE CHERBOURG</poste>
+ <poste code="0500420">TRESORERIE CHERBOURG MUNICIPALE</poste>
+ <poste code="0890480">TRESORERIE CHEROY-DOMATS</poste>
+ <poste code="0520110">TRESORERIE CHEVILLON</poste>
+ <poste code="0780050">TRESORERIE CHEVREUSE</poste>
+ <poste code="0911040">TRESORERIE CHILLY-MAZARIN</poste>
+ <poste code="0370110">TRESORERIE CHINON</poste>
+ <poste code="0940060">TRESORERIE DE CHOISY-LE-ROI</poste>
+ <poste code="0490450">TRESORERIE CHOLET MUNICIPALE ET VEZINS</poste>
+ <poste code="0490500">TRESORERIE DE CHOLET</poste>
+ <poste code="0860050">TRESORERIE CIVRAY</poste>
+ <poste code="0390090">TRESORERIE CLAIRVAUX-LES-LACS</poste>
+ <poste code="0921050">TRESORERIE DE CLAMART</poste>
+ <poste code="0580060">TRESORERIE CLAMECY</poste>
+ <poste code="0593150">TRESORERIE DE CLARY</poste>
+ <poste code="0772040">TRESORERIE CLAYE-SOUILLY</poste>
+ <poste code="0760100">TRESORERIE CLERES</poste>
+ <poste code="0600120">TRESORERIE CLERMONT</poste>
+ <poste code="0600130">TRESORERIE CLERMONT CHSI</poste>
+ <poste code="0550320">TRESORERIE CLERMONT-EN-ARGONNE</poste>
+ <poste code="0630100">TRESORERIE DE CLERMONT-FERRAND BANLIEUE</poste>
+ <poste code="0630110">TRESORERIE DE CLERMONT-FERRAND MUNICIPALE</poste>
+ <poste code="0630000">TRESORERIE GENERALE DU PUY-DE-DOME</poste>
+ <poste code="0630007">CENTRE REGIONAL DES PENSIONS DU PUY-DE-DOME</poste>
+ <poste code="0630008">CENTRE DE FORMATION DEPARTEMENTAL DU PUY-DE-DOME</poste>
+ <poste code="0630009">DEPARTEMENT INFORMATIQUE DU PUY-DE-DOME</poste>
+ <poste code="0630070">TRESORERIE DE CLERMONT-FERRAND 1ERE DIVISION</poste>
+ <poste code="0630120">TRESORERIE CLERMONT-FERRAND CHU</poste>
+ <poste code="0630340">TRESORERIE CLERMONT-FERRAND OPAC</poste>
+ <poste code="0630900">PAIERIE DEPARTEMENTALE DU PUY-DE-DOME</poste>
+ <poste code="0630001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DU PUY DE DÔME</poste>
+ <poste code="0630080">TRESORERIE CLERMONT-FERRAND 2EME DIVISION</poste>
+ <poste code="0340070">TRESORERIE CLERMONT-L'HERAULT</poste>
+ <poste code="0250360">TRESORERIE DE CLERVAL</poste>
+ <poste code="0920110">TRESORERIE CLICHY</poste>
+ <poste code="0920120">TRESORERIE CLICHY MUNICIPALE</poste>
+ <poste code="0440060">TRESORERIE CLISSON</poste>
+ <poste code="0280160">TRESORERIE CLOYES-COURTALAIN</poste>
+ <poste code="0710070">TRESORERIE CLUNY-SALORNAY</poste>
+ <poste code="0740130">TRESORERIE CLUSES</poste>
+ <poste code="0160170">TRESORERIE COGNAC</poste>
+ <poste code="0160180">TRESORERIE COGNAC MUNICIPALE</poste>
+ <poste code="0010110">TRESORERIE COLIGNY</poste>
+ <poste code="0220030">TRESORERIE COLLINEE</poste>
+ <poste code="0680230">TRESORERIE WINTZENHEIM</poste>
+ <poste code="0680900">PAIERIE DEPARTEMENTALE DU HAUT-RHIN</poste>
+ <poste code="0680000">TRESORERIE GENERALE DU HAUT-RHIN</poste>
+ <poste code="0680020">TRESORERIE DE COLMAR</poste>
+ <poste code="0680040">TRESORERIE COLMAR MUNICIPALE</poste>
+ <poste code="0680050">TRESORERIE ETS HOSP. PUBLICS DE COLMAR</poste>
+ <poste code="0680300">TRESORERIE HAUT RHIN AMENDES</poste>
+ <poste code="0040060">TRESORERIE COLMARS</poste>
+ <poste code="0920140">TRESORERIE DE COLOMBES MUNICIPALE</poste>
+ <poste code="0920130">TRESORERIE COLOMBES</poste>
+ <poste code="0540020">TRESORERIE DE COLOMBEY-LES-BELLES</poste>
+ <poste code="0310410">TRESORERIE COLOMIERS-LEGUEVIN</poste>
+ <poste code="0700080">TRESORERIE COMBEAUFONTAINE</poste>
+ <poste code="0350430">TRESORERIE COMBOURG</poste>
+ <poste code="0630360">TRESORERIE COMBRONDE</poste>
+ <poste code="0590080">TRESORERIE COMINES</poste>
+ <poste code="0030160">TRESORERIE DE COMMENTRY</poste>
+ <poste code="0550060">TRESORERIE COMMERCY</poste>
+ <poste code="0600570">TRESORERIE COMPIEGNE</poste>
+ <poste code="0600470">TRESORERIE COMPIEGNE MUNICIPALE</poste>
+ <poste code="0831050">TRESORERIE COMPS-SUR-ARTUBY</poste>
+ <poste code="0292030">TRESORERIE CONCARNEAU</poste>
+ <poste code="0270030">TRESORERIE CONCHES-EN-OUCHE</poste>
+ <poste code="0150080">TRESORERIE CONDAT</poste>
+ <poste code="0020420">TRESORERIE CONDE-EN-BRIE</poste>
+ <poste code="0595030">TRESORERIE CONDE-SUR-L'ESCAUT</poste>
+ <poste code="0140170">TRESORERIE CONDE-SUR-NOIREAU</poste>
+ <poste code="0320080">TRESORERIE CONDOM</poste>
+ <poste code="0690040">TRESORERIE CONDRIEU</poste>
+ <poste code="0781020">TRESORERIE CONFLANS-SAINTE-HONORINE</poste>
+ <poste code="0160190">TRESORERIE CONFOLENS</poste>
+ <poste code="0720130">TRESORERIE DE CONLIE</poste>
+ <poste code="0720140">TRESORERIE DE CONNERRE-MONTFORT</poste>
+ <poste code="0060030">TRESORERIE CONTES</poste>
+ <poste code="0410060">TRESORERIE CONTRES</poste>
+ <poste code="0800140">TRESORERIE CONTY</poste>
+ <poste code="0910060">TRESORERIE CORBEIL-VILLABE</poste>
+ <poste code="0910080">TRESORERIE CORBEIL-VILLABE MUNICIPALE</poste>
+ <poste code="0910350">TRESORERIE ESSONNE AMENDES</poste>
+ <poste code="0800150">TRESORERIE CORBIE</poste>
+ <poste code="0580070">TRESORERIE CORBIGNY</poste>
+ <poste code="0880520">TRESORERIE CORCIEUX</poste>
+ <poste code="0810080">TRESORERIE CORDES-VAOUR</poste>
+ <poste code="0220040">TRESORERIE CORLAY</poste>
+ <poste code="0950060">TRESORERIE CORMEILLES-EN-PARISIS</poste>
+ <poste code="0880100">TRESORERIE CORNIMONT</poste>
+ <poste code="0380100">TRESORERIE CORPS</poste>
+ <poste code="0190060">TRESORERIE CORREZE</poste>
+ <poste code="02B0090">TRESORERIE CORTE-OMESSA</poste>
+ <poste code="0580080">TRESORERIE COSNE-COURS-SUR-LOIRE</poste>
+ <poste code="0530090">TRESORERIE DE COSSE-LE-VIVIEN</poste>
+ <poste code="0710590">TRESORERIE DE COUCHES-PARIS-L'HOPITAL</poste>
+ <poste code="0070120">TRESORERIE COUCOURON</poste>
+ <poste code="0020090">TRESORERIE COUCY-LE-CHATEAU</poste>
+ <poste code="0594060">TRESORERIE COUDEKERQUE-BRANCHE</poste>
+ <poste code="0860060">TRESORERIE COUHE</poste>
+ <poste code="0110180">TRESORERIE COUIZA</poste>
+ <poste code="0770080">TRESORERIE DE COULOMMIERS</poste>
+ <poste code="0790160">TRESORERIE DE COULONGES - VAL D'EGRAY</poste>
+ <poste code="0920150">TRESORERIE COURBEVOIE</poste>
+ <poste code="0920160">TRESORERIE COURBEVOIE MUNICIPALE</poste>
+ <poste code="0570110">TRESORERIE COURCELLES-CHAUSSY</poste>
+ <poste code="0170030">TRESORERIE COURCON-NUAILLE-D'AUNIS</poste>
+ <poste code="0910070">TRESORERIE EVRY MUNICIPALE</poste>
+ <poste code="0340090">TRESORERIE DE COURNONTERRAL</poste>
+ <poste code="0630510">TRESORERIE COURPIERE</poste>
+ <poste code="0140180">TRESORERIE COURSEULLES-SUR-MER</poste>
+ <poste code="0890150">TRESORERIE DE COURSON-LES-CARRIERES-OUANNE</poste>
+ <poste code="0450350">TRESORERIE COURTENAY</poste>
+ <poste code="0280180">TRESORERIE COURVILLE-SUR-EURE</poste>
+ <poste code="0500060">TRESORERIE COUTANCES</poste>
+ <poste code="0330640">TRESORERIE COUTRAS</poste>
+ <poste code="0170270">TRESORERIE COZES-MORTAGNE-SUR-GIRONDE</poste>
+ <poste code="0530110">TRESORERIE DE CRAON</poste>
+ <poste code="0430090">TRESORERIE CRAPONNE-SUR-ARZON</poste>
+ <poste code="0800620">TRESORERIE DE CRECY-EN-PONTHIEU</poste>
+ <poste code="0600350">TRESORERIE DE CREIL</poste>
+ <poste code="0600440">TRESORERIE CREIL MUNICIPALE</poste>
+ <poste code="0381050">TRESORERIE CREMIEU-TREPT</poste>
+ <poste code="0330300">TRESORERIE DE CREON</poste>
+ <poste code="0600360">TRESORERIE CREPY-EN-VALOIS</poste>
+ <poste code="0260090">TRESORERIE CREST</poste>
+ <poste code="0940080">TRESORERIE CRETEIL CENTRE HOSPITALIER</poste>
+ <poste code="0940004">CE CENTRE ENCAISSEMENT CRETEIL</poste>
+ <poste code="0940000">TRESORERIE GENERALE DU VAL-DE-MARNE</poste>
+ <poste code="0940007">CENTRE REGIONAL DES PENSIONS DU VAL-DE-MARNE</poste>
+ <poste code="0940008">CENTRE DE FORMATION DEPARTEMENTAL DU VAL-DE-MARNE</poste>
+ <poste code="0940009">DEPARTEMENT INFORMATIQUE DU VAL-DE-MARNE</poste>
+ <poste code="0940070">TRESORERIE CRETEIL</poste>
+ <poste code="0940360">TRESORERIE DE CRETEIL MUNICIPALE</poste>
+ <poste code="0940900">PAIERIE DEPARTEMENTALE DU VAL-DE-MARNE</poste>
+ <poste code="0940001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DU VAL DE MARNE</poste>
+ <poste code="0571040">TRESORERIE CREUTZWALD</poste>
+ <poste code="0762030">TRESORERIE CRIQUETOT-L'ESNEVAL</poste>
+ <poste code="0230250">TRESORERIE DE CROCQ - LA COURTINE</poste>
+ <poste code="0620200">TRESORERIE CROISILLES</poste>
+ <poste code="0290090">TRESORERIE CROZON</poste>
+ <poste code="0740140">TRESORERIE CRUSEILLES</poste>
+ <poste code="0830050">TRESORERIE CUERS</poste>
+ <poste code="0310440">TRESORERIE CUGNAUX</poste>
+ <poste code="0593030">TRESORERIE DE CUINCY</poste>
+ <poste code="0710090">TRESORERIE CUISEAUX</poste>
+ <poste code="0710100">TRESORERIE CUISERY-MONTPONT-MONTRET</poste>
+ <poste code="0630520">TRESORERIE CUNLHAT</poste>
+ <poste code="0870210">TRESORERIE D' ORADOUR-SUR-VAYRES</poste>
+ <poste code="0030180">TRESORERIE CUSSET</poste>
+ <poste code="0110190">TRESORERIE CUXAC-CABARDES</poste>
+ <poste code="1210000">TRESORERIE AMBASSADE DE FRANCE AU SENEGAL</poste>
+ <poste code="0470190">TRESORERIE DAMAZAN</poste>
+ <poste code="0670070">TRESORERIE DAMBACH-LA-VILLE</poste>
+ <poste code="0772070">TRESORERIE DAMMARTIN-EN-GOELE-ST-SOUPPLETS</poste>
+ <poste code="0390300">TRESORERIE DAMPIERRE</poste>
+ <poste code="0700120">TRESORERIE DE DAMPIERRE-SUR-SALON-LAVONCOURT</poste>
+ <poste code="0270040">TRESORERIE DAMVILLE</poste>
+ <poste code="0550340">TRESORERIE DE DAMVILLERS</poste>
+ <poste code="0860310">TRESORERIE DANGE-SAINT-ROMAIN</poste>
+ <poste code="0681050">TRESORERIE DANNEMARIE</poste>
+ <poste code="0290100">TRESORERIE DAOULAS</poste>
+ <poste code="0880130">TRESORERIE DE DARNEY</poste>
+ <poste code="0400230">TRESORERIE DAX</poste>
+ <poste code="0400320">TRESORERIE DAX CENTRE HOSPITALIER</poste>
+ <poste code="0140591">TRESORERIE ANNEXE DE DEAUVILLE</poste>
+ <poste code="0120320">TRESORERIE DECAZEVILLE</poste>
+ <poste code="0580090">TRESORERIE DECIZE</poste>
+ <poste code="0900050">TRESORERIE DE DELLE</poste>
+ <poste code="0570130">TRESORERIE DELME</poste>
+ <poste code="0595040">TRESORERIE DE DENAIN IMPÔTS</poste>
+ <poste code="0595050">TRESORERIE DENAIN MUNICIPALE</poste>
+ <poste code="0360090">TRESORERIE CHATEAUROUX BANLIEUE</poste>
+ <poste code="0440070">TRESORERIE DERVAL</poste>
+ <poste code="0370140">TRESORERIE DESCARTES</poste>
+ <poste code="0622100">TRESORERIE DESVRES</poste>
+ <poste code="0760120">TRESORERIE DEVILLE-LES-ROUEN</poste>
+ <poste code="0260100">TRESORERIE DIE</poste>
+ <poste code="0760560">TRESORERIE DIEPPE CENTRE ET EST</poste>
+ <poste code="0760570">TRESORERIE DIEPPE MUNICIPALE</poste>
+ <poste code="0550350">TRESORERIE DE DIEUE-SUR-MEUSE</poste>
+ <poste code="0260320">TRESORERIE DIEULEFIT-LA BEGUDE-DE-MAZENC</poste>
+ <poste code="0570140">TRESORERIE DIEUZE</poste>
+ <poste code="0040000">TRESORERIE GENERALE DES ALPES-DE-HAUTE-PROVENCE</poste>
+ <poste code="0040080">TRESORERIE DIGNE-LES-BAINS</poste>
+ <poste code="0040900">PAIERIE DEPARTEMENTALE DES ALPES-DE-HAUTE-PROVENCE</poste>
+ <poste code="0710110">TRESORERIE DIGOIN</poste>
+ <poste code="0210000">TRESORERIE GENERALE DE LA COTE-D'OR</poste>
+ <poste code="0210007">CENTRE REGIONAL DES PENSIONS DE LA COTE-D'OR</poste>
+ <poste code="0210008">CENTRE DE FORMATION DEPARTEMENTAL DE LA COTE-D'OR</poste>
+ <poste code="0210009">DEPARTEMENT INFORMATIQUE DE LA COTE-D'OR</poste>
+ <poste code="0210030">TRESORERIE DE DIJON BANLIEUE</poste>
+ <poste code="0210110">TRESORERIE DIJON NORD</poste>
+ <poste code="0210120">TRESORERIE DIJON SUD ET AMENDES</poste>
+ <poste code="0210130">TRESORERIE DIJON MUNICIPALE</poste>
+ <poste code="0210140">TRESORERIE DIJON CHU</poste>
+ <poste code="0210800">PAIERIE REGIONALE DE BOURGOGNE</poste>
+ <poste code="0210900">PAIERIE DEPARTEMENTALE DE LA COTE-D'OR</poste>
+ <poste code="0210001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE LA CÔTE D'OR</poste>
+ <poste code="0210080">TRESORERIE DIJON OPAC ET OPDHLM</poste>
+ <poste code="0220250">TRESORERIE DE DINAN VILLE ET BANLIEUE</poste>
+ <poste code="0350440">TRESORERIE DE DINARD</poste>
+ <poste code="0140490">TRESORERIE DIVES-SUR-MER</poste>
+ <poste code="1710000">TRESORERIE AMBASSADE DE FRANCE EN REPUBLIQUE DE DJIBOUTI</poste>
+ <poste code="0880150">TRESORERIE DOCELLES</poste>
+ <poste code="0350450">TRESORERIE DE DOL-DE-BRETAGNE</poste>
+ <poste code="0390310">TRESORERIE DOLE COLLEGIALE</poste>
+ <poste code="0390320">TRESORERIE DOLE MUNICIPALE</poste>
+ <poste code="0380120">TRESORERIE DOMENE</poste>
+ <poste code="0610120">TRESORERIE DE DOMFRONT</poste>
+ <poste code="0240090">TRESORERIE DOMME</poste>
+ <poste code="0880170">TRESORERIE DOMPAIRE-VAUBEXY</poste>
+ <poste code="0710190">TRESORERIE DE MATOUR</poste>
+ <poste code="0030050">TRESORERIE DOMPIERRE-SUR-BESBRE</poste>
+ <poste code="0770090">TRESORERIE DONNEMARIE-DONTILLY</poste>
+ <poste code="0580100">TRESORERIE DONZY-CHATEAUNEUF-VAL-DE-BARGIS</poste>
+ <poste code="0510340">TRESORERIE DE DORMANS</poste>
+ <poste code="0580110">TRESORERIE DORNES</poste>
+ <poste code="0593000">RECETTE DES FINANCES DOUAI</poste>
+ <poste code="0593040">TRESORERIE DE DOUAI</poste>
+ <poste code="0593050">TRESORERIE DOUAI MUNICIPALE</poste>
+ <poste code="0292040">TRESORERIE DOUARNENEZ</poste>
+ <poste code="0595060">TRESORERIE DOUCHY-LES-MINES</poste>
+ <poste code="0760130">TRESORERIE DOUDEVILLE</poste>
+ <poste code="0490510">TRESORERIE DOUE-LA-FONTAINE</poste>
+ <poste code="0520150">TRESORERIE DOULAINCOURT-SAUCOURT</poste>
+ <poste code="0550360">TRESORERIE DE DUN-SUR-MEUSE</poste>
+ <poste code="0520160">TRESORERIE DOULEVANT-LE-CHATEAU</poste>
+ <poste code="0800680">TRESORERIE DOULLENS</poste>
+ <poste code="0910090">TRESORERIE DOURDAN</poste>
+ <poste code="0810220">TRESORERIE DOURGNE</poste>
+ <poste code="0740150">TRESORERIE DOUVAINE-BONS-EN-CHABLAIS</poste>
+ <poste code="0140200">TRESORERIE DOUVRES-LA-DELIVRANDE</poste>
+ <poste code="0620650">TRESORERIE DOUVRIN</poste>
+ <poste code="0140500">TRESORERIE DOZULE</poste>
+ <poste code="0831070">TRESORERIE DE DRAGUIGNAN IMPOTS</poste>
+ <poste code="0831000">RECETTE DES FINANCES DRAGUIGNAN</poste>
+ <poste code="0831080">TRESORERIE DRAGUIGNAN MUNICIPALE</poste>
+ <poste code="0930080">TRESORERIE DRANCY</poste>
+ <poste code="0930090">TRESORERIE DRANCY MUNICIPALE</poste>
+ <poste code="0910100">TRESORERIE DRAVEIL</poste>
+ <poste code="0280360">TRESORERIE DE DREUX MUNICIPALE</poste>
+ <poste code="0280350">TRESORERIE DE DREUX ET PAYS DROUAIS</poste>
+ <poste code="0410240">TRESORERIE DE DROUE</poste>
+ <poste code="0671040">TRESORERIE DRULINGEN</poste>
+ <poste code="0671050">TRESORERIE DRUSENHEIM</poste>
+ <poste code="0500270">TRESORERIE DUCEY</poste>
+ <poste code="0760140">TRESORERIE DUCLAIR</poste>
+ <poste code="0230070">TRESORERIE DUN-LE-PALESTEL</poste>
+ <poste code="0180150">TRESORERIE DUN-SUR-AURON</poste>
+ <poste code="0594000">RECETTE DES FINANCES DUNKERQUE</poste>
+ <poste code="0594080">TRESORERIE DUNKERQUE MUNICIPALE ET COM.URB</poste>
+ <poste code="0594160">TRESORERIE DUNKERQUE ET. HOSP.</poste>
+ <poste code="0594070">TRESORERIE DE DUNKERQUE</poste>
+ <poste code="0470200">TRESORERIE DURAS</poste>
+ <poste code="0110420">TRESORERIE DURBAN-CORBIERES</poste>
+ <poste code="0490130">TRESORERIE DURTAL</poste>
+ <poste code="0950070">TRESORERIE EAUBONNE</poste>
+ <poste code="0320250">TRESORERIE MONTREAL</poste>
+ <poste code="0320090">TRESORERIE EAUZE</poste>
+ <poste code="0030200">TRESORERIE EBREUIL-BELLENAVES</poste>
+ <poste code="0700130">TRESORERIE ECHENOZ-LA-MELINE-ET-COLOMBIER</poste>
+ <poste code="0380130">TRESORERIE ECHIROLLES</poste>
+ <poste code="0720160">TRESORERIE ECOMMOY</poste>
+ <poste code="0270250">TRESORERIE ECOS ET TOURNY</poste>
+ <poste code="0610320">TRESORERIE D' ECOUCHE</poste>
+ <poste code="0951010">TRESORERIE ECOUEN</poste>
+ <poste code="0690050">TRESORERIE D' ECULLY</poste>
+ <poste code="0190070">TRESORERIE EGLETONS</poste>
+ <poste code="0540360">TRESORERIE EINVILLE-AU-JARD</poste>
+ <poste code="0760150">TRESORERIE D' ELBEUF</poste>
+ <poste code="0660070">TRESORERIE ELNE</poste>
+ <poste code="0560020">TRESORERIE ELVEN</poste>
+ <poste code="0050050">TRESORERIE D' EMBRUN-SAVINES</poste>
+ <poste code="0951020">TRESORERIE D' ENGHIEN-LES-BAINS</poste>
+ <poste code="0630600">TRESORERIE ENNEZAT</poste>
+ <poste code="0680070">TRESORERIE ENSISHEIM</poste>
+ <poste code="0120060">TRESORERIE D' ENTRAYGUES-SAINT-AMANS</poste>
+ <poste code="0760580">TRESORERIE ENVERMEU</poste>
+ <poste code="0710600">TRESORERIE D' EPINAC</poste>
+ <poste code="0880220">TRESORERIE D' HADOL-DARNIEULLES</poste>
+ <poste code="0880000">TRESORERIE GENERALE DES VOSGES</poste>
+ <poste code="0880190">TRESORERIE D' EPINAL-POINCARE</poste>
+ <poste code="0880490">TRESORERIE DES VOSGES-OPHLM VILLE D'EPINAL</poste>
+ <poste code="0880900">PAIERIE DEPARTEMENTALE DES VOSGES</poste>
+ <poste code="0880180">TRESORERIE D' EPINAL AUBERT</poste>
+ <poste code="0931050">TRESORERIE EPINAY-SUR-SEINE</poste>
+ <poste code="0781030">TRESORERIE EPONE</poste>
+ <poste code="0500430">TRESORERIE EQUEURDREVILLE-HAINNEVILLE</poste>
+ <poste code="0950100">TRESORERIE ERMONT</poste>
+ <poste code="0530120">TRESORERIE D' ERNEE</poste>
+ <poste code="0670120">TRESORERIE ERSTEIN</poste>
+ <poste code="0120070">TRESORERIE ESPALION</poste>
+ <poste code="0540030">TRESORERIE ESSEY-LES-NANCY</poste>
+ <poste code="0120080">TRESORERIE ESTAING</poste>
+ <poste code="0100150">TRESORERIE D' ESTISSAC</poste>
+ <poste code="0600480">TRESORERIE ESTREES-SAINT-DENIS</poste>
+ <poste code="0220050">TRESORERIE ETABLES-SUR-MER</poste>
+ <poste code="0550370">TRESORERIE ETAIN</poste>
+ <poste code="0910370">TRESORERIE D' ETAMPES</poste>
+ <poste code="0910380">TRESORERIE D' ETAMPES COLLECTIVITES</poste>
+ <poste code="0710620">TRESORERIE DE SAINT-LEGER-SOUS-BEUVRAY</poste>
+ <poste code="0622190">TRESORERIE ETAPLES</poste>
+ <poste code="0330720">TRESORERIE ETAULIERS</poste>
+ <poste code="0560260">TRESORERIE BELZ</poste>
+ <poste code="0270260">TRESORERIE ETREPAGNY</poste>
+ <poste code="0760590">TRESORERIE EU</poste>
+ <poste code="0230260">TRESORERIE D' EVAUX-LES-BAINS</poste>
+ <poste code="0740160">TRESORERIE EVIAN-LES-BAINS</poste>
+ <poste code="0270000">TRESORERIE GENERALE DE L' EURE</poste>
+ <poste code="0270060">TRESORERIE EVREUX MUNICIPALE</poste>
+ <poste code="0270420">TRESORERIE D' EVREUX ETABLIS HOSPITALIERS</poste>
+ <poste code="0270900">PAIERIE DEPARTEMENTALE DE L' EURE</poste>
+ <poste code="0270050">TRESORERIE EVREUX</poste>
+ <poste code="0270001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE L' EURE</poste>
+ <poste code="0530130">TRESORERIE D' EVRON</poste>
+ <poste code="0910000">TRESORERIE GENERALE DE L' ESSONNE</poste>
+ <poste code="0910360">TRESORERIE EVRY</poste>
+ <poste code="0910900">PAIERIE DEPARTEMENTALE DE L' ESSONNE</poste>
+ <poste code="9500000">PAIERIE GENERALE AUX ARMEES</poste>
+ <poste code="0910001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE L' ESSONNE</poste>
+ <poste code="0240120">TRESORERIE HAUTEFORT</poste>
+ <poste code="0240100">TRESORERIE D' EXCIDEUIL</poste>
+ <poste code="0132070">TRESORERIE MALLEMORT</poste>
+ <poste code="0132060">TRESORERIE EYGUIERES</poste>
+ <poste code="0190080">TRESORERIE EYGURANDE</poste>
+ <poste code="0240490">TRESORERIE EYMET</poste>
+ <poste code="0870100">TRESORERIE EYMOUTIERS</poste>
+ <poste code="0951060">TRESORERIE EZANVILLE</poste>
+ <poste code="0140230">TRESORERIE FALAISE</poste>
+ <poste code="0571050">TRESORERIE FAULQUEMONT</poste>
+ <poste code="0622290">TRESORERIE FAUQUEMBERGUES</poste>
+ <poste code="0762120">TRESORERIE FAUVILLE-EN-CAUX</poste>
+ <poste code="0740170">TRESORERIE FAVERGES</poste>
+ <poste code="0430100">TRESORERIE FAY-SUR-LIGNON</poste>
+ <poste code="0831090">TRESORERIE FAYENCE</poste>
+ <poste code="0762050">TRESORERIE FECAMP</poste>
+ <poste code="0762060">TRESORERIE FECAMP MUNICIPALE</poste>
+ <poste code="0230270">TRESORERIE DE FELLETIN - GENTIOUX PIGEROLLES</poste>
+ <poste code="0570170">TRESORERIE FENETRANGE</poste>
+ <poste code="0010130">TRESORERIE FERNEY-VOLTAIRE</poste>
+ <poste code="0681080">TRESORERIE FERRETTE</poste>
+ <poste code="0450360">TRESORERIE FERRIERES-EN GATINAIS</poste>
+ <poste code="0422190">TRESORERIE DE FEURS</poste>
+ <poste code="0460090">TRESORERIE FIGEAC</poste>
+ <poste code="0420030">TRESORERIE FIRMINY</poste>
+ <poste code="0512030">TRESORERIE DE FISMES</poste>
+ <poste code="0610340">TRESORERIE DE FLERS ET MESSEI</poste>
+ <poste code="0320110">TRESORERIE FLEURANCE</poste>
+ <poste code="0270270">TRESORERIE FLEURY-SUR-ANDELLE</poste>
+ <poste code="0800690">TRESORERIE FLIXECOURT</poste>
+ <poste code="0480070">TRESORERIE FLORAC-BARRE-DES-CEVENNES</poste>
+ <poste code="0570630">TRESORERIE FLORANGE</poste>
+ <poste code="0090000">TRESORERIE GENERALE DE L' ARIEGE</poste>
+ <poste code="0090070">TRESORERIE FOIX</poste>
+ <poste code="0090080">TRESORERIE FOIX BANLIEUE</poste>
+ <poste code="0090900">PAIERIE DEPARTEMENTALE DE L' ARIEGE</poste>
+ <poste code="0380410">TRESORERIE DE FONTAINE</poste>
+ <poste code="0210170">TRESORERIE FONTAINE-FRANCAISE</poste>
+ <poste code="0760700">TRESORERIE FONTAINE-LE-DUN</poste>
+ <poste code="0770340">TRESORERIE FONTAINEBLEAU MUNICIPALE</poste>
+ <poste code="0850210">TRESORERIE DE FONTENAY-LE-COMTE</poste>
+ <poste code="0941040">TRESORERIE DE FONTENAY-SOUS-BOIS</poste>
+ <poste code="0570180">TRESORERIE FONTOY</poste>
+ <poste code="0571070">TRESORERIE DE FORBACH PORTE DE FRANCE</poste>
+ <poste code="0040100">TRESORERIE FORCALQUIER</poste>
+ <poste code="0760710">TRESORERIE FORGES-LES-EAUX</poste>
+ <poste code="0600180">TRESORERIE DE FORMERIE-SONGEONS</poste>
+ <poste code="1030007">CENTRE REGIONAL DES PENSIONS DE LA MARTINIQUE</poste>
+ <poste code="1030008">CENTRE DE FORMATION DEPARTEMENTAL DE LA MARTINIQUE</poste>
+ <poste code="1030009">DEPARTEMENT INFORMATIQUE DE LA MARTINIQUE</poste>
+ <poste code="1030040">TRESORERIE FORT-DE-FRANCE CTRE HOSP.</poste>
+ <poste code="1030000">TRESORERIE GENERALE DE LA MARTINIQUE</poste>
+ <poste code="1030020">TRESORERIE FORT-DE-FRANCE EST-AMENDES</poste>
+ <poste code="1030030">TRESORERIE DE FORT-DE-FRANCE MUNICIPALE</poste>
+ <poste code="1030120">TRESORERIE DE FORT-DE-FRANCE OUEST ET BANLIEUE</poste>
+ <poste code="1030800">PAIERIE REGIONALE DE LA MARTINIQUE</poste>
+ <poste code="1030900">PAIERIE DEPARTEMENTALE DE LA MARTINIQUE</poste>
+ <poste code="0292050">TRESORERIE FOUESNANT</poste>
+ <poste code="0350110">TRESORERIE DE FOUGERES</poste>
+ <poste code="0350120">TRESORERIE DE FOUGERES COLLECTIVITÉS</poste>
+ <poste code="0700160">TRESORERIE FOUGEROLLES</poste>
+ <poste code="0595200">TRESORERIE FOURMIES</poste>
+ <poste code="0780290">TRESORERIE FOURQUEUX</poste>
+ <poste code="0880530">TRESORERIE FRAIZE</poste>
+ <poste code="0950290">TRESORERIE SAINT-LEU-FRANCONVILLE</poste>
+ <poste code="0740180">TRESORERIE FRANGY</poste>
+ <poste code="0831100">TRESORERIE FREJUS</poste>
+ <poste code="0720200">TRESORERIE FRESNAY-SUR-SARTHE</poste>
+ <poste code="0700170">TRESORERIE FRESNE-SAINT-MAMES-FRETIGNEY</poste>
+ <poste code="0940280">TRESORERIE DE FRESNES</poste>
+ <poste code="0550380">TRESORERIE FRESNES-EN-WOEVRE</poste>
+ <poste code="0620240">TRESORERIE D' AUXI-LE-CHATEAU-FREVENT</poste>
+ <poste code="0571080">TRESORERIE FREYMING-MERLEBACH</poste>
+ <poste code="0800600">TRESORERIE FRIVILLE-ESCARBOTIN</poste>
+ <poste code="0600190">TRESORERIE FROISSY</poste>
+ <poste code="0790200">TRESORERIE FRONTENAY-ROHAN-ROHAN</poste>
+ <poste code="0730160">TRESORERIE GRESY-SUR-ISERE</poste>
+ <poste code="0340100">TRESORERIE FRONTIGNAN</poste>
+ <poste code="0310110">TRESORERIE FRONTON</poste>
+ <poste code="0622200">TRESORERIE FRUGES</poste>
+ <poste code="0080190">TRESORERIE FUMAY</poste>
+ <poste code="0470210">TRESORERIE FUMEL</poste>
+ <poste code="0400020">TRESORERIE GABARRET</poste>
+ <poste code="0610350">TRESORERIE DE GACE</poste>
+ <poste code="0930110">TRESORERIE DE GAGNY</poste>
+ <poste code="0810090">TRESORERIE DE GAILLAC-CADALEN</poste>
+ <poste code="0270280">TRESORERIE GAILLON</poste>
+ <poste code="0800630">TRESORERIE GAMACHES</poste>
+ <poste code="0340110">TRESORERIE GANGES</poste>
+ <poste code="0030220">TRESORERIE GANNAT</poste>
+ <poste code="0050000">TRESORERIE GENERALE DES HAUTES-ALPES</poste>
+ <poste code="0050060">TRESORERIE DE GAP</poste>
+ <poste code="0050900">PAIERIE DEPARTEMENTALE DES HAUTES-ALPES</poste>
+ <poste code="0780080">TRESORERIE GARANCIERES</poste>
+ <poste code="0131060">TRESORERIE GARDANNE</poste>
+ <poste code="0781040">TRESORERIE GARGENVILLE</poste>
+ <poste code="0951100">TRESORERIE GARGES-LES-GONESSE</poste>
+ <poste code="0640090">TRESORERIE GARLIN</poste>
+ <poste code="0400030">TRESORERIE GEAUNE</poste>
+ <poste code="0170280">TRESORERIE GEMOZAC-TESSON</poste>
+ <poste code="0860070">TRESORERIE GENCAY</poste>
+ <poste code="0210180">TRESORERIE GENLIS</poste>
+ <poste code="0490340">TRESORERIE GENNES</poste>
+ <poste code="0920180">TRESORERIE GENNEVILLIERS</poste>
+ <poste code="0300470">TRESORERIE GENOLHAC</poste>
+ <poste code="0880540">TRESORERIE GERARDMER</poste>
+ <poste code="0210190">TRESORERIE GEVREY-CHAMBERTIN</poste>
+ <poste code="0010140">TRESORERIE GEX</poste>
+ <poste code="02B0190">TRESORERIE PRUNELLI-DI-FIUMORBO</poste>
+ <poste code="0450370">TRESORERIE GIEN</poste>
+ <poste code="0340120">TRESORERIE GIGNAC</poste>
+ <poste code="0320120">TRESORERIE GIMONT</poste>
+ <poste code="0110440">TRESORERIE GINESTAS</poste>
+ <poste code="0900060">TRESORERIE GIROMAGNY</poste>
+ <poste code="0270290">TRESORERIE GISORS</poste>
+ <poste code="0080200">TRESORERIE GIVET</poste>
+ <poste code="0690070">TRESORERIE DE GIVORS</poste>
+ <poste code="0710510">TRESORERIE GIVRY-MERCUREY</poste>
+ <poste code="0762070">TRESORERIE GODERVILLE</poste>
+ <poste code="0380140">TRESORERIE GONCELIN</poste>
+ <poste code="0160220">TRESORERIE GOND-PONTOUVRE</poste>
+ <poste code="0550120">TRESORERIE DE GONDRECOURT-LE-CHATEAU</poste>
+ <poste code="0951030">TRESORERIE GONESSE</poste>
+ <poste code="0840120">TRESORERIE GORDES</poste>
+ <poste code="0530150">TRESORERIE DE GORRON</poste>
+ <poste code="0310490">TRESORERIE DE GOURDAN-POLIGNAN</poste>
+ <poste code="0460100">TRESORERIE GOURDON</poste>
+ <poste code="0560220">TRESORERIE DE GOURIN-LE FAOUET</poste>
+ <poste code="0760720">TRESORERIE GOURNAY-EN-BRAY</poste>
+ <poste code="0230090">TRESORERIE GOUZON</poste>
+ <poste code="0180170">TRESORERIE DE GRACAY</poste>
+ <poste code="0460110">TRESORERIE GRAMAT</poste>
+ <poste code="1010050">TRESORERIE MARIE-GALANTE</poste>
+ <poste code="0760230">TRESORERIE GRAND-COURONNE</poste>
+ <poste code="0080210">TRESORERIE GRANDPRE</poste>
+ <poste code="0600200">TRESORERIE GRANDVILLIERS</poste>
+ <poste code="0880550">TRESORERIE GRANGES-SUR-VOLOGNE</poste>
+ <poste code="0500080">TRESORERIE GRANVILLE</poste>
+ <poste code="0061180">TRESORERIE GRASSE LA PAOUTE</poste>
+ <poste code="0061090">TRESORERIE GRASSE MUNICIPALE ET BANLIEUE</poste>
+ <poste code="0061000">RECETTE DES FINANCES GRASSE</poste>
+ <poste code="0810230">TRESORERIE GRAULHET</poste>
+ <poste code="0594090">TRESORERIE GRAVELINES</poste>
+ <poste code="0700190">TRESORERIE GRAY-AUTREY</poste>
+ <poste code="0310120">TRESORERIE GRENADE</poste>
+ <poste code="0400040">TRESORERIE GRENADE-SUR-L'ADOUR</poste>
+ <poste code="0380007">CENTRE REGIONAL DES PENSIONS DE L' ISERE</poste>
+ <poste code="0380008">CENTRE DE FORMATION DEPARTEMENTAL DE L' ISERE</poste>
+ <poste code="0380009">DEPARTEMENT INFORMATIQUE DE L' ISERE</poste>
+ <poste code="0380180">TRESORERIE DE GRENOBLE AMENDES & PROD DIVERS</poste>
+ <poste code="0380190">TRESORERIE GRENOBLE MUNICIPALE</poste>
+ <poste code="0380191">TRESORERIE DE GRENOBLE MUNICIPALE SERV. EAUX</poste>
+ <poste code="0380540">TRESORERIE DE L' OPAC GRENOBLOIS-ACTIS</poste>
+ <poste code="0380900">PAIERIE DEPARTEMENTALE DE L' ISERE</poste>
+ <poste code="0380001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE L' ISERE</poste>
+ <poste code="0380000">TRESORERIE GENERALE DE L' ISERE</poste>
+ <poste code="0380170">TRESORERIE DE GRENOBLE</poste>
+ <poste code="0260330">TRESORERIE GRIGNAN-TAULIGNAN</poste>
+ <poste code="0910340">TRESORERIE GRIGNY</poste>
+ <poste code="0831110">TRESORERIE GRIMAUD</poste>
+ <poste code="0820070">TRESORERIE GRISOLLES</poste>
+ <poste code="0571090">TRESORERIE GROSTENQUIN-MORHANGE</poste>
+ <poste code="0680080">TRESORERIE DE GUEBWILLER</poste>
+ <poste code="0440360">TRESORERIE DE GUEMENE-PENFAO</poste>
+ <poste code="0560230">TRESORERIE GUEMENE-SUR-SCORFF</poste>
+ <poste code="0560040">TRESORERIE GUER</poste>
+ <poste code="0441060">TRESORERIE GUERANDE</poste>
+ <poste code="0230000">TRESORERIE GENERALE DE LA CREUSE</poste>
+ <poste code="0230110">TRESORERIE GUERET</poste>
+ <poste code="0230180">TRESORERIE GUERET PIQUERELLE</poste>
+ <poste code="0230900">PAIERIE DEPARTEMENTALE DE LA CREUSE</poste>
+ <poste code="0580130">TRESORERIE GUERIGNY</poste>
+ <poste code="0710120">TRESORERIE GUEUGNON-ISSY-L'EVEQUE</poste>
+ <poste code="0350150">TRESORERIE GUICHEN</poste>
+ <poste code="0770130">TRESORERIE GUIGNES</poste>
+ <poste code="0020210">TRESORERIE GUIGNICOURT-NEUFCHATEL</poste>
+ <poste code="0060050">TRESORERIE DE GUILLAUMES</poste>
+ <poste code="0050080">TRESORERIE GUILLESTRE</poste>
+ <poste code="0622110">TRESORERIE GUINES</poste>
+ <poste code="0220340">TRESORERIE GUINGAMP</poste>
+ <poste code="0290120">TRESORERIE DE BREST BANLIEUE</poste>
+ <poste code="0020540">TRESORERIE GUISE</poste>
+ <poste code="0330660">TRESORERIE GUITRES-SAINT-DENIS-DE-PILE</poste>
+ <poste code="0700210">TRESORERIE GY</poste>
+ <poste code="0400050">TRESORERIE HAGETMAU</poste>
+ <poste code="0671060">TRESORERIE D' HAGUENAU</poste>
+ <poste code="0671070">TRESORERIE HAGUENAU MUNICIPALE</poste>
+ <poste code="0671000">RECETTE DES FINANCES D' HAGUENAU</poste>
+ <poste code="0800640">TRESORERIE HALLENCOURT-AIRAINES</poste>
+ <poste code="0590120">TRESORERIE HALLUIN</poste>
+ <poste code="0800540">TRESORERIE HAM-NESLE</poste>
+ <poste code="0762080">TRESORERIE HARFLEUR</poste>
+ <poste code="0540080">TRESORERIE D' HAROUE-VEZELISE</poste>
+ <poste code="0640400">TRESORERIE D' HASPARREN</poste>
+ <poste code="0671080">TRESORERIE HATTEN</poste>
+ <poste code="0590130">TRESORERIE DE LOOS-LES-WEPPES</poste>
+ <poste code="0260110">TRESORERIE LE GRAND-SERRE-MORAS</poste>
+ <poste code="0010150">TRESORERIE HAUTEVILLE-LOMPNES</poste>
+ <poste code="0595210">TRESORERIE HAUTMONT</poste>
+ <poste code="0570220">TRESORERIE HAYANGE</poste>
+ <poste code="0594180">TRESORERIE HAZEBROUCK</poste>
+ <poste code="0640390">TRESORERIE HENDAYE</poste>
+ <poste code="0620670">TRESORERIE D' HENIN-BEAUMONT</poste>
+ <poste code="0620680">TRESORERIE HENIN-BEAUMONT MUNICIPALE</poste>
+ <poste code="0560280">TRESORERIE HENNEBONT</poste>
+ <poste code="0441070">TRESORERIE HERBIGNAC</poste>
+ <poste code="0700220">TRESORERIE HERICOURT-ET-CHAMPEY</poste>
+ <poste code="0250390">TRESORERIE HERIMONCOURT</poste>
+ <poste code="0030230">TRESORERIE HERISSON</poste>
+ <poste code="0512050">TRESORERIE D' HERMONVILLE</poste>
+ <poste code="0140470">TRESORERIE HEROUVILLE-SAINT-CLAIR</poste>
+ <poste code="0620690">TRESORERIE HERSIN-COUPIGNY</poste>
+ <poste code="0622210">TRESORERIE D' HESDIN-LE-PARCQ</poste>
+ <poste code="0381040">TRESORERIE HEYRIEUX</poste>
+ <poste code="0681100">TRESORERIE HIRSINGUE</poste>
+ <poste code="0020670">TRESORERIE D' HIRSON</poste>
+ <poste code="0670180">TRESORERIE HOCHFELDEN</poste>
+ <poste code="0670200">TRESORERIE HOERDT</poste>
+ <poste code="0594100">TRESORERIE HONDSCHOOTE</poste>
+ <poste code="0140510">TRESORERIE HONFLEUR</poste>
+ <poste code="0800700">TRESORERIE HORNOY-LE-BOURG</poste>
+ <poste code="0620700">TRESORERIE HOUDAIN</poste>
+ <poste code="0781050">TRESORERIE DE HOUILLES</poste>
+ <poste code="0622220">TRESORERIE HUCQUELIERS</poste>
+ <poste code="0030240">TRESORERIE HURIEL-COURCAIS</poste>
+ <poste code="0830070">TRESORERIE HYERES MUNICIPALE</poste>
+ <poste code="0830060">TRESORERIE HYERES</poste>
+ <poste code="0640410">TRESORERIE IHOLDY</poste>
+ <poste code="0660090">TRESORERIE ILLE-SUR-TET</poste>
+ <poste code="0280220">TRESORERIE ILLIERS-COMBRAY</poste>
+ <poste code="0670220">TRESORERIE ILLKIRCH-GRAFFENSTADEN</poste>
+ <poste code="0671090">TRESORERIE INGWILLER</poste>
+ <poste code="0210210">TRESORERIE IS-SUR-TILLE</poste>
+ <poste code="0620710">TRESORERIE ISBERGUES</poste>
+ <poste code="0140270">TRESORERIE ISIGNY-SUR-MER</poste>
+ <poste code="0870350">TRESORERIE OPDHLM DE LA HAUTE-VIENNE</poste>
+ <poste code="0630140">TRESORERIE ISSOIRE</poste>
+ <poste code="0360170">TRESORERIE D' ISSOUDUN</poste>
+ <poste code="0920190">TRESORERIE D' ISSY-LES-MOULINEAUX</poste>
+ <poste code="0132140">TRESORERIE D' ISTRES</poste>
+ <poste code="0270080">TRESORERIE IVRY-LA-BATAILLE</poste>
+ <poste code="0940130">TRESORERIE IVRY-SUR-SEINE</poste>
+ <poste code="0940140">TRESORERIE IVRY-SUR-SEINE MUNICIPALE</poste>
+ <poste code="0280230">TRESORERIE JANVILLE</poste>
+ <poste code="0350170">TRESORERIE JANZE</poste>
+ <poste code="0450120">TRESORERIE JARGEAU</poste>
+ <poste code="0160240">TRESORERIE JARNAC</poste>
+ <poste code="0540420">TRESORERIE DE JARNY-CHAMBLEY</poste>
+ <poste code="0540410">TRESORERIE DE CONFLANS-EN-JARNISY</poste>
+ <poste code="0320150">TRESORERIE JEGUN</poste>
+ <poste code="0595220">TRESORERIE JEUMONT</poste>
+ <poste code="0540430">TRESORERIE DE JOEUF</poste>
+ <poste code="0890230">TRESORERIE JOIGNY</poste>
+ <poste code="0520180">TRESORERIE JOINVILLE ET POISSONS</poste>
+ <poste code="0170290">TRESORERIE JONZAC</poste>
+ <poste code="0560050">TRESORERIE JOSSELIN</poste>
+ <poste code="0370390">TRESORERIE DE TOURS BANLIEUE OUEST</poste>
+ <poste code="0070140">TRESORERIE JOYEUSE</poste>
+ <poste code="0220280">TRESORERIE JUGON-LES-LACS</poste>
+ <poste code="0190270">TRESORERIE DE JUILLAC</poste>
+ <poste code="0630160">TRESORERIE JUMEAUX</poste>
+ <poste code="0080220">TRESORERIE JUNIVILLE</poste>
+ <poste code="0700230">TRESORERIE DE JUSSEY-VITREY</poste>
+ <poste code="0911050">TRESORERIE JUVISY-SUR-ORGE</poste>
+ <poste code="0680090">TRESORERIE KAYSERSBERG</poste>
+ <poste code="1620020">TRESORERIE DE LA PROVINCE NORD</poste>
+ <poste code="1020040">TRESORERIE KOUROU</poste>
+ <poste code="0610160">TRESORERIE DE L'AIGLE</poste>
+ <poste code="0690010">TRESORERIE L'ARBRESLE</poste>
+ <poste code="0050010">TRESORERIE L'ARGENTIERE-LA-BESSEE</poste>
+ <poste code="0060040">TRESORERIE L'ESCARENE</poste>
+ <poste code="0940120">TRESORERIE L'HAY-LES-ROSES</poste>
+ <poste code="0370150">TRESORERIE L'ILE-BOUCHARD</poste>
+ <poste code="0850310">TRESORERIE DE L'ILE-D'YEU</poste>
+ <poste code="02B0100">TRESORERIE L'ILE-ROUSSE</poste>
+ <poste code="0950120">TRESORERIE L'ISLE-ADAM</poste>
+ <poste code="0310500">TRESORERIE L'ISLE-EN-DODON</poste>
+ <poste code="0860080">TRESORERIE L'ISLE JOURDAIN</poste>
+ <poste code="0320140">TRESORERIE L'ISLE-JOURDAIN</poste>
+ <poste code="0840130">TRESORERIE DE L'ISLE-SUR-LA-SORGUE</poste>
+ <poste code="0250400">TRESORERIE DE L'ISLE-SUR-LE-DOUBS</poste>
+ <poste code="0890220">TRESORERIE L'ISLE-SUR-SEREIN</poste>
+ <poste code="0310320">TRESORERIE DE L'UNION</poste>
+ <poste code="0650060">TRESORERIE LA BARTHE-DE-NESTE</poste>
+ <poste code="0590070">TRESORERIE DE LA BASSEE</poste>
+ <poste code="0090030">TRESORERIE LA BASTIDE-DE-SEROU</poste>
+ <poste code="0441040">TRESORERIE DE LA BAULE-ESCOUBLAC</poste>
+ <poste code="0480040">TRESORERIE LA CANOURGUE-ST-GERMAIN-DU-TEIL</poste>
+ <poste code="0020660">TRESORERIE LA CAPELLE</poste>
+ <poste code="0780410">TRESORERIE LA CELLE-SAINT-CLOUD</poste>
+ <poste code="0430070">TRESORERIE LA CHAISE-DIEU</poste>
+ <poste code="0730110">TRESORERIE LA CHAMBRE</poste>
+ <poste code="0710030">TRESORERIE LA CHAPELLE-DE-GUINCHAY</poste>
+ <poste code="0260060">TRESORERIE LA CHAPELLE-EN-VERCORS</poste>
+ <poste code="0770310">TRESORERIE LA CHAPELLE-LA REINE-LARCHANT</poste>
+ <poste code="0580020">TRESORERIE LA CHARITE-SUR-LOIRE</poste>
+ <poste code="0850200">TRESORERIE DU PAYS DE LA CHATAIGNERAIE</poste>
+ <poste code="0360120">TRESORERIE DE LA CHATRE</poste>
+ <poste code="0220020">TRESORERIE LA CHEZE</poste>
+ <poste code="0130030">TRESORERIE LA CIOTAT</poste>
+ <poste code="0710060">TRESORERIE LA CLAYETTE</poste>
+ <poste code="0381020">TRESORERIE LA COTE-SAINT-ANDRE</poste>
+ <poste code="0931040">TRESORERIE LA COURNEUVE MUNICIPALE</poste>
+ <poste code="0160200">TRESORERIE LA COURONNE</poste>
+ <poste code="0790060">TRESORERIE LA CRECHE</poste>
+ <poste code="0020130">TRESORERIE LA FERE</poste>
+ <poste code="0910120">TRESORERIE LA FERTE-ALAIS</poste>
+ <poste code="0720170">TRESORERIE LA FERTE-BERNARD</poste>
+ <poste code="0610330">TRESORERIE DE LA FERTE-FRENEL</poste>
+ <poste code="0770100">TRESORERIE LA-FERTE-GAUCHER-CHOISY-EN-BRIE</poste>
+ <poste code="0772100">TRESORERIE LA FERTE-SOUS-JOUARRE</poste>
+ <poste code="0610130">TRESORERIE LA FERTE-MACE</poste>
+ <poste code="0450090">TRESORERIE LA FERTE-SAINT-AUBIN</poste>
+ <poste code="0760690">TRESORERIE LA FEUILLIE</poste>
+ <poste code="0720180">TRESORERIE DE LA FLECHE</poste>
+ <poste code="1620070">TRESORERIE DE LA FOA</poste>
+ <poste code="0240510">TRESORERIE DE LA FORCE</poste>
+ <poste code="0560030">TRESORERIE LA GACILLY</poste>
+ <poste code="0920170">TRESORERIE LA GARENNE-COLOMBES</poste>
+ <poste code="0300480">TRESORERIE DE LA GRAND-COMBE</poste>
+ <poste code="0350140">TRESORERIE LA GUERCHE-DE-BRETAGNE</poste>
+ <poste code="0180180">TRESORERIE LA GUERCHE-SUR-L'AUBOIS</poste>
+ <poste code="0710130">TRESORERIE DE LA GUICHE</poste>
+ <poste code="0500090">TRESORERIE LA HAYE-DU-PUITS</poste>
+ <poste code="0500280">TRESORERIE LA HAYE-PESNEL</poste>
+ <poste code="0170040">TRESORERIE LA JARRIE</poste>
+ <poste code="0280240">TRESORERIE LA LOUPE</poste>
+ <poste code="0580160">TRESORERIE LA MACHINE</poste>
+ <poste code="0590270">TRESORERIE LA MADELEINE</poste>
+ <poste code="0850320">TRESORERIE LA MOTHE-ACHARD</poste>
+ <poste code="0790270">TRESORERIE LA MOTHE-SAINT-HERAY</poste>
+ <poste code="0040160">TRESORERIE LA MOTTE.TURRIERS</poste>
+ <poste code="0730390">TRESORERIE DE LA MOTTE SERVOLEX</poste>
+ <poste code="0380290">TRESORERIE LA MURE</poste>
+ <poste code="0671140">TRESORERIE LA PETITE-PIERRE</poste>
+ <poste code="02B0180">TRESORERIE LA PORTA</poste>
+ <poste code="0330730">TRESORERIE LA REOLE</poste>
+ <poste code="0560120">TRESORERIE DE LA ROCHE-MUZILLAC</poste>
+ <poste code="0190120">TRESORERIE LA ROCHE-CANILLAC</poste>
+ <poste code="0740210">TRESORERIE LA ROCHE-SUR-FORON</poste>
+ <poste code="0850010">TRESORERIE LA ROCHE CARDIJN</poste>
+ <poste code="0850000">TRESORERIE GENERALE DE LA VENDEE</poste>
+ <poste code="0850140">TRESORERIE PAYS YONNAIS ET ESSART MUNICIPAL</poste>
+ <poste code="0850180">TRESORERIE OPDHLM DE LA VENDEE</poste>
+ <poste code="0850900">PAIERIE DEPARTEMENTALE DE LA VENDEE</poste>
+ <poste code="0850170">TRESORERIE LA ROCHE-SUR-YON HOPITAUX</poste>
+ <poste code="0710270">TRESORERIE DE LA ROCHE-VINEUSE</poste>
+ <poste code="0160350">TRESORERIE LA ROCHEFOUCAULD</poste>
+ <poste code="0170000">TRESORERIE GENERALE DE LA CHARENTE-MARITIME</poste>
+ <poste code="0170090">TRESORERIE LA ROCHELLE</poste>
+ <poste code="0170110">TRESORERIE LA ROCHELLE MUNICIPALE</poste>
+ <poste code="0170160">TRESORERIE LA ROCHELLE ETS HOSP.</poste>
+ <poste code="0170900">PAIERIE DEPARTEMENTALE DE LA CHARENTE-MARITIME</poste>
+ <poste code="0730260">TRESORERIE LA ROCHETTE</poste>
+ <poste code="0490480">TRESORERIE LA ROMAGNE-MONTFAUCON</poste>
+ <poste code="0131130">TRESORERIE LA ROQUE-D'ANTHERON</poste>
+ <poste code="0830120">TRESORERIE LA ROQUEBRUSSANNE</poste>
+ <poste code="0340440">TRESORERIE LA SALVETAT-SUR-AGOUT</poste>
+ <poste code="0270390">TRESORERIE LA SAUSSAYE</poste>
+ <poste code="0830140">TRESORERIE LA SEYNE-SUR-MER</poste>
+ <poste code="0830150">TRESORERIE LA SEYNE-SUR-MER MUNICIPALE</poste>
+ <poste code="0230170">TRESORERIE LA SOUTERRAINE</poste>
+ <poste code="0720500">TRESORERIE DE LA SUZE-SUR-SARTHE</poste>
+ <poste code="0381230">TRESORERIE LA TOUR-DU-PIN</poste>
+ <poste code="0170390">TRESORERIE LA TREMBLADE</poste>
+ <poste code="0860220">TRESORERIE LA TRIMOUILLE</poste>
+ <poste code="1030100">TRESORERIE TRINITE</poste>
+ <poste code="0380200">TRESORERIE GRENOBLE CHU</poste>
+ <poste code="0830210">TRESORERIE TOULON-LA SEYNE-SUR-MER CHI</poste>
+ <poste code="0830220">TRESORERIE LA VALETTE-DU-VAR</poste>
+ <poste code="0381120">TRESORERIE LA VERPILLIERE</poste>
+ <poste code="0070410">TRESORERIE DE LA VOULTE-SUR-RHONE</poste>
+ <poste code="0460120">TRESORERIE DE LABASTIDE-MURAT</poste>
+ <poste code="0820080">TRESORERIE LABASTIDE-SAINT-PIERRE</poste>
+ <poste code="0400060">TRESORERIE LABRIT</poste>
+ <poste code="0810240">TRESORERIE LABRUGUIERE</poste>
+ <poste code="0460130">TRESORERIE DE LACAPELLE ET LIVERNON</poste>
+ <poste code="0810250">TRESORERIE LACAUNE</poste>
+ <poste code="0900080">TRESORERIE LACHAPELLE-SOUS-ROUGEMONT</poste>
+ <poste code="0600510">TRESORERIE LA CROIX-SAINT-OUEN</poste>
+ <poste code="0820090">TRESORERIE LAFRANCAISE-MOLIERES</poste>
+ <poste code="0010170">TRESORERIE LAGNIEU</poste>
+ <poste code="0772110">TRESORERIE LAGNY-SUR-MARNE</poste>
+ <poste code="0110220">TRESORERIE LAGRASSE</poste>
+ <poste code="0190140">TRESORERIE DE TULLE MONTANA</poste>
+ <poste code="0120090">TRESORERIE LAGUIOLE</poste>
+ <poste code="0210220">TRESORERIE LAIGNES</poste>
+ <poste code="0460140">TRESORERIE LALBENQUE</poste>
+ <poste code="0240520">TRESORERIE DE LALINDE</poste>
+ <poste code="0340420">TRESORERIE DE LAMALOU-BAINS-ST-GERVAIS-S-MARE</poste>
+ <poste code="0880250">TRESORERIE LAMARCHE-MARTIGNY-LES-BAINS</poste>
+ <poste code="0070150">TRESORERIE DE LAMASTRE</poste>
+ <poste code="0220070">TRESORERIE LAMBALLE</poste>
+ <poste code="0590520">TRESORERIE LAMBERSART</poste>
+ <poste code="0131080">TRESORERIE LAMBESC</poste>
+ <poste code="0410090">TRESORERIE LAMOTTE-BEUVRON</poste>
+ <poste code="0690510">TRESORERIE LAMURE-SUR-AZERGUES</poste>
+ <poste code="0290130">TRESORERIE LANDERNEAU</poste>
+ <poste code="0290230">TRESORERIE DE LANDIVISIAU</poste>
+ <poste code="0595230">TRESORERIE LANDRECIES</poste>
+ <poste code="0430120">TRESORERIE LANGEAC</poste>
+ <poste code="0370170">TRESORERIE LANGEAIS</poste>
+ <poste code="0480100">TRESORERIE LANGOGNE</poste>
+ <poste code="0330350">TRESORERIE LANGON-SAINT-MACAIRE</poste>
+ <poste code="0520340">TRESORERIE LANGRES</poste>
+ <poste code="0290240">TRESORERIE LANMEUR</poste>
+ <poste code="0650140">TRESORERIE LANNEMEZAN</poste>
+ <poste code="0650150">TRESORERIE LANNEMEZAN CTRE HOSP. SPEC.</poste>
+ <poste code="0290140">TRESORERIE LANNILIS</poste>
+ <poste code="0220350">TRESORERIE LANNION</poste>
+ <poste code="0240140">TRESORERIE DE LANOUAILLE</poste>
+ <poste code="0730170">TRESORERIE LANSLEBOURG-MONT-CENIS</poste>
+ <poste code="0220450">TRESORERIE DE LANVOLLON-PLOUHA</poste>
+ <poste code="0020000">TRESORERIE GENERALE DE L' AISNE</poste>
+ <poste code="0020150">TRESORERIE DE LAON</poste>
+ <poste code="0020160">TRESORERIE DE LAON MUNICIPALE ET BANLIEUE</poste>
+ <poste code="0020170">TRESORERIE LAON CENTRE HOSPITALIER</poste>
+ <poste code="0020900">PAIERIE DEPARTEMENTALE DE L' AISNE</poste>
+ <poste code="0020001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE L' AISNE</poste>
+ <poste code="0030260">TRESORERIE LAPALISSE</poste>
+ <poste code="0190090">TRESORERIE LAPLEAU</poste>
+ <poste code="0680100">TRESORERIE LAPOUTROIE</poste>
+ <poste code="0050090">TRESORERIE LARAGNE-ORPIERRE</poste>
+ <poste code="0190280">TRESORERIE LARCHE</poste>
+ <poste code="0070160">TRESORERIE LARGENTIERE</poste>
+ <poste code="0090230">TRESORERIE LAROQUE-D'OLMES</poste>
+ <poste code="0470060">TRESORERIE LAROQUE-TIMBAUT-BEAUVILLE</poste>
+ <poste code="0150100">TRESORERIE LAROQUEBROU</poste>
+ <poste code="0640100">TRESORERIE LARUNS</poste>
+ <poste code="0300110">TRESORERIE LASALLE</poste>
+ <poste code="0530190">TRESORERIE LASSAY-LES-CHATEAUX</poste>
+ <poste code="0600490">TRESORERIE LASSIGNY</poste>
+ <poste code="0460150">TRESORERIE LATRONQUIERE-SOUSCEYRAC</poste>
+ <poste code="0671100">TRESORERIE LAUTERBOURG</poste>
+ <poste code="0810260">TRESORERIE LAUTREC</poste>
+ <poste code="0820100">TRESORERIE LAUZERTE</poste>
+ <poste code="0530000">TRESORERIE GENERALE DE LA MAYENNE</poste>
+ <poste code="0530200">TRESORERIE DE LAVAL MURAT</poste>
+ <poste code="0530210">TRESORERIE LAVAL CENTRE HOSPITALIER</poste>
+ <poste code="0530220">TRESORERIE PAYS DE LAVAL</poste>
+ <poste code="0530900">PAIERIE DEPARTEMENTALE DE LA MAYENNE</poste>
+ <poste code="0470070">TRESORERIE LAVARDAC</poste>
+ <poste code="0810270">TRESORERIE LAVAUR</poste>
+ <poste code="0090090">TRESORERIE LAVELANET-BELESTA</poste>
+ <poste code="0620720">TRESORERIE LAVENTIE</poste>
+ <poste code="0540160">TRESORERIE NANCY CTRE PSYCHO. DPTAL</poste>
+ <poste code="0061030">TRESORERIE LE BAR-SUR-LOUP</poste>
+ <poste code="0830010">TRESORERIE LE BEAUSSET</poste>
+ <poste code="0140060">TRESORERIE LE BENY-BOCAGE</poste>
+ <poste code="0360050">TRESORERIE DE LE BLANC</poste>
+ <poste code="0930050">TRESORERIE LE BLANC-MESNIL</poste>
+ <poste code="0480030">TRESORERIE LE BLEYMARD</poste>
+ <poste code="0690490">TRESORERIE LE BOIS-D'OINGT</poste>
+ <poste code="0660040">TRESORERIE LE BOULOU</poste>
+ <poste code="0380050">TRESORERIE LE BOURG-D'OISANS</poste>
+ <poste code="0530050">TRESORERIE DE LE BOURGNEUF-LA-FORET</poste>
+ <poste code="0330210">TRESORERIE LE BOUSCAT</poste>
+ <poste code="0240040">TRESORERIE LE BUGUE</poste>
+ <poste code="0061140">TRESORERIE LE CANNET</poste>
+ <poste code="0593130">TRESORERIE LE CATEAU-CATILLON</poste>
+ <poste code="0020530">TRESORERIE LE CATELET</poste>
+ <poste code="0420020">TRESORERIE DU CHAMBON FEUGEROLLES</poste>
+ <poste code="0170170">TRESORERIE LE CHATEAU-D'OLERON</poste>
+ <poste code="0730130">TRESORERIE LE CHATELARD</poste>
+ <poste code="0770040">TRESORERIE LE CHATELET-EN-BRIE</poste>
+ <poste code="0780380">TRESORERIE VERSAILLES CENTRE HOSPITALIER</poste>
+ <poste code="0780420">TRESORERIE LE CHESNAY</poste>
+ <poste code="0080140">TRESORERIE LE CHESNE</poste>
+ <poste code="0070100">TRESORERIE LE CHEYLARD</poste>
+ <poste code="0480060">TRESORERIE LE COLLET-DE-DEZE</poste>
+ <poste code="0422030">TRESORERIE LE COTEAU</poste>
+ <poste code="0710390">TRESORERIE LE CREUSOT</poste>
+ <poste code="0030190">TRESORERIE LE DONJON</poste>
+ <poste code="0870080">TRESORERIE LE DORAT</poste>
+ <poste code="0290110">TRESORERIE LE FAOU</poste>
+ <poste code="0560210">TRESORERIE DE LE FAOUET</poste>
+ <poste code="0090220">TRESORERIE LE FOSSAT</poste>
+ <poste code="1030050">TRESORERIE FRANCOIS</poste>
+ <poste code="0381180">TRESORERIE LE GRAND-LEMPS ET BIOL</poste>
+ <poste code="0720230">TRESORERIE LE GRAND-LUCE-LA CHARTRE</poste>
+ <poste code="0760500">TRESORERIE LE GRAND-QUEVILLY</poste>
+ <poste code="0762000">RECETTE DES FINANCES LE HAVRE</poste>
+ <poste code="0762090">TRESORERIE LE HAVRE IMPÔTS</poste>
+ <poste code="0762130">TRESORERIE LE HAVRE MUNICIPALE</poste>
+ <poste code="0762140">TRESORERIE LE HAVRE CENTRE HOSPITALIER</poste>
+ <poste code="0940100">TRESORERIE DU NORD VAL-DE-BIEVRE</poste>
+ <poste code="1030060">TRESORERIE LAMENTIN</poste>
+ <poste code="0830090">TRESORERIE LE LAVANDOU</poste>
+ <poste code="0490160">TRESORERIE LE LION-D'ANGERS</poste>
+ <poste code="0440100">TRESORERIE LE LOROUX-BOTTEREAU</poste>
+ <poste code="0490170">TRESORERIE LE LOUROUX-BECONNAIS</poste>
+ <poste code="0831130">TRESORERIE LE LUC</poste>
+ <poste code="0720260">TRESORERIE LE LUDE</poste>
+ <poste code="0720000">TRESORERIE GENERALE DE LA SARTHE</poste>
+ <poste code="0720290">TRESORERIE LE MANS FLORE</poste>
+ <poste code="0720310">TRESORERIE LE MANS PÉRIPHÉRIE ET AMENDES</poste>
+ <poste code="0720320">TRESORERIE AGGLOMÉRATION MANCELLE ET CHS</poste>
+ <poste code="0720340">TRESORERIE LE MANS CENTRE HOSPITALIER</poste>
+ <poste code="0720900">PAIERIE DEPARTEMENTALE DE LA SARTHE</poste>
+ <poste code="0720330">TRESORERIE LE MANS VILLE</poste>
+ <poste code="1030070">TRESORERIE MARIN</poste>
+ <poste code="0090240">TRESORERIE LE MAS-D'AZIL</poste>
+ <poste code="0030280">TRESORERIE LE-MAYET-DE-MONTAGNE</poste>
+ <poste code="0610360">TRESORERIE LE MERLERAULT</poste>
+ <poste code="0760280">TRESORERIE LE MESNIL-ESNARD</poste>
+ <poste code="0140290">TRESORERIE LE MOLAY-LITTRY</poste>
+ <poste code="0430150">TRESORERIE LE MONASTIER-SUR-GAZEILLE</poste>
+ <poste code="0050100">TRESORERIE MONETIER-LES-BAINS ET LA GRAVE</poste>
+ <poste code="0630190">TRESORERIE LE MONT-DORE LA TOUR D' AUVERGNE</poste>
+ <poste code="0030070">TRESORERIE LE MONTET</poste>
+ <poste code="1010070">TRESORERIE LE MOULE</poste>
+ <poste code="0831140">TRESORERIE LE MUY</poste>
+ <poste code="0270330">TRESORERIE LE NEUBOURG</poste>
+ <poste code="0020560">TRESORERIE LE NOUVION-EN-THIERACHE</poste>
+ <poste code="0560310">TRESORERIE LE PALAIS</poste>
+ <poste code="0941060">TRESORERIE LE PERREUX-SUR-MARNE</poste>
+ <poste code="0760320">TRESORERIE LE PETIT-QUEVILLY</poste>
+ <poste code="0850120">TRESORERIE LE POIRE-SUR-VIE</poste>
+ <poste code="0730250">TRESORERIE LE PONT-DE-BEAUVOISIN</poste>
+ <poste code="0381210">TRESORERIE LE-PONT-DE-BEAUVOISIN</poste>
+ <poste code="1040010">TRESORERIE LE PORT</poste>
+ <poste code="0430000">TRESORERIE GENERALE DE LA HAUTE-LOIRE</poste>
+ <poste code="0430230">TRESORERIE LE PUY VILLE</poste>
+ <poste code="0430220">TRESORERIE LE PUY SAINT-LOUIS</poste>
+ <poste code="0430300">TRESORERIE DE PUY SAINT-JEAN</poste>
+ <poste code="0430900">PAIERIE DEPARTEMENTALE DE LA HAUTE-LOIRE</poste>
+ <poste code="0430001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE LA HAUTE LOIRE</poste>
+ <poste code="0595270">TRESORERIE LE QUESNOY</poste>
+ <poste code="0930210">TRESORERIE DU RAINCY MUNICIPALE</poste>
+ <poste code="0250440">TRESORERIE LE RUSSEY</poste>
+ <poste code="1040110">TRESORERIE LE TAMPON</poste>
+ <poste code="0070310">TRESORERIE DE LE TEIL-ROCHEMAURE</poste>
+ <poste code="0610270">TRESORERIE DE LE THEIL-SUR-HUISNE ET NOCE</poste>
+ <poste code="0880410">TRESORERIE LE THILLOT</poste>
+ <poste code="0622240">TRESORERIE LE TOUQUET-PARIS-PLAGE</poste>
+ <poste code="0380430">TRESORERIE LE TOUVET</poste>
+ <poste code="0760660">TRESORERIE LE TREPORT</poste>
+ <poste code="0780390">TRESORERIE LE VESINET</poste>
+ <poste code="0300390">TRESORERIE LE VIGAN</poste>
+ <poste code="0320160">TRESORERIE LECTOURE</poste>
+ <poste code="0300490">TRESORERIE LEDIGNAN</poste>
+ <poste code="0620730">TRESORERIE LEFOREST</poste>
+ <poste code="0640110">TRESORERIE LEMBEYE</poste>
+ <poste code="0860320">TRESORERIE LENCLOITRE</poste>
+ <poste code="0620750">TRESORERIE LENS MUNICIPALE</poste>
+ <poste code="0620740">TRESORERIE DE LENS</poste>
+ <poste code="0620760">TRESORERIE LENS CENTRE HOSPITALIER</poste>
+ <poste code="0620001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DU PAS DE CALAIS</poste>
+ <poste code="0381160">TRESORERIE LES ABRETS</poste>
+ <poste code="1010008">CENTRE DE FORMATION DEPARTEMENTAL DES ANTILLES-GUYANE</poste>
+ <poste code="1010010">TRESORERIE LES ABYMES-ET-LE-GOSIER</poste>
+ <poste code="0180010">TRESORERIE LES AIX-D'ANGILLON</poste>
+ <poste code="0270160">TRESORERIE LES ANDELYS</poste>
+ <poste code="0381170">TRESORERIE LES AVENIERES</poste>
+ <poste code="0730140">TRESORERIE LES ECHELLES</poste>
+ <poste code="0850070">TRESORERIE LES HERBIERS-MOUCHAMPS</poste>
+ <poste code="0630180">TRESORERIE LES MARTRES-DE-VEYRE</poste>
+ <poste code="0340160">TRESORERIE LES MATELLES</poste>
+ <poste code="0040140">TRESORERIE LES MEES</poste>
+ <poste code="0781130">TRESORERIE LES MUREAUX</poste>
+ <poste code="0131110">TRESORERIE LES PENNES-MIRABEAU</poste>
+ <poste code="0500450">TRESORERIE LES PIEUX</poste>
+ <poste code="0490190">TRESORERIE LES PONTS-DE-CE</poste>
+ <poste code="0850360">TRESORERIE CÔTE DE LUMIERE</poste>
+ <poste code="0850350">TRESORERIE DES SABLES D'OLONNE</poste>
+ <poste code="1030110">TRESORERIE TROIS-ILETS</poste>
+ <poste code="0860380">TRESORERIE LES TROIS-MOUTIERS</poste>
+ <poste code="0911060">TRESORERIE LES ULIS</poste>
+ <poste code="0070370">TRESORERIE LES VANS</poste>
+ <poste code="0640120">TRESORERIE DE LESCAR RIVES DU GAVE</poste>
+ <poste code="0290150">TRESORERIE LESNEVEN</poste>
+ <poste code="0330360">TRESORERIE LESPARRE-MEDOC</poste>
+ <poste code="0500100">TRESORERIE LESSAY</poste>
+ <poste code="0110450">TRESORERIE LEUCATE</poste>
+ <poste code="0920210">TRESORERIE LEVALLOIS-PERRET MUNICIPALE</poste>
+ <poste code="0920410">TRESORERIE OPDHLM DES HAUTS-DE-SEINE</poste>
+ <poste code="0920200">TRESORERIE LEVALLOIS-PERRET</poste>
+ <poste code="0060060">TRESORERIE LEVENS</poste>
+ <poste code="02A0070">TRESORERIE LEVIE</poste>
+ <poste code="0250290">TRESORERIE LEVIER</poste>
+ <poste code="0360180">TRESORERIE LEVROUX</poste>
+ <poste code="0220360">TRESORERIE LEZARDRIEUX</poste>
+ <poste code="0790210">TRESORERIE LEZAY</poste>
+ <poste code="0110460">TRESORERIE LEZIGNAN-CORBIERES</poste>
+ <poste code="0630530">TRESORERIE LEZOUX</poste>
+ <poste code="0600560">TRESORERIE LIANCOURT</poste>
+ <poste code="0330650">TRESORERIE DE LIBOURNE-FRONSAC-VAYRES</poste>
+ <poste code="0330770">TRESORERIE LIBOURNE MUNICIPALE</poste>
+ <poste code="0330771">TRESORERIE DE LIBOURNE MUNICIPALE HOP. BOULIN</poste>
+ <poste code="1320000">TRESORERIE AMBASSADE DE FRANCE AU GABON</poste>
+ <poste code="0622120">TRESORERIE LICQUES</poste>
+ <poste code="0020180">TRESORERIE LIESSE</poste>
+ <poste code="0770250">TRESORERIE DE SENART GESTION PUBLIQUE LOCALE</poste>
+ <poste code="0770270">TRESORERIE DE SENART</poste>
+ <poste code="0620770">TRESORERIE LIEVIN</poste>
+ <poste code="0880270">TRESORERIE LIFFOL-LE-GRAND</poste>
+ <poste code="0350180">TRESORERIE LIFFRE</poste>
+ <poste code="0180220">TRESORERIE DE LIGNIERES</poste>
+ <poste code="0550150">TRESORERIE DE LIGNY-EN-BARROIS</poste>
+ <poste code="0370190">TRESORERIE LIGUEIL</poste>
+ <poste code="0590000">TRESORERIE GENERALE DU NORD</poste>
+ <poste code="0590007">CENTRE REGIONAL DES PENSIONS DU NORD</poste>
+ <poste code="0590008">CENTRE DE FORMATION DEPARTEMENTAL DU NORD</poste>
+ <poste code="0590009">DEPARTEMENT INFORMATIQUE DU NORD</poste>
+ <poste code="0590240">TRESORERIE LILLE MUNICIPALE</poste>
+ <poste code="0590250">RECETTE DES FINANCES DE LILLE CHU</poste>
+ <poste code="0590530">TRESORERIE LILLE COMMUNAUTE URBAINE</poste>
+ <poste code="0590800">PAIERIE REGIONALE DU NORD-PAS-DE-CALAIS</poste>
+ <poste code="0590900">PAIERIE DEPARTEMENTALE DU NORD</poste>
+ <poste code="0590006">CENTRE NATIONAL DE GESTION DES CONCOURS DE LILLE (CONCOURS)</poste>
+ <poste code="0590005">CPS CENTRE PRÉLÈVEMENT SERVICE</poste>
+ <poste code="0590180">TRESORERIE DU GRAND LILLE</poste>
+ <poste code="0599000">RECETTE DES FINANCES DE LILLE</poste>
+ <poste code="0590230">TRESORERIE LILLE AMENDES</poste>
+ <poste code="0590001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DU NORD</poste>
+ <poste code="0590004">CE CENTRE ENCAISSEMENT LILLE</poste>
+ <poste code="0762160">TRESORERIE LILLEBONNE</poste>
+ <poste code="0620780">TRESORERIE LILLERS</poste>
+ <poste code="0781060">TRESORERIE LIMAY</poste>
+ <poste code="0870000">TRESORERIE GENERALE DE LA HAUTE-VIENNE</poste>
+ <poste code="0870009">DEPARTEMENT INFORMATIQUE DE LA HAUTE-VIENNE</poste>
+ <poste code="0870110">TRESORERIE DE LIMOGES 1ERE DIVISION</poste>
+ <poste code="0870120">TRESORERIE DE LIMOGES 2EME DIVISION</poste>
+ <poste code="0870130">TRESORERIE LIMOGES BANLIEUE</poste>
+ <poste code="0870140">TRESORERIE LIMOGES MUNICIPALE</poste>
+ <poste code="0870150">TRESORERIE DE LIMOGES CHU ET CH ESQUIROL</poste>
+ <poste code="0870340">TRESORERIE LIMOGES OPHLM</poste>
+ <poste code="0870800">PAIERIE REGIONALE DE LIMOUSIN</poste>
+ <poste code="0870900">PAIERIE DEPARTEMENTALE DE LA HAUTE-VIENNE</poste>
+ <poste code="0870151">TRESORERIE DE LIMOGES CHU-CH ESQUIROL - ANNEXE</poste>
+ <poste code="0870007">CENTRE REGIONAL DES PENSIONS DE LA HAUTE-VIENNE</poste>
+ <poste code="0870008">CENTRE DE FORMATION DEPARTEMENTAL DE LA HAUTE-VIENNE</poste>
+ <poste code="0870002">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE LA HAUTE VIENNE</poste>
+ <poste code="0460170">TRESORERIE LIMOGNE-EN-QUERCY</poste>
+ <poste code="0911070">TRESORERIE LIMOURS</poste>
+ <poste code="0110230">TRESORERIE DE LIMOUX</poste>
+ <poste code="0670560">TRESORERIE STRASBOURG OUEST-LINGOLSHEIM</poste>
+ <poste code="0140520">TRESORERIE DE LISIEUX INTERCOM</poste>
+ <poste code="0140570">TRESORERIE DE LISIEUX</poste>
+ <poste code="0140530">TRESORERIE LIVAROT</poste>
+ <poste code="0930130">TRESORERIE LIVRY-GARGAN</poste>
+ <poste code="0772130">TRESORERIE LIZY-CROUY-SUR-OURCQ</poste>
+ <poste code="0370200">TRESORERIE DE LOCHES</poste>
+ <poste code="0560060">TRESORERIE LOCMINE</poste>
+ <poste code="0340130">TRESORERIE LODEVE</poste>
+ <poste code="0320320">TRESORERIE SAMATAN</poste>
+ <poste code="0320170">TRESORERIE LOMBEZ</poste>
+ <poste code="1770000">TRESORERIE AMBASSADE DE FRANCE EN GRANDE-BRETAGNE</poste>
+ <poste code="0911080">TRESORERIE LONGJUMEAU</poste>
+ <poste code="0780310">TRESORERIE DE LONGNES</poste>
+ <poste code="0490350">TRESORERIE DE LONGUE-JUMELLES</poste>
+ <poste code="0760620">TRESORERIE LONGUEVILLE-SUR-SCIE</poste>
+ <poste code="0540440">TRESORERIE DE LONGUYON</poste>
+ <poste code="0540450">TRESORERIE DE LONGWY-VILLERUPT</poste>
+ <poste code="0390000">TRESORERIE GENERALE DU JURA</poste>
+ <poste code="0390150">TRESORERIE LONS MUNICIPALE ET EPL</poste>
+ <poste code="0390900">PAIERIE DEPARTEMENTALE DU JURA</poste>
+ <poste code="0390100">TRESORERIE DE LONS IMPOTS ET AMENDES</poste>
+ <poste code="0831120">TRESORERIE LORGUES</poste>
+ <poste code="0560290">TRESORERIE DE LORIENT</poste>
+ <poste code="0560300">TRESORERIE DE LORIENT COLLECTIVITES</poste>
+ <poste code="0560340">TRESORERIE DE LORIENT HÔPITAUX-HLM</poste>
+ <poste code="0260120">TRESORERIE LORIOL-SUR-DROME</poste>
+ <poste code="0580140">TRESORERIE LORMES</poste>
+ <poste code="0570230">TRESORERIE LORQUIN</poste>
+ <poste code="0770350">TRESORERIE LORREZ-LE-BOCAGE-PREAUX</poste>
+ <poste code="0450380">TRESORERIE DE LORRIS</poste>
+ <poste code="0220090">TRESORERIE LOUDEAC</poste>
+ <poste code="0860330">TRESORERIE LOUDUN</poste>
+ <poste code="0720250">TRESORERIE LOUE-BRULON</poste>
+ <poste code="0710140">TRESORERIE LOUHANS</poste>
+ <poste code="0170050">TRESORERIE LOULAY-VILLENEUVE-LA-COMTESSE</poste>
+ <poste code="0650170">TRESORERIE DE LOURDES</poste>
+ <poste code="0650180">TRESORERIE LOURES-BAROUSSE</poste>
+ <poste code="0270300">TRESORERIE LOUVIERS</poste>
+ <poste code="0350190">TRESORERIE LOUVIGNE-DU-DESERT</poste>
+ <poste code="0951040">TRESORERIE LOUVRES-GOUSSAINVILLE</poste>
+ <poste code="0190340">TRESORERIE ARNAC-POMPADOUR</poste>
+ <poste code="0190290">TRESORERIE LUBERSAC</poste>
+ <poste code="0260130">TRESORERIE LUC-EN-DIOIS</poste>
+ <poste code="0280130">TRESORERIE CHARTRES BANLIEUE</poste>
+ <poste code="0710610">TRESORERIE DE LUCENAY-L'EVEQUE</poste>
+ <poste code="0850230">TRESORERIE LUCON-SAINT-MICHEL-EN-L'HERM</poste>
+ <poste code="0710150">TRESORERIE DE LUGNY</poste>
+ <poste code="0622300">TRESORERIE LUMBRES</poste>
+ <poste code="0340150">TRESORERIE DE LUNEL</poste>
+ <poste code="0760630">TRESORERIE LUNERAY</poste>
+ <poste code="0540380">TRESORERIE LUNEVILLE</poste>
+ <poste code="0030060">TRESORERIE LURCY-LEVIS</poste>
+ <poste code="0700250">TRESORERIE DE LURE</poste>
+ <poste code="0860100">TRESORERIE LUSIGNAN</poste>
+ <poste code="0100170">TRESORERIE DE LUSIGNY-SUR-BARSE</poste>
+ <poste code="0860110">TRESORERIE LUSSAC-LES-CHATEAUX</poste>
+ <poste code="0700270">TRESORERIE DE LUXEUIL-LES-BAINS</poste>
+ <poste code="0370210">TRESORERIE DE LUYNES</poste>
+ <poste code="0650190">TRESORERIE LUZ-SAINT-SAUVEUR</poste>
+ <poste code="0951050">TRESORERIE LUZARCHES</poste>
+ <poste code="0460190">TRESORERIE LUZECH</poste>
+ <poste code="0090100">TRESORERIE LUZENAC-LES-CABANNES</poste>
+ <poste code="0630620">TRESORERIE DE LUZILLAT</poste>
+ <poste code="0580150">TRESORERIE LUZY</poste>
+ <poste code="0690000">TRESORERIE GENERALE DU RHONE</poste>
+ <poste code="0690007">CENTRE REGIONAL DES PENSIONS DU RHONE</poste>
+ <poste code="0690008">CENTRE DE FORMATION DEPARTEMENTAL DU RHONE</poste>
+ <poste code="0690009">DEPARTEMENT INFORMATIQUE DU RHONE</poste>
+ <poste code="0690100">TRESORERIE LYON PRESQU'ÎLE</poste>
+ <poste code="0690110">TRESORERIE DE LYON PART DIEU</poste>
+ <poste code="0690130">TRESORERIE LYON 5EME ET 9EME ARRONDTS</poste>
+ <poste code="0690150">TRESORERIE LYON 7EME ARRONDISSEMENT</poste>
+ <poste code="0690160">TRESORERIE LYON 8EME ARRONDISSEMENT</poste>
+ <poste code="0690180">TRESORERIE LYON AMENDES</poste>
+ <poste code="0690220">RECETTE DES FINANCES LYON HOSPICES CIVILS</poste>
+ <poste code="0690410">TRESORERIE LYON COMMUNAUTE URBAINE</poste>
+ <poste code="0690900">PAIERIE DEPARTEMENTALE DU RHONE</poste>
+ <poste code="3000010">ECOLE DES CADRES B</poste>
+ <poste code="0690001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DU RHÔNE</poste>
+ <poste code="0690190">RECETTE DES FINANCES LYON MUNICIPALE</poste>
+ <poste code="0690005">CPS CENTRE PRELEVEMENT SERVICE</poste>
+ <poste code="0590160">TRESORERIE LANNOY</poste>
+ <poste code="0440110">TRESORERIE MACHECOUL</poste>
+ <poste code="0710000">TRESORERIE GENERALE DE SAONE-ET-LOIRE</poste>
+ <poste code="0710160">TRESORERIE MACON</poste>
+ <poste code="0710170">TRESORERIE DE MACON MUNICIPALE</poste>
+ <poste code="0710900">PAIERIE DEPARTEMENTALE DE SAONE-ET-LOIRE</poste>
+ <poste code="1840000">TRESORERIE AMBASSADE DE FRANCE EN ESPAGNE</poste>
+ <poste code="0510360">TRESORERIE EPERNAY MUNICIPALE</poste>
+ <poste code="0510350">TRESORERIE D' EPERNAY BANLIEUE</poste>
+ <poste code="0870160">TRESORERIE DE MAGNAC-LAVAL</poste>
+ <poste code="0950150">TRESORERIE MAGNY-EN-VEXIN</poste>
+ <poste code="0250410">TRESORERIE MAICHE</poste>
+ <poste code="0850240">TRESORERIE DE MAILLEZAIS-BENET ET VIX</poste>
+ <poste code="0280250">TRESORERIE DE MAINTENON</poste>
+ <poste code="0280900">PAIERIE DEPARTEMENTALE D'EURE-ET-LOIR</poste>
+ <poste code="0940150">TRESORERIE DE MAISONS-ALFORT/ALFORTVILLE</poste>
+ <poste code="0781070">TRESORERIE DE MAISONS-LAFFITTE</poste>
+ <poste code="0570250">TRESORERIE MAIZIERES-LES-METZ</poste>
+ <poste code="0921070">TRESORERIE MALAKOFF</poste>
+ <poste code="0190250">TRESORERIE DE MALEMORT</poste>
+ <poste code="0450390">TRESORERIE DE MALESHERBES</poste>
+ <poste code="0560070">TRESORERIE MALESTROIT</poste>
+ <poste code="0720280">TRESORERIE MAMERS-SAINT-COSME-EN-VAIRAIS</poste>
+ <poste code="1430000">TRESORERIE GENERALE DE MAYOTTE</poste>
+ <poste code="1430010">TRESORERIE MAYOTTE MUNICIPALE</poste>
+ <poste code="1430900">PAIERIE DEPARTEMENTALE DE MAYOTTE</poste>
+ <poste code="0061150">TRESORERIE MANDELIEU LA NAPOULE</poste>
+ <poste code="0040130">TRESORERIE MANOSQUE</poste>
+ <poste code="0040001">CELLULE CONTRÔLE REDEVANCE AUDIOVISUELLE DES ALPES DE HAUTE PROVENCE</poste>
+ <poste code="0160260">TRESORERIE MANSLE</poste>
+ <poste code="0781080">TRESORERIE MANTES-LA-JOLIE</poste>
+ <poste code="0781090">TRESORERIE MANTES-LA-JOLIE MUNICIPALE</poste>
+ <poste code="0781100">TRESORERIE MANTES-LA-VILLE</poste>
+ <poste code="0630380">TRESORERIE MANZAT</poste>
+ <poste code="0170060">TRESORERIE MARANS</poste>
+ <poste code="0250200">TRESORERIE MARCHAUX</poste>
+ <poste code="0410250">TRESORERIE MARCHENOIR</poste>
+ <poste code="0593060">TRESORERIE MARCHIENNES</poste>
+ <poste code="0320180">TRESORERIE MARCIAC</poste>
+ <poste code="0710180">TRESORERIE MARCIGNY -SAINT CHRISTOPHE</poste>
+ <poste code="0120110">TRESORERIE MARCILLAC-VALLON-CONQUES</poste>
+ <poste code="0030270">TRESORERIE MARCILLAT-DURDAT</poste>
+ <poste code="0100190">TRESORERIE DE MARCILLY-LE-HAYER</poste>
+ <poste code="0670260">TRESORERIE MARCKOLSHEIM</poste>
+ <poste code="0590280">TRESORERIE MARCQ-EN-BAROEUL</poste>
+ <poste code="0170180">TRESORERIE MARENNES</poste>
+ <poste code="0240160">TRESORERIE MAREUIL</poste>
+ <poste code="0850080">TRESORERIE MAREUIL-SUR-LAY-DISSAIS</poste>
+ <poste code="0600500">TRESORERIE MARGNY-LES-COMPIEGNE</poste>
+ <poste code="0131090">TRESORERIE MARIGNANE</poste>
+ <poste code="0500110">TRESORERIE DE MARIGNY</poste>
+ <poste code="0950160">TRESORERIE MARINES</poste>
+ <poste code="0020190">TRESORERIE DE MARLE</poste>
+ <poste code="0595080">TRESORERIE MARLY</poste>
+ <poste code="0780180">TRESORERIE MARLY-LE-ROI</poste>
+ <poste code="0470220">TRESORERIE DE MARMANDE</poste>
+ <poste code="0470230">TRESORERIE DE MARMANDE MUNICIPALE</poste>
+ <poste code="0671110">TRESORERIE MARMOUTIER</poste>
+ <poste code="0700290">TRESORERIE DE MARNAY-PESMES</poste>
+ <poste code="0772210">TRESORERIE MARNE-LA-VALLEE</poste>
+ <poste code="0772090">TRESORERIE BUSSY SAINT GEORGES</poste>
+ <poste code="0772080">TRESORERIE DE MAGNY-LE-HONGRE</poste>
+ <poste code="0720370">TRESORERIE DE MAROLLES-LES-BRAULTS</poste>
+ <poste code="0760260">TRESORERIE MAROMME</poste>
+ <poste code="0620170">TRESORERIE MARQUION</poste>
+ <poste code="0622130">TRESORERIE MARQUISE</poste>
+ <poste code="0340390">TRESORERIE MARSEILLAN</poste>
+ <poste code="0130230">TRESORERIE MARSEILLE 12E ET 13E ARRONDT</poste>
+ <poste code="0130000">TRESORERIE GENERALE DES BOUCHES-DU-RHONE</poste>
+ <poste code="0130007">CENTRE REGIONAL DES PENSIONS DES BOUCHES-DU-RHONE</poste>
+ <poste code="0130008">CENTRE DE FORMATION DEPARTEMENTAL DES BOUCHES-DU-RHONE</poste>
+ <poste code="0130009">DEPARTEMENT INFORMATIQUE DES BOUCHES-DU-RHONE</poste>
+ <poste code="0130040">TRESORERIE DE MARSEILLE 1ER ET 6EME ARRONDT</poste>
+ <poste code="0130070">TRESORERIE MARSEILLE 3EME ET 14EME ARRONDT</poste>
+ <poste code="0130080">TRESORERIE MARSEILLE 4EME ARRONDISSEMENT</poste>
+ <poste code="0130090">TRESORERIE MARSEILLE 5EME ARRONDISSEMENT</poste>
+ <poste code="0130120">TRESORERIE DE MARSEILLE 7EME ARRONDISSEMENT</poste>
+ <poste code="0130130">TRESORERIE MARSEILLE 8EME ARRONDISSEMENT</poste>
+ <poste code="0130140">TRESORERIE DE MARSEILLE 10E ET 11E ARRONDT</poste>
+ <poste code="0130160">TRESORERIE DE MARSEILLE 2E,15E ET 16E ARRONDT</poste>
+ <poste code="0130170">TRESORERIE MARSEILLE AMENDES</poste>
+ <poste code="0130180">RECETTE DES FINANCES MARSEILLE MUNICIPALE</poste>
+ <poste code="0130190">RECETTE DES FINANCES MARSEILLE ASSISTANCE PUBLIQUE</poste>
+ <poste code="0130210">TRESORERIE MARSEILLE 9EME ARRONDISSEMENT</poste>
+ <poste code="0130250">TRESORERIE DE MARSEILLE HOSPITALIERE</poste>
+ <poste code="0130800">PAIERIE REGIONALE DE PROVENCE-ALPES-COTE D'AZUR</poste>
+ <poste code="0130900">PAIERIE DEPARTEMENTALE DES BOUCHES-DU-RHONE</poste>
+ <poste code="0130001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DES BOUCHES DU RHÔNE</poste>
+ <poste code="0139000">RECETTE DES FINANCES DE MARSEILLE</poste>
+ <poste code="0460200">TRESORERIE MARTEL</poste>
+ <poste code="0132150">TRESORERIE MARTIGUES</poste>
+ <poste code="0480120">TRESORERIE MARVEJOLS</poste>
+ <poste code="0680270">TRESORERIE MASEVAUX</poste>
+ <poste code="0593180">TRESORERIE DE MASNIERES</poste>
+ <poste code="0320190">TRESORERIE MASSEUBE</poste>
+ <poste code="0150120">TRESORERIE MASSIAC</poste>
+ <poste code="0911090">TRESORERIE MASSY</poste>
+ <poste code="0170300">TRESORERIE MATHA-BEAUVAIS-SUR-MATHA</poste>
+ <poste code="0220290">TRESORERIE MATIGNON</poste>
+ <poste code="0595240">TRESORERIE MAUBEUGE VILLE</poste>
+ <poste code="0595250">TRESORERIE DE MAUBEUGE BANLIEUE</poste>
+ <poste code="0595260">TRESORERIE MAUBEUGE MUNICIPALE</poste>
+ <poste code="0650200">TRESORERIE MAUBOURGUET</poste>
+ <poste code="0340170">TRESORERIE DE MAUGUIO</poste>
+ <poste code="0781110">TRESORERIE MAULE</poste>
+ <poste code="0790130">TRESORERIE MAULEON</poste>
+ <poste code="0640140">TRESORERIE MAULEON-LICHARRE</poste>
+ <poste code="0780120">TRESORERIE MAUREPAS</poste>
+ <poste code="0150130">TRESORERIE MAURIAC</poste>
+ <poste code="0560080">TRESORERIE MAURON</poste>
+ <poste code="0150140">TRESORERIE MAURS</poste>
+ <poste code="0132080">TRESORERIE MAUSSANE-VALLEE DES BAUX</poste>
+ <poste code="0320200">TRESORERIE MAUVEZIN-COLOGNE</poste>
+ <poste code="0790220">TRESORERIE MAUZE-SUR-LE-MIGNON</poste>
+ <poste code="0540110">TRESORERIE DE MAXEVILLE</poste>
+ <poste code="0530240">TRESORERIE MAYENNE SAINT-MARTIN</poste>
+ <poste code="0530250">TRESORERIE DU PAYS DE MAYENNE</poste>
+ <poste code="0810280">TRESORERIE MAZAMET</poste>
+ <poste code="0790230">TRESORERIE MAZIERES-EN-GATINE</poste>
+ <poste code="0772190">TRESORERIE DE MEAUX</poste>
+ <poste code="0772000">RECETTE DES FINANCES MEAUX</poste>
+ <poste code="0772140">TRESORERIE MEAUX MUNICIPALE.ET BANLIEUE</poste>
+ <poste code="0180240">TRESORERIE DE MEHUN-SUR-YEVRE</poste>
+ <poste code="0700300">TRESORERIE MELISEY-FAUCOGNEY</poste>
+ <poste code="0790240">TRESORERIE MELLE</poste>
+ <poste code="0770000">TRESORERIE GENERALE DE SEINE-ET-MARNE</poste>
+ <poste code="0770150">TRESORERIE MELUN VAL DE SEINE SEC PU LOCAL</poste>
+ <poste code="0770160">TRESORERIE MELUN VAL DE SEINE IMPOTS</poste>
+ <poste code="0770290">TRESORERIE SEINE-ET-MARNE AMENDES</poste>
+ <poste code="0770900">PAIERIE DEPARTEMENTALE DE SEINE-ET-MARNE</poste>
+ <poste code="0770001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE SEINE ET MARNE</poste>
+ <poste code="0480130">TRESORERIE MENDE</poste>
+ <poste code="0480900">PAIERIE DEPARTEMENTALE DE LA LOZERE</poste>
+ <poste code="0480000">TRESORERIE GENERALE DE LA LOZERE</poste>
+ <poste code="0790250">TRESORERIE MENIGOUTE</poste>
+ <poste code="0910190">TRESORERIE MENNECY</poste>
+ <poste code="0380230">TRESORERIE MENS</poste>
+ <poste code="0060070">TRESORERIE DE MENTON</poste>
+ <poste code="0060080">TRESORERIE DE MENTON MUNICIPALE</poste>
+ <poste code="0410110">TRESORERIE MER</poste>
+ <poste code="0220110">TRESORERIE MERDRIGNAC</poste>
+ <poste code="0330580">TRESORERIE MERIGNAC</poste>
+ <poste code="0671120">TRESORERIE MERTZWILLER</poste>
+ <poste code="0600250">TRESORERIE MERU</poste>
+ <poste code="0594190">TRESORERIE MERVILLE</poste>
+ <poste code="0100210">TRESORERIE DE MERY-SUR-SEINE</poste>
+ <poste code="0530260">TRESORERIE DE PAYS DE MESLAY-GREZ</poste>
+ <poste code="0570000">TRESORERIE GENERALE DE LA MOSELLE</poste>
+ <poste code="0570007">CENTRE REGIONAL DES PENSIONS DE LA MOSELLE</poste>
+ <poste code="0570008">CENTRE DE FORMATION DEPARTEMENTAL DE LA MOSELLE</poste>
+ <poste code="0570009">DEPARTEMENT INFORMATIQUE DE LA MOSELLE</poste>
+ <poste code="0570270">TRESORERIE METZ SERPENOISE</poste>
+ <poste code="0570300">TRESORERIE METZ MUNICIPALE</poste>
+ <poste code="0570600">TRESORERIE METZ ESPLANADE</poste>
+ <poste code="0570610">TRESORERIE METZ-THIONVILLE ETS. HOSP</poste>
+ <poste code="0570800">PAIERIE REGIONALE DE LORRAINE</poste>
+ <poste code="0570900">PAIERIE DEPARTEMENTALE DE LA MOSELLE</poste>
+ <poste code="0570006">PÔLE NATIONAL DE SOUTIEN AU RESEAU DE METZ - SECTEUR PUBLIC LOCAL</poste>
+ <poste code="0570001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE LA MOSELLE</poste>
+ <poste code="0570310">TRESORERIE METZERVISSE</poste>
+ <poste code="0921080">TRESORERIE DE MEUDON</poste>
+ <poste code="0781120">TRESORERIE MEULAN</poste>
+ <poste code="0450130">TRESORERIE MEUNG-SUR-LOIRE</poste>
+ <poste code="0010190">TRESORERIE MEXIMIEUX</poste>
+ <poste code="0380450">TRESORERIE MEYLAN</poste>
+ <poste code="0190100">TRESORERIE MEYMAC</poste>
+ <poste code="0480140">TRESORERIE MEYRUEIS</poste>
+ <poste code="0190300">TRESORERIE MEYSSAC</poste>
+ <poste code="0690370">TRESORERIE DE MEYZIEU</poste>
+ <poste code="0340180">TRESORERIE MEZE</poste>
+ <poste code="0140540">TRESORERIE MEZIDON-CANON</poste>
+ <poste code="0470090">TRESORERIE MEZIN</poste>
+ <poste code="0320210">TRESORERIE MIELAN</poste>
+ <poste code="0890270">TRESORERIE MIGENNES</poste>
+ <poste code="0660100">TRESORERIE MILLAS</poste>
+ <poste code="0120330">TRESORERIE MILLAU-SAINT-BEAUZELY-VEZINS</poste>
+ <poste code="0910210">TRESORERIE MILLY-LA-FORET</poste>
+ <poste code="0400070">TRESORERIE MIMIZAN</poste>
+ <poste code="0132170">TRESORERIE MIRAMAS</poste>
+ <poste code="0170310">TRESORERIE MIRAMBEAU</poste>
+ <poste code="0470250">TRESORERIE MIRAMONT-DE-GUYENNE</poste>
+ <poste code="0320230">TRESORERIE MIRANDE-MONTESQUIOU</poste>
+ <poste code="0860120">TRESORERIE MIREBEAU</poste>
+ <poste code="0210250">TRESORERIE MIREBEAU</poste>
+ <poste code="0880300">TRESORERIE MIRECOURT</poste>
+ <poste code="0090250">TRESORERIE MIREPOIX</poste>
+ <poste code="0010200">TRESORERIE MIRIBEL</poste>
+ <poste code="0730200">TRESORERIE MODANE</poste>
+ <poste code="0380240">TRESORERIE MOIRANS-VOREPPE</poste>
+ <poste code="0390350">TRESORERIE MOIRANS-EN-MONTAGNE</poste>
+ <poste code="0440120">TRESORERIE MOISDON-LA-RIVIERE</poste>
+ <poste code="0820120">TRESORERIE MOISSAC</poste>
+ <poste code="0670290">TRESORERIE DE MOLSHEIM</poste>
+ <poste code="0820140">TRESORERIE MONCLAR-DE-QUERCY</poste>
+ <poste code="0220120">TRESORERIE DE MONCONTOUR</poste>
+ <poste code="0790260">TRESORERIE MONCOUTANT</poste>
+ <poste code="0140260">TRESORERIE CAEN BANLIEUE EST</poste>
+ <poste code="0410260">TRESORERIE MONDOUBLEAU</poste>
+ <poste code="0640150">TRESORERIE MONEIN</poste>
+ <poste code="0380250">TRESORERIE MONESTIER-DE-CLERMONT</poste>
+ <poste code="0810120">TRESORERIE MONESTIES</poste>
+ <poste code="0470270">TRESORERIE DE MONFLANQUIN</poste>
+ <poste code="0430160">TRESORERIE MONISTROL-SUR-LOIRE</poste>
+ <poste code="0690520">TRESORERIE MONSOLS</poste>
+ <poste code="0400001">DEPARTEMENT DES VERIFICATIONS DES LANDES</poste>
+ <poste code="0400080">TRESORERIE MONT-DE-MARSAN</poste>
+ <poste code="0400090">TRESORERIE MONT-DE-MARSAN MUNICIPALE</poste>
+ <poste code="0400190">TRESORERIE OPDHLM DES LANDES</poste>
+ <poste code="0400900">PAIERIE DEPARTEMENTALE DES LANDES</poste>
+ <poste code="0400000">TRESORERIE GENERALE DES LANDES</poste>
+ <poste code="0660110">TRESORERIE MONT-LOUIS</poste>
+ <poste code="0390370">TRESORERIE DU VAL D'AMOUR</poste>
+ <poste code="0850090">TRESORERIE DE MONTAIGU-ROCHESERVIERE</poste>
+ <poste code="0820150">TRESORERIE MONTAIGU-DE-QUERCY</poste>
+ <poste code="0630400">TRESORERIE DE MONTAIGUT-EN-COMBRAILLE</poste>
+ <poste code="0381190">TRESORERIE MONTALIEU-VERCIEU</poste>
+ <poste code="0450400">TRESORERIE MONTARGIS</poste>
+ <poste code="0450410">TRESORERIE MONTARGIS MUNICIPALE</poste>
+ <poste code="0310160">TRESORERIE DES VALLEES DU TARN ET DU GIROU</poste>
+ <poste code="0820000">TRESORERIE GENERALE DE TARN-ET-GARONNE</poste>
+ <poste code="0820160">TRESORERIE MONTAUBAN</poste>
+ <poste code="0820170">TRESORERIE DE MONTAUBAN MUNICIPALE</poste>
+ <poste code="0820900">PAIERIE DEPARTEMENTALE DU TARN-ET-GARONNE</poste>
+ <poste code="0820001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DU TARN ET GARONNE</poste>
+ <poste code="0350220">TRESORERIE MONTAUBAN</poste>
+ <poste code="0210260">TRESORERIE MONTBARD</poste>
+ <poste code="0120340">TRESORERIE DE MONTBAZENS-LANUEJOULS</poste>
+ <poste code="0370240">TRESORERIE DE MONTBAZON</poste>
+ <poste code="0250420">TRESORERIE MONTBELIARD MUNICIPALE</poste>
+ <poste code="0900121">TRESORERIE BELFORT ETS H MONTBELIARD</poste>
+ <poste code="0700310">TRESORERIE MONTBOZON-DAMPIERRE-SUR-LINOTTE</poste>
+ <poste code="0420230">TRESORERIE MONTBRISON</poste>
+ <poste code="0160300">TRESORERIE DE MONTBRON</poste>
+ <poste code="0710450">TRESORERIE MONTCEAU-LES-MINES</poste>
+ <poste code="0710430">TRESORERIE DE MONTCENIS-MONTCHANIN</poste>
+ <poste code="0460210">TRESORERIE MONTCUQ</poste>
+ <poste code="0800310">TRESORERIE MONTDIDIER</poste>
+ <poste code="0500440">TRESORERIE MONTEBOURG</poste>
+ <poste code="0820180">TRESORERIE MONTECH</poste>
+ <poste code="0260360">TRESORERIE MONTELIMAR</poste>
+ <poste code="0770360">TRESORERIE MONTEREAU-FAULT-YONNE</poste>
+ <poste code="0840230">TRESORERIE MONTEUX</poste>
+ <poste code="0430170">TRESORERIE MONTFAUCON-EN-VELAY</poste>
+ <poste code="0840070">TRESORERIE AVIGNON CTRE HOSP.SPEC.MONTFAVET</poste>
+ <poste code="0930140">TRESORERIE DE MONTFERMEIL MUN. ET HOP.</poste>
+ <poste code="0400240">TRESORERIE MONTFORT-EN-CHALOSSE</poste>
+ <poste code="0780210">TRESORERIE MONTFORT-L'AMAURY</poste>
+ <poste code="0350230">TRESORERIE MONTFORT</poste>
+ <poste code="0270320">TRESORERIE MONTFORT-SUR-RISLE</poste>
+ <poste code="0910220">TRESORERIE MONTGERON</poste>
+ <poste code="0080290">TRESORERIE MONTHERME</poste>
+ <poste code="0880310">TRESORERIE MONTHUREUX-SUR-SAONE</poste>
+ <poste code="0520210">TRESORERIE MONTIER-EN-DER</poste>
+ <poste code="0550170">TRESORERIE DE MONTIERS-SUR-SAULX</poste>
+ <poste code="0240180">TRESORERIE MONTIGNAC-PLAZAC</poste>
+ <poste code="0780060">TRESORERIE MONTIGNY-LE-BRETONNEUX</poste>
+ <poste code="0780460">TRESORERIE YVELINES AMENDES</poste>
+ <poste code="0570320">TRESORERIE MONTIGNY-PAYS MESSIN</poste>
+ <poste code="0210270">TRESORERIE MONTIGNY-SUR-AUBE</poste>
+ <poste code="0762170">TRESORERIE MONTIVILLIERS</poste>
+ <poste code="0911100">TRESORERIE MONTLHERY</poste>
+ <poste code="0170320">TRESORERIE MONTLIEU-LA-GARDE-CHEVANCEAUX</poste>
+ <poste code="0030300">TRESORERIE DE MONTLUCON MUNICIPALE</poste>
+ <poste code="0030290">TRESORERIE DE MONTLUCON-CHATEAU</poste>
+ <poste code="0030370">TRESORERIE DE MONTLUÇON ETS HOSPITALIERS</poste>
+ <poste code="0010210">TRESORERIE MONTLUEL</poste>
+ <poste code="0030320">TRESORERIE MONTMARAULT</poste>
+ <poste code="0500120">TRESORERIE MONTMARTIN-QUETTREVILLE</poste>
+ <poste code="0550400">TRESORERIE MONTMEDY</poste>
+ <poste code="0730210">TRESORERIE MONTMELIAN</poste>
+ <poste code="0260150">TRESORERIE MONTMEYRAN</poste>
+ <poste code="0510390">TRESORERIE MONTMIRAIL</poste>
+ <poste code="0390380">TRESORERIE MONTMIREY-LE-CHATEAU</poste>
+ <poste code="0160320">TRESORERIE MONTMOREAU-SAINT-CYBARD</poste>
+ <poste code="0951070">TRESORERIE DE MONTMORENCY</poste>
+ <poste code="0860130">TRESORERIE MONTMORILLON</poste>
+ <poste code="0441120">TRESORERIE DE MONTOIR DE BRETAGNE</poste>
+ <poste code="0410270">TRESORERIE MONTOIRE-SAVIGNY</poste>
+ <poste code="0340000">TRESORERIE GENERALE DE L' HERAULT</poste>
+ <poste code="0340007">CENTRE REGIONAL DES PENSIONS DE L' HERAULT</poste>
+ <poste code="0340008">CENTRE DE FORMATION DEPARTEMENTAL DE L' HERAULT</poste>
+ <poste code="0340009">DEPARTEMENT INFORMATIQUE DE L' HERAULT</poste>
+ <poste code="0340190">TRESORERIE MONTPELLIER 1ERE DIVISION</poste>
+ <poste code="0340200">TRESORERIE MONTPELLIER 2EME DIVISION</poste>
+ <poste code="0340210">TRESORERIE MONTPELLIER MUNICIPALE</poste>
+ <poste code="0340220">TRESORERIE DE MONTPELLIER CHR</poste>
+ <poste code="0340320">TRESORERIE HERAULT AMENDES</poste>
+ <poste code="0340800">PAIERIE REGIONALE DE LANGUEDOC-ROUSSILLON</poste>
+ <poste code="0340900">PAIERIE DEPARTEMENTALE DE L' HERAULT</poste>
+ <poste code="0340001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE L' HERAULT</poste>
+ <poste code="0340006">PÔLE NATIONAL ANAFI HOSP-HLM - RISQUES COLLOC</poste>
+ <poste code="0340005">CPS CENTRE PRÉLÈVEMENT SERVICE</poste>
+ <poste code="0070170">TRESORERIE MONTPEZAT-SOUS-BAUZON</poste>
+ <poste code="0240190">TRESORERIE MONTPON-MENESTEROL-VAUCLAIRE</poste>
+ <poste code="0110260">TRESORERIE MONTREAL</poste>
+ <poste code="0810290">TRESORERIE MONTREDON-LABESSONNIE</poste>
+ <poste code="0310510">TRESORERIE DE MONTREJEAU</poste>
+ <poste code="0622230">TRESORERIE MONTREUIL-SUR-MER</poste>
+ <poste code="0930150">TRESORERIE MONTREUIL</poste>
+ <poste code="0750009">DEPARTEMENT INFORMATIQUE DE LA RECETTE GENERALE DES FINANCES</poste>
+ <poste code="0930160">TRESORERIE MONTREUIL MUNICIPALE</poste>
+ <poste code="0490520">TRESORERIE MONTREUIL-BELLAY</poste>
+ <poste code="4130000">DGCP 3ÈME SD - SYSTÈME D'INFORMATION</poste>
+ <poste code="4130100">DGCP 3A - PILOTAGE</poste>
+ <poste code="4140000">DGCP 4ÈME SD - RECETTES DE L'ETAT</poste>
+ <poste code="4130200">DGCP 3B - MOYENS INFORMATIQUES</poste>
+ <poste code="4130300">DGCP 3C - RECOUVREMENT DE L'IMPÔT</poste>
+ <poste code="4140100">DGCP 4A - PILOTAGE, RELATIONS USAGERS</poste>
+ <poste code="4130400">DGCP 3D - PROJETS DE DÉVELOPPEMENT</poste>
+ <poste code="4140200">DGCP 4B -RECOUVREMT GESTION/EXPERTISE</poste>
+ <poste code="4130500">DGCP 3E - COMPTABILITÉS-DÉPENSES ETAT</poste>
+ <poste code="4136000">DGCP EQUIPE PROJET ÉDITIQUE</poste>
+ <poste code="4140300">DGCP 4C - MOA SYSTÈME D'INFORMATION</poste>
+ <poste code="4138000">DGCP MISSION SÉCURITÉ DU SI</poste>
+ <poste code="4148000">DGCP AMENDES : RÉINGÉNIERIE</poste>
+ <poste code="4138100">DGCP CELLULE D'ANIMATION DU SI</poste>
+ <poste code="0900090">TRESORERIE DE MONTREUX-CHATEAU</poste>
+ <poste code="0490470">TRESORERIE MONTREVAULT</poste>
+ <poste code="0010220">TRESORERIE MONTREVEL-EN-BRESSE</poste>
+ <poste code="0410130">TRESORERIE MONTRICHARD</poste>
+ <poste code="0921090">TRESORERIE MONTROUGE</poste>
+ <poste code="0150150">TRESORERIE MONTSALVY</poste>
+ <poste code="0580170">TRESORERIE MONTSAUCHE</poste>
+ <poste code="0760290">TRESORERIE MONTVILLE</poste>
+ <poste code="0400110">TRESORERIE MORCENX</poste>
+ <poste code="0410280">TRESORERIE MOREE</poste>
+ <poste code="0381200">TRESORERIE MORESTEL</poste>
+ <poste code="0770370">TRESORERIE MORET-SUR-LOING</poste>
+ <poste code="0800320">TRESORERIE MOREUIL</poste>
+ <poste code="0390390">TRESORERIE DE MOREZ</poste>
+ <poste code="0640160">TRESORERIE DE MORLAAS</poste>
+ <poste code="0290250">TRESORERIE MORLAIX ET BANLIEUE</poste>
+ <poste code="0290260">TRESORERIE MORLAIX MUNICIPALE</poste>
+ <poste code="0840240">TRESORERIE DE MORMOIRON</poste>
+ <poste code="0690240">TRESORERIE MORNANT</poste>
+ <poste code="1010060">TRESORERIE MORNE-A-L'EAU</poste>
+ <poste code="0610190">TRESORERIE DE MORTAGNE-AU-PERCHE</poste>
+ <poste code="0850100">TRESORERIE MORTAGNE-SUR-SEVRE-TIFFAUGES</poste>
+ <poste code="0500300">TRESORERIE DE MORTAIN-SOURDEVAL</poste>
+ <poste code="0250480">TRESORERIE MORTEAU</poste>
+ <poste code="0061160">TRESORERIE MOUGINS</poste>
+ <poste code="0030000">TRESORERIE GENERALE DE L' ALLIER</poste>
+ <poste code="0030080">TRESORERIE DE MOULINS MUNICIPALE</poste>
+ <poste code="0030900">PAIERIE DEPARTEMENTALE DE L' ALLIER</poste>
+ <poste code="0580180">TRESORERIE MOULINS-ENGILBERT</poste>
+ <poste code="0640030">TRESORERIE DU BASSIN DE LACQ</poste>
+ <poste code="0510120">TRESORERIE MOURMELON-LE-GRAND</poste>
+ <poste code="0250310">TRESORERIE DE MOUTHE-LABERGEMENT-JOUGNE</poste>
+ <poste code="0850330">TRESORERIE DE MOUTIERS-LES-MAUXFAITS</poste>
+ <poste code="0730230">TRESORERIE DE MOUTIERS</poste>
+ <poste code="0600320">TRESORERIE MOUY</poste>
+ <poste code="0020550">TRESORERIE MOY-DE-L'AISNE</poste>
+ <poste code="0570340">TRESORERIE MOYEUVRE-GRANDE</poste>
+ <poste code="0400250">TRESORERIE MUGRON</poste>
+ <poste code="0681000">RECETTE DES FINANCES MULHOUSE</poste>
+ <poste code="0681120">TRESORERIE DE MULHOUSE RECOUVREMENT</poste>
+ <poste code="0681170">TRESORERIE MULHOUSE MUNICIPALE</poste>
+ <poste code="0681240">TRESORERIE DE MULHOUSE CENTRE HOSPITALIER</poste>
+ <poste code="0681250">TRESORERIE DE MULHOUSE COURONNE</poste>
+ <poste code="0680110">TRESORERIE MUNSTER</poste>
+ <poste code="0680130">TRESORERIE MUNTZENHEIM</poste>
+ <poste code="0220130">TRESORERIE MUR-DE-BRETAGNE</poste>
+ <poste code="0150160">TRESORERIE MURAT</poste>
+ <poste code="0310190">TRESORERIE MURET</poste>
+ <poste code="0340400">TRESORERIE DE MURVIEL-LES-BEZIERS-AUTIGNAC</poste>
+ <poste code="0240570">TRESORERIE DE VILLAMBLARD</poste>
+ <poste code="0240200">TRESORERIE MUSSIDAN</poste>
+ <poste code="0670310">TRESORERIE MUTTERSHOLTZ</poste>
+ <poste code="0670320">TRESORERIE MUTZIG</poste>
+ <poste code="0310200">TRESORERIE NAILLOUX</poste>
+ <poste code="0120350">TRESORERIE NAJAC</poste>
+ <poste code="9200000">AG.COMPT.APPROVISIONNEMENT DES ARMEES EN PRODUITS PETROLIERS</poste>
+ <poste code="0540001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE LA MEURTHE ET MOSELLE</poste>
+ <poste code="0540000">TRESORERIE GENERALE DE MEURTHE-ET-MOSELLE</poste>
+ <poste code="0540130">TRESORERIE DE NANCY</poste>
+ <poste code="0540140">TRESORERIE NANCY MUNICIPALE</poste>
+ <poste code="0540150">TRESORERIE NANCY C.H.U</poste>
+ <poste code="0540900">PAIERIE DEPARTEMENTALE DE MEURTHE-ET-MOSELLE</poste>
+ <poste code="0770200">TRESORERIE DE NANGIS</poste>
+ <poste code="0120360">TRESORERIE DU LARZAC</poste>
+ <poste code="0920000">TRESORERIE GENERALE DES HAUTS-DE-SEINE</poste>
+ <poste code="0920008">CENTRE DE FORMATION DEPARTEMENTAL DES HAUTS-DE-SEINE</poste>
+ <poste code="0920009">DEPARTEMENT INFORMATIQUE DES HAUTS-DE-SEINE</poste>
+ <poste code="0920260">TRESORERIE DE NANTERRE MUNICIPALE</poste>
+ <poste code="0920900">PAIERIE DEPARTEMENTALE DES HAUTS-DE-SEINE</poste>
+ <poste code="0920250">TRESORERIE NANTERRE</poste>
+ <poste code="0920420">TRESORERIE HAUTS-DE-SEINE AMENDES</poste>
+ <poste code="0920001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DES HAUTS DE SEINE</poste>
+ <poste code="0440000">TRESORERIE GENERALE DE LOIRE-ATLANTIQUE</poste>
+ <poste code="0440007">CENTRE REGIONAL DES PENSIONS DE LOIRE-ATLANTIQUE</poste>
+ <poste code="0440008">CENTRE DE FORMATION DEPARTEMENTAL DE LOIRE-ATLANTIQUE</poste>
+ <poste code="0440009">DEPARTEMENT INFORMATIQUE DE LOIRE-ATLANTIQUE</poste>
+ <poste code="0440130">TRESORERIE NANTES I PETIT-BOIS</poste>
+ <poste code="0440150">TRESORERIE DE NANTES FEYDEAU</poste>
+ <poste code="0440160">TRESORERIE DE NANTES-LES-PONTS AMENDES</poste>
+ <poste code="0440190">TRESORERIE DE NANTES MUNICIPALE</poste>
+ <poste code="0440200">TRESORERIE NANTES CHU</poste>
+ <poste code="0440800">PAIERIE REGIONALE DES PAYS DE LA LOIRE</poste>
+ <poste code="0440900">PAIERIE DEPARTEMENTALE DE LOIRE-ATLANTIQUE</poste>
+ <poste code="9300000">TRESORERIE GENERALE POUR L'ETRANGER</poste>
+ <poste code="9300007">CENTRE REGIONAL DES PENSIONS POUR L'ETRANGER</poste>
+ <poste code="9190000">AGENCE COMPTABLE ETS AUTONOMIE FINANCIÈRE - TGE</poste>
+ <poste code="0440001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE LOIRE ATLANTIQUE</poste>
+ <poste code="0600380">TRESORERIE NANTEUIL-LE-HAUDOUIN</poste>
+ <poste code="0870180">TRESORERIE DE NANTIAT</poste>
+ <poste code="0010230">TRESORERIE NANTUA</poste>
+ <poste code="0110490">TRESORERIE NARBONNE AGGLOMERATION</poste>
+ <poste code="0110470">TRESORERIE DE NARBONNE VILLE</poste>
+ <poste code="0120130">TRESORERIE DE NAUCELLE</poste>
+ <poste code="0640180">TRESORERIE NAVARRENX</poste>
+ <poste code="0640190">TRESORERIE NAY</poste>
+ <poste code="0780230">TRESORERIE NEAUPHLE-LE-CHATEAU</poste>
+ <poste code="0820190">TRESORERIE NEGREPELISSE</poste>
+ <poste code="0770380">TRESORERIE NEMOURS-BOURRON-MARLOTTE</poste>
+ <poste code="0470100">TRESORERIE NERAC</poste>
+ <poste code="0680140">TRESORERIE DE NEUF-BRISACH</poste>
+ <poste code="0880120">TRESORERIE COUSSEY-MARTIGNY-LES-GERBONVAUX</poste>
+ <poste code="0880320">TRESORERIE NEUFCHATEAU</poste>
+ <poste code="0760730">TRESORERIE DE NEUFCHATEL-EN-BRAY</poste>
+ <poste code="0370260">TRESORERIE DE NEUILLE-PONT-PIERRE</poste>
+ <poste code="0600390">TRESORERIE NEUILLY-EN-THELLE</poste>
+ <poste code="0930170">TRESORERIE NEUILLY-PLAISANCE</poste>
+ <poste code="0930350">TRESORERIE VILLE-EVRARD CHS</poste>
+ <poste code="0920270">TRESORERIE NEUILLY-SUR-SEINE</poste>
+ <poste code="0920280">TRESORERIE NEUILLY-SUR-SEINE MUNICIPALE</poste>
+ <poste code="0410140">TRESORERIE NEUNG-SUR-BEUVRON</poste>
+ <poste code="0540220">TRESORERIE NEUVES-MAISONS</poste>
+ <poste code="0190110">TRESORERIE NEUVIC</poste>
+ <poste code="0450150">TRESORERIE NEUVILLE-AUX-BOIS</poste>
+ <poste code="0860140">TRESORERIE NEUVILLE-DE-POITOU</poste>
+ <poste code="0593190">TRESORERIE DE NEUVILLE-SAINT-REMY</poste>
+ <poste code="0690250">TRESORERIE DE NEUVILLE-SUR-SAONE</poste>
+ <poste code="0370270">TRESORERIE DE NEUVY-LE-ROI</poste>
+ <poste code="0580000">TRESORERIE GENERALE DE LA NIEVRE</poste>
+ <poste code="0580190">TRESORERIE NEVERS</poste>
+ <poste code="0580200">TRESORERIE NEVERS MUNICIPALE ET BANLIEUE</poste>
+ <poste code="0580210">TRESORERIE NEVERS HOPITAL</poste>
+ <poste code="0580900">PAIERIE DEPARTEMENTALE DE LA NIEVRE</poste>
+ <poste code="0870190">TRESORERIE DE NEXON</poste>
+ <poste code="0060000">TRESORERIE GENERALE DES ALPES-MARITIMES</poste>
+ <poste code="0060007">CENTRE REGIONAL DES PENSIONS DES ALPES-MARITIMES</poste>
+ <poste code="0060008">CENTRE DE FORMATION DEPARTEMENTAL DES ALPES-MARITIMES</poste>
+ <poste code="0060009">DEPARTEMENT INFORMATIQUE DES ALPES-MARITIMES</poste>
+ <poste code="0060090">TRESORERIE NICE PORT-ROSSINI</poste>
+ <poste code="0060120">TRESORERIE NICE ARENES-VERDI</poste>
+ <poste code="0060130">TRESORERIE NICE LA PLAINE</poste>
+ <poste code="0060140">TRESORERIE ALPES MARITIMES AMENDES</poste>
+ <poste code="0060150">TRESORERIE NICE MUNICIPALE</poste>
+ <poste code="0060160">TRESORERIE NICE CENTRE HOSPITALIER</poste>
+ <poste code="0060260">TRESORERIE NICE OPHLM</poste>
+ <poste code="0060900">PAIERIE DEPARTEMENTALE DES ALPES-MARITIMES</poste>
+ <poste code="0060001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DES ALPES MARITIMES</poste>
+ <poste code="0671130">TRESORERIE NIEDERBRONN-LES-BAINS</poste>
+ <poste code="0300000">TRESORERIE GENERALE DU GARD</poste>
+ <poste code="0300150">TRESORERIE NIMES NORD</poste>
+ <poste code="0300160">TRESORERIE DE NIMES SUD</poste>
+ <poste code="0300180">TRESORERIE NIMES MUNICIPALE</poste>
+ <poste code="0300190">TRESORERIE NIMES CHU</poste>
+ <poste code="0300900">PAIERIE DEPARTEMENTALE DU GARD</poste>
+ <poste code="0300001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DU GARD</poste>
+ <poste code="0300170">TRESORERIE DE NIMES BANLIEUE</poste>
+ <poste code="0790000">TRESORERIE GENERALE DES DEUX-SEVRES</poste>
+ <poste code="0790180">TRESORERIE NIORT CENTRE HOSPITALIER</poste>
+ <poste code="0790290">TRESORERIE DE NIORT</poste>
+ <poste code="0790300">TRESORERIE MUNICIPALE DE NIORT-SEVRE</poste>
+ <poste code="0790900">PAIERIE DEPARTEMENTALE DES DEUX-SEVRES</poste>
+ <poste code="0790420">TRESORERIE DE NIORT OPAC SUD-DEUX-SEVRES</poste>
+ <poste code="0600270">TRESORERIE NOAILLES</poste>
+ <poste code="0320260">TRESORERIE NOGARO</poste>
+ <poste code="0520220">TRESORERIE NOGENT-BIESLES</poste>
+ <poste code="0280370">TRESORERIE NOGENT-LE-ROI</poste>
+ <poste code="0280270">TRESORERIE DE NOGENT-LE-ROTROU THIRON-GARDAIS</poste>
+ <poste code="0941050">TRESORERIE NOGENT-SUR-MARNE</poste>
+ <poste code="0941000">RECETTE DES FINANCES NOGENT-SUR-MARNE</poste>
+ <poste code="0100250">TRESORERIE DE NOGENT-SUR-SEINE</poste>
+ <poste code="0422200">TRESORERIE NOIRETABLE</poste>
+ <poste code="0850340">TRESORERIE NOIRMOUTIER-EN-L'ILE</poste>
+ <poste code="3000000">ECOLE NATIONALE DU TRESOR PUBLIC - SCN</poste>
+ <poste code="3000022">ECOLE ENT-PREPARATION AUX CONCOURS</poste>
+ <poste code="0930490">TRESORERIE DES NON RESIDENTS</poste>
+ <poste code="0756000">AGENCE COMPTABLE DES SERVICES INDUSTRIELS DE L'ARMEMENT</poste>
+ <poste code="0930008">CENTRE DE FORMATION DEPARTEMENTAL DE LA SEINE-SAINT-DENIS</poste>
+ <poste code="0930340">TRESORERIE NOISY-LE-GRAND</poste>
+ <poste code="3000020">ECOLE DES CADRES C</poste>
+ <poste code="3000030">CENTRE NATIONAL DE DOCUMENTATION DU TRESOR PUBLIC</poste>
+ <poste code="4006000">DGCP PROGRAMME HELIOS</poste>
+ <poste code="4110300">DGCP 1C : RESP. DES COMPTABLES</poste>
+ <poste code="4268000">DGCP MISSION VÉRIF COMPTES DE GESTION</poste>
+ <poste code="4008121">DGCP SERVICES GÉNÉRAUX - ANNEXE NOISY</poste>
+ <poste code="9470001">SCE DE CONTRÔLE BUDGÉTAIRE COMPTABLE MINISTÉRIEL MINEFI - ANNEXE NOISY-LE-GRAND</poste>
+ <poste code="0930180">TRESORERIE DE NOISY-LE-SEC</poste>
+ <poste code="0930006">PÔLE NATIONAL DE GESTION DES PENSIONS</poste>
+ <poste code="0210550">TRESORERIE NOLAY</poste>
+ <poste code="0540180">TRESORERIE DE NOMENY</poste>
+ <poste code="0270100">TRESORERIE NONANCOURT</poste>
+ <poste code="0240220">TRESORERIE DE NONTRON</poste>
+ <poste code="0440210">TRESORERIE NORT-SUR-ERDRE</poste>
+ <poste code="1620001">TRESORERIE GENERALE DE LA NOUVELLE-CALEDONIE</poste>
+ <poste code="1620000">TRESORERIE GENERALE DE LA NOUVELLE-CALEDONIE</poste>
+ <poste code="1620010">TRESORERIE DE LA PROVINCE SUD</poste>
+ <poste code="1620040">TRESORERIE DE LA PROVINCE DES ILES LOYAUTE</poste>
+ <poste code="1620050">PAIERIE DE LA NOUVELLE CALÉDONIE ET ETS PCS</poste>
+ <poste code="1620060">TRESORERIE CENTRES HOSPITALIERS DE NOUMEA</poste>
+ <poste code="0080320">TRESORERIE NOUZONVILLE</poste>
+ <poste code="0490370">TRESORERIE NOYANT</poste>
+ <poste code="0600520">TRESORERIE NOYON</poste>
+ <poste code="0440220">TRESORERIE NOZAY</poste>
+ <poste code="0390160">TRESORERIE NOZEROY-CENSEAU</poste>
+ <poste code="0210560">TRESORERIE NUITS-SAINT-GEORGES</poste>
+ <poste code="0260370">TRESORERIE NYONS</poste>
+ <poste code="1350000">TRESORERIE AMBASSADE DE FRANCE AU TCHAD</poste>
+ <poste code="0670350">TRESORERIE OBERNAI</poste>
+ <poste code="0670390">TRESORERIE ROSHEIM</poste>
+ <poste code="0190350">TRESORERIE AYEN</poste>
+ <poste code="0190310">TRESORERIE D' OBJAT</poste>
+ <poste code="0760640">TRESORERIE OFFRANVILLE</poste>
+ <poste code="0800710">TRESORERIE OISEMONT</poste>
+ <poste code="0830100">TRESORERIE OLLIOULES</poste>
+ <poste code="0640200">TRESORERIE OLORON-ARAMITS</poste>
+ <poste code="0410150">TRESORERIE D' ONZAIN-HERBAULT</poste>
+ <poste code="0840250">TRESORERIE ORANGE</poste>
+ <poste code="0140550">TRESORERIE ORBEC</poste>
+ <poste code="0593070">TRESORERIE ORCHIES</poste>
+ <poste code="0390170">TRESORERIE ORGELET</poste>
+ <poste code="0132090">TRESORERIE ORGON</poste>
+ <poste code="0450170">TRESORERIE D' ORLEANS</poste>
+ <poste code="0450000">TRESORERIE GENERALE DU LOIRET</poste>
+ <poste code="0450001">ANNEXE T.G. DU LOIRET</poste>
+ <poste code="0450110">TRESORERIE ORLEANS BANLIEUE</poste>
+ <poste code="0450800">PAIERIE REGIONALE DE CENTRE</poste>
+ <poste code="0450190">TRESORERIE D' ORLEANS MUNICIPALE</poste>
+ <poste code="0450200">TRESORERIE ORLEANS CENTRES HOSPITALIERS</poste>
+ <poste code="0450900">PAIERIE DEPARTEMENTALE DU LOIRET</poste>
+ <poste code="0450002">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DU LOIRET</poste>
+ <poste code="0450160">TRESORERIE OLIVET</poste>
+ <poste code="0940300">TRESORERIE ORLY</poste>
+ <poste code="0250160">TRESORERIE ORNANS</poste>
+ <poste code="0911110">TRESORERIE ORSAY</poste>
+ <poste code="0640210">TRESORERIE D' ORTHEZ</poste>
+ <poste code="0650230">TRESORERIE OSSUN</poste>
+ <poste code="0681180">TRESORERIE OTTMARSHEIM</poste>
+ <poste code="1250000">TRESORERIE AMBASSADE DE FRANCE AU BURKINA-FASO</poste>
+ <poste code="0140250">TRESORERIE OUISTREHAM</poste>
+ <poste code="0690260">TRESORERIE OULLINS</poste>
+ <poste code="0090120">TRESORERIE OUST-MASSAT</poste>
+ <poste code="0450420">TRESORERIE OUTARVILLE</poste>
+ <poste code="0622090">TRESORERIE D' OUTREAU</poste>
+ <poste code="0622310">TRESORERIE OYE-PLAGE</poste>
+ <poste code="0010240">TRESORERIE OYONNAX</poste>
+ <poste code="0270110">TRESORERIE PACY-SUR-EURE</poste>
+ <poste code="0441190">TRESORERIE PAIMBOEUF</poste>
+ <poste code="0220460">TRESORERIE PAIMPOL</poste>
+ <poste code="0911120">TRESORERIE PALAISEAU</poste>
+ <poste code="0911000">RECETTE DES FINANCES PALAISEAU</poste>
+ <poste code="0090260">TRESORERIE DE PAMIERS</poste>
+ <poste code="0930190">TRESORERIE PANTIN</poste>
+ <poste code="0930200">TRESORERIE PANTIN MUNICIPALE</poste>
+ <poste code="0930390">TRESORERIE SEINE-SAINT-DENIS AMENDES</poste>
+ <poste code="9130000">AGENCE COMPTABLE DIRECTION GRANDES ENTREPRISES</poste>
+ <poste code="1610020">TRESORERIE DU VENT, AUSTRALES ET ARCHIPELS</poste>
+ <poste code="1610000">TRESORERIE GENERALE DE LA POLYNESIE FRANCAISE</poste>
+ <poste code="1610050">TRESORERIE DES ETABLISSEMENTS PUBLICS</poste>
+ <poste code="1610060">TRESORERIE DE LA PAIERIE DE POLYNESIE FRANCAISE</poste>
+ <poste code="1610070">TRESORERIE CTRE HOSP DE POLYNESIE FRANCAISE</poste>
+ <poste code="0710230">TRESORERIE PARAY-LE-MONIAL</poste>
+ <poste code="0400120">TRESORERIE PARENTIS-EN-BORN</poste>
+ <poste code="0750060">TRESORERIE PARIS 5E ARRONDISSEMENT</poste>
+ <poste code="0750110">TRESORERIE PARIS 8 E</poste>
+ <poste code="0750000">RECETTE GENERALE DES FINANCES DE PARIS</poste>
+ <poste code="0750001">RECETTE GENERALE DES FINANCES DE PARIS - ANNEXE NDV</poste>
+ <poste code="0750008">CENTRE DE FORMATION DEPARTEMENTAL DE LA R.G.F. DE PARIS</poste>
+ <poste code="0750010">TRESORERIE DE PARIS CENTRE</poste>
+ <poste code="0750080">TRESORERIE PARIS 6E ARRONDT</poste>
+ <poste code="0750100">TRESORERIE PARIS 7E ARRONDISSEMENT</poste>
+ <poste code="0750140">TRESORERIE PARIS 9E ARRONDT 1ERE DIVISION</poste>
+ <poste code="0750150">TRESORERIE PARIS 9E ARRONDT 2EME DIVISION</poste>
+ <poste code="0750160">TRESORERIE PARIS 10E ARRONDT 1ERE DIVISION</poste>
+ <poste code="0750170">TRESORERIE PARIS 10E ARRONDT 2EME DIVISION</poste>
+ <poste code="0750180">TRESORERIE PARIS 11E ARRONDT 1ERE DIVISION</poste>
+ <poste code="0750190">TRESORERIE DE PARIS 11E ARRONDT 2EME DIVISION</poste>
+ <poste code="0750210">TRESORERIE PARIS 12E ARRONDT 1ERE DIVISION</poste>
+ <poste code="0750220">TRESORERIE PARIS 12E ARRONDT 2EME DIVISION</poste>
+ <poste code="0750230">TRESORERIE PARIS 13E ARRONDT 1ERE DIVISION</poste>
+ <poste code="0750240">TRESORERIE PARIS 13E ARRONDT 2EME DIVISION</poste>
+ <poste code="0750250">TRESORERIE PARIS 14E ARRONDT 1ERE DIVISION</poste>
+ <poste code="0750260">TRESORERIE PARIS 14E ARRONDT 2EME DIVISION</poste>
+ <poste code="0750280">TRESORERIE PARIS 15E ARRONDT 1ERE DIVISION</poste>
+ <poste code="0750290">TRESORERIE PARIS 15E ARRONDT 2EME DIVISION</poste>
+ <poste code="0750300">TRESORERIE PARIS 15E ARRONDT 3EME DIVISION</poste>
+ <poste code="0750310">TRESORERIE PARIS 16E ARRONDT 1ERE DIVISION</poste>
+ <poste code="0750320">TRESORERIE PARIS 16E ARRONDT 2EME DIVISION</poste>
+ <poste code="0750330">TRESORERIE PARIS 16E ARRONDT 3EME DIVISION</poste>
+ <poste code="0750340">TRESORERIE PARIS 17E ARRONDT 1ERE DIVISION</poste>
+ <poste code="0750350">TRESORERIE PARIS 17E ARRONDT 2EME DIVISION</poste>
+ <poste code="0750360">TRESORERIE PARIS 17E ARRONDT 3EME DIVISION</poste>
+ <poste code="0750370">TRESORERIE PARIS 17E ARRONDT 4EME DIVISION</poste>
+ <poste code="0750380">TRESORERIE DE PARIS 18E ARRONDT 1ERE DIVISION</poste>
+ <poste code="0750400">TRESORERIE PARIS 18E ARRONDT 2EME DIVISION</poste>
+ <poste code="0750410">TRESORERIE PARIS 19E ARRONDT 1ERE DIVISION</poste>
+ <poste code="0750420">TRESORERIE PARIS 19E ARRONDT 2EME DIVISION</poste>
+ <poste code="0750430">TRESORERIE PARIS 20E ARRONDT 1ERE DIVISION</poste>
+ <poste code="0750440">TRESORERIE PARIS 20E ARRONDT 2EME DIVISION</poste>
+ <poste code="0750450">TRESORERIE PARIS 15E ARRONDT 4EME DIVISION</poste>
+ <poste code="0750470">TRESORERIE PARIS 16E ARRONDT 4EME DIVISION</poste>
+ <poste code="0750610">TRESORERIE PARIS AMENDES 1ERE DIVISION</poste>
+ <poste code="0750620">TRESORERIE PARIS AMENDES 2EME DIVISION</poste>
+ <poste code="0750630">TRESORERIE PARIS AMENDES DE TRANSPORTS</poste>
+ <poste code="0750640">TRESORERIE PARIS CENTRES HOSPITALIERS SPEC.</poste>
+ <poste code="0750650">TRESORERIE ETABLISSEMENTS PUBLICS LOCAUX</poste>
+ <poste code="0750660">TRESORERIE CENTRE D'ACTION SOCIALE DE PARIS</poste>
+ <poste code="0750990">RECETTE GENERALE DES FINANCES DE PARIS-VILLE-DÉPT-PRÉF POLICE</poste>
+ <poste code="0751000">AGENCE COMPTABLE DES SERVICES DES AEROPORTS DE PARIS</poste>
+ <poste code="0752000">PAIERIE GENERALE DU TRESOR</poste>
+ <poste code="0752009">DEPARTEMENT INFORMATIQUE DE LA PAIERIE GÉNÉRALE DU TRÉSOR</poste>
+ <poste code="0753000">TRESORERIE GENERALE DE L' ASSISTANCE PUB. - HOPITAUX PARIS</poste>
+ <poste code="0753001">TRESORERIE GENERALE ANNEXE ASSISTANCE PUB.-HÔP.PARIS</poste>
+ <poste code="0753009">DEPARTEMENT INFORMATIQUE DE L' ASSISTANCE PUB. - HOPITAUX PARIS</poste>
+ <poste code="0754000">RECETTE PRINCIPALE REGIONALE DES DOUANES DE PARIS</poste>
+ <poste code="0755000">AGENCE COMPTABLE DES IMPOTS DE PARIS</poste>
+ <poste code="9000000">TRESORERIE GENERALE DE L' ACCT</poste>
+ <poste code="9000009">DEPARTEMENT INFORMATIQUE DE L' ACCT</poste>
+ <poste code="9100000">AGENCE COMPTABLE DOCUMENTATION FRANCAISE</poste>
+ <poste code="9150000">AGENCE COMPTABLE FONDS PEREQ. TRANSPORTS AERIENS</poste>
+ <poste code="9300010">SERVICE DE LA TRESORERIE DE L' ANTENNE TGE</poste>
+ <poste code="9420000">SCE DE CONTRÔLE BUDGÉTAIRE COMPTABLE MINISTÉRIEL AUPRES DU MINISTERE CHARGE DE L'INTERIEUR</poste>
+ <poste code="0750991">RECETTE GENERALE DES FINANCES DE PARIS - RÉGION</poste>
+ <poste code="0750992">RECETTE GENERALE DES FINANCES DE PARIS - ETS INTERDEPARTEMENTAUX</poste>
+ <poste code="0750993">RECETTE GENERALE DES FINANCES DE PARIS - AUTRES ETS LOCAUX</poste>
+ <poste code="9510000">SCE DE CONTRÔLE BUDGÉTAIRE COMPTABLE MINISTÉRIEL AUPRES DES SERVICES DU 1ER MINISTRE</poste>
+ <poste code="9520000">SCE DE CONTRÔLE BUDGÉTAIRE COMPTABLE MINISTÉRIEL AUPRES DU MINISTÈRE CHARGÉ DE LA CULTURE</poste>
+ <poste code="9120000">AGENCE COMPTABLE DU B.A. MONNAIES ET MÉDAILLES</poste>
+ <poste code="9170000">AGENCE COMPTABLE BA PUBLI OFFICIELLES - INFO ADMI</poste>
+ <poste code="9090009">DEPARTEMENT INFORMATIQUE CBLE CENTRALISATEUR COMPTES ÉTAT</poste>
+ <poste code="9110000">AGENCE COMPTABLE DU SERVICE CTRE NAT.FONCTION PUBL.TERRITOR.</poste>
+ <poste code="0759000">AGENCE COMPT. REGIE INDUSTRIELLE ETABLISSEMENTS PENITENTIAIRES</poste>
+ <poste code="9430000">SCE DE CONTRÔLE BUDGÉTAIRE COMPTABLE MINISTÉRIEL AUPRES DU MINISTÈRE CHARGÉ DE LA JUSTICE</poste>
+ <poste code="0750006">PÔLE NATIONAL DE SOUTIEN AU RESEAU MOYENS DE PAIEMENT DU SPL</poste>
+ <poste code="0750007">CENTRE REGIONAL DES PENSIONS DU TRESOR</poste>
+ <poste code="9530000">SCE DE CONTRÔLE BUDGÉTAIRE COMPTABLE MINISTÉRIEL AUPRES DU MINISTÈRE DE L'ENVIRONNEMENT</poste>
+ <poste code="9940001">RECETTE DES FINANCES DOMAINE - ANNEXE ST-PÉTERSBOURG</poste>
+ <poste code="9700000">RECETTE GENERALE DES FINANCES LIQUIDATION OP REDEVANCE</poste>
+ <poste code="0750002">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE PARIS</poste>
+ <poste code="4000000">DGCP DIRECTION GÉNÉRALE</poste>
+ <poste code="4008300">DGCP CONTRÔLE DE GESTION</poste>
+ <poste code="4100000">DGCP SERVICE RESSOURCES RÉSEAU</poste>
+ <poste code="4200000">DGCP SERVICE FONCTION COMPTABLE ÉTAT</poste>
+ <poste code="4110000">DGCP 1ÈRE SD : PILOTAGE-BUDGET-RÉSEAU</poste>
+ <poste code="4008000">DGCP MISSION AUDIT EVAL CONTRÔLE</poste>
+ <poste code="4120000">DGCP 2ÈME SD - RESSOURCES HUMAINES</poste>
+ <poste code="4008100">DGCP CABINET DU DIRECTEUR GÉNÉRAL</poste>
+ <poste code="4126000">DGCP MISSION SIRH (SEQUOIA)</poste>
+ <poste code="4008110">DGCP COMMUNICATION</poste>
+ <poste code="4008120">DGCP SERVICES GENERAUX</poste>
+ <poste code="4010000">DGCP SCN COPERNIC</poste>
+ <poste code="4110100">DGCP 1A - PILOTAGE ET RÉSEAU</poste>
+ <poste code="4120100">DGCP 2A - PILOTAGE ET DIALOGUE SOCIAL</poste>
+ <poste code="4008200">DGCP PORTAIL MINEFI COLLOC</poste>
+ <poste code="4108000">DGCP MISSION DE COOP INTERNATIONALE</poste>
+ <poste code="4110200">DGCP 1B - MOYENS BUDG. ET IMMO.</poste>
+ <poste code="4118000">DGCP CELLULE QUALITÉ SIMPLIFICATION</poste>
+ <poste code="4120300">DGCP 2C - CADRES SUP, AGENTS CPTABLES</poste>
+ <poste code="4110500">DGCP CELLULE SÉCURITÉ</poste>
+ <poste code="4120400">DGCP 2D - PERSONNELS DE CATÉGORIE A</poste>
+ <poste code="4110400">DGCP 1D : EXPERTISE ET ACTIONS ÉCO.</poste>
+ <poste code="4150000">DGCP 5ÈME SD : SECTEUR PUBLIC LOCAL</poste>
+ <poste code="4150100">DGCP 5A : PILOTAGE ET MOA DU SI</poste>
+ <poste code="4150200">DGCP 5B : EXPERTISE JURIDIQUE</poste>
+ <poste code="4270000">DGCP 7ÈME SD : ORG. COMPTABLE/DÉPENSE</poste>
+ <poste code="4150300">DGCP 5C : COMPTABILITÉS LOCALES</poste>
+ <poste code="4206000">DGCP FCE-MISSION CONDUITE CHANGEMENT</poste>
+ <poste code="4270100">DGCP 7A -ORGANISATION COMPTABLE</poste>
+ <poste code="4150400">DGCP 5D : ACTIV. BANC. ET SERV. FIN</poste>
+ <poste code="4206100">DGCP FCE-MISSION DOCTRINE COMPTABLE</poste>
+ <poste code="4270200">DGCP 7B : MODERNISATION DE LA DÉPENSE</poste>
+ <poste code="4270300">DGCP 7C - RÉMUNÉRATIONS ET PENSIONS</poste>
+ <poste code="4270400">DGCP 7D : OPÉRATEURS DE L ETAT</poste>
+ <poste code="4260000">DGCP 6ÈME SD - NORMES ET AUDITS COMPT</poste>
+ <poste code="4260100">DGCP 6A - CONTRÔLE ET AUDIT INTERNES</poste>
+ <poste code="4260200">DGCP 6B - COMPTABILITÉ DE L'ÉTAT</poste>
+ <poste code="4260300">DGCP 6C - COMPTES NATIONAUX</poste>
+ <poste code="9470000">SCE DE CONTRÔLE BUDGÉTAIRE COMPTABLE MINISTÉRIEL AUPRES DU MINÉFI</poste>
+ <poste code="4006100">DGCP MISSION CNE DGI/DGCP - ACCUEIL</poste>
+ <poste code="4300000">DGCP SERVICE FRANCE DOMAINE</poste>
+ <poste code="4300100">DGCP MISSIONS DOMANIALES</poste>
+ <poste code="4306000">DGCP POLITIQUE IMMOBILIÈRE DE L'ETAT</poste>
+ <poste code="9090000">RECETTE DES FINANCES CBLE CENTRALISATEUR COMPTES ÉTAT</poste>
+ <poste code="4120200">DGCP 2B - FORMATION ET GPEEC</poste>
+ <poste code="4120500">DGCP 2E - PERSONNELS B,C,CONTRACTUELS</poste>
+ <poste code="9540000">SCE DE CONTRÔLE BUDGÉTAIRE COMPTABLE MINISTÉRIEL AUPRES DU MINISTÈRE JEUNESSE ET SPORTS</poste>
+ <poste code="4260101">DGCP BUREAU 6A - ANNEXE AURIOL</poste>
+ <poste code="9490000">SCE DE CONTRÔLE BUDGÉTAIRE COMPTABLE MINISTÉRIEL AUPRES DU MINISTÈRE AFFAIRES SOCIALES</poste>
+ <poste code="9480000">SCE DE CONTRÔLE BUDGÉTAIRE COMPTABLE MINISTÉRIEL AUPRES DU MINISTÈRE CHARGÉ DE L'EMPLOI</poste>
+ <poste code="9140000">AGENCE COMPTABLE DU BA CONTRÔLE EXPLOITATION AÉRIEN</poste>
+ <poste code="9160000">AGENCE COMPTABLE DU BA DES JOURNAUX OFFICIELS</poste>
+ <poste code="0750480">TRESORERIE PARIS 20E ARRONDT 3EME DIVISION</poste>
+ <poste code="9450000">SCE DE CONTRÔLE BUDGÉTAIRE COMPTABLE MINISTÉRIEL AUPRES DU MINISTÈRE DE L'ÉQUIPEMENT</poste>
+ <poste code="9410000">SCE DE CONTRÔLE BUDGÉTAIRE COMPTABLE MINISTÉRIEL AUPRES DU MINISTÈRE AGRICULTURE</poste>
+ <poste code="9440000">SCE DE CONTRÔLE BUDGÉTAIRE COMPTABLE MINISTÉRIEL AUPRES DU MINISTÈRE DE L'OUTRE-MER</poste>
+ <poste code="9460000">SCE DE CONTRÔLE BUDGÉTAIRE COMPTABLE MINISTÉRIEL AUPRES DU MINISTÈRE DE L'ÉDUCATION ET RECH</poste>
+ <poste code="0790320">TRESORERIE DE PARTHENAY</poste>
+ <poste code="0450220">TRESORERIE PATAY</poste>
+ <poste code="0640000">TRESORERIE GENERALE DES PYRENEES-ATLANTIQUES</poste>
+ <poste code="0640230">TRESORERIE DE PAU</poste>
+ <poste code="0640250">TRESORERIE PAU ETABLISSEMENTS HOSPITALIERS</poste>
+ <poste code="0640260">TRESORERIE PAU MUNICIPALE</poste>
+ <poste code="0640900">PAIERIE DEPARTEMENTALE DES PYRENEES-ATLANTIQUES</poste>
+ <poste code="0640001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DES PYRENEES-ATLANTIQUES</poste>
+ <poste code="0330390">TRESORERIE DE PAUILLAC</poste>
+ <poste code="0430180">TRESORERIE PAULHAGUET</poste>
+ <poste code="1500000">TRESORERIE AMBASSADE DE FRANCE EN CHINE A PEKIN</poste>
+ <poste code="0420070">TRESORERIE PELUSSIN</poste>
+ <poste code="0470280">TRESORERIE PENNE-D'AGENAIS</poste>
+ <poste code="0500140">TRESORERIE PERIERS-SAINT-SAUVEUR-LENDELIN</poste>
+ <poste code="0170100">TRESORERIE LA ROCHELLE BANLIEUE</poste>
+ <poste code="0240000">TRESORERIE GENERALE DE LA DORDOGNE</poste>
+ <poste code="0240240">TRESORERIE DE PERIGUEUX MUNICIPALE</poste>
+ <poste code="0240450">TRESORERIE PERIGUEUX ETS HOSP</poste>
+ <poste code="0240900">PAIERIE DEPARTEMENTALE DE LA DORDOGNE</poste>
+ <poste code="0240230">TRESORERIE DE PERIGUEUX</poste>
+ <poste code="0240001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE LA DORDOGNE</poste>
+ <poste code="0620410">TRESORERIE HEUCHIN-PERNES</poste>
+ <poste code="0840260">TRESORERIE PERNES-LES-FONTAINES</poste>
+ <poste code="0010290">TRESORERIE BOURG BANLIEUE</poste>
+ <poste code="0800560">TRESORERIE PERONNE</poste>
+ <poste code="0660000">TRESORERIE GENERALE DES PYRENEES-ORIENTALES</poste>
+ <poste code="0660130">TRESORERIE PERPIGNAN</poste>
+ <poste code="0660140">TRESORERIE PERPIGNAN MUNICIPALE</poste>
+ <poste code="0660150">TRESORERIE PERPIGNAN HOSPICES</poste>
+ <poste code="0660290">TRESORERIE DE PERPIGNAN HLM</poste>
+ <poste code="0660001">CELLULE CONTRÔLE REDEVANCE AUDIOVISUELLE DES PYRENEES ORIENTALES</poste>
+ <poste code="0710240">TRESORERIE DE PERRECY-PALINGES</poste>
+ <poste code="0220370">TRESORERIE PERROS-GUIREC</poste>
+ <poste code="0840150">TRESORERIE PERTUIS</poste>
+ <poste code="0330410">TRESORERIE PESSAC</poste>
+ <poste code="0400260">TRESORERIE PEYREHORADE</poste>
+ <poste code="0110300">TRESORERIE PEYRIAC-MINERVOIS</poste>
+ <poste code="0131120">TRESORERIE PEYROLLES-EN-PROVENCE</poste>
+ <poste code="0340410">TRESORERIE PEZENAS</poste>
+ <poste code="0590300">TRESORERIE PHALEMPIN</poste>
+ <poste code="0570350">TRESORERIE PHALSBOURG</poste>
+ <poste code="02A0060">TRESORERIE EVISA</poste>
+ <poste code="0800350">TRESORERIE PICQUIGNY</poste>
+ <poste code="02B0170">TRESORERIE PIEDICROCE</poste>
+ <poste code="0870230">TRESORERIE DE PIERRE-BUFFIERE</poste>
+ <poste code="0710520">TRESORERIE PIERRE-DE-BRESSE-SAINT-MARTIN</poste>
+ <poste code="0830110">TRESORERIE PIERREFEU-DU-VAR CTRE PSYCHO.</poste>
+ <poste code="0250170">TRESORERIE DE PIERREFONTAINE-LES VARANS</poste>
+ <poste code="0260380">TRESORERIE PIERRELATTE</poste>
+ <poste code="0100260">TRESORERIE DE PINEY</poste>
+ <poste code="0350250">TRESORERIE DE PIPRIAC-MAURE</poste>
+ <poste code="0400130">TRESORERIE PISSOS</poste>
+ <poste code="0450430">TRESORERIE PITHIVIERS</poste>
+ <poste code="0290160">TRESORERIE PLABENNEC</poste>
+ <poste code="0320010">TRESORERIE AIGNAN</poste>
+ <poste code="0320270">TRESORERIE PLAISANCE</poste>
+ <poste code="0780240">TRESORERIE PLAISIR ETS HOSP</poste>
+ <poste code="0780350">TRESORERIE PLAISIR</poste>
+ <poste code="0220300">TRESORERIE PLANCOET</poste>
+ <poste code="0150190">TRESORERIE PLEAUX</poste>
+ <poste code="0350260">TRESORERIE PLELAN-LE-GRAND</poste>
+ <poste code="0220150">TRESORERIE PLENEUF-VAL-ANDRE</poste>
+ <poste code="0220380">TRESORERIE PLESTIN-LES-GREVES</poste>
+ <poste code="0860350">TRESORERIE PLEUMARTIN</poste>
+ <poste code="0290170">TRESORERIE PLEYBEN</poste>
+ <poste code="0290310">TRESORERIE SAINT-THEGONNEC</poste>
+ <poste code="0560100">TRESORERIE PLOERMEL</poste>
+ <poste code="0220160">TRESORERIE DE PLOEUC-SUR-LIE</poste>
+ <poste code="0292060">TRESORERIE PLOGASTEL ET PLONEOUR</poste>
+ <poste code="0880330">TRESORERIE PLOMBIERES-LES-BAINS</poste>
+ <poste code="0220390">TRESORERIE PLOUARET</poste>
+ <poste code="0560320">TRESORERIE PLOUAY</poste>
+ <poste code="0220310">TRESORERIE PLOUBALAY</poste>
+ <poste code="0290180">TRESORERIE PLOUDALMEZEAU</poste>
+ <poste code="0290270">TRESORERIE PLOUESCAT</poste>
+ <poste code="0290280">TRESORERIE PLOUIGNEAU-GUERLESQUIN</poste>
+ <poste code="0560330">TRESORERIE PLUVIGNER</poste>
+ <poste code="0330420">TRESORERIE PODENSAC</poste>
+ <poste code="1620030">TRESORERIE DE POINDIMIE</poste>
+ <poste code="1010090">TRESORERIE POINTE-A-PITRE</poste>
+ <poste code="1010180">TRESORERIE POINTE-A-PITRE MUNICIPALE</poste>
+ <poste code="1010100">TRESORERIE POINTE-NOIRE</poste>
+ <poste code="0781140">TRESORERIE POISSY</poste>
+ <poste code="0781000">RECETTE DES FINANCES POISSY VAL DE SEINE</poste>
+ <poste code="0860000">TRESORERIE GENERALE DE LA VIENNE</poste>
+ <poste code="0860020">TRESORERIE BIARD</poste>
+ <poste code="0860150">TRESORERIE POITIERS</poste>
+ <poste code="0860160">TRESORERIE POITIERS MUNICIPALE</poste>
+ <poste code="0860170">TRESORERIE POITIERS ETS HOSP.</poste>
+ <poste code="0860291">TRESORERIE ANNEXE OPAC VILLE DE POITIERS</poste>
+ <poste code="0860800">PAIERIE REGIONALE DE POITOU-CHARENTES</poste>
+ <poste code="0860900">PAIERIE DEPARTEMENTALE DE LA VIENNE</poste>
+ <poste code="0860001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE LA VIENNE</poste>
+ <poste code="0860006">PÔLE NATIONAL P@BLO</poste>
+ <poste code="0800360">TRESORERIE POIX-DE-P-QUEVAUVILLERS</poste>
+ <poste code="0080350">TRESORERIE POIX-TERRON</poste>
+ <poste code="0390190">TRESORERIE POLIGNY</poste>
+ <poste code="0010250">TRESORERIE PONCIN</poste>
+ <poste code="0170330">TRESORERIE PONS-PERIGNAC</poste>
+ <poste code="0590310">TRESORERIE PONT-A-MARCQ</poste>
+ <poste code="0540200">TRESORERIE PONT-A-MOUSSON</poste>
+ <poste code="0620810">TRESORERIE PONT-A-VENDIN</poste>
+ <poste code="0270340">TRESORERIE DE PONT-AUDEMER</poste>
+ <poste code="0292080">TRESORERIE PONT-AVEN</poste>
+ <poste code="0292090">TRESORERIE DE PONT-CROIX</poste>
+ <poste code="0010260">TRESORERIE PONT-D'AIN</poste>
+ <poste code="0381150">TRESORERIE PONT-DE-CHERUY</poste>
+ <poste code="0270350">TRESORERIE PONT-DE-L'ARCHE</poste>
+ <poste code="0250430">TRESORERIE PONT-DE-ROIDE</poste>
+ <poste code="0120140">TRESORERIE DU LEVEZOU</poste>
+ <poste code="0010270">TRESORERIE PONT-DE-VAUX</poste>
+ <poste code="0010280">TRESORERIE PONT-DE-VEYLE</poste>
+ <poste code="0630220">TRESORERIE PONT-DU-CHATEAU</poste>
+ <poste code="0292100">TRESORERIE PONT-L'ABBE</poste>
+ <poste code="0140560">TRESORERIE PONT-L'EVEQUE</poste>
+ <poste code="0600400">TRESORERIE PONT-SAINTE-MAXENCE</poste>
+ <poste code="0300200">TRESORERIE PONT-SAINT-ESPRIT</poste>
+ <poste code="0890490">TRESORERIE PONT-SUR-YONNE</poste>
+ <poste code="0640280">TRESORERIE PONTACQ-SOUMOULOU</poste>
+ <poste code="0210290">TRESORERIE PONTAILLER-SUR-SAONE</poste>
+ <poste code="0250320">TRESORERIE PONTARLIER ET BANLIEUE</poste>
+ <poste code="0250330">TRESORERIE PONTARLIER MUNICIPALE</poste>
+ <poste code="0770280">TRESORERIE ROISSY-PONTAULT-COMBAULT</poste>
+ <poste code="0630420">TRESORERIE PONTAUMUR</poste>
+ <poste code="0380300">TRESORERIE PONTCHARRA</poste>
+ <poste code="0441080">TRESORERIE DE PONTCHATEAU</poste>
+ <poste code="02B0130">TRESORERIE MOROSAGLIA</poste>
+ <poste code="0512070">TRESORERIE DE PONTFAVERGER-BEINE-NAUROY</poste>
+ <poste code="0630430">TRESORERIE PONTGIBAUD</poste>
+ <poste code="0560240">TRESORERIE PONTIVY</poste>
+ <poste code="0950320">TRESORERIE PONTOISE CENTRE HOSP</poste>
+ <poste code="0500310">TRESORERIE PONTORSON</poste>
+ <poste code="0220400">TRESORERIE PONTRIEUX</poste>
+ <poste code="0441170">TRESORERIE PORNIC</poste>
+ <poste code="0132160">TRESORERIE PORT-DE-BOUC</poste>
+ <poste code="0560350">TRESORERIE PORT-LOUIS</poste>
+ <poste code="1010110">TRESORERIE PORT-LOUIS</poste>
+ <poste code="0700350">TRESORERIE PORT-SUR-SAONE</poste>
+ <poste code="0660160">TRESORERIE PORT-VENDRES</poste>
+ <poste code="02A0130">TRESORERIE PORTO-VECCHIO</poste>
+ <poste code="0490200">TRESORERIE POUANCE</poste>
+ <poste code="0580220">TRESORERIE POUGUES-LES-EAUX</poste>
+ <poste code="0250090">TRESORERIE POUILLEY-LES-VIGNES</poste>
+ <poste code="0400270">TRESORERIE POUILLON</poste>
+ <poste code="0210570">TRESORERIE POUILLY-EN-AUXOIS</poste>
+ <poste code="0580230">TRESORERIE POUILLY-SUR-LOIRE</poste>
+ <poste code="0850250">TRESORERIE POUZAUGES</poste>
+ <poste code="0430210">TRESORERIE PRADELLES-LANDOS</poste>
+ <poste code="0660170">TRESORERIE PRADES</poste>
+ <poste code="0790330">TRESORERIE PRAHECQ</poste>
+ <poste code="0660180">TRESORERIE PRATS-DE-MOLLO-LA-PRESTE</poste>
+ <poste code="0520380">TRESORERIE DE PRAUTHOY</poste>
+ <poste code="0470110">TRESORERIE DE PRAYSSAS</poste>
+ <poste code="0530290">TRESORERIE PRE-EN-PAIL</poste>
+ <poste code="0210300">TRESORERIE PRECY-SOUS-THIL</poste>
+ <poste code="0580240">TRESORERIE PREMERY</poste>
+ <poste code="0370300">TRESORERIE PREUILLY-SUR-CLAISE</poste>
+ <poste code="0070000">TRESORERIE GENERALE DE L' ARDECHE</poste>
+ <poste code="0070180">TRESORERIE DE PRIVAS MUNICIPALE</poste>
+ <poste code="0070900">PAIERIE DEPARTEMENTALE DE L' ARDECHE</poste>
+ <poste code="0070420">TRESORERIE DE PRIVAS</poste>
+ <poste code="0770210">TRESORERIE PROVINS</poste>
+ <poste code="0060170">TRESORERIE DE PUGET-THENIERS</poste>
+ <poste code="0610390">TRESORERIE DE PUTANGES-PONT-ECREPIN</poste>
+ <poste code="0920300">TRESORERIE PUTEAUX MUNICIPALE</poste>
+ <poste code="9250000">AGENCE COMPTABLE AGENCE COMPTABLE PARC EQUIPEMENT</poste>
+ <poste code="0571110">TRESORERIE PUTTELANGE-AUX-LACS</poste>
+ <poste code="0460230">TRESORERIE PUY-L'EVEQUE-DURAVEL</poste>
+ <poste code="0260180">TRESORERIE PUY-SAINT-MARTIN-BOURDEAUX</poste>
+ <poste code="0810300">TRESORERIE DE PUYLAURENS</poste>
+ <poste code="0590320">TRESORERIE QUESNOY-SUR-DEULE</poste>
+ <poste code="0560110">TRESORERIE DE QUESTEMBERT</poste>
+ <poste code="0500460">TRESORERIE QUETTEHOU</poste>
+ <poste code="0110320">TRESORERIE DE QUILLAN</poste>
+ <poste code="0292110">TRESORERIE QUIMPER BANLIEUE</poste>
+ <poste code="0292000">RECETTE DES FINANCES QUIMPER</poste>
+ <poste code="0292120">TRESORERIE QUIMPER MUNICIPALE</poste>
+ <poste code="0292160">TRESORERIE QUIMPER CENTRES HOSPITALIERS</poste>
+ <poste code="0292130">TRESORERIE QUIMPERLE</poste>
+ <poste code="0250180">TRESORERIE QUINGEY</poste>
+ <poste code="0220180">TRESORERIE QUINTIN</poste>
+ <poste code="0300210">TRESORERIE QUISSAC-SAUVE</poste>
+ <poste code="0810140">TRESORERIE RABASTENS-SALVAGNAC</poste>
+ <poste code="0650250">TRESORERIE RABASTENS-DE-BIGORRE</poste>
+ <poste code="1180000">TRESORERIE AMBASSADE DE FRANCE AU MAROC</poste>
+ <poste code="0595100">TRESORERIE RAISMES</poste>
+ <poste code="0880340">TRESORERIE RAMBERVILLERS-XAFFEVILLERS</poste>
+ <poste code="0780260">TRESORERIE RAMBOUILLET</poste>
+ <poste code="0880570">TRESORERIE RAON-L'ETAPE</poste>
+ <poste code="0330680">TRESORERIE RAUZAN</poste>
+ <poste code="0810150">TRESORERIE REALMONT</poste>
+ <poste code="0772160">TRESORERIE REBAIS-VILLENEUVE-SUR-BELLOT</poste>
+ <poste code="0210320">TRESORERIE RECEY-SUR-OURCE</poste>
+ <poste code="0350270">TRESORERIE REDON</poste>
+ <poste code="0740200">TRESORERIE REIGNIER</poste>
+ <poste code="0512080">TRESORERIE REIMS 1ERE DIVISION</poste>
+ <poste code="0512090">TRESORERIE REIMS 2EME DIVISION</poste>
+ <poste code="0512100">TRESORERIE REIMS BANLIEUE BOURGOGNE</poste>
+ <poste code="0512110">TRESORERIE DE REIMS MUNICIPALE</poste>
+ <poste code="0512120">TRESORERIE DE REIMS CHR</poste>
+ <poste code="0512001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE REIMS</poste>
+ <poste code="0512000">RECETTE DES FINANCES REIMS</poste>
+ <poste code="0610240">TRESORERIE REMALARD</poste>
+ <poste code="0570390">TRESORERIE REMILLY</poste>
+ <poste code="0880350">TRESORERIE REMIREMONT</poste>
+ <poste code="0300220">TRESORERIE REMOULINS</poste>
+ <poste code="0260390">TRESORERIE REMUZAT-LA MOTTE CHALANCON</poste>
+ <poste code="0422080">TRESORERIE DE RENAISON</poste>
+ <poste code="0350000">TRESORERIE GENERALE D' ILLE-ET-VILAINE</poste>
+ <poste code="0350007">CENTRE REGIONAL DES PENSIONS D' ILLE-ET-VILAINE</poste>
+ <poste code="0350008">CENTRE DE FORMATION DEPARTEMENTAL D' ILLE-ET-VILAINE</poste>
+ <poste code="0350009">DEPARTEMENT INFORMATIQUE ILLE-ET-VILAINE</poste>
+ <poste code="0350290">TRESORERIE RENNES COLOMBIER</poste>
+ <poste code="0350320">TRESORERIE RENNES CH GUILLAUME REGNIER</poste>
+ <poste code="0350330">TRESORERIE RENNES CHU</poste>
+ <poste code="0350800">PAIERIE REGIONALE DE BRETAGNE</poste>
+ <poste code="0350900">PAIERIE DEPARTEMENTALE D' ILLE-ET-VILAINE</poste>
+ <poste code="0350001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE L' ILLE ET VILAINE</poste>
+ <poste code="0350004">CE CENTRE ENCAISSEMENT RENNES</poste>
+ <poste code="0350006">PÔLE NATIONAL DE SOUTIEN AU RESEAU DE RENNES - FPTH</poste>
+ <poste code="0350002">ANNEXE PÔLE INTERRÉGIONAL APUREMENT SPL</poste>
+ <poste code="0350300">TRESORERIE ILLE-ET-VILAINE AMENDES</poste>
+ <poste code="0350310">TRESORERIE RENNES MUNICIPALE</poste>
+ <poste code="0350500">TRESORERIE DU CONTROLE AUTOMATISE</poste>
+ <poste code="0350400">TRESORERIE CENTRE ENCAISSEMENT DES AMENDES</poste>
+ <poste code="0080370">TRESORERIE RENWEZ</poste>
+ <poste code="0120150">TRESORERIE DU SEGALA MERIDIONAL</poste>
+ <poste code="0600530">TRESORERIE RESSONS-SUR-MATZ</poste>
+ <poste code="0080380">TRESORERIE DE RETHEL</poste>
+ <poste code="0350340">TRESORERIE RETIERS</poste>
+ <poste code="0310210">TRESORERIE REVEL</poste>
+ <poste code="0440260">TRESORERIE DE REZE</poste>
+ <poste code="0670370">TRESORERIE RHINAU</poste>
+ <poste code="0831150">TRESORERIE RIANS</poste>
+ <poste code="0680150">TRESORERIE DE RIBEAUVILLE</poste>
+ <poste code="0600540">TRESORERIE RIBECOURT-DRESLINCOURT</poste>
+ <poste code="0020570">TRESORERIE RIBEMONT-ORIGNY</poste>
+ <poste code="0240270">TRESORERIE DE RIBERAC</poste>
+ <poste code="0370310">TRESORERIE RICHELIEU</poste>
+ <poste code="0310600">TRESORERIE RIEUMES</poste>
+ <poste code="0120370">TRESORERIE RIEUPEYROUX</poste>
+ <poste code="0040190">TRESORERIE RIEZ-ET-MOUSTIERS</poste>
+ <poste code="0120160">TRESORERIE DE RIGNAC</poste>
+ <poste code="0690380">TRESORERIE DE RILLIEUX-LA-PAPE</poste>
+ <poste code="0630450">TRESORERIE RIOM</poste>
+ <poste code="0150210">TRESORERIE RIOM-ES-MONTAGNES</poste>
+ <poste code="0700360">TRESORERIE RIOZ-VORAY-SUR-L'OGNON</poste>
+ <poste code="0910290">TRESORERIE RIS-ORANGIS</poste>
+ <poste code="0320290">TRESORERIE RISCLE</poste>
+ <poste code="0420090">TRESORERIE RIVE-DE-GIER</poste>
+ <poste code="0380330">TRESORERIE RIVES</poste>
+ <poste code="0660190">TRESORERIE DE RIVESALTES</poste>
+ <poste code="0422090">TRESORERIE ROANNE</poste>
+ <poste code="0422000">RECETTE DES FINANCES ROANNE</poste>
+ <poste code="0422100">TRESORERIE ROANNE MUNICIPALE</poste>
+ <poste code="0870240">TRESORERIE DE ROCHECHOUART</poste>
+ <poste code="0170190">TRESORERIE DE ROCHEFORT ET BANLIEUE</poste>
+ <poste code="0170200">TRESORERIE DE ROCHEFORT ET BANLIEUE MUNICIPALE</poste>
+ <poste code="0630230">TRESORERIE ROCHEFORT-MONTAGNE</poste>
+ <poste code="0080400">TRESORERIE ROCROI-MAUBERT</poste>
+ <poste code="0120000">TRESORERIE GENERALE DE L' AVEYRON</poste>
+ <poste code="0120170">TRESORERIE RODEZ</poste>
+ <poste code="0120900">PAIERIE DEPARTEMENTALE DE L' AVEYRON</poste>
+ <poste code="0120190">TRESORERIE RODEZ HOPITAL</poste>
+ <poste code="0671150">TRESORERIE ROESCHWOOG</poste>
+ <poste code="0560140">TRESORERIE ROHAN</poste>
+ <poste code="0571120">TRESORERIE ROHRBACH-LES-BITCHE</poste>
+ <poste code="0800570">TRESORERIE ROISEL</poste>
+ <poste code="0520390">TRESORERIE DE ROLAMPONT</poste>
+ <poste code="0930220">TRESORERIE DE ROMAINVILLE MUNICIPALE</poste>
+ <poste code="0260190">TRESORERIE DE ROMANS-BOURG-DE-PEAGE</poste>
+ <poste code="0260200">TRESORERIE DE ROMANS-BOURG DE PEAGE COL. LOC.</poste>
+ <poste code="0570420">TRESORERIE ROMBAS</poste>
+ <poste code="1870000">TRESORERIE AMBASSADE DE FRANCE EN ITALIE</poste>
+ <poste code="0100320">TRESORERIE DE ROMILLY-SUR-SEINE</poste>
+ <poste code="0410170">TRESORERIE ROMORANTIN-LANTHENAY</poste>
+ <poste code="0590330">TRESORERIE DE RONCHIN</poste>
+ <poste code="0060180">TRESORERIE ROQUEBILLIERE</poste>
+ <poste code="0810310">TRESORERIE DE ROQUECOURBE</poste>
+ <poste code="0400140">TRESORERIE ROQUEFORT</poste>
+ <poste code="0300230">TRESORERIE ROQUEMAURE</poste>
+ <poste code="0060190">TRESORERIE ROQUESTERON</poste>
+ <poste code="0130200">TRESORERIE ROQUEVAIRE</poste>
+ <poste code="0800420">TRESORERIE ROSIERES-EN-SANTERRE</poste>
+ <poste code="0292140">TRESORERIE DE ROSPORDEN</poste>
+ <poste code="0220410">TRESORERIE ROSTRENEN</poste>
+ <poste code="0590350">TRESORERIE DE ROUBAIX</poste>
+ <poste code="0590380">TRESORERIE ROUBAIX MUNICIPALE</poste>
+ <poste code="0590390">TRESORERIE ROUBAIX CENTRE HOSPITALIER</poste>
+ <poste code="0760000">TRESORERIE GENERALE DE LA SEINE-MARITIME</poste>
+ <poste code="0760007">CENTRE REGIONAL DES PENSIONS DE LA SEINE-MARITIME</poste>
+ <poste code="0760008">CENTRE DE FORMATION DEPARTEMENTAL DE LA SEINE-MARITIME</poste>
+ <poste code="0760009">DEPARTEMENT INFORMATIQUE DE LA SEINE-MARITIME</poste>
+ <poste code="0760370">TRESORERIE ROUEN MUNICIPALE</poste>
+ <poste code="0760380">TRESORERIE ROUEN CHU</poste>
+ <poste code="0760510">TRESORERIE SEINE-MARITIME AMENDES</poste>
+ <poste code="0760800">PAIERIE REGIONALE DE HAUTE-NORMANDIE</poste>
+ <poste code="0760900">PAIERIE DEPARTEMENTALE DE LA SEINE-MARITIME</poste>
+ <poste code="0760110">TRESORERIE DARNETAL</poste>
+ <poste code="0760350">TRESORERIE DE ROUEN IMPÔTS</poste>
+ <poste code="0760001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE LA SEINE MARITIME</poste>
+ <poste code="0760006">PÔLE NATIONAL DE SOUTIEN AU RESEAU DE ROUEN - RECOUVREMENT AMIABLE</poste>
+ <poste code="0680180">TRESORERIE ROUFFACH</poste>
+ <poste code="0680190">TRESORERIE ROUFFACH CH</poste>
+ <poste code="0250210">TRESORERIE DE ROUGEMONT</poste>
+ <poste code="0160360">TRESORERIE ROUILLAC</poste>
+ <poste code="0381070">TRESORERIE DU ROUSSILLONNAIS</poste>
+ <poste code="0620310">TRESORERIE ROUVROY</poste>
+ <poste code="0170380">TRESORERIE ROYAN</poste>
+ <poste code="0380340">TRESORERIE ROYBON</poste>
+ <poste code="0800430">TRESORERIE ROYE</poste>
+ <poste code="0230150">TRESORERIE DE ROYERE-DE-VASSIVIERE</poste>
+ <poste code="0770230">TRESORERIE ROZAY</poste>
+ <poste code="0020240">TRESORERIE ROZOY-SUR-SERRE-MONTCORNET</poste>
+ <poste code="0800650">TRESORERIE RUE</poste>
+ <poste code="0920310">TRESORERIE RUEIL-MALMAISON</poste>
+ <poste code="0920320">TRESORERIE RUEIL-MALMAISON MUNICIPALE</poste>
+ <poste code="0160370">TRESORERIE RUELLE-SUR-TOUVRE</poste>
+ <poste code="0160380">TRESORERIE RUFFEC-NANTEUIL-EN-VALLEE</poste>
+ <poste code="0270120">TRESORERIE RUGLES</poste>
+ <poste code="0740220">TRESORERIE DE RUMILLY-ALBY</poste>
+ <poste code="0720450">TRESORERIE SABLE-SUR-SARTHE-PRECIGNE</poste>
+ <poste code="0400150">TRESORERIE SABRES</poste>
+ <poste code="0150230">TRESORERIE SAIGNES</poste>
+ <poste code="0660200">TRESORERIE SAILLAGOUSE</poste>
+ <poste code="0595280">TRESORERIE SAINS-DU-NORD</poste>
+ <poste code="0530300">TRESORERIE DE SAINT-AIGNAN-SUR-ROE</poste>
+ <poste code="1040020">TRESORERIE SAINT-ANDRE</poste>
+ <poste code="1040030">TRESORERIE SAINT-BENOIT</poste>
+ <poste code="0480190">TRESORERIE SAINT-CHELY-D'APCHER</poste>
+ <poste code="1040007">CENTRE REGIONAL DES PENSIONS DE LA REUNION</poste>
+ <poste code="1040009">DEPARTEMENT INFORMATIQUE DE LA REUNION</poste>
+ <poste code="1040040">TRESORERIE SAINT-DENIS</poste>
+ <poste code="1040130">TRESORERIE SAINT-DENIS MUNICIPALE</poste>
+ <poste code="1040900">PAIERIE DEPARTEMENTALE DE LA REUNION</poste>
+ <poste code="1040050">TRESORERIE SAINT-JOSEPH</poste>
+ <poste code="1040090">TRESORERIE SAINT-PIERRE</poste>
+ <poste code="1050000">TRESORERIE GENERALE SAINT-PIERRE-ET-MIQUELON</poste>
+ <poste code="0831190">TRESORERIE SAINT-TROPEZ</poste>
+ <poste code="1040800">PAIERIE REGIONALE DE LA REUNION</poste>
+ <poste code="0170360">TRESORERIE DE SAINTES ET BANLIEUE</poste>
+ <poste code="0170370">TRESORERIE DE SAINTES ET BANLIEUE MUNICIPALE</poste>
+ <poste code="0931000">RECETTE DES FINANCES SAINT-DENIS</poste>
+ <poste code="0410210">TRESORERIE SALBRIS</poste>
+ <poste code="0831200">TRESORERIE SALERNES</poste>
+ <poste code="0640300">TRESORERIE SALIES-DE-BEARN</poste>
+ <poste code="0310540">TRESORERIE SALIES-DU-SALAT-ST-MARTORY</poste>
+ <poste code="0390220">TRESORERIE SALINS-LES-BAINS</poste>
+ <poste code="0740260">TRESORERIE SALLANCHES</poste>
+ <poste code="0110370">TRESORERIE SALLES-SUR-L'HERS</poste>
+ <poste code="0131140">TRESORERIE SALON-DE-PROVENCE</poste>
+ <poste code="0740270">TRESORERIE SAMOENS</poste>
+ <poste code="0180320">TRESORERIE DE SANCERGUES</poste>
+ <poste code="0180330">TRESORERIE DE SANCERRE</poste>
+ <poste code="0180340">TRESORERIE SANCOINS</poste>
+ <poste code="0950310">TRESORERIE SANNOIS</poste>
+ <poste code="02A0090">TRESORERIE SANTA-MARIA-SICHE</poste>
+ <poste code="0320330">TRESORERIE SARAMON</poste>
+ <poste code="0951080">TRESORERIE SARCELLES</poste>
+ <poste code="0951000">RECETTE DES FINANCES SARCELLES</poste>
+ <poste code="0240350">TRESORERIE SARLAT-LA-CANEDA</poste>
+ <poste code="0571140">TRESORERIE SARRALBE</poste>
+ <poste code="0671160">TRESORERIE SARRE-UNION</poste>
+ <poste code="0570450">TRESORERIE DE SARREBOURG</poste>
+ <poste code="0571170">TRESORERIE SARREGUEMINES MUNICIPALE</poste>
+ <poste code="0571000">RECETTE DES FINANCES SARREGUEMINES</poste>
+ <poste code="0571160">TRESORERIE DE SARREGUEMINES CENTRE ET CAMPAGNE</poste>
+ <poste code="02A0110">TRESORERIE DE SARTENE-OLMETO</poste>
+ <poste code="0781150">TRESORERIE DE SARTROUVILLE COLLECTIV. LOCALES</poste>
+ <poste code="0560150">TRESORERIE SARZEAU</poste>
+ <poste code="0070290">TRESORERIE DE SATILLIEU</poste>
+ <poste code="0430280">TRESORERIE SAUGUES</poste>
+ <poste code="0170410">TRESORERIE SAUJON</poste>
+ <poste code="0210370">TRESORERIE SAULIEU</poste>
+ <poste code="0490390">TRESORERIE SAUMUR MUNICIPALE</poste>
+ <poste code="0490410">TRESORERIE DE SAUMUR</poste>
+ <poste code="0240550">TRESORERIE SIGOULES ET SAUSSIGNAC</poste>
+ <poste code="0640310">TRESORERIE SAUVETERRE-DE-BEARN</poste>
+ <poste code="0330760">TRESORERIE SAUVETERRE-DE-GUYENNE-PELLEGRUE</poste>
+ <poste code="0630580">TRESORERIE SAUXILLANGES</poste>
+ <poste code="0790380">TRESORERIE SAUZE-VAUSSAIS</poste>
+ <poste code="0260340">TRESORERIE MARSANNE-SAUZET</poste>
+ <poste code="0441150">TRESORERIE SAVENAY</poste>
+ <poste code="0090270">TRESORERIE SAVERDUN-MAZERES</poste>
+ <poste code="0671170">TRESORERIE DE SAVERNE</poste>
+ <poste code="0240360">TRESORERIE DE SAVIGNAC-LES-EGLISES</poste>
+ <poste code="0911140">TRESORERIE SAVIGNY-SUR-ORGE</poste>
+ <poste code="0921110">TRESORERIE DE SCEAUX</poste>
+ <poste code="0921140">TRESORERIE DE SCEAUX MUNICIPALE</poste>
+ <poste code="0700390">TRESORERIE SCEY-SUR-SAONE-ET-SAINT-ALBIN</poste>
+ <poste code="0670450">TRESORERIE STRASBOURG NORD-SCHILTIGHEIM</poste>
+ <poste code="0670440">TRESORERIE SCHILTIGHEIM</poste>
+ <poste code="0670005">CPS CENTRE PRÉLÈVEMENT SERVICE</poste>
+ <poste code="0670460">TRESORERIE SCHIRMECK</poste>
+ <poste code="0590420">TRESORERIE SECLIN</poste>
+ <poste code="0790390">TRESORERIE SECONDIGNY</poste>
+ <poste code="0080450">TRESORERIE DE SEDAN</poste>
+ <poste code="0080440">TRESORERIE DE SEDAN MIRBRITZ</poste>
+ <poste code="0260410">TRESORERIE SEDERON</poste>
+ <poste code="0610260">TRESORERIE DE SEES</poste>
+ <poste code="0160430">TRESORERIE SEGONZAC</poste>
+ <poste code="0490260">TRESORERIE SEGRE</poste>
+ <poste code="0490270">TRESORERIE SEICHES-SUR-LE-LOIR</poste>
+ <poste code="0190160">TRESORERIE SEILHAC</poste>
+ <poste code="0670470">TRESORERIE DE SELESTAT</poste>
+ <poste code="0410220">TRESORERIE SELLES-SUR-CHER</poste>
+ <poste code="0390240">TRESORERIE SELLIERES</poste>
+ <poste code="0410330">TRESORERIE SELOMMES</poste>
+ <poste code="0210410">TRESORERIE SELONGEY</poste>
+ <poste code="0671180">TRESORERIE SELTZ</poste>
+ <poste code="0210420">TRESORERIE SEMUR-EN-AUXOIS</poste>
+ <poste code="0600430">TRESORERIE DE SENLIS</poste>
+ <poste code="0710550">TRESORERIE DE SENNECEY-SAINT-GERMAIN-DU-PLAIN</poste>
+ <poste code="0280390">TRESORERIE SENONCHES</poste>
+ <poste code="0880600">TRESORERIE SENONES</poste>
+ <poste code="0890510">TRESORERIE SENS AGGLOMERATION SENONAISE</poste>
+ <poste code="0890520">TRESORERIE SENS MUNICIPALE</poste>
+ <poste code="0681220">TRESORERIE SEPPOIS-LE-BAS</poste>
+ <poste code="0890530">TRESORERIE SERGINES</poste>
+ <poste code="0600280">TRESORERIE SERIFONTAINE</poste>
+ <poste code="0340450">TRESORERIE SERIGNAN</poste>
+ <poste code="0510180">TRESORERIE SERMAIZE-LES-BAINS</poste>
+ <poste code="0050200">TRESORERIE DE SERRES-ASPRES</poste>
+ <poste code="0070300">TRESORERIE SERRIERES</poste>
+ <poste code="0340290">TRESORERIE SETE</poste>
+ <poste code="0340300">TRESORERIE SETE MUNICIPALE</poste>
+ <poste code="0210590">TRESORERIE SEURRE</poste>
+ <poste code="0120430">TRESORERIE DE SEVERAC-LE-CHATEAU</poste>
+ <poste code="0930290">TRESORERIE DE SEVRAN MUNICIPALE</poste>
+ <poste code="0921120">TRESORERIE DE SEVRES</poste>
+ <poste code="0040230">TRESORERIE SEYNE</poste>
+ <poste code="0740060">TRESORERIE SEYNOD</poste>
+ <poste code="0740280">TRESORERIE SEYSSEL</poste>
+ <poste code="0510410">TRESORERIE DE SEZANNE</poste>
+ <poste code="0570500">TRESORERIE SIERCK-LES-BAINS</poste>
+ <poste code="0681230">TRESORERIE SIERENTZ</poste>
+ <poste code="0110510">TRESORERIE SIGEAN</poste>
+ <poste code="0080470">TRESORERIE SIGNY-L'ABBAYE-RUMIGNY</poste>
+ <poste code="0720490">TRESORERIE DE SILLE-LE-GUILLAUME</poste>
+ <poste code="0593090">TRESORERIE SIN-LE-NOBLE</poste>
+ <poste code="0020270">TRESORERIE SISSONNE</poste>
+ <poste code="0040240">TRESORERIE DE SISTERON-ST-VINCENT-SUR-JABRON</poste>
+ <poste code="0830240">TRESORERIE SIX-FOURS-LES-PLAGES</poste>
+ <poste code="0250470">TRESORERIE SOCHAUX</poste>
+ <poste code="0020480">TRESORERIE SOISSONS</poste>
+ <poste code="0593200">TRESORERIE SOLESMES</poste>
+ <poste code="0830160">TRESORERIE SOLLIES-PONT</poste>
+ <poste code="0595290">TRESORERIE SOLRE-LE-CHATEAU</poste>
+ <poste code="0593100">TRESORERIE SOMAIN</poste>
+ <poste code="0210430">TRESORERIE SOMBERNON</poste>
+ <poste code="0300310">TRESORERIE SOMMIERES</poste>
+ <poste code="0840160">TRESORERIE SORGUES</poste>
+ <poste code="0190170">TRESORERIE SORNAC</poste>
+ <poste code="0060220">TRESORERIE DE SOSPEL</poste>
+ <poste code="0760440">TRESORERIE SOTTEVILLE-LES-ROUEN</poste>
+ <poste code="0460290">TRESORERIE DE SOUILLAC</poste>
+ <poste code="0550410">TRESORERIE DE SOUILLY</poste>
+ <poste code="0330520">TRESORERIE SAINT-VIVIEN-DE-MEDOC</poste>
+ <poste code="0680220">TRESORERIE SOULTZ-HAUT-RHIN</poste>
+ <poste code="0671190">TRESORERIE SOULTZ-SOUS-FORETS</poste>
+ <poste code="0400300">TRESORERIE SOUSTONS</poste>
+ <poste code="0550420">TRESORERIE SPINCOURT</poste>
+ <poste code="0120380">TRESORERIE SAINT-AFFRIQUE</poste>
+ <poste code="0070210">TRESORERIE SAINT-AGREVE</poste>
+ <poste code="0410190">TRESORERIE SAINT-AIGNAN</poste>
+ <poste code="0170340">TRESORERIE SAINT-AIGULIN</poste>
+ <poste code="0480170">TRESORERIE SAINT-ALBAN-SUR-LIMAGNOLE</poste>
+ <poste code="0595120">TRESORERIE SAINT-AMAND-LES-EAUX</poste>
+ <poste code="0410320">TRESORERIE SAINT-AMAND-LONGPRE</poste>
+ <poste code="0180280">TRESORERIE DE SAINT-AMAND-MONTROND</poste>
+ <poste code="0810320">TRESORERIE SAINT-AMANS-SOULT</poste>
+ <poste code="0160390">TRESORERIE SAINT-AMANT-DE-BOIXE</poste>
+ <poste code="0630240">TRESORERIE SAINT-AMANT-TALLENDE</poste>
+ <poste code="0680280">TRESORERIE SAINT-AMARIN</poste>
+ <poste code="0300500">TRESORERIE DE SAINT-AMBROIX</poste>
+ <poste code="0880390">TRESORERIE DE SAINT-AME</poste>
+ <poste code="0132100">TRESORERIE SAINT-ANDIOL</poste>
+ <poste code="0590400">TRESORERIE SAINT-ANDRE</poste>
+ <poste code="0330740">TRESORERIE SAINT-ANDRE-DE-CUBZAC</poste>
+ <poste code="0270130">TRESORERIE SAINT-ANDRE-DE-L'EURE</poste>
+ <poste code="0040200">TRESORERIE SAINT-ANDRE-LES-ALPES</poste>
+ <poste code="0820200">TRESORERIE SAINT-ANTONIN-NOBLE-VAL</poste>
+ <poste code="0780270">TRESORERIE SAINT-ARNOULT-EN-YVELINES</poste>
+ <poste code="0240210">TRESORERIE DE NEUVIC</poste>
+ <poste code="0240290">TRESORERIE SAINT-ASTIER</poste>
+ <poste code="0350350">TRESORERIE SAINT-AUBIN-D'AUBIGNE</poste>
+ <poste code="0760390">TRESORERIE SAINT-AUBIN-LES-ELBEUF</poste>
+ <poste code="0240300">TRESORERIE SAINT-AULAYE-LA-ROCHE-CHALAIS</poste>
+ <poste code="0571130">TRESORERIE SAINT-AVOLD</poste>
+ <poste code="1010120">TRESORERIE DE SAINT-BARTHELEMY</poste>
+ <poste code="0310520">TRESORERIE SAINT-BEAT-CIERP</poste>
+ <poste code="0580260">TRESORERIE SAINT-BENIN-D'AZY</poste>
+ <poste code="0520240">TRESORERIE DE SAINT-BLIN-SEMILLY</poste>
+ <poste code="0050150">TRESORERIE DE SAINT-BONNET-SAINT-FIRMIN</poste>
+ <poste code="0420260">TRESORERIE SAINT-BONNET-LE-CHATEAU</poste>
+ <poste code="0441180">TRESORERIE MINDIN ETS MEDICO-SOCIAUX</poste>
+ <poste code="0220000">TRESORERIE GENERALE DES COTES-D'ARMOR</poste>
+ <poste code="0220100">TRESORERIE SAINT-BRIEUC CENTRE HOSPITALIER</poste>
+ <poste code="0220190">TRESORERIE DE SAINT-BRIEUC LA BAIE</poste>
+ <poste code="0220200">TRESORERIE DE SAINT-BRIEUC BANLIEUE</poste>
+ <poste code="0220210">TRESORERIE SAINT-BRIEUC MUNICIPALE</poste>
+ <poste code="0220900">PAIERIE DEPARTEMENTALE DES COTES-D'ARMOR</poste>
+ <poste code="0220001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DES CÔTES D'ARMOR</poste>
+ <poste code="0720460">TRESORERIE SAINT-CALAIS BESSE</poste>
+ <poste code="0460240">TRESORERIE SAINT-CERE</poste>
+ <poste code="0420100">TRESORERIE SAINT-CHAMOND</poste>
+ <poste code="0300250">TRESORERIE SAINT-CHAPTES</poste>
+ <poste code="0320300">TRESORERIE DE SAINT-CLAR-MIRADOUX</poste>
+ <poste code="0160410">TRESORERIE SAINT-CLAUD</poste>
+ <poste code="0390410">TRESORERIE SAINT-CLAUDE MUN. ET BAN</poste>
+ <poste code="0920330">TRESORERIE SAINT-CLOUD</poste>
+ <poste code="0830040">TRESORERIE SAINT-CYR-SUR-MER</poste>
+ <poste code="1040990">SERVICE COMPTABLE DE LA COLLECTIVITÉ DES TERRES AUSTRALES ANTARCTIQUES FR</poste>
+ <poste code="0931060">TRESORERIE SAINT-DENIS</poste>
+ <poste code="0931070">TRESORERIE SAINT-DENIS MUNICIPALE</poste>
+ <poste code="0931080">TRESORERIE SAINT-DENIS CENTRE HOSPITALIER</poste>
+ <poste code="1040120">TRESORERIE SAINT-DENIS CTRE HOSP. DPT</poste>
+ <poste code="1040000">TRESORERIE GENERALE DE LA REUNION</poste>
+ <poste code="0430240">TRESORERIE SAINT-DIDIER-EN-VELAY</poste>
+ <poste code="0880580">TRESORERIE DE SAINT-DIE CARNOT</poste>
+ <poste code="0880590">TRESORERIE SAINT-DIE MUNICIPALE</poste>
+ <poste code="0520280">TRESORERIE SAINT-DIZIER ETS HOSP. ET OPHLM</poste>
+ <poste code="0520250">TRESORERIE SAINT-DIZIER</poste>
+ <poste code="0260220">TRESORERIE SAINT-DONAT-SUR-L'HERBASSE</poste>
+ <poste code="0380350">TRESORERIE SAINT-EGREVE</poste>
+ <poste code="1030080">TRESORERIE SAINT-ESPRIT</poste>
+ <poste code="0660280">TRESORERIE SAINT-ESTEVE</poste>
+ <poste code="0420120">TRESORERIE SAINT-ETIENNE NORD</poste>
+ <poste code="0420130">TRESORERIE SAINT-ETIENNE SUD EST</poste>
+ <poste code="0420140">TRESORERIE SAINT-ETIENNE SUD OUEST</poste>
+ <poste code="0420150">TRESORERIE SAINT-ETIENNE BANLIEUE</poste>
+ <poste code="0420900">PAIERIE DEPARTEMENTALE DE LA LOIRE</poste>
+ <poste code="0420000">TRESORERIE GENERALE DE LA LOIRE</poste>
+ <poste code="0420160">TRESORERIE SAINT-ETIENNE MUNICIPALE</poste>
+ <poste code="0420170">TRESORERIE SAINT-ETIENNE CHU</poste>
+ <poste code="0640420">TRESORERIE SAINT-ETIENNE-DE-BAIGORRY</poste>
+ <poste code="0440370">TRESORERIE SAINT-ETIENNE-DE-MONTLUC</poste>
+ <poste code="0380360">TRESORERIE SAINT-ETIENNE-DE-SAINT-GEOIRS</poste>
+ <poste code="0060200">TRESORERIE SAINT-ETIENNE-DE-TINEE</poste>
+ <poste code="0770030">TRESORERIE SAINT FARGEAU PONTHIERRY</poste>
+ <poste code="0070230">TRESORERIE DE SAINT-FELICIEN</poste>
+ <poste code="02B0200">TRESORERIE SAINT-FLORENT</poste>
+ <poste code="0490490">TRESORERIE SAINT-FLORENT-LE-VIEIL</poste>
+ <poste code="0180290">TRESORERIE DE SAINT-FLORENT-SUR-CHER</poste>
+ <poste code="0890370">TRESORERIE DE SAINT-FLORENTIN</poste>
+ <poste code="0150250">TRESORERIE SAINT-FLOUR</poste>
+ <poste code="0850150">TRESORERIE SAINT-FULGENT</poste>
+ <poste code="0420270">TRESORERIE SAINT-GALMIER</poste>
+ <poste code="0310530">TRESORERIE SAINT-GAUDENS</poste>
+ <poste code="0420190">TRESORERIE DE SAINT-GENEST-MALIFAUX</poste>
+ <poste code="0120220">TRESORERIE DES DEUX VALLEES</poste>
+ <poste code="0170350">TRESORERIE SAINT-GENIS-DE-SAINTONGE-ST-FORT</poste>
+ <poste code="0690280">TRESORERIE SAINT-GENIS-LAVAL</poste>
+ <poste code="0381220">TRESORERIE SAINT-GEOIRE-EN-VALDAINE</poste>
+ <poste code="0860190">TRESORERIE SAINT-GEORGES-LES-BAILLARGEAUX</poste>
+ <poste code="0490240">TRESORERIE SAINT-GEORGES-SUR-LOIRE</poste>
+ <poste code="0030330">TRESORERIE SAINT-GERMAIN-DES-FOSSES</poste>
+ <poste code="0710530">TRESORERIE SAINT-GERMAIN-DU-BOIS-MERVANS</poste>
+ <poste code="0780280">TRESORERIE SAINT-GERMAIN-EN-LAYE</poste>
+ <poste code="0780110">TRESORERIE SAINT-GERMAIN-POISSY CH</poste>
+ <poste code="0422110">TRESORERIE SAINT-GERMAIN-LAVAL</poste>
+ <poste code="0630270">TRESORERIE SAINT-GERMAIN-LEMBRON</poste>
+ <poste code="0630460">TRESORERIE DE SAINT-GERVAIS-D'AUVERGNE</poste>
+ <poste code="0740230">TRESORERIE SAINT-GERVAIS-LES-BAINS</poste>
+ <poste code="0460260">TRESORERIE DE SAINT-GERY</poste>
+ <poste code="0300270">TRESORERIE SAINT-GILLES</poste>
+ <poste code="0850370">TRESORERIE SAINT-GILLES-CROIX-DE-VIE</poste>
+ <poste code="0090160">TRESORERIE SAINT-GIRONS</poste>
+ <poste code="0440170">TRESORERIE SAINT-HERBLAIN</poste>
+ <poste code="0110340">TRESORERIE SAINT-HILAIRE</poste>
+ <poste code="0500320">TRESORERIE SAINT-HILAIRE - ISIGNY</poste>
+ <poste code="0250450">TRESORERIE SAINT-HIPPOLYTE</poste>
+ <poste code="0300280">TRESORERIE SAINT-HIPPOLYTE-DU-FORT</poste>
+ <poste code="0500330">TRESORERIE SAINT-JAMES</poste>
+ <poste code="0170120">TRESORERIE SAINT-JEAN-D'ANGELY</poste>
+ <poste code="0740070">TRESORERIE LE BIOT</poste>
+ <poste code="0381090">TRESORERIE SAINT-JEAN-DE-BOURNAY</poste>
+ <poste code="0450250">TRESORERIE ST-JEAN-DE-BRAYE</poste>
+ <poste code="0500170">TRESORERIE SAINT-JEAN-DE-DAYE</poste>
+ <poste code="0210580">TRESORERIE SAINT-JEAN-DE-LOSNE</poste>
+ <poste code="0640430">TRESORERIE SAINT-JEAN-DE-LUZ</poste>
+ <poste code="0730320">TRESORERIE SAINT-JEAN-DE-MAURIENNE</poste>
+ <poste code="0850380">TRESORERIE SAINT-JEAN-DE-MONTS</poste>
+ <poste code="0860360">TRESORERIE SAINT-JEAN-DE-SAUVES</poste>
+ <poste code="0300510">TRESORERIE SAINT-JEAN-DU-GARD-ST ANDRE</poste>
+ <poste code="0260230">TRESORERIE SAINT-JEAN-EN-ROYANS</poste>
+ <poste code="0640440">TRESORERIE SAINT-JEAN-PIED-DE-PORT</poste>
+ <poste code="0420290">TRESORERIE SAINT-JEAN-SOLEYMIEUX</poste>
+ <poste code="0050180">TRESORERIE SAINT-JEAN-SAINT-NICOLAS</poste>
+ <poste code="0740240">TRESORERIE SAINT-JEOIRE</poste>
+ <poste code="0430250">TRESORERIE SAINT-JULIEN-CHAPTEUIL</poste>
+ <poste code="0740250">TRESORERIE SAINT-JULIEN-EN-GENEVOIS</poste>
+ <poste code="0860200">TRESORERIE SAINT-JULIEN-L'ARS</poste>
+ <poste code="0870260">TRESORERIE SAINT-JUNIEN</poste>
+ <poste code="0600550">TRESORERIE SAINT-JUST-EN-CHAUSSEE</poste>
+ <poste code="0420300">TRESORERIE SAINT-JUST-SAINT-RAMBERT</poste>
+ <poste code="0690290">TRESORERIE SAINT-LAURENT-DE-CHAMOUSSET</poste>
+ <poste code="0660210">TRESORERIE SAINT-LAURENT-DE-LA-SALANQUE</poste>
+ <poste code="0650260">TRESORERIE SAINT-LAURENT-DE-NESTE</poste>
+ <poste code="1020030">TRESORERIE SAINT-LAURENT-DU-MARONI</poste>
+ <poste code="0380390">TRESORERIE SAINT-LAURENT-DU-PONT</poste>
+ <poste code="0061170">TRESORERIE SAINT-LAURENT DU VAR</poste>
+ <poste code="0010310">TRESORERIE SAINT-LAURENT-SUR-SAONE</poste>
+ <poste code="0870280">TRESORERIE SAINT-LEONARD-DE-NOBLAT</poste>
+ <poste code="1040060">TRESORERIE SAINT-LEU</poste>
+ <poste code="0600410">TRESORERIE SAINT-LEU-D'ESSERENT</poste>
+ <poste code="0500000">TRESORERIE GENERALE DE LA MANCHE</poste>
+ <poste code="0500180">TRESORERIE SAINT-LO-CANISY</poste>
+ <poste code="0500900">PAIERIE DEPARTEMENTALE DE LA MANCHE</poste>
+ <poste code="0330480">TRESORERIE SAINT-LOUBES</poste>
+ <poste code="0681200">TRESORERIE SAINT-LOUIS</poste>
+ <poste code="1040070">TRESORERIE SAINT-LOUIS</poste>
+ <poste code="0700370">TRESORERIE SAINT-LOUP-CONFLANS</poste>
+ <poste code="0310620">TRESORERIE SAINT-LYS</poste>
+ <poste code="0790360">TRESORERIE SAINT-MAIXENT L'ECOLE</poste>
+ <poste code="0350490">TRESORERIE SAINT MALO</poste>
+ <poste code="0350470">TRESORERIE DE SAINT-MALO MUNICIPALE</poste>
+ <poste code="0150260">TRESORERIE SAINT-MAMET-LA-SALVETAT</poste>
+ <poste code="0380400">TRESORERIE SAINT-MARCELLIN</poste>
+ <poste code="1010140">TRESORERIE DE SAINT-MARTIN</poste>
+ <poste code="0180300">TRESORERIE SAINT-MARTIN-D'AUXIGNY</poste>
+ <poste code="0380560">TRESORERIE SAINT-MARTIN-D'HERES</poste>
+ <poste code="0170130">TRESORERIE SAINT-MARTIN-DE-RE</poste>
+ <poste code="0400280">TRESORERIE SAINT-MARTIN-DE-SEIGNANX</poste>
+ <poste code="0150270">TRESORERIE SAINT-MARTIN-VALMEROUX</poste>
+ <poste code="0490250">TRESORERIE SAINT-MATHURIN-SUR-LOIRE</poste>
+ <poste code="0941080">TRESORERIE SAINT-MAUR-DES-FOSSES</poste>
+ <poste code="0941090">TRESORERIE SAINT-MAUR-DES-FOSSES MUNICIPALE</poste>
+ <poste code="0940340">TRESORERIE SAINT-MAURICE ETS HOSPITALIERS</poste>
+ <poste code="9940000">RECETTE DES FINANCES COMPTABLE SPÉCIALISÉ DU DOMAINE</poste>
+ <poste code="9930000">DIRECTION NATIONALE DES INTERVENTIONS DOMANIALES</poste>
+ <poste code="0830130">TRESORERIE SAINT-MAXIMIN-LA-SAINTE-BAUME</poste>
+ <poste code="0330620">TRESORERIE SAINT-MEDARD-EN-JALLES</poste>
+ <poste code="0350380">TRESORERIE SAINT-MEEN-LE-GRAND</poste>
+ <poste code="0160040">TRESORERIE ANGOULEME CENTRE HOSPITALIER</poste>
+ <poste code="0730330">TRESORERIE SAINT-MICHEL-DE-MAURIENNE</poste>
+ <poste code="0550230">TRESORERIE DE SAINT-MIHIEL</poste>
+ <poste code="0441130">TRESORERIE SAINT-NAZAIRE MUNICIPALE</poste>
+ <poste code="0441160">TRESORERIE SAINT-NAZAIRE ETAB.HOSPITALIERS</poste>
+ <poste code="0441000">RECETTE DES FINANCES SAINT-NAZAIRE</poste>
+ <poste code="0441110">TRESORERIE DE SAINT-NAZAIRE</poste>
+ <poste code="0820210">TRESORERIE SAINT-NICOLAS-DE-LA-GRAVE</poste>
+ <poste code="0540230">TRESORERIE SAINT-NICOLAS-DE-PORT</poste>
+ <poste code="0220420">TRESORERIE SAINT-NICOLAS-DU-PELEM</poste>
+ <poste code="0622320">TRESORERIE DE SAINT-OMER</poste>
+ <poste code="0931090">TRESORERIE SAINT-OUEN</poste>
+ <poste code="0931100">TRESORERIE SAINT-OUEN MUNICIPALE</poste>
+ <poste code="0950220">TRESORERIE SAINT-OUEN-L'AUMONE</poste>
+ <poste code="0640450">TRESORERIE SAINT-PALAIS</poste>
+ <poste code="0720080">TRESORERIE SAINT-PATERNE</poste>
+ <poste code="1040150">TRESORERIE SAINT PAUL MUNICIPALE HOPITAUX</poste>
+ <poste code="0810330">TRESORERIE SAINT-PAUL-CAP-DE-JOUX</poste>
+ <poste code="1040080">TRESORERIE SAINT-PAUL</poste>
+ <poste code="0660220">TRESORERIE SAINT-PAUL-DE-FENOUILLET</poste>
+ <poste code="0400220">TRESORERIE DE SAINT-PAUL-LES-DAX</poste>
+ <poste code="0260400">TRESORERIE SAINT-PAUL-TROIS-CHATEAUX-SUZE</poste>
+ <poste code="0430270">TRESORERIE SAINT-PAULIEN</poste>
+ <poste code="0070270">TRESORERIE SAINT-PERAY</poste>
+ <poste code="0440300">TRESORERIE DE SAINT-PHILBERT-DE-GRAND-LIEU</poste>
+ <poste code="1030090">TRESORERIE SAINT-PIERRE</poste>
+ <poste code="1040140">TRESORERIE SAINT-PIERRE GHSR</poste>
+ <poste code="0730340">TRESORERIE SAINT-PIERRE-D'ALBIGNY</poste>
+ <poste code="0170220">TRESORERIE SAINT-PIERRE-D'OLERON</poste>
+ <poste code="0240330">TRESORERIE DE SAINT-PIERRE-DE-CHIGNAC</poste>
+ <poste code="0370400">TRESORERIE DE TOURS BANLIEUE SUD</poste>
+ <poste code="0500480">TRESORERIE SAINT-PIERRE-EGLISE</poste>
+ <poste code="0580270">TRESORERIE SAINT-PIERRE-LE-MOUTIER</poste>
+ <poste code="0140580">TRESORERIE DE SAINT-PIERRE-SUR-DIVES</poste>
+ <poste code="0070280">TRESORERIE SAINT-PIERREVILLE</poste>
+ <poste code="0290300">TRESORERIE SAINT-POL-DE-LEON</poste>
+ <poste code="0594120">TRESORERIE SAINT-POL-SUR-MER</poste>
+ <poste code="0620430">TRESORERIE DE SAINT-POL-MONCHEAUX</poste>
+ <poste code="0340430">TRESORERIE DE SAINT-PONS-DE-THOMIERES</poste>
+ <poste code="0170400">TRESORERIE ST-PORCHAIRE-PT-L'ABBE-D'ARNOULT</poste>
+ <poste code="0030110">TRESORERIE SAINT-POURCAIN-SUR-SIOULE</poste>
+ <poste code="0690390">TRESORERIE DE SAINT-PRIEST</poste>
+ <poste code="0190150">TRESORERIE SAINT-PRIVAT</poste>
+ <poste code="0300410">TRESORERIE DE PAYS D'ALES</poste>
+ <poste code="0020580">TRESORERIE DE SAINT-QUENTIN</poste>
+ <poste code="0020600">TRESORERIE DE SAINT-QUENTIN MUNICIPALE</poste>
+ <poste code="0020610">TRESORERIE SAINT-QUENTIN CENTRE HOSPITALIER</poste>
+ <poste code="0260010">TRESORERIE ALBON</poste>
+ <poste code="0010320">TRESORERIE SAINT-RAMBERT-EN-BUGEY</poste>
+ <poste code="0831160">TRESORERIE SAINT-RAPHAEL</poste>
+ <poste code="0710490">TRESORERIE CHALON-SUR-SAONE PERIPHERIE</poste>
+ <poste code="0132110">TRESORERIE SAINT-REMY-DE-PROVENCE</poste>
+ <poste code="0630550">TRESORERIE SAINT-REMY-SUR-DUROLLE</poste>
+ <poste code="0290190">TRESORERIE SAINT-RENAN</poste>
+ <poste code="0762180">TRESORERIE SAINT-ROMAIN-DE-COLBOSC</poste>
+ <poste code="0120400">TRESORERIE SAINT-ROME-DE-TARN-BROQUIES</poste>
+ <poste code="0580280">TRESORERIE SAINT-SAULGE</poste>
+ <poste code="0890380">TRESORERIE ST-SAUVEUR-EN-PUISAYE-LAINSECQ</poste>
+ <poste code="0060210">TRESORERIE SAINT-SAUVEUR-SUR-TINEE</poste>
+ <poste code="0330750">TRESORERIE SAINT-SAVIN</poste>
+ <poste code="0860210">TRESORERIE SAINT-SAVIN</poste>
+ <poste code="0170230">TRESORERIE SAINT-SAVINIEN</poste>
+ <poste code="0210360">TRESORERIE SAINT-SEINE-L'ABBAYE</poste>
+ <poste code="0140350">TRESORERIE SAINT-SEVER-CALVADOS</poste>
+ <poste code="0400160">TRESORERIE SAINT-SEVER</poste>
+ <poste code="0020620">TRESORERIE SAINT-SIMON-FLAVY</poste>
+ <poste code="0810340">TRESORERIE DE SAINT-SULPICE</poste>
+ <poste code="0690400">TRESORERIE DE SAINT-SYMPHORIEN-D'OZON</poste>
+ <poste code="0422150">TRESORERIE SAINT-SYMPHORIEN-DE-LAY</poste>
+ <poste code="0690300">TRESORERIE SAINT-SYMPHORIEN-SUR-COISE</poste>
+ <poste code="0010330">TRESORERIE SAINT-TRIVIER-DE-COURTES</poste>
+ <poste code="0010340">TRESORERIE SAINT-TRIVIER-SUR-MOIGNANS</poste>
+ <poste code="0760740">TRESORERIE SAINT-VALERY-EN-CAUX</poste>
+ <poste code="0800660">TRESORERIE DE SAINT-VALERY-SUR-SOMME</poste>
+ <poste code="0260240">TRESORERIE SAINT-VALLIER</poste>
+ <poste code="0790370">TRESORERIE SAINT-VARENT</poste>
+ <poste code="0230160">TRESORERIE SAINT-VAURY</poste>
+ <poste code="0620820">TRESORERIE SAINT-VENANT</poste>
+ <poste code="0400290">TRESORERIE SAINT-VINCENT-DE-TYROSSE</poste>
+ <poste code="0250240">TRESORERIE SAINT-VIT-BOUSSIERES</poste>
+ <poste code="0870320">TRESORERIE DE SAINT-YRIEIX-LA-PERCHE</poste>
+ <poste code="0931110">TRESORERIE STAINS</poste>
+ <poste code="0240540">TRESORERIE SAINTE-ALVERE</poste>
+ <poste code="1010150">TRESORERIE SAINTE-ANNE</poste>
+ <poste code="0090150">TRESORERIE SAINTE-CROIX-VOLVESTRE</poste>
+ <poste code="0430020">TRESORERIE AUZON-SAINTE-FLORINE</poste>
+ <poste code="0330690">TRESORERIE SAINTE-FOY-LA-GRANDE</poste>
+ <poste code="0911130">TRESORERIE SAINTE-GENEVIEVE-DES-BOIS</poste>
+ <poste code="0120210">TRESORERIE DE L' ARGENCE ET DU CARLADEZ</poste>
+ <poste code="0850260">TRESORERIE SAINTE-HERMINE</poste>
+ <poste code="0470290">TRESORERIE SAINTE-LIVRADE-SUR-LOT</poste>
+ <poste code="0680210">TRESORERIE SAINTE-MARIE-AUX-MINES</poste>
+ <poste code="0370330">TRESORERIE SAINTE-MAURE-DE-TOURAINE</poste>
+ <poste code="0510160">TRESORERIE STE-MENEHOULD-VILLE-SUR-TOURBE</poste>
+ <poste code="0500470">TRESORERIE SAINTE-MERE-EGLISE</poste>
+ <poste code="1010160">TRESORERIE SAINTE-ROSE</poste>
+ <poste code="0250380">TRESORERIE MONTBELIARD ET DES DEUX VALLEES</poste>
+ <poste code="1040100">TRESORERIE SAINTE-SUZANNE</poste>
+ <poste code="0594200">TRESORERIE STEENVOORDE</poste>
+ <poste code="0550430">TRESORERIE STENAY</poste>
+ <poste code="0670000">TRESORERIE GENERALE DU BAS-RHIN</poste>
+ <poste code="0670007">CENTRE REGIONAL DES PENSIONS DU BAS-RHIN</poste>
+ <poste code="0670008">CENTRE DE FORMATION DEPARTEMENTAL DU BAS-RHIN</poste>
+ <poste code="0670009">DEPARTEMENT INFORMATIQUE DU BAS-RHIN</poste>
+ <poste code="0670530">TRESORERIE STRASBOURG KLEBER</poste>
+ <poste code="0670540">TRESORERIE STRASBOURG EST</poste>
+ <poste code="0670570">TRESORERIE STRASBOURG AMENDES</poste>
+ <poste code="0670600">TRESORERIE STRASBOURG HOP. UNIVERSITAIRES</poste>
+ <poste code="0670900">PAIERIE DEPARTEMENTALE DU BAS-RHIN</poste>
+ <poste code="0670580">RECETTE DES FINANCES STRASBOURG MUNICIPALE ET COM.URB</poste>
+ <poste code="0670800">PAIERIE REGIONALE D'ALSACE</poste>
+ <poste code="0510210">TRESORERIE SUIPPES</poste>
+ <poste code="0450300">TRESORERIE SULLY-SUR-LOIRE</poste>
+ <poste code="0920360">TRESORERIE DE SURESNES</poste>
+ <poste code="0170140">TRESORERIE SURGERES</poste>
+ <poste code="0260250">TRESORERIE TAIN-L'HERMITAGE</poste>
+ <poste code="0330180">TRESORERIE BORDEAUX CHU</poste>
+ <poste code="0330540">TRESORERIE TALENCE</poste>
+ <poste code="0050210">TRESORERIE DE TALLARD</poste>
+ <poste code="0740290">TRESORERIE TANINGES</poste>
+ <poste code="0580290">TRESORERIE TANNAY</poste>
+ <poste code="0690530">TRESORERIE TARARE</poste>
+ <poste code="0132120">TRESORERIE TARASCON</poste>
+ <poste code="0090200">TRESORERIE TARASCON-SUR-ARIEGE</poste>
+ <poste code="0650000">TRESORERIE GENERALE DES HAUTES-PYRENEES</poste>
+ <poste code="0650240">TRESORERIE TARBES ADOUR ECHEZ</poste>
+ <poste code="0650280">TRESORERIE DE TARBES</poste>
+ <poste code="0650290">TRESORERIE TARBES MUNICIPALE</poste>
+ <poste code="0650900">PAIERIE DEPARTEMENTALE DES HAUTES-PYRENEES</poste>
+ <poste code="0640330">TRESORERIE TARDETS-SORHOLUS</poste>
+ <poste code="0400310">TRESORERIE TARTAS</poste>
+ <poste code="0690310">TRESORERIE DE TASSIN-LA-DEMI-LUNE</poste>
+ <poste code="0590440">TRESORERIE DE TEMPLEUVE-LA-PÉVÈLE</poste>
+ <poste code="0430310">TRESORERIE TENCE</poste>
+ <poste code="0060230">TRESORERIE DE TENDE</poste>
+ <poste code="0020350">TRESORERIE TERGNIER</poste>
+ <poste code="0240380">TRESORERIE DE THENON</poste>
+ <poste code="0240370">TRESORERIE TERRASSON-LA-BACHELLERIE</poste>
+ <poste code="0520400">TRESORERIE TERRE-NATALE</poste>
+ <poste code="0680290">TRESORERIE THANN</poste>
+ <poste code="0880400">TRESORERIE THAON-LES-VOSGES</poste>
+ <poste code="0622330">TRESORERIE DE THEROUANNE</poste>
+ <poste code="0640340">TRESORERIE DE THEZE</poste>
+ <poste code="0540240">TRESORERIE DE THIAUCOURT-REGNIEVILLE</poste>
+ <poste code="0270400">TRESORERIE THIBERVILLE</poste>
+ <poste code="0630560">TRESORERIE THIERS</poste>
+ <poste code="0570640">TRESORERIE THIONVILLE-TROIS-FRONTIERES</poste>
+ <poste code="0570540">TRESORERIE THIONVILLE MUNICIPALE</poste>
+ <poste code="0570611">TRESORERIE DE METZ-THIONVILLE ETS.HOSP.BEL AIR</poste>
+ <poste code="0240390">TRESORERIE DE THIVIERS</poste>
+ <poste code="0690540">TRESORERIE DE THIZY-COURS-LA-VILLE</poste>
+ <poste code="0010370">TRESORERIE THOISSEY</poste>
+ <poste code="0740300">TRESORERIE THONES</poste>
+ <poste code="0740310">TRESORERIE THONON-LES-BAINS-LULLIN</poste>
+ <poste code="0490280">TRESORERIE DE THOUARCE</poste>
+ <poste code="0790410">TRESORERIE THOUARS</poste>
+ <poste code="0600460">TRESORERIE THOUROTTE</poste>
+ <poste code="0070320">TRESORERIE DE THUEYTS</poste>
+ <poste code="0660240">TRESORERIE THUIR</poste>
+ <poste code="0140360">TRESORERIE THURY-HARCOURT</poste>
+ <poste code="0490290">TRESORERIE TIERCE</poste>
+ <poste code="0140370">TRESORERIE TILLY-SUR-SEULLES</poste>
+ <poste code="0610400">TRESORERIE TINCHEBRAY</poste>
+ <poste code="0350480">TRESORERIE TINTENIAC</poste>
+ <poste code="0240400">TRESORERIE DE TOCANE-SAINT-APRE-LISLE</poste>
+ <poste code="0170240">TRESORERIE TONNAY-BOUTONNE</poste>
+ <poste code="0170250">TRESORERIE TONNAY-CHARENTE</poste>
+ <poste code="0470310">TRESORERIE TONNEINS</poste>
+ <poste code="0890410">TRESORERIE TONNERRE</poste>
+ <poste code="0500230">TRESORERIE TORIGNI-TESSY</poste>
+ <poste code="0760650">TRESORERIE DE TOTES</poste>
+ <poste code="0890420">TRESORERIE TOUCY</poste>
+ <poste code="0540070">TRESORERIE DE TOUL</poste>
+ <poste code="0540250">TRESORERIE DE TOUL-COLLECTIVITES</poste>
+ <poste code="0830000">TRESORERIE GENERALE DU VAR</poste>
+ <poste code="0830180">TRESORERIE TOULON EST</poste>
+ <poste code="0830190">TRESORERIE TOULON CENTRE ET OUEST</poste>
+ <poste code="0830200">TRESORERIE TOULON MUNICIPALE</poste>
+ <poste code="0830230">TRESORERIE VAR AMENDES</poste>
+ <poste code="0830001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DU VAR</poste>
+ <poste code="0830900">PAIERIE DEPARTEMENTALE DU VAR</poste>
+ <poste code="0310000">TRESORERIE GENERALE DE LA HAUTE-GARONNE</poste>
+ <poste code="0310007">CENTRE REGIONAL DES PENSIONS DE LA HAUTE-GARONNE</poste>
+ <poste code="0310008">CENTRE DE FORMATION DEPARTEMENTAL DE LA HAUTE-GARONNE</poste>
+ <poste code="0310009">DEPARTEMENT INFORMATIQUE DE LA HAUTE-GARONNE</poste>
+ <poste code="0310270">TRESORERIE DE TOULOUSE CITE</poste>
+ <poste code="0310280">TRESORERIE TOULOUSE-COTE-PAVEE</poste>
+ <poste code="0310290">TRESORERIE TOULOUSE BASSO CAMBO</poste>
+ <poste code="0310340">TRESORERIE TOULOUSE AMENDES</poste>
+ <poste code="0310350">RECETTE DES FINANCES TOULOUSE MUNICIPALE</poste>
+ <poste code="0310360">TRESORERIE TOULOUSE CHU</poste>
+ <poste code="0310370">TRESORERIE HOPITAL SPEC. MARCHANT-TOULOUSE</poste>
+ <poste code="0310800">PAIERIE REGIONALE DE MIDI-PYRENEES</poste>
+ <poste code="0310006">PÔLE NATIONAL DE SOUTIEN AU RESEAU DOMAINE DES RESSOURCES HUMAINES</poste>
+ <poste code="0310900">PAIERIE DEPARTEMENTALE DE LA HAUTE-GARONNE</poste>
+ <poste code="0310910">PÔLE NATIONAL DE LA REDEVANCE AUDIOVISUELLE DE TOULOUSE</poste>
+ <poste code="0310005">CENTRE AMENDE SERVICE DE TOULOUSE</poste>
+ <poste code="0590470">TRESORERIE DE TOURCOING MUNICIPALE</poste>
+ <poste code="0590480">TRESORERIE TOURCOING CENTRE HOSPITALIER</poste>
+ <poste code="0590450">TRESORERIE TOURCOING</poste>
+ <poste code="0500490">TRESORERIE TOURLAVILLE</poste>
+ <poste code="0770240">TRESORERIE TOURNAN-EN-BRIE</poste>
+ <poste code="0650300">TRESORERIE TOURNAY</poste>
+ <poste code="0470320">TRESORERIE TOURNON-D'AGENAIS</poste>
+ <poste code="0070330">TRESORERIE TOURNON-SUR-RHONE</poste>
+ <poste code="0710350">TRESORERIE TOURNUS</poste>
+ <poste code="0370000">TRESORERIE GENERALE EN INDRE-ET-LOIRE</poste>
+ <poste code="0370007">CENTRE REGIONAL DES PENSIONS D' INDRE-ET-LOIRE</poste>
+ <poste code="0370008">CENTRE DE FORMATION DEPARTEMENTAL D' INDRE-ET-LOIRE</poste>
+ <poste code="0370009">DEPARTEMENT INFORMATIQUE D' INDRE-ET-LOIRE</poste>
+ <poste code="0370370">TRESORERIE DE TOURS</poste>
+ <poste code="0370410">TRESORERIE DE TOURS MUNICIPALE</poste>
+ <poste code="0370420">TRESORERIE TOURS CHU</poste>
+ <poste code="0370440">TRESORERIE OPAC D'INDRE-ET-LOIRE</poste>
+ <poste code="0370900">PAIERIE DEPARTEMENTALE D' INDRE-ET-LOIRE</poste>
+ <poste code="0370001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DE L' INDRE ET LOIRE</poste>
+ <poste code="0370450">TRESORERIE DE L' OPAC DE TOURS</poste>
+ <poste code="0710360">TRESORERIE DE TRAMAYES</poste>
+ <poste code="0780430">TRESORERIE TRAPPES</poste>
+ <poste code="0220430">TRESORERIE DE TREGUIER-LA ROCHE-DERRIEN</poste>
+ <poste code="0190180">TRESORERIE TREIGNAC</poste>
+ <poste code="0490300">TRESORERIE DE TRELAZE</poste>
+ <poste code="0595300">TRESORERIE TRELON</poste>
+ <poste code="0930370">TRESORERIE TREMBLAY-EN-FRANCE</poste>
+ <poste code="0131150">TRESORERIE TRETS</poste>
+ <poste code="0140380">TRESORERIE TREVIERES</poste>
+ <poste code="0010390">TRESORERIE TREVOUX</poste>
+ <poste code="0650310">TRESORERIE TRIE-SUR-BAISE</poste>
+ <poste code="0781160">TRESORERIE TRIEL-SUR-SEINE</poste>
+ <poste code="0595110">TRESORERIE TRITH-SAINT-LEGER</poste>
+ <poste code="0140390">TRESORERIE TROARN-ARGENCES</poste>
+ <poste code="0140590">TRESORERIE TROUVILLE-SUR-MER-DEAUVILLE</poste>
+ <poste code="0100360">TRESORERIE DE TROYES MUNICIPALE</poste>
+ <poste code="0100350">TRESORERIE DE TROYES</poste>
+ <poste code="0100000">TRESORERIE GENERALE DE L' AUBE</poste>
+ <poste code="0100280">TRESORERIE DE PONT-SAINTE-MARIE</poste>
+ <poste code="0100330">TRESORERIE DE SAINTE-SAVINE</poste>
+ <poste code="0100370">TRESORERIE DE TROYES CENTRE HOSPITALIER</poste>
+ <poste code="0100900">PAIERIE DEPARTEMENTALE DE L' AUBE</poste>
+ <poste code="0670620">TRESORERIE DE TRUCHTERSHEIM</poste>
+ <poste code="0110520">TRESORERIE TUCHAN</poste>
+ <poste code="0190000">TRESORERIE GENERALE DE LA CORREZE</poste>
+ <poste code="0190190">TRESORERIE TULLE</poste>
+ <poste code="0759001">AGENCE COMPTABLE DE LA RIEP - ANNEXE TULLE</poste>
+ <poste code="0190900">PAIERIE DEPARTEMENTALE DE LA CORREZE</poste>
+ <poste code="0380460">TRESORERIE TULLINS</poste>
+ <poste code="1190000">TRESORERIE AMBASSADE DE FRANCE EN TUNISIE</poste>
+ <poste code="0730350">TRESORERIE UGINE</poste>
+ <poste code="0190200">TRESORERIE USSEL</poste>
+ <poste code="0640460">TRESORERIE USTARITZ</poste>
+ <poste code="1610010">TRESORERIE DES ILES-SOUS-LE-VENT</poste>
+ <poste code="1630000">PAIERIE DES ILES WALLIS ET FUTUNA</poste>
+ <poste code="0190210">TRESORERIE UZERCHE</poste>
+ <poste code="0300350">TRESORERIE UZES</poste>
+ <poste code="0810350">TRESORERIE VABRE</poste>
+ <poste code="0020490">TRESORERIE DE VAILLY-SUR-AISNE-CHASSEMY</poste>
+ <poste code="0840270">TRESORERIE DE VAISON-LA-ROMAINE</poste>
+ <poste code="0520360">TRESORERIE LE VAL-DE-MEUSE</poste>
+ <poste code="0270410">TRESORERIE VAL-DE-REUIL</poste>
+ <poste code="0380470">TRESORERIE VALBONNAIS</poste>
+ <poste code="0250250">TRESORERIE VALDAHON</poste>
+ <poste code="0900100">TRESORERIE VALDOIE</poste>
+ <poste code="0360290">TRESORERIE DE VALENCAY</poste>
+ <poste code="0260000">TRESORERIE GENERALE DE LA DROME</poste>
+ <poste code="0260260">TRESORERIE VALENCE</poste>
+ <poste code="0260270">TRESORERIE VALENCE MUNICIPALE</poste>
+ <poste code="0260280">TRESORERIE VALENCE HOPITAUX</poste>
+ <poste code="0260290">TRESORERIE VALENCE OPHLM</poste>
+ <poste code="0260900">PAIERIE DEPARTEMENTALE DE LA DROME</poste>
+ <poste code="0820230">TRESORERIE VALENCE-D'AGEN</poste>
+ <poste code="0810170">TRESORERIE VALENCE-D'ALBIGEOIS</poste>
+ <poste code="0320360">TRESORERIE VALENCE-SUR-BAISE</poste>
+ <poste code="0595000">RECETTE DES FINANCES VALENCIENNES</poste>
+ <poste code="0595090">TRESORERIE ONNAING</poste>
+ <poste code="0595160">TRESORERIE VALENCIENNES CENTRE HOSPITALIER</poste>
+ <poste code="0595140">TRESORERIE DE VALENCIENNES</poste>
+ <poste code="0061120">TRESORERIE VALLAURIS</poste>
+ <poste code="0300360">TRESORERIE VALLERAUGUE</poste>
+ <poste code="0070350">TRESORERIE VALLON-PONT-D'ARC</poste>
+ <poste code="0762150">TRESORERIE VALMONT</poste>
+ <poste code="0500500">TRESORERIE VALOGNES</poste>
+ <poste code="0840280">TRESORERIE VALREAS</poste>
+ <poste code="0070360">TRESORERIE VALS-LES-BAINS</poste>
+ <poste code="0540280">TRESORERIE VANDOEUVRE-LES-NANCY</poste>
+ <poste code="0560000">TRESORERIE GENERALE DU MORBIHAN</poste>
+ <poste code="0560170">TRESORERIE VANNES-CLISSON</poste>
+ <poste code="0560180">TRESORERIE VANNES-MENIMUR</poste>
+ <poste code="0560190">TRESORERIE VANNES MUNICIPALE</poste>
+ <poste code="0560900">PAIERIE DEPARTEMENTALE DU MORBIHAN</poste>
+ <poste code="0560001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DU MORBIHAN</poste>
+ <poste code="0921130">TRESORERIE VANVES</poste>
+ <poste code="0550440">TRESORERIE DE VARENNES-EN-ARGONNE</poste>
+ <poste code="0030340">TRESORERIE VARENNES-SUR-ALLIER</poste>
+ <poste code="0090280">TRESORERIE VARILHES</poste>
+ <poste code="0580300">TRESORERIE VARZY</poste>
+ <poste code="0550280">TRESORERIE DE VAUCOULEURS - VOID VACON</poste>
+ <poste code="0690320">TRESORERIE VAUGNERAY</poste>
+ <poste code="0690450">TRESORERIE VAULX-EN-VELIN</poste>
+ <poste code="0300370">TRESORERIE VAUVERT</poste>
+ <poste code="0700410">TRESORERIE VAUVILLERS</poste>
+ <poste code="0240560">TRESORERIE DE VELINES ET LAMOTHE-MONTRAVEL</poste>
+ <poste code="0210440">TRESORERIE VENAREY-LES-LAUMES</poste>
+ <poste code="0061130">TRESORERIE VENCE</poste>
+ <poste code="0100380">TRESORERIE DE VENDEUVRE-SUR-BARSE</poste>
+ <poste code="0410350">TRESORERIE VENDOME</poste>
+ <poste code="0690330">TRESORERIE DE VENISSIEUX</poste>
+ <poste code="0550450">TRESORERIE DE VERDUN</poste>
+ <poste code="0820240">TRESORERIE VERDUN-SUR-GARONNE</poste>
+ <poste code="0710560">TRESORERIE VERDUN-SUR-LE-DOUBS</poste>
+ <poste code="0300380">TRESORERIE VERGEZE</poste>
+ <poste code="0240410">TRESORERIE VERGT</poste>
+ <poste code="0020630">TRESORERIE VERMAND</poste>
+ <poste code="0890440">TRESORERIE VERMENTON</poste>
+ <poste code="0270140">TRESORERIE VERNEUIL-SUR-AVRE</poste>
+ <poste code="0270150">TRESORERIE VERNON</poste>
+ <poste code="0570550">TRESORERIE VERNY</poste>
+ <poste code="0780000">TRESORERIE GENERALE DES YVELINES</poste>
+ <poste code="0780008">CENTRE DE FORMATION DEPARTEMENTAL DES YVELINES</poste>
+ <poste code="0780009">DEPARTEMENT INFORMATIQUE DES YVELINES</poste>
+ <poste code="0780330">TRESORERIE DE VERSAILLES</poste>
+ <poste code="0780360">TRESORERIE DE VERSAILLES BANLIEUE</poste>
+ <poste code="0780370">TRESORERIE DE VERSAILLES MUNICIPALE</poste>
+ <poste code="0780900">PAIERIE DEPARTEMENTALE YVELINES</poste>
+ <poste code="0780450">TRESORERIE DE L' OPIEVOY-HLM</poste>
+ <poste code="0780001">SERVICE CONTRÔLE REDEVANCE AUDIOVISUELLE DES YVELINES</poste>
+ <poste code="0630320">TRESORERIE VERTAIZON</poste>
+ <poste code="0440180">TRESORERIE DE VERTOU</poste>
+ <poste code="0020690">TRESORERIE VERVINS</poste>
+ <poste code="0512160">TRESORERIE DE VERZY</poste>
+ <poste code="02B0220">TRESORERIE VESCOVATO</poste>
+ <poste code="0700000">TRESORERIE GENERALE DE LA HAUTE-SAONE</poste>
+ <poste code="0700440">TRESORERIE VESOUL</poste>
+ <poste code="0700900">PAIERIE DEPARTEMENTALE DE LA HAUTE-SAONE</poste>
+ <poste code="0050230">TRESORERIE VEYNES</poste>
+ <poste code="0300530">TRESORERIE DE VEZENOBRES</poste>
+ <poste code="0951090">TRESORERIE VIARMES</poste>
+ <poste code="0720520">TRESORERIE VIBRAYE</poste>
+ <poste code="0650320">TRESORERIE VIC-EN-BIGORRE</poste>
+ <poste code="0320370">TRESORERIE VIC-FEZENSAC</poste>
+ <poste code="0630330">TRESORERIE VIC-LE-COMTE</poste>
+ <poste code="0020500">TRESORERIE VIC-SUR-AISNE</poste>
+ <poste code="0150300">TRESORERIE VIC-SUR-CERE</poste>
+ <poste code="0570560">TRESORERIE VIC-SUR-SEILLE</poste>
+ <poste code="0090210">TRESORERIE VICDESSOS</poste>
+ <poste code="0030350">TRESORERIE VICHY</poste>
+ <poste code="02A0120">TRESORERIE VICO</poste>
+ <poste code="0650330">TRESORERIE VIELLE-AURE</poste>
+ <poste code="0381000">RECETTE DES FINANCES VIENNE</poste>
+ <poste code="0381140">TRESORERIE VIENNE MUNICIPALE</poste>
+ <poste code="0381130">TRESORERIE DE VIENNE</poste>
+ <poste code="0180400">TRESORERIE DE VIERZON VILLE ET CAMPAGNE</poste>
+ <poste code="0380480">TRESORERIE VIF</poste>
+ <poste code="0190320">TRESORERIE VIGEOIS</poste>
+ <poste code="0550290">TRESORERIE DE VIGNEULLES-LES-HATTONCHATEL</poste>
+ <poste code="0910320">TRESORERIE VIGNEUX-SUR-SEINE</poste>
+ <poste code="0520260">TRESORERIE VIGNORY</poste>
+ <poste code="0950270">TRESORERIE VIGNY</poste>
+ <poste code="0570570">TRESORERIE VIGY</poste>
+ <poste code="0490530">TRESORERIE DE VIHIERS</poste>
+ <poste code="0530320">TRESORERIE VILLAINES-LA-JUHEL</poste>
+ <poste code="0380490">TRESORERIE VILLARD-DE-LANS</poste>
+ <poste code="0010400">TRESORERIE VILLARS-LES-DOMBES</poste>
+ <poste code="0670630">TRESORERIE VILLE</poste>
+ <poste code="02B0050">TRESORERIE CAP CORSE</poste>
+ <poste code="0512180">TRESORERIE VILLE-EN-TARDENOIS</poste>
+ <poste code="0160440">TRESORERIE VILLEBOIS-LAVALETTE</poste>
+ <poste code="0500370">TRESORERIE DE VILLEDIEU-PERCY</poste>
+ <poste code="0480230">TRESORERIE VILLEFORT</poste>
+ <poste code="0660260">TRESORERIE DU CONFLENT</poste>
+ <poste code="0310390">TRESORERIE VILLEFRANCHE-DE-LAURAGAIS</poste>
+ <poste code="0120450">TRESORERIE VILLEFRANCHE-DE-ROUERGUE</poste>
+ <poste code="0690550">TRESORERIE DE VILLEFRANCHE HERON</poste>
+ <poste code="0060250">TRESORERIE VILLEFRANCHE-SUR-MER</poste>
+ <poste code="0690560">TRESORERIE VILLEFRANCHE RIVOLI</poste>
+ <poste code="0940320">TRESORERIE VILLEJUIF CHS PAUL GUIRAUD</poste>
+ <poste code="0940210">TRESORERIE VILLEJUIF</poste>
+ <poste code="0911150">TRESORERIE VILLEMOISSON-SUR-ORGE</poste>
+ <poste code="0330590">TRESORERIE VILLENAVE-D'ORNON</poste>
+ <poste code="0120460">TRESORERIE VILLENEUVE</poste>
+ <poste code="0590010">TRESORERIE DE VILLENEUVE-D'ASCQ</poste>
+ <poste code="0070390">TRESORERIE VILLENEUVE-DE-BERG</poste>
+ <poste code="0400180">TRESORERIE VILLENEUVE-DE-MARSAN</poste>
+ <poste code="0890560">TRESORERIE DE VILLENEUVE-L'ARCHEVEQUE</poste>
+ <poste code="0920380">TRESORERIE VILLENEUVE-LA-GARENNE</poste>
+ <poste code="0940220">TRESORERIE DE VILLENEUVE-LE-ROI</poste>
+ <poste code="0300400">TRESORERIE VILLENEUVE-LES-AVIGNON</poste>
+ <poste code="0940230">TRESORERIE VILLENEUVE-SAINT-GEORGES</poste>
+ <poste code="0470330">TRESORERIE VILLENEUVE-SUR-LOT</poste>
+ <poste code="0890570">TRESORERIE DE VILLENEUVE-SUR-YONNE</poste>
+ <poste code="0930360">TRESORERIE AULNAY-SOUS-BOIS ET. HOSP.</poste>
+ <poste code="0470340">TRESORERIE VILLEREAL</poste>
+ <poste code="0140420">TRESORERIE DE VILLERS-BOCAGE</poste>
+ <poste code="0800460">TRESORERIE VILLERS-BOCAGE</poste>
+ <poste code="0020510">TRESORERIE DE VILLERS-COTTERETS</poste>
+ <poste code="0700450">TRESORERIE VILLERSEXEL</poste>
+ <poste code="0690340">TRESORERIE DE VILLEURBANNE</poste>
+ <poste code="0690350">TRESORERIE DE VILLEURBANNE MUNICIPALE</poste>
+ <poste code="0951110">TRESORERIE VILLIERS-LE-BEL</poste>
+ <poste code="0941100">TRESORERIE DE VILLIERS-SUR-MARNE</poste>
+ <poste code="0610420">TRESORERIE VIMOUTIERS</poste>
+ <poste code="0620470">TRESORERIE VIMY</poste>
+ <poste code="0380500">TRESORERIE VINAY</poste>
+ <poste code="0660270">TRESORERIE VINCA</poste>
+ <poste code="0941120">TRESORERIE VINCENNES MUNICIPALE</poste>
+ <poste code="0941110">TRESORERIE DE VINCENNES</poste>
+ <poste code="0140430">TRESORERIE VIRE</poste>
+ <poste code="0381240">TRESORERIE VIRIEU</poste>
+ <poste code="0910330">TRESORERIE VIRY-CHATILLON</poste>
+ <poste code="0350390">TRESORERIE VITRE</poste>
+ <poste code="0131170">TRESORERIE VITROLLES</poste>
+ <poste code="0620480">TRESORERIE VITRY-EN-ARTOIS</poste>
+ <poste code="0510150">TRESORERIE DE VITRY - RURAL</poste>
+ <poste code="0510280">TRESORERIE DE VITRY-LE-FRANCOIS</poste>
+ <poste code="0940260">TRESORERIE VITRY-SUR-SEINE</poste>
+ <poste code="0940270">TRESORERIE VITRY-SUR-SEINE MUNICIPALE</poste>
+ <poste code="0210470">TRESORERIE VITTEAUX</poste>
+ <poste code="0880450">TRESORERIE VITTEL-REMONCOURT</poste>
+ <poste code="0860260">TRESORERIE VIVONNE</poste>
+ <poste code="0380520">TRESORERIE VIZILLE</poste>
+ <poste code="0380530">TRESORERIE VOIRON</poste>
+ <poste code="0390270">TRESORERIE VOITEUR</poste>
+ <poste code="0040280">TRESORERIE VOLONNE</poste>
+ <poste code="0630470">TRESORERIE VOLVIC</poste>
+ <poste code="0430320">TRESORERIE VOREY</poste>
+ <poste code="0860270">TRESORERIE VOUILLE</poste>
+ <poste code="0370430">TRESORERIE DE VOUVRAY</poste>
+ <poste code="0080510">TRESORERIE VOUZIERS</poste>
+ <poste code="0280310">TRESORERIE DE VOVES-ORGERES EN BEAUCE</poste>
+ <poste code="1780000">TRESORERIE AMBASSADE DE FRANCE AUX ETATS-UNIS</poste>
+ <poste code="0590090">TRESORERIE DE WASQUEHAL</poste>
+ <poste code="0670640">TRESORERIE WASSELONNE</poste>
+ <poste code="0020640">TRESORERIE WASSIGNY</poste>
+ <poste code="0520270">TRESORERIE DE WASSY</poste>
+ <poste code="0590490">TRESORERIE WATTIGNIES</poste>
+ <poste code="0590500">TRESORERIE WATTRELOS</poste>
+ <poste code="0590110">TRESORERIE FOURNES-EN-WEPPES</poste>
+ <poste code="0671200">TRESORERIE DE WISSEMBOURG</poste>
+ <poste code="0671210">TRESORERIE WOERTH</poste>
+ <poste code="0594150">TRESORERIE WORMHOUT</poste>
+ <poste code="0880480">TRESORERIE XERTIGNY</poste>
+ <poste code="1390000">TRESORERIE AMBASSADE DE FRANCE AU CAMEROUN</poste>
+ <poste code="0730360">TRESORERIE D' YENNE</poste>
+ <poste code="0760480">TRESORERIE YERVILLE</poste>
+ <poste code="0430330">TRESORERIE YSSINGEAUX</poste>
+ <poste code="0760490">TRESORERIE YVETOT</poste>
+ <poste code="0030130">TRESORERIE DE MOULINS</poste>
+ </xsl:variable>
+
+ <xsl:template match="/*[position()=1]">
+ <xsl:if test="local-name() = 'PES_Aller'">
+ <!--xsl:variable name="signatureGlobaleMetier" select="exists(/n:PES_Aller/ds:signature) and not(exists(/n:PES_Aller/*/ds:signature)) and (/n:PES_Aller/n:PES_DepenseAller/n:EnTeteDepense/n:InfoDematerialisee/@V or /n:PES_Aller/n:PES_RecetteAller/n:EnTeteRecette/n:InfoDematerialisee/@V)"/-->
+ <PES_Aller xmlns="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/aller"
+ xmlns:added="http://projets.admisource.gouv.fr/xemelios/namespaces#added"
+ xmlns:n="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/aller"
+ xmlns:ano="http://projets.admisource.gouv.fr/xemelios/namespaces#anomally">
+ <xsl:variable name="sign">
+ <xsl:copy-of select="/n:PES_Aller/ds:Signature"/>
+ </xsl:variable>
+ <xsl:for-each select="./@*">
+ <xsl:attribute name="{local-name(.)}" namespace="{namespace-uri(.)}" select="."/>
+ </xsl:for-each>
+ <xsl:variable name="signatureGlobaleMetier">
+ <xsl:choose>
+ <xsl:when test="exists(/n:PES_Aller/ds:Signature)">
+ <xsl:choose>
+ <xsl:when test="not(exists(/n:PES_Aller/*/ds:Signature))">
+ <xsl:choose>
+ <xsl:when test="exists(/n:PES_Aller/*[local-name()='PES_RecetteAller']) or exists(/n:PES_Aller/*[local-name()='PES_DepenseAller'])">
+ <xsl:choose>
+ <xsl:when test="exists(/n:PES_Aller/*[local-name()='PES_RecetteAller']/*[local-name()='EnTeteRecette']) or exists(/n:PES_Aller/*[local-name()='PES_DepenseAller']/*[local-name()='EnTeteDepense'])">
+ <xsl:choose>
+ <xsl:when test="exists(/n:PES_Aller/*[local-name()='PES_RecetteAller']/*[local-name()='EnTeteRecette']/*[local-name()='InfoDematerialisee']) or exists(/n:PES_Aller/*[local-name()='PES_DepenseAller']/*[local-name()='EnTeteDepense']/*[local-name()='InfoDematerialisee'])">
+ <xsl:choose>
+ <xsl:when test="./*[local-name()='PES_RecetteAller']/*[local-name()='EnTeteRecette']/*[local-name()='InfoDematerialisee']/@V='1'">
+ <xsl:value-of select="true()"/>
+ </xsl:when>
+ <xsl:when test="./*[local-name()='PES_DepenseAller']/*[local-name()='EnTeteDepense']/*[local-name()='InfoDematerialisee']/@V='1'">
+ <xsl:value-of select="true()"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="false()"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="false()"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="false()"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="false()"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="false()"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="false()"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:comment> This file is <xsl:if test="not($signatureGlobaleMetier)">not </xsl:if>signed </xsl:comment>
+ <xsl:for-each select="./*">
+ <xsl:call-template name="writeElement">
+ <xsl:with-param name="el" select="."/>
+ <xsl:with-param name="signature"><xsl:copy-of select="$sign"></xsl:copy-of></xsl:with-param>
+ <xsl:with-param name="signatureGlobale" select="$signatureGlobaleMetier"/>
+ </xsl:call-template>
+ </xsl:for-each>
+ </PES_Aller>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template name="writeElement">
+ <xsl:param name="el"/>
+ <xsl:param name="signature"/>
+ <xsl:param name="signatureGlobale" select="false()"/>
+ <xsl:choose>
+ <xsl:when test="namespace-uri($el) = 'http://projets.admisource.gouv.fr/xemelios/namespaces#anomally'">
+ <xsl:element name="{name($el)}" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#anomally">
+ <xsl:for-each select="$el/@*">
+ <xsl:attribute name="{name(.)}" namespace="{namespace-uri(.)}">
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+ </xsl:for-each>
+ <xsl:value-of select="text()" disable-output-escaping="yes"/>
+ <xsl:for-each select="$el/*">
+ <xsl:call-template name="writeElement">
+ <xsl:with-param name="el" select="."/>
+ <xsl:with-param name="signature"><xsl:copy-of select="$signature"/></xsl:with-param>
+ <xsl:with-param name="signatureGlobale" select="$signatureGlobale"/>
+ </xsl:call-template>
+ </xsl:for-each>
+ </xsl:element>
+ </xsl:when>
+ <xsl:when test="namespace-uri($el) = 'http://www.w3.org/2000/09/xmldsig#'">
+ <xsl:element name="{name($el)}" namespace="http://www.w3.org/2000/09/xmldsig#">
+ <xsl:for-each select="$el/@*">
+ <xsl:attribute name="{name(.)}" namespace="{namespace-uri(.)}">
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+ </xsl:for-each>
+ <xsl:value-of select="text()" disable-output-escaping="yes"/>
+ <xsl:for-each select="$el/*">
+ <xsl:call-template name="writeElement">
+ <xsl:with-param name="el" select="."/>
+ <xsl:with-param name="signature"><xsl:copy-of select="$signature"/></xsl:with-param>
+ <xsl:with-param name="signatureGlobale" select="$signatureGlobale"/>
+ </xsl:call-template>
+ </xsl:for-each>
+ </xsl:element>
+ </xsl:when>
+ <xsl:when test="namespace-uri($el) = 'http://uri.etsi.org/01903/v1.1.1#'">
+ <xsl:element name="{name($el)}" namespace="http://uri.etsi.org/01903/v1.1.1#">
+ <xsl:for-each select="$el/@*">
+ <xsl:attribute name="{name(.)}" namespace="{namespace-uri(.)}">
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+ </xsl:for-each>
+ <xsl:value-of select="text()" disable-output-escaping="yes"/>
+ <xsl:for-each select="$el/*">
+ <xsl:call-template name="writeElement">
+ <xsl:with-param name="el" select="."/>
+ <xsl:with-param name="signature"><xsl:copy-of select="$signature"/></xsl:with-param>
+ <xsl:with-param name="signatureGlobale" select="$signatureGlobale"/>
+ </xsl:call-template>
+ </xsl:for-each>
+ </xsl:element>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="local-name($el) = 'LibellePoste'"></xsl:when>
+ <xsl:otherwise>
+ <xsl:element name="{local-name($el)}" namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/aller">
+ <xsl:for-each select="$el/@*">
+ <xsl:choose>
+ <xsl:when test="namespace-uri(.) = 'http://projets.admisource.gouv.fr/xemelios/namespaces#anomally'">
+ <xsl:attribute name="{local-name(.)}" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#anomally">
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="{local-name(.)}">
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ <xsl:choose>
+ <xsl:when test="contains('|Bordereau|Piece|LigneDePiece|PJRef',concat('|',name($el)))">
+ <xsl:attribute name="generated-id" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#added">
+ <xsl:value-of select="generate-id()"/>
+ </xsl:attribute>
+ <!--xsl:attribute name="tag-name" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#added">
+ <xsl:value-of select="name($el)"/>
+ </xsl:attribute-->
+ </xsl:when>
+ <xsl:when test="local-name($el) = 'InfoTiers'">
+ <xsl:attribute name="key" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#added">
+ <xsl:value-of select="concat(./*[local-name()='Nom'][1]/@V,' ',./*[local-name()='Prenom'][1]/@V)"/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="local-name($el) = 'InfoLignePce' or local-name($el) = 'InfoLignePiece'">
+ <xsl:attribute name="imputation" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#added">
+ <xsl:value-of select="concat(./*[local-name()='Nature'][1]/@V,'-',./*[local-name()='Fonction'][1]/@V,'-',./*[local-name()='Operation'][1]/@V)"/>
+ </xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+ <!--xsl:choose>
+ <xsl:when test="local-name($el)='Bordereau'">
+ <xsl:attribute name="nbPiece" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#added"><xsl:value-of select="count(./*[local-name()='Piece'])"/></xsl:attribute>
+ <xsl:attribute name="montantTTC" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#added">
+ <xsl:value-of select="sum(./*[local-name()='BlocBordereau'][1]/*[local-name()='MtBordHT'][1]/@V) + sum(./*[local-name()='BlocBordereau'][1]/*[local-name()='MtBord'][1]/*[local-name()='TVA'][1]/@V)"/>
+ </xsl:attribute>
+ <xsl:attribute name="LibelleTypBord" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#added">
+ <xsl:variable name="codTypBord" select="./*[local-name()='BlocBordereau'][1]/*[local-name()='TypBord'][1]/@V"/>
+ <xsl:choose>
+ <xsl:when test="$codTypBord='01'">Bordereau de mandats</xsl:when>
+ <xsl:when test="$codTypBord='02'">Bordereau d'annulation de mandats</xsl:when>
+ <xsl:when test="$codTypBord='03'">Bordereau d'ordres de paiement ordonnateur</xsl:when>
+ <xsl:when test="$codTypBord='04'">Bordereau de mandats émis d'office</xsl:when>
+ </xsl:choose>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="name($el)='Piece'">
+ <xsl:attribute name="nbLigne" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#added"><xsl:value-of select="count(./LigneDePiece)"/></xsl:attribute>
+ <xsl:attribute name="montantHT" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#added">
+ <xsl:value-of select="sum(./*[local-name()='LigneDePiece']/*[local-name()='BlocLignePiece']/*[local-name()='InfoLignePce']/*[local-name()='MtHT']/@V)"/>
+ </xsl:attribute>
+ <xsl:attribute name="LibelleTypPiece" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#added">
+ <xsl:variable name="codTypPiece" select="./*[local-name()='BlocPiece']/*[local-name()='InfoPce']/*[local-name()='TypPce']/@V"/>
+ <xsl:choose>
+ <xsl:when test="$codTypPiece='01'">Mandat ordinaire</xsl:when>
+ <xsl:when test="$codTypPiece='02'">Mandat correctif</xsl:when>
+ <xsl:when test="$codTypPiece='03'">Mandat ordre budgétaire</xsl:when>
+ <xsl:when test="$codTypPiece='04'">Mandat d'ordre mixte</xsl:when>
+ <xsl:when test="$codTypPiece='05'">Mandat émis après paiement</xsl:when>
+ <xsl:when test="$codTypPiece='06'">Mandat global</xsl:when>
+ <xsl:when test="$codTypPiece='07'">Mandat d'admission en non valeurs</xsl:when>
+ <xsl:when test="$codTypPiece='08'">Mandat collectif</xsl:when>
+ <xsl:when test="$codTypPiece='09'">Mandat sur marché</xsl:when>
+ <xsl:when test="$codTypPiece='10'">Mandat de rattachement</xsl:when>
+ <xsl:when test="$codTypPiece='11'">Ordre de paiement</xsl:when>
+ <xsl:when test="$codTypPiece='13'">Charges constatées d'avance</xsl:when>
+ </xsl:choose>
+ </xsl:attribute>
+ <xsl:attribute name="LibelleNatPiece" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#added">
+ <xsl:variable name="codNatPiece" select="./*[local-name()='BlocPiece']/*[local-name()='InfoPce']/*[local-name()='NatPce']/@V"/>
+ <xsl:choose>
+ <xsl:when test="$codNatPiece='01'">Fonctionnement</xsl:when>
+ <xsl:when test="$codNatPiece='02'">Investissement</xsl:when>
+ <xsl:when test="$codNatPiece='03'">Inventaire</xsl:when>
+ <xsl:when test="$codNatPiece='04'">Emprunt</xsl:when>
+ <xsl:when test="$codNatPiece='05'">Régie</xsl:when>
+ <xsl:when test="$codNatPiece='06'">Annulation / Réduction</xsl:when>
+ <xsl:when test="$codNatPiece='07'">Complémentaire</xsl:when>
+ <xsl:when test="$codNatPiece='08'">Ré-émis</xsl:when>
+ <xsl:when test="$codNatPiece='09'">Annulant un titre</xsl:when>
+ <xsl:when test="$codNatPiece='10'">Annulation du mandat de rattachement</xsl:when>
+ <xsl:when test="$codNatPiece='11'">Paie</xsl:when>
+ <xsl:when test="$codNatPiece='12'">Retenue de garantie</xsl:when>
+ <xsl:when test="$codNatPiece='13'">Dernier acompte sur marché</xsl:when>
+ <xsl:when test="$codNatPiece='14'">Avance forfaitaire</xsl:when>
+ <xsl:when test="$codNatPiece='15'">Autre</xsl:when>
+ <xsl:when test="$codNatPiece='18'">Cession</xsl:when>
+ </xsl:choose>
+ </xsl:attribute>
+ <xsl:attribute name="montantTTC" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#added">
+ <xsl:value-of select="sum(./*[local-name()='LigneDePiece']/*[local-name()='BlocLignePiece']/*[local-name()='InfoLignePce']/*[local-name()='MtHT']/@V) + sum(./*[local-name()='LigneDePiece']/*[local-name()='BlocLignePiece']/*[local-name()='InfoLignePce']/*[local-name()='MtTVA']/@V)"/>
+ </xsl:attribute>
+ <xsl:choose>
+ <xsl:when test="local-name()='Piece'">
+ <xsl:attribute name="avecPJ" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#added">
+ <xsl:value-of select="count(descendant::PJRef) > 0"/>
+ </xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+ <xsl:choose>
+ <xsl:when test="*[local-name()='BlocPiece']/*[local-name()='DGP']/*[local-name()='Dgp']/@V = 'true'">
+ <xsl:attribute name="DGP" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#added">true</xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="DGP" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#added">false</xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="local-name($el)='LigneDePiece'">
+ <xsl:attribute name="montantTTC" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#added">
+ <xsl:value-of select="sum(./*[local-name()='BlocLignePiece']/*[local-name()='InfoLignePce']/*[local-name()='MtHT']/@V) + sum(./*[local-name()='BlocLignePiece']/*[local-name()='InfoLignePce']/*[local-name()='MtTVA']/@V)"/>
+ </xsl:attribute>
+ <xsl:attribute name="LibelleCatTiersLignePiece" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#added">
+ <xsl:variable name="codCatTiers" select="./*[local-name()='Tiers']/*[local-name()='InfoTiers']/*[local-name()='CatTiers']/@V"/>
+ <xsl:choose>
+ <xsl:when test="$codCatTiers='01'">Personnes physiques</xsl:when>
+ <xsl:when test="$codCatTiers='20'">État et établissements publics nationaux</xsl:when>
+ <xsl:when test="$codCatTiers='21'">Régions</xsl:when>
+ <xsl:when test="$codCatTiers='22'">Départements</xsl:when>
+ <xsl:when test="$codCatTiers='23'">Communes</xsl:when>
+ <xsl:when test="$codCatTiers='24'">Groupements de collectivités</xsl:when>
+ <xsl:when test="$codCatTiers='25'">Caisses des écoles</xsl:when>
+ <xsl:when test="$codCatTiers='26'">CCAS</xsl:when>
+ <xsl:when test="$codCatTiers='27'">Établissements publics de santé</xsl:when>
+ <xsl:when test="$codCatTiers='28'">École nationale de la santé publique</xsl:when>
+ <xsl:when test="$codCatTiers='29'">Autres établissements publics et organismes internationaux</xsl:when>
+ <xsl:when test="$codCatTiers='50'">Personnes morales de droit privé autres qu'organismes sociaux</xsl:when>
+ <xsl:when test="$codCatTiers='60'">Caisses de sécurité sociale régime général</xsl:when>
+ <xsl:when test="$codCatTiers='61'">Caisses de sécurité sociale régime agricole</xsl:when>
+ <xsl:when test="$codCatTiers='62'">Sécurité sociale des travailleurs non salariés et professions non agricoles</xsl:when>
+ <xsl:when test="$codCatTiers='63'">Autres régimes obligatoires de sécurité sociale</xsl:when>
+ <xsl:when test="$codCatTiers='64'">Mutuelles et organismes d'assurance</xsl:when>
+ <xsl:when test="$codCatTiers='65'">Divers autres tiers payants</xsl:when>
+ <xsl:when test="$codCatTiers='70'">CNRACL</xsl:when>
+ <xsl:when test="$codCatTiers='71'">IRCANTEC</xsl:when>
+ <xsl:when test="$codCatTiers='72'">ASSEDIC</xsl:when>
+ <xsl:when test="$codCatTiers='73'">Caisses mutualistes de retraite complémentaires</xsl:when>
+ <xsl:when test="$codCatTiers='74'">Autres organismes sociaux</xsl:when>
+ </xsl:choose>
+ </xsl:attribute>
+ <xsl:attribute name="LibelleNatIdTiersLignePiece" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#added">
+ <xsl:variable name="codNatIdTiers" select="./*[local-name()='Tiers']/*[local-name()='InfoTiers']/*[local-name()='NatIdTiers']/@V"/>
+ <xsl:choose>
+ <xsl:when test="$codNatIdTiers='01'">Siret</xsl:when>
+ <xsl:when test="$codNatIdTiers='02'">Siren</xsl:when>
+ <xsl:when test="$codNatIdTiers='03'">Finess</xsl:when>
+ <xsl:when test="$codNatIdTiers='04'">Nir</xsl:when>
+ </xsl:choose>
+ </xsl:attribute>
+ <xsl:attribute name="LibelleNatJurLignePiece" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#added">
+ <xsl:variable name="codNatJur" select="./*[local-name()='Tiers']/*[local-name()='InfoTiers']/*[local-name()='NatJur']/@V"/>
+ <xsl:choose>
+ <xsl:when test="$codNatJur='00'">Inconnue</xsl:when>
+ <xsl:when test="$codNatJur='01'">Particuliers</xsl:when>
+ <xsl:when test="$codNatJur='02'">Artisan / Commerçant / Agriculteur</xsl:when>
+ <xsl:when test="$codNatJur='03'">Société</xsl:when>
+ <xsl:when test="$codNatJur='04'">CAM ou caisse appliquant les mêmes règles</xsl:when>
+ <xsl:when test="$codNatJur='05'">Caisse complémentaire</xsl:when>
+ <xsl:when test="$codNatJur='06'">Association</xsl:when>
+ <xsl:when test="$codNatJur='07'">Etat ou organisme d'Etat</xsl:when>
+ <xsl:when test="$codNatJur='08'">Etablissement public national</xsl:when>
+ <xsl:when test="$codNatJur='09'">Collectivité territoriale / EPL / EPS</xsl:when>
+ <xsl:when test="$codNatJur='10'">Etat étranger / Ambassade</xsl:when>
+ <xsl:when test="$codNatJur='11'">CAF</xsl:when>
+ </xsl:choose>
+ </xsl:attribute>
+ </xsl:when>
+ </xsl:choose-->
+ <xsl:choose>
+ <xsl:when test="contains('|CptBancaire',concat('|',local-name($el)))"><xsl:attribute name="rib" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#added"><xsl:value-of select="$el/*[local-name()='CodeEtab']/@V"/><xsl:value-of select="$el/*[local-name()='CodeGuic']/@V"/><xsl:value-of select="$el/*[local-name()='IdCpte']/@V"/><xsl:value-of select="$el/*[local-name()='CleRib']/@V"/></xsl:attribute></xsl:when>
+ </xsl:choose>
+ <xsl:if test="contains('|Bordereau',concat('|',local-name($el)))"><xsl:attribute name="primary-key" namespace="http://projets.admisource.gouv.fr/xemelios/namespaces#added"><xsl:value-of select="*[local-name()='BlocBordereau']/*[local-name()='Exer']/@V"/>-<xsl:value-of select="*[local-name()='BlocBordereau']/*[local-name()='TypBord']/@V"/>-<xsl:value-of select="*[local-name()='BlocBordereau']/*[local-name()='IdBord']/@V"></xsl:value-of></xsl:attribute></xsl:if>
+ <xsl:for-each select="$el/*">
+ <xsl:call-template name="writeElement">
+ <xsl:with-param name="el" select="."/>
+ <xsl:with-param name="signature"><xsl:copy-of select="$signature"/></xsl:with-param>
+ <xsl:with-param name="signatureGlobale" select="$signatureGlobale"/>
+ </xsl:call-template>
+ </xsl:for-each>
+ <xsl:value-of select="$el/text()" disable-output-escaping="yes"/>
+ <xsl:if test="local-name($el)='Bordereau'">
+ <xsl:choose>
+ <xsl:when test="$signatureGlobale">
+ <!--xsl:comment> une signature a été trouvée </xsl:comment-->
+ <xsl:copy-of select="$signature"/>
+ </xsl:when>
+ <!--xsl:otherwise>
+ <xsl:comment> pas de signature trouvée </xsl:comment>
+ </xsl:otherwise-->
+ </xsl:choose>
+ </xsl:if>
+ </xsl:element>
+ <xsl:if test="contains('|IdPost',concat('|',local-name($el)))">
+ <xsl:element name="LibellePoste" namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/aller">
+ <xsl:variable name="code" select="$el/@V"/>
+ <xsl:attribute name="V"><xsl:value-of select="$postes/poste[starts-with(@code,$code)][1]/text()"/></xsl:attribute>
+ </xsl:element>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+</xsl:transform>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:include schemaLocation="Simple_Type.xsd"/>
+ <xs:complexType name="TAdresse">
+ <xs:sequence>
+ <xs:element name="TypAdr">
+ <xs:complexType>
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="0"/>
+ <xs:enumeration value="1"/>
+ <xs:enumeration value="2"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Adr1" type="Base_Texte38" minOccurs="0"/>
+ <xs:element name="Adr2" type="Base_Texte38" minOccurs="0"/>
+ <xs:element name="Adr3" type="Base_Texte38" minOccurs="0"/>
+ <xs:element name="CP" type="Base_Texte5"/>
+ <xs:element name="Ville" type="Base_Texte38" minOccurs="0"/>
+ <xs:element name="CodRes" type="Base_Booleen"/>
+ <xs:element name="CodPays" type="Base_Num3" minOccurs="0"/>
+ <xs:element name="DteAdr" type="Base_Date" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:include schemaLocation="Simple_Type.xsd"/>
+ <xs:complexType name="TBancaire">
+ <xs:sequence>
+ <xs:element name="IdPayInt" type="Base_Alphanum4" minOccurs="0"/>
+ <xs:element name="IdBancInt" type="Base_Texte11" minOccurs="0"/>
+ <xs:element name="CodeEtab" type="Base_Alphanum5"/>
+ <xs:element name="CodeGuic" type="Base_Alphanum5"/>
+ <xs:element name="IdCpte" type="Base_Texte11"/>
+ <xs:element name="CleRib" type="Base_Num2"/>
+ <xs:element name="LibBanc" type="Base_Texte24" minOccurs="0"/>
+ <xs:element name="TitCpte" type="Base_Texte32"/>
+ <xs:element name="DteBanc" type="Base_Date" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://www.w3.org/2001/04/xmlenc#" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" elementFormDefault="qualified" attributeFormDefault="unqualified">
+ <xs:include schemaLocation="../xmlenc/xenc-schema.xsd"/>
+ <xs:complexType name="PESEncryptedDataType">
+ <xs:annotation>
+ <xs:documentation>Element contenant la donnee chiffree et les informations necessaires au dechiffrement - L'element KeyInfo contient un element EncryptedKey par acteur destinataire de l'information.</xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="xenc:EncryptedDataType"/>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:group name="PESEncryptedDataGroup">
+ <xs:sequence>
+ <xs:element name="EncryptedData" type="xenc:PESEncryptedDataType"/>
+ </xs:sequence>
+ </xs:group>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- edited with XMLSPY v5 rel. 2 U (http://www.xmlspy.com) by SERGE MURET (SEMA GROUP SA) -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:include schemaLocation="Simple_Type.xsd"/>
+ <xs:include schemaLocation="CommunPES.xsd"/>
+ <xs:complexType name="TEnTetePES">
+ <xs:sequence>
+ <xs:element name="DteStr" type="Base_Date"/>
+ <xs:element name="IdPost" type="Base_Texte7"/>
+ <xs:element name="LibellePoste" type="Base_Texte38" minOccurs="0"/>
+ <xs:element name="IdColl" type="Base_Num14" minOccurs="0"/>
+ <xs:element name="FinJur" type="Base_Num20" minOccurs="0"/>
+ <xs:element name="CodCol" type="Base_Alphanum3"/>
+ <xs:element name="CodBud" type="Base_Alphanum2" minOccurs="0"/>
+ <xs:element name="LibelleColBud" type="Base_Texte38" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:include schemaLocation="Simple_Type.xsd"/>
+ <xs:complexType name="TEnveloppe">
+ <xs:sequence>
+ <xs:element name="Parametres" type="TParametres"/>
+ <xs:element name="Emetteur" type="TCarteVisite" minOccurs="0"/>
+ <xs:element name="Recepteur" type="TCarteVisite" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TParametres">
+ <xs:sequence>
+ <xs:element name="Version" type="Base_Num2"/>
+ <xs:element name="TypFic" type="Base_Texte32"/>
+ <xs:element name="NomFic" type="Base_Texte100"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TCarteVisite">
+ <xs:sequence>
+ <xs:element name="Sigle" type="Base_Texte32" minOccurs="0"/>
+ <xs:element name="Adresse" type="Base_Texte38" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="Class_FacturePESIndiv.xsd"/>
+ <xs:include schemaLocation="Class_Tiers.xsd"/>
+ <xs:include schemaLocation="Class_Nomenclature.xsd"/>
+ <xs:complexType name="TNomenclatureFacture">
+ <xs:sequence>
+ <xs:element name="NomenclatureProduit" type="TNomenclature" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Nomenclature des rubriques de Facturation (nécessaire en cas d'état de facturation collectif)</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="NomenclatureNature" type="TNomenclature" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Nomenclature des Code Natures (catégorisation préalable à l'imputation budgétaire)</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="NomenclatureBudget" type="TNomenclature" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Nomenclature des Budgets</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TLigneRepartition">
+ <xs:sequence>
+ <xs:element name="Libelle" type="cm:Base_Texte100"/>
+ <xs:element name="Code" type="cm:Base_Texte24">
+ <xs:annotation>
+ <xs:documentation>code Nature</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="CodeFonction" type="cm:Base_Texte24" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>dans le cas d'une imputation par fonction</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="CodeBudget" type="cm:Base_Texte24" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>dans le cas d'une imputation multi-budget</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Mt" type="cm:Base_Montant"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TRepartitionParNature">
+ <xs:sequence>
+ <xs:element name="Repartition" type="TLigneRepartition" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TPESFacture">
+ <xs:sequence>
+ <xs:element name="IdVer" type="cm:Base_Dec2">
+ <xs:annotation>
+ <xs:documentation>Numéro de version (exemple 1.0)</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Annee" type="cm:Base_Annee"/>
+ <xs:element name="NumSequence" type="cm:Base_Num4" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>En cas d'émission périodique, indique le numéro de la séquence</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="TypeFact" type="cm:Base_Alphanum10" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Type de Facturation</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Date" type="cm:Base_Date">
+ <xs:annotation>
+ <xs:documentation>Date d'émission de la facture ou de l'état de facturation</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Emetteur" type="TTiers">
+ <xs:annotation>
+ <xs:documentation>Informations sur l'emetteur</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="FactureIndiv" type="TFacturePESIndiv" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>Données individuelles de facturation (par défaut une seule facture individuelle) - (état de facturation collectif : plusieurs factures individuelles)</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Nomenclatures" type="TNomenclatureFacture">
+ <xs:annotation>
+ <xs:documentation>Nomenclatures utilisees (Paramétrage du progiciel)
+- en cas d'évolution des nomenclatures, les anciens codes doivent être précisés (de façon incrémentale)</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="RepartitionParNature" type="TRepartitionParNature" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Repartition des dépenses par Nature (et budget le cas échéant)</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="Class_RepartitionBudget.xsd"/>
+ <xs:include schemaLocation="Class_Tiers.xsd"/>
+ <xs:complexType name="TLigneFacture">
+ <xs:sequence>
+ <xs:choice>
+ <xs:element name="Date" type="cm:Base_Date" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>Dates de réalisation de la prestation</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:sequence>
+ <xs:element name="DateDebut" type="cm:Base_Date"/>
+ <xs:element name="DateFin" type="cm:Base_Date"/>
+ </xs:sequence>
+ </xs:choice>
+ <xs:element name="CodeProduit" type="cm:Base_Texte24">
+ <xs:annotation>
+ <xs:documentation>Code du produit</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="CodeNature" type="cm:Base_Texte24" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Code Nature</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Libelle" type="cm:Base_Texte100">
+ <xs:annotation>
+ <xs:documentation>Libellé détaillé du produit</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:choice>
+ <xs:sequence>
+ <xs:element name="Unite" type="cm:Base_Texte38" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Nature de l'unité d'oeuvre</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Quantite" type="cm:Base_Montant" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Quantité d'unité</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="MtUnitaire" type="cm:Base_Montant" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Prix de chaque Unité</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ <xs:sequence>
+ <xs:element name="MtBase" type="cm:Base_Taux" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Base de calcul du prix</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:choice>
+ <xs:element name="Taux" type="cm:Base_Taux3" minOccurs="0"/>
+ <xs:element name="MtRemise" type="cm:Base_Montant" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Montant de la Remise HT</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="MtHT" type="cm:Base_Montant">
+ <xs:annotation>
+ <xs:documentation>Montant HT de la Ligne après remise</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="TauxTVA" type="cm:Base_Taux">
+ <xs:annotation>
+ <xs:documentation>Taux de TVA appliqué à cette ligne</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="MtTVA" type="cm:Base_Montant"/>
+ <xs:element name="MtTTC" type="cm:Base_Montant"/>
+ <xs:element name="Ordre" type="cm:Base_Num3">
+ <xs:annotation>
+ <xs:documentation>Numéro d'ordre de la ligne de prestation</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="OrdreEdition" type="cm:Base_Num3" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Numéro d'ordre dans l'affichage de la facture</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Commentaire" type="cm:Base_Texte100" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>Commentaire dans l'ordre d'affichage de la prestation</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TDetailTVA">
+ <xs:sequence>
+ <xs:element name="TauxTVA" type="cm:Base_Taux"/>
+ <xs:element name="MtBaseHT" type="cm:Base_Montant"/>
+ <xs:element name="MtTVA" type="cm:Base_Montant"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TTotalAPayer">
+ <xs:sequence>
+ <xs:element name="MtTotalHT" type="cm:Base_Montant">
+ <xs:annotation>
+ <xs:documentation>après remise</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="MtTotalTVA" type="cm:Base_Montant"/>
+ <xs:element name="MtTotalTTC" type="cm:Base_Montant"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TFacturePESIndiv">
+ <xs:annotation>
+ <xs:documentation>Données individuelles de facturation</xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element name="DateEmission" type="cm:Base_Date"/>
+ <xs:element name="DateReglement" type="cm:Base_Date" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Date limite de paiement</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="NumeroFacture" type="cm:Base_Texte50">
+ <xs:annotation>
+ <xs:documentation>Identifiant de la Facture</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Debiteur" type="TTiers">
+ <xs:annotation>
+ <xs:documentation>Description du débiteur</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Objet" type="cm:Base_Texte160">
+ <xs:annotation>
+ <xs:documentation>Objet de la Facture</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="LigneFacture" type="TLigneFacture" maxOccurs="unbounded"/>
+ <xs:element name="DetailTVA" type="TDetailTVA" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>Optionnel - en l'absence du détail TVA par taux, celui-ci sera calculé par la feuille de style à partir de l'analyse des lignes</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="TotalAPayer" type="TTotalAPayer"/>
+ <xs:element name="ModalitesReglement" type="cm:Base_Texte250"/>
+ <xs:element name="TexteGenerateur" type="cm:Base_Texte160" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Champ obligatoire en matière de facture de recette associé à un titre</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ConditionsGen" type="cm:Base_Texte250">
+ <xs:annotation>
+ <xs:documentation>Conditions Générales de Facturation</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="RepartitionBudget" type="TRepartitionBudget" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>nécessaire en cas de répartition entre plusieurs budgets sans rapport avec la nature de la prestation</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun">
+ <xs:include schemaLocation="Simple_Type.xsd"/>
+ <xs:include schemaLocation="CommunPES.xsd"/>
+ <xs:complexType name="TInfoTiers">
+ <xs:sequence>
+ <xs:element name="IdTiers" type="Base_Texte15" minOccurs="0"/>
+ <xs:element name="DteMalade" type="Base_Date" minOccurs="0"/>
+ <xs:element name="TypTiers" type="TTypTiers" minOccurs="0"/>
+ <xs:element name="NatIdTiers" type="TNatIdTiers" minOccurs="0"/>
+ <xs:element name="DteIdTiers" type="Base_Date" minOccurs="0"/>
+ <xs:element name="RefTiers" type="Base_Texte30" minOccurs="0"/>
+ <xs:element name="CatTiers" type="TCatTiers"/>
+ <xs:element name="NatJur" type="TNatJur"/>
+ <xs:element name="Civilite" type="Base_Texte10" minOccurs="0"/>
+ <xs:element name="Nom" type="Base_Texte38"/>
+ <xs:element name="ComplNom" type="Base_Texte38" minOccurs="0"/>
+ <xs:element name="Prenom" type="Base_Texte38" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="Class_SchemasCommuns.xsd"/>
+ <xs:complexType name="TLigneNomenclature">
+ <xs:sequence>
+ <xs:element name="Libelle" type="cm:Base_Texte100"/>
+ <xs:element name="Code" type="cm:Base_Texte24"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TNomenclature">
+ <xs:sequence>
+ <xs:element name="Description" type="cm:Base_Texte100">
+ <xs:annotation>
+ <xs:documentation>Description du rôle de la nomenclature ou de ses spécificités</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Correspondance" type="TLigneNomenclature" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#">
+ <xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="Class_Signature.xsd"/>
+ <xs:import namespace="http://www.w3.org/2001/04/xmlenc#" schemaLocation="Class_Chiffrement.xsd"/>
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="Class_FacturePES.xsd"/>
+ <xs:complexType name="TPES_PJ_HELIADES">
+ <xs:sequence>
+ <xs:annotation>
+ <xs:documentation>--- Signature Optionnelle de chaque PJ par l'ordonnateur</xs:documentation>
+ </xs:annotation>
+ <xs:element name="Contenu" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Stockage du fichier PJ</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:choice>
+ <xs:element name="Fichier">
+ <xs:annotation>
+ <xs:documentation>Fichier d'origine (binaire ou XML) compressé avec GZip puis converti en Base 64</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:base64Binary">
+ <xs:attribute name="MIMEType" type="xs:token" use="required"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:group ref="xenc:PESEncryptedDataGroup"/>
+ <xs:element name="PESFacture" type="TPESFacture" minOccurs="0"/>
+ </xs:choice>
+ <xs:choice minOccurs="0">
+ <xs:element name="SignatureXML" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>Fichier signature associé au fichier d'origine (XML-DSIG ou XAdES)</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Signature" type="ds:SignatureType"/>
+ </xs:sequence>
+ <xs:attribute name="MIMEType" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="text/xml"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="SignatureBinaire" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>Fichier signature PKCS#7 associé au fichier d'origine converti en Base 64</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:base64Binary">
+ <xs:attribute name="MIMEType" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:token"/>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ </xs:choice>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="IdUnique" type="cm:Base_Alphanum50">
+ <xs:annotation>
+ <xs:documentation>Identifiant unique du document pour la collectivite</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="NomPJ" type="cm:Base_Texte100">
+ <xs:annotation>
+ <xs:documentation>Nom du fichier </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TPES_PJs_HELIADES">
+ <xs:sequence>
+ <xs:element name="PJ" minOccurs="0" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="TPES_PJ_HELIADES"/>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#">
+ <xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="Class_Signature.xsd"/>
+ <xs:import namespace="http://www.w3.org/2001/04/xmlenc#" schemaLocation="Class_Chiffrement.xsd"/>
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="Class_FacturePES.xsd"/>
+ <xs:complexType name="TPES_PJ">
+ <xs:sequence>
+ <xs:annotation>
+ <xs:documentation>--- Signature Optionnelle de chaque PJ par l'ordonnateur</xs:documentation>
+ </xs:annotation>
+ <xs:element name="Contenu" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Stockage du fichier PJ</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:choice>
+ <xs:element name="Fichier">
+ <xs:annotation>
+ <xs:documentation>Fichier d'origine (binaire ou XML) compressé avec GZip puis converti en Base 64</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:base64Binary">
+ <xs:attribute name="MIMEType" type="xs:token" use="required"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:group ref="xenc:PESEncryptedDataGroup"/>
+ <xs:element name="PESFacture" type="TPESFacture" minOccurs="0"/>
+ </xs:choice>
+ <xs:choice minOccurs="0">
+ <xs:element name="SignatureXML" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>Fichier signature associé au fichier d'origine (XML-DSIG ou XAdES)</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Signature" type="ds:SignatureType"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="SignatureBinaire" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>Fichier signature PKCS#7 associé au fichier d'origine converti en Base 64</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:base64Binary">
+ <xs:attribute name="MIMEType" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:token"/>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ </xs:choice>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="IdUnique" type="cm:Base_Alphanum50">
+ <xs:annotation>
+ <xs:documentation>Identifiant unique du document pour la collectivite</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ServeurId" type="cm:Base_Alphanum20" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Identifiant du serveur de stockage du document (en lien avec le paramétrage Helios)</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="NomPJ" type="cm:Base_Texte100">
+ <xs:annotation>
+ <xs:documentation>Nom du fichier </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="TypePJ" type="cm:Base_Alphanum3" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Type de la pièce (document budgétaire, Facture, Etat de Paye,...) </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Description" type="cm:Base_Texte250">
+ <xs:annotation>
+ <xs:documentation>Description de la pièce saisie</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="RefCompta" type="TPES_RefCompta" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>Référence comptable de la pièce si celle ci n'est pas dématérialisée en même temps que l'objet comptable PES correspondant </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TPES_PJs">
+ <xs:sequence>
+ <xs:element name="EnTetePES_PJ">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="IdVer" type="cm:Base_Num2"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="PJ" minOccurs="0" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="TPES_PJ"/>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TPES_RefCompta">
+ <xs:sequence>
+ <xs:element name="Domaine" type="cm:TDomaine"/>
+ <xs:element name="Exercice" type="cm:Base_Annee"/>
+ <xs:element name="TypeObjet" type="cm:Base_Num2"/>
+ <xs:element name="Identifiant" type="cm:Base_Alphanum20" minOccurs="0"/>
+ <xs:element name="ComplementIdentifiant" type="cm:Base_Alphanum20" minOccurs="0"/>
+ <xs:element name="CodProd" type="cm:Base_Alphanum2" minOccurs="0"/>
+ <xs:element name="IdTiers" type="cm:Base_Texte15" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:include schemaLocation="Simple_Type.xsd"/>
+ <xs:complexType name="TPJReference">
+ <xs:sequence>
+ <xs:element name="Support">
+ <xs:complexType>
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="IdUnique" type="Base_Alphanum50"/>
+ <xs:element name="NomPJ" type="Base_Texte100" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="Class_SchemasCommuns.xsd"/>
+ <xs:complexType name="TPES_PJ_Erreur">
+ <xs:sequence>
+ <xs:element name="IdUnique" type="cm:Base_Alphanum50">
+ <xs:annotation>
+ <xs:documentation>Identifiant unique du document pour la collectivite</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="NomPJ" type="cm:Base_Texte100">
+ <xs:annotation>
+ <xs:documentation>Nom du fichier </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="CodeErreur" type="cm:Base_Num2"/>
+ <xs:element name="LibelleErreur" type="cm:Base_Texte50"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TPES_PJs_Erreur">
+ <xs:sequence>
+ <xs:element name="EnTetePES_PJ">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="IdVer" type="cm:Base_Num2"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="PJ_Erreur" minOccurs="0" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="TPES_PJ_Erreur"/>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="Class_SchemasCommuns.xsd"/>
+ <xs:complexType name="TRepartitionBudget">
+ <xs:sequence>
+ <xs:element name="CodeBudget" type="cm:Base_Texte24">
+ <xs:annotation>
+ <xs:documentation>Code du budget de comptabilisation</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:choice>
+ <xs:element name="Taux" type="cm:Base_Taux">
+ <xs:annotation>
+ <xs:documentation>(si répartitionau prorata)</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Mt" type="cm:Base_Montant">
+ <xs:annotation>
+ <xs:documentation>(si répartition forfaitaire)</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:choice>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="unqualified">
+ <xs:include schemaLocation="Simple_Type.xsd"/>
+ <xs:include schemaLocation="CommunPES.xsd"/>
+ <xs:include schemaLocation="Class_Enveloppe.xsd"/>
+ <xs:include schemaLocation="Class_EntetePES.xsd"/>
+ <xs:include schemaLocation="Class_Adresse.xsd"/>
+ <xs:include schemaLocation="Class_Bancaire.xsd"/>
+ <xs:include schemaLocation="Class_PJReference.xsd"/>
+ <xs:include schemaLocation="Class_InfoTiers.xsd"/>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://www.w3.org/2000/09/xmldsig#" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xad="http://uri.etsi.org/01903/v1.1.1#" elementFormDefault="qualified" attributeFormDefault="unqualified">
+ <xs:import namespace="http://uri.etsi.org/01903/v1.1.1#" schemaLocation="../xades/XAdES-core-schema.xsd"/>
+ <xs:include schemaLocation="../xmldsig/xmldsig-core-schema.xsd"/>
+ <xs:complexType name="PESSignatureType">
+ <xs:complexContent>
+ <xs:restriction base="ds:SignatureType">
+ <xs:sequence>
+ <xs:element ref="ds:SignedInfo"/>
+ <xs:element ref="ds:SignatureValue"/>
+ <xs:element ref="ds:KeyInfo" minOccurs="0"/>
+ <xs:element ref="ds:Object" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:group name="PESSignatureGroup">
+ <xs:sequence>
+ <xs:element name="Signature" type="ds:PESSignatureType"/>
+ </xs:sequence>
+ </xs:group>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="Class_SchemasCommuns.xsd"/>
+ <xs:complexType name="TInfoTiersFact">
+ <xs:complexContent>
+ <xs:extension base="cm:TInfoTiers"/>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:complexType name="TTiers">
+ <xs:sequence>
+ <xs:element name="InfoTiers" type="TInfoTiersFact"/>
+ <xs:element name="Adresse" type="cm:TAdresse" minOccurs="0"/>
+ <xs:element name="CpteBancaire" type="cm:TBancaire" minOccurs="0"/>
+ <xs:element name="NumTVA" type="cm:Base_Texte24" minOccurs="0"/>
+ <xs:element name="Service" type="cm:Base_Texte24" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <!-- Regles de codifications communes au PES -->
+ <xs:include schemaLocation="Simple_Type.xsd"/>
+ <xs:complexType name="TDomaine">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ <xs:enumeration value="06"/>
+ <xs:enumeration value="07"/>
+ <xs:enumeration value="08"/>
+ <xs:enumeration value="09"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TNatIdTiers">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TTypTiers">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ <xs:enumeration value="06"/>
+ <xs:enumeration value="07"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TCatTiers">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="20"/>
+ <xs:enumeration value="21"/>
+ <xs:enumeration value="22"/>
+ <xs:enumeration value="23"/>
+ <xs:enumeration value="24"/>
+ <xs:enumeration value="25"/>
+ <xs:enumeration value="26"/>
+ <xs:enumeration value="27"/>
+ <xs:enumeration value="28"/>
+ <xs:enumeration value="29"/>
+ <xs:enumeration value="50"/>
+ <xs:enumeration value="60"/>
+ <xs:enumeration value="61"/>
+ <xs:enumeration value="62"/>
+ <xs:enumeration value="63"/>
+ <xs:enumeration value="64"/>
+ <xs:enumeration value="65"/>
+ <xs:enumeration value="70"/>
+ <xs:enumeration value="71"/>
+ <xs:enumeration value="72"/>
+ <xs:enumeration value="73"/>
+ <xs:enumeration value="74"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TNatJur">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="00"/>
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ <xs:enumeration value="06"/>
+ <xs:enumeration value="07"/>
+ <xs:enumeration value="08"/>
+ <xs:enumeration value="09"/>
+ <xs:enumeration value="10"/>
+ <xs:enumeration value="11"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 05/05/2006 EPA HLS00036233 -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunBudget.xsd"/>
+ <xs:complexType name="TBlocDocBudget">
+ <xs:sequence>
+ <xs:element name="Affect" type="cm:Base_Texte10" minOccurs="0"/>
+ <xs:element name="NatDec" type="TNatDec"/>
+ <xs:element name="RepCredit" type="TRepCredit"/>
+ <xs:element name="NumDec" type="cm:Base_Alphanum10" minOccurs="0"/>
+ <xs:element name="Exer" type="cm:Base_Annee"/>
+ <xs:element name="CodMvt" type="TCodMvt"/>
+ <xs:element name="DteDec" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="DteDecExec" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="PJRef" type="cm:TPJReference" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunBudget.xsd"/>
+ <xs:complexType name="TBlocDocBudget">
+ <xs:sequence>
+ <xs:element name="Affect" type="cm:Base_Texte10" minOccurs="0"/>
+ <xs:element name="NatDec" type="TNatDec"/>
+ <xs:element name="NumDec" type="cm:Base_Alphanum10" minOccurs="0"/>
+ <xs:element name="Exer" type="cm:Base_Annee"/>
+ <xs:element name="DteDec" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="DteDecEx" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="DteRcpt" type="cm:Base_Date"/>
+ <xs:element name="DteInteg" type="cm:Base_Date"/>
+ <xs:element name="DtePec" type="cm:Base_Date"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunBudget.xsd"/>
+ <xs:complexType name="TLigneBudget">
+ <xs:sequence>
+ <xs:element name="Nature" type="cm:Base_Texte12" minOccurs="0"/>
+ <xs:element name="LibCpte" type="cm:Base_Texte100" minOccurs="0"/>
+ <xs:element name="Fonction" type="cm:Base_Texte10" minOccurs="0"/>
+ <xs:element name="Operation" type="cm:Base_Num10" minOccurs="0"/>
+ <xs:element name="ContNat" type="cm:Base_Texte12" minOccurs="0"/>
+ <xs:element name="ArtSpe" type="cm:Base_Booleen" minOccurs="0"/>
+ <xs:element name="ContFon" type="cm:Base_Num10" minOccurs="0"/>
+ <xs:element name="ContOp" type="cm:Base_Num10" minOccurs="0"/>
+ <xs:element name="CodRD" type="cm:Base_Booleen"/>
+ <xs:element name="MtPrev" type="cm:Base_Montant"/>
+ <xs:element name="MtReal" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="OpBudg" type="cm:Base_Booleen"/>
+ <xs:element name="TypOpBudg" type="TTypOpBudg" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunBudget.xsd"/>
+ <xs:complexType name="TLigneBudget">
+ <xs:sequence>
+ <xs:element name="Nature" type="cm:Base_Texte12" minOccurs="0"/>
+ <xs:element name="Fonction" type="cm:Base_Texte10" minOccurs="0"/>
+ <xs:element name="Operation" type="cm:Base_Num10" minOccurs="0"/>
+ <xs:element name="ContNat" type="cm:Base_Texte12" minOccurs="0"/>
+ <xs:element name="ArtSpe" type="cm:Base_Booleen" minOccurs="0"/>
+ <xs:element name="ContFon" type="cm:Base_Num10" minOccurs="0"/>
+ <xs:element name="ContOp" type="cm:Base_Num10" minOccurs="0"/>
+ <xs:element name="CodRD" type="cm:Base_Booleen"/>
+ <xs:element name="MtPrev" type="cm:Base_Montant"/>
+ <xs:element name="MtReal" type="cm:Base_Montant"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <!-- Regles de codifications communes au PES Marche-->
+ <xs:complexType name="TNatDec">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ <xs:enumeration value="06"/>
+ <xs:enumeration value="07"/>
+ <xs:enumeration value="08"/>
+ <xs:enumeration value="09"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TRepCredit">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TCodMvt">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="1"/>
+ <xs:enumeration value="2"/>
+ <xs:enumeration value="3"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TTypOpBudg">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="1"/>
+ <xs:enumeration value="2"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/budget/r0/aller" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns="http://www.minefi.gouv.fr/cp/helios/pes_v2/budget/r0/aller" elementFormDefault="unqualified">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunBudget.xsd"/>
+ <xs:include schemaLocation="Class_BudgetAller.xsd"/>
+ <xs:include schemaLocation="Class_LigneBudgetAller.xsd"/>
+ <xs:complexType name="TPES_BudgetAller">
+ <xs:sequence>
+ <xs:element name="EnTeteBudget">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="IdVer" type="cm:Base_Num2"/>
+ <xs:element name="InfoDematerialisee" type="cm:Base_Booleen" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="DocumentBudgetaire" type="TDocumentBudgetaire" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TDocumentBudgetaire">
+ <xs:sequence>
+ <xs:element name="BlocDocBudget" type="TBlocDocBudget"/>
+ <xs:element name="LigneBudget" type="TLigneBudget" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/budget/r0/retour" xmlns="http://www.minefi.gouv.fr/cp/helios/pes_v2/budget/r0/retour" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="unqualified">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunBudget.xsd"/>
+ <xs:include schemaLocation="Class_LigneBudgetRetour.xsd"/>
+ <xs:include schemaLocation="Class_BudgetRetour.xsd"/>
+ <xs:complexType name="TPES_BudgetRetour">
+ <xs:sequence>
+ <xs:element name="EnTeteBudget">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="IdVer" type="cm:Base_Num2"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="DocumentBudgetaire" type="TDocumentBudgetaire" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TDocumentBudgetaire">
+ <xs:sequence>
+ <xs:element name="BlocDocBudget" type="TBlocDocBudget"/>
+ <xs:element name="LigneBudget" type="TLigneBudget" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunComptabilite.xsd"/>
+ <xs:complexType name="TBlocCompte">
+ <xs:sequence>
+ <xs:element name="IdentifiantCompte" type="TIdentifiantCompte">
+ <xs:annotation>
+ <xs:documentation>Identifiant compte - Bloc obligatoire</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="BalanceComptable" type="TBalanceComptable" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Balance comptable - Bloc Facultatif</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TIdentifiantCompte">
+ <xs:sequence>
+ <xs:element name="NumCpte" type="cm:Base_Texte12"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TBalanceComptable">
+ <xs:sequence>
+ <xs:element name="SldDef" type="cm:Base_Booleen" minOccurs="0"/>
+ <xs:element name="MtBeDeb" type="cm:Base_Montant"/>
+ <xs:element name="MtBeCred" type="cm:Base_Montant"/>
+ <xs:element name="MtOpDeb" type="cm:Base_Montant"/>
+ <xs:element name="MtOpCred" type="cm:Base_Montant"/>
+ <xs:element name="MtAnnTitre" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="MtAnnMdt" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="MtBudgPrim" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="MtBudgSupp" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="MtDecMod" type="cm:Base_Montant" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunComptabilite.xsd"/>
+ <xs:complexType name="TInformationEcriture">
+ <xs:sequence>
+ <xs:element name="DteEcrit" type="cm:Base_Date"/>
+ <xs:element name="NumEcrit" type="cm:Base_Alphanum6"/>
+ <xs:element name="LibEcrit" type="cm:Base_Texte100" minOccurs="0"/>
+ <xs:element name="CodEcrit" type="TCodEcrit"/>
+ <xs:element name="Sens" type="cm:Base_Booleen"/>
+ <xs:element name="Montant" type="cm:Base_Montant"/>
+ <xs:element name="Imputation" type="cm:Base_Texte12" minOccurs="0"/>
+ <xs:element name="RefTiers" type="cm:Base_Texte30" minOccurs="0"/>
+ <xs:element name="Nom" type="cm:Base_Texte38" minOccurs="0"/>
+ <xs:element name="EtPce" type="TEtPce" minOccurs="0"/>
+ <xs:element name="DteEtPce" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="CodAct" type="cm:Base_Num3" minOccurs="0"/>
+ <xs:element name="ExerPce" type="cm:Base_Annee" minOccurs="0"/>
+ <xs:element name="IdPce" type="cm:Base_Num13" minOccurs="0"/>
+ <xs:element name="IdLignePce" type="cm:Base_Num6" minOccurs="0"/>
+ <xs:element name="CpteTiers" type="cm:Base_Num12" minOccurs="0"/>
+ <xs:element name="CodCollP503" type="cm:Base_Alphanum3" minOccurs="0"/>
+ <xs:element name="BudCollP503" type="cm:Base_Alphanum2" minOccurs="0"/>
+ <xs:element name="Type" type="TType" minOccurs="0"/>
+ <xs:element name="NatPceOrig" type="TNatPceOrig" minOccurs="0"/>
+ <xs:element name="ExerPceOrig" type="cm:Base_Annee" minOccurs="0"/>
+ <xs:element name="IdPceOrig" type="cm:Base_Num13" minOccurs="0"/>
+ <xs:element name="IdLignePceOrig" type="cm:Base_Num6" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- edited with XML Spy v4.4 (http://www.xmlspy.com) by Michael Conroy (SEMA) -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:include schemaLocation="../../Simple_Type_1.1.xsd"/>
+ <xs:complexType name="TEnveloppe">
+ <xs:sequence>
+ <xs:element name="Parametres" type="TParametres"/>
+ <xs:element name="Emetteur" type="TCarteVisite" minOccurs="0"/>
+ <xs:element name="Recepteur" type="TCarteVisite" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TParametres">
+ <xs:sequence>
+ <xs:element name="Version" type="Base_Num2"/>
+ <xs:element name="TypFic" type="Base_Texte32"/>
+ <xs:element name="NomFic" type="Base_Texte100"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TCarteVisite">
+ <xs:sequence>
+ <xs:element name="Sigle" type="Base_Texte32" minOccurs="0"/>
+ <xs:element name="Adresse" type="Base_Texte38" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun">
+ <!-- Regles de codifications communes au PES Comptabillite-->
+ <!-- 05/05/2006 EPA HLS00036235-->
+ <xs:complexType name="TNatInf">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="0"/>
+ <xs:enumeration value="1"/>
+ <xs:enumeration value="2"/>
+ <xs:enumeration value="3"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TType">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="1"/>
+ <xs:enumeration value="2"/>
+ <xs:enumeration value="3"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TNatFonCpte">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TNatPceOrig">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TEtPce">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="00"/>
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ <xs:enumeration value="06"/>
+ <xs:enumeration value="07"/>
+ <xs:enumeration value="08"/>
+ <xs:enumeration value="09"/>
+ <xs:enumeration value="10"/>
+ <xs:enumeration value="11"/>
+ <xs:enumeration value="12"/>
+ <xs:enumeration value="13"/>
+ <xs:enumeration value="14"/>
+ <xs:enumeration value="15"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TCodEcrit">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="00"/>
+ <xs:enumeration value="10"/>
+ <xs:enumeration value="11"/>
+ <xs:enumeration value="12"/>
+ <xs:enumeration value="13"/>
+ <xs:enumeration value="14"/>
+ <xs:enumeration value="16"/>
+ <xs:enumeration value="17"/>
+ <xs:enumeration value="18"/>
+ <xs:enumeration value="19"/>
+ <xs:enumeration value="20"/>
+ <xs:enumeration value="30"/>
+ <xs:enumeration value="40"/>
+ <xs:enumeration value="50"/>
+ <xs:enumeration value="51"/>
+ <xs:enumeration value="60"/>
+ <xs:enumeration value="70"/>
+ <xs:enumeration value="71"/>
+ <xs:enumeration value="72"/>
+ <xs:enumeration value="73"/>
+ <xs:enumeration value="74"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/comptabilite/r0/retour" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.minefi.gouv.fr/cp/helios/pes_v2/comptabilite/r0/retour" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" elementFormDefault="unqualified">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunComptabilite.xsd"/>
+ <xs:include schemaLocation="Class_Compte.xsd"/>
+ <xs:include schemaLocation="Class_Ecriture.xsd"/>
+ <xs:complexType name="TPES_Comptabilite">
+ <xs:sequence>
+ <xs:element name="EnTeteComptabilite">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="IdVer" type="cm:Base_Num2"/>
+ <xs:element name="Exer" type="cm:Base_Annee"/>
+ <xs:element name="NatInf" type="TNatInf"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="InformationCompte" type="TInformationCompte" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TInformationCompte">
+ <xs:sequence>
+ <xs:element name="BlocCompte" type="TBlocCompte"/>
+ <xs:element name="InformationEcriture" type="TInformationEcriture" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 05/05/2006 EPA HLS00036229-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunDepense.xsd"/>
+ <xs:complexType name="TBlocBordereau">
+ <xs:sequence>
+ <xs:element name="Exer" type="cm:Base_Annee"/>
+ <xs:element name="IdBord" type="cm:Base_Num7"/>
+ <xs:element name="DteBordEm" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="TypBord" type="TTypBord"/>
+ <xs:element name="NbrPce" type="cm:Base_Num5"/>
+ <xs:element name="MtCumulAnnuel" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="MtBordHT" type="cm:Base_Montant"/>
+ <xs:element name="MtBordTVA" type="cm:Base_Montant" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunDepense.xsd"/>
+ <xs:complexType name="TBlocBordereau">
+ <xs:sequence>
+ <xs:element name="Exer" type="cm:Base_Annee"/>
+ <xs:element name="IdBord" type="cm:Base_Num7"/>
+ <xs:element name="DteBordEm" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="TypBord" type="TTypBord"/>
+ <xs:element name="NbrPce" type="cm:Base_Num5"/>
+ <xs:element name="MtBordHT" type="cm:Base_Montant"/>
+ <xs:element name="MtBordTVA" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="DteBordArr" type="cm:Base_Date" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunDepense.xsd"/>
+ <xs:complexType name="TInfoTiersRecette">
+ <xs:complexContent>
+ <xs:extension base="cm:TInfoTiers">
+ <xs:sequence>
+ <xs:element name="DteMalade" type="cm:Base_Date"/>
+ <xs:element name="TypTiers" type="cm:Base_Alphanum2"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunDepense.xsd"/>
+ <xs:complexType name="TBlocLignePiece">
+ <xs:sequence>
+ <xs:element name="InfoLignePce" type="TInfoLignePce">
+ <xs:annotation>
+ <xs:documentation>Information ligne de pièce</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="InfoTVAHLM" type="TInfoTVAHLM" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Information TVA HLM</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="OpSpec" type="TOpSpec" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Opération spécifique</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="RattachPiece" type="TRattachPiece" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Rattachement de pièce</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="LiensIdent" type="TLiensIdent" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Liens identifiants</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TInfoLignePce">
+ <xs:sequence>
+ <xs:element name="IdLigne" type="cm:Base_Num6"/>
+ <xs:element name="Nature" type="cm:Base_Texte12"/>
+ <xs:element name="Fonction" type="cm:Base_Num10" minOccurs="0"/>
+ <xs:element name="Operation" type="cm:Base_Num10" minOccurs="0"/>
+ <xs:element name="CptAna" type="cm:Base_Alphanum10" minOccurs="0"/>
+ <xs:element name="Facture" type="cm:Base_Texte20" minOccurs="0"/>
+ <xs:element name="LibVir1" type="cm:Base_Texte50" minOccurs="0"/>
+ <xs:element name="LibVir2" type="cm:Base_Texte50" minOccurs="0"/>
+ <xs:element name="ModRegl" type="TCodePaiement" minOccurs="0"/>
+ <xs:element name="TVAIntraCom" type="cm:Base_Booleen"/>
+ <xs:element name="CpteTVA" type="cm:Base_Alphanum12" minOccurs="0"/>
+ <xs:element name="CpteTiers" type="cm:Base_Texte12" minOccurs="0"/>
+ <xs:element name="MtHT" type="cm:Base_Montant"/>
+ <xs:element name="MtTVA" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="MtFactHT" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="PJRef" type="cm:TPJReference" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TInfoTVAHLM">
+ <xs:sequence>
+ <xs:element name="RecTVA" type="cm:Base_Booleen"/>
+ <xs:element name="MtHtRes" type="cm:Base_Montant"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TOpSpec">
+ <xs:sequence>
+ <xs:element name="CodOpSpec" type="TCodOpSpec"/>
+ <xs:element name="IdOpSpec" type="cm:Base_Alphanum15"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TRattachPiece">
+ <xs:sequence>
+ <xs:element name="NatPceOrig" type="TNatPceOrig"/>
+ <xs:element name="ExerRat" type="cm:Base_Annee"/>
+ <xs:element name="IdPceOrig" type="cm:Base_Num13"/>
+ <xs:element name="IdLigneOrig" type="cm:Base_Num6" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TLiensIdent">
+ <xs:sequence>
+ <xs:element name="IdConv" type="cm:Base_Texte25" minOccurs="0"/>
+ <xs:element name="IdMarche" type="cm:Base_Texte30" minOccurs="0"/>
+ <xs:element name="IdEmpruntOrdo" type="cm:Base_Texte24" minOccurs="0"/>
+ <xs:element name="IdActif" type="cm:Base_Texte25" minOccurs="0"/>
+ <xs:element name="IdRegie" type="cm:Base_Texte10" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunDepense.xsd"/>
+ <xs:complexType name="TBlocLignePiece">
+ <xs:sequence>
+ <xs:element name="InfoLignePce" type="TInfoLignePce">
+ <xs:annotation>
+ <xs:documentation>Information ligne de pièce</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="InfoPaiement" type="TInfoPaiement" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Information paiement</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="OpSpec" type="TOpSpec" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Opération spécifique</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="RattachPiece" type="TRattachPiece" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Rattachement de pièce</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="LiensIdent" type="TLiensIdent" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Liens identifiants</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TInfoLignePce">
+ <xs:sequence>
+ <xs:element name="IdLigne" type="cm:Base_Num6"/>
+ <xs:element name="Nature" type="cm:Base_Texte12" minOccurs="0"/>
+ <xs:element name="CptAna" type="cm:Base_Alphanum10" minOccurs="0"/>
+ <xs:element name="Facture" type="cm:Base_Texte20" minOccurs="0"/>
+ <xs:element name="LibVir1" type="cm:Base_Texte50" minOccurs="0"/>
+ <xs:element name="LibVir2" type="cm:Base_Texte50" minOccurs="0"/>
+ <xs:element name="ModRegl" type="TCodePaiement" minOccurs="0"/>
+ <xs:element name="CpteTVA" type="cm:Base_Alphanum12" minOccurs="0"/>
+ <xs:element name="CpteTiers" type="cm:Base_Texte12" minOccurs="0"/>
+ <xs:element name="MtHT" type="cm:Base_Montant"/>
+ <xs:element name="MtTVA" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="MtFactHT" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="CessOpp" type="TCessOpp" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TInfoPaiement">
+ <xs:sequence>
+ <xs:element name="NbrPay" type="cm:Base_Num4"/>
+ <xs:element name="MtPayTot" type="cm:Base_Montant"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TOpSpec">
+ <xs:sequence>
+ <xs:element name="CodOpSpec" type="TCodOpSpec"/>
+ <xs:element name="IdOpSpec" type="cm:Base_Alphanum15"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TRattachPiece">
+ <xs:sequence>
+ <xs:element name="NatPceOrig" type="TNatPceOrig"/>
+ <xs:element name="ExerRat" type="cm:Base_Annee"/>
+ <xs:element name="IdPceOrig" type="cm:Base_Num13"/>
+ <xs:element name="IdLigneOrig" type="cm:Base_Num6" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TLiensIdent">
+ <xs:sequence>
+ <xs:element name="IdConv" type="cm:Base_Texte25" minOccurs="0"/>
+ <xs:element name="IdMarche" type="cm:Base_Texte30" minOccurs="0"/>
+ <xs:element name="IdEmpruntOrdo" type="cm:Base_Texte24" minOccurs="0"/>
+ <xs:element name="IdActif" type="cm:Base_Texte25" minOccurs="0"/>
+ <xs:element name="IdRegie" type="cm:Base_Texte10" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunDepense.xsd"/>
+ <xs:complexType name="TBlocPiece">
+ <xs:sequence>
+ <xs:element name="InfoPce" type="TInfoPce">
+ <xs:annotation>
+ <xs:documentation>information pièce - obligatoire</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="DGP" type="TDGP" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>délai global de paiement- facultatif</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TInfoPce">
+ <xs:sequence>
+ <xs:element name="CodServ" type="cm:Base_Texte10" minOccurs="0"/>
+ <xs:element name="Affect" type="cm:Base_Texte10" minOccurs="0"/>
+ <xs:element name="IdPce" type="cm:Base_Num13"/>
+ <xs:element name="TypPce" type="TTypPce"/>
+ <xs:element name="NatPce" type="TNatPce"/>
+ <xs:element name="Obj" type="cm:Base_Texte100" minOccurs="0"/>
+ <xs:element name="DteEch" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="PJRef" type="cm:TPJReference" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="PJ" type="cm:Base_Texte250" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TDGP">
+ <xs:sequence>
+ <xs:element name="Dgp" type="cm:Base_Booleen"/>
+ <xs:element name="DteDebDgp" type="cm:Base_Date"/>
+ <xs:element name="DteFinDgp" type="cm:Base_Date"/>
+ <xs:element name="DureeDgp" type="cm:Base_Num2"/>
+ <xs:element name="CodIntMor" type="TCodIntMor" minOccurs="0"/>
+ <xs:element name="TxIntMor" type="cm:Base_Taux" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunDepense.xsd"/>
+ <xs:complexType name="TBlocPiece">
+ <xs:sequence>
+ <xs:element name="InfoPce" type="TInfoPce">
+ <xs:annotation>
+ <xs:documentation>information ligne de pièce</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="DGP" type="TDGP" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>délai global de paiement</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TInfoPce">
+ <xs:sequence>
+ <xs:element name="CodServ" type="cm:Base_Texte10" minOccurs="0"/>
+ <xs:element name="Affect" type="cm:Base_Texte10" minOccurs="0"/>
+ <xs:element name="IdPce" type="cm:Base_Num13"/>
+ <xs:element name="TypPce" type="TTypPce"/>
+ <xs:element name="NatPce" type="TNatPce"/>
+ <xs:element name="DtePceInt" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="DtePcePec" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="EtatPce" type="TEtatPce"/>
+ <xs:element name="ObsEtat" type="cm:Base_Texte100" minOccurs="0"/>
+ <xs:element name="DtePceRej" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="DtePceInst" type="cm:Base_Date" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TDGP">
+ <xs:sequence>
+ <xs:element name="DteDebSusp" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="DteFinSusp" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="NatSusp" type="TNatSusp" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunDepense.xsd"/>
+ <xs:complexType name="TPaiement">
+ <xs:sequence>
+ <xs:element name="ModeReg" type="TCodePaiement"/>
+ <xs:element name="DtePay" type="cm:Base_Date"/>
+ <xs:element name="IdPay" type="cm:Base_Num12"/>
+ <xs:element name="MtPay" type="cm:Base_Montant"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunDepense.xsd"/>
+ <xs:complexType name="TInfoTiersDepense">
+ <xs:sequence>
+ <xs:element name="IdTiers" type="cm:Base_Texte15" minOccurs="0"/>
+ <xs:element name="NatIdTiers" type="cm:TNatIdTiers" minOccurs="0"/>
+ <xs:element name="DteIdTiers" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="RefTiers" type="cm:Base_Texte30" minOccurs="0"/>
+ <xs:element name="CatTiers" type="cm:TCatTiers"/>
+ <xs:element name="NatJur" type="cm:TNatJur"/>
+ <xs:element name="Civilite" type="cm:Base_Texte10" minOccurs="0"/>
+ <xs:element name="Nom" type="cm:Base_Texte38"/>
+ <xs:element name="ComplNom" type="cm:Base_Texte38" minOccurs="0"/>
+ <xs:element name="Prenom" type="cm:Base_Texte38" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:complexType name="TNatInf">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="0"/>
+ <xs:enumeration value="1"/>
+ <xs:enumeration value="2"/>
+ <xs:enumeration value="3"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TTypBord">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TTypPce">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ <xs:enumeration value="06"/>
+ <xs:enumeration value="07"/>
+ <xs:enumeration value="08"/>
+ <xs:enumeration value="09"/>
+ <xs:enumeration value="10"/>
+ <xs:enumeration value="11"/>
+ <xs:enumeration value="12"/>
+ <xs:enumeration value="13"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TNatPce">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ <xs:enumeration value="06"/>
+ <xs:enumeration value="07"/>
+ <xs:enumeration value="08"/>
+ <xs:enumeration value="09"/>
+ <xs:enumeration value="10"/>
+ <xs:enumeration value="11"/>
+ <xs:enumeration value="12"/>
+ <xs:enumeration value="13"/>
+ <xs:enumeration value="14"/>
+ <xs:enumeration value="15"/>
+ <xs:enumeration value="18"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TEtatPce">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ <xs:enumeration value="06"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TCodIntMor">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TNatSusp">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ <xs:enumeration value="06"/>
+ <xs:enumeration value="07"/>
+ <xs:enumeration value="08"/>
+ <xs:enumeration value="09"/>
+ <xs:enumeration value="10"/>
+ <xs:enumeration value="11"/>
+ <xs:enumeration value="12"/>
+ <xs:enumeration value="13"/>
+ <xs:enumeration value="14"/>
+ <xs:enumeration value="15"/>
+ <xs:enumeration value="16"/>
+ <xs:enumeration value="17"/>
+ <xs:enumeration value="18"/>
+ <xs:enumeration value="19"/>
+ <xs:enumeration value="20"/>
+ <xs:enumeration value="21"/>
+ <xs:enumeration value="22"/>
+ <xs:enumeration value="23"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TCodePaiement">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ <xs:enumeration value="06"/>
+ <xs:enumeration value="07"/>
+ <xs:enumeration value="08"/>
+ <xs:enumeration value="09"/>
+ <xs:enumeration value="10"/>
+ <xs:enumeration value="11"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TCessOpp">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TCodOpSpec">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TNatPceOrig">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TTypDep">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="00"/>
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="11"/>
+ <xs:enumeration value="12"/>
+ <xs:enumeration value="21"/>
+ <xs:enumeration value="22"/>
+ <xs:enumeration value="31"/>
+ <xs:enumeration value="32"/>
+ <xs:enumeration value="33"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/depense/r0/aller" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.minefi.gouv.fr/cp/helios/pes_v2/depense/r0/aller" elementFormDefault="unqualified">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="../../Class_Signature.xsd"/>
+ <xs:include schemaLocation="CommunDepense.xsd"/>
+ <xs:include schemaLocation="Class_BordereauDepenseAller.xsd"/>
+ <xs:include schemaLocation="Class_MandatAller.xsd"/>
+ <xs:include schemaLocation="Class_LigneMandatAller.xsd"/>
+ <xs:include schemaLocation="Class_TiersDepense.xsd"/>
+ <xs:complexType name="TPES_DepenseAller">
+ <xs:sequence>
+ <xs:element name="EnTeteDepense">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="IdVer" type="cm:Base_Num2"/>
+ <xs:element name="InfoDematerialisee" type="cm:Base_Booleen" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Bordereau" type="TBordereau" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TBordereau">
+ <xs:sequence>
+ <xs:element name="BlocBordereau" type="TBlocBordereau"/>
+ <xs:element name="Piece" type="TPiece" maxOccurs="unbounded"/>
+ <xs:group ref="ds:PESSignatureGroup" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="Id" type="xs:ID" use="optional"/>
+ </xs:complexType>
+ <xs:complexType name="TPiece">
+ <xs:sequence>
+ <xs:element name="BlocPiece" type="TBlocPiece"/>
+ <xs:element name="LigneDePiece" type="TLigneDePiece" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TLigneDePiece">
+ <xs:sequence>
+ <xs:element name="BlocLignePiece" type="TBlocLignePiece"/>
+ <xs:element name="Tiers" type="TTiers" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TTiers">
+ <xs:sequence>
+ <xs:element name="InfoTiers" type="TInfoTiersDepense"/>
+ <xs:element name="Adresse" type="cm:TAdresse" minOccurs="0"/>
+ <xs:element name="CpteBancaire" type="cm:TBancaire" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/depense/r0/retour" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns="http://www.minefi.gouv.fr/cp/helios/pes_v2/depense/r0/retour" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="unqualified">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunDepense.xsd"/>
+ <xs:include schemaLocation="Class_BordereauDepenseRetour.xsd"/>
+ <xs:include schemaLocation="Class_MandatRetour.xsd"/>
+ <xs:include schemaLocation="Class_LigneMandatRetour.xsd"/>
+ <xs:include schemaLocation="Class_Paiement.xsd"/>
+ <xs:include schemaLocation="Class_TiersDepense.xsd"/>
+ <xs:complexType name="TPES_DepenseRetour">
+ <xs:sequence>
+ <xs:element name="EnTeteDepense">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="IdVer" type="cm:Base_Num2"/>
+ <xs:element name="NatInf" type="TNatInf"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Bordereau" type="TBordereau" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TBordereau">
+ <xs:sequence>
+ <xs:element name="BlocBordereau" type="TBlocBordereau"/>
+ <xs:element name="Piece" type="TPiece" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TPiece">
+ <xs:sequence>
+ <xs:element name="BlocPiece" type="TBlocPiece"/>
+ <xs:element name="LigneDePiece" type="TLigneDePiece" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TLigneDePiece">
+ <xs:sequence>
+ <xs:element name="BlocLignePiece" type="TBlocLignePiece"/>
+ <xs:element name="Tiers" type="TTiers" minOccurs="0"/>
+ <xs:element name="Paiement" type="TPaiement" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TTiers">
+ <xs:sequence>
+ <xs:element name="InfoTiers" type="TInfoTiersDepense"/>
+ <xs:element name="Adresse" type="cm:TAdresse" minOccurs="0"/>
+ <xs:element name="CpteBancaire" type="cm:TBancaire" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/demat/docbudgetaire" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" xmlns:xad="http://uri.etsi.org/01903/v1.1.1#" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.minefi.gouv.fr/cp/demat/docbudgetaire">
+ <xs:include schemaLocation="Class_LigneBudget.xsd"/>
+ <xs:include schemaLocation="Class_PJReference.xsd"/>
+ <xs:include schemaLocation="CommunBudget.xsd"/>
+ <xs:include schemaLocation="Simple_Type.xsd"/>
+
+ <xs:complexType name="TBudget">
+ <xs:sequence>
+ <xs:element name="EnTeteBudget" type="TEnTeteBudget" form="qualified"/>
+ <xs:element name="BlocBudget" type="TBlocBudget" form="qualified"/>
+ <xs:element name="InformationsGenerales" type="TInformationsGenerales" form="qualified">
+ <xs:annotation>
+ <xs:documentation>Informations statistiques, fiscales et financières</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="LigneBudget" type="TLigneBudget" maxOccurs="unbounded" form="qualified"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="TEnTeteBudget">
+ <xs:sequence>
+ <xs:element name="LibelleEtab" type="Base_Texte100" form="qualified">
+ <xs:annotation><xs:documentation>Libellé du Budget Collectivité</xs:documentation></xs:annotation>
+ </xs:element>
+ <xs:element name="IdEtab" type="Base_Num14" minOccurs="0" form="qualified">
+ <xs:annotation><xs:documentation>Identifiant de l'établissement</xs:documentation></xs:annotation>
+ </xs:element>
+ <xs:element name="CodColl" type="Base_Alphanum3" form="qualified">
+ <xs:annotation><xs:documentation>Code collectivité. : identification de la collectivité ou du budget collectivité</xs:documentation></xs:annotation>
+ </xs:element>
+ <xs:element name="CodBud" type="Base_Alphanum2" form="qualified">
+ <xs:annotation><xs:documentation>Code budget. S'il s'agit du budget principal ou si le code collectivité sert déjà à identifier le budget collectivité, cette rubrique est mise à 00.</xs:documentation></xs:annotation>
+ </xs:element>
+ <xs:element name="Nomenclature" type="TNomenclature" form="qualified">
+ <xs:annotation><xs:documentation>Définition de la nomenclature de la collectivité.</xs:documentation></xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="TBlocBudget">
+ <xs:sequence>
+ <xs:element name="Affect" type="Base_Texte10" minOccurs="0" form="qualified">
+ <xs:annotation><xs:documentation>(PES) Critère d'affectation : Zone libre permettant à l’ordonnateur de déterminer l’affectation du dossier dans les services du comptable. Les critères d'affectation résultent d’une convention entre l'ordonnateur et le comptable.</xs:documentation></xs:annotation>
+ </xs:element>
+ <xs:element name="NatDec" type="TNatDec" form="qualified">
+ <xs:annotation><xs:documentation>Nature de la décision.</xs:documentation></xs:annotation>
+ </xs:element>
+ <xs:element name="NumDec" type="V_Alphanum10" minOccurs="0" form="qualified">
+ <xs:annotation><xs:documentation>N° de la décision (dans le cas d'une DM)</xs:documentation></xs:annotation>
+ </xs:element>
+ <xs:element name="Exer" type="Base_Annee" form="qualified">
+ <xs:annotation><xs:documentation>Millésime de l'exercice budgétaire concerné</xs:documentation></xs:annotation>
+ </xs:element>
+ <xs:element name="PJRef" type="TPJReference" minOccurs="0" maxOccurs="unbounded" form="qualified">
+ <xs:annotation><xs:documentation>Référence à une pièce justificative</xs:documentation></xs:annotation>
+ </xs:element>
+ <xs:element name="DteDec" type="Base_Date" minOccurs="1" form="qualified">
+ <xs:annotation><xs:documentation>(PES) Date de la décision</xs:documentation></xs:annotation>
+ </xs:element>
+ <xs:element name="DteDecEx" type="Base_Date" minOccurs="1" form="qualified">
+ <xs:annotation><xs:documentation>(PES) Date du caractère exécutoire de la décision</xs:documentation></xs:annotation>
+ </xs:element>
+ <xs:element name="NatVote" type="TNatVote" minOccurs="0" form="qualified">
+ <xs:annotation><xs:documentation>Nature de la vote du budget pour indiquer si le vote est au niveau du chapitre ou de l'article pour la section de fonctionnement ; si le vote est au niveau du chapitre ou de l'article pour la section d'investissement.</xs:documentation></xs:annotation>
+ </xs:element>
+ <xs:element name="OpeEquip" type="Base_Booleen" minOccurs="0" form="qualified">
+ <xs:annotation><xs:documentation>Prise en compte des opérations d'équipement</xs:documentation></xs:annotation>
+ </xs:element>
+ <xs:element name="VoteFormelChap" type="Base_Booleen" minOccurs="0" form="qualified">
+ <xs:annotation><xs:documentation>Vote formel sur chacun des chapitres d'équipement</xs:documentation></xs:annotation>
+ </xs:element>
+ <xs:element name="TypProv" type="TTypProv" minOccurs="0" form="qualified">
+ <xs:annotation><xs:documentation>Type de provisions</xs:documentation></xs:annotation>
+ </xs:element>
+ <xs:element name="RefProv" type="Base_Texte50" minOccurs="0" form="qualified">
+ <xs:annotation><xs:documentation>Référence délibéré relatif aux provisions</xs:documentation></xs:annotation>
+ </xs:element>
+ <xs:element name="BudgPrec" type="TBudgPrec" form="qualified">
+ <xs:annotation><xs:documentation>Budget précédent</xs:documentation></xs:annotation>
+ </xs:element>
+ <xs:element name="ReprRes" type="TReprRes" form="qualified">
+ <xs:annotation><xs:documentation>Budget avec ou sans reprise des résultats N-1</xs:documentation></xs:annotation>
+ </xs:element>
+ <xs:element name="NatFonc" type="TNatFonc" form="qualified">
+ <xs:annotation><xs:documentation>Indication si le budget est voté par nature, fonction ou mixte</xs:documentation></xs:annotation>
+ </xs:element>
+ <xs:element name="DepFoncN2" type="Base_Montant" minOccurs="0" form="qualified">
+ <xs:annotation><xs:documentation>002 Résultat reporté N-2 en dépense</xs:documentation></xs:annotation>
+ </xs:element>
+ <xs:element name="RecFoncN2" type="Base_Montant" minOccurs="0" form="qualified">
+ <xs:annotation><xs:documentation>002 Résultat reporté N-2 en recette</xs:documentation></xs:annotation>
+ </xs:element>
+ <xs:element name="DepInvN2" type="Base_Montant" minOccurs="0" form="qualified">
+ <xs:annotation><xs:documentation>001 Solde d'investissement N-2 en dépense</xs:documentation></xs:annotation>
+ </xs:element>
+ <xs:element name="RecInvN2" type="Base_Montant" minOccurs="0" form="qualified">
+ <xs:annotation><xs:documentation>001 Solde d'investissement N-2 en recette</xs:documentation></xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="TInformationsGenerales">
+ <xs:sequence>
+ <xs:element name="Information" type="TInformationGenerale" minOccurs="0" maxOccurs="unbounded" form="qualified"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/demat/docbudgetaire" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" xmlns:xad="http://uri.etsi.org/01903/v1.1.1#" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.minefi.gouv.fr/cp/demat/docbudgetaire">
+ <xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="Class_Signature.xsd"/>
+ <xs:include schemaLocation="Class_Budget.xsd"/>
+ <xs:include schemaLocation="Class_LigneBudget.xsd"/>
+ <xs:include schemaLocation="Class_PJReference.xsd"/>
+ <xs:include schemaLocation="CommunBudget.xsd"/>
+ <xs:include schemaLocation="Simple_Type.xsd"/>
+
+ <xs:complexType name="TDocumentBudgetaire">
+ <xs:sequence>
+ <xs:element name="VersionSchema" type="Base_Version" minOccurs="1" maxOccurs="1" form="qualified"><xs:annotation><xs:documentation>Version du schéma à laquelle le document se conforme. Les schémas sont publiés sur http://www.xemelios.org/doc-budg</xs:documentation></xs:annotation></xs:element>
+ <xs:element name="EnTeteDocBudgetaire" type="TEnTeteDocBudgetaire" form="qualified">
+ <xs:annotation>
+ <xs:documentation>Entête du document décrivant le poste comptable et la collectivité</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Budget" type="TBudget" maxOccurs="unbounded" form="qualified"/>
+ <xs:group ref="ds:PESSignatureGroup" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="TEnTeteDocBudgetaire">
+ <xs:sequence>
+ <xs:element name="DteStr" type="Base_Date" form="qualified">
+ <xs:annotation><xs:documentation>Date d'émission de la structure</xs:documentation></xs:annotation>
+ </xs:element>
+ <xs:element name="LibellePoste" type="Base_Texte100" form="qualified">
+ <xs:annotation><xs:documentation>Libellé du poste comptable</xs:documentation></xs:annotation>
+ </xs:element>
+ <xs:element name="IdPost" type="Base_Texte7" form="qualified">
+ <xs:annotation><xs:documentation>Identification permanente du poste comptable (numéro codique).</xs:documentation></xs:annotation>
+ </xs:element>
+ <xs:element name="LibelleColl" type="Base_Texte100" form="qualified">
+ <xs:annotation><xs:documentation>Libellé de la collectivité</xs:documentation></xs:annotation>
+ </xs:element>
+ <xs:element name="IdColl" type="Base_Num14" minOccurs="0" form="qualified">
+ <xs:annotation><xs:documentation>Identification numérique permanente du budget collectivité / Identifiant national Siret.</xs:documentation></xs:annotation>
+ </xs:element>
+ <xs:element name="FinJur" type="Base_Num20" minOccurs="0" form="qualified">
+ <xs:annotation><xs:documentation>Finess juridique</xs:documentation></xs:annotation>
+ </xs:element>
+ <xs:element name="NatCEPL" type="Base_Texte100" form="qualified">
+ <xs:annotation><xs:documentation>Nature juridique de la CEPL</xs:documentation></xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/demat/docbudgetaire" xmlns="http://www.minefi.gouv.fr/cp/demat/docbudgetaire" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:include schemaLocation="Class_PJReference.xsd"/>
+ <xs:include schemaLocation="CommunBudget.xsd"/>
+
+ <xs:complexType name="TLigneBudget">
+ <xs:sequence>
+ <xs:element name="Nature" type="Base_Texte30" minOccurs="0" form="qualified">
+ <xs:annotation><xs:documentation>Compte par nature</xs:documentation></xs:annotation>
+ </xs:element>
+ <xs:element name="LibCpte" type="Base_Texte100" minOccurs="0" form="qualified">
+ <xs:annotation><xs:documentation>Dans le cadre d'une opération sur compte de tiers ou une opération d'équipement, indication du libellé de cette opération.</xs:documentation></xs:annotation>
+ </xs:element>
+ <xs:element name="Fonction" type="Base_Num10" minOccurs="0" form="qualified">
+ <xs:annotation><xs:documentation>Compte par fonction.</xs:documentation></xs:annotation>
+ </xs:element>
+ <xs:element name="Operation" type="Base_Num10" minOccurs="0" form="qualified">
+ <xs:annotation><xs:documentation>Compte opération</xs:documentation></xs:annotation>
+ </xs:element>
+ <!-- deplace en CaracSup -->
+ <!--xs:element name="ProgAutoNum" type="Base_Num4" minOccurs="0" form="qualified">
+ <xs:annotation><xs:documentation>(M52) dans le cadre d'un programme d'équipement, numéro de l'autorisation de programme y afférant.</xs:documentation></xs:annotation>
+ </xs:element>
+ <xs:element name="ProgAutoLib" type="Base_Texte100" minOccurs="0" form="qualified">
+ <xs:annotation><xs:documentation>(M52) dans le cadre d'un programme d'équipement, libellé de l'autorisation de programme y afférant.</xs:documentation></xs:annotation>
+ </xs:element-->
+ <!--xs:element name="TypOpe" type="TTypOpe" minOccurs="0" form="qualified">
+ <xs:annotation><xs:documentation>Type de l'opération</xs:documentation></xs:annotation>
+ </xs:element-->
+ <xs:element name="ContNat" type="Base_Texte12" minOccurs="0" form="qualified">
+ <xs:annotation><xs:documentation>(PES) Contrôle compte budgétaire. Zone destinée à recevoir le niveau de vote des crédits. Le niveau décrit doit être soit identique soit plus agrégé que le niveau d'exécution.</xs:documentation></xs:annotation>
+ </xs:element>
+ <xs:element name="ArtSpe" type="Base_Booleen" minOccurs="0" form="qualified">
+ <xs:annotation><xs:documentation>Code article spécialisé. Zone permettant d'identifier les articles spécialisés.</xs:documentation></xs:annotation>
+ </xs:element>
+ <xs:element name="ContFon" type="Base_Num10" minOccurs="0" form="qualified">
+ <xs:annotation><xs:documentation>Contrôle fonction. Zone destinée à recevoir le niveau de vote des crédits. Le niveau décrit doit être soit identique soit plus agrégé que le niveau d'exécution.</xs:documentation></xs:annotation>
+ </xs:element>
+ <xs:element name="ContOp" type="Base_Num10" minOccurs="0" form="qualified">
+ <xs:annotation><xs:documentation>Contrôle opération. Zone destinée à recevoir le niveau de vote des crédits. Le niveau décrit doit être soit identique soit plus agrégé que le niveau d'exécution.</xs:documentation></xs:annotation>
+ </xs:element>
+ <xs:element name="CodRD" type="TCodRD" form="qualified">
+ <xs:annotation><xs:documentation>Code recette / dépense. Cette zone permet de déterminer le sens (recette - dépense) du crédit concerné. Valeurs: 0=recette, 1=dépense.</xs:documentation></xs:annotation>
+ </xs:element>
+ <xs:element name="MtBudgPrec" type="Base_Montant" minOccurs="0" form="qualified">
+ <xs:annotation><xs:documentation>Montant budget précédent</xs:documentation></xs:annotation>
+ </xs:element>
+ <xs:element name="MtRARPrec" type="Base_Montant" minOccurs="0" form="qualified">
+ <xs:annotation><xs:documentation>Montant reste à réaliser N-1</xs:documentation></xs:annotation>
+ </xs:element>
+ <xs:element name="MtPropNouv" type="Base_Montant" minOccurs="0" form="qualified">
+ <xs:annotation><xs:documentation>Montant "Propositions nouvelles"</xs:documentation></xs:annotation>
+ </xs:element>
+ <!-- deplace en MtSup -->
+ <!--xs:element name="MtPropHorsSubv" type="Base_Montant" minOccurs="0" form="qualified">
+ <xs:annotation><xs:documentation>(M52) Propositions hors subventions</xs:documentation></xs:annotation>
+ </xs:element-->
+ <xs:element name="MtPrev" type="Base_Montant" minOccurs="0" form="qualified">
+ <xs:annotation><xs:documentation>Montant budget voté</xs:documentation></xs:annotation>
+ </xs:element>
+ <!-- deplace en MtSup -->
+ <!--xs:element name="MtPrevHorsSubv" type="Base_Montant" minOccurs="0" form="qualified">
+ <xs:annotation><xs:documentation>(M52) montant voté hors subventions</xs:documentation></xs:annotation>
+ </xs:element>
+ <xs:element name="MtOpeCumul" type="Base_Montant" minOccurs="0" form="qualified">
+ <xs:annotation><xs:documentation>Pour les opérations d'équipement, indication du "Réalisations cumulées au 1/1/N" (cas d'une opération présentée pour Vote)</xs:documentation></xs:annotation>
+ </xs:element>
+ <xs:element name="MtOpeInfo" type="Base_Montant" minOccurs="0" form="qualified">
+ <xs:annotation><xs:documentation>Pour les opérations d'équipement, indication du "Montant pour information" (cas d'une opération présentée pour information)</xs:documentation></xs:annotation>
+ </xs:element>
+ <xs:element name="MtAPVote" type="Base_Montant" minOccurs="0" form="qualified">
+ <xs:annotation><xs:documentation>(M52) Programmes d'équipement : "AP votée y compris ajustement"</xs:documentation></xs:annotation>
+ </xs:element-->
+ <xs:element name="CredOuv" type="Base_Montant" minOccurs="0" form="qualified">
+ <xs:annotation><xs:documentation>Crédits ouverts à l'article (pour le Compte Administratif)</xs:documentation></xs:annotation>
+ </xs:element>
+ <xs:element name="MtReal" type="Base_Montant" minOccurs="0" form="qualified">
+ <xs:annotation><xs:documentation>Montant signé des réalisations budgétaires. (uniquement pour le compte Administratif)</xs:documentation></xs:annotation>
+ </xs:element>
+ <xs:element name="MtRAR3112" type="Base_Montant" minOccurs="0" form="qualified">
+ <xs:annotation><xs:documentation>RAR au 31/12
+ Dans le cadre du Compte Administratif : Investissement : dépenses engagées non mandatées/recettes restant à émettre sur titre justificatif
+ Fonctionnement : Dépenses ayant donné lieu à service fait mais dont les PJ n'ont pas été émises ou reçues à la fin de la journée complémentaire / recettes afhérentes à l'exercice pour lesquelles le titre n'a pas été émis
+ </xs:documentation></xs:annotation>
+ </xs:element>
+ <!-- deplace en MtSup -->
+ <!--xs:element name="ProdChaRat" type="Base_Montant" minOccurs="0" form="qualified">
+ <xs:annotation><xs:documentation>Produits et charges rattachés ( fonctionnement)</xs:documentation></xs:annotation>
+ </xs:element>
+ <xs:element name="TxMtBrut" type="Base_Montant" minOccurs="0" form="qualified">
+ <xs:annotation><xs:documentation>(M52) Chapitre 941 autres impôts et taxes : Taxe montant brut</xs:documentation></xs:annotation>
+ </xs:element>
+ <xs:element name="TxMtComp" type="Base_Montant" minOccurs="0" form="qualified">
+ <xs:annotation><xs:documentation>(M52) Chapitre 941 autres impôts et taxes : Taxe écrètement</xs:documentation></xs:annotation>
+ </xs:element>
+ <xs:element name="TxMtNet" type="Base_Montant" minOccurs="0" form="qualified">
+ <xs:annotation><xs:documentation>(M52) Chapitre 941 autres impôts et taxes : Montant net</xs:documentation></xs:annotation>
+ </xs:element-->
+ <xs:element name="OpBudg" type="TOpBudg" form="qualified">
+ <xs:annotation><xs:documentation>Cette zone permet d'isoler les opérations d'ordre budgétaire. Valeurs: 0=opération réelle ou mixte 1=opération d'ordre. Par défaut valeur 0. La valeur "T" est utilisée pour les totaux.</xs:documentation></xs:annotation>
+ </xs:element>
+ <xs:element name="TypOpBudg" type="TTypOpBudg" minOccurs="0" form="qualified">
+ <xs:annotation><xs:documentation>Cette zone permet de déterminer si une opération d'ordre est effectuée à l'intérieur d'une même section ou bien de section à section.</xs:documentation></xs:annotation>
+ </xs:element>
+ <xs:element name="OpeCpteTiers" type="Base_Num10" minOccurs="0" form="qualified">
+ <xs:annotation><xs:documentation>Compte sur lequel est effectuée une opération sur compte de tiers</xs:documentation></xs:annotation>
+ </xs:element>
+ <!-- deplace en MtSup -->
+ <!--xs:element name="MtReaOpeCpteTiers" type="Base_Montant" minOccurs="0" form="qualified">
+ <xs:annotation><xs:documentation>(M52) Montant opération pour compte de tiers - réalisations cumulées de l'opération avant l'étape budgétaire</xs:documentation></xs:annotation>
+ </xs:element>
+ <xs:element name="MtICNE" type="Base_Montant" minOccurs="0" form="qualified">
+ <xs:annotation><xs:documentation>Montant des ICNE de l’exercice N dans le cadre d'une opération sur le compte "66112 Intérêts – Rattachement des ICNE"</xs:documentation></xs:annotation>
+ </xs:element>
+ <xs:element name="MtICNEPrec" type="Base_Montant" minOccurs="0" form="qualified">
+ <xs:annotation><xs:documentation>Montant de l’exercice N-1 (dans le cadre d'une opération sur le compte "66112 Intérêts – Rattachement des ICNE")</xs:documentation></xs:annotation>
+ </xs:element-->
+ <!-- transforme en CaracSup -->
+ <!--xs:element name="AECP" type="TAECP" minOccurs="0" form="qualified">
+ <xs:annotation><xs:documentation>(M52) Type de dépense au chapitre (avec AP/CP ou hors AP/CP)</xs:documentation></xs:annotation>
+ </xs:element-->
+ <!-- deplace en MtSup -->
+ <!--xs:element name="MtReaN2" type="Base_Montant" minOccurs="0" form="qualified">
+ <xs:annotation><xs:documentation>(M21) Réalisation N-2</xs:documentation></xs:annotation>
+ </xs:element>
+ <xs:element name="MtCpteAnticip" type="Base_Montant" minOccurs="0" form="qualified">
+ <xs:annotation><xs:documentation>(M21) Compte anticipé N-1</xs:documentation></xs:annotation>
+ </xs:element>
+ <xs:element name="MtExeRecon" type="Base_Montant" minOccurs="0" form="qualified">
+ <xs:annotation><xs:documentation>(M21) Exercice N / Reconduction</xs:documentation></xs:annotation>
+ </xs:element>
+ <xs:element name="MtExeMesNouv" type="Base_Montant" minOccurs="0" form="qualified">
+ <xs:annotation><xs:documentation>(M21) Exercice N / Mesures nouvelles</xs:documentation></xs:annotation>
+ </xs:element>
+ <xs:element name="MtExeN" type="Base_Montant" minOccurs="0" form="qualified">
+ <xs:annotation><xs:documentation>(M21) Exercice N</xs:documentation></xs:annotation>
+ </xs:element-->
+ <xs:element name="MtCumul" type="TMontantCalculated" minOccurs="0" form="qualified">
+ <xs:annotation><xs:documentation>Utilisé pour indiquer des cumuls. Cf. documentation.
+ Exemples : M14 Nature : Présentation générale du budget / Total (=RAR + voté)</xs:documentation></xs:annotation>
+ </xs:element>
+ <!-- deplace en MtSup -->
+ <!--xs:element name="MtBS" type="Base_Montant" minOccurs="0" form="qualified">
+ <xs:annotation><xs:documentation>(M52) dans le cadre de BS ou DM : "Pour information total des crédits propres au BS ou DM"</xs:documentation></xs:annotation>
+ </xs:element-->
+ <xs:element name="MtSup" type="TMontant_Sup" minOccurs="0" maxOccurs="unbounded" form="qualified">
+ <xs:annotation><xs:documentation>Voir description nomenclature pour connaître les codes des différents montants supplémentaires en fonction du document budgétaire</xs:documentation></xs:annotation>
+ </xs:element>
+ <xs:element name="CaracSup" type="TCarac_Sup" minOccurs="0" maxOccurs="unbounded" form="qualified">
+ <xs:annotation><xs:documentation>Voir description nomenclature (DescNomenclature.xml) pour connaître les codes des différentes caractéristiques en fonction du document budgétaire</xs:documentation></xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ <xs:attribute name="calculated" fixed="true" use="optional">
+ <xs:annotation>
+ <xs:documentation>Permet d'indiquer si une ligne est une ligne calculée ou non. Toutes les lignes de totalisation doivent porter cet attribut.</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="generator" type="xs:string" use="optional">
+ <xs:annotation>
+ <xs:documentation>Permet d'indiquer quel composant a généré cette ligne. A n'utiliser qu'a des fins de debug</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="id" type="xs:ID" use="optional">
+ <xs:annotation>
+ <xs:documentation>Permet de spécifier un ID pour la ligne. A n'utiliser qu'a des fins de debug</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:include schemaLocation="Simple_Type.xsd"/>
+ <xs:complexType name="TPJReference">
+ <xs:sequence>
+ <xs:element name="Support" form="qualified">
+ <xs:complexType>
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="IdUnique" type="Base_Alphanum50" form="qualified"/>
+ <xs:element name="NomPJ" type="Base_Texte100" minOccurs="0" form="qualified"/>
+ <xs:element name="TypeAnnexe" type="Base_Texte100" minOccurs="0" form="qualified"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://www.w3.org/2000/09/xmldsig#" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xad="http://uri.etsi.org/01903/v1.1.1#" elementFormDefault="qualified" attributeFormDefault="unqualified">
+ <xs:import namespace="http://uri.etsi.org/01903/v1.1.1#" schemaLocation="xades/XAdES-core-schema.xsd"/>
+ <xs:include schemaLocation="xmldsig/xmldsig-core-schema.xsd"/>
+
+ <xs:complexType name="PESSignatureType">
+ <xs:complexContent>
+ <xs:restriction base="ds:SignatureType">
+ <xs:sequence>
+ <xs:element ref="ds:SignedInfo"/>
+ <xs:element ref="ds:SignatureValue"/>
+ <xs:element ref="ds:KeyInfo" minOccurs="0"/>
+ <xs:element ref="ds:Object" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:group name="PESSignatureGroup">
+ <xs:sequence>
+ <xs:element name="Signature" type="ds:PESSignatureType"/>
+ </xs:sequence>
+ </xs:group>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:include schemaLocation="Simple_Type.xsd"></xs:include>
+ <xs:complexType name="TNatDec">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01">
+ <xs:annotation>
+ <xs:documentation>Budget primitif</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="02">
+ <xs:annotation>
+ <xs:documentation>Décision modificative</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="03">
+ <xs:annotation>
+ <xs:documentation>Budget supplémentaire</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="09">
+ <xs:annotation>
+ <xs:documentation>Compte administratif</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TTypOpBudg">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="1">
+ <xs:annotation>
+ <xs:documentation>Opération à l'intérieur d'une section</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="2">
+ <xs:annotation>
+ <xs:documentation>Opération de section à section</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TNomenclature">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="M14_SIMPLIFIE">
+ <xs:annotation>
+ <xs:documentation>M14 Plan de compte simplifié</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="M14_DEVELOPPE">
+ <xs:annotation>
+ <xs:documentation>M14 Plan de compte développé</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="M14_CCAS">
+ <xs:annotation>
+ <xs:documentation>M14 Plan de compte spécifique CCAS et CIAS</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="M14_CE">
+ <xs:annotation>
+ <xs:documentation>M14 Plan de compte spécifique Caisse des écoles</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="M52"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TNatVote">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="FcIc">
+ <xs:annotation>
+ <xs:documentation>Pour la section de fonctionnement le vote est au niveau du chapitre. Pour la section d'investissement le vote est au niveau du chapitre.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="FaIc">
+ <xs:annotation>
+ <xs:documentation>Pour la section de fonctionnement le vote est au niveau de l'article. Pour la section d'investissement le vote est au niveau du chapitre.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="FcIa">
+ <xs:annotation>
+ <xs:documentation>Pour la section de fonctionnement le vote est au niveau du chapitre. Pour la section d'investissement le vote est au niveau de l'article.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="FaIa">
+ <xs:annotation>
+ <xs:documentation>Pour la section de fonctionnement le vote est au niveau de l'article. Pour la section d'investissement le vote est au niveau de l'article.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TTypProv">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="1">
+ <xs:annotation>
+ <xs:documentation>Semi budgétaire</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="2">
+ <xs:annotation>
+ <xs:documentation>Budgétaire</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TBudgPrec">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="1">
+ <xs:annotation>
+ <xs:documentation>Primitif</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="2">
+ <xs:annotation>
+ <xs:documentation>Cumulé</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TReprRes">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="1">
+ <xs:annotation>
+ <xs:documentation>sans reprise des résultats de l’exercice N-1</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="2">
+ <xs:annotation>
+ <xs:documentation>avec reprise anticipée des résultats de l’exercice N-1</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="3">
+ <xs:annotation>
+ <xs:documentation>avec reprise des résultats de l’exercice N-1 après le vote du compte administratif N-1</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TNatFonc">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="1">
+ <xs:annotation>
+ <xs:documentation>Le budget est voté par nature.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="2">
+ <xs:annotation>
+ <xs:documentation>Le budget est voté par fonction.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="3">
+ <xs:annotation>
+ <xs:documentation>Le vote du budget est mixte.</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TTypOpe">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="1">
+ <xs:annotation>
+ <xs:documentation>Pour une opération, son type est "Pour Vote"</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="2">
+ <xs:annotation>
+ <xs:documentation>Pour une opération, son type est "Pour Information"</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <!-- remplace par une CaracSup -->
+ <!--xs:complexType name="TAECP">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="1">
+ <xs:annotation>
+ <xs:documentation>(M52) Type de dépense au chapitre : avec AP/CP</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="2">
+ <xs:annotation>
+ <xs:documentation>(M52) Type de dépense au chapitre : hors AP/CP</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType -->
+ <xs:complexType name="TCodRD">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="R">
+ <xs:annotation>
+ <xs:documentation>Recette</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="D">
+ <xs:annotation>
+ <xs:documentation>Dépense</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TOpBudg">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="0">
+ <xs:annotation>
+ <xs:documentation>Opération réelle ou mixte</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="1">
+ <xs:annotation>
+ <xs:documentation>Opération d'ordre</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="T">
+ <xs:annotation>
+ <xs:documentation>Total</xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TMontantCalculated">
+ <xs:attribute name="V" type="V_Montant" use="required"/>
+ <xs:attribute name="calculated" fixed="true" use="optional">
+ <xs:annotation>
+ <xs:documentation>Permet d'indiquer qu'un tel montant a été calculé</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TMontant_Sup">
+ <xs:attribute name="Code" type="V_Texte30" use="required"/>
+ <xs:attribute name="V" type="V_Montant"/>
+ </xs:complexType>
+ <xs:complexType name="TCarac_Sup">
+ <xs:attribute name="Code" type="V_Texte30" use="required"/>
+ <xs:attribute name="V" type="V_Texte100"/>
+ </xs:complexType>
+ <xs:complexType name="TInformationGenerale">
+ <xs:attribute name="Code" type="V_Texte30" use="required"/>
+ <xs:attribute name="V" type="V_Texte100"/>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns="http://www.minefi.gouv.fr/cp/demat/docbudgetaire" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.minefi.gouv.fr/cp/demat/docbudgetaire">
+ <xs:include schemaLocation="Class_DocumentBudgetaire.xsd"/>
+ <xs:element name="DocumentBudgetaire" type="TDocumentBudgetaire">
+ <xs:annotation>
+ <xs:documentation>Rassemble les informations liées au document budgétaire.
+ (PES) Rassemble certaines informations des objets TPES_BudgetAller et EnTeteBudget du PES</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- edited with XMLSPY v5 rel. 2 U (http://www.xmlspy.com) by SERGE MURET (SEMA GROUP SA) -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:complexType name="Base_Alphanum10">
+ <xs:attribute name="V" type="V_Alphanum10" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Alphanum10">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="10"/>
+ <xs:pattern value="[0-9a-zA-Z]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Alphanum2">
+ <xs:attribute name="V" type="V_Alphanum2" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Alphanum2">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="2"/>
+ <xs:pattern value="[0-9a-zA-Z]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Alphanum3">
+ <xs:attribute name="V" type="V_Alphanum3" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Alphanum3">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="3"/>
+ <xs:pattern value="[0-9a-zA-Z]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Alphanum50">
+ <xs:attribute name="V" type="V_Alphanum50" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Alphanum50">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="50"/>
+ <xs:pattern value="[0-9a-zA-Z]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Num4">
+ <xs:attribute name="V" type="V_Num4" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Num4">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="4"/>
+ <xs:pattern value="[0-9]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Num8">
+ <xs:attribute name="V" type="V_Num8" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Num8">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="8"/>
+ <xs:pattern value="[0-9]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Num10">
+ <xs:attribute name="V" type="V_Num10" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Num10">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="10"/>
+ <xs:pattern value="[0-9]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Num14">
+ <xs:attribute name="V" type="V_Num14" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Num14">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="14"/>
+ <xs:pattern value="[0-9]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Num20">
+ <xs:attribute name="V" type="V_Num20" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Num20">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="20"/>
+ <xs:pattern value="[0-9]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Texte7">
+ <xs:attribute name="V" type="V_Texte7" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Texte7">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="7"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Texte10">
+ <xs:attribute name="V" type="V_Texte10" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Texte10">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="10"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Texte12">
+ <xs:attribute name="V" type="V_Texte12" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Texte12">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="12"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Texte30">
+ <xs:attribute name="V" type="V_Texte30" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Texte30">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="30"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Texte50">
+ <xs:attribute name="V" type="V_Texte50" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Texte50">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="50"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Texte100">
+ <xs:attribute name="V" type="V_Texte100" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Texte100">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="100"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Annee">
+ <xs:attribute name="V" type="V_Annee" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Annee">
+ <xs:restriction base="xs:gYear"/>
+ </xs:simpleType>
+ <xs:complexType name="Base_Booleen">
+ <xs:attribute name="V" type="V_Booleen" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Booleen">
+ <xs:restriction base="xs:boolean"/>
+ </xs:simpleType>
+ <xs:complexType name="Base_Date">
+ <xs:attribute name="V" type="V_Date" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Date">
+ <xs:restriction base="xs:date"/>
+ </xs:simpleType>
+ <xs:complexType name="Base_Montant">
+ <xs:attribute name="V" type="V_Montant" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Montant">
+ <xs:restriction base="xs:decimal">
+ <xs:totalDigits value="14"/>
+ <xs:fractionDigits value="2"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Taux">
+ <xs:attribute name="V" type="V_Taux" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Taux">
+ <xs:restriction base="xs:decimal">
+ <xs:totalDigits value="5"/>
+ <xs:fractionDigits value="2"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Version">
+ <xs:attribute name="V" type="V_Version" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Version">
+ <xs:restriction base="xs:string">
+ <xs:pattern value="[-0-9a-zA-Z+_\.]*"></xs:pattern>
+ </xs:restriction>
+ </xs:simpleType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunInventaire.xsd"/>
+ <xs:complexType name="TEtatActif">
+ <xs:sequence>
+ <xs:element name="TypeMessage" type="TTypeMessage">
+ <xs:annotation>
+ <xs:documentation>Type de message</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="IdentificationPiece" type="TIdentPiece">
+ <xs:annotation>
+ <xs:documentation>Identification de la pièce</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="IdentificationBien" type="TIdentificationBien" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Identification du bien</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="InformationBien" type="TInformationBien" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Informations sur le bien</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="SortieDuBien" type="TSortieDuBien" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Sortie du bien</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TTypeMessage">
+ <xs:sequence>
+ <xs:element name="TypEnreg" type="TTypEnreg"/>
+ <xs:element name="TypAct" type="TTypAct"/>
+ <xs:element name="Mt" type="cm:Base_Montant"/>
+ <xs:element name="Exer" type="cm:Base_Annee"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TIdentPiece">
+ <xs:sequence>
+ <xs:element name="IdPce" type="cm:Base_Num8"/>
+ <xs:element name="IdLigne" type="cm:Base_Num6"/>
+ <xs:element name="Nature" type="cm:Base_Texte12"/>
+ <xs:element name="Fonction" type="cm:Base_Num10" minOccurs="0"/>
+ <xs:element name="Operation" type="cm:Base_Num10" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TIdentificationBien">
+ <xs:sequence>
+ <xs:element name="NumInvent" type="cm:Base_Texte25" minOccurs="0"/>
+ <xs:element name="Affect" type="cm:Base_Texte10" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TInformationBien">
+ <xs:sequence>
+ <xs:element name="CatImmo" type="cm:Base_Texte6"/>
+ <xs:element name="DurAmt" type="cm:Base_Num3" minOccurs="0"/>
+ <xs:element name="DteAcqui" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="DteSer" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="DesBien" type="cm:Base_Texte250" minOccurs="0"/>
+ <xs:element name="DesCompl" type="cm:Base_Texte100" minOccurs="0"/>
+ <xs:element name="IdColl" type="cm:Base_Num14" minOccurs="0"/>
+ <xs:element name="CodColl" type="cm:Base_Alphanum3" minOccurs="0"/>
+ <xs:element name="CodBud" type="cm:Base_Alphanum2" minOccurs="0"/>
+ <xs:element name="DteInteg" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="ImpDefNat" type="cm:Base_Texte12" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TSortieDuBien">
+ <xs:sequence>
+ <xs:element name="ModSort" type="TModSort"/>
+ <xs:element name="DteSort" type="cm:Base_Date"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun">
+ <!-- Regles de codifications communes au PES Inventaire-->
+ <xs:complexType name="TTypAct">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TTypEnreg">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ <xs:enumeration value="06"/>
+ <xs:enumeration value="07"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TModSort">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ <xs:enumeration value="06"/>
+ <xs:enumeration value="07"/>
+ <xs:enumeration value="08"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/etatactif/r0/aller" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns="http://www.minefi.gouv.fr/cp/helios/pes_v2/etatactif/r0/aller" elementFormDefault="unqualified">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunInventaire.xsd"/>
+ <xs:include schemaLocation="Class_Inventaire.xsd"/>
+ <xs:complexType name="TPES_EtatActif">
+ <xs:sequence>
+ <xs:element name="EnTeteEtatActif">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="IdVer" type="cm:Base_Num2"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="EtatActif" type="TEtatActif" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunEmprunts.xsd"/>
+ <xs:complexType name="TIdentificationEmprunt">
+ <xs:sequence>
+ <xs:element name="TypFlux" type="TTypFlux"/>
+ <xs:element name="TypMvt" type="TTypMvt"/>
+ <xs:element name="Affect" type="cm:Base_Texte10" minOccurs="0"/>
+ <xs:element name="NumEmpOrdo" type="cm:Base_Texte24"/>
+ <xs:element name="ObjEmp" type="cm:Base_Texte250" minOccurs="0"/>
+ <xs:element name="MtEmp" type="cm:Base_Montant"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TInformationEmprunt">
+ <xs:sequence>
+ <xs:element name="NumEmpPret" type="cm:Base_Texte24"/>
+ <xs:element name="TypEmp" type="TTypEmp"/>
+ <xs:element name="TypMon" type="TTypMon" minOccurs="0"/>
+ <xs:element name="PerRemb" type="TPerRemb"/>
+ <xs:element name="IntDiff" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="TypTx" type="TTypTx"/>
+ <xs:element name="Tx" type="cm:Base_Taux"/>
+ <xs:element name="FrsDossier" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="Duree" type="cm:Base_Num3"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TLigneTableauAmt">
+ <xs:sequence>
+ <xs:element name="DtePai" type="cm:Base_Date"/>
+ <xs:element name="FraisEch" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="Capital" type="cm:Base_Montant"/>
+ <xs:element name="Interet" type="cm:Base_Montant"/>
+ <xs:element name="InteretDiffere" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="MtCrd" type="cm:Base_Montant"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunEmprunts.xsd"/>
+ <xs:complexType name="TInfoTiers">
+ <xs:sequence>
+ <xs:element name="IdTiers" type="cm:Base_Texte15" minOccurs="0"/>
+ <xs:element name="Civilite" type="cm:Base_Texte10" minOccurs="0"/>
+ <xs:element name="Nom" type="cm:Base_Texte38"/>
+ <xs:element name="ComplNom" type="cm:Base_Texte38" minOccurs="0"/>
+ <xs:element name="Prenom" type="cm:Base_Texte38" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:complexType name="TTypFlux">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TTypMvt">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TTypEmp">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TPerRemb">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ <xs:enumeration value="06"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TTypMon">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ <xs:enumeration value="06"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TTypTx">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/emprunt/r0/aller" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.minefi.gouv.fr/cp/helios/pes_v2/emprunt/r0/aller" elementFormDefault="unqualified">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunEmprunts.xsd"/>
+ <xs:include schemaLocation="Class_Emprunt.xsd"/>
+ <xs:include schemaLocation="Class_TiersEmprunt.xsd"/>
+ <xs:complexType name="TPES_EtatPassif">
+ <xs:sequence>
+ <xs:element name="EnTeteEtatPassif">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="IdVer" type="cm:Base_Num2"/>
+ <xs:element name="Exer" type="cm:Base_Annee"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="EtatPassif" type="TEtatPassif" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TEtatPassif">
+ <xs:sequence>
+ <xs:element name="IdentificationEmprunt" type="TIdentificationEmprunt"/>
+ <xs:element name="InformationEmprunt" type="TInformationEmprunt" minOccurs="0"/>
+ <xs:element name="Tiers" type="TTiers"/>
+ <xs:element name="LigneTableauAmt" type="TLigneTableauAmt" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TTiers">
+ <xs:sequence>
+ <xs:element name="InfoTiers" type="TInfoTiers"/>
+ <xs:element name="Adresse" type="cm:TAdresse" minOccurs="0"/>
+ <xs:element name="CpteBancaire" type="cm:TBancaire" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunMarche.xsd"/>
+ <xs:complexType name="TBlocInformationMarche">
+ <xs:sequence>
+ <xs:element name="IdentificationMarche" type="TIdentificationMarche">
+ <xs:annotation>
+ <xs:documentation>Identification du marché</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="FicheRecensementEco" type="TFicheRecensementEco" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Fiche de recensement économique</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="FicheSuiviMarche" type="TFicheSuiviMarche" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Fiche de suivi du marché</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="PJRef" type="cm:TPJReference" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TIdentificationMarche">
+ <xs:sequence>
+ <xs:element name="Affect" type="cm:Base_Texte10" minOccurs="0"/>
+ <xs:element name="IdMar" type="cm:Base_Texte30"/>
+ <xs:element name="IdDoc" type="cm:Base_Texte2"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TFicheRecensementEco">
+ <xs:sequence>
+ <xs:element name="Ppu" type="cm:Base_Num17"/>
+ <xs:element name="Passation" type="TPassation"/>
+ <xs:element name="CatCom" type="TCatCom"/>
+ <xs:element name="TypDep" type="TTypDep" minOccurs="0"/>
+ <xs:element name="OpReseau" type="cm:Base_Booleen" minOccurs="0"/>
+ <xs:element name="CodCPV" type="cm:Base_Num9"/>
+ <xs:element name="NatOuvr" type="cm:Base_Num6"/>
+ <xs:element name="MtHT" type="cm:Base_Montant"/>
+ <xs:element name="DteNotif" type="cm:Base_Date"/>
+ <xs:element name="DureeMar" type="cm:Base_Num3"/>
+ <xs:element name="Section" type="cm:Base_Booleen"/>
+ <xs:element name="Alloti" type="cm:Base_Booleen"/>
+ <xs:element name="JOUE" type="cm:Base_Alphanum10" minOccurs="0"/>
+ <xs:element name="PME" type="cm:Base_Booleen" minOccurs="0"/>
+ <xs:element name="CodeAPE" type="cm:Base_Alphanum4" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TFicheSuiviMarche">
+ <xs:sequence>
+ <xs:element name="TypMar" type="TTypMar"/>
+ <xs:element name="TypDoc" type="TTypDoc" minOccurs="0"/>
+ <xs:element name="IdMarIni" type="cm:Base_Texte30" minOccurs="0"/>
+ <xs:element name="IdDocIni" type="cm:Base_Texte2" minOccurs="0"/>
+ <xs:element name="ObjMar" type="cm:Base_Texte250" minOccurs="0"/>
+ <xs:element name="MultiBudg" type="cm:Base_Booleen"/>
+ <xs:element name="CarPx" type="TCarPx"/>
+ <xs:element name="Prest" type="TPrest"/>
+ <xs:element name="NatPrest" type="cm:Base_Texte50" minOccurs="0"/>
+ <xs:element name="GarApp" type="TGarApp" minOccurs="0"/>
+ <xs:element name="DelaiGar" type="cm:Base_Num2" minOccurs="0"/>
+ <xs:element name="MtGar" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="TxGar" type="cm:Base_Taux" minOccurs="0"/>
+ <xs:element name="TypGrp" type="TTypGrp" minOccurs="0"/>
+ <xs:element name="MtGlobSSTrait" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="DteExec" type="cm:Base_Date"/>
+ <xs:element name="DteOrdServ" type="cm:Base_Date"/>
+ <xs:element name="MarSimp" type="cm:Base_Booleen"/>
+ <xs:element name="Avance" type="TAvance" minOccurs="0"/>
+ <xs:element name="Penalite" type="cm:Base_Booleen"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- edited with XML Spy v4.4 (http://www.xmlspy.com) by Michael Conroy (SEMA) -->
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunMarche.xsd"/>
+ <xs:complexType name="TInfoTiersMarche">
+ <xs:sequence>
+ <xs:element name="IdTiers" type="cm:Base_Texte15" minOccurs="0"/>
+ <xs:element name="NatIdTiers" type="cm:TNatIdTiers" minOccurs="0"/>
+ <xs:element name="DteIdTiers" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="RefTiers" type="cm:Base_Texte30" minOccurs="0"/>
+ <xs:element name="CatTiers" type="cm:TCatTiers"/>
+ <xs:element name="NatJur" type="cm:TNatJur"/>
+ <xs:element name="TypTiers" type="cm:TTypTiers"/>
+ <xs:element name="Civilite" type="cm:Base_Texte10" minOccurs="0"/>
+ <xs:element name="Nom" type="cm:Base_Texte38"/>
+ <xs:element name="ComplNom" type="cm:Base_Texte38" minOccurs="0"/>
+ <xs:element name="Prenom" type="cm:Base_Texte38" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TMontant">
+ <xs:sequence>
+ <xs:element name="Mt" type="cm:Base_Montant"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <!-- Regles de codifications communes au PES Marche-->
+ <xs:complexType name="TTypMar">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ <xs:enumeration value="06"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TTypDoc">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ <xs:enumeration value="06"/>
+ <xs:enumeration value="07"/>
+ <xs:enumeration value="08"/>
+ <xs:enumeration value="09"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TTypDep">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TPassation">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ <xs:enumeration value="06"/>
+ <xs:enumeration value="07"/>
+ <xs:enumeration value="08"/>
+ <xs:enumeration value="09"/>
+ <xs:enumeration value="10"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TCatCom">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TCarPx">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TTypGrp">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="0"/>
+ <xs:enumeration value="1"/>
+ <xs:enumeration value="2"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TAvance">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="0"/>
+ <xs:enumeration value="1"/>
+ <xs:enumeration value="2"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TPrest">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TGarApp">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TTypTiers">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/marche/r0/aller" xmlns="http://www.minefi.gouv.fr/cp/helios/pes_v2/marche/r0/aller" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" elementFormDefault="unqualified">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunMarche.xsd"/>
+ <xs:include schemaLocation="Class_InformationMarche.xsd"/>
+ <xs:include schemaLocation="Class_TiersMarche.xsd"/>
+ <xs:complexType name="TPES_Marche">
+ <xs:sequence>
+ <xs:element name="EnTeteMarche">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="IdVer" type="cm:Base_Num2"/>
+ <xs:element name="InfoDematerialisee" type="cm:Base_Booleen" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="InformationMarche" type="TInformationMarche" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TInformationMarche">
+ <xs:sequence>
+ <xs:element name="BlocInformationMarche" type="TBlocInformationMarche"/>
+ <xs:element name="TiersMarche" type="TTiers" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TTiers">
+ <xs:sequence>
+ <xs:element name="InfoTiers" type="TInfoTiersMarche"/>
+ <xs:element name="Montant" type="TMontant" minOccurs="0"/>
+ <xs:element name="Adresse" type="cm:TAdresse" minOccurs="0"/>
+ <xs:element name="CpteBancaire" type="cm:TBancaire" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunRecette.xsd"/>
+ <xs:complexType name="TBlocBordereau">
+ <xs:sequence>
+ <xs:element name="Exer" type="cm:Base_Annee"/>
+ <xs:element name="IdBord" type="cm:Base_Num7"/>
+ <xs:element name="DteBordEm" type="cm:Base_Date"/> <!-- HLS00052096 -->
+ <xs:element name="TypBord" type="TTypBord"/>
+ <xs:element name="NbrPce" type="cm:Base_Num5"/>
+ <xs:element name="MtCumulAnnuel" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="MtBordHt" type="cm:Base_Montant"/>
+ <xs:element name="MtBordTVA" type="cm:Base_Montant" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunRecette.xsd"/>
+ <xs:complexType name="TBlocBordereau">
+ <xs:sequence>
+ <xs:element name="Exer" type="cm:Base_Annee"/>
+ <xs:element name="IdBord" type="cm:Base_Num7"/>
+ <xs:element name="DteBordEm" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="TypBord" type="TTypBord"/>
+ <xs:element name="NbrPce" type="cm:Base_Num5"/>
+ <xs:element name="MtBordHt" type="cm:Base_Montant"/>
+ <xs:element name="MtBordTVA" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="DteBordArr" type="cm:Base_Date" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunRecette.xsd"/>
+ <xs:complexType name="TBlocLignePiece">
+ <xs:sequence>
+ <xs:element name="InfoLignePiece" type="TInfoLignePiece">
+ <xs:annotation>
+ <xs:documentation>Informations Ligne de Piece</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="InfoPrelevement" type="TInfoPrelevement" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Informations Prélèvement</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="InfoAssure" type="TInfoAssure" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Informations Assuré</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="RattachPiece" type="TRattachPiece" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Rattachement Pièce</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="LiensIdent" type="TLiensIdent" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Liens identifiants</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TInfoLignePiece">
+ <xs:sequence>
+ <xs:element name="IdLigne" type="cm:Base_Num6"/>
+ <xs:element name="ObjLignePce" type="cm:Base_Texte160" minOccurs="0"/>
+ <xs:element name="CodProdLoc" type="cm:Base_Alphanum4" minOccurs="0"/>
+ <xs:element name="FinGeo" type="cm:Base_Num9" minOccurs="0"/>
+ <xs:element name="CodEtGeo" type="cm:Base_Alphanum3" minOccurs="0"/>
+ <xs:element name="Nature" type="cm:Base_Texte12"/>
+ <xs:element name="Fonction" type="cm:Base_Num10" minOccurs="0"/>
+ <xs:element name="Operation" type="cm:Base_Num10" minOccurs="0"/>
+ <xs:element name="CptAna" type="cm:Base_Alphanum10" minOccurs="0"/>
+ <xs:element name="TxTva" type="cm:Base_Taux" minOccurs="0"/>
+ <xs:element name="Majo" type="cm:Base_Booleen"/>
+ <xs:element name="DteMajo" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="TxMajo" type="cm:Base_Taux" minOccurs="0"/>
+ <xs:element name="CpteTiers" type="cm:Base_Texte12" minOccurs="0"/>
+ <xs:element name="TvaIntraCom" type="cm:Base_Booleen"/>
+ <xs:element name="CpteTva" type="cm:Base_Alphanum12" minOccurs="0"/>
+ <xs:element name="MtHT" type="cm:Base_Montant"/>
+ <xs:element name="MtTVA" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="MtNonMajo" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="PJRef" type="cm:TPJReference" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TInfoPrelevement">
+ <xs:sequence>
+ <xs:element name="NatPrel" type="TNatPrel"/>
+ <xs:element name="PerPrel" type="TPerPrel"/>
+ <xs:element name="DtePrel" type="cm:Base_Date"/>
+ <xs:element name="MtPrel" type="cm:Base_Montant"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TInfoAssure">
+ <xs:sequence>
+ <xs:element name="CodAssDeb" type="TCodAssDeb"/>
+ <xs:element name="CodAyantDroit" type="TCodAyantDroit" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TRattachPiece">
+ <xs:sequence>
+ <xs:element name="NatPceOrig" type="TNatPceOrig"/>
+ <xs:element name="ExerRat" type="cm:Base_Annee"/>
+ <xs:element name="IdPceOrig" type="cm:Base_Num13"/>
+ <xs:element name="IdLigneOrig" type="cm:Base_Num6" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TLiensIdent">
+ <xs:sequence>
+ <xs:element name="IdEncaissement" type="cm:Base_Num12" minOccurs="0"/>
+ <xs:element name="IdConv" type="cm:Base_Texte25" minOccurs="0"/>
+ <xs:element name="IdMarche" type="cm:Base_Texte30" minOccurs="0"/>
+ <xs:element name="IdCaution" type="cm:Base_Texte25" minOccurs="0"/>
+ <xs:element name="IdEmpruntOrdo" type="cm:Base_Texte24" minOccurs="0"/>
+ <xs:element name="IdActif" type="cm:Base_Texte25" minOccurs="0"/>
+ <xs:element name="IdRegie" type="cm:Base_Texte10" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunRecette.xsd"/>
+ <xs:complexType name="TBlocLignePiece">
+ <xs:sequence>
+ <xs:element name="InfoLignePiece" type="TInfoLignePiece">
+ <xs:annotation>
+ <xs:documentation>Informations Ligne de Piece</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="InfoRecouvrement" type="TInfoRecouvrement" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Informations Recouvrement</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="InfoEcheancier" type="TInfoEcheancier" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Informations Echéancier</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="RattachPieceRec" type="TRattachPiece" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Rattachement Piece</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="LiensIdentRec" type="TLiensIdent" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Liens identifiants</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="InfoSuspPour" type="TInfoSuspPour" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Informations suspension et poursuite</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="InfoContentieux" type="TInfoContentieux" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Informations Contentieux</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="InfoAmiableContentieux" type="TInfoAmiableContentieux" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>Informations amiable et contentieux</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="InfoPourExt" type="TInfoPourExt" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Informations EPE</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TInfoLignePiece">
+ <xs:sequence>
+ <xs:element name="IdLigne" type="cm:Base_Num6"/>
+ <xs:element name="ObjLignePce" type="cm:Base_Texte160" minOccurs="0"/>
+ <xs:element name="CodProdLoc" type="cm:Base_Alphanum4" minOccurs="0"/>
+ <xs:element name="FinGeo" type="cm:Base_Num9" minOccurs="0"/>
+ <xs:element name="CodEtGeo" type="cm:Base_Alphanum3" minOccurs="0"/>
+ <xs:element name="Nature" type="cm:Base_Texte12" minOccurs="0"/>
+ <xs:element name="CptAna" type="cm:Base_Alphanum10" minOccurs="0"/>
+ <xs:element name="CpteTiers" type="cm:Base_Texte12" minOccurs="0"/>
+ <xs:element name="CpteTva" type="cm:Base_Texte12" minOccurs="0"/>
+ <xs:element name="MtHT" type="cm:Base_Montant"/>
+ <xs:element name="MtTVA" type="cm:Base_Montant" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TInfoRecouvrement">
+ <xs:sequence>
+ <xs:element name="NbrReco" type="cm:Base_Num4" minOccurs="0"/>
+ <xs:element name="MtRecoTot" type="cm:Base_Montant" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TInfoEcheancier">
+ <xs:sequence>
+ <xs:element name="DteDerPai" type="cm:Base_Date"/>
+ <xs:element name="NbrPai" type="cm:Base_Num4"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TRattachPiece">
+ <xs:sequence>
+ <xs:element name="NatPceOrig" type="TNatPceOrig"/>
+ <xs:element name="ExerRat" type="cm:Base_Annee"/>
+ <xs:element name="IdPceOrig" type="cm:Base_Num13"/>
+ <xs:element name="IdLigneOrig" type="cm:Base_Num6" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TLiensIdent">
+ <xs:sequence>
+ <xs:element name="IdEncaissement" type="cm:Base_Num12" minOccurs="0"/>
+ <xs:element name="IdConv" type="cm:Base_Texte25" minOccurs="0"/>
+ <xs:element name="IdMarche" type="cm:Base_Texte30" minOccurs="0"/>
+ <xs:element name="IdCaution" type="cm:Base_Texte25" minOccurs="0"/>
+ <xs:element name="IdEmpruntOrdo" type="cm:Base_Texte24" minOccurs="0"/>
+ <xs:element name="IdActif" type="cm:Base_Texte25" minOccurs="0"/>
+ <xs:element name="IdRegie" type="cm:Base_Texte10" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TInfoSuspPour">
+ <xs:sequence>
+ <xs:element name="CodSuspPour" type="TCodSuspPour"/>
+ <xs:element name="DteSuspPour" type="cm:Base_Date"/>
+ <xs:element name="DteRepPour" type="cm:Base_Date" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TInfoContentieux">
+ <xs:sequence>
+ <xs:element name="MtCtxTot" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="MtMajo" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="MtFraisCmdt" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="MtFraisSaisie" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="MtFraisAutre" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="SldPrinc" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="SldFrais" type="cm:Base_Montant" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TInfoAmiableContentieux">
+ <xs:sequence>
+ <xs:element name="EtPce" type="TEtPce"/>
+ <xs:element name="DteEtPce" type="cm:Base_Date"/>
+ <xs:element name="IdAct" type="cm:Base_Num14" minOccurs="0"/>
+ <xs:element name="CodActu" type="TCodActu" minOccurs="0"/>
+ <xs:element name="DteActu" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="MtMajo" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="MtFraisCmdt" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="MtFraisSaisie" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="MtFraisAutre" type="cm:Base_Montant" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TInfoPourExt">
+ <xs:sequence>
+ <xs:element name="DteEpe" type="cm:Base_Date"/>
+ <xs:element name="IdPostEpe" type="cm:Base_Texte7" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunRecette.xsd"/>
+ <xs:complexType name="TRecouvrement">
+ <xs:sequence>
+ <xs:element name="TypFlux" type="TTypFlux"/>
+ <xs:element name="ModRegl" type="TModRegl"/>
+ <xs:element name="DteReco" type="cm:Base_Date"/>
+ <xs:element name="IdEncaissement" type="cm:Base_Num12"/>
+ <xs:element name="MtReco" type="cm:Base_Montant"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunRecette.xsd"/>
+ <xs:complexType name="TInfoTiersRecette">
+ <xs:sequence>
+ <xs:element name="IdTiers" type="cm:Base_Texte15" minOccurs="0"/>
+ <xs:element name="DteMalade" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="NatIdTiers" type="cm:TNatIdTiers" minOccurs="0"/>
+ <xs:element name="DteIdTiers" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="RefTiers" type="cm:Base_Texte30" minOccurs="0"/>
+ <xs:element name="CatTiers" type="cm:TCatTiers"/>
+ <xs:element name="NatJur" type="cm:TNatJur"/>
+ <xs:element name="TypTiers" type="cm:TTypTiers"/>
+ <xs:element name="Civilite" type="cm:Base_Texte10" minOccurs="0"/>
+ <xs:element name="Nom" type="cm:Base_Texte38"/>
+ <xs:element name="ComplNom" type="cm:Base_Texte38" minOccurs="0"/>
+ <xs:element name="Prenom" type="cm:Base_Texte38" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunRecette.xsd"/>
+ <xs:complexType name="TBlocPiece">
+ <xs:sequence>
+ <xs:element name="CodServ" type="cm:Base_Texte10" minOccurs="0"/>
+ <xs:element name="Affect" type="cm:Base_Texte10" minOccurs="0"/>
+ <xs:element name="CodProd" type="cm:Base_Alphanum2" minOccurs="0"/>
+ <xs:element name="IdPce" type="cm:Base_Num13"/>
+ <xs:element name="TypPce" type="TTypPce"/>
+ <xs:element name="NatPce" type="TNatPce"/>
+ <xs:element name="IdRol" type="cm:Base_Num7" minOccurs="0"/>
+ <xs:element name="DteAsp" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="ObjPce" type="cm:Base_Texte160" minOccurs="0"/>
+ <xs:element name="DebFact" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="FinFact" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="PJRef" type="cm:TPJReference" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunRecette.xsd"/>
+ <xs:complexType name="TBlocPiece">
+ <xs:sequence>
+ <xs:element name="CodServ" type="cm:Base_Texte10" minOccurs="0"/>
+ <xs:element name="Affect" type="cm:Base_Texte10" minOccurs="0"/>
+ <xs:element name="CodProd" type="cm:Base_Alphanum2" minOccurs="0"/>
+ <xs:element name="IdPce" type="cm:Base_Num13"/>
+ <xs:element name="TypPce" type="TTypPce"/>
+ <xs:element name="NatPce" type="TNatPce"/>
+ <xs:element name="IdRol" type="cm:Base_Num7" minOccurs="0"/>
+ <xs:element name="DteAsp" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="ObjPce" type="cm:Base_Texte160" minOccurs="0"/>
+ <xs:element name="EtatPce" type="TEtatPce"/>
+ <xs:element name="ObsEtat" type="cm:Base_Texte100" minOccurs="0"/>
+ <xs:element name="DtePceInt" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="DtePcePec" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="DtePceInst" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="DteRegulInst" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="DtePceRej" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="CodInst-Rej" type="TCodInst-Rej" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <!-- Regles de codifications communes au PES Recette-->
+ <!-- 05/05/2006 EPA HLS000224-->
+ <xs:complexType name="TNatInf">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="0"/>
+ <xs:enumeration value="1"/>
+ <xs:enumeration value="2"/>
+ <xs:enumeration value="3"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TTypBord">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TTypPce">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ <xs:enumeration value="06"/>
+ <xs:enumeration value="07"/>
+ <xs:enumeration value="08"/>
+ <xs:enumeration value="09"/>
+ <xs:enumeration value="10"/>
+ <xs:enumeration value="11"/>
+ <xs:enumeration value="12"/>
+ <xs:enumeration value="13"/>
+ <xs:enumeration value="14"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TNatPce">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ <xs:enumeration value="06"/>
+ <xs:enumeration value="07"/>
+ <xs:enumeration value="08"/>
+ <xs:enumeration value="09"/>
+ <xs:enumeration value="10"/>
+ <xs:enumeration value="11"/>
+ <xs:enumeration value="12"/>
+ <xs:enumeration value="18"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TEtatPce">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TCodInst-Rej">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ <xs:enumeration value="06"/>
+ <xs:enumeration value="07"/>
+ <xs:enumeration value="08"/>
+ <xs:enumeration value="09"/>
+ <xs:enumeration value="10"/>
+ <xs:enumeration value="11"/>
+ <xs:enumeration value="12"/>
+ <xs:enumeration value="13"/>
+ <xs:enumeration value="14"/>
+ <xs:enumeration value="15"/>
+ <xs:enumeration value="16"/>
+ <xs:enumeration value="17"/>
+ <xs:enumeration value="18"/>
+ <xs:enumeration value="19"/>
+ <xs:enumeration value="20"/>
+ <xs:enumeration value="21"/>
+ <xs:enumeration value="22"/>
+ <xs:enumeration value="23"/>
+ <xs:enumeration value="24"/>
+ <xs:enumeration value="25"/>
+ <xs:enumeration value="26"/>
+ <xs:enumeration value="27"/>
+ <xs:enumeration value="28"/>
+ <xs:enumeration value="29"/>
+ <xs:enumeration value="30"/>
+ <xs:enumeration value="31"/>
+ <xs:enumeration value="32"/>
+ <xs:enumeration value="33"/>
+ <xs:enumeration value="34"/>
+ <xs:enumeration value="35"/>
+ <xs:enumeration value="36"/>
+ <xs:enumeration value="37"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TNatPrel">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TPerPrel">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ <xs:enumeration value="06"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TCodAssDeb">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="1"/>
+ <xs:enumeration value="2"/>
+ <xs:enumeration value="3"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TCodAyantDroit">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TNatPceOrig">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TEtPce">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="00"/>
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ <xs:enumeration value="06"/>
+ <xs:enumeration value="07"/>
+ <xs:enumeration value="08"/>
+ <xs:enumeration value="09"/>
+ <xs:enumeration value="10"/>
+ <xs:enumeration value="11"/>
+ <xs:enumeration value="12"/>
+ <xs:enumeration value="13"/>
+ <xs:enumeration value="14"/>
+ <xs:enumeration value="15"/>
+ <xs:enumeration value="16"/>
+ <xs:enumeration value="17"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TCodActu">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ <xs:enumeration value="06"/>
+ <xs:enumeration value="07"/>
+ <xs:enumeration value="08"/>
+ <xs:enumeration value="09"/>
+ <xs:enumeration value="10"/>
+ <xs:enumeration value="11"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TCodSuspPour">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ <xs:enumeration value="06"/>
+ <xs:enumeration value="07"/>
+ <xs:enumeration value="08"/>
+ <xs:enumeration value="09"/>
+ <xs:enumeration value="10"/>
+ <xs:enumeration value="11"/>
+ <xs:enumeration value="12"/>
+ <xs:enumeration value="13"/>
+ <xs:enumeration value="14"/>
+ <xs:enumeration value="15"/>
+ <xs:enumeration value="16"/>
+ <xs:enumeration value="17"/>
+ <xs:enumeration value="18"/>
+ <xs:enumeration value="19"/>
+ <xs:enumeration value="20"/>
+ <xs:enumeration value="21"/>
+ <xs:enumeration value="22"/>
+ <xs:enumeration value="23"/>
+ <xs:enumeration value="24"/>
+ <xs:enumeration value="25"/>
+ <xs:enumeration value="26"/>
+ <xs:enumeration value="27"/>
+ <xs:enumeration value="28"/>
+ <xs:enumeration value="29"/>
+ <xs:enumeration value="30"/>
+ <xs:enumeration value="31"/>
+ <xs:enumeration value="32"/>
+ <xs:enumeration value="33"/>
+ <xs:enumeration value="34"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TTypFlux">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TModRegl">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ <xs:enumeration value="06"/>
+ <xs:enumeration value="07"/>
+ <xs:enumeration value="08"/>
+ <xs:enumeration value="09"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TTypTiers">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ <xs:enumeration value="06"/>
+ <xs:enumeration value="07"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/recette/r0/aller" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns="http://www.minefi.gouv.fr/cp/helios/pes_v2/recette/r0/aller" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="unqualified">
+ <!-- Directives d'inclusion -->
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="../../Class_Signature.xsd"/>
+ <xs:include schemaLocation="CommunRecette.xsd"/>
+ <xs:include schemaLocation="Class_BordereauRecetteAller.xsd"/>
+ <xs:include schemaLocation="Class_TitreAller.xsd"/>
+ <xs:include schemaLocation="Class_LigneTitreAller.xsd"/>
+ <xs:include schemaLocation="Class_RecouvrementRecette.xsd"/>
+ <xs:include schemaLocation="Class_TiersRecette.xsd"/>
+ <xs:complexType name="TPES_RecetteAller">
+ <xs:sequence>
+ <xs:element name="EnTeteRecette">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="IdVer" type="cm:Base_Num2"/>
+ <xs:element name="InfoDematerialisee" type="cm:Base_Booleen" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Bordereau" type="TBordereau" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TBordereau">
+ <xs:sequence>
+ <xs:element name="BlocBordereau" type="TBlocBordereau"/>
+ <xs:element name="Piece" type="TPiece" maxOccurs="unbounded"/>
+ <xs:group ref="ds:PESSignatureGroup" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="Id" type="xs:ID" use="optional"/>
+ </xs:complexType>
+ <xs:complexType name="TPiece">
+ <xs:sequence>
+ <xs:element name="BlocPiece" type="TBlocPiece"/>
+ <xs:element name="LigneDePiece" type="TLigneDePiece" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TLigneDePiece">
+ <xs:sequence>
+ <xs:element name="BlocLignePiece" type="TBlocLignePiece"/>
+ <xs:element name="Tiers" type="TTiers" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="Recouvrement" type="TRecouvrement" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TTiers">
+ <xs:sequence>
+ <xs:element name="InfoTiers" type="TInfoTiersRecette"/>
+ <xs:element name="Adresse" type="cm:TAdresse" minOccurs="0"/>
+ <xs:element name="CpteBancaire" type="cm:TBancaire" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/recette/r0/retour" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns="http://www.minefi.gouv.fr/cp/helios/pes_v2/recette/r0/retour" elementFormDefault="unqualified">
+ <!-- Directives d'inclusion -->
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunRecette.xsd"/>
+ <xs:include schemaLocation="Class_BordereauRecetteRetour.xsd"/>
+ <xs:include schemaLocation="Class_TitreRetour.xsd"/>
+ <xs:include schemaLocation="Class_LigneTitreRetour.xsd"/>
+ <xs:include schemaLocation="Class_RecouvrementRecette.xsd"/>
+ <xs:include schemaLocation="Class_TiersRecette.xsd"/>
+ <xs:complexType name="TPES_RecetteRetour">
+ <xs:sequence>
+ <xs:element name="EnTeteRecette">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="IdVer" type="cm:Base_Num2"/>
+ <xs:element name="NatInf" type="TNatInf"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Bordereau" type="TBordereau" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TBordereau">
+ <xs:sequence>
+ <xs:element name="BlocBordereau" type="TBlocBordereau"/>
+ <xs:element name="Piece" type="TPiece" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TPiece">
+ <xs:sequence>
+ <xs:element name="BlocPiece" type="TBlocPiece"/>
+ <xs:element name="LigneDePiece" type="TLigneDePiece" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TLigneDePiece">
+ <xs:sequence>
+ <xs:element name="BlocLignePiece" type="TBlocLignePiece"/>
+ <xs:element name="Tiers" type="TTiers" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="Recouvrement" type="TRecouvrement" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TTiers">
+ <xs:sequence>
+ <xs:element name="InfoTiers" type="TInfoTiersRecette"/>
+ <xs:element name="Adresse" type="cm:TAdresse" minOccurs="0"/>
+ <xs:element name="CpteBancaire" type="cm:TBancaire" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunRole.xsd"/>
+ <xs:complexType name="TBlocArticle">
+ <xs:sequence>
+ <xs:element name="InfoArticle" type="TInfoArticle"/>
+ <xs:element name="InfoPrelevement" type="TInfoPrelevement" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TInfoArticle">
+ <xs:sequence>
+ <xs:element name="CodServ" type="cm:Base_Texte10" minOccurs="0"/>
+ <xs:element name="Affect" type="cm:Base_Texte10" minOccurs="0"/>
+ <xs:element name="IdPce" type="cm:Base_Num8"/>
+ <xs:element name="PJRef" type="cm:TPJReference" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="NumDette" type="cm:Base_Num15" minOccurs="0"/>
+ <xs:element name="Per" type="cm:Base_Num1" minOccurs="0"/>
+ <xs:element name="Cle1" type="cm:Base_Num1" minOccurs="0"/>
+ <xs:element name="Cle2" type="cm:Base_Alphanum1" minOccurs="0"/>
+ <xs:element name="CpteTiers" type="cm:Base_Num12" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TInfoPrelevement">
+ <xs:sequence>
+ <xs:element name="NatPrel" type="TNatPrel"/>
+ <xs:element name="PerPrel" type="TPerPrel"/>
+ <xs:element name="DtePrel" type="cm:Base_Date"/>
+ <xs:element name="MtPrel" type="cm:Base_Montant"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunRole.xsd"/>
+ <xs:complexType name="TBlocArticle">
+ <xs:sequence>
+ <xs:element name="CodServ" type="cm:Base_Texte10" minOccurs="0"/>
+ <xs:element name="Affect" type="cm:Base_Texte10" minOccurs="0"/>
+ <xs:element name="IdPce" type="cm:Base_Num12"/>
+ <xs:element name="NumDette" type="cm:Base_Num15" minOccurs="0"/>
+ <xs:element name="Per" type="cm:Base_Num1" minOccurs="0"/>
+ <xs:element name="Cle1" type="cm:Base_Num1" minOccurs="0"/>
+ <xs:element name="Cle2" type="cm:Base_Alphanum1" minOccurs="0"/>
+ <xs:element name="CpteTiers" type="cm:Base_Num12" minOccurs="0"/>
+ <xs:element name="EtatPce" type="TEtatPce"/>
+ <xs:element name="ObsEtat" type="cm:Base_Texte100" minOccurs="0"/>
+ <xs:element name="DtePceInt" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="DtePcePec" type="cm:Base_Date"/>
+ <xs:element name="DtePceInst" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="DteRegulInst" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="DtePceRej" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="CodInst-Rej" type="TCodInst-Rej" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunRole.xsd"/>
+ <xs:complexType name="TRecouvrement">
+ <xs:sequence>
+ <xs:element name="TypFlux" type="TTypFlux"/>
+ <xs:element name="ModRegl" type="TModRegl"/>
+ <xs:element name="DteReco" type="cm:Base_Date"/>
+ <xs:element name="IdEncaissement" type="cm:Base_Num12"/>
+ <xs:element name="MtReco" type="cm:Base_Montant"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunRole.xsd"/>
+ <xs:complexType name="TBlocRole">
+ <xs:sequence>
+ <xs:element name="CodAct" type="TCodAct"/>
+ <xs:element name="Exer" type="cm:Base_Annee"/>
+ <xs:element name="IdRol" type="cm:Base_Num7"/>
+ <xs:element name="TypRol" type="TTypRol"/>
+ <xs:element name="DteRol" type="cm:Base_Date"/>
+ <xs:element name="MtRolHt" type="cm:Base_Montant"/>
+ <xs:element name="MtRolTVA" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="DteAsp" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="Objet" type="cm:Base_Texte160" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunRole.xsd"/>
+ <xs:complexType name="TBlocRole">
+ <xs:sequence>
+ <xs:element name="CodAct" type="TCodAct"/>
+ <xs:element name="Exer" type="cm:Base_Annee"/>
+ <xs:element name="IdRol" type="cm:Base_Num7"/>
+ <xs:element name="TypRol" type="TTypRol"/>
+ <xs:element name="DteRol" type="cm:Base_Date"/>
+ <xs:element name="MtRolHt" type="cm:Base_Montant"/>
+ <xs:element name="MtRolTVA" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="DteAsp" type="cm:Base_Date" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunRole.xsd"/>
+ <xs:complexType name="TBlocSousArticle">
+ <xs:sequence>
+ <xs:element name="InfoSousArticle" type="TInfoSousArticle"/>
+ <xs:element name="InfoCollBen" type="TInfoCollBen" minOccurs="0"/>
+ <xs:element name="RattachPiece" type="TRattachPiece" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TInfoSousArticle">
+ <xs:sequence>
+ <xs:element name="IdLigne" type="cm:Base_Num6"/>
+ <xs:element name="CodProcLoc" type="cm:Base_Alphanum4"/>
+ <xs:element name="ObjPce" type="cm:Base_Texte160" minOccurs="0"/>
+ <xs:element name="Majo" type="cm:Base_Booleen"/>
+ <xs:element name="DteMajo" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="TxMajo" type="cm:Base_Taux" minOccurs="0"/>
+ <xs:element name="MtHT" type="cm:Base_Montant"/>
+ <xs:element name="MtTVA" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="MtNonMajo" type="cm:Base_Montant" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TInfoCollBen">
+ <xs:sequence>
+ <xs:element name="IdCollBen" type="cm:Base_Num14"/>
+ <xs:element name="CodCollBen" type="cm:Base_Alphanum3"/>
+ <xs:element name="CodBudBen" type="cm:Base_Alphanum2" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TRattachPiece">
+ <xs:sequence>
+ <xs:element name="ExerRat" type="cm:Base_Annee"/>
+ <xs:element name="IdRolOrig" type="cm:Base_Num7"/>
+ <xs:element name="IdPceOrig" type="cm:Base_Num8"/>
+ <xs:element name="IdLigneOrig" type="cm:Base_Num6" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- edited with XMLSPY v5 rel. 2 U (http://www.xmlspy.com) by SERGE MURET (SEMA GROUP SA) -->
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunRole.xsd"/>
+ <xs:complexType name="TBlocSousArticle">
+ <xs:sequence>
+ <xs:element name="InfoSousArticle" type="TInfoSousArticle"/>
+ <xs:element name="InfoCollBen" type="TInfoCollBen" minOccurs="0"/>
+ <xs:element name="InfoRecouvrement" type="TInfoRecouvrement" minOccurs="0"/>
+ <xs:element name="InfoEcheancier" type="TInfoEcheancier" minOccurs="0"/>
+ <xs:element name="RattachPiece" type="TRattachPiece" minOccurs="0"/>
+ <xs:element name="InfoSuspPour" type="TInfoSuspPour" minOccurs="0"/>
+ <xs:element name="InfoContentieux" type="TInfoContentieux" minOccurs="0"/>
+ <xs:element name="InfoAmiableContentieux" type="TInfoAmiableContentieux" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="InfoPourExt" type="TInfoPourExt" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TInfoSousArticle">
+ <xs:sequence>
+ <xs:element name="IdLigne" type="cm:Base_Num6"/>
+ <xs:element name="CodProcLoc" type="cm:Base_Alphanum4" minOccurs="0"/>
+ <xs:element name="ObjPce" type="cm:Base_Texte160" minOccurs="0"/>
+ <xs:element name="MtHT" type="cm:Base_Montant"/>
+ <xs:element name="MtTVA" type="cm:Base_Montant" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TInfoCollBen">
+ <xs:sequence>
+ <xs:element name="IdCollBen" type="cm:Base_Num14"/>
+ <xs:element name="CodCollBen" type="cm:Base_Alphanum3"/>
+ <xs:element name="CodBudBen" type="cm:Base_Alphanum2" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TInfoRecouvrement">
+ <xs:sequence>
+ <xs:element name="NbrReco" type="cm:Base_Num4"/>
+ <xs:element name="MtRecoTot" type="cm:Base_Montant" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TInfoEcheancier">
+ <xs:sequence>
+ <xs:element name="DteDerPay" type="cm:Base_Date"/>
+ <xs:element name="NbrPay" type="cm:Base_Num4"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TRattachPiece">
+ <xs:sequence>
+ <xs:element name="ExerRat" type="cm:Base_Annee"/>
+ <xs:element name="IdRolOrig" type="cm:Base_Num7"/>
+ <xs:element name="IdPceOrig" type="cm:Base_Num8"/>
+ <xs:element name="IdLigneOrig" type="cm:Base_Num6" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TInfoSuspPour">
+ <xs:sequence>
+ <xs:element name="CodSuspPour" type="TCodSuspPour"/>
+ <xs:element name="DteSuspPour" type="cm:Base_Date"/>
+ <xs:element name="DteRepPour" type="cm:Base_Date" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TInfoContentieux">
+ <xs:sequence>
+ <xs:element name="MtCtxTot" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="MtMajo" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="MtFraisCdt" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="MtFraisSais" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="MtFraisAutre" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="SldPrinc" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="SldMajo" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="SldFrais" type="cm:Base_Montant" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TInfoAmiableContentieux">
+ <xs:sequence>
+ <xs:element name="EtRec" type="TEtRec"/>
+ <xs:element name="EtatPrealable" type="cm:Base_Booleen"/>
+ <xs:element name="DteEtPce" type="cm:Base_Date"/>
+ <xs:element name="IdAct" type="cm:Base_Num14" minOccurs="0"/>
+ <xs:element name="CodActu" type="TCodActu" minOccurs="0"/>
+ <xs:element name="DteActu" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="MtMajo" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="MtFrais" type="cm:Base_Montant" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TInfoPourExt">
+ <xs:sequence>
+ <xs:element name="DteEpe" type="cm:Base_Date"/>
+ <xs:element name="IdPostEpe" type="cm:Base_Texte7"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunRole.xsd"/>
+ <xs:complexType name="TInfoTiersRole">
+ <xs:sequence>
+ <xs:element name="IdTiers" type="cm:Base_Texte15" minOccurs="0"/>
+ <xs:element name="DteMalade" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="NatIdTiers" type="cm:TNatIdTiers" minOccurs="0"/>
+ <xs:element name="DteIdTiers" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="RefTiers" type="cm:Base_Texte30" minOccurs="0"/>
+ <xs:element name="CatTiers" type="cm:TCatTiers"/>
+ <xs:element name="NatJur" type="cm:TNatJur"/>
+ <xs:element name="TypTiers" type="cm:TTypTiers"/>
+ <xs:element name="Civilite" type="cm:Base_Texte10" minOccurs="0"/>
+ <xs:element name="Nom" type="cm:Base_Texte38"/>
+ <xs:element name="ComplNom" type="cm:Base_Texte38" minOccurs="0"/>
+ <xs:element name="Prenom" type="cm:Base_Texte38" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun">
+ <xs:complexType name="TCodAct">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TNatInf">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="0"/>
+ <xs:enumeration value="1"/>
+ <xs:enumeration value="2"/>
+ <xs:enumeration value="3"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TTypRol">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TEtatPce">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ <xs:enumeration value="06"/>
+ <xs:enumeration value="07"/>
+ <xs:enumeration value="08"/>
+ <xs:enumeration value="09"/>
+ <xs:enumeration value="10"/>
+ <xs:enumeration value="11"/>
+ <xs:enumeration value="12"/>
+ <xs:enumeration value="13"/>
+ <xs:enumeration value="14"/>
+ <xs:enumeration value="15"/>
+ <xs:enumeration value="16"/>
+ <xs:enumeration value="17"/>
+ <xs:enumeration value="18"/>
+ <xs:enumeration value="19"/>
+ <xs:enumeration value="20"/>
+ <xs:enumeration value="21"/>
+ <xs:enumeration value="22"/>
+ <xs:enumeration value="23"/>
+ <xs:enumeration value="24"/>
+ <xs:enumeration value="25"/>
+ <xs:enumeration value="26"/>
+ <xs:enumeration value="27"/>
+ <xs:enumeration value="28"/>
+ <xs:enumeration value="29"/>
+ <xs:enumeration value="30"/>
+ <xs:enumeration value="31"/>
+ <xs:enumeration value="32"/>
+ <xs:enumeration value="33"/>
+ <xs:enumeration value="34"/>
+ <xs:enumeration value="35"/>
+ <xs:enumeration value="36"/>
+ <xs:enumeration value="37"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TCodInst-Rej">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ <xs:enumeration value="06"/>
+ <xs:enumeration value="07"/>
+ <xs:enumeration value="08"/>
+ <xs:enumeration value="09"/>
+ <xs:enumeration value="10"/>
+ <xs:enumeration value="11"/>
+ <xs:enumeration value="12"/>
+ <xs:enumeration value="13"/>
+ <xs:enumeration value="14"/>
+ <xs:enumeration value="15"/>
+ <xs:enumeration value="16"/>
+ <xs:enumeration value="17"/>
+ <xs:enumeration value="18"/>
+ <xs:enumeration value="19"/>
+ <xs:enumeration value="20"/>
+ <xs:enumeration value="21"/>
+ <xs:enumeration value="22"/>
+ <xs:enumeration value="23"/>
+ <xs:enumeration value="24"/>
+ <xs:enumeration value="25"/>
+ <xs:enumeration value="26"/>
+ <xs:enumeration value="27"/>
+ <xs:enumeration value="28"/>
+ <xs:enumeration value="29"/>
+ <xs:enumeration value="30"/>
+ <xs:enumeration value="31"/>
+ <xs:enumeration value="32"/>
+ <xs:enumeration value="33"/>
+ <xs:enumeration value="34"/>
+ <xs:enumeration value="35"/>
+ <xs:enumeration value="36"/>
+ <xs:enumeration value="37"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TNatPrel">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TPerPrel">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="00"/>
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ <xs:enumeration value="06"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TEtRec">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="00"/>
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ <xs:enumeration value="06"/>
+ <xs:enumeration value="07"/>
+ <xs:enumeration value="08"/>
+ <xs:enumeration value="09"/>
+ <xs:enumeration value="10"/>
+ <xs:enumeration value="11"/>
+ <xs:enumeration value="12"/>
+ <xs:enumeration value="13"/>
+ <xs:enumeration value="14"/>
+ <xs:enumeration value="15"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TCodActu">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ <xs:enumeration value="06"/>
+ <xs:enumeration value="07"/>
+ <xs:enumeration value="08"/>
+ <xs:enumeration value="09"/>
+ <xs:enumeration value="10"/>
+ <xs:enumeration value="11"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TCodSuspPour">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ <xs:enumeration value="06"/>
+ <xs:enumeration value="07"/>
+ <xs:enumeration value="08"/>
+ <xs:enumeration value="09"/>
+ <xs:enumeration value="10"/>
+ <xs:enumeration value="11"/>
+ <xs:enumeration value="12"/>
+ <xs:enumeration value="13"/>
+ <xs:enumeration value="14"/>
+ <xs:enumeration value="15"/>
+ <xs:enumeration value="16"/>
+ <xs:enumeration value="17"/>
+ <xs:enumeration value="18"/>
+ <xs:enumeration value="19"/>
+ <xs:enumeration value="20"/>
+ <xs:enumeration value="21"/>
+ <xs:enumeration value="22"/>
+ <xs:enumeration value="23"/>
+ <xs:enumeration value="24"/>
+ <xs:enumeration value="25"/>
+ <xs:enumeration value="26"/>
+ <xs:enumeration value="27"/>
+ <xs:enumeration value="28"/>
+ <xs:enumeration value="29"/>
+ <xs:enumeration value="30"/>
+ <xs:enumeration value="31"/>
+ <xs:enumeration value="32"/>
+ <xs:enumeration value="33"/>
+ <xs:enumeration value="34"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TTypFlux">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TModRegl">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ <xs:enumeration value="06"/>
+ <xs:enumeration value="07"/>
+ <xs:enumeration value="08"/>
+ <xs:enumeration value="09"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TTypTiers">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/role/r0/aller" xmlns="http://www.minefi.gouv.fr/cp/helios/pes_v2/role/r0/aller" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="unqualified">
+ <!-- Directives d'inclusion -->
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunRole.xsd"/>
+ <xs:include schemaLocation="Class_RoleAller.xsd"/>
+ <xs:include schemaLocation="Class_ArticleAller.xsd"/>
+ <xs:include schemaLocation="Class_SousArticleAller.xsd"/>
+ <xs:include schemaLocation="Class_RecouvrementRole.xsd"/>
+ <xs:include schemaLocation="Class_TiersRole.xsd"/>
+ <xs:complexType name="TPES_RoleAller">
+ <xs:sequence>
+ <xs:element name="EnTeteRole">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="IdVer" type="cm:Base_Num2"/>
+ <xs:element name="InfoDematerialisee" type="cm:Base_Booleen" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Role" type="TRole" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TRole">
+ <xs:sequence>
+ <xs:element name="BlocRole" type="TBlocRole"/>
+ <xs:element name="Article" type="TArticle" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TArticle">
+ <xs:sequence>
+ <xs:element name="BlocArticle" type="TBlocArticle"/>
+ <xs:element name="SousArticle" type="TSousArticle" maxOccurs="unbounded"/>
+ <xs:element name="Tiers" type="TTiers" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TSousArticle">
+ <xs:sequence>
+ <xs:element name="BlocSousArticle" type="TBlocSousArticle"/>
+ <xs:element name="Recouvrement" type="TRecouvrement" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TTiers">
+ <xs:sequence>
+ <xs:element name="InfoTiers" type="TInfoTiersRole"/>
+ <xs:element name="Adresse" type="cm:TAdresse" minOccurs="0"/>
+ <xs:element name="CpteBancaire" type="cm:TBancaire" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?> <!--EPA HLS00039776 20060626-->
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/role/r0/retour" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns="http://www.minefi.gouv.fr/cp/helios/pes_v2/role/r0/retour" elementFormDefault="unqualified">
+ <!-- Directives d'inclusion -->
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunRole.xsd"/>
+ <xs:include schemaLocation="Class_RoleRetour.xsd"/>
+ <xs:include schemaLocation="Class_ArticleRetour.xsd"/>
+ <xs:include schemaLocation="Class_SousArticleRetour.xsd"/>
+ <xs:include schemaLocation="Class_RecouvrementRole.xsd"/>
+ <xs:include schemaLocation="Class_TiersRole.xsd"/>
+ <!-- Fin des directives d'inclusios-->
+ <xs:complexType name="TPES_RoleRetour">
+ <xs:sequence>
+ <xs:element name="EnTeteRole">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="IdVer" type="cm:Base_Num2"/>
+ <xs:element name="NatInf" type="TNatInf"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Role" type="TRole" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TRole">
+ <xs:sequence>
+ <xs:element name="BlocRole" type="TBlocRole"/>
+ <xs:element name="Article" type="TArticle" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TArticle">
+ <xs:sequence>
+ <xs:element name="BlocArticle" type="TBlocArticle"/>
+ <xs:element name="SousArticle" type="TSousArticle" minOccurs="0" maxOccurs="unbounded"/> <!--EPA HLS00039776 20060626-->
+ <xs:element name="Tiers" type="TTiers" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TSousArticle">
+ <xs:sequence>
+ <xs:element name="BlocSousArticle" type="TBlocSousArticle"/>
+ <xs:element name="Recouvrement" type="TRecouvrement" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TTiers">
+ <xs:sequence>
+ <xs:element name="InfoTiers" type="TInfoTiersRole"/>
+ <xs:element name="Adresse" type="cm:TAdresse" minOccurs="0"/>
+ <xs:element name="CpteBancaire" type="cm:TBancaire" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../Class_SchemasCommuns.xsd"/>
+ <xs:element name="Acquit" type="TAcquit"/>
+ <xs:complexType name="TAcquit">
+ <xs:sequence>
+ <xs:element name="NomFic" type="cm:Base_Texte100"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../Class_SchemasCommuns.xsd"/>
+ <xs:element name="NonAcquit" type="TNonAcquit"/>
+ <xs:complexType name="TNonAcquit">
+ <xs:sequence>
+ <xs:element name="NomFic" type="cm:Base_Texte100"/>
+ <xs:element name="Motif" type="cm:Base_Texte100"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/heliso/pes_v2/Rev0/aller" xmlns="http://www.minefi.gouv.fr/cp/heliso/pes_v2/Rev0/aller" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" elementFormDefault="unqualified">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="Class_Acquit.xsd"/>
+ <xs:element name="PES_Acquit">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Enveloppe" type="cm:TEnveloppe"/>
+ <xs:element name="Acquit" type="TAcquit"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/aller" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" xmlns:xad="http://uri.etsi.org/01903/v1.1.1#" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/aller" xmlns:rola="http://www.minefi.gouv.fr/cp/helios/pes_v2/role/r0/aller" xmlns:reca="http://www.minefi.gouv.fr/cp/helios/pes_v2/recette/r0/aller" xmlns:depa="http://www.minefi.gouv.fr/cp/helios/pes_v2/depense/r0/aller" xmlns:buda="http://www.minefi.gouv.fr/cp/helios/pes_v2/budget/r0/aller" xmlns:mara="http://www.minefi.gouv.fr/cp/helios/pes_v2/marche/r0/aller" xmlns:acta="http://www.minefi.gouv.fr/cp/helios/pes_v2/etatactif/r0/aller" xmlns:empa="http://www.minefi.gouv.fr/cp/helios/pes_v2/emprunt/r0/aller" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" elementFormDefault="unqualified">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/budget/r0/aller" schemaLocation="../NS_Budget/r0/PES_BudgetAller.xsd"/>
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/depense/r0/aller" schemaLocation="../NS_Depense/r0/PES_DepenseAller.xsd"/>
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/recette/r0/aller" schemaLocation="../NS_Recette/r0/PES_RecetteAller.xsd"/>
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/role/r0/aller" schemaLocation="../NS_Role/r0/PES_RoleAller.xsd"/>
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/etatactif/r0/aller" schemaLocation="../NS_EtatActif/r0/PES_EtatActif.xsd"/>
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/emprunt/r0/aller" schemaLocation="../NS_EtatPassif/r0/PES_EtatPassif.xsd"/>
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/marche/r0/aller" schemaLocation="../NS_Marche/r0/PES_Marche.xsd"/>
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../Class_SchemasCommuns.xsd"/>
+ <xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="../Class_Signature.xsd"/>
+ <xs:import namespace="http://uri.etsi.org/01903/v1.1.1#" schemaLocation="../../xades/XAdES-core-schema.xsd"/>
+ <xs:include schemaLocation="../Class_PJ.xsd"/>
+ <xs:include schemaLocation="../Class_FacturePES.xsd"/>
+ <xs:include schemaLocation="../Class_FacturePESIndiv.xsd"/>
+ <xs:include schemaLocation="../Class_Tiers.xsd"/>
+ <xs:include schemaLocation="../Class_RepartitionBudget.xsd"/>
+ <xs:include schemaLocation="../Class_Nomenclature.xsd"/>
+ <xs:element name="PES_Aller">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Enveloppe" type="cm:TEnveloppe"/>
+ <xs:element name="EnTetePES" type="cm:TEnTetePES"/>
+ <xs:element name="PES_DepenseAller" type="depa:TPES_DepenseAller" minOccurs="0"/>
+ <xs:element name="PES_RecetteAller" type="reca:TPES_RecetteAller" minOccurs="0"/>
+ <xs:element name="PES_RoleAller" type="rola:TPES_RoleAller" minOccurs="0"/>
+ <xs:element name="PES_BudgetAller" type="buda:TPES_BudgetAller" minOccurs="0"/>
+ <xs:element name="PES_EtatActif" type="acta:TPES_EtatActif" minOccurs="0"/>
+ <xs:element name="PES_Marche" type="mara:TPES_Marche" minOccurs="0"/>
+ <xs:element name="PES_EtatPassif" type="empa:TPES_EtatPassif" minOccurs="0"/>
+ <xs:element name="PES_PJ" type="TPES_PJs" minOccurs="0"/>
+ <xs:group ref="ds:PESSignatureGroup" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="Id" type="xs:ID" use="optional"/>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/heliso/pes_v2/Rev0/aller" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.minefi.gouv.fr/cp/heliso/pes_v2/Rev0/aller" elementFormDefault="unqualified">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="Class_NonAcquit.xsd"/>
+ <xs:element name="PES_NonAcquit">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Enveloppe" type="cm:TEnveloppe"/>
+ <xs:element name="NonAcquit" type="TNonAcquit"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- edited with XML Spy v4.4 (http://www.xmlspy.com) by Michael Conroy (SEMA) -->
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/helios/heliades_v1/Rev0/aller" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" xmlns:xad="http://uri.etsi.org/01903/v1.1.1#" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.minefi.gouv.fr/cp/helios/heliades_v1/Rev0/aller" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" elementFormDefault="unqualified">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../Class_SchemasCommuns.xsd"/>
+ <xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="../Class_Signature.xsd"/>
+ <xs:import namespace="http://uri.etsi.org/01903/v1.1.1#" schemaLocation="../../xades/XAdES-core-schema.xsd"/>
+ <xs:include schemaLocation="../Class_PESPJs_HELIADES.xsd"/>
+ <xs:include schemaLocation="../Class_FacturePES.xsd"/>
+ <xs:include schemaLocation="../Class_FacturePESIndiv.xsd"/>
+ <xs:include schemaLocation="../Class_Tiers.xsd"/>
+ <xs:include schemaLocation="../Class_RepartitionBudget.xsd"/>
+ <xs:include schemaLocation="../Class_Nomenclature.xsd"/>
+ <xs:element name="PES_PJs_HELIADES_Aller">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="EnTetePES_PJ">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="IdVer" type="cm:Base_Num2"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="IdPost" type="cm:Base_Texte7"/>
+ <xs:element name="IdColl" type="cm:Base_Num20"/>
+ <xs:element name="PES_PJs_HELIADES" type="TPES_PJs_HELIADES" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/helios/heliades_v1/Rev0/retour" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.minefi.gouv.fr/cp/helios/heliades_v1/Rev0/retour" elementFormDefault="unqualified">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../Class_SchemasCommuns.xsd"/>
+ <xs:element name="PES_PJs_HELIADES_Retour" type="TPES_PJs_HELIADES_Retour"/>
+ <xs:complexType name="TPES_PJ_HELIADES_Retour">
+ <xs:sequence>
+ <xs:element name="EnTetePES_PJ">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="IdVer" type="cm:Base_Num2"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="IdPost" type="cm:Base_Texte7"/>
+ <xs:element name="IdColl" type="cm:Base_Num20"/>
+ <xs:element name="IdUnique" type="cm:Base_Alphanum50"/>
+ <xs:element name="NomPJ" type="cm:Base_Texte100"/>
+ <xs:element name="EtatGeide" type="cm:Base_Num2"/>
+ <xs:element name="LibelleErreur" type="cm:Base_Texte50" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TPES_PJs_HELIADES_Retour">
+ <xs:sequence>
+ <xs:element name="PJ_HELIADES_Retour" minOccurs="0" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="TPES_PJ_HELIADES_Retour"/>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/restit" xmlns:erar="http://www.minefi.gouv.fr/cp/helios/pes_v2/erar/r0/restit" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/restit" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="unqualified">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../Class_SchemasCommuns.xsd"/>
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/erar/r0/restit" schemaLocation="../NS_Erar/r0/PES_ErarRestit.xsd"/>
+ <xs:element name="PES_Restit">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Enveloppe" type="cm:TEnveloppe" minOccurs="0"/>
+ <xs:element name="EnTetePES" type="cm:TEnTetePES"/>
+ <xs:element name="PES_ERAR" type="erar:TPES_ErarRestit" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/retour" xmlns:cptr="http://www.minefi.gouv.fr/cp/helios/pes_v2/comptabilite/r0/retour" xmlns:budr="http://www.minefi.gouv.fr/cp/helios/pes_v2/budget/r0/retour" xmlns:depr="http://www.minefi.gouv.fr/cp/helios/pes_v2/depense/r0/retour" xmlns:recr="http://www.minefi.gouv.fr/cp/helios/pes_v2/recette/r0/retour" xmlns:rolr="http://www.minefi.gouv.fr/cp/helios/pes_v2/role/r0/retour" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/retour" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="unqualified">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/budget/r0/retour" schemaLocation="../NS_Budget/r0/PES_BudgetRetour.xsd"/>
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/recette/r0/retour" schemaLocation="../NS_Recette/r0/PES_RecetteRetour.xsd"/>
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/role/r0/retour" schemaLocation="../NS_Role/r0/PES_RoleRetour.xsd"/>
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/depense/r0/retour" schemaLocation="../NS_Depense/r0/PES_DepenseRetour.xsd"/>
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/comptabilite/r0/retour" schemaLocation="../NS_Comptabilite/r0/PES_Comptabilite.xsd"/>
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="../Class_PJ_Retour.xsd"/>
+ <xs:element name="PES_Retour">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Enveloppe" type="cm:TEnveloppe"/>
+ <xs:element name="EnTetePES" type="cm:TEnTetePES"/>
+ <xs:element name="PES_DepenseRetour" type="depr:TPES_DepenseRetour" minOccurs="0"/>
+ <xs:element name="PES_RecetteRetour" type="recr:TPES_RecetteRetour" minOccurs="0"/>
+ <xs:element name="PES_RoleRetour" type="rolr:TPES_RoleRetour" minOccurs="0"/>
+ <xs:element name="PES_BudgetRetour" type="budr:TPES_BudgetRetour" minOccurs="0"/>
+ <xs:element name="PES_Comptabilite" type="cptr:TPES_Comptabilite" minOccurs="0"/>
+ <xs:element name="PES_PJ_Retour" type="TPES_PJs_Erreur" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/retour" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/retour" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:budr="http://www.minefi.gouv.fr/cp/helios/pes_v2/budget/r0/retour" elementFormDefault="unqualified">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/budget/r0/retour" schemaLocation="../NS_Budget/r0/PES_BudgetRetour.xsd"/>
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../Class_SchemasCommuns.xsd"/>
+ <xs:element name="PES_Retour">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Enveloppe" type="cm:TEnveloppe"/>
+ <xs:element name="EnTetePES" type="cm:TEnTetePES"/>
+ <xs:element name="PES_BudgetRetour" type="budr:TPES_BudgetRetour" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/retour" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/retour" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:cptr="http://www.minefi.gouv.fr/cp/helios/pes_v2/comptabilite/r0/retour" elementFormDefault="unqualified">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/comptabilite/r0/retour" schemaLocation="../NS_Comptabilite/r0/PES_Comptabilite.xsd"/>
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../Class_SchemasCommuns.xsd"/>
+ <xs:element name="PES_Retour">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Enveloppe" type="cm:TEnveloppe"/>
+ <xs:element name="EnTetePES" type="cm:TEnTetePES"/>
+ <xs:element name="PES_Comptabilite" type="cptr:TPES_Comptabilite" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/retour" xmlns:depr="http://www.minefi.gouv.fr/cp/helios/pes_v2/depense/r0/retour" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/retour" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="unqualified">
+<xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/depense/r0/retour" schemaLocation="../NS_Depense/r0/PES_DepenseRetour.xsd"/>
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../Class_SchemasCommuns.xsd"/>
+ <xs:element name="PES_Retour">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Enveloppe" type="cm:TEnveloppe"/>
+ <xs:element name="EnTetePES" type="cm:TEnTetePES"/>
+ <xs:element name="PES_DepenseRetour" type="depr:TPES_DepenseRetour" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/retour" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/retour" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" elementFormDefault="unqualified">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="../Class_PJ_Retour.xsd"/>
+ <xs:element name="PES_Retour">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Enveloppe" type="cm:TEnveloppe"/>
+ <xs:element name="EnTetePES" type="cm:TEnTetePES"/>
+ <xs:element name="PES_PJ_Retour" type="TPES_PJs_Erreur" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/retour" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/retour" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:recr="http://www.minefi.gouv.fr/cp/helios/pes_v2/recette/r0/retour" elementFormDefault="unqualified">
+<xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/recette/r0/retour" schemaLocation="../NS_Recette/r0/PES_RecetteRetour.xsd"/>
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../Class_SchemasCommuns.xsd"/>
+ <xs:element name="PES_Retour">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Enveloppe" type="cm:TEnveloppe"/>
+ <xs:element name="EnTetePES" type="cm:TEnTetePES"/>
+ <xs:element name="PES_RecetteRetour" type="recr:TPES_RecetteRetour" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/retour" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/retour" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:rolr="http://www.minefi.gouv.fr/cp/helios/pes_v2/role/r0/retour" elementFormDefault="unqualified">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/role/r0/retour" schemaLocation="../NS_Role/r0/PES_RoleRetour.xsd"/>
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../Class_SchemasCommuns.xsd"/>
+ <xs:element name="PES_Retour">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Enveloppe" type="cm:TEnveloppe"/>
+ <xs:element name="EnTetePES" type="cm:TEnTetePES"/>
+ <xs:element name="PES_RoleRetour" type="rolr:TPES_RoleRetour" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- edited with XMLSPY v5 rel. 2 U (http://www.xmlspy.com) by SERGE MURET (SEMA GROUP SA) -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:complexType name="Base_Alphanum1">
+ <xs:attribute name="V" type="V_Alphanum1" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Alphanum1">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="1"/>
+ <xs:pattern value="[0-9a-zA-Z]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Alphanum2">
+ <xs:attribute name="V" type="V_Alphanum2" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Alphanum2">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="2"/>
+ <xs:pattern value="[0-9a-zA-Z]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Alphanum3">
+ <xs:attribute name="V" type="V_Alphanum3" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Alphanum3">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="3"/>
+ <xs:pattern value="[0-9a-zA-Z]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Alphanum4">
+ <xs:attribute name="V" type="V_Alphanum4" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Alphanum4">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="4"/>
+ <xs:pattern value="[0-9a-zA-Z]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Alphanum5">
+ <xs:attribute name="V" type="V_Alphanum5" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Alphanum5">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="5"/>
+ <xs:pattern value="[0-9a-zA-Z]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Alphanum6">
+ <xs:attribute name="V" type="V_Alphanum6" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Alphanum6">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="6"/>
+ <xs:pattern value="[0-9a-zA-Z]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Alphanum10">
+ <xs:attribute name="V" type="V_Alphanum10" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Alphanum10">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="10"/>
+ <xs:pattern value="[0-9a-zA-Z]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Alphanum11">
+ <xs:attribute name="V" type="V_Alphanum11" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Alphanum11">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="11"/>
+ <xs:pattern value="[0-9a-zA-Z]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Alphanum12">
+ <xs:attribute name="V" type="V_Alphanum12" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Alphanum12">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="12"/>
+ <xs:pattern value="[0-9a-zA-Z]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Alphanum14">
+ <xs:attribute name="V" type="V_Alphanum14" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Alphanum14">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="14"/>
+ <xs:pattern value="[0-9a-zA-Z]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Alphanum15">
+ <xs:attribute name="V" type="V_Alphanum15" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Alphanum15">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="15"/>
+ <xs:pattern value="[0-9a-zA-Z]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Alphanum16">
+ <xs:attribute name="V" type="V_Alphanum16" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Alphanum16">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="16"/>
+ <xs:pattern value="[0-9a-zA-Z]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Alphanum17">
+ <xs:attribute name="V" type="V_Alphanum17" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Alphanum17">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="17"/>
+ <xs:pattern value="[0-9a-zA-Z]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Alphanum20">
+ <xs:attribute name="V" type="V_Alphanum20" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Alphanum20">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="20"/>
+ <xs:pattern value="[0-9a-zA-Z]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Alphanum25">
+ <xs:attribute name="V" type="V_Alphanum25" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Alphanum25">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="25"/>
+ <xs:pattern value="[0-9a-zA-Z]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Alphanum30">
+ <xs:attribute name="V" type="V_Alphanum30" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Alphanum30">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="30"/>
+ <xs:pattern value="[0-9a-zA-Z]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Alphanum50">
+ <xs:attribute name="V" type="V_Alphanum50" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Alphanum50">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="50"/>
+ <xs:pattern value="[0-9a-zA-Z]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Alphanum80">
+ <xs:attribute name="V" type="V_Alphanum80" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Alphanum80">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="80"/>
+ <xs:pattern value="[0-9a-zA-Z]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Alphanum100">
+ <xs:attribute name="V" type="V_Alphanum100" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Alphanum100">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="100"/>
+ <xs:pattern value="[0-9a-zA-Z]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Alphanum250">
+ <xs:attribute name="V" type="V_Alphanum250" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Alphanum250">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="250"/>
+ <xs:pattern value="[0-9a-zA-Z]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Num1">
+ <xs:attribute name="V" type="V_Num1" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Num1">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="1"/>
+ <xs:pattern value="[0-9]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Num2">
+ <xs:attribute name="V" type="V_Num2" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Num2">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="2"/>
+ <xs:pattern value="[0-9]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Num3">
+ <xs:attribute name="V" type="V_Num3" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Num3">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="3"/>
+ <xs:pattern value="[0-9]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Num4">
+ <xs:attribute name="V" type="V_Num4" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Num4">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="4"/>
+ <xs:pattern value="[0-9]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Num5">
+ <xs:attribute name="V" type="V_Num5" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Num5">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="5"/>
+ <xs:pattern value="[0-9]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Num6">
+ <xs:attribute name="V" type="V_Num6" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Num6">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="6"/>
+ <xs:pattern value="[0-9]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Num7">
+ <xs:attribute name="V" type="V_Num7" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Num7">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="7"/>
+ <xs:pattern value="[0-9]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Num8">
+ <xs:attribute name="V" type="V_Num8" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Num8">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="8"/>
+ <xs:pattern value="[0-9]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Num9">
+ <xs:attribute name="V" type="V_Num9" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Num9">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="9"/>
+ <xs:pattern value="[0-9]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Num10">
+ <xs:attribute name="V" type="V_Num10" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Num10">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="10"/>
+ <xs:pattern value="[0-9]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Num12">
+ <xs:attribute name="V" type="V_Num12" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Num12">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="12"/>
+ <xs:pattern value="[0-9]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Num13">
+ <xs:attribute name="V" type="V_Num13" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Num13">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="13"/>
+ <xs:pattern value="[0-9]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Num14">
+ <xs:attribute name="V" type="V_Num14" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Num14">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="14"/>
+ <xs:pattern value="[0-9]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Num15">
+ <xs:attribute name="V" type="V_Num15" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Num15">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="15"/>
+ <xs:pattern value="[0-9]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Num16">
+ <xs:attribute name="V" type="V_Num16" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Num16">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="16"/>
+ <xs:pattern value="[0-9]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Num17">
+ <xs:attribute name="V" type="V_Num17" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Num17">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="17"/>
+ <xs:pattern value="[0-9]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Num20">
+ <xs:attribute name="V" type="V_Num20" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Num20">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="20"/>
+ <xs:pattern value="[0-9]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Num25">
+ <xs:attribute name="V" type="V_Num25" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Num25">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="25"/>
+ <xs:pattern value="[0-9]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Texte2">
+ <xs:attribute name="V" type="V_Texte2" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Texte2">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="2"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Texte5">
+ <xs:attribute name="V" type="V_Texte5" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Texte5">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="5"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Texte6">
+ <xs:attribute name="V" type="V_Texte6" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Texte6">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="6"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Texte7">
+ <xs:attribute name="V" type="V_Texte7" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Texte7">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="7"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Texte10">
+ <xs:attribute name="V" type="V_Texte10" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Texte10">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="10"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Texte11">
+ <xs:attribute name="V" type="V_Texte11" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Texte11">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="11"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Texte12">
+ <xs:attribute name="V" type="V_Texte12" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Texte12">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="12"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Texte14">
+ <xs:attribute name="V" type="V_Texte14" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Texte14">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="14"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Texte15">
+ <xs:attribute name="V" type="V_Texte15" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Texte15">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="15"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Texte16">
+ <xs:attribute name="V" type="V_Texte16" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Texte16">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="16"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Texte20">
+ <xs:attribute name="V" type="V_Texte20" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Texte20">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="20"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Texte24">
+ <xs:attribute name="V" type="V_Texte24" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Texte24">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="24"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Texte25">
+ <xs:attribute name="V" type="V_Texte25" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Texte25">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="25"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Texte30">
+ <xs:attribute name="V" type="V_Texte30" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Texte30">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="30"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Texte32">
+ <xs:attribute name="V" type="V_Texte32" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Texte32">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="32"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Texte38">
+ <xs:attribute name="V" type="V_Texte38" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Texte38">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="38"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Texte50">
+ <xs:attribute name="V" type="V_Texte50" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Texte50">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="50"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Texte100">
+ <xs:attribute name="V" type="V_Texte100" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Texte100">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="100"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Texte160">
+ <xs:attribute name="V" type="V_Texte160" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Texte160">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="160"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Texte200">
+ <xs:attribute name="V" type="V_Texte200" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Texte200">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="200"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Texte250">
+ <xs:attribute name="V" type="V_Texte250" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Texte250">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="250"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Texte500">
+ <xs:attribute name="V" type="V_Texte500" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Texte500">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="500"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Annee">
+ <xs:attribute name="V" type="V_Annee" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Annee">
+ <xs:restriction base="xs:gYear"/>
+ </xs:simpleType>
+ <xs:complexType name="Base_Booleen">
+ <xs:attribute name="V" type="V_Booleen" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Booleen">
+ <xs:restriction base="xs:boolean"/>
+ </xs:simpleType>
+ <xs:complexType name="Base_Date">
+ <xs:attribute name="V" type="V_Date" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Date">
+ <xs:restriction base="xs:date"/>
+ </xs:simpleType>
+ <xs:complexType name="Base_Montant">
+ <xs:attribute name="V" type="V_Montant" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Montant">
+ <xs:restriction base="xs:decimal">
+ <xs:totalDigits value="14"/>
+ <xs:fractionDigits value="2"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Taux">
+ <xs:attribute name="V" type="V_Taux" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Taux">
+ <xs:restriction base="xs:decimal">
+ <xs:totalDigits value="5"/>
+ <xs:fractionDigits value="2"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Montant3">
+ <xs:attribute name="V" type="V_Montant3" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Montant3">
+ <xs:restriction base="xs:decimal">
+ <xs:totalDigits value="15"/>
+ <xs:fractionDigits value="3"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Taux3">
+ <xs:attribute name="V" type="V_Taux3" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Taux3">
+ <xs:restriction base="xs:decimal">
+ <xs:totalDigits value="6"/>
+ <xs:fractionDigits value="3"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Dec3">
+ <xs:attribute name="V" type="V_Dec3" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Dec3">
+ <xs:restriction base="xs:decimal">
+ <xs:fractionDigits value="3"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Dec2">
+ <xs:attribute name="V" type="V_Dec2" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Dec2">
+ <xs:restriction base="xs:decimal">
+ <xs:fractionDigits value="2"/>
+ </xs:restriction>
+ </xs:simpleType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- edited with XMLSPY v2004 rel. 3 U (http://www.xmlspy.com) by test (test) -->
+<xs:schema targetNamespace="http://uri.etsi.org/01903/v1.1.1#" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns="http://uri.etsi.org/01903/v1.1.1#" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
+ <xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="../xmldsig/xmldsig-core-schema.xsd"/>
+ <!-- Start auxiliary types definitions: AnyType, ObjectIdentifierType, EncapsulatedPKIDataType and TimestampType-->
+ <!-- Start AnyType -->
+ <xs:element name="Any" type="AnyType"/>
+ <xs:complexType name="AnyType" mixed="true">
+ <xs:sequence>
+ <xs:any namespace="##any" processContents="lax"/>
+ </xs:sequence>
+ <xs:anyAttribute namespace="##any"/>
+ </xs:complexType>
+ <!-- End AnyType -->
+ <!-- Start ObjectIdentifierType-->
+ <xs:element name="ObjectIdentifier" type="ObjectIdentifierType"/>
+ <xs:complexType name="ObjectIdentifierType">
+ <xs:sequence>
+ <xs:element name="Identifier" type="IdentifierType"/>
+ <xs:element name="Description" type="xs:string" minOccurs="0"/>
+ <xs:element name="DocumentationReferences" type="DocumentationReferencesType" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="IdentifierType">
+ <xs:simpleContent>
+ <xs:extension base="xs:anyURI">
+ <xs:attribute name="Qualifier" type="QualifierType" use="optional"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ <xs:simpleType name="QualifierType">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="OIDAsURN"/>
+ <xs:enumeration value="OIDAsURI"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="DocumentationReferencesType">
+ <xs:sequence maxOccurs="unbounded">
+ <xs:element name="DocumentationReference" type="xs:anyURI"/>
+ </xs:sequence>
+ </xs:complexType>
+ <!-- End ObjectIdentifierType-->
+ <!-- Start EncapsulatedPKIDataType-->
+ <xs:element name="EncapsulatedPKIData" type="EncapsulatedPKIDataType"/>
+ <xs:complexType name="EncapsulatedPKIDataType">
+ <xs:simpleContent>
+ <xs:extension base="xs:base64Binary">
+ <xs:attribute name="Id" type="xs:ID" use="optional"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ <!-- End EncapsulatedPKIDataType -->
+ <!-- Start TimeStampType -->
+ <xs:element name="TimeStamp" type="TimeStampType"/>
+ <xs:complexType name="TimeStampType">
+ <xs:sequence>
+ <xs:element name="HashDataInfo" type="HashDataInfoType" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:choice minOccurs="0">
+ <xs:element name="EncapsulatedTimeStamp" type="EncapsulatedPKIDataType"/>
+ <xs:element name="XMLTimeStamp" type="AnyType"/>
+ </xs:choice>
+ <xs:element ref="ds:Signature" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="HashDataInfoType">
+ <xs:sequence>
+ <xs:element name="Transforms" type="ds:TransformsType" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="URI" type="xs:anyURI" use="required"/>
+ </xs:complexType>
+ <!-- End TimeStampType -->
+ <!-- End auxiliary types definitions-->
+ <!-- Start container types -->
+ <!-- Start QualifyingProperties -->
+ <xs:element name="QualifyingProperties" type="QualifyingPropertiesType"/>
+ <xs:complexType name="QualifyingPropertiesType">
+ <xs:sequence>
+ <xs:element name="SignedProperties" type="SignedPropertiesType" minOccurs="0"/>
+ <xs:element name="UnsignedProperties" type="UnsignedPropertiesType" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="Target" type="xs:anyURI" use="required"/>
+ <xs:attribute name="Id" type="xs:ID" use="optional"/>
+ </xs:complexType>
+ <!-- End QualifyingProperties -->
+ <!-- Start SignedProperties-->
+ <xs:element name="SignedProperties" type="SignedPropertiesType"/>
+ <xs:complexType name="SignedPropertiesType">
+ <xs:sequence>
+ <xs:element name="SignedSignatureProperties" type="SignedSignaturePropertiesType"/>
+ <xs:element name="SignedDataObjectProperties" type="SignedDataObjectPropertiesType" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="Id" type="xs:ID" use="optional"/>
+ </xs:complexType>
+ <!-- End SignedProperties-->
+ <!-- Start UnsignedProperties-->
+ <xs:element name="UnsignedProperties" type="UnsignedPropertiesType"/>
+ <xs:complexType name="UnsignedPropertiesType">
+ <xs:sequence>
+ <xs:element name="UnsignedSignatureProperties" type="UnsignedSignaturePropertiesType" minOccurs="0"/>
+ <xs:element name="UnsignedDataObjectProperties" type="UnsignedDataObjectPropertiesType" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="Id" type="xs:ID" use="optional"/>
+ </xs:complexType>
+ <!-- End UnsignedProperties-->
+ <!-- Start SignedSignatureProperties-->
+ <xs:element name="SignedSignatureProperties" type="SignedSignaturePropertiesType"/>
+ <xs:complexType name="SignedSignaturePropertiesType">
+ <xs:sequence>
+ <xs:element name="SigningTime" type="xs:dateTime"/>
+ <xs:element name="SigningCertificate" type="CertIDListType"/>
+ <xs:element name="SignaturePolicyIdentifier" type="SignaturePolicyIdentifierType"/>
+ <xs:element name="SignatureProductionPlace" type="SignatureProductionPlaceType" minOccurs="0"/>
+ <xs:element name="SignerRole" type="SignerRoleType" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <!-- End SignedSignatureProperties-->
+ <!-- Start SignedDataObjectProperties-->
+ <xs:element name="SignedDataObjectProperties" type="SignedDataObjectPropertiesType"/>
+ <xs:complexType name="SignedDataObjectPropertiesType">
+ <xs:sequence>
+ <xs:element name="DataObjectFormat" type="DataObjectFormatType" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="CommitmentTypeIndication" type="CommitmentTypeIndicationType" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="AllDataObjectsTimeStamp" type="TimeStampType" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="IndividualDataObjectsTimeStamp" type="TimeStampType" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <!-- End SignedDataObjectProperties-->
+ <!-- Start UnsignedSignatureProperties-->
+ <xs:element name="UnsignedSignatureProperties" type="UnsignedSignaturePropertiesType"/>
+ <xs:complexType name="UnsignedSignaturePropertiesType">
+ <xs:sequence>
+ <xs:element name="CounterSignature" type="CounterSignatureType" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="SignatureTimeStamp" type="TimeStampType" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="CompleteCertificateRefs" type="CompleteCertificateRefsType" minOccurs="0"/>
+ <xs:element name="CompleteRevocationRefs" type="CompleteRevocationRefsType" minOccurs="0"/>
+ <xs:choice>
+ <xs:element name="SigAndRefsTimeStamp" type="TimeStampType" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="RefsOnlyTimeStamp" type="TimeStampType" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:choice>
+ <xs:element name="CertificateValues" type="CertificateValuesType" minOccurs="0"/>
+ <xs:element name="RevocationValues" type="RevocationValuesType" minOccurs="0"/>
+ <xs:element name="ArchiveTimeStamp" type="TimeStampType" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <!-- End UnsignedSignatureProperties-->
+ <!-- Start UnsignedDataObjectProperties-->
+ <xs:element name="UnsignedDataObjectProperties" type="UnsignedDataObjectPropertiesType"/>
+ <xs:complexType name="UnsignedDataObjectPropertiesType">
+ <xs:sequence>
+ <xs:element name="UnsignedDataObjectProperty" type="AnyType" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <!-- End UnsignedDataObjectProperties-->
+ <!-- Start QualifyingPropertiesReference-->
+ <xs:element name="QualifyingPropertiesReference" type="QualifyingPropertiesReferenceType"/>
+ <xs:complexType name="QualifyingPropertiesReferenceType">
+ <xs:sequence>
+ <xs:element name="Transforms" type="ds:TransformsType" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="URI" type="xs:anyURI" use="required"/>
+ <xs:attribute name="Id" type="xs:ID" use="optional"/>
+ </xs:complexType>
+ <!-- End QualifyingPropertiesReference-->
+ <!-- End container types -->
+ <!-- Start SigningTime element -->
+ <xs:element name="SigningTime" type="xs:dateTime"/>
+ <!-- End SigningTime element -->
+ <!-- Start SigningCertificate -->
+ <xs:element name="SigningCertificate" type="CertIDListType"/>
+ <xs:complexType name="CertIDListType">
+ <xs:sequence>
+ <xs:element name="Cert" type="CertIDType" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="CertIDType">
+ <xs:sequence>
+ <xs:element name="CertDigest" type="DigestAlgAndValueType"/>
+ <xs:element name="IssuerSerial" type="ds:X509IssuerSerialType"/>
+ </xs:sequence>
+ <xs:attribute name="URI" type="xs:anyURI" use="optional"/>
+ </xs:complexType>
+ <xs:complexType name="DigestAlgAndValueType">
+ <xs:sequence>
+ <xs:element name="DigestMethod" type="ds:DigestMethodType"/>
+ <xs:element name="DigestValue" type="ds:DigestValueType"/>
+ </xs:sequence>
+ </xs:complexType>
+ <!-- End SigningCertificate -->
+ <!-- Start SignaturePolicyIdentifier -->
+ <xs:element name="SignaturePolicyIdentifier" type="SignaturePolicyIdentifierType"/>
+ <xs:complexType name="SignaturePolicyIdentifierType">
+ <xs:choice>
+ <xs:element name="SignaturePolicyId" type="SignaturePolicyIdType"/>
+ <xs:element name="SignaturePolicyImplied"/>
+ </xs:choice>
+ </xs:complexType>
+ <xs:complexType name="SignaturePolicyIdType">
+ <xs:sequence>
+ <xs:element name="SigPolicyId" type="ObjectIdentifierType"/>
+ <xs:element ref="ds:Transforms" minOccurs="0"/>
+ <xs:element name="SigPolicyHash" type="DigestAlgAndValueType"/>
+ <xs:element name="SigPolicyQualifiers" type="SigPolicyQualifiersListType" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="SigPolicyQualifiersListType">
+ <xs:sequence>
+ <xs:element name="SigPolicyQualifier" type="SigPolicyQualifierType" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element name="SPURI" type="xs:anyURI"/>
+ <xs:element name="SPUserNotice" type="SPUserNoticeType"/>
+ <xs:complexType name="SPUserNoticeType">
+ <xs:sequence>
+ <xs:element name="NoticeRef" type="NoticeReferenceType" minOccurs="0"/>
+ <xs:element name="ExplicitText" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="NoticeReferenceType">
+ <xs:sequence>
+ <xs:element name="Organization" type="xs:string"/>
+ <xs:element name="NoticeNumbers" type="IntegerListType"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="IntegerListType">
+ <xs:sequence>
+ <xs:element name="int" type="xs:integer" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <!-- End SignaturePolicyIdentifier -->
+ <!-- Start CounterSignature -->
+ <xs:element name="CounterSignature" type="CounterSignatureType"/>
+ <xs:complexType name="CounterSignatureType">
+ <xs:sequence>
+ <xs:element ref="ds:Signature"/>
+ </xs:sequence>
+ </xs:complexType>
+ <!-- End CounterSignature -->
+ <!-- Start DataObjectFormat -->
+ <xs:element name="DataObjectFormat" type="DataObjectFormatType"/>
+ <xs:complexType name="DataObjectFormatType">
+ <xs:sequence>
+ <xs:element name="Description" type="xs:string" minOccurs="0"/>
+ <xs:element name="ObjectIdentifier" type="ObjectIdentifierType" minOccurs="0"/>
+ <xs:element name="MimeType" type="xs:string" minOccurs="0"/>
+ <xs:element name="Encoding" type="xs:anyURI" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="ObjectReference" type="xs:anyURI" use="required"/>
+ </xs:complexType>
+ <!-- End DataObjectFormat -->
+ <!-- Start CommitmentTypeIndication -->
+ <xs:element name="CommitmentTypeIndication" type="CommitmentTypeIndicationType"/>
+ <xs:complexType name="CommitmentTypeIndicationType">
+ <xs:sequence>
+ <xs:element name="CommitmentTypeId" type="ObjectIdentifierType"/>
+ <xs:choice>
+ <xs:element name="ObjectReference" type="xs:anyURI" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="AllSignedDataObjects"/>
+ </xs:choice>
+ <xs:element name="CommitmentTypeQualifiers" type="CommitmentTypeQualifiersListType" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="CommitmentTypeQualifiersListType">
+ <xs:sequence>
+ <xs:element name="CommitmentTypeQualifier" type="AnyType" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <!-- End CommitmentTypeIndication -->
+ <!-- Start SignatureProductionPlace -->
+ <xs:element name="SignatureProductionPlace" type="SignatureProductionPlaceType"/>
+ <xs:complexType name="SignatureProductionPlaceType">
+ <xs:sequence>
+ <xs:element name="City" type="xs:string" minOccurs="0"/>
+ <xs:element name="StateOrProvince" type="xs:string" minOccurs="0"/>
+ <xs:element name="PostalCode" type="xs:string" minOccurs="0"/>
+ <xs:element name="CountryName" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <!-- End SignatureProductionPlace -->
+ <!-- Start SignerRole -->
+ <xs:element name="SignerRole" type="SignerRoleType"/>
+ <xs:complexType name="SignerRoleType">
+ <xs:sequence>
+ <xs:element name="ClaimedRoles" type="ClaimedRolesListType" minOccurs="0"/>
+ <xs:element name="CertifiedRoles" type="CertifiedRolesListType" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="ClaimedRolesListType">
+ <xs:sequence>
+ <xs:element name="ClaimedRole" type="xs:token"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="CertifiedRolesListType">
+ <xs:sequence>
+ <xs:element name="CertifiedRole" type="EncapsulatedPKIDataType" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <!-- End SignerRole -->
+ <xs:element name="AllDataObjectsTimeStamp" type="TimeStampType"/>
+ <xs:element name="IndividualDataObjectsTimeStamp" type="TimeStampType"/>
+ <xs:element name="SignatureTimeStamp" type="TimeStampType"/>
+ <!-- Start CompleteCertificateRefs -->
+ <xs:element name="CompleteCertificateRefs" type="CompleteCertificateRefsType"/>
+ <xs:complexType name="CompleteCertificateRefsType">
+ <xs:sequence>
+ <xs:element name="CertRefs" type="CertIDListType"/>
+ </xs:sequence>
+ <xs:attribute name="Id" type="xs:ID" use="optional"/>
+ </xs:complexType>
+ <!-- End CompleteCertificateRefs -->
+ <!-- Start CompleteRevocationRefs-->
+ <xs:element name="CompleteRevocationRefs" type="CompleteRevocationRefsType"/>
+ <xs:complexType name="CompleteRevocationRefsType">
+ <xs:sequence>
+ <xs:element name="CRLRefs" type="CRLRefsType" minOccurs="0"/>
+ <xs:element name="OCSPRefs" type="OCSPRefsType" minOccurs="0"/>
+ <xs:element name="OtherRefs" type="OtherCertStatusRefsType" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="Id" type="xs:ID" use="optional"/>
+ </xs:complexType>
+ <xs:complexType name="CRLRefsType">
+ <xs:sequence>
+ <xs:element name="CRLRef" type="CRLRefType" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="CRLRefType">
+ <xs:sequence>
+ <xs:element name="DigestAlgAndValue" type="DigestAlgAndValueType"/>
+ <xs:element name="CRLIdentifier" type="CRLIdentifierType" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="CRLIdentifierType">
+ <xs:sequence>
+ <xs:element name="Issuer" type="xs:string"/>
+ <xs:element name="IssueTime" type="xs:dateTime"/>
+ <xs:element name="Number" type="xs:integer" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="URI" type="xs:anyURI" use="optional"/>
+ </xs:complexType>
+ <xs:complexType name="OCSPRefsType">
+ <xs:sequence>
+ <xs:element name="OCSPRef" type="OCSPRefType" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="OCSPRefType">
+ <xs:sequence>
+ <xs:element name="OCSPIdentifier" type="OCSPIdentifierType"/>
+ <xs:element name="DigestAlgAndValue" type="DigestAlgAndValueType" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="OCSPIdentifierType">
+ <xs:sequence>
+ <xs:element name="ResponderID" type="xs:string"/>
+ <xs:element name="ProducedAt" type="xs:dateTime"/>
+ </xs:sequence>
+ <xs:attribute name="URI" type="xs:anyURI" use="optional"/>
+ </xs:complexType>
+ <xs:complexType name="OtherCertStatusRefsType">
+ <xs:sequence>
+ <xs:element name="OtherRef" type="AnyType" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <!-- End CompleteRevocationRefs-->
+ <xs:element name="SigAndRefsTimeStamp" type="TimeStampType"/>
+ <xs:element name="RefsOnlyTimeStamp" type="TimeStampType"/>
+ <!-- Start CertificateValues -->
+ <xs:element name="CertificateValues" type="CertificateValuesType"/>
+ <xs:complexType name="CertificateValuesType">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element name="EncapsulatedX509Certificate" type="EncapsulatedPKIDataType"/>
+ <xs:element name="OtherCertificate" type="AnyType"/>
+ </xs:choice>
+ <xs:attribute name="Id" type="xs:ID" use="optional"/>
+ </xs:complexType>
+ <!-- End CertificateValues -->
+ <!-- Start RevocationValues-->
+ <xs:element name="RevocationValues" type="RevocationValuesType"/>
+ <xs:complexType name="RevocationValuesType">
+ <xs:sequence>
+ <xs:element name="CRLValues" type="CRLValuesType" minOccurs="0"/>
+ <xs:element name="OCSPValues" type="OCSPValuesType" minOccurs="0"/>
+ <xs:element name="OtherValues" type="OtherCertStatusValuesType" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="Id" type="xs:ID" use="optional"/>
+ </xs:complexType>
+ <xs:complexType name="CRLValuesType">
+ <xs:sequence>
+ <xs:element name="EncapsulatedCRLValue" type="EncapsulatedPKIDataType" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="OCSPValuesType">
+ <xs:sequence>
+ <xs:element name="EncapsulatedOCSPValue" type="EncapsulatedPKIDataType" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="OtherCertStatusValuesType">
+ <xs:sequence>
+ <xs:element name="OtherValue" type="AnyType" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <!-- End RevocationValues-->
+ <xs:element name="ArchiveTimeStamp" type="TimeStampType"/>
+ <xs:complexType name="SigPolicyQualifierType">
+ <xs:sequence>
+ <xs:element ref="SPURI"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<!-- edited with XMLSPY v2004 rel. 3 U (http://www.xmlspy.com) by test (test) -->
+<!-- Schema for XML Signatures
+ http://www.w3.org/2000/09/xmldsig#
+ $Revision: 1.1 $ on $Date: 2009/10/21 16:44:03 $ by $Author: chm $
+
+ Copyright 2001 The Internet Society and W3C (Massachusetts Institute
+ of Technology, Institut National de Recherche en Informatique et en
+ Automatique, Keio University). All Rights Reserved.
+ http://www.w3.org/Consortium/Legal/
+
+ This document is governed by the W3C Software License [1] as described
+ in the FAQ [2].
+
+ [1] http://www.w3.org/Consortium/Legal/copyright-software-19980720
+ [2] http://www.w3.org/Consortium/Legal/IPR-FAQ-20000620.html#DTD
+-->
+<schema targetNamespace="http://www.w3.org/2000/09/xmldsig#" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified" version="0.1">
+ <!-- Basic Types Defined for Signatures -->
+ <simpleType name="CryptoBinary">
+ <restriction base="base64Binary"/>
+ </simpleType>
+ <!-- Start Signature -->
+ <element name="Signature" type="ds:SignatureType"/>
+ <complexType name="SignatureType">
+ <sequence>
+ <element ref="ds:SignedInfo"/>
+ <element ref="ds:SignatureValue"/>
+ <element ref="ds:KeyInfo" minOccurs="0"/>
+ <element ref="ds:Object" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="Id" type="ID" use="optional"/>
+ </complexType>
+ <element name="SignatureValue" type="ds:SignatureValueType"/>
+ <complexType name="SignatureValueType">
+ <simpleContent>
+ <extension base="base64Binary">
+ <attribute name="Id" type="ID" use="optional"/>
+ </extension>
+ </simpleContent>
+ </complexType>
+ <!-- Start SignedInfo -->
+ <element name="SignedInfo" type="ds:SignedInfoType"/>
+ <complexType name="SignedInfoType">
+ <sequence>
+ <element ref="ds:CanonicalizationMethod"/>
+ <element ref="ds:SignatureMethod"/>
+ <element ref="ds:Reference" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="Id" type="ID" use="optional"/>
+ </complexType>
+ <element name="CanonicalizationMethod" type="ds:CanonicalizationMethodType"/>
+ <complexType name="CanonicalizationMethodType" mixed="true">
+ <sequence>
+ <any namespace="##any" minOccurs="0" maxOccurs="unbounded"/>
+ <!-- (0,unbounded) elements from (1,1) namespace -->
+ </sequence>
+ <attribute name="Algorithm" type="anyURI" use="required"/>
+ </complexType>
+ <element name="SignatureMethod" type="ds:SignatureMethodType"/>
+ <complexType name="SignatureMethodType" mixed="true">
+ <sequence>
+ <element name="HMACOutputLength" type="ds:HMACOutputLengthType" minOccurs="0"/>
+ <any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
+ <!-- (0,unbounded) elements from (1,1) external namespace -->
+ </sequence>
+ <attribute name="Algorithm" type="anyURI" use="required"/>
+ </complexType>
+ <!-- Start Reference -->
+ <element name="Reference" type="ds:ReferenceType"/>
+ <complexType name="ReferenceType">
+ <sequence>
+ <element ref="ds:Transforms" minOccurs="0"/>
+ <element ref="ds:DigestMethod"/>
+ <element ref="ds:DigestValue"/>
+ </sequence>
+ <attribute name="Id" type="ID" use="optional"/>
+ <attribute name="URI" type="anyURI" use="optional"/>
+ <attribute name="Type" type="anyURI" use="optional"/>
+ </complexType>
+ <element name="Transforms" type="ds:TransformsType"/>
+ <complexType name="TransformsType">
+ <sequence>
+ <element ref="ds:Transform" maxOccurs="unbounded"/>
+ </sequence>
+ </complexType>
+ <element name="Transform" type="ds:TransformType"/>
+ <complexType name="TransformType" mixed="true">
+ <choice minOccurs="0" maxOccurs="unbounded">
+ <any namespace="##other" processContents="lax"/>
+ <element name="XPath" type="string"/>
+ <!-- (1,1) elements from (0,unbounded) namespaces -->
+ </choice>
+ <attribute name="Algorithm" type="anyURI" use="required"/>
+ </complexType>
+ <!-- End Reference -->
+ <element name="DigestMethod" type="ds:DigestMethodType"/>
+ <complexType name="DigestMethodType" mixed="true">
+ <sequence>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="Algorithm" type="anyURI" use="required"/>
+ </complexType>
+ <element name="DigestValue" type="ds:DigestValueType"/>
+ <simpleType name="DigestValueType">
+ <restriction base="base64Binary"/>
+ </simpleType>
+ <!-- End SignedInfo -->
+ <!-- Start KeyInfo -->
+ <element name="KeyInfo" type="ds:KeyInfoType"/>
+ <complexType name="KeyInfoType" mixed="true">
+ <choice maxOccurs="unbounded">
+ <element ref="ds:KeyName"/>
+ <element ref="ds:KeyValue"/>
+ <element ref="ds:RetrievalMethod"/>
+ <element ref="ds:X509Data"/>
+ <element ref="ds:PGPData"/>
+ <element ref="ds:SPKIData"/>
+ <element ref="ds:MgmtData"/>
+ <any namespace="##other" processContents="lax"/>
+ <!-- (1,1) elements from (0,unbounded) namespaces -->
+ </choice>
+ <attribute name="Id" type="ID" use="optional"/>
+ </complexType>
+ <element name="KeyName" type="string"/>
+ <element name="MgmtData" type="string"/>
+ <element name="KeyValue" type="ds:KeyValueType"/>
+ <complexType name="KeyValueType" mixed="true">
+ <choice>
+ <element ref="ds:DSAKeyValue"/>
+ <element ref="ds:RSAKeyValue"/>
+ <any namespace="##other" processContents="lax"/>
+ </choice>
+ </complexType>
+ <element name="RetrievalMethod" type="ds:RetrievalMethodType"/>
+ <complexType name="RetrievalMethodType">
+ <sequence>
+ <element ref="ds:Transforms" minOccurs="0"/>
+ </sequence>
+ <attribute name="URI" type="anyURI"/>
+ <attribute name="Type" type="anyURI" use="optional"/>
+ </complexType>
+ <!-- Start X509Data -->
+ <element name="X509Data" type="ds:X509DataType"/>
+ <complexType name="X509DataType">
+ <sequence maxOccurs="unbounded">
+ <choice>
+ <element name="X509IssuerSerial" type="ds:X509IssuerSerialType"/>
+ <element name="X509SKI" type="base64Binary"/>
+ <element name="X509SubjectName" type="string"/>
+ <element name="X509Certificate" type="base64Binary"/>
+ <element name="X509CRL" type="base64Binary"/>
+ <any namespace="##other" processContents="lax"/>
+ </choice>
+ </sequence>
+ </complexType>
+ <complexType name="X509IssuerSerialType">
+ <sequence>
+ <element name="X509IssuerName" type="string"/>
+ <element name="X509SerialNumber" type="integer"/>
+ </sequence>
+ </complexType>
+ <!-- End X509Data -->
+ <!-- Begin PGPData -->
+ <element name="PGPData" type="ds:PGPDataType"/>
+ <complexType name="PGPDataType">
+ <choice>
+ <sequence>
+ <element name="PGPKeyID" type="base64Binary"/>
+ <element name="PGPKeyPacket" type="base64Binary" minOccurs="0"/>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ <sequence>
+ <element name="PGPKeyPacket" type="base64Binary"/>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ </choice>
+ </complexType>
+ <!-- End PGPData -->
+ <!-- Begin SPKIData -->
+ <element name="SPKIData" type="ds:SPKIDataType"/>
+ <complexType name="SPKIDataType">
+ <sequence maxOccurs="unbounded">
+ <element name="SPKISexp" type="base64Binary"/>
+ <any namespace="##other" processContents="lax" minOccurs="0"/>
+ </sequence>
+ </complexType>
+ <!-- End SPKIData -->
+ <!-- End KeyInfo -->
+ <!-- Start Object (Manifest, SignatureProperty) -->
+ <element name="Object" type="ds:ObjectType"/>
+ <complexType name="ObjectType" mixed="true">
+ <sequence minOccurs="0" maxOccurs="unbounded">
+ <any namespace="##any" processContents="lax"/>
+ </sequence>
+ <attribute name="Id" type="ID" use="optional"/>
+ <attribute name="MimeType" type="string" use="optional"/>
+ <attribute name="Encoding" type="anyURI" use="optional"/>
+ <!-- add a grep facet -->
+ </complexType>
+ <element name="Manifest" type="ds:ManifestType"/>
+ <complexType name="ManifestType">
+ <sequence>
+ <element ref="ds:Reference" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="Id" type="ID" use="optional"/>
+ </complexType>
+ <element name="SignatureProperties" type="ds:SignaturePropertiesType"/>
+ <complexType name="SignaturePropertiesType">
+ <sequence>
+ <element ref="ds:SignatureProperty" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="Id" type="ID" use="optional"/>
+ </complexType>
+ <element name="SignatureProperty" type="ds:SignaturePropertyType"/>
+ <complexType name="SignaturePropertyType" mixed="true">
+ <choice maxOccurs="unbounded">
+ <any namespace="##other" processContents="lax"/>
+ <!-- (1,1) elements from (1,unbounded) namespaces -->
+ </choice>
+ <attribute name="Target" type="anyURI" use="required"/>
+ <attribute name="Id" type="ID" use="optional"/>
+ </complexType>
+ <!-- End Object (Manifest, SignatureProperty) -->
+ <!-- Start Algorithm Parameters -->
+ <simpleType name="HMACOutputLengthType">
+ <restriction base="integer"/>
+ </simpleType>
+ <!-- Start KeyValue Element-types -->
+ <element name="DSAKeyValue" type="ds:DSAKeyValueType"/>
+ <complexType name="DSAKeyValueType">
+ <sequence>
+ <sequence minOccurs="0">
+ <element name="P" type="ds:CryptoBinary"/>
+ <element name="Q" type="ds:CryptoBinary"/>
+ </sequence>
+ <element name="G" type="ds:CryptoBinary" minOccurs="0"/>
+ <element name="Y" type="ds:CryptoBinary"/>
+ <element name="J" type="ds:CryptoBinary" minOccurs="0"/>
+ <sequence minOccurs="0">
+ <element name="Seed" type="ds:CryptoBinary"/>
+ <element name="PgenCounter" type="ds:CryptoBinary"/>
+ </sequence>
+ </sequence>
+ </complexType>
+ <element name="RSAKeyValue" type="ds:RSAKeyValueType"/>
+ <complexType name="RSAKeyValueType">
+ <sequence>
+ <element name="Modulus" type="ds:CryptoBinary"/>
+ <element name="Exponent" type="ds:CryptoBinary"/>
+ </sequence>
+ </complexType>
+ <!-- End KeyValue Element-types -->
+ <!-- End Signature -->
+</schema>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<!-- edited with XMLSPY v2004 rel. 3 U (http://www.xmlspy.com) by test (test) -->
+<schema targetNamespace="http://www.w3.org/2001/04/xmlenc#" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.0">
+ <import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="../xmldsig/xmldsig-core-schema.xsd"/>
+ <complexType name="EncryptedType" abstract="true">
+ <sequence>
+ <element name="EncryptionMethod" type="xenc:EncryptionMethodType" minOccurs="0"/>
+ <element ref="ds:KeyInfo" minOccurs="0"/>
+ <element ref="xenc:CipherData"/>
+ <element ref="xenc:EncryptionProperties" minOccurs="0"/>
+ </sequence>
+ <attribute name="Id" type="ID" use="optional"/>
+ <attribute name="Type" type="anyURI" use="optional"/>
+ <attribute name="MimeType" type="string" use="optional"/>
+ <attribute name="Encoding" type="anyURI" use="optional"/>
+ </complexType>
+ <complexType name="EncryptionMethodType" mixed="true">
+ <sequence>
+ <element name="KeySize" type="xenc:KeySizeType" minOccurs="0"/>
+ <element name="OAEPparams" type="base64Binary" minOccurs="0"/>
+ <any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="Algorithm" type="anyURI" use="required"/>
+ </complexType>
+ <simpleType name="KeySizeType">
+ <restriction base="integer"/>
+ </simpleType>
+ <element name="CipherData" type="xenc:CipherDataType"/>
+ <complexType name="CipherDataType">
+ <choice>
+ <element name="CipherValue" type="base64Binary"/>
+ <element ref="xenc:CipherReference"/>
+ </choice>
+ </complexType>
+ <element name="CipherReference" type="xenc:CipherReferenceType"/>
+ <complexType name="CipherReferenceType">
+ <choice>
+ <element name="Transforms" type="xenc:TransformsType" minOccurs="0"/>
+ </choice>
+ <attribute name="URI" type="anyURI" use="required"/>
+ </complexType>
+ <complexType name="TransformsType">
+ <sequence>
+ <element ref="ds:Transform" maxOccurs="unbounded"/>
+ </sequence>
+ </complexType>
+ <element name="EncryptedData" type="xenc:EncryptedDataType"/>
+ <complexType name="EncryptedDataType">
+ <complexContent>
+ <extension base="xenc:EncryptedType"/>
+ </complexContent>
+ </complexType>
+ <!-- Children of ds:KeyInfo -->
+ <element name="EncryptedKey" type="xenc:EncryptedKeyType"/>
+ <complexType name="EncryptedKeyType">
+ <complexContent>
+ <extension base="xenc:EncryptedType">
+ <sequence>
+ <element ref="xenc:ReferenceList" minOccurs="0"/>
+ <element name="CarriedKeyName" type="string" minOccurs="0"/>
+ </sequence>
+ <attribute name="Recipient" type="string" use="optional"/>
+ </extension>
+ </complexContent>
+ </complexType>
+ <element name="AgreementMethod" type="xenc:AgreementMethodType"/>
+ <complexType name="AgreementMethodType" mixed="true">
+ <sequence>
+ <element name="KA-Nonce" type="base64Binary" minOccurs="0"/>
+ <any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
+ <element name="OriginatorKeyInfo" type="ds:KeyInfoType" minOccurs="0"/>
+ <element name="RecipientKeyInfo" type="ds:KeyInfoType" minOccurs="0"/>
+ <!-- <element ref="ds:DigestMethod" minOccurs="0"/> -->
+ </sequence>
+ <attribute name="Algorithm" type="anyURI" use="required"/>
+ </complexType>
+ <!-- End Children of ds:KeyInfo -->
+ <element name="ReferenceList">
+ <complexType>
+ <choice maxOccurs="unbounded">
+ <element name="DataReference" type="xenc:ReferenceType"/>
+ <element name="KeyReference" type="xenc:ReferenceType"/>
+ </choice>
+ </complexType>
+ </element>
+ <complexType name="ReferenceType">
+ <sequence>
+ <any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="URI" type="anyURI" use="required"/>
+ </complexType>
+ <element name="EncryptionProperties" type="xenc:EncryptionPropertiesType"/>
+ <complexType name="EncryptionPropertiesType">
+ <sequence>
+ <element ref="xenc:EncryptionProperty" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="Id" type="ID" use="optional"/>
+ </complexType>
+ <element name="EncryptionProperty" type="xenc:EncryptionPropertyType"/>
+ <complexType name="EncryptionPropertyType" mixed="true">
+ <choice maxOccurs="unbounded">
+ <any namespace="##other" processContents="lax"/>
+ </choice>
+ <attribute name="Target" type="anyURI" use="optional"/>
+ <attribute name="Id" type="ID" use="optional"/>
+ <anyAttribute namespace="http://www.w3.org/XML/1998/namespace"/>
+ </complexType>
+</schema>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE xsl:stylesheet [
+]>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:p="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/aller"
+ xmlns:added="http://projets.admisource.gouv.fr/xemelios/namespaces#added"
+ xmlns:ano="http://projets.admisource.gouv.fr/xemelios/namespaces#anomally"
+ xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xad="http://uri.etsi.org/01903/v1.1.1#"
+ xmlns:data="data.uri"
+ xmlns:xemhlp="http://xemelios.org/extensions/xml/functions"
+ version="2.0">
+ <!-- xmlns:xemhlp="fr.gouv.finances.cp.utils.xml.helper.HelperFunction" xmlns:xem="fr.gouv.finances.cp.utils.xml.certs.Certificate509" -->
+ <xsl:param name="browser-destination"/>
+ <xsl:output encoding="ISO-8859-1" method="xhtml" exclude-result-prefixes="p added ano data"
+ doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" include-content-type="no" indent="yes"/>
+ <xsl:decimal-format name="decformat" decimal-separator="," grouping-separator=" " digit="#"
+ pattern-separator=";" NaN="NaN" minus-sign="-"/>
+ <xsl:key name="distinct-exer" match="Exer" use="@V"/>
+ <xsl:variable name="exercice">
+ <xsl:value-of select="xemhlp:getDate('yyyy')"/>
+ <!--xsl:value-of select="format-date(current(),'[Y]')"/-->
+ </xsl:variable>
+ <xsl:variable name="sousdomaines">
+ <domaine code="depense">
+ <triplet code="01-01-01" valeur="Ordinaire"/>
+ <triplet code="01-01-02" valeur="Ordinaire"/>
+ <triplet code="02-02-06" valeur="Correctif"/>
+ <triplet code="01-02-09" valeur="Correctif"/>
+ <triplet code="02-02-10" valeur="Correctif"/>
+ <triplet code="01-05-01" valeur="EAP"/>
+ <triplet code="01-05-02" valeur="EAP"/>
+ <triplet code="01-05-03" valeur="EAP"/>
+ <triplet code="01-05-04" valeur="EAP"/>
+ <triplet code="01-01-05" valeur="Régie"/>
+ <triplet code="01-05-05" valeur="Régie"/>
+ <triplet code="01-09-01" valeur="Marché"/>
+ <triplet code="01-09-02" valeur="Marché"/>
+ <triplet code="01-09-12" valeur="Marché"/>
+ <triplet code="01-09-13" valeur="Marché"/>
+ <triplet code="01-01-03" valeur="Inventaire/Emprunt"/>
+ <triplet code="01-01-04" valeur="Inventaire/Emprunt"/>
+ <triplet code="01-10-01" valeur="Rattachement"/>
+ <triplet code="01-10-02" valeur="Rattachement"/>
+ <triplet code="01-10-03" valeur="Rattachement"/>
+ <triplet code="01-10-04" valeur="Rattachement"/>
+ <triplet code="01-10-05" valeur="Rattachement"/>
+ <triplet code="01-10-11" valeur="Rattachement"/>
+ <triplet code="01-03-01" valeur="Fin d'exercice"/>
+ <triplet code="01-03-02" valeur="Fin d'exercice"/>
+ <triplet code="01-03-03" valeur="Fin d'exercice"/>
+ <triplet code="01-03-04" valeur="Fin d'exercice"/>
+ <triplet code="01-03-18" valeur="Fin d'exercice"/>
+ <triplet code="01-04-01" valeur="Fin d'exercice"/>
+ <triplet code="01-04-02" valeur="Fin d'exercice"/>
+ <triplet code="01-04-03" valeur="Fin d'exercice"/>
+ <triplet code="01-04-04" valeur="Fin d'exercice"/>
+ <triplet code="02-04-06" valeur="Fin d'exercice"/>
+ <triplet code="01-13-01" valeur="Fin d'exercice"/>
+ <triplet code="02-13-06" valeur="Fin d'exercice"/>
+ <triplet code="01-08-01" valeur="Collectif"/>
+ <triplet code="01-08-02" valeur="Collectif"/>
+ <triplet code="01-01-11" valeur="Paie"/>
+ <triplet code="01-08-11" valeur="Paie"/>
+ <triplet code="01-07-01" valeur="Admission en non valeur"/>
+ <triplet code="01-06-01" valeur="Global"/>
+ <triplet code="01-06-04" valeur="Global"/>
+ <triplet code="01-06-07" valeur="Global"/>
+ <triplet code="01-02-07" valeur="Hors Scope"/>
+ <triplet code="01-02-08" valeur="Hors Scope"/>
+ <triplet code="03-11-01" valeur="Hors Scope"/>
+ <triplet code="03-11-02" valeur="Hors Scope"/>
+ <triplet code="03-11-14" valeur="Hors Scope"/>
+ </domaine>
+ <domaine code="recette">
+ <triplet code="01-01-01" valeur="Ordinaire"/>
+ <triplet code="01-01-02" valeur="Ordinaire"/>
+ <triplet code="02-02-06" valeur="Correctif"/>
+ <triplet code="01-02-09" valeur="Correctif"/>
+ <triplet code="02-02-10" valeur="Correctif"/>
+ <triplet code="01-05-01" valeur="Emis Après Encaissement"/>
+ <triplet code="01-05-02" valeur="Emis Après Encaissement"/>
+ <triplet code="01-05-03" valeur="Emis Après Encaissement"/>
+ <triplet code="01-05-04" valeur="Emis Après Encaissement"/>
+ <triplet code="01-01-05" valeur="Régie"/>
+ <triplet code="01-05-05" valeur="Régie"/>
+ <triplet code="01-01-03" valeur="Inventaire/Emprunt"/>
+ <triplet code="01-01-04" valeur="Inventaire/Emprunt"/>
+ <triplet code="01-11-01" valeur="Rattachement"/>
+ <triplet code="01-11-02" valeur="Rattachement"/>
+ <triplet code="01-11-04" valeur="Rattachement"/>
+ <triplet code="01-01-18" valeur="Fin d'exercice"/>
+ <triplet code="01-03-01" valeur="Fin d'exercice"/>
+ <triplet code="01-03-02" valeur="Fin d'exercice"/>
+ <triplet code="01-03-03" valeur="Fin d'exercice"/>
+ <triplet code="01-03-04" valeur="Fin d'exercice"/>
+ <triplet code="01-03-18" valeur="Fin d'exercice"/>
+ <triplet code="01-04-01" valeur="Fin d'exercice"/>
+ <triplet code="01-04-02" valeur="Fin d'exercice"/>
+ <triplet code="01-04-03" valeur="Fin d'exercice"/>
+ <triplet code="01-04-04" valeur="Fin d'exercice"/>
+ <triplet code="02-04-06" valeur="Fin d'exercice"/>
+ <triplet code="01-14-01" valeur="Fin d'exercice"/>
+ <triplet code="02-14-06" valeur="Fin d'exercice"/>
+ <triplet code="01-09-01" valeur="Majoration"/>
+ <triplet code="01-06-01" valeur="Récapitulatif"/>
+ <triplet code="02-06-06" valeur="Récapitulatif"/>
+ <triplet code="01-07-01" valeur="Récapitulatif"/>
+ <triplet code="01-02-07" valeur="Hors Scope"/>
+ <triplet code="01-02-08" valeur="Hors Scope"/>
+ <triplet code="01-10-01" valeur="Hors Scope"/>
+ <triplet code="01-10-02" valeur="Hors Scope"/>
+ <triplet code="03-12-01" valeur="Hors Scope"/>
+ <triplet code="03-12-02" valeur="Hors Scope"/>
+ <triplet code="03-12-11" valeur="Hors Scope"/>
+ </domaine>
+ </xsl:variable>
+ <xsl:template match="*"/>
+ <xsl:template match="/p:PES_Aller">
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <head>
+ <style type="text/css">
+ @page {
+ size: 29.7cm 21cm;
+ margin: 0.5 0.5 0.5 0.5;
+
+ }
+ body {
+ width: 29cm;
+ font-family: verdana, sans-serif;
+ font-size: 10px;
+ background-color: #FFFFFF;
+
+ }
+ div.divpage {
+ width: 29cm;
+ margin: 0 0 0 0;
+
+ }
+ span.Resultat {
+ font-size:11.0pt;
+ color:navy
+ }
+ p.Normal, li.Normal, div.Normal {
+ margin:0cm;
+ margin-bottom:.0001pt;
+ font-size:10.0pt;
+ font-family:"Times New Roman";
+ }
+ p.Style1, li.Style1, div.Style1 {
+ margin:0cm;
+ margin-bottom:.0001pt;
+ text-align:center;
+ page-break-before:always;
+ font-size:12.0pt;
+ font-family:"Times New Roman";
+ font-weight:bold;
+ }
+ table {
+ border-collapse: collapse;
+
+ }
+ table.entete {
+ margin: 0;
+ border-style: none;
+ border-width: 0px;
+ border-color: black;
+ width: 100%;
+ font-size: 14px;
+
+ }
+ tr {
+ margin: 0;
+
+ }
+ td {
+ margin: 0;
+ border:solid black
+ 1.0pt;
+ border-style: inset;
+ border-width: 1px;
+ border-color: black;
+ vertical-align: top;
+ line-height: 13px;
+ border-top:none;
+ border-bottom:solid black 1.0pt;
+ border-right: solid
+ black 1.0pt;
+ padding:0cm 3.5pt 0cm 3.5pt;
+
+ }
+ table.footer {
+ margin: 0;
+ border-style: none;
+ width: 100%;
+ font-size: 12px;
+
+ }
+ td.noborder {
+ border-style: none;
+
+ }
+ td.right {
+ text-align:
+ right;
+
+ }
+ noupper {
+ border-top-style: none;
+
+ }
+ :link {
+ color: #00c;
+ background: transparent
+ }
+ :visited {
+ color: #609;
+ background: transparent
+ }
+ a:active {
+ color: #c00;
+ background:
+ transparent
+ }
+ a:link img, a:visited img {
+ border-style: none
+ }
+ .gras {
+ font-weight: bold;
+ }
+ .pj {
+ font-size: 10px;
+ font-weight: normal;
+
+ }
+ li.pj {
+ list-style-type: none;
+ margin-left: -20px;
+
+ } </style>
+ <title>ANALYSE DES FLUX de PES</title>
+ </head>
+ <body>
+ <p class="Style1">Résumé du flux </p>
+ <p class="Normal"> </p>
+ <p class="Normal"> </p>
+ <div align="center">
+ <table class="NormalTable" border="1" cellspacing="0" cellpadding="0" align="center"
+ style="border-collapse:collapse;border:1px">
+ <!--style='border-collapse:collapse;border:none'-->
+ <tr style="page-break-inside:avoid">
+ <td width="184" valign="top"
+ style="width:138.2pt;
+ background:gray;padding:0cm 3.5pt 0cm 3.5pt">
+ <p class="Normal" align="center" style="text-align:center">
+ <b>
+ <span style="color:white">Domaine</span>
+ </b>
+ </p>
+ </td>
+ <td width="161" valign="top"
+ style="width:120.45pt;
+ border-left:none;background:gray;padding:0cm 3.5pt 0cm 3.5pt">
+ <p class="Normal" align="center" style="text-align:center">
+ <b>
+ <span style="color:white">Nombre de bordereaux</span>
+ </b>
+ </p>
+ </td>
+ <td width="167" valign="top"
+ style="width:125.15pt;
+ border-left:none;background:gray;padding:0cm 3.5pt 0cm 3.5pt">
+ <p class="Normal" align="center" style="text-align:center">
+ <b>
+ <span style="color:white">Nombre de pièces</span>
+ </b>
+ </p>
+ </td>
+ <td width="122" valign="top"
+ style="width:91.75pt;
+ border-left:none;background:gray;padding:0cm 3.5pt 0cm 3.5pt">
+ <p class="Normal" align="center" style="text-align:center">
+ <b>
+ <span style="color:white">Nombre de lignes</span>
+ </b>
+ </p>
+ </td>
+ </tr>
+ <tr style="page-break-inside:avoid">
+ <td width="184" valign="top"
+ style="width:138.2pt;border-left:solid black 1.0pt;
+ border-top:none;padding:0cm 3.5pt 0cm 3.5pt">
+ <p class="Normal">Recette</p>
+ </td>
+ <td width="161" valign="top" style="width:120.45pt;text-align:right">
+ <p class="Normal">
+ <span class="Resultat">
+ <!--Nb(BordRec)-->
+ <xsl:value-of select="count(./p:PES_RecetteAller/p:Bordereau/p:BlocBordereau)"/>
+ </span>
+ </p>
+ </td>
+ <td width="167" valign="top" style="width:125.15pt;text-align:right">
+ <p class="Normal">
+ <span class="Resultat">
+ <!--
+ Nb(PiecRec)-->
+ <xsl:value-of
+ select="count(./p:PES_RecetteAller/p:Bordereau/p:Piece/p:BlocPiece)"/>
+ </span>
+ </p>
+ </td>
+ <td width="122" valign="top" style="width:91.75pt;text-align:right">
+ <p class="Normal">
+ <span class="Resultat">
+ <!--Nb(LignRec) -->
+ <xsl:value-of
+ select="count(./p:PES_RecetteAller/p:Bordereau/p:Piece/p:LigneDePiece/p:BlocLignePiece)"
+ />
+ </span>
+ </p>
+ </td>
+ </tr>
+ <tr style="page-break-inside:avoid">
+ <td width="184" valign="top"
+ style="width:138.2pt;
+ border-top:none;padding:0cm 3.5pt 0cm 3.5pt">
+ <p class="Normal">Dépense</p>
+ </td>
+ <td width="161" valign="top" style="width:120.45pt;text-align:right">
+ <p class="Normal">
+ <span class="Resultat">
+ <!-- Nb(BordDep)-->
+ <xsl:value-of select="count(./p:PES_DepenseAller/p:Bordereau/p:BlocBordereau)"/>
+ </span>
+ </p>
+ </td>
+ <td width="167" valign="top" style="width:125.15pt;text-align:right">
+ <p class="Normal">
+ <span class="Resultat">
+ <!--
+ Nb(PiecDep)-->
+ <xsl:value-of
+ select="count(./p:PES_DepenseAller/p:Bordereau/p:Piece/p:BlocPiece/p:InfoPce)"
+ />
+ </span>
+ </p>
+ </td>
+ <td width="122" valign="top" style="width:91.75pt;text-align:right">
+ <p class="Normal">
+ <span class="Resultat">
+ <!-- Nb(LignDep)-->
+ <xsl:value-of
+ select="count(./p:PES_DepenseAller/p:Bordereau/p:Piece/p:LigneDePiece/p:BlocLignePiece)"
+ />
+ </span>
+ </p>
+ </td>
+ </tr>
+ <tr style="page-break-inside:avoid">
+ <td width="184" valign="top"
+ style="width:138.2pt;
+ border-top:none;padding:0cm 3.5pt 0cm 3.5pt">
+ <p class="Normal">PJ</p>
+ </td>
+ <td width="450" colspan="3" valign="top" style="width:337.35pt;text-align:left">
+ <p class="Normal">
+ <span class="Resultat">
+ <!--Nb(PES_Aller\PES_PJ\PJ) -->
+ <xsl:value-of select="count(.//p:PES_PJ/p:PJ)"/>
+ </span>
+ </p>
+ </td>
+ </tr>
+ <tr style="page-break-inside:avoid">
+ <td width="184" valign="top"
+ style="width:138.2pt;
+ border-top:none;padding:0cm 3.5pt 0cm 3.5pt">
+ <p class="Normal">Exercice</p>
+ </td>
+ <td width="450" colspan="3" valign="top" style="width:337.35pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <!--Liste disctincte(BordRec\Exer@V BordDep\Exer@V) -->
+ <xsl:for-each
+ select="//p:Bordereau/p:BlocBordereau/p:Exer[generate-id() = generate-id(key('distinct-exer',string(@V))[1])]">
+ <xsl:value-of select="@V"/> </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </table>
+ </div>
+ <p class="Normal"> </p>
+ <p class="Normal"> </p>
+ <p class="Normal" align="center" style="text-align:center">
+ <b>
+ <span style="font-size:12.0pt">Description du flux par sous domaine</span>
+ </b>
+ </p>
+ <p class="Normal"> </p>
+ <table class="Normal" border="1" cellspacing="0" cellpadding="0" align="center"
+ style="border-collapse:collapse;border:1px">
+ <thead>
+ <tr>
+ <td width="58" valign="top"
+ style="width:43.5pt;background:gray;padding:0cm 3.5pt 0cm 3.5pt">
+ <p class="Normal">
+ <b>
+ <span style="font-size:10.0pt;color:white">Domaine</span>
+ </b>
+ </p>
+ </td>
+ <td width="66" valign="top"
+ style="width:49.65pt;border-left:none;background:gray;padding:0cm 3.5pt 0cm 3.5pt">
+ <p class="Normal">
+ <b>
+ <span style="font-size:10.0pt;color:white">Sous domaine</span>
+ </b>
+ </p>
+ </td>
+ <td width="95" valign="top"
+ style="width:70.9pt;
+ border-left:none;background:gray;padding:0cm 3.5pt 0cm 3.5pt">
+ <p class="Normal">
+ <b>
+ <span style="font-size:10.0pt;color:white">Numéro de bordereaux</span>
+ </b>
+ </p>
+ </td>
+ <td width="104" valign="top"
+ style="width:77.95pt;
+ border-left:none;background:gray;padding:0cm 3.5pt 0cm 3.5pt">
+ <p class="Normal">
+ <b>
+ <span style="font-size:10.0pt;color:white">Nbre total</span>
+ </b>
+ </p>
+ </td>
+ <td width="85" valign="top"
+ style="width:63.8pt;
+ border-left:none;background:gray;padding:0cm 3.5pt 0cm 3.5pt">
+ <p class="Normal">
+ <b>
+ <span style="font-size:10.0pt;color:white">Triplet correspondant</span>
+ </b>
+ </p>
+ </td>
+ <td width="85" valign="top"
+ style="width:63.8pt;
+ border-left:none;background:gray;padding:0cm 3.5pt 0cm 3.5pt">
+ <p class="Normal">
+ <b>
+ <span style="font-size:10.0pt;color:white">Régie</span>
+ </b>
+ </p>
+ </td>
+ <td width="85" valign="top"
+ style="width:63.75pt;
+ border-left:none;background:gray;padding:0cm 3.5pt 0cm 3.5pt">
+ <p class="Normal">
+ <b>
+ <span style="font-size:10.0pt;color:white">Inventaire</span>
+ </b>
+ </p>
+ </td>
+ <td width="85" valign="top"
+ style="width:63.8pt;
+ border-left:none;background:gray;padding:0cm 3.5pt 0cm 3.5pt">
+ <p class="Normal">
+ <b>
+ <span style="font-size:10.0pt;color:white">Convention</span>
+ </b>
+ </p>
+ </td>
+ <td width="85" valign="top"
+ style="width:63.8pt;
+ border-left:none;background:gray;padding:0cm 3.5pt 0cm 3.5pt">
+ <p class="Normal">
+ <b>
+ <span style="font-size:10.0pt;color:white">Emprunt</span>
+ </b>
+ </p>
+ </td>
+ <td width="94" valign="top"
+ style="width:70.85pt;
+ border-left:none;background:gray;padding:0cm 3.5pt 0cm 3.5pt">
+ <p class="Normal">
+ <b>
+ <span style="font-size:10.0pt;color:white">Encaiss. \ Paiement</span>
+ </b>
+ </p>
+ </td>
+ <td width="94" valign="top"
+ style="width:70.75pt;
+ border-left:none;background:gray;padding:0cm 3.5pt 0cm 3.5pt">
+ <p class="Normal">
+ <b>
+ <span style="font-size:10.0pt;color:white">Pièce d°origine
+ N</span>
+ </b>
+ </p>
+ </td>
+ <td width="104" valign="top"
+ style="width:77.95pt;
+ border-left:none;background:gray;padding:0cm 3.5pt 0cm 3.5pt">
+ <p class="Normal">
+ <b>
+ <span style="font-size:10.0pt;color:white">Pièce d°origine
+ N-1</span>
+ </b>
+ </p>
+ </td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td width="58" valign="top"
+ style="width:43.5pt;
+ border-top:none;padding:0cm 3.5pt 0cm 3.5pt">
+ <p class="Normal">
+ <span style="font-size:10.0pt">Recette</span>
+ </p>
+ </td>
+ <td width="66" valign="top" style="width:49.65pt;">
+ <p class="Normal">
+ <span style="font-size:10.0pt">Ordinaires</span>
+ </p>
+ </td>
+ <td width="95" valign="top" style="width:70.9pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[p:Piece/p:BlocPiece/p:TypPce/@V='01' and (p:Piece/p:BlocPiece/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:NatPce/@V='02') ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="104" valign="top" style="width:77.95pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:value-of
+ select="count(./p:PES_RecetteAller/p:Bordereau/p:BlocBordereau/p:IdBord/@V[../../../p:Piece/p:BlocPiece/p:TypPce/@V='01' and (../../../p:Piece/p:BlocPiece/p:NatPce/@V='01' or ../../../p:Piece/p:BlocPiece/p:NatPce/@V='02') ])"
+ />
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span style="font-size:10.0pt">Ordinaire \ Fonctionnement </span>
+ </p>
+ <p class="Normal">
+ <span style="font-size:10.0pt">Ordinaire \ Investissement</span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[(p:Piece/p:BlocPiece/p:TypPce/@V='01' and (p:Piece/p:BlocPiece/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:NatPce/@V='02')) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdRegie ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.75pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[(p:Piece/p:BlocPiece/p:TypPce/@V='01' and (p:Piece/p:BlocPiece/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:NatPce/@V='02')) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdActif ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[(p:Piece/p:BlocPiece/p:TypPce/@V='01' and (p:Piece/p:BlocPiece/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:NatPce/@V='02')) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdConv ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[(p:Piece/p:BlocPiece/p:TypPce/@V='01' and (p:Piece/p:BlocPiece/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:NatPce/@V='02')) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdEmpruntOrdo ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="94" valign="top" style="width:70.85pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[(p:Piece/p:BlocPiece/p:TypPce/@V='01' and (p:Piece/p:BlocPiece/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:NatPce/@V='02')) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdEncaissement ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="94" valign="top" style="width:70.75pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[(p:Piece/p:BlocPiece/p:TypPce/@V='01' and (p:Piece/p:BlocPiece/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:NatPce/@V='02')) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:RattachPiece/p:ExerRat/@V=$exercice ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="104" valign="top" style="width:77.95pt;">
+ <p class="Normal" style="margin-left:10.55pt;text-indent:-10.55pt">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[(p:Piece/p:BlocPiece/p:TypPce/@V='01' and (p:Piece/p:BlocPiece/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:NatPce/@V='02')) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:RattachPiece/p:ExerRat/@V=$exercice -1 ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td width="58" valign="top"
+ style="width:43.5pt;
+ border-top:none;padding:0cm 3.5pt 0cm 3.5pt">
+ <p class="Normal">
+ <span style="font-size:10.0pt">Recette</span>
+ </p>
+ </td>
+ <td width="66" valign="top" style="width:49.65pt;">
+ <p class="Normal">
+ <span style="font-size:10.0pt">Correction \Annulation</span>
+ </p>
+ </td>
+ <td width="95" valign="top" style="width:70.9pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[p:Piece/p:BlocPiece/p:TypPce/@V='02' and (p:Piece/p:BlocPiece/p:NatPce/@V='06' or p:Piece/p:BlocPiece/p:NatPce/@V='09' or p:Piece/p:BlocPiece/p:NatPce/@V='10') ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="104" valign="top" style="width:77.95pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <!--Nb(BordRec\
+ IdBord @V) avec (PiecRec\TypPce@V=02 et PiecRec\NatPce@V=06 ou 09 ou 10) -->
+ <xsl:value-of
+ select="count(./p:PES_RecetteAller/p:Bordereau/p:BlocBordereau/p:IdBord/@V[../../../p:Piece/p:BlocPiece/p:TypPce/@V='02' and (../../../p:Piece/p:BlocPiece/p:NatPce/@V='06' or ../../../p:Piece/p:BlocPiece/p:NatPce/@V='09' or ../../../p:Piece/p:BlocPiece/p:NatPce/@V='10') ])"
+ />
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span style="font-size:10.0pt">Correctif \ Annulation\Réduction </span>
+ </p>
+ <p class="Normal">
+ <span style="font-size:10.0pt">Correctif \ Annulant un mandat</span>
+ </p>
+ <p class="Normal">
+ <span style="font-size:10.0pt">Correctif \ Annulation un titre de
+ rattachement</span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[(p:Piece/p:BlocPiece/p:TypPce/@V='02' and (p:Piece/p:BlocPiece/p:NatPce/@V='06' or p:Piece/p:BlocPiece/p:NatPce/@V='09' or p:Piece/p:BlocPiece/p:NatPce/@V='10')) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdRegie ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.75pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[(p:Piece/p:BlocPiece/p:TypPce/@V='02' and (p:Piece/p:BlocPiece/p:NatPce/@V='06' or p:Piece/p:BlocPiece/p:NatPce/@V='09' or p:Piece/p:BlocPiece/p:NatPce/@V='10')) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdActif ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[(p:Piece/p:BlocPiece/p:TypPce/@V='02' and (p:Piece/p:BlocPiece/p:NatPce/@V='06' or p:Piece/p:BlocPiece/p:NatPce/@V='09' or p:Piece/p:BlocPiece/p:NatPce/@V='10')) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdConv ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[(p:Piece/p:BlocPiece/p:TypPce/@V='02' and (p:Piece/p:BlocPiece/p:NatPce/@V='06' or p:Piece/p:BlocPiece/p:NatPce/@V='09' or p:Piece/p:BlocPiece/p:NatPce/@V='10')) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdEmpruntOrdo ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="94" valign="top" style="width:70.85pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[(p:Piece/p:BlocPiece/p:TypPce/@V='02' and (p:Piece/p:BlocPiece/p:NatPce/@V='06' or p:Piece/p:BlocPiece/p:NatPce/@V='09' or p:Piece/p:BlocPiece/p:NatPce/@V='10')) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdEncaissement ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="94" valign="top" style="width:70.75pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[(p:Piece/p:BlocPiece/p:TypPce/@V='02' and (p:Piece/p:BlocPiece/p:NatPce/@V='06' or p:Piece/p:BlocPiece/p:NatPce/@V='09' or p:Piece/p:BlocPiece/p:NatPce/@V='10')) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:RattachPiece/p:ExerRat/@V=$exercice ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="104" valign="top" style="width:77.95pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[(p:Piece/p:BlocPiece/p:TypPce/@V='02' and (p:Piece/p:BlocPiece/p:NatPce/@V='06' or p:Piece/p:BlocPiece/p:NatPce/@V='09' or p:Piece/p:BlocPiece/p:NatPce/@V='10')) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:RattachPiece/p:ExerRat/@V=$exercice -1 ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td width="58" valign="top"
+ style="width:43.5pt;
+ border-top:none;padding:0cm 3.5pt 0cm 3.5pt">
+ <p class="Normal">
+ <span style="font-size:10.0pt">Recette</span>
+ </p>
+ </td>
+ <td width="66" valign="top" style="width:49.65pt;">
+ <p class="Normal">
+ <span style="font-size:10.0pt">EAE</span>
+ </p>
+ </td>
+ <td width="95" valign="top" style="width:70.9pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[p:Piece/p:BlocPiece/p:TypPce/@V='05' and (p:Piece/p:BlocPiece/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:NatPce/@V='03' or p:Piece/p:BlocPiece/p:NatPce/@V='04') ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="104" valign="top" style="width:77.95pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <!--Nb(BordRec\
+ IdBord @V) avec (PiecRec\TypPce@V=05 et PiecRec\NatPce@V=01 ou 02 ou 03 ou
+ 04)-->
+ <xsl:value-of
+ select="count(./p:PES_RecetteAller/p:Bordereau/p:BlocBordereau/p:IdBord/@V[../../../p:Piece/p:BlocPiece/p:TypPce/@V='05' and (../../../p:Piece/p:BlocPiece/p:NatPce/@V='01' or ../../../p:Piece/p:BlocPiece/p:NatPce/@V='02' or ../../../p:Piece/p:BlocPiece/p:NatPce/@V='03' or ../../../p:Piece/p:BlocPiece/p:NatPce/@V='04') ])"
+ />
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span style="font-size:10.0pt">Emis après encaissement de toutes natures
+ sauf Régie</span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[(p:Piece/p:BlocPiece/p:TypPce/@V='05' and (p:Piece/p:BlocPiece/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:NatPce/@V='03' or p:Piece/p:BlocPiece/p:NatPce/@V='04') ) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdRegie ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.75pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[(p:Piece/p:BlocPiece/p:TypPce/@V='05' and (p:Piece/p:BlocPiece/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:NatPce/@V='03' or p:Piece/p:BlocPiece/p:NatPce/@V='04') ) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdActif ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[(p:Piece/p:BlocPiece/p:TypPce/@V='05' and (p:Piece/p:BlocPiece/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:NatPce/@V='03' or p:Piece/p:BlocPiece/p:NatPce/@V='04') ) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdConv ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[(p:Piece/p:BlocPiece/p:TypPce/@V='05' and (p:Piece/p:BlocPiece/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:NatPce/@V='03' or p:Piece/p:BlocPiece/p:NatPce/@V='04') ) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdEmpruntOrdo ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="94" valign="top" style="width:70.85pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[(p:Piece/p:BlocPiece/p:TypPce/@V='05' and (p:Piece/p:BlocPiece/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:NatPce/@V='03' or p:Piece/p:BlocPiece/p:NatPce/@V='04') ) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdEncaissement ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="94" valign="top" style="width:70.75pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[(p:Piece/p:BlocPiece/p:TypPce/@V='05' and (p:Piece/p:BlocPiece/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:NatPce/@V='03' or p:Piece/p:BlocPiece/p:NatPce/@V='04') ) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:RattachPiece/p:ExerRat/@V=$exercice ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="104" valign="top" style="width:77.95pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[(p:Piece/p:BlocPiece/p:TypPce/@V='05' and (p:Piece/p:BlocPiece/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:NatPce/@V='03' or p:Piece/p:BlocPiece/p:NatPce/@V='04') ) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:RattachPiece/p:ExerRat/@V=$exercice -1 ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td width="58" valign="top"
+ style="width:43.5pt;
+ border-top:none;padding:0cm 3.5pt 0cm 3.5pt">
+ <p class="Normal">
+ <span style="font-size:10.0pt">Recette</span>
+ </p>
+ </td>
+ <td width="66" valign="top" style="width:49.65pt;">
+ <p class="Normal">
+ <span style="font-size:10.0pt">Régie</span>
+ </p>
+ </td>
+ <td width="95" valign="top" style="width:70.9pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[(p:Piece/p:BlocPiece/p:TypPce/@V='01' or p:Piece/p:BlocPiece/p:TypPce/@V='05') and p:Piece/p:BlocPiece/p:NatPce/@V='05' ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="104" valign="top" style="width:77.95pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <!--Nb(BordRec\
+ IdBord @V) avec (PiecRec\TypPce@V=01 ou 05 et PiecRec\NatPce@V=05)-->
+ <xsl:value-of
+ select="count(./p:PES_RecetteAller/p:Bordereau/p:BlocBordereau/p:IdBord/@V[(../../../p:Piece/p:BlocPiece/p:TypPce/@V='01' or ../../../p:Piece/p:BlocPiece/p:TypPce/@V='05') and ../../../p:Piece/p:BlocPiece/p:NatPce/@V='05' ])"
+ />
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span style="font-size:10.0pt">Ordinaire ou EAE \ Régie</span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[((p:Piece/p:BlocPiece/p:TypPce/@V='01' or p:Piece/p:BlocPiece/p:TypPce/@V='05') and p:Piece/p:BlocPiece/p:NatPce/@V='05' ) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdRegie ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.75pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[((p:Piece/p:BlocPiece/p:TypPce/@V='01' or p:Piece/p:BlocPiece/p:TypPce/@V='05') and p:Piece/p:BlocPiece/p:NatPce/@V='05' ) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdActif ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[((p:Piece/p:BlocPiece/p:TypPce/@V='01' or p:Piece/p:BlocPiece/p:TypPce/@V='05') and p:Piece/p:BlocPiece/p:NatPce/@V='05' ) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdConv ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[((p:Piece/p:BlocPiece/p:TypPce/@V='01' or p:Piece/p:BlocPiece/p:TypPce/@V='05') and p:Piece/p:BlocPiece/p:NatPce/@V='05' ) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdEmpruntOrdo ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="94" valign="top" style="width:70.85pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[((p:Piece/p:BlocPiece/p:TypPce/@V='01' or p:Piece/p:BlocPiece/p:TypPce/@V='05') and p:Piece/p:BlocPiece/p:NatPce/@V='05' ) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdEncaissement ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="94" valign="top" style="width:70.75pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[((p:Piece/p:BlocPiece/p:TypPce/@V='01' or p:Piece/p:BlocPiece/p:TypPce/@V='05') and p:Piece/p:BlocPiece/p:NatPce/@V='05' ) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:RattachPiece/p:ExerRat/@V=$exercice ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="104" valign="top" style="width:77.95pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[((p:Piece/p:BlocPiece/p:TypPce/@V='01' or p:Piece/p:BlocPiece/p:TypPce/@V='05') and p:Piece/p:BlocPiece/p:NatPce/@V='05' ) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:RattachPiece/p:ExerRat/@V=$exercice -1 ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td width="58" valign="top"
+ style="width:43.5pt;
+ border-top:none;padding:0cm 3.5pt 0cm 3.5pt">
+ <p class="Normal">
+ <span style="font-size:10.0pt">Recette</span>
+ </p>
+ </td>
+ <td width="66" valign="top" style="width:49.65pt;">
+ <p class="Normal">
+ <span style="font-size:10.0pt">Marché</span>
+ </p>
+ </td>
+ <td width="95" valign="top" style="width:70.9pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[ p:Piece/p:BlocPiece/p:NatPce/@V='11' ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="104" valign="top" style="width:77.95pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <!--Nb(BordRec\
+ IdBord @V) avec (PiecRec\NatPce@V=11)-->
+ <xsl:value-of
+ select="count(./p:PES_RecetteAller/p:Bordereau/p:BlocBordereau/p:IdBord/@V[ ../../../p:Piece/p:BlocPiece/p:NatPce/@V='11' ])"
+ />
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span style="font-size:10.0pt">Marché</span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[ p:Piece/p:BlocPiece/p:NatPce/@V='11' and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdRegie ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.75pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[ p:Piece/p:BlocPiece/p:NatPce/@V='11' and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdActif ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[ p:Piece/p:BlocPiece/p:NatPce/@V='11' and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdConv ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[ p:Piece/p:BlocPiece/p:NatPce/@V='11' and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdEmpruntOrdo ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="94" valign="top" style="width:70.85pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[ p:Piece/p:BlocPiece/p:NatPce/@V='11' and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdEncaissement ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="94" valign="top" style="width:70.75pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[ p:Piece/p:BlocPiece/p:NatPce/@V='11' and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:RattachPiece/p:ExerRat/@V=$exercice ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="104" valign="top" style="width:77.95pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[ p:Piece/p:BlocPiece/p:NatPce/@V='11' and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:RattachPiece/p:ExerRat/@V=$exercice -1 ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td width="58" valign="top"
+ style="width:43.5pt;
+ border-top:none;padding:0cm 3.5pt 0cm 3.5pt">
+ <p class="Normal">
+ <span style="font-size:10.0pt">Recette</span>
+ </p>
+ </td>
+ <td width="66" valign="top" style="width:49.65pt;">
+ <p class="Normal">
+ <span style="font-size:10.0pt">Inventaire \Emprunt</span>
+ </p>
+ </td>
+ <td width="95" valign="top" style="width:70.9pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[p:Piece/p:BlocPiece/p:TypPce/@V='01' and (p:Piece/p:BlocPiece/p:NatPce/@V='03' or p:Piece/p:BlocPiece/p:NatPce/@V='04') ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="104" valign="top" style="width:77.95pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <!--Nb(BordRec\
+ IdBord @V) avec (PiecRec\TypPce@V=01 et PiecRec\NatPce@V=03 ou 04)-->
+ <xsl:value-of
+ select="count(./p:PES_RecetteAller/p:Bordereau/p:BlocBordereau/p:IdBord/@V[../../../p:Piece/p:BlocPiece/p:TypPce/@V='01' and (../../../p:Piece/p:BlocPiece/p:NatPce/@V='03' or ../../../p:Piece/p:BlocPiece/p:NatPce/@V='04') ])"
+ />
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span style="font-size:10.0pt">Ordinaire \ Inventaire</span>
+ </p>
+ <p class="Normal">
+ <span style="font-size:10.0pt">Ordinaire \ Emprunt</span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[(p:Piece/p:BlocPiece/p:TypPce/@V='01' and (p:Piece/p:BlocPiece/p:NatPce/@V='03' or p:Piece/p:BlocPiece/p:NatPce/@V='04') ) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdRegie ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.75pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[(p:Piece/p:BlocPiece/p:TypPce/@V='01' and (p:Piece/p:BlocPiece/p:NatPce/@V='03' or p:Piece/p:BlocPiece/p:NatPce/@V='04') ) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdActif ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[(p:Piece/p:BlocPiece/p:TypPce/@V='01' and (p:Piece/p:BlocPiece/p:NatPce/@V='03' or p:Piece/p:BlocPiece/p:NatPce/@V='04') ) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdConv ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[(p:Piece/p:BlocPiece/p:TypPce/@V='01' and (p:Piece/p:BlocPiece/p:NatPce/@V='03' or p:Piece/p:BlocPiece/p:NatPce/@V='04') ) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdEmpruntOrdo ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="94" valign="top" style="width:70.85pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[(p:Piece/p:BlocPiece/p:TypPce/@V='01' and (p:Piece/p:BlocPiece/p:NatPce/@V='03' or p:Piece/p:BlocPiece/p:NatPce/@V='04') ) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdEncaissement ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="94" valign="top" style="width:70.75pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[(p:Piece/p:BlocPiece/p:TypPce/@V='01' and (p:Piece/p:BlocPiece/p:NatPce/@V='03' or p:Piece/p:BlocPiece/p:NatPce/@V='04') ) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:RattachPiece/p:ExerRat/@V=$exercice ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="104" valign="top" style="width:77.95pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[(p:Piece/p:BlocPiece/p:TypPce/@V='01' and (p:Piece/p:BlocPiece/p:NatPce/@V='03' or p:Piece/p:BlocPiece/p:NatPce/@V='04') ) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:RattachPiece/p:ExerRat/@V=$exercice -1 ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td width="58" valign="top"
+ style="width:43.5pt;
+ border-top:none;padding:0cm 3.5pt 0cm 3.5pt">
+ <p class="Normal">
+ <span style="font-size:10.0pt">Recette</span>
+ </p>
+ </td>
+ <td width="66" valign="top" style="width:49.65pt;">
+ <p class="Normal">
+ <span style="font-size:10.0pt">Récapitulatif</span>
+ </p>
+ </td>
+ <td width="95" valign="top" style="width:70.9pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[( (p:Piece/p:BlocPiece/p:TypPce/@V='06' or p:Piece/p:BlocPiece/p:TypPce/@V='07') and p:Piece/p:BlocPiece/p:NatPce/@V='01' ) or (p:Piece/p:BlocPiece/p:TypPce/@V='06' and p:Piece/p:BlocPiece/p:NatPce/@V='06' ) ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="104" valign="top" style="width:77.95pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <!--Nb(BordRec\
+ IdBord @V) avec (PiecRec\TypPce@V=06 ou 07 et PiecRec\NatPce@V=01)Ou
+ (PiecRec\TypPce@V=06 et PiecRec\NatPce@V=06)-->
+ <xsl:value-of
+ select="count(./p:PES_RecetteAller/p:Bordereau/p:BlocBordereau/p:IdBord/@V[( (../../../p:Piece/p:BlocPiece/p:TypPce/@V='06' or ../../../p:Piece/p:BlocPiece/p:TypPce/@V='07') and ../../../p:Piece/p:BlocPiece/p:NatPce/@V='01' ) or (../../../p:Piece/p:BlocPiece/p:TypPce/@V='06' and ../../../p:Piece/p:BlocPiece/p:NatPce/@V='06' ) ])"
+ />
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span style="font-size:10.0pt">Récapitulatif avec ou sans Rôle</span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[(( (p:Piece/p:BlocPiece/p:TypPce/@V='06' or p:Piece/p:BlocPiece/p:TypPce/@V='07') and p:Piece/p:BlocPiece/p:NatPce/@V='01' ) or (p:Piece/p:BlocPiece/p:TypPce/@V='06' and p:Piece/p:BlocPiece/p:NatPce/@V='06' ) ) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdRegie ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.75pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[(( (p:Piece/p:BlocPiece/p:TypPce/@V='06' or p:Piece/p:BlocPiece/p:TypPce/@V='07') and p:Piece/p:BlocPiece/p:NatPce/@V='01' ) or (p:Piece/p:BlocPiece/p:TypPce/@V='06' and p:Piece/p:BlocPiece/p:NatPce/@V='06' ) ) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdActif ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[(( (p:Piece/p:BlocPiece/p:TypPce/@V='06' or p:Piece/p:BlocPiece/p:TypPce/@V='07') and p:Piece/p:BlocPiece/p:NatPce/@V='01' ) or (p:Piece/p:BlocPiece/p:TypPce/@V='06' and p:Piece/p:BlocPiece/p:NatPce/@V='06' ) ) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdConv ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[(( (p:Piece/p:BlocPiece/p:TypPce/@V='06' or p:Piece/p:BlocPiece/p:TypPce/@V='07') and p:Piece/p:BlocPiece/p:NatPce/@V='01' ) or (p:Piece/p:BlocPiece/p:TypPce/@V='06' and p:Piece/p:BlocPiece/p:NatPce/@V='06' ) ) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdEmpruntOrdo ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="94" valign="top" style="width:70.85pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[(( (p:Piece/p:BlocPiece/p:TypPce/@V='06' or p:Piece/p:BlocPiece/p:TypPce/@V='07') and p:Piece/p:BlocPiece/p:NatPce/@V='01' ) or (p:Piece/p:BlocPiece/p:TypPce/@V='06' and p:Piece/p:BlocPiece/p:NatPce/@V='06' ) ) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdEncaissement ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="94" valign="top" style="width:70.75pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[(( (p:Piece/p:BlocPiece/p:TypPce/@V='06' or p:Piece/p:BlocPiece/p:TypPce/@V='07') and p:Piece/p:BlocPiece/p:NatPce/@V='01' ) or (p:Piece/p:BlocPiece/p:TypPce/@V='06' and p:Piece/p:BlocPiece/p:NatPce/@V='06' ) ) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:RattachPiece/p:ExerRat/@V=$exercice ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="104" valign="top" style="width:77.95pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[(( (p:Piece/p:BlocPiece/p:TypPce/@V='06' or p:Piece/p:BlocPiece/p:TypPce/@V='07') and p:Piece/p:BlocPiece/p:NatPce/@V='01' ) or (p:Piece/p:BlocPiece/p:TypPce/@V='06' and p:Piece/p:BlocPiece/p:NatPce/@V='06' ) ) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:RattachPiece/p:ExerRat/@V=$exercice -1 ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td width="58" valign="top"
+ style="width:43.5pt;
+ border-top:none;padding:0cm 3.5pt 0cm 3.5pt">
+ <p class="Normal">
+ <span style="font-size:10.0pt">Recette</span>
+ </p>
+ </td>
+ <td width="66" valign="top" style="width:49.65pt;">
+ <p class="Normal">
+ <span style="font-size:10.0pt">Majoration</span>
+ </p>
+ </td>
+ <td width="95" valign="top" style="width:70.9pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[p:Piece/p:BlocPiece/p:TypPce/@V='09' and (p:Piece/p:BlocPiece/p:NatPce/@V='01') ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="104" valign="top" style="width:77.95pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <!--Nb(BordRec\
+ IdBord @V) avec (PiecRec\TypPce@V=09 et PiecRec\NatPce@V=01)-->
+ <xsl:value-of
+ select="count(./p:PES_RecetteAller/p:Bordereau/p:BlocBordereau/p:IdBord/@V[../../../p:Piece/p:BlocPiece/p:TypPce/@V='09' and (../../../p:Piece/p:BlocPiece/p:NatPce/@V='01') ])"
+ />
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span style="font-size:10.0pt">Majoration \ Fonctionnement</span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[(p:Piece/p:BlocPiece/p:TypPce/@V='09' and (p:Piece/p:BlocPiece/p:NatPce/@V='01') ) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdRegie ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.75pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[(p:Piece/p:BlocPiece/p:TypPce/@V='09' and (p:Piece/p:BlocPiece/p:NatPce/@V='01') ) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdActif ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[(p:Piece/p:BlocPiece/p:TypPce/@V='09' and (p:Piece/p:BlocPiece/p:NatPce/@V='01') ) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdConv ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[(p:Piece/p:BlocPiece/p:TypPce/@V='09' and (p:Piece/p:BlocPiece/p:NatPce/@V='01') ) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdEmpruntOrdo ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="94" valign="top" style="width:70.85pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[(p:Piece/p:BlocPiece/p:TypPce/@V='09' and (p:Piece/p:BlocPiece/p:NatPce/@V='01') ) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdEncaissement ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="94" valign="top" style="width:70.75pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[(p:Piece/p:BlocPiece/p:TypPce/@V='09' and (p:Piece/p:BlocPiece/p:NatPce/@V='01') ) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:RattachPiece/p:ExerRat/@V=$exercice ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="104" valign="top" style="width:77.95pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[(p:Piece/p:BlocPiece/p:TypPce/@V='09' and (p:Piece/p:BlocPiece/p:NatPce/@V='01') ) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:RattachPiece/p:ExerRat/@V=$exercice -1 ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td width="58" valign="top"
+ style="width:43.5pt;
+ border-top:none;padding:0cm 3.5pt 0cm 3.5pt">
+ <p class="Normal">
+ <span style="font-size:10.0pt">Recette</span>
+ </p>
+ </td>
+ <td width="66" valign="top" style="width:49.65pt;">
+ <p class="Normal">
+ <span style="font-size:10.0pt">Rattachement</span>
+ </p>
+ </td>
+ <td width="95" valign="top" style="width:70.9pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[p:Piece/p:BlocPiece/p:TypPce/@V='11' and (p:Piece/p:BlocPiece/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:NatPce/@V='04') ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="104" valign="top" style="width:77.95pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <!--Nb(BordRec\
+ IdBord @V) avec (PiecRec\TypPce@V=11 et PiecRec\NatPce@V=01 ou 02 ou 04)-->
+ <xsl:value-of
+ select="count(./p:PES_RecetteAller/p:Bordereau/p:BlocBordereau/p:IdBord/@V[../../../p:Piece/p:BlocPiece/p:TypPce/@V='11' and (../../../p:Piece/p:BlocPiece/p:NatPce/@V='01' or ../../../p:Piece/p:BlocPiece/p:NatPce/@V='02' or ../../../p:Piece/p:BlocPiece/p:NatPce/@V='04') ])"
+ />
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span style="font-size:10.0pt">Rattachement de toutes natures</span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[(p:Piece/p:BlocPiece/p:TypPce/@V='11' and (p:Piece/p:BlocPiece/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:NatPce/@V='04')) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdRegie ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.75pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[(p:Piece/p:BlocPiece/p:TypPce/@V='11' and (p:Piece/p:BlocPiece/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:NatPce/@V='04')) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdActif ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[(p:Piece/p:BlocPiece/p:TypPce/@V='11' and (p:Piece/p:BlocPiece/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:NatPce/@V='04')) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdConv ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[(p:Piece/p:BlocPiece/p:TypPce/@V='11' and (p:Piece/p:BlocPiece/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:NatPce/@V='04')) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdEmpruntOrdo ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="94" valign="top" style="width:70.85pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[(p:Piece/p:BlocPiece/p:TypPce/@V='11' and (p:Piece/p:BlocPiece/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:NatPce/@V='04')) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdEncaissement ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="94" valign="top" style="width:70.75pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[(p:Piece/p:BlocPiece/p:TypPce/@V='11' and (p:Piece/p:BlocPiece/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:NatPce/@V='04')) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:RattachPiece/p:ExerRat/@V=$exercice ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="104" valign="top" style="width:77.95pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[(p:Piece/p:BlocPiece/p:TypPce/@V='11' and (p:Piece/p:BlocPiece/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:NatPce/@V='04')) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:RattachPiece/p:ExerRat/@V=$exercice - 1]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td width="58" valign="top"
+ style="width:43.5pt;
+ border-top:none;padding:0cm 3.5pt 0cm 3.5pt">
+ <p class="Normal">
+ <span style="font-size:10.0pt">Recette</span>
+ </p>
+ </td>
+ <td width="66" valign="top" style="width:49.65pt;">
+ <p class="Normal">
+ <span style="font-size:10.0pt">Fin d'exercice</span>
+ </p>
+ </td>
+ <td width="95" valign="top" style="width:70.9pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[ (p:Piece/p:BlocPiece/p:TypPce/@V='03' and (p:Piece/p:BlocPiece/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:NatPce/@V='03' or p:Piece/p:BlocPiece/p:NatPce/@V='04' or p:Piece/p:BlocPiece/p:NatPce/@V='18')) or (p:Piece/p:BlocPiece/p:TypPce/@V='04' and (p:Piece/p:BlocPiece/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:NatPce/@V='03' or p:Piece/p:BlocPiece/p:NatPce/@V='04' or p:Piece/p:BlocPiece/p:NatPce/@V='06')) or (p:Piece/p:BlocPiece/p:TypPce/@V='14' and (p:Piece/p:BlocPiece/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:NatPce/@V='06' )) or (p:Piece/p:BlocPiece/p:TypPce/@V='01' and (p:Piece/p:BlocPiece/p:NatPce/@V='18' )) ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="104" valign="top" style="width:77.95pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <!--Nb(BordRec\
+ IdBord @V) avec (PiecRec\TypPce@V=03 et PiecRec\NatPce@V=01 ou 02 ou 03 ou
+ 04 ou 18) Ou
+ (PiecRec\TypPce@V=04 et PiecRec\NatPce@V=01 ou 02 ou 03 ou 04 ou 06)
+ Ou
+ (PiecRec\TypPce@V=14 et PiecRec\NatPce@V=01 ou 06) Ou
+ (PiecRec\TypPce@V=01 et PiecRec\NatPce@V=18)-->
+ <xsl:value-of
+ select="count(./p:PES_RecetteAller/p:Bordereau/p:BlocBordereau/p:IdBord/@V[ (../../../p:Piece/p:BlocPiece/p:TypPce/@V='03' and (../../../p:Piece/p:BlocPiece/p:NatPce/@V='01' or ../../../p:Piece/p:BlocPiece/p:NatPce/@V='02' or ../../../p:Piece/p:BlocPiece/p:NatPce/@V='03' or ../../../p:Piece/p:BlocPiece/p:NatPce/@V='04' or ../../../p:Piece/p:BlocPiece/p:NatPce/@V='18')) or (../../../p:Piece/p:BlocPiece/p:TypPce/@V='04' and (../../../p:Piece/p:BlocPiece/p:NatPce/@V='01' or ../../../p:Piece/p:BlocPiece/p:NatPce/@V='02' or ../../../p:Piece/p:BlocPiece/p:NatPce/@V='03' or ../../../p:Piece/p:BlocPiece/p:NatPce/@V='04' or ../../../p:Piece/p:BlocPiece/p:NatPce/@V='06')) or (../../../p:Piece/p:BlocPiece/p:TypPce/@V='14' and (../../../p:Piece/p:BlocPiece/p:NatPce/@V='01' or ../../../p:Piece/p:BlocPiece/p:NatPce/@V='06' )) or (../../../p:Piece/p:BlocPiece/p:TypPce/@V='01' and (../../../p:Piece/p:BlocPiece/p:NatPce/@V='18' )) ])"
+ />
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span style="font-size:10.0pt">Ordre budgétaire, Ordre mixte, Produit
+ constaté d'avance de toutes nature<br/> Ordinaire \ Cession</span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[( (p:Piece/p:BlocPiece/p:TypPce/@V='03' and (p:Piece/p:BlocPiece/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:NatPce/@V='03' or p:Piece/p:BlocPiece/p:NatPce/@V='04' or p:Piece/p:BlocPiece/p:NatPce/@V='18')) or (p:Piece/p:BlocPiece/p:TypPce/@V='04' and (p:Piece/p:BlocPiece/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:NatPce/@V='03' or p:Piece/p:BlocPiece/p:NatPce/@V='04' or p:Piece/p:BlocPiece/p:NatPce/@V='06')) or (p:Piece/p:BlocPiece/p:TypPce/@V='14' and (p:Piece/p:BlocPiece/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:NatPce/@V='06' )) or (p:Piece/p:BlocPiece/p:TypPce/@V='01' and (p:Piece/p:BlocPiece/p:NatPce/@V='18' ))) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdRegie ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.75pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[( (p:Piece/p:BlocPiece/p:TypPce/@V='03' and (p:Piece/p:BlocPiece/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:NatPce/@V='03' or p:Piece/p:BlocPiece/p:NatPce/@V='04' or p:Piece/p:BlocPiece/p:NatPce/@V='18')) or (p:Piece/p:BlocPiece/p:TypPce/@V='04' and (p:Piece/p:BlocPiece/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:NatPce/@V='03' or p:Piece/p:BlocPiece/p:NatPce/@V='04' or p:Piece/p:BlocPiece/p:NatPce/@V='06')) or (p:Piece/p:BlocPiece/p:TypPce/@V='14' and (p:Piece/p:BlocPiece/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:NatPce/@V='06' )) or (p:Piece/p:BlocPiece/p:TypPce/@V='01' and (p:Piece/p:BlocPiece/p:NatPce/@V='18' ))) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdActif ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[( (p:Piece/p:BlocPiece/p:TypPce/@V='03' and (p:Piece/p:BlocPiece/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:NatPce/@V='03' or p:Piece/p:BlocPiece/p:NatPce/@V='04' or p:Piece/p:BlocPiece/p:NatPce/@V='18')) or (p:Piece/p:BlocPiece/p:TypPce/@V='04' and (p:Piece/p:BlocPiece/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:NatPce/@V='03' or p:Piece/p:BlocPiece/p:NatPce/@V='04' or p:Piece/p:BlocPiece/p:NatPce/@V='06')) or (p:Piece/p:BlocPiece/p:TypPce/@V='14' and (p:Piece/p:BlocPiece/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:NatPce/@V='06' )) or (p:Piece/p:BlocPiece/p:TypPce/@V='01' and (p:Piece/p:BlocPiece/p:NatPce/@V='18' ))) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdConv ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[( (p:Piece/p:BlocPiece/p:TypPce/@V='03' and (p:Piece/p:BlocPiece/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:NatPce/@V='03' or p:Piece/p:BlocPiece/p:NatPce/@V='04' or p:Piece/p:BlocPiece/p:NatPce/@V='18')) or (p:Piece/p:BlocPiece/p:TypPce/@V='04' and (p:Piece/p:BlocPiece/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:NatPce/@V='03' or p:Piece/p:BlocPiece/p:NatPce/@V='04' or p:Piece/p:BlocPiece/p:NatPce/@V='06')) or (p:Piece/p:BlocPiece/p:TypPce/@V='14' and (p:Piece/p:BlocPiece/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:NatPce/@V='06' )) or (p:Piece/p:BlocPiece/p:TypPce/@V='01' and (p:Piece/p:BlocPiece/p:NatPce/@V='18' ))) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdEmpruntOrdo ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="94" valign="top" style="width:70.85pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[( (p:Piece/p:BlocPiece/p:TypPce/@V='03' and (p:Piece/p:BlocPiece/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:NatPce/@V='03' or p:Piece/p:BlocPiece/p:NatPce/@V='04' or p:Piece/p:BlocPiece/p:NatPce/@V='18')) or (p:Piece/p:BlocPiece/p:TypPce/@V='04' and (p:Piece/p:BlocPiece/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:NatPce/@V='03' or p:Piece/p:BlocPiece/p:NatPce/@V='04' or p:Piece/p:BlocPiece/p:NatPce/@V='06')) or (p:Piece/p:BlocPiece/p:TypPce/@V='14' and (p:Piece/p:BlocPiece/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:NatPce/@V='06' )) or (p:Piece/p:BlocPiece/p:TypPce/@V='01' and (p:Piece/p:BlocPiece/p:NatPce/@V='18' ))) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdEncaissement ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="94" valign="top" style="width:70.75pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[( (p:Piece/p:BlocPiece/p:TypPce/@V='03' and (p:Piece/p:BlocPiece/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:NatPce/@V='03' or p:Piece/p:BlocPiece/p:NatPce/@V='04' or p:Piece/p:BlocPiece/p:NatPce/@V='18')) or (p:Piece/p:BlocPiece/p:TypPce/@V='04' and (p:Piece/p:BlocPiece/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:NatPce/@V='03' or p:Piece/p:BlocPiece/p:NatPce/@V='04' or p:Piece/p:BlocPiece/p:NatPce/@V='06')) or (p:Piece/p:BlocPiece/p:TypPce/@V='14' and (p:Piece/p:BlocPiece/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:NatPce/@V='06' )) or (p:Piece/p:BlocPiece/p:TypPce/@V='01' and (p:Piece/p:BlocPiece/p:NatPce/@V='18' ))) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:RattachPiece/p:ExerRat/@V=$exercice ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="104" valign="top" style="width:77.95pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau[( (p:Piece/p:BlocPiece/p:TypPce/@V='03' and (p:Piece/p:BlocPiece/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:NatPce/@V='03' or p:Piece/p:BlocPiece/p:NatPce/@V='04' or p:Piece/p:BlocPiece/p:NatPce/@V='18')) or (p:Piece/p:BlocPiece/p:TypPce/@V='04' and (p:Piece/p:BlocPiece/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:NatPce/@V='03' or p:Piece/p:BlocPiece/p:NatPce/@V='04' or p:Piece/p:BlocPiece/p:NatPce/@V='06')) or (p:Piece/p:BlocPiece/p:TypPce/@V='14' and (p:Piece/p:BlocPiece/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:NatPce/@V='06' )) or (p:Piece/p:BlocPiece/p:TypPce/@V='01' and (p:Piece/p:BlocPiece/p:NatPce/@V='18' ))) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:RattachPiece/p:ExerRat/@V=$exercice -1]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td width="58" valign="top"
+ style="width:43.5pt;
+ border-top:none;padding:0cm 3.5pt 0cm 3.5pt">
+ <p class="Normal">
+ <span style="font-size:10.0pt">Dépense</span>
+ </p>
+ </td>
+ <td width="66" valign="top" style="width:49.65pt;">
+ <p class="Normal">
+ <span style="font-size:10.0pt">Ordinaire</span>
+ </p>
+ </td>
+ <td width="95" valign="top" style="width:70.9pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='01' and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='02') ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="104" valign="top" style="width:77.95pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <!--Nb(BordDep\
+ IdBord @V) avec (PiecDep\TypPce@V= 01 et PiecDep\NatPce@V=01 ou 02)-->
+ <xsl:value-of
+ select="count(./p:PES_DepenseAller/p:Bordereau/p:BlocBordereau/p:IdBord/@V[../../../p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='01' and (../../../p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or ../../../p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='02') ])"
+ />
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span style="font-size:10.0pt">Ordinaire \ Fonctionnement</span>
+ </p>
+ <p class="Normal">
+ <span style="font-size:10.0pt">Ordinaire \ Investissement</span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='01' and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='02') and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdRegie ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.75pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='01' and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='02') and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdActif ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='01' and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='02') and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdConv ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='01' and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='02') and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdEmpruntOrdo ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="94" valign="top" style="width:70.85pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='01' and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='02') and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:RattachPiece/p:NatPceOrig/@V ='03' ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="94" valign="top" style="width:70.75pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='01' and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='02') and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:RattachPiece/p:ExerRat/@V=$exercice ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="104" valign="top" style="width:77.95pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='01' and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='02') and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:RattachPiece/p:ExerRat/@V=$exercice - 1 ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td width="58" valign="top"
+ style="width:43.5pt;
+ border-top:none;padding:0cm 3.5pt 0cm 3.5pt">
+ <p class="Normal">
+ <span style="font-size:10.0pt">Dépense</span>
+ </p>
+ </td>
+ <td width="66" valign="top" style="width:49.65pt;">
+ <p class="Normal">
+ <span style="font-size:10.0pt">Correction \Annulation</span>
+ </p>
+ </td>
+ <td width="95" valign="top" style="width:70.9pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='02' and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='06' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='09' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='10') ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="104" valign="top" style="width:77.95pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <!--Nb(BordDep\
+ IdBord @V) avec (PiecDep\TypPce@V=02 et PiecDep\NatPce@V=06 ou 09 ou 10) -->
+ <xsl:value-of
+ select="count(./p:PES_DepenseAller/p:Bordereau/p:BlocBordereau/p:IdBord/@V[../../../p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='02' and (../../../p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='02' or ../../../p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='06' or ../../../p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='09' or ../../../p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='10')] )"
+ />
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span style="font-size:10.0pt">Correctif \ Annulation\Réduction annulant
+ un titre, Annulation du mandat de rattachement</span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='02' and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='06' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='09' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='10') and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdRegie ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.75pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='02' and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='06' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='09' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='10') and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdActif ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='02' and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='06' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='09' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='10') and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdConv ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='02' and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='06' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='09' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='10') and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdEmpruntOrdo ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="94" valign="top" style="width:70.85pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='02' and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='06' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='09' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='10') and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:RattachPiece/p:NatPceOrig/@V ='03' ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="94" valign="top" style="width:70.75pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='02' and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='06' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='09' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='10') and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:RattachPiece/p:ExerRat/@V=$exercice ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="104" valign="top" style="width:77.95pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='02' and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='06' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='09' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='10') and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:RattachPiece/p:ExerRat/@V=$exercice -1 ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td width="58" valign="top"
+ style="width:43.5pt;
+ border-top:none;padding:0cm 3.5pt 0cm 3.5pt">
+ <p class="Normal">
+ <span style="font-size:10.0pt">Dépense</span>
+ </p>
+ </td>
+ <td width="66" valign="top" style="width:49.65pt;">
+ <p class="Normal">
+ <span style="font-size:10.0pt">EAP</span>
+ </p>
+ </td>
+ <td width="95" valign="top" style="width:70.9pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='05' and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='03' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='04') ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="104" valign="top" style="width:77.95pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <!--Nb(BordDep\
+ IdBord @V) avec (PiecDep\TypPce@V=05 et PiecDep\NatPce@V=01 ou 02 ou 03 ou
+ 04) -->
+ <xsl:value-of
+ select="count(./p:PES_DepenseAller/p:Bordereau/p:BlocBordereau/p:IdBord/@V[../../../p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='05' and (../../../p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or ../../../p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='02' or ../../../p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='03' or ../../../p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='04') ])"
+ />
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span style="font-size:10.0pt">Emis après paiement de toutes natures sauf
+ Régie</span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='05' and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='03' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='04') and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdRegie ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.75pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='05' and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='03' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='04') and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdActif ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='05' and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='03' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='04') and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdConv ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='05' and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='03' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='04') and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdEmpruntOrdo ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="94" valign="top" style="width:70.85pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='05' and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='03' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='04') and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:RattachPiece/p:NatPceOrig/@V ='03' ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="94" valign="top" style="width:70.75pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='05' and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='03' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='04') and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:RattachPiece/p:ExerRat/@V=$exercice ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="104" valign="top" style="width:77.95pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='05' and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='03' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='04') and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:RattachPiece/p:ExerRat/@V=$exercice -1 ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td width="58" valign="top"
+ style="width:43.5pt;
+ border-top:none;padding:0cm 3.5pt 0cm 3.5pt">
+ <p class="Normal">
+ <span style="font-size:10.0pt">Dépense</span>
+ </p>
+ </td>
+ <td width="66" valign="top" style="width:49.65pt;">
+ <p class="Normal">
+ <span style="font-size:10.0pt">Fin d'exercice</span>
+ </p>
+ </td>
+ <td width="95" valign="top" style="width:70.9pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[ ( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='03' and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='03' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='04' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='18') ) or ( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='04' and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='03' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='04' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='06') ) or ( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='13' and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='06') )]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="104" valign="top" style="width:77.95pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <!--Nb(BordDep\
+ IdBord @V) avec (PiecDep\TypPce@V=03 et PiecDep\NatPce@V=01 ou 02 ou 03 ou
+ 04 ou 18 ) Ou
+ (PiecDep\TypPce@V=04 et PiecDep\NatPce@V=01 ou 02 ou 03 ou 04 ou 06) Ou
+ (PiecDep\TypPce@V=13 et PiecDep\NatPce@V=01 ou 06)
+ -->
+ <xsl:value-of
+ select="count(./p:PES_DepenseAller/p:Bordereau/p:BlocBordereau/p:IdBord/@V[ ( ../../../p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='03' and (../../../p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or ../../../p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='02' or ../../../p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='03' or ../../../p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='04' or ../../../p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='18') ) or ( ../../../p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='04' and (../../../p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or ../../../p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='02' or ../../../p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='03' or ../../../p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='04' or ../../../p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='06') ) or ( ../../../p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='13' and (../../../p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or ../../../p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='06') )])"
+ />
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span style="font-size:10.0pt">Ordre budgétaire, Ordre mixte, Charge
+ constatée d'avance de toutes natures</span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[ ( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='03' and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='03' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='04' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='18') ) or ( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='04' and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='03' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='04' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='06') ) or ( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='13' and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='06') ) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdRegie ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.75pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[ ( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='03' and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='03' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='04' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='18') ) or ( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='04' and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='03' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='04' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='06') ) or ( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='13' and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='06') ) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdActif ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[ ( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='03' and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='03' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='04' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='18') ) or ( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='04' and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='03' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='04' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='06') ) or ( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='13' and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='06') ) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdConv ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[ ( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='03' and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='03' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='04' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='18') ) or ( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='04' and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='03' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='04' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='06') ) or ( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='13' and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='06') ) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdEmpruntOrdo ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="94" valign="top" style="width:70.85pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[ ( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='03' and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='03' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='04' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='18') ) or ( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='04' and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='03' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='04' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='06') ) or ( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='13' and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='06') ) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:RattachPiece/p:NatPceOrig/@V ='03' ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="94" valign="top" style="width:70.75pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[ ( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='03' and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='03' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='04' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='18') ) or ( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='04' and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='03' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='04' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='06') ) or ( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='13' and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='06') ) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:RattachPiece/p:ExerRat/@V=$exercice ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="104" valign="top" style="width:77.95pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[ ( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='03' and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='03' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='04' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='18') ) or ( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='04' and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='03' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='04' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='06') ) or ( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='13' and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='06') ) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:RattachPiece/p:ExerRat/@V=$exercice -1 ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td width="58" valign="top"
+ style="width:43.5pt;
+ border-top:none;padding:0cm 3.5pt 0cm 3.5pt">
+ <p class="Normal">
+ <span style="font-size:10.0pt">Dépense</span>
+ </p>
+ </td>
+ <td width="66" valign="top" style="width:49.65pt;">
+ <p class="Normal">
+ <span style="font-size:10.0pt">Collectif</span>
+ </p>
+ </td>
+ <td width="95" valign="top" style="width:70.9pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='08' and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='02') ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="104" valign="top" style="width:77.95pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <!--Nb(BordDep\
+ IdBord @V) avec (PiecDep\TypPce@V=08 et PiecDep\NatPce@V=01 ou 02) -->
+ <xsl:value-of
+ select="count(./p:PES_DepenseAller/p:Bordereau/p:BlocBordereau/p:IdBord/@V[../../../p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='08' and (../../../p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or ../../../p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='02') ])"
+ />
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span style="font-size:10.0pt">Collectif de toutes natures sauf Paie</span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='08' and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='02') and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdRegie ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.75pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='08' and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='02') and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdActif ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='08' and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='02') and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdConv ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='08' and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='02') and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdEmpruntOrdo ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="94" valign="top" style="width:70.85pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='08' and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='02') and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:RattachPiece/p:NatPceOrig/@V ='03' ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="94" valign="top" style="width:70.75pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='08' and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='02') and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:RattachPiece/p:ExerRat/@V=$exercice ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="104" valign="top" style="width:77.95pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='08' and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='02') and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:RattachPiece/p:ExerRat/@V=$exercice -1 ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td width="58" valign="top"
+ style="width:43.5pt;
+ border-top:none;padding:0cm 3.5pt 0cm 3.5pt">
+ <p class="Normal">
+ <span style="font-size:10.0pt">Dépense</span>
+ </p>
+ </td>
+ <td width="66" valign="top" style="width:49.65pt;">
+ <p class="Normal">
+ <span style="font-size:10.0pt">Paie</span>
+ </p>
+ </td>
+ <td width="95" valign="top" style="width:70.9pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='01'or p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='08') and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='11' ) ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="104" valign="top" style="width:77.95pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <!-- Nb(BordDep\
+ IdBord @V) avec (PiecDep\TypPce@V=01 ou 08 et PiecDep\NatPce@V=11)-->
+ <xsl:value-of
+ select="count(./p:PES_DepenseAller/p:Bordereau/p:BlocBordereau/p:IdBord/@V[( ../../../p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='01'or ../../../p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='08') and (../../../p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='11' ) ])"
+ />
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span style="font-size:10.0pt">Ordinaire \ Paie<br/> Collectif \ Paie</span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='01'or p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='08') and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='11' ) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdRegie ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.75pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='01'or p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='08') and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='11' ) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdActif ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='01'or p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='08') and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='11' ) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdConv ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='01'or p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='08') and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='11' ) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdEmpruntOrdo]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="94" valign="top" style="width:70.85pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='01'or p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='08') and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='11' ) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:RattachPiece/p:NatPceOrig/@V ='03' ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="94" valign="top" style="width:70.75pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='01'or p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='08') and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='11' ) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:RattachPiece/p:ExerRat/@V=$exercice ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="104" valign="top" style="width:77.95pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='01'or p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='08') and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='11' ) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:RattachPiece/p:ExerRat/@V=$exercice -1 ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td width="58" valign="top"
+ style="width:43.5pt;
+ border-top:none;padding:0cm 3.5pt 0cm 3.5pt">
+ <p class="Normal">
+ <span style="font-size:10.0pt">Dépense</span>
+ </p>
+ </td>
+ <td width="66" valign="top" style="width:49.65pt;">
+ <p class="Normal">
+ <span style="font-size:10.0pt">Inventaire \Emprunt</span>
+ </p>
+ </td>
+ <td width="95" valign="top" style="width:70.9pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='01' ) and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='03' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='04') ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="104" valign="top" style="width:77.95pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <!--Nb(BordDep\
+ IdBord @V) avec (PiecDep\TypPce@V=01 et PiecDep\NatPce@V=03 ou 04)-->
+ <xsl:value-of
+ select="count(./p:PES_DepenseAller/p:Bordereau/p:BlocBordereau/p:IdBord/@V[( ../../../p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='01' ) and (../../../p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='03' or ../../../p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='04') ])"
+ />
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span style="font-size:10.0pt">Ordinaire \ Inventaire</span>
+ </p>
+ <p class="Normal">
+ <span style="font-size:10.0pt">Ordinaire \ emprunt</span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='01' ) and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='03' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='04') and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdRegie ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.75pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='01' ) and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='03' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='04') and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdActif ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='01' ) and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='03' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='04') and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdConv ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='01' ) and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='03' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='04') and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdEmpruntOrdo ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="94" valign="top" style="width:70.85pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='01' ) and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='03' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='04') and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:RattachPiece/p:NatPceOrig/@V ='03' ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="94" valign="top" style="width:70.75pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='01' ) and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='03' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='04') and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:RattachPiece/p:ExerRat/@V=$exercice ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="104" valign="top" style="width:77.95pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='01' ) and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='03' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='04') and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:RattachPiece/p:ExerRat/@V=$exercice -1 ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td width="58" valign="top"
+ style="width:43.5pt;
+ border-top:none;padding:0cm 3.5pt 0cm 3.5pt">
+ <p class="Normal">
+ <span style="font-size:10.0pt">Dépense</span>
+ </p>
+ </td>
+ <td width="66" valign="top" style="width:49.65pt;">
+ <p class="Normal">
+ <span style="font-size:10.0pt">Régie</span>
+ </p>
+ </td>
+ <td width="95" valign="top" style="width:70.9pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='05' ) and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='05') ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="104" valign="top" style="width:77.95pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <!--Nb(BordDep\
+ IdBord @V) avec (PiecDep\TypPce@V=01 ou 05 et PiecDep\NatPce@V=05)-->
+ <xsl:value-of
+ select="count(./p:PES_DepenseAller/p:Bordereau/p:BlocBordereau/p:IdBord/@V[( ../../../p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='01' or ../../../p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='05' ) and (../../../p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='05') ])"
+ />
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span style="font-size:10.0pt">Ordinaire \ Régie</span>
+ </p>
+ <p class="Normal">
+ <span style="font-size:10.0pt">EAP \ Régie</span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='05' ) and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='05') and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdRegie ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.75pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='05' ) and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='05') and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdActif ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='05' ) and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='05') and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdConv ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='05' ) and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='05') and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdEmpruntOrdo ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="94" valign="top" style="width:70.85pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='05' ) and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='05') and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:RattachPiece/p:NatPceOrig/@V ='03' ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="94" valign="top" style="width:70.75pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='05' ) and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='05') and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:RattachPiece/p:ExerRat/@V=$exercice ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="104" valign="top" style="width:77.95pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='05' ) and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='05') and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:RattachPiece/p:ExerRat/@V=$exercice -1 ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td width="58" valign="top"
+ style="width:43.5pt;
+ border-top:none;padding:0cm 3.5pt 0cm 3.5pt">
+ <p class="Normal">
+ <span style="font-size:10.0pt">Dépense</span>
+ </p>
+ </td>
+ <td width="66" valign="top" style="width:49.65pt;">
+ <p class="Normal">
+ <span style="font-size:10.0pt">Marché</span>
+ </p>
+ </td>
+ <td width="95" valign="top" style="width:70.9pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='09' ) and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='12' ) ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="104" valign="top" style="width:77.95pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <!--Nb(BordDep\
+ IdBord @V) avec (PiecDep\TypPce@V=09 et PiecDep\NatPce@V=01 ou 02 ou 12 ou
+ 12)-->
+ <xsl:value-of
+ select="count(./p:PES_DepenseAller/p:Bordereau/p:BlocBordereau/p:IdBord/@V[( ../../../p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='09' ) and (../../../p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or ../../../p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='02' or ../../../p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='12' ) ])"
+ />
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span style="font-size:10.0pt">Mandats de marché de toutes natures</span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='09' ) and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='12' ) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdRegie ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.75pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='09' ) and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='12' ) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdActif ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='09' ) and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='12' ) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdConv ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='09' ) and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='12' ) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdEmpruntOrdo ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="94" valign="top" style="width:70.85pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='09' ) and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='12' ) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:RattachPiece/p:NatPceOrig/@V ='03']">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="94" valign="top" style="width:70.75pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='09' ) and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='12' ) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:RattachPiece/p:ExerRat/@V=$exercice ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="104" valign="top" style="width:77.95pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='09' ) and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='12' ) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:RattachPiece/p:ExerRat/@V=$exercice -1 ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td width="58" valign="top"
+ style="width:43.5pt;
+ border-top:none;padding:0cm 3.5pt 0cm 3.5pt">
+ <p class="Normal">
+ <span style="font-size:10.0pt">Dépense</span>
+ </p>
+ </td>
+ <td width="66" valign="top" style="width:49.65pt;">
+ <p class="Normal">
+ <span style="font-size:10.0pt">Rattachement</span>
+ </p>
+ </td>
+ <td width="95" valign="top" style="width:70.9pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='10' ) and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='03' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='04' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='05' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='11') ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="104" valign="top" style="width:77.95pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <!--Nb(BordDep\
+ IdBord @V) avec (PiecDep\TypPce@V=10 et PiecDep\NatPce@V=01 ou 02 ou 03 ou
+ 04 ou 05 ou 11)-->
+ <xsl:value-of
+ select="count(./p:PES_DepenseAller/p:Bordereau/p:BlocBordereau/p:IdBord/@V[( ../../../p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='10' ) and (../../../p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or ../../../p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='02' or ../../../p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='03' or ../../../p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='04' or ../../../p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='05' or ../../../p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='11') ])"
+ />
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span style="font-size:10.0pt">Mandats de rattachement de toutes natures</span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='10' ) and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='03' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='04' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='05' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='11') and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdRegie ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.75pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='10' ) and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='03' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='04' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='05' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='11') and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdActif ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='10' ) and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='03' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='04' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='05' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='11') and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdConv ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='10' ) and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='03' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='04' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='05' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='11') and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdEmpruntOrdo ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="94" valign="top" style="width:70.85pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='10' ) and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='03' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='04' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='05' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='11') and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:RattachPiece/p:NatPceOrig/@V ='03' ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="94" valign="top" style="width:70.75pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='10' ) and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='03' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='04' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='05' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='11') and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:RattachPiece/p:ExerRat/@V=$exercice ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="104" valign="top" style="width:77.95pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='10' ) and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='02' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='03' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='04' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='05' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='11') and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:RattachPiece/p:ExerRat/@V=$exercice -1 ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td width="58" valign="top"
+ style="width:43.5pt;
+ border-top:none;padding:0cm 3.5pt 0cm 3.5pt">
+ <p class="Normal">
+ <span style="font-size:10.0pt">Dépense</span>
+ </p>
+ </td>
+ <td width="66" valign="top" style="width:49.65pt;">
+ <p class="Normal">
+ <span style="font-size:10.0pt">Admission en non valeur</span>
+ </p>
+ </td>
+ <td width="95" valign="top" style="width:70.9pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='07' ) and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' ) ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="104" valign="top" style="width:77.95pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <!-- Nb(BordDep\
+ IdBord @V) avec (PiecDep\TypPce@V=07 et PiecDep\NatPce@V=01)-->
+ <xsl:value-of
+ select="count(./p:PES_DepenseAller/p:Bordereau/p:BlocBordereau/p:IdBord/@V[( ../../../p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='07' ) and (../../../p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' )])"
+ />
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span style="font-size:10.0pt">Mandats d'admission en non valeur de toutes
+ nature</span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='07' ) and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' ) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdRegie ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.75pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='07' ) and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' ) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdActif ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='07' ) and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' ) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdConv ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='07' ) and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' ) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdEmpruntOrdo ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="94" valign="top" style="width:70.85pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='07' ) and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' ) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:RattachPiece/p:NatPceOrig/@V ='03' ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="94" valign="top" style="width:70.75pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='07' ) and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' ) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:RattachPiece/p:ExerRat/@V=$exercice ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="104" valign="top" style="width:77.95pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='07' ) and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' ) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:RattachPiece/p:ExerRat/@V=$exercice -1]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td width="58" valign="top"
+ style="width:43.5pt;
+ border-top:none;padding:0cm 3.5pt 0cm 3.5pt">
+ <p class="Normal">
+ <span style="font-size:10.0pt">Dépense</span>
+ </p>
+ </td>
+ <td width="66" valign="top" style="width:49.65pt;">
+ <p class="Normal">
+ <span style="font-size:10.0pt">Mandat global</span>
+ </p>
+ </td>
+ <td width="95" valign="top" style="width:70.9pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='06' ) and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='04' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='07' ) ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="104" valign="top" style="width:77.95pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <!--Nb(BordDep\
+ IdBord @V) avec (PiecDep\TypPce@V=06 et PiecDep\NatPce@V=01 ou 04 ou 07)-->
+ <xsl:value-of
+ select="count(./p:PES_DepenseAller/p:Bordereau/p:BlocBordereau/p:IdBord/@V[( ../../../p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='06' ) and (../../../p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or ../../../p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='04' or ../../../p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='07' ) ])"
+ />
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span style="font-size:10.0pt">Mandats globaux de toutes natures</span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='06' ) and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='04' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='07' ) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdRegie ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.75pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='06' ) and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='04' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='07' ) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdActif ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='06' ) and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='04' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='07' ) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdConv ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="85" valign="top" style="width:63.8pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='06' ) and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='04' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='07' ) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:LiensIdent/p:IdEmpruntOrdo ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="94" valign="top" style="width:70.85pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='06' ) and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='04' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='07' ) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:RattachPiece/p:NatPceOrig/@V ='03' ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="94" valign="top" style="width:70.75pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='06' ) and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='04' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='07' ) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:RattachPiece/p:ExerRat/@V=$exercice ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ <td width="104" valign="top" style="width:77.95pt;">
+ <p class="Normal">
+ <span class="Resultat">
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau[( p:Piece/p:BlocPiece/p:InfoPce/p:TypPce/@V='06' ) and (p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='01' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='04' or p:Piece/p:BlocPiece/p:InfoPce/p:NatPce/@V='07' ) and p:Piece/p:LigneDePiece/p:BlocLignePiece/p:RattachPiece/p:ExerRat/@V=$exercice -1 ]">
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ <p class="Normal"> </p>
+ <p class="Normal"> </p>
+ <p class="Style1">Liste des bordereaux du flux</p>
+ <p class="Normal"> </p>
+ <div align="center">
+ <table class="NormalTable" border="1" cellspacing="0" cellpadding="0" align="center"
+ style="border-collapse:collapse;border:1px">
+ <tr>
+ <td width="102" valign="top"
+ style="width:76.75pt;
+ background:gray;padding:0cm 3.5pt 0cm 3.5pt">
+ <p class="Normal">
+ <b>
+ <span style="color:white">Poste Comptable</span>
+ </b>
+ </p>
+ </td>
+ <td width="102" valign="top"
+ style="width:76.75pt;
+ border-left:none;background:gray;padding:0cm 3.5pt 0cm 3.5pt">
+ <p class="Normal">
+ <b>
+ <span style="color:white">Budget Collectivité</span>
+ </b>
+ </p>
+ </td>
+ <td width="175" valign="top"
+ style="width:131.05pt;
+ border-left:none;background:gray;padding:0cm 3.5pt 0cm 3.5pt">
+ <p class="Normal">
+ <b>
+ <span style="color:white">Domaine</span>
+ </b>
+ </p>
+ </td>
+ <td width="226" valign="top"
+ style="width:169.6pt;
+ border-left:none;background:gray;padding:0cm 3.5pt 0cm 3.5pt">
+ <p class="Normal">
+ <b>
+ <span style="color:white">N° Bordereau</span>
+ </b>
+ </p>
+ </td>
+ <td width="215" valign="top"
+ style="width:76.75pt;
+ border-left:none;background:gray;padding:0cm 3.5pt 0cm 3.5pt">
+ <p class="Normal">
+ <b>
+ <span style="color:white">Triplet</span>
+ </b>
+ </p>
+ </td>
+ <td width="102" valign="top"
+ style="width:161.1pt;
+ border-left:none;background:gray;padding:0cm 3.5pt 0cm 3.5pt">
+ <p class="Normal">
+ <b>
+ <span style="color:white">Sous domaine</span>
+ </b>
+ </p>
+ </td>
+ </tr>
+ <xsl:for-each select="./p:PES_RecetteAller/p:Bordereau">
+ <xsl:variable name="triplet">
+ <xsl:value-of
+ select="concat(./p:BlocBordereau/p:TypBord/@V, '-', ./p:Piece[position()=1]/p:BlocPiece/p:TypPce/@V, '-', ./p:Piece[position()=1]/p:BlocPiece/p:NatPce/@V)"
+ />
+ </xsl:variable>
+ <tr>
+ <td width="102" valign="top"
+ style="width:76.75pt;border-top:none;padding:0cm 3.5pt 0cm 3.5pt">
+ <p class="Normal">
+ <span class="Resultat">
+ <!--PES_Aller\EnTetePES\IdPost-->
+ <!--<xsl:if test="position()=1">-->
+ <xsl:value-of select="../../p:EnTetePES/p:IdPost/@V"/>
+ <!--</xsl:if>-->
+ </span>
+ </p>
+ </td>
+ <td width="102" valign="top"
+ style="width:76.75pt;border-top:none;padding:0cm 3.5pt 0cm 3.5pt">
+ <!--<xsl:if test="position()=1"> -->
+ <p class="Normal">
+ <span class="Resultat">
+ <!--PES_Aller\EnTetePES\CodColl-->
+ <!--PES_Aller\EnTetePES\CodBud-->
+ <xsl:value-of select="../../p:EnTetePES/p:CodCol/@V"/>
+ <xsl:value-of select="../../p:EnTetePES/p:CodBud/@V"/>
+ </span>
+ </p>
+ <!--</xsl:if>-->
+ </td>
+ <td width="175" valign="top"
+ style="width:131.05pt;border-top:none;border-left:
+ none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;
+ padding:0cm 3.5pt 0cm 3.5pt">
+ <p class="Normal">
+ <span class="Resultat"><!--Si PES_Aller\PES_RecetteAller\Bordereau
+ Alors afficher « Recette »-->
+ <!--Si
+ PES_Aller\PES_DepenseAller\Bordereau Alors afficher « Dépense »-->
+  Recette  </span>
+ </p>
+ </td>
+ <td width="226" valign="top"
+ style="width:169.6pt;border-top:none;border-left:
+ none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;
+ padding:0cm 3.5pt 0cm 3.5pt">
+ <p class="Normal">
+ <span class="Resultat">
+ <!--Pour
+ PES_Aller\PES_RecetteAller\Bordereau :
+ Valeur(BordRec\IdBord@V)-->
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">recette</xsl:with-param>
+ </xsl:call-template>
+ </span>
+ </p>
+ </td>
+ <td width="215" valign="top"
+ style="width:76.75pt;border-top:none;border-left:
+ none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;
+ padding:0cm 3.5pt 0cm 3.5pt">
+ <p class="Normal">
+ <span class="Resultat">
+ <!--Prendre les informations de la
+ première pièce du bordereau au format "nn-nn-nn" :
+ Pour
+ PES_Aller\PES_RecetteAller\Bordereau : Concaténation(BordRec\TypBord,
+ PiecRec\TypPce et PiecRec\NatPce
+ Pour
+ PES_Aller\PES_DepenseAller\Bordereau :
+ Concaténation(BordDep\TypBord,
+ PiecDep\TypPce et PiecDep\NatPce)
+ -->
+ <xsl:value-of select="$triplet"/>
+ </span>
+ </p>
+ </td>
+ <td width="102" valign="top"
+ style="width:161.1pt;border-top:none;border-left:
+ none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;
+ padding:0cm 3.5pt 0cm 3.5pt">
+ <p class="Normal">
+ <span class="Resultat">
+ <!--Pour l\92alimentation de ce champ,
+ consulter la règle de gestion 1.-->
+ <xsl:choose>
+ <!--xsl:when test="$triplet='01-01-01'">Ordinaire</xsl:when>
+ <xsl:when test="$triplet='01-01-02'">Ordinaire</xsl:when>
+ <xsl:when test="$triplet='02-02-06'">Correctif</xsl:when>
+ <xsl:when test="$triplet='02-02-09'">Correctif</xsl:when>
+ <xsl:when test="$triplet='02-02-10'">Correctif</xsl:when>
+ <xsl:when test="$triplet='01-05-01'">Emis Après Encaissement</xsl:when>
+ <xsl:when test="$triplet='01-05-02'">Emis Après Encaissement</xsl:when>
+ <xsl:when test="$triplet='01-05-03'">Emis Après Encaissement</xsl:when>
+ <xsl:when test="$triplet='01-05-04'">Emis Après Encaissement</xsl:when>
+ <xsl:when test="$triplet='01-01-05'">Régie</xsl:when>
+ <xsl:when test="$triplet='01-05-05'">Régie</xsl:when>
+ <xsl:when test="$triplet='01-01-03'">Inventaire/Emprunt</xsl:when>
+ <xsl:when test="$triplet='01-01-04'">Inventaire/Emprunt</xsl:when>
+ <xsl:when test="$triplet='01-11-01'">Rattachement</xsl:when>
+ <xsl:when test="$triplet='01-11-02'">Rattachement</xsl:when>
+ <xsl:when test="$triplet='01-11-04'">Rattachement</xsl:when>
+ <xsl:when test="$triplet='01-01-18'">Fin d'exercice</xsl:when>
+ <xsl:when test="$triplet='01-03-01'">Fin d'exercice</xsl:when>
+ <xsl:when test="$triplet='01-03-02'">Fin d'exercice</xsl:when>
+ <xsl:when test="$triplet='01-03-03'">Fin d'exercice</xsl:when>
+ <xsl:when test="$triplet='01-03-04'">Fin d'exercice</xsl:when>
+ <xsl:when test="$triplet='01-03-18'">Fin d'exercice</xsl:when>
+ <xsl:when test="$triplet='01-04-01'">Fin d'exercice</xsl:when>
+ <xsl:when test="$triplet='01-04-02'">Fin d'exercice</xsl:when>
+ <xsl:when test="$triplet='01-04-03'">Fin d'exercice</xsl:when>
+ <xsl:when test="$triplet='01-04-04'">Fin d'exercice</xsl:when>
+ <xsl:when test="$triplet='01-04-06'">Fin d'exercice</xsl:when>
+ <xsl:when test="$triplet='01-14-01'">Fin d'exercice</xsl:when>
+ <xsl:when test="$triplet='01-14-06'">Fin d'exercice</xsl:when>
+ <xsl:when test="$triplet='01-09-01'">Majoration</xsl:when>
+ <xsl:when test="$triplet='01-06-01'">Récapitulatif</xsl:when>
+ <xsl:when test="$triplet='01-07-01'">Récapitulatif</xsl:when>
+ <xsl:when test="$triplet='01-06-01'">Récapitulatif</xsl:when>
+ <xsl:when test="$triplet='01-02-07'">Hors Scope</xsl:when>
+ <xsl:when test="$triplet='01-02-08'">Hors Scope</xsl:when>
+ <xsl:when test="$triplet='01-10-01'">Hors Scope</xsl:when>
+ <xsl:when test="$triplet='01-10-02'">Hors Scope</xsl:when>
+ <xsl:when test="$triplet='01-12-01'">Hors Scope</xsl:when>
+ <xsl:when test="$triplet='01-12-02'">Hors Scope</xsl:when>
+ <xsl:when test="$triplet='01-12-11'">Hors Scope</xsl:when-->
+ <xsl:when test="$sousdomaines/domaine[@code='recette']/triplet[@code=$triplet]"><xsl:value-of select="$sousdomaines/domaine[@code='recette']/triplet[@code=$triplet]/@valeur"/></xsl:when>
+ <xsl:otherwise>
+ <span style="color: red;">Incorrect</span>
+ </xsl:otherwise>
+ </xsl:choose>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </xsl:for-each>
+ <xsl:for-each select="./p:PES_DepenseAller/p:Bordereau">
+ <xsl:variable name="triplet">
+ <xsl:value-of
+ select="concat(./p:BlocBordereau/p:TypBord/@V, '-', ./p:Piece[position()=1]/p:BlocPiece/p:InfoPce/p:TypPce/@V, '-', ./p:Piece[position()=1]/p:BlocPiece/p:InfoPce/p:NatPce/@V)"
+ />
+ </xsl:variable>
+ <tr>
+ <td width="102" valign="top"
+ style="width:76.75pt;border-top:none;padding:0cm 3.5pt 0cm 3.5pt">
+ <p class="Normal">
+ <span class="Resultat">
+ <!--PES_Aller\EnTetePES\IdPost-->
+ <!--<xsl:if test="position()=1"> -->
+ <xsl:value-of select="../../p:EnTetePES/p:IdPost/@V"/>
+ <!--</xsl:if> -->
+ </span>
+ </p>
+ </td>
+ <td width="102" valign="top"
+ style="width:76.75pt;border-top:none;padding:0cm 3.5pt 0cm 3.5pt">
+ <!--<xsl:if test="position()=1"> -->
+ <p class="Normal">
+ <span class="Resultat">
+ <!--PES_Aller\EnTetePES\CodColl-->
+ <!--PES_Aller\EnTetePES\CodBud-->
+ <xsl:value-of select="../../p:EnTetePES/p:CodCol/@V"/>
+ <xsl:value-of select="../../p:EnTetePES/p:CodBud/@V"/>
+ </span>
+ </p>
+ <!--</xsl:if>-->
+ </td>
+ <td width="175" valign="top"
+ style="width:131.05pt;border-top:none;border-left:
+ none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;
+ padding:0cm 3.5pt 0cm 3.5pt">
+ <p class="Normal">
+ <span class="Resultat"><!--Si PES_Aller\PES_RecetteAller\Bordereau
+ Alors afficher « Recette »-->
+ <!--Si
+ PES_Aller\PES_DepenseAller\Bordereau Alors afficher « Dépense »-->
+  Dépense  </span>
+ </p>
+ </td>
+ <td width="226" valign="top"
+ style="width:169.6pt;border-top:none;border-left:
+ none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;
+ padding:0cm 3.5pt 0cm 3.5pt">
+ <p class="Normal">
+ <span class="Resultat">
+ <!--Pour
+ PES_Aller\PES_DepenseAller\Bordereau :Valeur(BordDep\IdBord@V)-->
+ <xsl:call-template name="linkBordereau">
+ <xsl:with-param name="IdBord" select="./p:BlocBordereau/p:IdBord/@V"/>
+ <xsl:with-param name="pk" select="./@added:primary-key"/>
+ <xsl:with-param name="domaine">depense</xsl:with-param>
+ </xsl:call-template>
+ </span>
+ </p>
+ </td>
+ <td width="215" valign="top"
+ style="width:76.75pt;border-top:none;border-left:
+ none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;
+ padding:0cm 3.5pt 0cm 3.5pt">
+ <p class="Normal">
+ <span class="Resultat">
+ <!--
+ Prendre les informations de la
+ première pièce du bordereau au format "nn-nn-nn" :</span></p>
+ <p class="Normal"><span class="Resultat">Pour
+ PES_Aller\PES_RecetteAller\Bordereau : Concaténation(BordRec\TypBord,
+ PiecRec\TypPce et PiecRec\NatPce)</span></p>
+ <p class="Normal"><span class="Resultat"> </span></p>
+ <p class="Normal"><span class="Resultat">Pour
+ PES_Aller\PES_DepenseAller\Bordereau :</span></p>
+ <p class="Normal"><span class="Resultat">Concaténation(BordDep\TypBord,
+ PiecDep\TypPce et PiecDep\NatPce)-->
+ <xsl:value-of select="$triplet"/>
+ </span>
+ </p>
+ </td>
+ <td width="102" valign="top"
+ style="width:161.1pt;border-top:none;border-left:
+ none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;
+ padding:0cm 3.5pt 0cm 3.5pt">
+ <p class="Normal">
+ <span class="Resultat">
+ <!--Pour l\92alimentation de ce champ,
+ consulter la règle de gestion 1.-->
+ <!--xsl:choose>
+ <xsl:when test="$triplet='01-01-01'">Ordinaire</xsl:when>
+ <xsl:when test="$triplet='01-01-02'">Ordinaire</xsl:when>
+ <xsl:when test="$triplet='02-02-06'">Correctif</xsl:when>
+ <xsl:when test="$triplet='02-02-09'">Correctif</xsl:when>
+ <xsl:when test="$triplet='02-02-10'">Correctif</xsl:when>
+ <xsl:when test="$triplet='01-05-01'">EAP</xsl:when>
+ <xsl:when test="$triplet='01-05-02'">EAP</xsl:when>
+ <xsl:when test="$triplet='01-05-03'">EAP</xsl:when>
+ <xsl:when test="$triplet='01-05-04'">EAP</xsl:when>
+ <xsl:when test="$triplet='01-01-05'">Régie</xsl:when>
+ <xsl:when test="$triplet='01-05-05'">Régie</xsl:when>
+ <xsl:when test="$triplet='01-09-01'">Marché</xsl:when>
+ <xsl:when test="$triplet='01-09-02'">Marché</xsl:when>
+ <xsl:when test="$triplet='01-09-12'">Marché</xsl:when>
+ <xsl:when test="$triplet='01-09-13'">Marché</xsl:when>
+ <xsl:when test="$triplet='01-01-03'">Inventaire/Emprunt</xsl:when>
+ <xsl:when test="$triplet='01-01-04'">Inventaire/Emprunt</xsl:when>
+ <xsl:when test="$triplet='01-10-01'">Rattachement</xsl:when>
+ <xsl:when test="$triplet='01-10-02'">Rattachement</xsl:when>
+ <xsl:when test="$triplet='01-10-04'">Rattachement</xsl:when>
+ <xsl:when test="$triplet='01-10-05'">Rattachement</xsl:when>
+ <xsl:when test="$triplet='01-10-11'">Rattachement</xsl:when>
+ <xsl:when test="$triplet='01-03-01'">Fin d'exercice</xsl:when>
+ <xsl:when test="$triplet='01-03-02'">Fin d'exercice</xsl:when>
+ <xsl:when test="$triplet='01-03-03'">Fin d'exercice</xsl:when>
+ <xsl:when test="$triplet='01-03-04'">Fin d'exercice</xsl:when>
+ <xsl:when test="$triplet='01-03-18'">Fin d'exercice</xsl:when>
+ <xsl:when test="$triplet='01-04-01'">Fin d'exercice</xsl:when>
+ <xsl:when test="$triplet='01-04-02'">Fin d'exercice</xsl:when>
+ <xsl:when test="$triplet='01-04-03'">Fin d'exercice</xsl:when>
+ <xsl:when test="$triplet='01-04-04'">Fin d'exercice</xsl:when>
+ <xsl:when test="$triplet='01-04-06'">Fin d'exercice</xsl:when>
+ <xsl:when test="$triplet='01-13-01'">Fin d'exercice</xsl:when>
+ <xsl:when test="$triplet='01-12-06'">Fin d'exercice</xsl:when>
+ <xsl:when test="$triplet='01-08-01'">Collectif</xsl:when>
+ <xsl:when test="$triplet='01-08-02'">Collectif</xsl:when>
+ <xsl:when test="$triplet='01-01-11'">Paie</xsl:when>
+ <xsl:when test="$triplet='01-08-12'">Paie</xsl:when>
+ <xsl:when test="$triplet='01-07-01'">Admission en non valeur</xsl:when>
+ <xsl:when test="$triplet='01-06-01'">Global</xsl:when>
+ <xsl:when test="$triplet='01-06-04'">Global</xsl:when>
+ <xsl:when test="$triplet='01-06-07'">Global</xsl:when>
+ <xsl:when test="$triplet='01-02-07'">Hors Scope</xsl:when>
+ <xsl:when test="$triplet='01-02-08'">Hors Scope</xsl:when>
+ <xsl:when test="$triplet='01-11-01'">Hors Scope</xsl:when>
+ <xsl:when test="$triplet='01-11-02'">Hors Scope</xsl:when>
+ <xsl:when test="$triplet='01-11-04'">Hors Scope</xsl:when>
+ <xsl:otherwise>
+ <span style="color: red;">Incorrect</span>
+ </xsl:otherwise>
+ </xsl:choose-->
+ <xsl:choose>
+ <xsl:when test="$sousdomaines/domaine[@code='depense']/triplet[@code=$triplet]"><xsl:value-of select="$sousdomaines/domaine[@code='depense']/triplet[@code=$triplet]/@valeur"/></xsl:when>
+ <xsl:otherwise>
+ <span style="color: red;">Incorrect</span>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ </span>
+ </p>
+ </td>
+ </tr>
+ </xsl:for-each>
+ </table>
+ </div>
+ <div style="padding-top: 3mm;">
+ <xsl:if test="exists(p:PES_DepenseAller/p:Bordereau/p:Piece)">
+ <h3>Mandats</h3>
+ <table>
+ <thead>
+ <tr>
+ <td style="background:gray;padding:0cm 3.5pt 0cm 3.5pt; color: white; font-weight: bold;">Id Bord</td>
+ <td style="background:gray;padding:0cm 3.5pt 0cm 3.5pt; color:white; font-weight: bold;">Id mandat</td>
+ <td style="background:gray;padding:0cm 3.5pt 0cm 3.5pt; color: white; font-weight: bold;">Triplet</td>
+ <td style="background:gray;padding:0cm 3.5pt 0cm 3.5pt; color:white; font-weight: bold;">Objet</td>
+ </tr>
+ </thead>
+ <tbody>
+ <xsl:for-each select="p:PES_DepenseAller/p:Bordereau/p:Piece/p:BlocPiece/p:InfoPce">
+ <tr>
+ <td><xsl:value-of select="../../../p:BlocBordereau/p:IdBord/@V"/></td>
+ <td><xsl:value-of select="p:IdPce/@V"/></td>
+ <td><xsl:value-of select="../../../p:BlocBordereau/p:TypBord/@V"/>-<xsl:value-of select="p:TypPce/@V"/>-<xsl:value-of select="p:NatPce/@V"/></td>
+ <td><xsl:value-of select="p:Obj/@V"/></td>
+ </tr>
+ </xsl:for-each>
+ </tbody>
+ </table>
+ </xsl:if>
+ <xsl:if test="exists(p:PES_RecetteAller/p:Bordereau/p:Piece)">
+ <h3>Titres</h3>
+ <table>
+ <thead>
+ <tr>
+ <td style="background:gray;padding:0cm 3.5pt 0cm 3.5pt; color: white; font-weight: bold;">Id Bord</td>
+ <td style="background:gray;padding:0cm 3.5pt 0cm 3.5pt; color:white; font-weight: bold;">Id titre</td>
+ <td style="background:gray;padding:0cm 3.5pt 0cm 3.5pt; color: white; font-weight: bold;">Triplet</td>
+ <td style="background:gray;padding:0cm 3.5pt 0cm 3.5pt; color:white; font-weight: bold;">Objet</td>
+ </tr>
+ </thead>
+ <tbody>
+ <xsl:for-each select="p:PES_RecetteAller/p:Bordereau/p:Piece/p:BlocPiece">
+ <tr>
+ <td><xsl:value-of select="../../p:BlocBordereau/p:IdBord/@V"/></td>
+ <td><xsl:value-of select="p:IdPce/@V"/></td>
+ <td><xsl:value-of select="../../p:BlocBordereau/p:TypBord/@V"/>-<xsl:value-of select="p:TypPce/@V"/>-<xsl:value-of select="p:NatPce/@V"/></td>
+ <td><xsl:value-of select="p:ObjPce/@V"/></td>
+ </tr>
+ </xsl:for-each>
+ </tbody>
+ </table>
+ </xsl:if>
+ </div>
+ <xsl:apply-templates/>
+ </body>
+ </html>
+ </xsl:template>
+ <xsl:template name="linkBordereau">
+ <xsl:param name="IdBord"/>
+ <xsl:param name="pk"/>
+ <xsl:param name="domaine"/>
+ <xsl:element name="a">
+ <xsl:variable name="etat">
+ <xsl:choose>
+ <xsl:when test="$domaine = 'recette'">PES_RecetteAller</xsl:when>
+ <xsl:when test="$domaine = 'depense'">PES_DepenseAller</xsl:when>
+ <xsl:otherwise>general_view</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:attribute name="href">xemelios:/query?docId=pes-aller&etatId=<xsl:value-of
+ select="$etat"/>&path=[@added:primary-key='<xsl:value-of select="$pk"
+ />']&xsl:param=(elementId,Bordereau)</xsl:attribute>
+ <xsl:value-of select="$IdBord"/>
+ </xsl:element>
+ </xsl:template>
+</xsl:stylesheet>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<controls>
+ <document id="PES_Aller">
+ <param id="nomencl" name="Nomenclature" datatype="string" use="required" value="M14">
+ <select id="nomencl">
+ <option value="M4">M4</option>
+ <option value="M14">M14</option>
+ <option value="M21">M21</option>
+ <option value="M22">M22</option>
+ <option value="M31">M31</option>
+ <option value="M52">M52</option>
+ <option value="M61">M61</option>
+ <option value="M71">M71</option>
+ </select>
+ </param>
+ <param id="typnomencl" name="Type de nomenclature" datatype="string" use="required" value="Nature">
+ <select id="typnomencl">
+ <option value="Fonction">Fonction</option>
+ <option value="Nature">Nature</option>
+ <option value="Nature-ref-fonct">Nature avec réf. fonctionnelle</option>
+ </select>
+ </param>
+ <param id="votop" name="Vote par opération" datatype="boolean" value="false">
+ <input id="votop" datatype="boolean"/></param>
+ <param id="suivdgp" name="Suivi du DGP" datatype="boolean" value="true">
+ <input id="suivdgp" datatype="boolean"/></param>
+ <param id="dureedgp" name="Durée maximale du délai global de paiement" datatype="integer" use="required" value="30">
+ <input id="paiement" datatype="integer"/></param>
+ <param id="coltva" name="Collectivité assujettie à la TVA" datatype="boolean" value="true">
+ <input id="coltva" datatype="boolean"/></param>
+ <param id="servTVA" name="Liste des services assujettis à la TVA" datatype="string" value="">
+ <select id="servTVA" multivalued="true" editable="true"/></param>
+ <param id="compteTVA" name="Liste des comptes d'imputation de la TVA" datatype="string" value="">
+ <select id="compteTVA" multivalued="true" editable="true"/></param>
+ <param id="tauxTVA" name="Liste des taux TVA" datatype="string" use="required" value="2.1 5.5 19.6">
+ <select id="tauxTVA" multivalued="true" editable="true">
+ <option value="2.1">2.1</option>
+ <option value="5.5">5.5</option>
+ <option value="19.6">19.6</option>
+ </select>
+ </param>
+ <param id="seuilMax" name="Seuil maximal des marchés" datatype="decimal" use="required" value="90000">
+ <input id="servTVA" datatype="decimal"/></param>
+ <param id="seuilEmission" name="Seuil d'émission des titres" datatype="decimal" use="required" value="10">
+ <input id="seuilEmission" datatype="decimal"/></param>
+ <param id="codProd" name="Liste des Codes Produits" datatype="string" value="69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 248 300 302 305 306 307 308">
+ <select id="codProd" multivalued="true" editable="true">
+ <option value="69">69</option>
+ <option value="70">70</option>
+ <option value="71">71</option>
+ <option value="72">72</option>
+ <option value="73">73</option>
+ <option value="74">74</option>
+ <option value="75">75</option>
+ <option value="76">76</option>
+ <option value="77">77</option>
+ <option value="78">78</option>
+ <option value="79">79</option>
+ <option value="80">80</option>
+ <option value="81">81</option>
+ <option value="82">82</option>
+ <option value="83">83</option>
+ <option value="84">84</option>
+ <option value="85">85</option>
+ <option value="86">86</option>
+ <option value="87">87</option>
+ <option value="88">88</option>
+ <option value="89">89</option>
+ <option value="90">90</option>
+ <option value="91">91</option>
+ <option value="92">92</option>
+ <option value="93">93</option>
+ <option value="94">94</option>
+ <option value="95">95</option>
+ <option value="96">96</option>
+ <option value="97">97</option>
+ <option value="98">98</option>
+ <option value="99">99</option>
+ <option value="100">100</option>
+ <option value="101">101</option>
+ <option value="102">102</option>
+ <option value="103">103</option>
+ <option value="104">104</option>
+ <option value="105">105</option>
+ <option value="106">106</option>
+ <option value="107">107</option>
+ <option value="248">248</option>
+ <option value="300">300</option>
+ <option value="302">302</option>
+ <option value="305">305</option>
+ <option value="306">306</option>
+ <option value="307">307</option>
+ <option value="308">308</option>
+ </select>
+ </param>
+ </document>
+</controls>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:n="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/aller"
+ xmlns:added="http://projets.admisource.gouv.fr/xemelios/namespaces#added"
+ xmlns:ano="http://projets.admisource.gouv.fr/xemelios/namespaces#anomally"
+ xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
+ xmlns:xad="http://uri.etsi.org/01903/v1.1.1#"
+ xmlns:data="data.uri"
+ xmlns:xem="fr.gouv.finances.cp.utils.xml.certs.Certificate509"
+ version="2.0">
+ <xsl:param name="browser-destination" />
+ <xsl:output encoding="ISO-8859-1" method="xhtml" exclude-result-prefixes="n added ano data" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" include-content-type="no" indent="yes"/>
+ <xsl:decimal-format name="decformat"
+ decimal-separator=","
+ grouping-separator=" "
+ digit="#"
+ pattern-separator=";"
+ NaN="NaN"
+ minus-sign="-"/>
+ <xsl:template match="*"/>
+ <xsl:template match="/n:PES_Aller">
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <head>
+ <style type="text/css">
+ body {
+ width: 29cm;
+ font-family: verdana, sans-serif;
+ font-size: 12px;
+ background-color: #FFFFFF;
+ }
+ div.divpage {
+ width: 29cm;
+ margin: 0 0 0 0;
+ }
+ table { border-collapse: collapse; }
+ table.entete {
+ margin: 0;
+ border-style: none;
+ border-width: 0px;
+ border-color: black;
+ width: 100%;
+ font-size: 14px;
+ }
+ anomalie { background-color: #FFFF66; }
+ tr { margin: 0; }
+ td {
+ margin: 0;
+ border-style: inset;
+ border-width: 1px;
+ border-color: black;
+ vertical-align: top;
+ line-height: 13px;
+ }
+ td.head1 {
+ width: 16cm;
+ border-style: none;
+ }
+ td.head2 {
+ width: 5cm;
+ text-align: center;
+ border-style: none;
+ }
+ td.colonne1 {
+ width: 6cm;
+ border-style: none;
+ }
+ td.colonne2 {
+ width: 15cm;
+ text-align: center;
+ border-style: none;
+ }
+ td.colonne3 {
+ width: 3.5cm;
+ border-style: none;
+ }
+ td.colonne4 {
+ width: 3cm;
+ border-style: none;
+ }
+ table.enteteTablePrincipale {
+ font-size: 10px;
+ text-align: center;
+ width: 100%;
+ }
+ table.inner {
+ font-size: 10px;
+ text-align: left;
+ width: 100%;
+ }
+ td.principaleCol1 {
+ width: 6.5cm;
+ }
+ td.principaleCol2 {
+ width: 2cm;
+ }
+ td.principaleCol3 {
+ width: 6.5cm;
+ }
+ td.principaleCol4 {
+ width: 1.7cm;
+ }
+ td.principaleCol5 {
+ width: 1.7cm;
+ }
+ td.principaleCol6 {
+ width: 1.6cm;
+ }
+ td.principaleCol7 {
+ width: 2.5cm;
+ }
+ td.principaleCol8 {
+ width: 2.5cm;
+ }
+ td.principaleCol9 {
+ width: 2.5cm;
+ }
+ table.totaux {
+ width: 100%;
+ font-size: 10px;
+ border-style: none;
+ }
+ td.sansBordure {
+ border-style: none;
+ }
+ td.mandatCol1 {
+ width: 5.5cm;
+ border-style: none none solid solid;
+ }
+ td.mandatCol2 {
+ width: 1cm;
+ border-style: none none solid solid;
+ }
+ td.mandatCol3 {
+ width: 4cm;
+ border-style: none none solid solid;
+ }
+ td.mandatCol3a {
+ width: 2cm;
+ text-align: left;
+ border-style: none none solid solid;
+ }
+ td.mandatCol3b {
+ width: 2cm;
+ text-align: right;
+ border-style: none none solid none;
+ }
+ td.mandatCol4 {
+ width: 6cm;
+ border-style: none none solid solid;
+ }
+ td.mandatCol4a {
+ width: 4cm;
+ text-align: left;
+ border-style: none none solid solid;
+ }
+ td.mandatCol4b {
+ width: 2cm;
+ text-align: right;
+ border-left-style: none;
+ border-style: none none solid none;
+ }
+ td.mandatCol5 {
+ width: 1.5cm;
+ border-style: none none solid solid;
+ }
+ td.mandatCol6 {
+ width: 1.5cm;
+ border-style: none none solid solid;
+ }
+ td.mandatCol7 {
+ width: 1.5cm;
+ border-style: none none solid solid;
+ }
+ td.mandatCol8 {
+ width: 6.5cm;
+ border-style: none solid solid solid;
+ }
+ td.mandatCol8a {
+ width: 4cm;
+ text-align: left;
+ border-style: none none solid solid;
+ }
+ td.mandatCol8b {
+ width: 2.5cm;
+ text-align: right;
+ border-style: none solid solid none;
+ }
+ table.footer {
+ margin: 0;
+ border-style: none;
+ width: 100%;
+ font-size: 12px;
+ }
+ td.totalLibelle {
+ width: 6cm;
+ }
+ td.totalValeur {
+ width: 2cm;
+ text-align: right;
+ }
+ td.noborder {
+ border-style: none;
+ }
+ td.right {
+ text-align: right;
+ }
+ noupper { border-top-style: none; }
+ :link { color: #00c; background: transparent }
+ :visited { color: #609; background: transparent }
+ a:active { color: #c00; background: transparent }
+ a:link img, a:visited img { border-style: none }
+ .gras { font-weight: bold; }
+ .pj { font-size: 10px; font-weight: normal; }
+ li.pj { list-style-type: none; margin-left: -20px; }
+ </style>
+ <title>Etat de PES Aller</title>
+ </head>
+ <body>
+ <table class="entete" cellspacing="0">
+ <tr>
+ <td class="head1">
+ <xsl:value-of select="./n:EnTetePES/n:IdPost/@V"/> <xsl:value-of select="./n:EnTetePES/n:LibellePoste/@V"/>
+ </td>
+ </tr>
+ </table>
+ <p><a href="xemelios:/query?docId=pes-aller&etatId=analyse-flux">Résumé du flux</a></p>
+ <xsl:apply-templates/>
+ </body>
+ </html>
+ </xsl:template>
+
+ <xsl:template match="//n:PES_DepenseAller">
+ <h2>Domaine Dépense</h2>
+ <p>
+ <li>
+ <xsl:for-each select="n:Bordereau">
+ <xsl:call-template name="BordereauDepense">
+ <xsl:with-param name="bId" select="."/>
+ </xsl:call-template>
+ </xsl:for-each>
+ </li>
+ </p>
+ </xsl:template>
+ <xsl:template name="BordereauDepense">
+ <xsl:param name="bId"/>
+ <ul>
+ <xsl:variable name="bUri">xemelios:/query?docId=pes-aller&etatId=PES_DepenseAller&elementId=BordereauDepense&path=[@added:primary-key='<xsl:value-of select="$bId/@added:primary-key"/>']&xsl:param=(elementId,Bordereau)</xsl:variable>
+ <xsl:element name="a">
+ <xsl:attribute name="href" select="$bUri"/>
+ Bordereau <xsl:value-of select="$bId/n:BlocBordereau/n:IdBord/@V"/>
+ </xsl:element>
+ </ul>
+ </xsl:template>
+
+ <xsl:template match="//n:PES_RecetteAller">
+ <h2>Domaine Recette</h2>
+ <p>
+ <li>
+ <xsl:for-each select="n:Bordereau">
+ <xsl:call-template name="BordereauRecette">
+ <xsl:with-param name="bId" select="."/>
+ </xsl:call-template>
+ </xsl:for-each>
+ </li>
+ </p>
+ </xsl:template>
+ <xsl:template name="BordereauRecette">
+ <xsl:param name="bId"/>
+ <ul>
+ <xsl:variable name="bUri">xemelios:/query?docId=pes-aller&etatId=PES_RecetteAller&elementId=BordereauRecette&path=[@added:primary-key='<xsl:value-of select="$bId/@added:primary-key"/>']&xsl:param=(elementId,Bordereau)</xsl:variable>
+ <xsl:element name="a">
+ <xsl:attribute name="href" select="$bUri"/>
+ Bordereau <xsl:value-of select="$bId/n:BlocBordereau/n:IdBord/@V"/>
+ </xsl:element>
+ </ul>
+ </xsl:template>
+</xsl:stylesheet>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xs" version="2.0">
+ <xsl:output method="text" indent="yes"/>
+
+ <xsl:template match="document">
+ Paramètres
+ id;nom;type;obligatoire;valeurs
+ <xsl:for-each select="param"><xsl:call-template name="param"><xsl:with-param name="param" select="."/></xsl:call-template></xsl:for-each>
+
+ Contrôles Techniques
+ id;libelle;severity;
+ <xsl:for-each select="controlTech"><xsl:call-template name="control.tech"><xsl:with-param name="control.tech" select="."/></xsl:call-template></xsl:for-each>
+
+ Contrôles Métiers
+ id;libelle;severity;règle;message échec;
+ <xsl:for-each select="control"><xsl:call-template name="control"><xsl:with-param name="control" select="."/></xsl:call-template></xsl:for-each>
+ </xsl:template>
+
+ <xsl:template name="param">
+ <xsl:param name="param"/>
+ <xsl:choose>
+ <xsl:when test="$param/select"><xsl:value-of select="$param/@id"/>;<xsl:value-of select="$param/@name"/>;<xsl:value-of select="$param/@datatype"/>;<xsl:value-of select="exists($param[@use='required'])"/>;<xsl:value-of select="$param/select/option/@value" separator=","/>;
+ </xsl:when>
+ <xsl:otherwise><xsl:value-of select="$param/@id"/>;<xsl:value-of select="$param/@name"/>;<xsl:value-of select="$param/@datatype"/>;<xsl:value-of select="exists($param[@use='required'])"/>;;
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template name="control.tech">
+ <xsl:param name="control.tech"/>
+ <xsl:value-of select="$control.tech/@id"/>;<xsl:value-of select="$control.tech/@libelle"/>;<xsl:value-of select="$control.tech/@severity"/>;
+ </xsl:template>
+
+ <xsl:template name="control">
+ <xsl:param name="control"/>
+ <xsl:value-of select="$control/@id"/>;<xsl:value-of select="$control/@libelle"/>;<xsl:value-of select="$control/@severity"/>;<xsl:value-of select="$control/regle-fonctionnelle/text()"/>;<xsl:value-of select="$control/message-echec/text()"/>;
+ </xsl:template>
+</xsl:stylesheet>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE xsl:stylesheet [
+<!ENTITY nbsp " ">
+]><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:n="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/aller"
+ xmlns:added="http://projets.admisource.gouv.fr/xemelios/namespaces#added"
+ xmlns:ano="http://projets.admisource.gouv.fr/xemelios/namespaces#anomally"
+ xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
+ xmlns:xad="http://uri.etsi.org/01903/v1.1.1#"
+ xmlns:data="data.uri"
+ xmlns:xem="http://xemelios.org/extensions/xml/functions"
+ version="2.0">
+ <xsl:param name="elementId"/> <!-- 'Bordereau' pour afficher le bordereau, vide sinon -->
+ <xsl:param name="primaryKey" /> <!-- utilise dans le cas d'un document multi-bordereau -->
+ <xsl:param name="mandatId"/> <!-- dans le cas de l'affichage d'un mandat, l'id du mandat (./n:PES_DepenseAller/n:Bordereau/n:Piece/n:BlocPiece/n:InfoPce/n:IdPce/@V ) -->
+ <xsl:param name="browser-destination" />
+ <xsl:param name="anoId"/> <!-- id de l'anomalie a mettre en surbrillance -->
+ <xsl:output encoding="ISO-8859-1" method="xhtml" exclude-result-prefixes="n added ano data" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" include-content-type="no" indent="yes"/>
+ <xsl:decimal-format name="decformat"
+ decimal-separator=","
+ grouping-separator=" "
+ digit="#"
+ pattern-separator=";"
+ NaN="NaN"
+ minus-sign="-"/>
+ <xsl:variable name="tags-ano">
+ <xsl:for-each select="//ano:Anomalie[@ano:anoId = $anoId]/ano:node">
+ <xsl:element name="node">
+ <xsl:attribute name="id" select="./@ano:id"/>
+ </xsl:element>
+ </xsl:for-each>
+ </xsl:variable>
+ <xsl:variable name="bordereau" select="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau[(string-length($primaryKey) > 1 and @added:primary-key=$primaryKey) or (string-length($primaryKey) = 0 and position()=1) ][1]"></xsl:variable>
+ <xsl:variable name="PES" select="/PES-aller"/>
+ <!-- Donnees pour les equivalences des codes -->
+ <xsl:variable name="data">
+ <data:data>
+ <data:typeBordereau>
+ <data:t type="01">Ordinaire</data:t>
+ <data:t type="02">Annulation/réduction</data:t>
+ <data:t type="03">Ordres de paiement</data:t>
+ <data:t type="04">Bordereau de régularisation</data:t>
+ </data:typeBordereau>
+ <data:typePiece>
+ <data:t type="01">Mandat ordinaire</data:t>
+ <data:t type="02">Mandat correctif</data:t>
+ <data:t type="03">Mandat d'ordre budgétaire</data:t>
+ <data:t type="04">Mandat d'ordre mixte</data:t>
+ <data:t type="05">Mandat émis après paiement</data:t>
+ <data:t type="06">Mandat global</data:t>
+ <data:t type="07">Mandat d'admission en non valeurs</data:t>
+ <data:t type="08">Mandat collectif</data:t>
+ <data:t type="09">Mandat sur marché</data:t>
+ <data:t type="10">Mandat de rattachement</data:t>
+ <data:t type="11">Ordre de paiement</data:t>
+ <data:t type="12">Demande émission mandat</data:t>
+ <data:t type="13">Charges constatées d'avance</data:t>
+ </data:typePiece>
+ <data:naturePiece>
+ <data:n type="01">Fonctionnement</data:n>
+ <data:n type="02">Investissement</data:n>
+ <data:n type="03">Inventaire</data:n>
+ <data:n type="04">Emprunt</data:n>
+ <data:n type="O5">Régie</data:n>
+ <data:n type="06">Annulation-Réduction</data:n>
+ <data:n type="07">Complémentaire</data:n>
+ <data:n type="08">Réémis</data:n>
+ <data:n type="09">Annulant un titre</data:n>
+ <data:n type="10">Annulation du mandat de rattachement</data:n>
+ <data:n type="11">Paie</data:n>
+ <data:n type="12">Retenue de garantie</data:n>
+ <data:n type="13">Dernier acompte sur marché</data:n>
+ <data:n type="14">Avance forfaitaire</data:n>
+ <data:n type="15">Autres</data:n>
+ <data:n type="18">Cession</data:n>
+ </data:naturePiece>
+ <data:typePieceOrigine>
+ <data:t type="01">Mandat</data:t>
+ <data:t type="02">Titre</data:t>
+ <data:t type="03">Paiement</data:t>
+ <data:t type="04">Liste non valeur</data:t>
+ </data:typePieceOrigine>
+ <data:typeTiersNational>
+ <data:t type="01">Siret</data:t>
+ <data:t type="02">Siren</data:t>
+ <data:t type="03">Finess</data:t>
+ <data:t type="04">Nir</data:t>
+ </data:typeTiersNational>
+ <data:categorieTiers>
+ <data:c V="01">Personnes physiques</data:c>
+ <data:c V="20">état et établissements publics nationaux</data:c>
+ <data:c V="21">Régions</data:c>
+ <data:c V="22">Départements</data:c>
+ <data:c V="23">Communes</data:c>
+ <data:c V="24">Groupements de collectivités</data:c>
+ <data:c V="25">Caisses des écoles</data:c>
+ <data:c V="26">CCAS</data:c>
+ <data:c V="27">Etablissements publics de santé</data:c>
+ <data:c V="28">Ecole nationale de la santé publique</data:c>
+ <data:c V="29">Autres établissements publics et organismes internationaux</data:c>
+ <data:c V="50">Personnes morales de droit privé autres qu'organismes sociaux</data:c>
+ <data:c V="60">Caisses de sécurité sociale régime général</data:c>
+ <data:c V="61">Caisses de sécurité sociale régime agricole</data:c>
+ <data:c V="62">Sécurité sociale des travailleurs non salariés et professions non agricoles</data:c>
+ <data:c V="63">Autres régimes obligatoires de sécurité sociale</data:c>
+ <data:c V="64">Mutuelles et organismes d'assurance</data:c>
+ <data:c V="65">Divers autres tiers payants</data:c>
+ <data:c V="70">CNRACL</data:c>
+ <data:c V="71">IRCANTEC</data:c>
+ <data:c V="72">ASSEDIC</data:c>
+ <data:c V="73">Caisses mutualistes de retraite complémentaires</data:c>
+ <data:c V="74">Autres organismes sociaux</data:c>
+ </data:categorieTiers>
+ <data:natureJuridiqueTiers>
+ <data:t V="00">Inconnue</data:t>
+ <data:t V="01">Particuliers</data:t>
+ <data:t V="02">Artisan / Commerçant / Agriculteur</data:t>
+ <data:t V="03">Société</data:t>
+ <data:t V="04">CAM ou caisse appliquant les mêmes règles</data:t>
+ <data:t V="05">Caisse complémentaire</data:t>
+ <data:t V="06">Association</data:t>
+ <data:t V="07">Etat ou organisme d'Etat</data:t>
+ <data:t V="08">Etablissement public national</data:t>
+ <data:t V="09">Collectivité territoriale / EPL / EPS</data:t>
+ <data:t V="10">Etat étranger / ambassade</data:t>
+ <data:t V="11">CAF</data:t>
+ </data:natureJuridiqueTiers>
+ <data:codePaysINSEE>
+ <data:p V="99125">ALBANIE</data:p>
+ <data:p V="99109">ALLEMAGNE</data:p>
+ <data:p V="99130">ANDORRE</data:p>
+ <data:p V="99110">AUTRICHE</data:p>
+ <data:p V="99131">BELGIQUE</data:p>
+ <data:p V="99148">BIELORUSSIE</data:p>
+ <data:p V="99118">BOSNIE-HERZEGOVINE</data:p>
+ <data:p V="99103">BOUVET (ILE)</data:p>
+ <data:p V="99111">BULGARIE</data:p>
+ <data:p V="99119">CROATIE</data:p>
+ <data:p V="99101">DANEMARK</data:p>
+ <data:p V="99134">ESPAGNE</data:p>
+ <data:p V="99106">ESTONIE</data:p>
+ <data:p V="99156">EX-REPUBLIQUE YOUGOSLAVE DE MACEDOINE</data:p>
+ <data:p V="99101">FEROE (ILES)</data:p>
+ <data:p V="99105">FINLANDE</data:p>
+ <data:p V="99133">GIBRALTAR</data:p>
+ <data:p V="99126">GRECE</data:p>
+ <data:p V="99112">HONGRIE</data:p>
+ <data:p V="99136">IRLANDE, ou EIRE</data:p>
+ <data:p V="99102">ISLANDE</data:p>
+ <data:p V="99127">ITALIE</data:p>
+ <data:p V="99107">LETTONIE</data:p>
+ <data:p V="99113">LIECHTENSTEIN</data:p>
+ <data:p V="99108">LITUANIE</data:p>
+ <data:p V="99137">LUXEMBOURG</data:p>
+ <data:p V="99144">MALTE</data:p>
+ <data:p V="99151">MOLDAVIE</data:p>
+ <data:p V="99138">MONACO</data:p>
+ <data:p V="99120">MONTENEGRO</data:p>
+ <data:p V="99103">NORVEGE</data:p>
+ <data:p V="99135">PAYS-BAS</data:p>
+ <data:p V="99122">POLOGNE</data:p>
+ <data:p V="99139">PORTUGAL</data:p>
+ <data:p V="99141">REPUBLIQUE DEMOCRATIQUE ALLEMANDE</data:p>
+ <data:p V="99142">REPUBLIQUE FEDERALE D'ALLEMAGNE</data:p>
+ <data:p V="99114">ROUMANIE</data:p>
+ <data:p V="99132">ROYAUME-UNI</data:p>
+ <data:p V="99123">RUSSIE</data:p>
+ <data:p V="99128">SAINT-MARIN</data:p>
+ <data:p V="99121">SERBIE-ET-MONTENEGRO</data:p>
+ <data:p V="99117">SLOVAQUIE</data:p>
+ <data:p V="99145">SLOVENIE</data:p>
+ <data:p V="99104">SUEDE</data:p>
+ <data:p V="99140">SUISSE</data:p>
+ <data:p V="99103">SVALBARD et ILE JAN MAYEN</data:p>
+ <data:p V="99115">TCHECOSLOVAQUIE</data:p>
+ <data:p V="99116">TCHEQUE (REPUBLIQUE)</data:p>
+ <data:p V="99124">TURQUIE D'EUROPE</data:p>
+ <data:p V="99155">UKRAINE</data:p>
+ <data:p V="99129">VATICAN, ou SAINT-SIEGE</data:p>
+ <data:p V="99212">AFGHANISTAN</data:p>
+ <data:p V="99201">ARABIE SAOUDITE</data:p>
+ <data:p V="99252">ARMENIE</data:p>
+ <data:p V="99253">AZERBAIDJAN</data:p>
+ <data:p V="99249">BAHREIN</data:p>
+ <data:p V="99246">BANGLADESH</data:p>
+ <data:p V="99214">BHOUTAN</data:p>
+ <data:p V="99224">BIRMANIE</data:p>
+ <data:p V="99225">BRUNEI</data:p>
+ <data:p V="99234">CAMBODGE</data:p>
+ <data:p V="99216">CHINE</data:p>
+ <data:p V="99254">CHYPRE</data:p>
+ <data:p V="99237">COREE</data:p>
+ <data:p V="99239">COREE (REPUBLIQUE DE)</data:p>
+ <data:p V="99238">COREE (REPUBLIQUE POPULAIRE DEMOCRATIQUE DE)</data:p>
+ <data:p V="99247">EMIRATS ARABES UNIS</data:p>
+ <data:p V="99228">ETATS MALAIS NON FEDERES</data:p>
+ <data:p V="99255">GEORGIE</data:p>
+ <data:p V="99223">GOA</data:p>
+ <data:p V="99230">HONG-KONG</data:p>
+ <data:p V="99223">INDE</data:p>
+ <data:p V="99231">INDONESIE</data:p>
+ <data:p V="99204">IRAN</data:p>
+ <data:p V="99203">IRAQ</data:p>
+ <data:p V="99207">ISRAEL</data:p>
+ <data:p V="99217">JAPON</data:p>
+ <data:p V="99222">JORDANIE</data:p>
+ <data:p V="99211">KAMTCHATKA</data:p>
+ <data:p V="99256">KAZAKHSTAN</data:p>
+ <data:p V="99257">KIRGHIZISTAN</data:p>
+ <data:p V="99240">KOWEIT</data:p>
+ <data:p V="99241">LAOS</data:p>
+ <data:p V="99205">LIBAN</data:p>
+ <data:p V="99232">MACAO</data:p>
+ <data:p V="99227">MALAISIE</data:p>
+ <data:p V="99229">MALDIVES</data:p>
+ <data:p V="99218">MANDCHOURIE</data:p>
+ <data:p V="99242">MONGOLIE</data:p>
+ <data:p V="99215">NEPAL</data:p>
+ <data:p V="99250">OMAN</data:p>
+ <data:p V="99258">OUZBEKISTAN</data:p>
+ <data:p V="99213">PAKISTAN</data:p>
+ <data:p V="99261">PALESTINE</data:p>
+ <data:p V="99220">PHILIPPINES</data:p>
+ <data:p V="99221">POSSESSIONS BRITANNIQUES AU PROCHE-ORIENT</data:p>
+ <data:p V="99248">QATAR</data:p>
+ <data:p V="99209">SIBERIE</data:p>
+ <data:p V="99226">SINGAPOUR</data:p>
+ <data:p V="99235">SRI LANKA</data:p>
+ <data:p V="99206">SYRIE</data:p>
+ <data:p V="99259">TADJIKISTAN</data:p>
+ <data:p V="99236">TAIWAN</data:p>
+ <data:p V="99219">THAILANDE</data:p>
+ <data:p V="99262">TIMOR ORIENTAL</data:p>
+ <data:p V="99210">TURKESTAN RUSSE</data:p>
+ <data:p V="99260">TURKMENISTAN</data:p>
+ <data:p V="99208">TURQUIE</data:p>
+ <data:p V="99243">VIET NAM</data:p>
+ <data:p V="99244">VIET NAM DU NORD</data:p>
+ <data:p V="99245">VIET NAM DU SUD</data:p>
+ <data:p V="99251">YEMEN</data:p>
+ <data:p V="99233">YEMEN DEMOCRATIQUE</data:p>
+ <data:p V="99202">YEMEN (REPUBLIQUE ARABE DU)</data:p>
+ <data:p V="99319">ACORES, MADERE</data:p>
+ <data:p V="99303">AFRIQUE DU SUD</data:p>
+ <data:p V="99352">ALGERIE</data:p>
+ <data:p V="99395">ANGOLA</data:p>
+ <data:p V="99327">BENIN</data:p>
+ <data:p V="99347">BOTSWANA</data:p>
+ <data:p V="99331">BURKINA</data:p>
+ <data:p V="99321">BURUNDI</data:p>
+ <data:p V="99322">CAMEROUN</data:p>
+ <data:p V="99305">CAMEROUN ET TOGO</data:p>
+ <data:p V="99313">CANARIES (ILES)</data:p>
+ <data:p V="99396">CAP-VERT</data:p>
+ <data:p V="99323">CENTRAFRICAINE (REPUBLIQUE)</data:p>
+ <data:p V="99397">COMORES</data:p>
+ <data:p V="99324">CONGO</data:p>
+ <data:p V="99312">CONGO (REPUBLIQUE DEMOCRATIQUE)</data:p>
+ <data:p V="99326">COTE D'IVOIRE</data:p>
+ <data:p V="99399">DJIBOUTI</data:p>
+ <data:p V="99301">EGYPTE</data:p>
+ <data:p V="99317">ERYTHREE</data:p>
+ <data:p V="99315">ETHIOPIE</data:p>
+ <data:p V="99328">GABON</data:p>
+ <data:p V="99304">GAMBIE</data:p>
+ <data:p V="99329">GHANA</data:p>
+ <data:p V="99330">GUINEE</data:p>
+ <data:p V="99314">GUINEE EQUATORIALE</data:p>
+ <data:p V="99392">GUINEE-BISSAU</data:p>
+ <data:p V="99320">ILES PORTUGAISES DE L'OCEAN INDIEN</data:p>
+ <data:p V="99332">KENYA</data:p>
+ <data:p V="99348">LESOTHO</data:p>
+ <data:p V="99302">LIBERIA</data:p>
+ <data:p V="99316">LIBYE</data:p>
+ <data:p V="99333">MADAGASCAR</data:p>
+ <data:p V="99334">MALAWI</data:p>
+ <data:p V="99335">MALI</data:p>
+ <data:p V="99350">MAROC</data:p>
+ <data:p V="99390">MAURICE</data:p>
+ <data:p V="99336">MAURITANIE</data:p>
+ <data:p V="99393">MOZAMBIQUE</data:p>
+ <data:p V="99311">NAMIBIE</data:p>
+ <data:p V="99337">NIGER</data:p>
+ <data:p V="99338">NIGERIA</data:p>
+ <data:p V="99308">OCEAN INDIEN (TERRITOIRE BRITANNIQUE DE L')</data:p>
+ <data:p V="99339">OUGANDA</data:p>
+ <data:p V="99313">PRESIDES</data:p>
+ <data:p V="99313">PROVINCES ESPAGNOLES D'AFRIQUE</data:p>
+ <data:p V="99340">RWANDA</data:p>
+ <data:p V="99389">SAHARA OCCIDENTAL</data:p>
+ <data:p V="99306">SAINTE-HELENE</data:p>
+ <data:p V="99394">SAO TOME-ET-PRINCIPE</data:p>
+ <data:p V="99341">SENEGAL</data:p>
+ <data:p V="99398">SEYCHELLES</data:p>
+ <data:p V="99342">SIERRA LEONE</data:p>
+ <data:p V="99318">SOMALIE</data:p>
+ <data:p V="99343">SOUDAN</data:p>
+ <data:p V="99307">SOUDAN ANGLO-EGYPTIEN, KENYA, OUGANDA</data:p>
+ <data:p V="99391">SWAZILAND</data:p>
+ <data:p V="99325">TANGER</data:p>
+ <data:p V="99309">TANZANIE</data:p>
+ <data:p V="99344">TCHAD</data:p>
+ <data:p V="99345">TOGO</data:p>
+ <data:p V="99351">TUNISIE</data:p>
+ <data:p V="99346">ZAMBIE</data:p>
+ <data:p V="99308">ZANZIBAR</data:p>
+ <data:p V="99310">ZIMBABWE</data:p>
+ <data:p V="99404">ALASKA</data:p>
+ <data:p V="99425">ANGUILLA</data:p>
+ <data:p V="99441">ANTIGUA-ET-BARBUDA</data:p>
+ <data:p V="99431">ANTILLES NEERLANDAISES</data:p>
+ <data:p V="99415">ARGENTINE</data:p>
+ <data:p V="99431">ARUBA</data:p>
+ <data:p V="99436">BAHAMAS</data:p>
+ <data:p V="99434">BARBADE</data:p>
+ <data:p V="99429">BELIZE</data:p>
+ <data:p V="99425">BERMUDES</data:p>
+ <data:p V="99418">BOLIVIE</data:p>
+ <data:p V="99416">BRESIL</data:p>
+ <data:p V="99425">CAIMAN (ILES)</data:p>
+ <data:p V="99401">CANADA</data:p>
+ <data:p V="99417">CHILI</data:p>
+ <data:p V="99419">COLOMBIE</data:p>
+ <data:p V="99406">COSTA RICA</data:p>
+ <data:p V="99407">CUBA</data:p>
+ <data:p V="99408">DOMINICAINE (REPUBLIQUE)</data:p>
+ <data:p V="99438">DOMINIQUE</data:p>
+ <data:p V="99414">EL SALVADOR</data:p>
+ <data:p V="99420">EQUATEUR</data:p>
+ <data:p V="99404">ETATS-UNIS</data:p>
+ <data:p V="99427">GEORGIE DU SUD ET LES ILES SANDWICH DU SUD</data:p>
+ <data:p V="99435">GRENADE</data:p>
+ <data:p V="99430">GROENLAND</data:p>
+ <data:p V="99409">GUATEMALA</data:p>
+ <data:p V="99428">GUYANA</data:p>
+ <data:p V="99410">HAITI</data:p>
+ <data:p V="99411">HONDURAS</data:p>
+ <data:p V="99426">JAMAIQUE</data:p>
+ <data:p V="99403">LABRADOR</data:p>
+ <data:p V="99427">MALOUINES, OU FALKLAND (ILES)</data:p>
+ <data:p V="99405">MEXIQUE</data:p>
+ <data:p V="99425">MONTSERRAT</data:p>
+ <data:p V="99412">NICARAGUA</data:p>
+ <data:p V="99413">PANAMA</data:p>
+ <data:p V="99421">PARAGUAY</data:p>
+ <data:p V="99422">PEROU</data:p>
+ <data:p V="99432">PORTO RICO</data:p>
+ <data:p V="99442">SAINT-CHRISTOPHE-ET-NIEVES</data:p>
+ <data:p V="99439">SAINTE-LUCIE</data:p>
+ <data:p V="99440">SAINT-VINCENT-ET-LES GRENADINES</data:p>
+ <data:p V="99437">SURINAME</data:p>
+ <data:p V="99432">TERR. DES ETATS-UNIS D'AMERIQUE EN AMERIQUE</data:p>
+ <data:p V="99427">TERR. DU ROYAUME-UNI DANS L'ATLANTIQUE SUD</data:p>
+ <data:p V="99402">TERRE-NEUVE</data:p>
+ <data:p V="99431">TERRITOIRE DES PAYS-BAS</data:p>
+ <data:p V="99425">TERRITOIRES DU ROYAUME-UNI AUX ANTILLES</data:p>
+ <data:p V="99433">TRINITE-ET-TOBAGO</data:p>
+ <data:p V="99425">TURKS ET CAIQUES (ILES)</data:p>
+ <data:p V="99423">URUGUAY</data:p>
+ <data:p V="99424">VENEZUELA</data:p>
+ <data:p V="99425">VIERGES BRITANNIQUES (ILES)</data:p>
+ <data:p V="99432">VIERGES DES ETATS-UNIS (ILES)</data:p>
+ <data:p V="99501">AUSTRALIE</data:p>
+ <data:p V="99501">CHRISTMAS (ILE)</data:p>
+ <data:p V="99501">COCOS ou KEELING (ILES)</data:p>
+ <data:p V="99502">COOK (ILES)</data:p>
+ <data:p V="99508">FIDJI</data:p>
+ <data:p V="99505">GUAM</data:p>
+ <data:p V="99504">HAWAII (ILES)</data:p>
+ <data:p V="99501">HEARD ET MACDONALD (ILES)</data:p>
+ <data:p V="99513">KIRIBATI</data:p>
+ <data:p V="99505">MARIANNES DU NORD (ILES)</data:p>
+ <data:p V="99515">MARSHALL (ILES)</data:p>
+ <data:p V="99516">MICRONESIE (ETATS FEDERES DE)</data:p>
+ <data:p V="99507">NAURU</data:p>
+ <data:p V="99502">NIUE</data:p>
+ <data:p V="99501">NORFOLK (ILE)</data:p>
+ <data:p V="99502">NOUVELLE-ZELANDE</data:p>
+ <data:p V="99517">PALAOS (ILES)</data:p>
+ <data:p V="99510">PAPOUASIE-NOUVELLE-GUINEE</data:p>
+ <data:p V="99503">PITCAIRN (ILE)</data:p>
+ <data:p V="99512">SALOMON (ILES)</data:p>
+ <data:p V="99505">SAMOA AMERICAINES</data:p>
+ <data:p V="99506">SAMOA OCCIDENTALES</data:p>
+ <data:p V="99505">TERR. DES ETATS-UNIS D'AMERIQUE EN OCEANIE</data:p>
+ <data:p V="99502">TOKELAU</data:p>
+ <data:p V="99509">TONGA</data:p>
+ <data:p V="99511">TUVALU</data:p>
+ <data:p V="99514">VANUATU</data:p>
+ </data:codePaysINSEE>
+ <data:typeAdresse>
+ <data:a V="0"></data:a>
+ <data:a V="1">principal</data:a>
+ <data:a V="2">secondaire</data:a>
+ </data:typeAdresse>
+ <data:moyenPaiement>
+ <data:m type="01">Numéraire</data:m>
+ <data:m type="02">Chèque</data:m>
+ <data:m type="03">Virement</data:m>
+ <data:m type="04">Virement appli externe</data:m>
+ <data:m type="05">Virement gros montant</data:m>
+ <data:m type="06">Virement à l'étranger</data:m>
+ <data:m type="07">Opération budget rattaché</data:m>
+ <data:m type="08">Opération d'ordre</data:m>
+ <data:m type="09">Autres</data:m>
+ <data:m type="10">Prélèvement</data:m>
+ <data:m type="11">Virement interne</data:m>
+ </data:moyenPaiement>
+ </data:data>
+ </xsl:variable>
+
+ <!-- template pour convertir le code du Type de bordereau en libellé -->
+ <xsl:template name="typeBordereauLibelle">
+ <xsl:param name="typeBord"/>
+ <xsl:value-of select="$data/data:data/data:typeBordereau/data:t[@type=$typeBord]/text()"/>
+ </xsl:template>
+ <!-- pour convertir le code du Type de pièce en libellé -->
+ <xsl:template name="typePieceLibelle">
+ <xsl:param name="typePiece"/>
+ <xsl:value-of select="$data/data:data/data:typePiece/data:t[@type=$typePiece]/text()"/>
+ </xsl:template>
+ <!-- pour convertir le code de la nature de pièce en libellé -->
+ <xsl:template name="naturePieceLibelle">
+ <xsl:param name="naturePiece"/>
+ <xsl:value-of select="$data/data:data/data:naturePiece/data:n[@type=$naturePiece]/text()"/>
+ </xsl:template>
+ <!-- pour convertir le type de pièce d'origine en libellé -->
+ <xsl:template name="typePieceOrigine">
+ <xsl:param name="typePiece"/>
+ <xsl:value-of select="$data/data:data/data:typePieceOrigine/data:t[@type=$typePiece]/text()"/>
+ </xsl:template>
+ <!-- pour le type d'identifiant du tiers au niveau national -->
+ <xsl:template name="typeTiersNational">
+ <xsl:param name="typeTiers"/>
+ <xsl:value-of select="$data/data:data/data:typeTiersNational/data:t[@type=$typeTiers]/text()"/>
+ </xsl:template>
+ <!-- catégorie du tiers -->
+ <xsl:template name="categorieTiers">
+ <xsl:param name="catTiers"/>
+ <xsl:value-of select="$data/data:data/data:categorieTiers/data:c[@V=$catTiers]/text()"/>
+ </xsl:template>
+ <!-- Nature juridique du tiers -->
+ <xsl:template name="natureJuridiqueTiers">
+ <xsl:param name="natJur"/>
+ <xsl:value-of select="$data/data:data/data:natureJuridiqueTiers/data:t[@V=$natJur]/text()"/>
+ </xsl:template>
+ <!-- Correspondance entre le code de pays INSEE et son nom -->
+ <xsl:template name="codePaysINSEE" xmlns:data="data.uri">
+ <xsl:param name="codePays"/>
+ <xsl:value-of select="$data/data:data/data:codePaysINSEE/data:p[@V=$codePays]/text()"/>
+ </xsl:template>
+ <!-- Type d'adresse -->
+ <xsl:template name="typeAdresse">
+ <xsl:param name="codeType"/>
+ <xsl:value-of select="/data:data/data:typeAdresse/data:a[@V=$codeType]/text()"/>
+ </xsl:template>
+ <!-- pour le moyen de paiement -->
+ <xsl:template name="moyenPaiement">
+ <xsl:param name="typeMoyen"/>
+ <xsl:value-of select="$data/data:data/data:moyenPaiement/data:m[@type=$typeMoyen]/text()"/>
+ </xsl:template>
+
+ <xsl:template name="slash-date">
+ <xsl:param name="datebrute"/>
+ <date xmlns:data="data.uri" xsl:exclude-result-prefixes="data">
+ <xsl:value-of select="substring($datebrute, 9, 2)"/>
+ <xsl:text>/</xsl:text>
+ <xsl:value-of select="substring($datebrute, 6, 2)"/>
+ <xsl:text>/</xsl:text>
+ <xsl:value-of select="substring($datebrute, 1, 4)"/>
+ </date>
+ </xsl:template>
+ <xsl:template name="number">
+ <xsl:param name="num"/>
+ <!--span style="background-color: #FF6666;">(<xsl:value-of select="$num"/>)</span-->
+ <xsl:choose>
+ <xsl:when test="count($num) > 1"><span style="background-color: #FF6666;"><xsl:value-of select="$num"/></span></xsl:when>
+ <xsl:when test="string-length(string($num)) = 0"/>
+ <xsl:when test="number($num) = 0">0,00</xsl:when>
+ <xsl:when test="string(number($num)) = 'NaN'"/>
+ <xsl:otherwise>
+ <xsl:value-of select="format-number($num,'# ###,00;-# ###,00','decformat')"/><!-- ,'decformat' -->
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <!-- début du document -->
+ <xsl:template match="/n:PES_Aller">
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <head>
+ <style type="text/css" media="all">
+ @page {
+ size: 29.7cm 21cm;
+ margin: 0.5 0.5 0.5 0.5;
+ }
+ body {
+ width: 26.7cm;
+ font-family: verdana, sans-serif;
+ font-size: 10px;
+ background-color: #FFFFFF;
+ }
+ div.divpage {
+ width: 28.7cm;
+ margin: 0 0 0 0;
+ }
+ table { border-collapse: collapse; }
+ table.entete {
+ margin: 0;
+ border-style: none;
+ border-width: 0px;
+ border-color: black;
+ width: 100%;
+ font-size: 14px;
+ }
+ anomalie { background-color: #FFFF66; }
+ tr { margin: 0; }
+ td {
+ margin: 0;
+ border-style: inset;
+ border-width: 1px;
+ border-color: black;
+ vertical-align: top;
+ line-height: 13px;
+ }
+ td.head1 {
+ width: 16cm;
+ border-style: none;
+ }
+ td.head2 {
+ width: 5cm;
+ text-align: center;
+ border-style: none;
+ }
+ td.colonne1 {
+ width: 6cm;
+ border-style: none;
+ }
+ td.colonne2 {
+ width: 15cm;
+ text-align: center;
+ border-style: none;
+ }
+ td.colonne3 {
+ width: 3.5cm;
+ border-style: none;
+ }
+ td.colonne4 {
+ width: 3cm;
+ border-style: none;
+ }
+ table.enteteTablePrincipale {
+ font-size: 10px;
+ text-align: center;
+ width: 100%;
+ }
+ table.inner {
+ font-size: 10px;
+ text-align: left;
+ width: 100%;
+ }
+ td.principaleCol1 {
+ width: 6.5cm;
+ }
+ td.principaleCol2 {
+ width: 2cm;
+ }
+ td.principaleCol3 {
+ width: 6.5cm;
+ }
+ td.principaleCol4 {
+ width: 1.7cm;
+ }
+ td.principaleCol5 {
+ width: 1.7cm;
+ }
+ td.principaleCol6 {
+ width: 1.6cm;
+ }
+ td.principaleCol7 {
+ width: 2.5cm;
+ }
+ td.principaleCol8 {
+ width: 2.5cm;
+ }
+ td.principaleCol9 {
+ width: 2.5cm;
+ }
+ table.totaux {
+ width: 100%;
+ font-size: 10px;
+ border-style: none;
+ }
+ td.sansBordure {
+ border-style: none;
+ }
+ td.mandatCol1 {
+ width: 5.5cm;
+ border-style: none none solid solid;
+ }
+ td.mandatCol2 {
+ width: 1cm;
+ border-style: none none solid solid;
+ }
+ td.mandatCol3 {
+ width: 4cm;
+ border-style: none none solid solid;
+ }
+ td.mandatCol3a {
+ width: 2cm;
+ text-align: left;
+ border-style: none none solid solid;
+ }
+ td.mandatCol3b {
+ width: 2cm;
+ text-align: right;
+ border-style: none none solid none;
+ }
+ td.mandatCol4 {
+ width: 6cm;
+ border-style: none none solid solid;
+ }
+ td.mandatCol4a {
+ width: 4cm;
+ text-align: left;
+ border-style: none none solid solid;
+ }
+ td.mandatCol4b {
+ width: 2cm;
+ text-align: right;
+ border-left-style: none;
+ border-style: none none solid none;
+ }
+ td.mandatCol5 {
+ width: 1.5cm;
+ border-style: none none solid solid;
+ }
+ td.mandatCol6 {
+ width: 1.5cm;
+ border-style: none none solid solid;
+ }
+ td.mandatCol7 {
+ width: 1.5cm;
+ border-style: none none solid solid;
+ }
+ td.mandatCol8 {
+ width: 6.5cm;
+ border-style: none solid solid solid;
+ }
+ td.mandatCol8a {
+ width: 4cm;
+ text-align: left;
+ border-style: none none solid solid;
+ }
+ td.mandatCol8b {
+ width: 2.5cm;
+ text-align: right;
+ border-style: none solid solid none;
+ }
+ table.footer {
+ margin: 0;
+ border-style: none;
+ width: 100%;
+ font-size: 12px;
+ }
+ td.totalLibelle {
+ width: 6cm;
+ }
+ td.totalValeur {
+ width: 2cm;
+ text-align: right;
+ }
+ td.noborder {
+ border-style: none;
+ }
+ td.right {
+ text-align: right;
+ }
+ noupper { border-top-style: none; }
+ :link { color: #0000EE; background: transparent }
+ :visited { color: #551A8B; background: transparent }
+ a:active { color: #0000EE; background: transparent }
+ a:link img, a:visited img { border-style: none }
+ .gras { font-weight: bold; }
+ .pj { font-size: 10px; font-weight: normal; }
+ li.pj { list-style-type: none; margin-left: -20px; }
+ .rouge { color: red; font-weight: bold; }
+ </style>
+ <title><xsl:choose><xsl:when test="$elementId='Bordereau'">Bordereau</xsl:when><xsl:otherwise>Mandat</xsl:otherwise></xsl:choose> de dépense</title>
+ </head>
+ <body>
+ <!--div>param elementId = <xsl:value-of select="$elementId"/><br />param mandatId = <xsl:value-of select="$mandatId"/><br />param browser-destination = <xsl:value-of select="$browser-destination"/><br />AnoId = <xsl:value-of select="$anoId"></xsl:value-of><br /><tags-ano><xsl:for-each select="$tags-ano/node"><node id="<xsl:value-of select="./@id"/>"/></xsl:for-each></tags-ano><br/>$primarykey=<xsl:value-of select="$primaryKey"/><br/>Bordereau/added:primary-key=<xsl:value-of select="$bordereau/added:primary-key"/></div-->
+ <!--div class="divpage"-->
+ <!--a name="_top">ici haut</a-->
+ <xsl:choose>
+ <xsl:when test="$elementId='Bordereau'">
+ <!-- pour un bordereau -->
+ <!-- table pour l'entête -->
+ <table class="entete" cellspacing="0">
+ <tr>
+ <td class="head1">
+ <xsl:element name="codique">
+ <xsl:variable name="idPostNodeId" select="./n:EnTetePES/n:IdPost/@ano:node-id"/>
+ <xsl:if test="count($tags-ano/node[@id = $idPostNodeId]) > 0"><xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute></xsl:if>
+ <xsl:value-of select="./n:EnTetePES/n:IdPost/@V"/>
+ </xsl:element>
+ <xsl:value-of select="./n:EnTetePES/n:LibellePoste/@V"/>
+ </td>
+ <td class="head2">
+ <!-- img src="xemelios:/resource?helios.png" alt="*logo helios*"/ -->
+ </td>
+ <td class="colonne3">Exercice</td>
+ <xsl:element name="td">
+ <xsl:attribute name="class">colonne4</xsl:attribute>
+ <xsl:variable name="currentNodeId" select="$bordereau/n:BlocBordereau/n:Exer/@ano:node-id"/>
+ <xsl:if test="count($tags-ano/node[@id = $currentNodeId]) > 0">
+ <xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute>
+ </xsl:if>
+ <xsl:value-of select="$bordereau/n:BlocBordereau/n:Exer/@V"/>
+ </xsl:element>
+ </tr>
+ </table>
+ <p><br/></p>
+ <!-- table pour le titre du bordereau -->
+ <table class="entete" cellspacing="0">
+ <tr>
+ <td class="colonne1">
+ <xsl:element name="codeCol">
+ <xsl:variable name="codColNodeId" select="./n:EnTetePES/n:CodCol/@ano:node-id"/>
+ <xsl:if test="count($tags-ano/node[@id = $codColNodeId]) > 0"><xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute></xsl:if>
+ <xsl:value-of select="./n:EnTetePES/n:CodCol/@V"/>
+ </xsl:element>
+
+ <xsl:element name="codeBudget">
+ <xsl:variable name="codBudNodeId" select="./n:EnTetePES/n:CodBud/@ano:node-id"/>
+ <xsl:if test="count($tags-ano/node[@id = $codBudNodeId]) > 0"><xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute></xsl:if>
+ <xsl:value-of select="./n:EnTetePES/n:CodBud/@V"/>
+ </xsl:element>
+
+ <xsl:value-of select="./n:EnTetePES/n:LibelleColBud/@V"/><br/>
+
+ <xsl:element name="siret">
+ <xsl:variable name="idCollNodeId" select="./n:EnTetePES/n:IdColl/@ano:node-id"/>
+ <xsl:if test="count($tags-ano/node[@id = $idCollNodeId]) > 0"><xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute></xsl:if>
+ <xsl:value-of select="./n:EnTetePES/n:IdColl/@V"/>
+ </xsl:element>
+ </td>
+
+ <td class="colonne2">Bordereau
+ <xsl:element name="span">
+ <xsl:variable name="nodeIdTypBord" select="$bordereau/n:BlocBordereau/n:TypBord/@ano:node-id"/>
+ <xsl:if test="count($tags-ano/node[@id = $nodeIdTypBord]) > 0"><xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute></xsl:if>
+ <xsl:call-template name="typeBordereauLibelle" ><xsl:with-param name="typeBord" select="$bordereau/n:BlocBordereau/n:TypBord/@V"/></xsl:call-template>
+ </xsl:element><br/>
+ <xsl:value-of select="$bordereau/n:BlocBordereau/n:NbrPce/@V"/> <xsl:choose>
+ <xsl:when test="$bordereau/n:BlocBordereau/n:NbrPce/@V = 1">Mandat</xsl:when>
+ <xsl:otherwise>Mandats</xsl:otherwise>
+ </xsl:choose>
+ </td>
+ <td class="colonne3">Bordereau</td>
+ <xsl:element name="td">
+ <xsl:attribute name="class">colonne4</xsl:attribute>
+ <xsl:variable name="nodeIdBordereau" select="$bordereau/n:BlocBordereau/n:IdBord/ano:node-id"/>
+ <xsl:if test="count($tags-ano/node[@id = $nodeIdBordereau]) > 0">
+ <xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute>
+ </xsl:if>
+ <xsl:value-of select="$bordereau/n:BlocBordereau/n:IdBord/@V"/>
+ </xsl:element>
+ </tr>
+ <tr><td colspan="2" class="colonne1"></td><td class="colonne3">Date d'émission</td><td class="colonne4"><xsl:call-template name="slash-date">
+ <xsl:with-param name="datebrute" select="$bordereau/n:BlocBordereau/n:DteBordEm/@V"></xsl:with-param>
+ </xsl:call-template></td></tr>
+ </table>
+ <p><br/></p>
+ <!-- entete de la table principale -->
+ <table class="enteteTablePrincipale" cellspacing="0">
+ <tr>
+ <td class="principaleCol1" style="border-bottom-style: none;">Nom et adresse du créancier</td>
+ <td class="principaleCol2" style="border-bottom-style: none;">Mandat</td>
+ <td class="principaleCol3" style="border-bottom-style: none;">Objet mandat</td>
+ <td colspan="3" style="text-align:center;border-bottom-style: none;border-right-style: none;">Imputation</td>
+ <td class="principaleCol7" style="border-bottom-style: none;">Somme</td>
+ <td class="principaleCol8" style="border-bottom-style: none;">Somme</td>
+ <td class="principaleCol9" style="border-bottom-style: none;">Somme</td>
+ </tr>
+ <tr>
+ <td class="principaleCol1" style="border-top-style: none;"> </td>
+ <td class="principaleCol2" style="border-top-style: none;"> </td>
+ <td class="principaleCol3" style="border-top-style: none;"> </td>
+ <td class="principaleCol4">Nature</td>
+ <td class="principaleCol5">Fonction</td>
+ <td class="principaleCol6">Opération</td>
+ <td class="principaleCol7" style="border-top-style: none;">HT</td>
+ <td class="principaleCol8" style="border-top-style: none;">TVA</td>
+ <td class="principaleCol9" style="border-top-style: none;">TTC</td>
+ </tr>
+ <!-- contenu de la table principale -->
+ <xsl:for-each select="$bordereau/n:Piece" >
+ <xsl:element name="tr">
+ <!--xsl:if test="$tags-ano/node[@id = ./@ano:node-id]"-->
+ <xsl:variable name="currentNodeId" select="./n:BlocPiece/@ano:node-id"/>
+ <!--xsl:attribute name="node-id"><xsl:value-of select="$currentNodeId"/></xsl:attribute-->
+ <xsl:if test="count($tags-ano/node[@id = $currentNodeId]) > 0">
+ <xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute>
+ </xsl:if>
+ <td class="principaleCol1">
+ <xsl:choose>
+ <xsl:when test="count(distinct-values(n:LigneDePiece/n:Tiers/n:InfoTiers/@added:key)) = 1">
+ <xsl:if test="string-length(./n:LigneDePiece[1]/n:Tiers/n:InfoTiers/n:Nom/@V) > 0"><span><xsl:variable name="nodeIdNom" select="./n:LigneDePiece[1]/n:Tiers/n:InfoTiers/n:Nom/@ano:node-id"/><xsl:if test="count($tags-ano/node[@id = $nodeIdNom]) > 0"><xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute></xsl:if><xsl:value-of select="./n:LigneDePiece[1]/n:Tiers/n:InfoTiers/n:Nom/@V"/></span> </xsl:if>
+ <xsl:if test="string-length(./n:LigneDePiece[1]/n:Tiers/n:InfoTiers/n:Prenom/@V) > 0"><xsl:value-of select="./n:LigneDePiece[1]/n:Tiers/n:InfoTiers/n:Prenom/@V"/> </xsl:if>
+ <xsl:if test="string-length(./n:LigneDePiece[1]/n:Tiers/n:InfoTiers/n:ComplNom/@V) > 0"><xsl:value-of select="./n:LigneDePiece[1]/n:Tiers/n:InfoTiers/n:ComplNom/@V"/></xsl:if>
+ <xsl:if test="(string-length(./n:LigneDePiece[1]/n:Tiers/n:InfoTiers/n:ComplNom/@V)+string-length(./n:LigneDePiece[1]/n:Tiers/n:InfoTiers/n:Prenom/@V)+string-length(./n:LigneDePiece[1]/n:Tiers/n:InfoTiers/n:Nom/@V)) > 0"><br/></xsl:if>
+ <xsl:if test="string-length(./n:LigneDePiece[1]/n:Tiers/n:Adresse/n:Adr1/@V) > 0"><xsl:value-of select="./n:LigneDePiece[1]/n:Tiers/n:Adresse/n:Adr1/@V"/><br/></xsl:if>
+ <xsl:if test="string-length(./n:LigneDePiece[1]/n:Tiers/n:Adresse/n:Adr2/@V) > 0"><xsl:value-of select="./n:LigneDePiece[1]/n:Tiers/n:Adresse/n:Adr2/@V"/><br/></xsl:if>
+ <xsl:if test="string-length(./n:LigneDePiece[1]/n:Tiers/n:Adresse/n:CP/@V)+string-length(./n:LigneDePiece[1]/n:Tiers/n:Adresse/n:Ville/@V) > 0"><xsl:value-of select="./n:LigneDePiece[1]/n:Tiers/n:Adresse/n:CP/@V"/> <xsl:value-of select="./n:LigneDePiece[1]/n:Tiers/n:Adresse/n:Ville/@V"/></xsl:if>
+ <xsl:if test="./n:LigneDePiece/n:Tiers/n:Adresse/n:CodPays"> - <xsl:call-template name="codePaysINSEE">
+ <xsl:with-param name="codePays" select="./n:LigneDePiece[1]/n:Tiers/n:Adresse/n:CodPays/@V"></xsl:with-param>
+ </xsl:call-template></xsl:if>
+ </xsl:when>
+ <xsl:otherwise>DIVERS CREANCIERS</xsl:otherwise>
+ </xsl:choose>
+ </td>
+ <xsl:element name="td">
+ <xsl:attribute name="class">principaleCol2</xsl:attribute>
+ <xsl:variable name="nodeIdPiece" select="./n:BlocPiece/n:InfoPce/n:IdPce/@ano:node-id"/>
+ <xsl:if test="count($tags-ano/node[@id = $nodeIdPiece]) > 0">
+ <xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute>
+ </xsl:if>
+ <xsl:if test="$browser-destination = 'internal'"><xsl:element name="a"><xsl:attribute name="href">xemelios:/query?docId=pes-aller&etatId=PES_DepenseAller&elementId=BordereauDepense&collectivite=<xsl:value-of select="../../../n:EnTetePES/n:IdColl/@V"/>&budget=<xsl:value-of select="../../../n:EnTetePES/n:CodBud/@V"/>&path=[@added:primary-key='<xsl:value-of select="../@added:primary-key"/>']&xsl:param=(mandatId,<xsl:value-of select="n:BlocPiece/n:InfoPce/n:IdPce/@V"/>)</xsl:attribute><xsl:value-of select="./n:BlocPiece/n:InfoPce/n:IdPce/@V"/></xsl:element></xsl:if>
+ <xsl:if test="$browser-destination = 'external'"><xsl:value-of select="./n:BlocPiece/n:InfoPce/n:IdPce/@V"/></xsl:if>
+ </xsl:element>
+ <td class="principaleCol3">
+ <xsl:value-of select="./n:BlocPiece/n:InfoPce/n:Obj/@V"/><br/>
+ <xsl:element name="span">
+ <xsl:variable name="nodeIdTypPce" select="./n:BlocPiece/n:InfoPce/n:TypPce/@ano:node-id"/>
+ <xsl:if test="count($tags-ano/node[@id = $nodeIdTypPce]) > 0"><xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute></xsl:if>
+ <xsl:call-template name="typePieceLibelle" >
+ <xsl:with-param name="typePiece" select="./n:BlocPiece/n:InfoPce/n:TypPce/@V" />
+ </xsl:call-template></xsl:element><br/>
+ <xsl:element name="span">
+ <xsl:variable name="nodeIdNatPce" select="./n:BlocPiece/n:InfoPce/n:NatPce/@ano:node-id"/>
+ <xsl:if test="count($tags-ano/node[@id = $nodeIdNatPce]) > 0"><xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute></xsl:if>
+ <xsl:call-template name="naturePieceLibelle" >
+ <xsl:with-param name="naturePiece" select="./n:BlocPiece/n:InfoPce/n:NatPce/@V" />
+ </xsl:call-template></xsl:element><br/>
+ </td>
+
+ <!-- boucler dans les colonnes suivantes quand il y a plusieurs créanciers -->
+ <td class="principaleCol4">
+ <xsl:for-each-group select="./n:LigneDePiece/n:BlocLignePiece/n:InfoLignePce" group-by="@added:imputation">
+ <span><xsl:variable name="nodeIdNature" select="current-group()/n:Nature/@ano:node-id"/><xsl:if test="count($tags-ano/node[@id = $nodeIdNature]) > 0"><xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute></xsl:if><xsl:value-of select="current-group()[1]/n:Nature/@V"/></span><br/>
+ </xsl:for-each-group>
+ </td>
+ <td class="principaleCol5">
+ <xsl:for-each-group select="./n:LigneDePiece/n:BlocLignePiece/n:InfoLignePce" group-by="@added:imputation">
+ <xsl:value-of select="current-group()[1]/n:Fonction/@V"/><br/>
+ </xsl:for-each-group>
+ </td>
+ <td class="principaleCol6">
+ <xsl:for-each-group select="./n:LigneDePiece/n:BlocLignePiece/n:InfoLignePce" group-by="@added:imputation">
+ <xsl:value-of select="current-group()[1]/n:Operation/@V"/><br/>
+ </xsl:for-each-group>
+ </td>
+ <td class="principaleCol7">
+ <xsl:for-each-group select="./n:LigneDePiece/n:BlocLignePiece/n:InfoLignePce" group-by="@added:imputation">
+ <xsl:call-template name="number"><xsl:with-param name="num" select="sum(current-group()/n:MtHT/@V)"/></xsl:call-template><br/>
+ </xsl:for-each-group>
+ </td>
+ <td class="principaleCol8">
+ <xsl:for-each-group select="./n:LigneDePiece/n:BlocLignePiece/n:InfoLignePce" group-by="@added:imputation">
+ <xsl:call-template name="number"><xsl:with-param name="num" select="sum(current-group()/n:MtTVA/@V)"/></xsl:call-template><br/>
+ </xsl:for-each-group>
+ </td>
+ <td class="principaleCol9">
+ <xsl:for-each-group select="./n:LigneDePiece/n:BlocLignePiece/n:InfoLignePce" group-by="@added:imputation">
+ <xsl:call-template name="number"><xsl:with-param name="num" select="sum(current-group()/n:MtHT/@V)+sum(current-group()/n:MtTVA/@V)"/></xsl:call-template><br/>
+ </xsl:for-each-group>
+ </td>
+ </xsl:element>
+ </xsl:for-each>
+ </table>
+ <p><br/></p>
+ <!-- table pour les totaux -->
+ <xsl:variable name="totalTVABordereau">
+ <xsl:choose>
+ <xsl:when test="$bordereau/n:BlocBordereau/n:MtBordTVA/@V > 0">
+ <xsl:value-of select="$bordereau/n:BlocBordereau/n:MtBordTVA/@V"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="0"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="totalTTCBordereau" select="$bordereau/n:BlocBordereau/n:MtBordHT/@V + $totalTVABordereau"/>
+
+ <xsl:variable name="minMandat">
+ <xsl:for-each select="$bordereau/n:Piece/n:BlocPiece/n:InfoPce/n:IdPce/@V">
+ <xsl:sort data-type="number" order="ascending"/>
+ <xsl:if test="position()=1"><xsl:value-of select="."/></xsl:if>
+ </xsl:for-each>
+ </xsl:variable>
+ <xsl:variable name="maxMandat">
+ <xsl:for-each select="$bordereau/n:Piece/n:BlocPiece/n:InfoPce/n:IdPce/@V">
+ <xsl:sort data-type="number" order="descending"/>
+ <xsl:if test="position()=1"><xsl:value-of select="."/></xsl:if>
+ </xsl:for-each>
+ </xsl:variable>
+ <table class="totaux" cellspacing="0">
+<!-- Mise en surbrillance des montant nulls ou negatifs. -->
+ <xsl:variable name="nodeHT" select="$bordereau/n:BlocBordereau/n:MtBordHT/@ano:node-id"/>
+ <xsl:variable name="nodeTVA" select="$bordereau/n:BlocBordereau/n:MtBordTVA/@ano:node-id"/>
+ <xsl:variable name="isNodeHTError" select="count($tags-ano/node[@id = $nodeHT]) > 0"/>
+ <xsl:variable name="isNodeTVAError" select="count($tags-ano/node[@id = $nodeTVA]) > 0"/>
+ <xsl:variable name="rowspan">
+ <xsl:choose>
+ <xsl:when test="$isNodeHTError">5</xsl:when>
+ <xsl:otherwise>4</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <tr>
+ <td class="noborder" rowspan="{$rowspan}">Arrêté le présent bordereau à la somme de <xsl:call-template name="number"><xsl:with-param name="num" select="$totalTTCBordereau"></xsl:with-param></xsl:call-template> euros.<br/>
+ <xsl:choose>
+ <xsl:when test="$minMandat = $maxMandat">Comprenant le mandat n°<xsl:value-of select="$minMandat"/></xsl:when>
+ <xsl:otherwise>Comprenant les mandats n°<xsl:value-of select="$minMandat"/> à <xsl:value-of select="$maxMandat"/></xsl:otherwise>
+ </xsl:choose>
+ <!-- MANQUE les données sur l'ordonnateur. YLA - 2007/02/15 -->
+ <xsl:variable name="isSigned" select="exists($bordereau/ds:Signature)"/>
+ <xsl:variable name="isSignedGlobal" select="exists(PES/ds:Signature)"/>
+ <xsl:if test="count($bordereau/ds:Signature/ds:KeyInfo/ds:X509Data/ds:X509Certificate) > 1">
+ <xsl:message>Un seul certificat est accépté</xsl:message>
+ </xsl:if>
+ <xsl:variable name="signature" select="$bordereau/ds:Signature/ds:KeyInfo/ds:X509Data"/><!-- ds:X509Certificate/text()-->
+ <xsl:variable name="nomSignataire">
+ <xsl:choose>
+ <xsl:when test="$isSigned"><xsl:for-each select="$signature/ds:X509Certificate"><xsl:value-of select="xem:extractCN(./text())"/><xsl:if test="not(position() = last())"> / </xsl:if></xsl:for-each></xsl:when>
+ <xsl:otherwise>[NomSignataire]</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="role">
+ <xsl:choose>
+ <xsl:when test="$isSigned and $bordereau/ds:Signature/ds:Object/*[local-name()='QualifyingProperties']/*[local-name()='SignedProperties']/*[local-name()='SignedSignatureProperties']/*[local-name()='SignerRole']"><xsl:value-of select="$bordereau/ds:Signature/ds:Object/*[local-name()='QualifyingProperties']/*[local-name()='SignedProperties']/*[local-name()='SignedSignatureProperties']/*[local-name()='SignerRole']/*[local-name()='ClaimedRoles']/*[local-name()='ClaimedRole'][1]/text()"></xsl:value-of></xsl:when>
+ <xsl:otherwise>[Role]</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="email">
+ <xsl:choose>
+ <xsl:when test="$isSigned"><xsl:for-each select="$signature/ds:X509Certificate"><xsl:value-of select="xem:extractEMail(./text())"/><xsl:if test="not(position() = last())"> / </xsl:if></xsl:for-each></xsl:when>
+ <xsl:otherwise>[AdresseEMail]</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <br/>
+ <xsl:choose>
+ <xsl:when test="$isSigned"><br/><span class="rouge">Ce bordereau est signé. Ces éléments sont déduits du flux avec présence de signature électronique.</span></xsl:when>
+ <xsl:otherwise><br/><emp><xsl:value-of select="$bordereau/comment()"/></emp><span class="rouge">Ces éléments sont déduits du flux mais absence de signature électronique.</span></xsl:otherwise>
+ </xsl:choose>
+
+ <br/><br/>L'ordonnateur <xsl:value-of select="$nomSignataire"/><br/>
+ <xsl:value-of select="$role"/><br/>
+ <xsl:value-of select="/n:PES_Aller/n:EnTetePES/n:LibelleColBud/@V"/><br/>
+ <xsl:value-of select="$email"/><br/>
+ Tél : [NumeroTelephone]<br/>
+ le <xsl:call-template name="slash-date"><xsl:with-param name="datebrute" select="$bordereau/n:BlocBordereau/n:DteBordEm/@V"/></xsl:call-template>
+ </td>
+ <td class="totalLibelle" style="border-style: solid none none solid;">Total du présent bordereau</td>
+ <td class="totalValeur" style="border-style: solid solid none none;"><xsl:call-template name="number"><xsl:with-param name="num" select="$totalTTCBordereau"/></xsl:call-template></td>
+ </tr>
+ <xsl:if test="$isNodeHTError">
+ <tr style="background-color: #FFFF66;">
+ <td class="totalLibelle" style="border-style: none none none solid;">[MtBordHT]</td>
+ <td class="totalValeur" style="border-style: none solid none none;"><xsl:value-of select="$bordereau/n:BlocBordereau/n:MtBordHT/@V"/></td>
+ </tr>
+ </xsl:if>
+ <xsl:element name="tr">
+ <xsl:if test="$isNodeTVAError">
+ <xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute>
+ </xsl:if>
+ <!--td> </td-->
+ <td class="totalLibelle" style="border-style: none none none solid;"> dont TVA</td>
+ <td class="totalValeur" style="border-style: none solid none none;"><xsl:call-template name="number"><xsl:with-param name="num" select="$totalTVABordereau"/></xsl:call-template> </td>
+ </xsl:element>
+ <tr>
+ <!--td> </td-->
+ <td class="totalLibelle" style="border-style: none none none solid;">Total général au précédent bordereau</td>
+ <td class="totalValeur" style="border-style: none solid none none;"><xsl:call-template name="number"><xsl:with-param name="num" select="$bordereau/n:BlocBordereau/n:MtCumulAnnuel/@V - $totalTTCBordereau"></xsl:with-param></xsl:call-template></td>
+ </tr>
+ <tr>
+ <!--td> </td-->
+ <td class="totalLibelle" style="border-style: none none solid solid;">Cumul annuel</td>
+ <td class="totalValeur" style="border-style: none solid solid none;"><xsl:call-template name="number"><xsl:with-param name="num" select="$bordereau/n:BlocBordereau/n:MtCumulAnnuel/@V"></xsl:with-param></xsl:call-template></td>
+ </tr>
+ </table>
+ <p><br/></p>
+ <xsl:if test="$bordereau/ano:Anomalie">
+ <hr />
+ <xsl:for-each select="$bordereau/ano:Anomalie">
+ <xsl:element name="div">
+ <xsl:if test="$anoId = ./@ano:anoId">
+ <xsl:attribute name="style">background-color: #FFFF66</xsl:attribute>
+ </xsl:if>
+ <!--a><xsl:attribute name="name">AnoId_<xsl:value-of select="./@ano:anoId"/></xsl:attribute> </a-->
+ <h3>
+ <xsl:element name="a">
+ <xsl:attribute name="name">AnoId_<xsl:value-of select="./@ano:anoId"/></xsl:attribute>
+ <xsl:attribute name="href">xemelios:/query?docId=pes-aller&etatId=PES_DepenseAller&elementId=BordereauDepense&collectivite=<xsl:value-of select="../../../n:EnTetePES/n:IdColl/@V"/>&budget=<xsl:value-of select="../../../n:EnTetePES/n:CodBud/@V"/>&path=[@added:primary-key='<xsl:value-of select="../@added:primary-key"/>']&xsl:param=(elementId,Bordereau)&xsl:param=(anoId,<xsl:value-of select="./@ano:anoId"/>)</xsl:attribute>
+ Anomalie <!--xsl:value-of select="./@ano:anoId"/-->
+ </xsl:element>
+ </h3>
+ <p><span class="gras">Contrôle : </span><xsl:value-of select="./@ano:ctrlId"/></p>
+ <p><span class="gras">Règle fonctionnelle : </span><xsl:value-of select="./ano:ctrlRegleFonct/text()" disable-output-escaping="yes"/></p>
+ <p><span class="gras">Message : </span><xsl:value-of select="./ano:message/text()" disable-output-escaping="yes"/></p>
+ <!--p><span class="gras">Noeuds : </span><xsl:for-each select="ano:node"><xsl:value-of select="./@ano:id"/>, </xsl:for-each></p-->
+ </xsl:element>
+ </xsl:for-each>
+ <hr />
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <!-- Cas d'un mandat -->
+ <!-- table pour l'entête -->
+ <table class="entete" cellspacing="0">
+ <tr>
+ <td class="head1">
+ <xsl:value-of select="./n:EnTetePES/n:IdPost/@V"/> <xsl:value-of select="./n:EnTetePES/n:LibellePoste/@V"/>
+ </td>
+ <td class="head2">
+ <!-- img src="xemelios:/resource?helios.png" alt="*logo helios*"/ -->
+ </td>
+ <td class="colonne3">Exercice</td>
+ <td class="colonne4"><xsl:value-of select="$bordereau/n:BlocBordereau/n:Exer/@V"/>
+ </td>
+ </tr>
+ </table>
+ <p><br/></p>
+ <xsl:for-each select="$bordereau/n:Piece[number(n:BlocPiece/n:InfoPce/n:IdPce/@V) = number($mandatId)]">
+ <!--xsl:if test="./@added:generated-id = $nodeId"-->
+ <!-- on calcule les totaux HT et TTC -->
+ <xsl:variable name="totalHT">
+ <xsl:value-of select="sum(./n:LigneDePiece/n:BlocLignePiece/n:InfoLignePce/n:MtHT/@V)"/>
+ </xsl:variable>
+ <xsl:variable name="totalTTC">
+ <xsl:value-of select="sum(./n:LigneDePiece/n:BlocLignePiece/n:InfoLignePce/n:MtHT/@V)+sum(./n:LigneDePiece/n:BlocLignePiece/n:InfoLignePce/n:MtTVA/@V)"/>
+ </xsl:variable>
+ <!-- table pour le titre du mandat -->
+ <table class="entete" cellspacing="0">
+ <tr>
+ <td class="colonne1">
+ <xsl:value-of select="../../../n:EnTetePES/n:CodCol/@V"/><xsl:value-of select="../../../n:EnTetePES/n:CodBud/@V"/>
+ <xsl:value-of select="../../../n:EnTetePES/n:LibelleColBud/@V"/><br/>
+ <xsl:value-of select="../../../n:EnTetePES/n:IdColl/@V"/>
+ <!-- MANQUE ServiceOrdonnateur : on n'a pas les données -->
+ <!-- MANQUE FinJur : on n'a pas les données -->
+ </td>
+ <td class="colonne2" style="font-weight:bold">
+
+ <xsl:call-template name="typePieceLibelle" >
+ <xsl:with-param name="typePiece" select="./n:BlocPiece/n:InfoPce/n:TypPce/@V" />
+ </xsl:call-template><br/>
+ <xsl:call-template name="naturePieceLibelle" >
+ <xsl:with-param name="naturePiece" select="./n:BlocPiece/n:InfoPce/n:NatPce/@V" />
+ </xsl:call-template><br/>
+ <xsl:value-of select="./n:BlocPiece/n:InfoPce/n:Obj/@V"/>
+ <xsl:value-of select="./n:BlocPiece/n:InfoPce/n:PJ/@V"/><br/>
+ <!-- On calcule le nombre de PJ pour chaque type de support -->
+ <xsl:variable name="nbPJPieceElectro">
+ <xsl:value-of select="count(./n:BlocPiece/n:InfoPce/n:PJRef/n:Support[@V=01])"/>
+ </xsl:variable>
+ <xsl:variable name="nbPJPiecePapier">
+ <xsl:value-of select="count(./n:BlocPiece/n:InfoPce/n:PJRef/n:Support[@V=02])"/>
+ </xsl:variable>
+ <xsl:variable name="nbPJPieceCDROM">
+ <xsl:value-of select="count(./n:BlocPiece/n:InfoPce/n:PJRef/n:Support[@V=03])"/>
+ </xsl:variable>
+ <div style="font-size: 10px; text-align: left; margin-left: 5cm;">
+ <!--xsl:choose>
+ <xsl:when test="$nbPJPieceElectro + $nbPJPiecePapier + $nbPJPieceCDROM = 0">
+ Non Justifié
+ </xsl:when>
+ <xsl:otherwise-->
+ Justifié par <xsl:value-of select="$nbPJPieceElectro + $nbPJPiecePapier + $nbPJPieceCDROM"/>
+ document(s) dont :<ul style="font-size:10px; margin-top: 0px;">
+ <li><xsl:value-of select="$nbPJPieceElectro"/> document(s) en ligne<xsl:if test="$nbPJPieceElectro > 0">
+ <ul class="pj">
+ <xsl:for-each select="./n:BlocPiece/n:InfoPce/n:PJRef[n:Support/@V=01]">
+ <li class="pj">
+ <xsl:choose>
+ <xsl:when test="true()">
+ <a>
+ <xsl:attribute name="href">xemelios:/attachment?pjId=<xsl:value-of select="./n:IdUnique/@V"/>&collectivite=<xsl:value-of select="/n:PES_Aller/n:EnTetePES/n:IdColl/@V"/></xsl:attribute>
+ <xsl:value-of select="./n:IdUnique/@V"/>
+ <xsl:choose>
+ <xsl:when test="string-length(./n:NomPJ/@V) > 0"> (<xsl:value-of select="./n:NomPJ/@V"/>)</xsl:when>
+ </xsl:choose>
+ </a>
+ </xsl:when>
+ <xsl:otherwise><xsl:value-of select="./n:IdUnique/@V"/>
+ <xsl:choose>
+ <xsl:when test="string-length(./n:NomPJ/@V) > 0"> (<xsl:value-of select="./n:NomPJ/@V"/>)</xsl:when>
+ </xsl:choose></xsl:otherwise>
+ </xsl:choose>
+ </li>
+ </xsl:for-each>
+ </ul>
+ </xsl:if></li>
+ <li><xsl:value-of select="$nbPJPiecePapier"/> document(s) papier<xsl:if test="$nbPJPiecePapier > 0">
+ <ul class="pj">
+ <xsl:for-each select="./n:BlocPiece/n:InfoPce/n:PJRef[n:Support/@V=02]">
+ <li class="pj">
+ <xsl:choose>
+ <xsl:when test="string-length(./n:NomPJ/@V) > 0"><xsl:value-of select="./n:NomPJ/@V"/></xsl:when>
+ </xsl:choose><xsl:value-of select="./n:IdUnique/@V"/>
+ </li>
+ </xsl:for-each>
+ </ul>
+ </xsl:if></li>
+ <li><xsl:value-of select="$nbPJPieceCDROM"/> document(s) sur CDROM<xsl:if test="$nbPJPieceCDROM > 0">
+ <ul class="pj">
+ <xsl:for-each select="./n:BlocPiece/n:InfoPce/n:PJRef[n:Support/@V=03]">
+ <li class="pj"><xsl:choose>
+ <xsl:when test="string-length(./n:NomPJ/@V) > 0"><xsl:value-of select="./n:NomPJ/@V"/></xsl:when>
+ </xsl:choose><xsl:value-of select="./n:IdUnique/@V"/></li>
+ </xsl:for-each>
+ </ul>
+ </xsl:if></li>
+ </ul>
+ <!--/xsl:otherwise>
+ </xsl:choose-->
+ </div>
+ </td>
+ <td class="colonne3" colspan="2">
+ <table class="entete" cellspacing="0" width="100%">
+ <tr><td class="noborder">Mandat</td><td class="noborder"><xsl:value-of select="./n:BlocPiece/n:InfoPce/n:IdPce/@V"/></td></tr>
+ <tr><td class="noborder">Bordereau</td><td class="noborder"><xsl:choose>
+ <xsl:when test="$browser-destination = 'internal'"><xsl:element name="a"><xsl:attribute name="href">xemelios:/query?docId=pes-aller&etatId=PES_DepenseAller&elementId=BordereauDepense&collectivite=<xsl:value-of select="/n:PES_Aller/n:EnTetePES/n:IdColl/@V"/>&budget=<xsl:value-of select="/n:PES_Aller/n:EnTetePES/n:CodBud/@V"/>&path=[@added:primary-key='<xsl:value-of select="../@added:primary-key"/>']&xsl:param=(elementId,Bordereau)</xsl:attribute><xsl:value-of select="../n:BlocBordereau/n:IdBord/@V"/></xsl:element></xsl:when>
+ <xsl:otherwise><xsl:value-of select="../n:BlocBordereau/n:IdBord/@V"/></xsl:otherwise>
+ </xsl:choose></td></tr>
+ <tr><td class="noborder">Date d'émission</td><td class="noborder"><xsl:call-template name="slash-date">
+ <xsl:with-param name="datebrute" select="../n:BlocBordereau/n:DteBordEm/@V"></xsl:with-param>
+ </xsl:call-template></td></tr>
+ </table><br/></td>
+ </tr>
+ </table>
+ <p><br/></p>
+ <!-- entete de la table principale -->
+ <table class="enteteTablePrincipale" cellspacing="0">
+ <tr>
+ <td class="mandatCol1" rowspan="2" style="border-style: solid none solid solid;">Créancier</td>
+ <td class="mandatCol2" rowspan="2" style="border-style: solid none solid solid;">Ligne</td>
+ <td class="mandatCol3" rowspan="2" style="border-style: solid none solid solid;">Pièce(s) de rattachement</td>
+ <td class="mandatCol4" rowspan="2" style="border-style: solid none solid solid;">Description</td>
+ <td colspan="3" style="text-align:center; border-bottom-style: solid;border-right-style: none;">Imputation</td>
+ <td class="mandatCol8" rowspan="2" style="border-style: solid solid solid solid;">Montant/Délais</td>
+ </tr>
+ <tr>
+ <!--td class="mandatCol1"> </td>
+ <td class="mandatCol2"> </td>
+ <td class="mandatCol3" colspan="2"> </td>
+ <td class="mandatCol4" colspan="2"> </td-->
+ <td class="mandatCol5" style="border-top-style: none;">Nature</td>
+ <td class="mandatCol6" style="border-top-style: none;">Fonction</td>
+ <td class="mandatCol7" style="border-top-style: none;">Opération</td>
+ <!--td class="mandatCol8" colspan="2"> </td-->
+ </tr>
+ <!-- contenu de la table principale -->
+ <xsl:for-each select="./n:LigneDePiece">
+ <xsl:sort select="n:BlocLignePiece/n:InfoLignePce/n:IdLigne/@V" data-type="number"></xsl:sort>
+ <xsl:variable name="nodeInfoLignePiece" select="./n:BlocLignePiece/n:InfoLignePce/@ano:node-id"/>
+ <xsl:variable name="isNodeInfoLignePieceError" select="count($tags-ano/node[id = $nodeInfoLignePiece]) > 0"/>
+ <xsl:element name="tr">
+ <xsl:attribute name="style">text-align: left;<xsl:if test="$isNodeInfoLignePieceError"> background-color: #FFFF66;</xsl:if></xsl:attribute>
+ <td class="mandatCol1">
+ <span>
+ <xsl:variable name="nodeIdNatIdTiers" select="./n:Tiers/n:InfoTiers/n:NatIdTiers/@ano:node-id"/>
+ <xsl:variable name="nodeIdIdTiers" select="./n:Tiers/n:InfoTiers/n:IdTiers/@ano:node-id"/>
+ <xsl:if test="(count($tags-ano/node[@id = $nodeIdNatIdTiers]) > 0) or (count($tags-ano/node[@id = $nodeIdIdTiers]) > 0)"><xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute></xsl:if>
+ <xsl:call-template name="typeTiersNational" >
+ <xsl:with-param name="typeTiers" select="./n:Tiers/n:InfoTiers/n:NatIdTiers/@V" />
+ </xsl:call-template><xsl:if test="string-length(./n:Tiers[1]/n:InfoTiers/n:IdTiers/@V) > 0"> : </xsl:if><xsl:value-of select="./n:Tiers/n:InfoTiers/n:IdTiers/@V"/></span><br/>
+ <span>
+ <xsl:variable name="nodeIdCatTiers" select="./n:Tiers/n:InfoTiers/n:CatTiers/@ano:node-id"/>
+ <xsl:if test="count($tags-ano/node[@id = $nodeIdCatTiers]) > 0">
+ <xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute>
+ </xsl:if>
+ <xsl:call-template name="categorieTiers" >
+ <xsl:with-param name="catTiers" select="./n:Tiers/n:InfoTiers/n:CatTiers/@V" />
+ </xsl:call-template></span><br/>
+ <span>
+ <xsl:variable name="nodeIdCatJur" select="./n:Tiers/n:InfoTiers/n:NatJur/@ano:node-id"/>
+ <xsl:if test="count($tags-ano/node[@id = $nodeIdCatJur]) > 0"><xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute></xsl:if>
+ <xsl:call-template name="natureJuridiqueTiers" >
+ <xsl:with-param name="natJur" select="./n:Tiers/n:InfoTiers/n:NatJur/@V" />
+ </xsl:call-template></span><br/>
+ <xsl:if test="string-length(./n:Tiers/n:InfoTiers/n:Civilite/@V) > 0"><xsl:value-of select="./n:Tiers/n:InfoTiers/n:Civilite/@V"/> </xsl:if>
+ <xsl:variable name="currentNodeId" select="./n:Tiers/n:InfoTiers/n:Nom/@ano:node-id"/>
+ <xsl:if test="string-length(./n:Tiers/n:InfoTiers/n:Nom/@V)">
+ <xsl:choose>
+ <xsl:when test="count($tags-ano/node[@id = $currentNodeId]) > 0">
+ <xsl:element name="span">
+ <xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute>
+ <xsl:value-of select="./n:Tiers/n:InfoTiers/n:Nom/@V"/></xsl:element>
+ </xsl:when>
+ <xsl:otherwise><xsl:value-of select="./n:Tiers/n:InfoTiers/n:Nom/@V"/> </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ <xsl:if test="string-length(./n:Tiers/n:InfoTiers/n:Prenom/@V) > 0"><xsl:value-of select="./n:Tiers/n:InfoTiers/n:Prenom/@V"/> </xsl:if>
+ <xsl:if test="string-length(./n:Tiers/n:InfoTiers/n:ComplNom/@V) > 0"><xsl:value-of select="./n:Tiers/n:InfoTiers/n:ComplNom/@V"/> </xsl:if>
+ <xsl:if test="(string-length(./n:Tiers/n:InfoTiers/n:Civilite/@V)+string-length(./n:Tiers/n:InfoTiers/n:Nom/@V)+string-length(./n:Tiers/n:InfoTiers/n:Prenom/@V)+string-length(./n:Tiers/n:InfoTiers/n:ComplNom/@V)) > 0"><br/></xsl:if>
+ <!--xsl:variable name="typeAdresseToDisplay">
+ <xsl:call-template name="typeAdresse" >
+ <xsl:with-param name="codeType" select="./n:Tiers/n:Adresse/n:TypAdr/@V" />
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:if test="string-length($typeAdresseToDisplay) > 0">
+ <xsl:value-of select="$typeAdresseToDisplay"/><br/>
+ </xsl:if-->
+ <xsl:if test="string-length(./n:Tiers/n:Adresse/n:Adr1/@V) > 0"><xsl:value-of select="./n:Tiers/n:Adresse/n:Adr1/@V"/><br/></xsl:if>
+ <xsl:if test="string-length(./n:Tiers/n:Adresse/n:Adr2/@V) > 0"><xsl:value-of select="./n:Tiers/n:Adresse/n:Adr2/@V"/><br/></xsl:if>
+ <!--xsl:value-of select="./n:Tiers/n:Adresse/n:CP/@V"/-->
+ <xsl:variable name="NodeIdCP" select="./n:Tiers/n:Adresse/n:CP/@ano:node-id"/>
+ <xsl:if test="string-length(./n:Tiers/n:Adresse/n:CP/@V)">
+ <xsl:choose>
+ <xsl:when test="count($tags-ano/node[@id = $NodeIdCP]) > 0">
+ <xsl:element name="span">
+ <xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute>
+ <xsl:value-of select="./n:Tiers/n:Adresse/n:CP/@V"/></xsl:element>
+ </xsl:when>
+ <xsl:otherwise><xsl:value-of select="./n:Tiers/n:Adresse/n:CP/@V"/> </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ <!--xsl:value-of select="./n:Tiers/n:Adresse/n:Ville/@V"/-->
+ <xsl:variable name="NodeIdVille" select="./n:Tiers/n:Adresse/n:Ville/@ano:node-id"/>
+ <xsl:if test="string-length(./n:Tiers/n:Adresse/n:Ville/@V)">
+ <xsl:choose>
+ <xsl:when test="count($tags-ano/node[@id = $NodeIdVille]) > 0">
+ <xsl:element name="span">
+ <xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute>
+ <xsl:value-of select="./n:Tiers/n:Adresse/n:Ville/@V"/></xsl:element>
+ </xsl:when>
+ <xsl:otherwise><xsl:value-of select="./n:Tiers/n:Adresse/n:Ville/@V"/> </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ <xsl:if test="boolean(./n:Tiers/n:Adresse/n:CodRes/@V)"> - <xsl:call-template name="codePaysINSEE" >
+ <xsl:with-param name="codePays" select="./n:Tiers/n:Adresse/n:CodPays/@V" />
+ </xsl:call-template>
+ </xsl:if><br /><br/>
+ <!-- CpteBancaire -->
+ <span><xsl:variable name="nodeIdLibVir1" select="n:BlocLignePiece/n:InfoLignePce/n:LibVir1/@ano:node-id"/><xsl:if test="count($tags-ano/node[@id = $nodeIdLibVir1]) > 0"><xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute></xsl:if><xsl:value-of select="n:BlocLignePiece/n:InfoLignePce/n:LibVir1/@V"/></span><br/>
+ <xsl:variable name="currentNodeId" select="n:Tiers/n:CpteBancaire/@ano:node-id"/>
+ <xsl:choose>
+ <xsl:when test="count($tags-ano/node[@id = $currentNodeId]) > 0">
+ <xsl:element name="span">
+ <xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute>
+ <xsl:value-of select="n:Tiers/n:CpteBancaire/n:CodeEtab/@V"/>
+ <xsl:value-of select="n:Tiers/n:CpteBancaire/n:CodeGuic/@V"/>
+ <xsl:value-of select="n:Tiers/n:CpteBancaire/n:IdCpte/@V"/>
+ <xsl:value-of select="n:Tiers/n:CpteBancaire/n:CleRib/@V"/><br/>
+ <xsl:value-of select="n:Tiers/n:CpteBancaire/n:LibBanc/@V"/><br/>
+ <xsl:value-of select="n:Tiers/n:CpteBancaire/n:IdBancInt/@V"/>
+ </xsl:element>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="n:Tiers/n:CpteBancaire/n:CodeEtab/@V"/>
+ <xsl:value-of select="n:Tiers/n:CpteBancaire/n:CodeGuic/@V"/>
+ <xsl:value-of select="n:Tiers/n:CpteBancaire/n:IdCpte/@V"/>
+ <xsl:value-of select="n:Tiers/n:CpteBancaire/n:CleRib/@V"/><br/>
+ <xsl:value-of select="n:Tiers/n:CpteBancaire/n:LibBanc/@V"/><br/>
+ <xsl:value-of select="n:Tiers/n:CpteBancaire/n:IdBancInt/@V"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </td>
+ <xsl:element name="td">
+ <xsl:attribute name="class">mandatCol2</xsl:attribute>
+ <xsl:variable name="nodeIdIdLigne" select="n:BlocLignePiece/n:InfoLignePce/n:IdLigne/@ano:node-id"/>
+ <xsl:if test="count($tags-ano/node[@id = $nodeIdIdLigne]) > 0"><xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute></xsl:if>
+ <xsl:value-of select="n:BlocLignePiece/n:InfoLignePce/n:IdLigne/@V"/>
+ </xsl:element>
+ <td class="mandatCol3">
+ <!-- On calcule le nombre de PJ pour chaque type de support -->
+ <xsl:variable name="nbPJLigneElectro">
+ <xsl:value-of select="count(n:BlocLignePiece/n:InfoLignePce/n:PJRef/n:Support[@V=01])"/>
+ </xsl:variable>
+ <xsl:variable name="nbPJLignePapier">
+ <xsl:value-of select="count(n:BlocLignePiece/n:InfoLignePce/n:PJRef/n:Support[@V=02])"/>
+ </xsl:variable>
+ <xsl:variable name="nbPJLigneCDROM">
+ <xsl:value-of select="count(n:BlocLignePiece/n:InfoLignePce/n:PJRef/n:Support[@V=03])"/>
+ </xsl:variable>
+ <!--xsl:call-template name="typePieceOrigine" >
+ <xsl:with-param name="typePiece" select="n:BlocLignePiece/n:RattachPiece/n:NatPceOrig/@V" />
+ </xsl:call-template-->
+ <table class="inner" width="100%" cellspacing="0">
+ <tr><td colspan="2" class="noborder"><span><xsl:variable name="nodeIdTypePieceOrig" select="n:BlocLignePiece/n:RattachPiece/n:NatPceOrig/@ano:node-id"/><xsl:if test="count($tags-ano/node[@id = $nodeIdTypePieceOrig]) > 0"><xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute></xsl:if><xsl:call-template name="typePieceOrigine" ><xsl:with-param name="typePiece" select="n:BlocLignePiece/n:RattachPiece/n:NatPceOrig/@V"/></xsl:call-template></span></td></tr>
+ <!--tr><td class="noborder">Exercice</td><td class="noborder"><xsl:value-of select="./n:BlocLignePiece/n:RattachPiece/n:ExerRat/@V"/></td></tr-->
+ <tr><td class="noborder">Exercice</td><td class="rigth noborder"><span><xsl:variable name="nodeIdExerRat" select="./n:BlocLignePiece/n:RattachPiece/n:ExerRat/@ano:node-id"/><xsl:if test="count($tags-ano/node[@id = $nodeIdExerRat]) > 0"><xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute></xsl:if><xsl:value-of select="./n:BlocLignePiece/n:RattachPiece/n:ExerRat/@V"/></span></td></tr>
+ <tr><td class="noborder">Identifiant pièce</td><td class="noborder"><xsl:value-of select="./n:BlocLignePiece/n:RattachPiece/n:IdPceOrig/@V"/></td></tr>
+ <tr><td class="noborder">Ligne pièce</td></tr><tr><td class="noborder"><xsl:value-of select="./n:BlocLignePiece/n:RattachPiece/n:IdLigneOrig/@V"/></td></tr>
+ <tr><td class="noborder" colspan="2"><!--xsl:choose>
+ <xsl:when test="$nbPJLigneElectro + $nbPJLignePapier + $nbPJLigneCDROM = 0">Non justifiée</xsl:when>
+ <xsl:otherwise-->
+ Justifiée par <xsl:value-of select="$nbPJLigneElectro + $nbPJLignePapier + $nbPJLigneCDROM"/> PJ<xsl:if test="$nbPJLigneElectro + $nbPJLignePapier + $nbPJLigneCDROM > 0"> dont :</xsl:if>
+ <ul style="margin-top: 0px; margin-left: 0.5cm;">
+ <xsl:if test="$nbPJLigneElectro > 0"><li><xsl:value-of select="$nbPJLigneElectro"/> en ligne<ul style="margin-top: 0; margin-left: 0.5cm; list-style-type: none;"><xsl:for-each select="./n:BlocLignePiece/n:InfoLignePce/n:PJRef[n:Support/@V=01]"><li><xsl:choose>
+ <xsl:when test="true()"><a><xsl:attribute name="href">xemelios:/attachment?pjId=<xsl:value-of select="./n:IdUnique/@V"/>&collectivite=<xsl:value-of select="/n:PES_Aller/n:EnTetePES/n:IdColl/@V"/></xsl:attribute><xsl:choose><xsl:when test="string-length(./n:Libelle/@V) > 0"><xsl:value-of select="./n:Libelle/@V"/></xsl:when><xsl:otherwise><xsl:value-of select="./n:IdUnique/@V"/></xsl:otherwise></xsl:choose></a></xsl:when>
+ <xsl:otherwise><xsl:choose><xsl:when test="string-length(./n:Libelle/@V) > 0"><xsl:value-of select="./n:Libelle/@V"/></xsl:when><xsl:otherwise><xsl:value-of select="./n:IdUnique/@V"/></xsl:otherwise></xsl:choose></xsl:otherwise>
+ </xsl:choose></li></xsl:for-each></ul></li></xsl:if>
+ <xsl:if test="$nbPJLignePapier > 0"><li><xsl:value-of select="$nbPJLignePapier"/> papier<ul style="margin-top: 0; margin-left: 0.5cm; list-style-type: none;"><xsl:for-each select="./n:BlocLignePiece/n:InfoLignePce/n:PJRef[n:Support/@V=02]"><li><xsl:choose><xsl:when test="string-length(./n:Libelle/@V) > 0"><xsl:value-of select="./n:Libelle/@V"/></xsl:when><xsl:otherwise><xsl:value-of select="./n:IdUnique/@V"/></xsl:otherwise></xsl:choose></li></xsl:for-each></ul></li></xsl:if>
+ <xsl:if test="$nbPJLigneCDROM > 0"><li><xsl:value-of select="$nbPJLigneCDROM"/> sur CDROM<ul style="margin-top: 0; margin-left: 0.5cm; list-style-type: none;"><xsl:for-each select="./n:BlocLignePiece/n:InfoLignePce/n:PJRef[n:Support/@V=03]"><li><xsl:choose><xsl:when test="string-length(./n:Libelle/@V) > 0"><xsl:value-of select="./n:Libelle/@V"/></xsl:when><xsl:otherwise><xsl:value-of select="./n:IdUnique/@V"/></xsl:otherwise></xsl:choose></li></xsl:for-each></ul></li></xsl:if>
+ </ul><!--/xsl:otherwise>
+ </xsl:choose--></td></tr>
+ </table>
+
+ </td>
+ <td class="mandatCol4">
+ <table class="inner" width="100%" cellspacing="0">
+ <tr><td class="noborder">Facture</td><td class="noborder right"><xsl:value-of select="./n:BlocLignePiece/n:InfoLignePce/n:Facture/@V"/></td></tr>
+ <tr><td class="noborder">Fiche inventaire</td><td class="noborder right"><span><xsl:variable name="nodeIdActif" select="./n:BlocLignePiece/n:LiensIdent/n:IdActif/@ano:node-id"/><xsl:if test="count($tags-ano/node[@id = $nodeIdActif]) > 0"><xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute></xsl:if><xsl:value-of select="./n:BlocLignePiece/n:LiensIdent/n:IdActif/@V"/></span></td></tr>
+ <tr><td class="noborder">Compte Tiers</td><td class="noborder right"><xsl:value-of select="./n:BlocLignePiece/n:InfoLignePce/n:CpteTiers/@V"/></td></tr>
+ <tr><td class="noborder">Fiche emprunt</td><td class="noborder right"><span><xsl:variable name="nodeIdEmprunt" select="./n:BlocLignePiece/n:LiensIdent/n:IdEmpruntOrdo/@ano:node-id"/><xsl:if test="count($tags-ano/node[@id = $nodeIdEmprunt]) > 0"><xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute></xsl:if><xsl:value-of select="./n:BlocLignePiece/n:LiensIdent/n:IdEmpruntOrdo/@V"/></span></td></tr>
+ <tr><td class="noborder">Numéro de régie</td><td class="noborder right"><span><xsl:variable name="nodeIdRegie" select="./n:BlocLignePiece/n:LiensIdent/n:IdRegie/ano:node-id"/><xsl:if test="count($tags-ano/node[@id = $nodeIdRegie]) > 0"><xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute></xsl:if><xsl:value-of select="./n:BlocLignePiece/n:LiensIdent/n:IdRegie/@V"/></span></td></tr>
+ <tr><td class="noborder">Numéro de marché</td><td class="noborder right"><xsl:value-of select="./n:BlocLignePiece/n:LiensIdent/n:IdMarche/@V"/></td></tr>
+ <tr><td class="noborder">Fiche de convention</td><td class="noborder right"><xsl:value-of select="./n:BlocLignePiece/n:LiensIdent/n:IdConv/@V"/></td></tr>
+ </table>
+ </td>
+ <xsl:element name="td">
+ <xsl:attribute name="class">mandatCol5</xsl:attribute>
+ <xsl:variable name="nodeIdNature" select="./n:BlocLignePiece/n:InfoLignePce/n:Nature/@ano:node-id"/>
+ <xsl:if test="count($tags-ano/node[@id = $nodeIdNature]) > 0"><xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute></xsl:if>
+ <xsl:value-of select="./n:BlocLignePiece/n:InfoLignePce/n:Nature/@V"/>
+ </xsl:element>
+ <xsl:element name="td">
+ <xsl:attribute name="class">mandatCol6</xsl:attribute>
+ <xsl:variable name="nodeIdFonction" select="./n:BlocLignePiece/n:InfoLignePce/n:Fonction/@ano:node-id"/>
+ <xsl:if test="count($tags-ano/node[@id = $nodeIdFonction]) > 0"><xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute></xsl:if>
+ <xsl:value-of select="./n:BlocLignePiece/n:InfoLignePce/n:Fonction/@V"/>
+ </xsl:element>
+ <xsl:element name="td">
+ <xsl:attribute name="class">mandatCol7</xsl:attribute>
+ <xsl:variable name="nodeIdOperation" select="./n:BlocLignePiece/n:InfoLignePce/n:Operation/@ano:node-id"/>
+ <xsl:if test="count($tags-ano/node[@id = $nodeIdOperation]) > 0"><xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute></xsl:if>
+ <xsl:value-of select="./n:BlocLignePiece/n:InfoLignePce/n:Operation/@V"/>
+ </xsl:element>
+ <td class="mandatCol8">
+ <xsl:variable name="nodeHT" select="./n:BlocLignePiece/n:InfoLignePce/n:MtHT/@ano:node-id"/>
+ <xsl:variable name="nodeTVA" select="./n:BlocLignePiece/n:InfoLignePce/n:MtTVA/@ano:node-id"/>
+ <table class="inner" width="100%" cellspacing="0">
+ <xsl:variable name="mtLigneHt"><xsl:choose>
+ <xsl:when test="./n:BlocLignePiece/n:InfoLignePce/n:MtHT"><xsl:value-of select="./n:BlocLignePiece/n:InfoLignePce/n:MtHT/@V"></xsl:value-of></xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose></xsl:variable>
+ <xsl:variable name="mtLigneTva"><xsl:choose>
+ <xsl:when test="./n:BlocLignePiece/n:InfoLignePce/n:MtTVA"><xsl:value-of select="./n:BlocLignePiece/n:InfoLignePce/n:MtTVA/@V"></xsl:value-of></xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose></xsl:variable>
+ <tr><td class="noborder">Montant HT</td><td class="noborder right"><xsl:element name="span"><xsl:if test="count($tags-ano/node[@id = $nodeHT]) > 0"><xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute></xsl:if><xsl:call-template name="number"><xsl:with-param name="num" select="$mtLigneHt"/></xsl:call-template></xsl:element></td></tr>
+ <tr><td class="noborder">Montant TVA</td><td class="noborder right"><xsl:element name="span"><xsl:if test="count($tags-ano/node[@id = $nodeTVA]) > 0"><xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute></xsl:if><xsl:call-template name="number"><xsl:with-param name="num" select="$mtLigneTva"/></xsl:call-template></xsl:element></td></tr>
+ <tr><td class="noborder">Compte TVA</td><td class="noborder right"><xsl:value-of select="./n:BlocLignePiece/n:InfoLignePce/n:CpteTVA/@V"/></td></tr>
+ <tr><td class="noborder">Montant TTC</td><td class="noborder right"><xsl:call-template name="number"><xsl:with-param name="num" select="$mtLigneTva+$mtLigneHt"/></xsl:call-template></td></tr>
+ <tr><td class="noborder" colspan="2"> </td></tr>
+ <tr><td class="noborder" colspan="2">Délais global de paiement :</td></tr>
+ <xsl:choose>
+ <xsl:when test="../n:BlocPiece/n:DGP">
+ <xsl:variable name="nodeDateDeb" select="../n:BlocPiece/n:DGP/n:DteDebDgp/@ano:node-id"/>
+ <xsl:variable name="isNodeDateDebError" select="count($tags-ano/node[@id = $nodeDateDeb]) > 0"/>
+ <xsl:variable name="nodeDateFin" select="../n:BlocPiece/n:DGP/n:DteFinDgp/@ano:node-id"/>
+ <xsl:variable name="isNodeDateFinError" select="count($tags-ano/node[@id = $nodeDateFin]) > 0"/>
+ <xsl:variable name="nodeDureeDgp" select="../n:BlocPiece/n:DGP/n:DureeDgp/@ano:node-id"/>
+ <xsl:variable name="isNodeDureeDgp" select="count($tags-ano/node[@id = $nodeDureeDgp]) > 0"/>
+ <tr><td class="noborder"> Délai global</td><td class="noborder right"><xsl:element name="span"><xsl:if test="$isNodeDureeDgp"><xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute></xsl:if><xsl:value-of select="../n:BlocPiece/n:DGP/n:DureeDgp/@V"/> jours</xsl:element></td></tr>
+ <tr><td class="noborder"> Date début DGP</td><td class="noborder right"><xsl:element name="span"><xsl:if test="$isNodeDateDebError"><xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute></xsl:if><xsl:call-template name="slash-date"><xsl:with-param name="datebrute" select="../n:BlocPiece/n:DGP/n:DteDebDgp/@V"/></xsl:call-template></xsl:element></td></tr>
+ <tr><td class="noborder"> Date fin DGP</td><td class="noborder right"><xsl:element name="span"><xsl:if test="$isNodeDateFinError"><xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute></xsl:if><xsl:call-template name="slash-date"><xsl:with-param name="datebrute" select="../n:BlocPiece/n:DGP/n:DteFinDgp/@V"/></xsl:call-template></xsl:element></td></tr>
+ </xsl:when>
+ <xsl:otherwise>
+ <tr><td class="noborder" colspan="2">
+ <xsl:variable name="currentNodeId" select="../n:BlocPiece/@ano:node-id"/>
+ <xsl:choose>
+ <xsl:when test="count($tags-ano/node[@id = $currentNodeId]) > 0">
+ <xsl:element name="span">
+ <xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute>
+ [NON RENSEIGNE]
+ </xsl:element>
+ </xsl:when>
+ <xsl:otherwise>[NON RENSEIGNE]</xsl:otherwise>
+ </xsl:choose>
+ </td></tr>
+ </xsl:otherwise>
+ </xsl:choose>
+ </table>
+ </td>
+ </xsl:element>
+ </xsl:for-each>
+ <!-- pour les totaux -->
+ <tr style="text-align: left">
+ <td class="noborder"> </td>
+ <td class="noborder"> </td>
+ <td class="noborder"> </td>
+ <td class="noborder"> </td>
+ <td class="noborder"> </td>
+ <td class="noborder"> </td>
+ <td class="noborder"> </td>
+ <td class="mandatCol8"><table class="inner" width="100%" cellspacing="0"><tr><td class="noborder">TOTAL HT</td><td class="noborder right"><xsl:call-template name="number"><xsl:with-param name="num" select="$totalHT"/></xsl:call-template></td></tr></table></td>
+ </tr>
+ <tr style="text-align: left">
+ <td class="noborder"> </td>
+ <td class="noborder"> </td>
+ <td class="noborder"> </td>
+ <td class="noborder"> </td>
+ <td class="noborder"> </td>
+ <td class="noborder"> </td>
+ <td class="noborder"> </td>
+ <td class="mandatCol8"><table class="inner" width="100%" cellspacing="0"><tr><td class="noborder">TOTAL TTC</td><td class="noborder right"><xsl:call-template name="number"><xsl:with-param name="num" select="$totalTTC"/></xsl:call-template></td></tr></table></td>
+ </tr>
+ </table>
+ <p/>
+ <xsl:if test="./ano:Anomalie">
+ <hr />
+ <xsl:for-each select="./ano:Anomalie">
+ <xsl:element name="div">
+ <xsl:if test="$anoId = ./@ano:anoId">
+ <xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute>
+ </xsl:if>
+ <!--a><xsl:attribute name="name">AnoId_<xsl:value-of select="./@ano:anoId"/></xsl:attribute> </a-->
+ <xsl:variable name="idBordereau"><xsl:value-of select="../../@added:primary-key"/></xsl:variable>
+ <xsl:variable name="idPiece"><xsl:value-of select="../n:BlocPiece/n:InfoPce/n:IdPce/@V"/></xsl:variable>
+ <h3>
+ <xsl:element name="a">
+ <xsl:attribute name="name">AnoId_<xsl:value-of select="./@ano:anoId"/></xsl:attribute>
+ <xsl:attribute name="href">xemelios:/query?docId=pes-aller&etatId=PES_DepenseAller&elementId=BordereauDepense&collectivite=<xsl:value-of select="/n:PES_Aller/n:EnTetePES/n:IdColl/@V"/>&budget=<xsl:value-of select="/n:PES_Aller/n:EnTetePES/n:CodBud/@V"/>&path=[@added:primary-key='<xsl:value-of select="$idBordereau"/>']&xsl:param=(mandatId,<xsl:value-of select="$idPiece"/>)&xsl:param=(anoId,<xsl:value-of select="./@ano:anoId"/>)</xsl:attribute>
+ Anomalie <!--xsl:value-of select="./@ano:anoId"/-->
+ </xsl:element>
+ </h3>
+ <p><span class="gras">Contrôle : </span><xsl:value-of select="./@ano:ctrlLibelle"/> (<xsl:value-of select="./@ano:ctrlId"/>)</p>
+ <p><span class="gras">Règle fonctionnelle : </span><xsl:value-of select="./ano:ctrlRegleFonct/text()" disable-output-escaping="yes"/></p>
+ <p><span class="gras">Message : </span><xsl:value-of select="./ano:message/text()" disable-output-escaping="yes"/></p>
+ <!--p><span class="gras">Noeuds : </span><xsl:for-each select="ano:node"><xsl:value-of select="./@ano:id"/>, </xsl:for-each></p-->
+ </xsl:element>
+ </xsl:for-each>
+ <hr />
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:otherwise>
+
+ </xsl:choose>
+
+ <!-- une table pour le pied de page, le même pour le bordereau et le mandat -->
+ <!--table class="footer" cellspacing="0">
+ <tr>
+ <td class="colonne1" style="border-style:none">Edition du <xsl:call-template name="slash-date">
+ <xsl:with-param name="datebrute" select="./n:PES_DepenseAller/n:Bordereau/n:BlocBordereau/n:DteBordEm/@V"></xsl:with-param>
+ </xsl:call-template>
+ </td>
+ <td class="colonne2" style="border-style:none"> </td>
+ <td class="colonne3" style="border-style:none"> </td>
+ <td class="colonne4" style="border-style:none"> </td>
+ </tr>
+ </table-->
+
+ <!--/div-->
+ </body>
+
+ </html>
+ </xsl:template>
+
+</xsl:stylesheet>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE xsl:stylesheet [
+<!ENTITY nbsp " ">
+]><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:n="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/aller"
+ xmlns:added="http://projets.admisource.gouv.fr/xemelios/namespaces#added"
+ xmlns:ano="http://projets.admisource.gouv.fr/xemelios/namespaces#anomally"
+ xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
+ xmlns:xad="http://uri.etsi.org/01903/v1.1.1#"
+ xmlns:data="data.uri"
+ xmlns:xem="http://xemelios.org/extensions/xml/functions"
+ version="2.0">
+ <xsl:param name="elementId"/> <!-- Bordereau pour afficher le bordereau, vide sinon -->
+ <xsl:param name="primaryKey" /> <!-- utilise dans le cas d'un document multi-bordereau -->
+ <xsl:param name="mandatId"/> <!-- dans le cas de l'affichage d'un titre, l'id du titre (./n:PES_RecetteAller/n:Bordereau/n:Piece/n:BlocPiece/n:IdPce/@V ) -->
+ <xsl:param name="browser-destination" />
+ <xsl:param name="anoId"/> <!-- id de l'anomalie a mettre en surbrillance -->
+ <xsl:output encoding="ISO-8859-1" method="xhtml" exclude-result-prefixes="n added ano data xem" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" include-content-type="no" indent="yes"/>
+ <xsl:decimal-format name="decformat"
+ decimal-separator=","
+ grouping-separator=" "
+ digit="#"
+ pattern-separator=";"
+ NaN="NaN"
+ minus-sign="-"/>
+ <xsl:variable name="tags-ano">
+ <xsl:for-each select="//ano:Anomalie[@ano:anoId = $anoId]/ano:node">
+ <xsl:element name="node">
+ <xsl:attribute name="id" select="./@ano:id"/>
+ </xsl:element>
+ </xsl:for-each>
+ </xsl:variable>
+ <xsl:variable name="bordereau" select="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau[(string-length($primaryKey) > 1 and @added:primary-key=$primaryKey) or (string-length($primaryKey) = 0 and position()=1) ][1]"></xsl:variable>
+
+ <!-- Données pour les équivalences des codes -->
+ <xsl:variable name="data">
+ <data:data>
+ <data:typeBordereau>
+ <data:t type="01">Ordinaire</data:t>
+ <data:t type="02">Annulation/réduction</data:t>
+ <data:t type="03">Ordres de recette</data:t>
+ <data:t type="04">de titre émis suite à décision juridictionnelle</data:t>
+ <data:t type="05">Entête P503</data:t>
+ </data:typeBordereau>
+ <data:typePiece>
+ <data:t type="01">Titre ordinaire</data:t>
+ <data:t type="02">Titre correctif</data:t>
+ <data:t type="03">Titre d'ordre budgétaire</data:t>
+ <data:t type="04">Titre d'ordre mixte</data:t>
+ <data:t type="05">Titre émis après encaissement</data:t>
+ <data:t type="06">Titre récapitulatif avec rôle</data:t>
+ <data:t type="07">Titre récapitulatif sans rôle</data:t>
+ <data:t type="08">Rôle titre</data:t>
+ <data:t type="09">Titre de majoration</data:t>
+ <data:t type="10">Titre en plusieurs années</data:t>
+ <data:t type="11">Titre de rattachement</data:t>
+ <data:t type="12">Ordre de recette ordonnateur</data:t>
+ <data:t type="13">Demande émission de titre (P503)</data:t>
+ <data:t type="14">Produits constatés d?avance </data:t>
+ </data:typePiece>
+ <data:naturePiece>
+ <data:n type="01">Fonctionnement</data:n>
+ <data:n type="02">Investissement</data:n>
+ <data:n type="03">Inventaire</data:n>
+ <data:n type="04">Emprunt</data:n>
+ <data:n type="O5">Régie</data:n>
+ <data:n type="06">Annulation-Réduction</data:n>
+ <data:n type="07">Complémentaire</data:n>
+ <data:n type="08">Réémis</data:n>
+ <data:n type="09">Annulant un mandat</data:n>
+ <data:n type="10">Annulation du mandat de rattachement</data:n>
+ <data:n type="11">Marché</data:n>
+ <data:n type="12">Autres</data:n>
+ <data:n type="18">Cession</data:n>
+ </data:naturePiece>
+ <data:typePieceOrigine>
+ <data:t type="01">Titre</data:t>
+ <data:t type="02">Mandat</data:t>
+ <data:t type="03">Pièce émargement</data:t>
+ <data:t type="04">Liste non valeur</data:t>
+ <data:t type="05">Liste de majoration</data:t>
+ </data:typePieceOrigine>
+ <data:typeTiersNational>
+ <data:t type="01">Siret</data:t>
+ <data:t type="02">Siren</data:t>
+ <data:t type="03">Finess</data:t>
+ <data:t type="04">Nir</data:t>
+ </data:typeTiersNational>
+ <data:categorieTiers>
+ <data:c V="01">Personnes physiques</data:c>
+ <data:c V="20">état et établissements publics nationaux</data:c>
+ <data:c V="21">Régions</data:c>
+ <data:c V="22">Départements</data:c>
+ <data:c V="23">Communes</data:c>
+ <data:c V="24">Groupements de collectivités</data:c>
+ <data:c V="25">Caisses des écoles</data:c>
+ <data:c V="26">CCAS</data:c>
+ <data:c V="27">Etablissements publics de santé</data:c>
+ <data:c V="28">Ecole nationale de la santé publique</data:c>
+ <data:c V="29">Autres établissements publics et organismes internationaux</data:c>
+ <data:c V="50">Personnes morales de droit privé autres qu'organismes sociaux</data:c>
+ <data:c V="60">Caisses de sécurité sociale régime général</data:c>
+ <data:c V="61">Caisses de sécurité sociale régime agricole</data:c>
+ <data:c V="62">Sécurité sociale des travailleurs non salariés et professions non agricoles</data:c>
+ <data:c V="63">Autres régimes obligatoires de sécurité sociale</data:c>
+ <data:c V="64">Mutuelles et organismes d'assurance</data:c>
+ <data:c V="65">Divers autres tiers payants</data:c>
+ <data:c V="70">CNRACL</data:c>
+ <data:c V="71">IRCANTEC</data:c>
+ <data:c V="72">ASSEDIC</data:c>
+ <data:c V="73">Caisses mutualistes de retraite complémentaires</data:c>
+ <data:c V="74">Autres organismes sociaux</data:c>
+ </data:categorieTiers>
+ <data:natureJuridiqueTiers>
+ <data:t V="00">Inconnue</data:t>
+ <data:t V="01">Particuliers</data:t>
+ <data:t V="02">Artisan / Commerçant / Agriculteur</data:t>
+ <data:t V="03">Société</data:t>
+ <data:t V="04">CAM ou caisse appliquant les mêmes règles</data:t>
+ <data:t V="05">Caisse complémentaire</data:t>
+ <data:t V="06">Association</data:t>
+ <data:t V="07">Etat ou organisme d'Etat</data:t>
+ <data:t V="08">Etablissement public national</data:t>
+ <data:t V="09">Collectivité territoriale / EPL / EPS</data:t>
+ <data:t V="10">Etat étranger / ambassade</data:t>
+ <data:t V="11">CAF</data:t>
+ </data:natureJuridiqueTiers>
+ <data:codePaysINSEE>
+ <data:p V="99125">ALBANIE</data:p>
+ <data:p V="99109">ALLEMAGNE</data:p>
+ <data:p V="99130">ANDORRE</data:p>
+ <data:p V="99110">AUTRICHE</data:p>
+ <data:p V="99131">BELGIQUE</data:p>
+ <data:p V="99148">BIELORUSSIE</data:p>
+ <data:p V="99118">BOSNIE-HERZEGOVINE</data:p>
+ <data:p V="99103">BOUVET (ILE)</data:p>
+ <data:p V="99111">BULGARIE</data:p>
+ <data:p V="99119">CROATIE</data:p>
+ <data:p V="99101">DANEMARK</data:p>
+ <data:p V="99134">ESPAGNE</data:p>
+ <data:p V="99106">ESTONIE</data:p>
+ <data:p V="99156">EX-REPUBLIQUE YOUGOSLAVE DE MACEDOINE</data:p>
+ <data:p V="99101">FEROE (ILES)</data:p>
+ <data:p V="99105">FINLANDE</data:p>
+ <data:p V="99133">GIBRALTAR</data:p>
+ <data:p V="99126">GRECE</data:p>
+ <data:p V="99112">HONGRIE</data:p>
+ <data:p V="99136">IRLANDE, ou EIRE</data:p>
+ <data:p V="99102">ISLANDE</data:p>
+ <data:p V="99127">ITALIE</data:p>
+ <data:p V="99107">LETTONIE</data:p>
+ <data:p V="99113">LIECHTENSTEIN</data:p>
+ <data:p V="99108">LITUANIE</data:p>
+ <data:p V="99137">LUXEMBOURG</data:p>
+ <data:p V="99144">MALTE</data:p>
+ <data:p V="99151">MOLDAVIE</data:p>
+ <data:p V="99138">MONACO</data:p>
+ <data:p V="99120">MONTENEGRO</data:p>
+ <data:p V="99103">NORVEGE</data:p>
+ <data:p V="99135">PAYS-BAS</data:p>
+ <data:p V="99122">POLOGNE</data:p>
+ <data:p V="99139">PORTUGAL</data:p>
+ <data:p V="99141">REPUBLIQUE DEMOCRATIQUE ALLEMANDE</data:p>
+ <data:p V="99142">REPUBLIQUE FEDERALE D'ALLEMAGNE</data:p>
+ <data:p V="99114">ROUMANIE</data:p>
+ <data:p V="99132">ROYAUME-UNI</data:p>
+ <data:p V="99123">RUSSIE</data:p>
+ <data:p V="99128">SAINT-MARIN</data:p>
+ <data:p V="99121">SERBIE-ET-MONTéNéGRO</data:p>
+ <data:p V="99117">SLOVAQUIE</data:p>
+ <data:p V="99145">SLOVENIE</data:p>
+ <data:p V="99104">SUEDE</data:p>
+ <data:p V="99140">SUISSE</data:p>
+ <data:p V="99103">SVALBARD et ILE JAN MAYEN</data:p>
+ <data:p V="99115">TCHECOSLOVAQUIE</data:p>
+ <data:p V="99116">TCHEQUE (REPUBLIQUE)</data:p>
+ <data:p V="99124">TURQUIE D'EUROPE</data:p>
+ <data:p V="99155">UKRAINE</data:p>
+ <data:p V="99129">VATICAN, ou SAINT-SIEGE</data:p>
+ <data:p V="99212">AFGHANISTAN</data:p>
+ <data:p V="99201">ARABIE SAOUDITE</data:p>
+ <data:p V="99252">ARMENIE</data:p>
+ <data:p V="99253">AZERBAIDJAN</data:p>
+ <data:p V="99249">BAHREIN</data:p>
+ <data:p V="99246">BANGLADESH</data:p>
+ <data:p V="99214">BHOUTAN</data:p>
+ <data:p V="99224">BIRMANIE</data:p>
+ <data:p V="99225">BRUNEI</data:p>
+ <data:p V="99234">CAMBODGE</data:p>
+ <data:p V="99216">CHINE</data:p>
+ <data:p V="99254">CHYPRE</data:p>
+ <data:p V="99237">COREE</data:p>
+ <data:p V="99239">COREE (REPUBLIQUE DE)</data:p>
+ <data:p V="99238">COREE (REPUBLIQUE POPULAIRE DEMOCRATIQUE DE)</data:p>
+ <data:p V="99247">EMIRATS ARABES UNIS</data:p>
+ <data:p V="99228">ETATS MALAIS NON FEDERES</data:p>
+ <data:p V="99255">GEORGIE</data:p>
+ <data:p V="99223">GOA</data:p>
+ <data:p V="99230">HONG-KONG</data:p>
+ <data:p V="99223">INDE</data:p>
+ <data:p V="99231">INDONESIE</data:p>
+ <data:p V="99204">IRAN</data:p>
+ <data:p V="99203">IRAQ</data:p>
+ <data:p V="99207">ISRAEL</data:p>
+ <data:p V="99217">JAPON</data:p>
+ <data:p V="99222">JORDANIE</data:p>
+ <data:p V="99211">KAMTCHATKA</data:p>
+ <data:p V="99256">KAZAKHSTAN</data:p>
+ <data:p V="99257">KIRGHIZISTAN</data:p>
+ <data:p V="99240">KOWEIT</data:p>
+ <data:p V="99241">LAOS</data:p>
+ <data:p V="99205">LIBAN</data:p>
+ <data:p V="99232">MACAO</data:p>
+ <data:p V="99227">MALAISIE</data:p>
+ <data:p V="99229">MALDIVES</data:p>
+ <data:p V="99218">MANDCHOURIE</data:p>
+ <data:p V="99242">MONGOLIE</data:p>
+ <data:p V="99215">NEPAL</data:p>
+ <data:p V="99250">OMAN</data:p>
+ <data:p V="99258">OUZBEKISTAN</data:p>
+ <data:p V="99213">PAKISTAN</data:p>
+ <data:p V="99261">PALESTINE</data:p>
+ <data:p V="99220">PHILIPPINES</data:p>
+ <data:p V="99221">POSSESSIONS BRITANNIQUES AU PROCHE-ORIENT</data:p>
+ <data:p V="99248">QATAR</data:p>
+ <data:p V="99209">SIBERIE</data:p>
+ <data:p V="99226">SINGAPOUR</data:p>
+ <data:p V="99235">SRI LANKA</data:p>
+ <data:p V="99206">SYRIE</data:p>
+ <data:p V="99259">TADJIKISTAN</data:p>
+ <data:p V="99236">TAIWAN</data:p>
+ <data:p V="99219">THAILANDE</data:p>
+ <data:p V="99262">TIMOR ORIENTAL</data:p>
+ <data:p V="99210">TURKESTAN RUSSE</data:p>
+ <data:p V="99260">TURKMENISTAN</data:p>
+ <data:p V="99208">TURQUIE</data:p>
+ <data:p V="99243">VIET NAM</data:p>
+ <data:p V="99244">VIET NAM DU NORD</data:p>
+ <data:p V="99245">VIET NAM DU SUD</data:p>
+ <data:p V="99251">YEMEN</data:p>
+ <data:p V="99233">YEMEN DEMOCRATIQUE</data:p>
+ <data:p V="99202">YEMEN (REPUBLIQUE ARABE DU)</data:p>
+ <data:p V="99319">ACORES, MADERE</data:p>
+ <data:p V="99303">AFRIQUE DU SUD</data:p>
+ <data:p V="99352">ALGERIE</data:p>
+ <data:p V="99395">ANGOLA</data:p>
+ <data:p V="99327">BENIN</data:p>
+ <data:p V="99347">BOTSWANA</data:p>
+ <data:p V="99331">BURKINA</data:p>
+ <data:p V="99321">BURUNDI</data:p>
+ <data:p V="99322">CAMEROUN</data:p>
+ <data:p V="99305">CAMEROUN ET TOGO</data:p>
+ <data:p V="99313">CANARIES (ILES)</data:p>
+ <data:p V="99396">CAP-VERT</data:p>
+ <data:p V="99323">CENTRAFRICAINE (REPUBLIQUE)</data:p>
+ <data:p V="99397">COMORES</data:p>
+ <data:p V="99324">CONGO</data:p>
+ <data:p V="99312">CONGO (REPUBLIQUE DEMOCRATIQUE)</data:p>
+ <data:p V="99326">COTE D'IVOIRE</data:p>
+ <data:p V="99399">DJIBOUTI</data:p>
+ <data:p V="99301">EGYPTE</data:p>
+ <data:p V="99317">ERYTHREE</data:p>
+ <data:p V="99315">ETHIOPIE</data:p>
+ <data:p V="99328">GABON</data:p>
+ <data:p V="99304">GAMBIE</data:p>
+ <data:p V="99329">GHANA</data:p>
+ <data:p V="99330">GUINEE</data:p>
+ <data:p V="99314">GUINEE EQUATORIALE</data:p>
+ <data:p V="99392">GUINEE-BISSAU</data:p>
+ <data:p V="99320">ILES PORTUGAISES DE L'OCEAN INDIEN</data:p>
+ <data:p V="99332">KENYA</data:p>
+ <data:p V="99348">LESOTHO</data:p>
+ <data:p V="99302">LIBERIA</data:p>
+ <data:p V="99316">LIBYE</data:p>
+ <data:p V="99333">MADAGASCAR</data:p>
+ <data:p V="99334">MALAWI</data:p>
+ <data:p V="99335">MALI</data:p>
+ <data:p V="99350">MAROC</data:p>
+ <data:p V="99390">MAURICE</data:p>
+ <data:p V="99336">MAURITANIE</data:p>
+ <data:p V="99393">MOZAMBIQUE</data:p>
+ <data:p V="99311">NAMIBIE</data:p>
+ <data:p V="99337">NIGER</data:p>
+ <data:p V="99338">NIGERIA</data:p>
+ <data:p V="99308">OCEAN INDIEN (TERRITOIRE BRITANNIQUE DE L')</data:p>
+ <data:p V="99339">OUGANDA</data:p>
+ <data:p V="99313">PRESIDES</data:p>
+ <data:p V="99313">PROVINCES ESPAGNOLES D'AFRIQUE</data:p>
+ <data:p V="99340">RWANDA</data:p>
+ <data:p V="99389">SAHARA OCCIDENTAL</data:p>
+ <data:p V="99306">SAINTE-HELENE</data:p>
+ <data:p V="99394">SAO TOME-ET-PRINCIPE</data:p>
+ <data:p V="99341">SENEGAL</data:p>
+ <data:p V="99398">SEYCHELLES</data:p>
+ <data:p V="99342">SIERRA LEONE</data:p>
+ <data:p V="99318">SOMALIE</data:p>
+ <data:p V="99343">SOUDAN</data:p>
+ <data:p V="99307">SOUDAN ANGLO-EGYPTIEN, KENYA, OUGANDA</data:p>
+ <data:p V="99391">SWAZILAND</data:p>
+ <data:p V="99325">TANGER</data:p>
+ <data:p V="99309">TANZANIE</data:p>
+ <data:p V="99344">TCHAD</data:p>
+ <data:p V="99345">TOGO</data:p>
+ <data:p V="99351">TUNISIE</data:p>
+ <data:p V="99346">ZAMBIE</data:p>
+ <data:p V="99308">ZANZIBAR</data:p>
+ <data:p V="99310">ZIMBABWE</data:p>
+ <data:p V="99404">ALASKA</data:p>
+ <data:p V="99425">ANGUILLA</data:p>
+ <data:p V="99441">ANTIGUA-ET-BARBUDA</data:p>
+ <data:p V="99431">ANTILLES NEERLANDAISES</data:p>
+ <data:p V="99415">ARGENTINE</data:p>
+ <data:p V="99431">ARUBA</data:p>
+ <data:p V="99436">BAHAMAS</data:p>
+ <data:p V="99434">BARBADE</data:p>
+ <data:p V="99429">BELIZE</data:p>
+ <data:p V="99425">BERMUDES</data:p>
+ <data:p V="99418">BOLIVIE</data:p>
+ <data:p V="99416">BRESIL</data:p>
+ <data:p V="99425">CAIMAN (ILES)</data:p>
+ <data:p V="99401">CANADA</data:p>
+ <data:p V="99417">CHILI</data:p>
+ <data:p V="99419">COLOMBIE</data:p>
+ <data:p V="99406">COSTA RICA</data:p>
+ <data:p V="99407">CUBA</data:p>
+ <data:p V="99408">DOMINICAINE (REPUBLIQUE)</data:p>
+ <data:p V="99438">DOMINIQUE</data:p>
+ <data:p V="99414">EL SALVADOR</data:p>
+ <data:p V="99420">EQUATEUR</data:p>
+ <data:p V="99404">ETATS-UNIS</data:p>
+ <data:p V="99427">GEORGIE DU SUD ET LES ILES SANDWICH DU SUD</data:p>
+ <data:p V="99435">GRENADE</data:p>
+ <data:p V="99430">GROENLAND</data:p>
+ <data:p V="99409">GUATEMALA</data:p>
+ <data:p V="99428">GUYANA</data:p>
+ <data:p V="99410">HAITI</data:p>
+ <data:p V="99411">HONDURAS</data:p>
+ <data:p V="99426">JAMAIQUE</data:p>
+ <data:p V="99403">LABRADOR</data:p>
+ <data:p V="99427">MALOUINES, OU FALKLAND (ILES)</data:p>
+ <data:p V="99405">MEXIQUE</data:p>
+ <data:p V="99425">MONTSERRAT</data:p>
+ <data:p V="99412">NICARAGUA</data:p>
+ <data:p V="99413">PANAMA</data:p>
+ <data:p V="99421">PARAGUAY</data:p>
+ <data:p V="99422">PEROU</data:p>
+ <data:p V="99432">PORTO RICO</data:p>
+ <data:p V="99442">SAINT-CHRISTOPHE-ET-NIEVES</data:p>
+ <data:p V="99439">SAINTE-LUCIE</data:p>
+ <data:p V="99440">SAINT-VINCENT-ET-LES GRENADINES</data:p>
+ <data:p V="99437">SURINAME</data:p>
+ <data:p V="99432">TERR. DES ETATS-UNIS D'AMERIQUE EN AMERIQUE</data:p>
+ <data:p V="99427">TERR. DU ROYAUME-UNI DANS L'ATLANTIQUE SUD</data:p>
+ <data:p V="99402">TERRE-NEUVE</data:p>
+ <data:p V="99431">TERRITOIRE DES PAYS-BAS</data:p>
+ <data:p V="99425">TERRITOIRES DU ROYAUME-UNI AUX ANTILLES</data:p>
+ <data:p V="99433">TRINITE-ET-TOBAGO</data:p>
+ <data:p V="99425">TURKS ET CAIQUES (ILES)</data:p>
+ <data:p V="99423">URUGUAY</data:p>
+ <data:p V="99424">VENEZUELA</data:p>
+ <data:p V="99425">VIERGES BRITANNIQUES (ILES)</data:p>
+ <data:p V="99432">VIERGES DES ETATS-UNIS (ILES)</data:p>
+ <data:p V="99501">AUSTRALIE</data:p>
+ <data:p V="99501">CHRISTMAS (ILE)</data:p>
+ <data:p V="99501">COCOS ou KEELING (ILES)</data:p>
+ <data:p V="99502">COOK (ILES)</data:p>
+ <data:p V="99508">FIDJI</data:p>
+ <data:p V="99505">GUAM</data:p>
+ <data:p V="99504">HAWAII (ILES)</data:p>
+ <data:p V="99501">HEARD ET MACDONALD (ILES)</data:p>
+ <data:p V="99513">KIRIBATI</data:p>
+ <data:p V="99505">MARIANNES DU NORD (ILES)</data:p>
+ <data:p V="99515">MARSHALL (ILES)</data:p>
+ <data:p V="99516">MICRONESIE (ETATS FEDERES DE)</data:p>
+ <data:p V="99507">NAURU</data:p>
+ <data:p V="99502">NIUE</data:p>
+ <data:p V="99501">NORFOLK (ILE)</data:p>
+ <data:p V="99502">NOUVELLE-ZELANDE</data:p>
+ <data:p V="99517">PALAOS (ILES)</data:p>
+ <data:p V="99510">PAPOUASIE-NOUVELLE-GUINEE</data:p>
+ <data:p V="99503">PITCAIRN (ILE)</data:p>
+ <data:p V="99512">SALOMON (ILES)</data:p>
+ <data:p V="99505">SAMOA AMERICAINES</data:p>
+ <data:p V="99506">SAMOA OCCIDENTALES</data:p>
+ <data:p V="99505">TERR. DES ETATS-UNIS D'AMERIQUE EN OCEANIE</data:p>
+ <data:p V="99502">TOKELAU</data:p>
+ <data:p V="99509">TONGA</data:p>
+ <data:p V="99511">TUVALU</data:p>
+ <data:p V="99514">VANUATU</data:p>
+ </data:codePaysINSEE>
+ <data:typeAdresse>
+ <data:a V="0"></data:a>
+ <data:a V="1">principal</data:a>
+ <data:a V="2">secondaire</data:a>
+ </data:typeAdresse>
+ <data:moyenPaiement>
+ <data:m type="01">Numéraire</data:m>
+ <data:m type="02">Chèque</data:m>
+ <data:m type="03">Virement</data:m>
+ <data:m type="04">Virement appli externe</data:m>
+ <data:m type="05">Virement gros montant</data:m>
+ <data:m type="06">Virement à l'étranger</data:m>
+ <data:m type="07">Opération budget rattaché</data:m>
+ <data:m type="08">Opération d'ordre</data:m>
+ <data:m type="09">Autres</data:m>
+ <data:m type="10">Prélèvement</data:m>
+ <data:m type="11">Virement interne</data:m>
+ </data:moyenPaiement>
+ </data:data>
+ </xsl:variable>
+
+ <!-- template pour convertir le code du Type de bordereau en libellé -->
+ <xsl:template name="typeBordereauLibelle">
+ <xsl:param name="typeBord"/>
+ <xsl:value-of select="$data/data:data/data:typeBordereau/data:t[@type=$typeBord]/text()"/>
+ </xsl:template>
+ <!-- pour convertir le code du Type de pièce en libellé -->
+ <xsl:template name="typePieceLibelle">
+ <xsl:param name="typePiece"/>
+ <xsl:value-of select="$data/data:data/data:typePiece/data:t[@type=$typePiece]/text()"/>
+ </xsl:template>
+ <!-- pour convertir le code de la nature de pièce en libellé -->
+ <xsl:template name="naturePieceLibelle">
+ <xsl:param name="naturePiece"/>
+ <xsl:value-of select="$data/data:data/data:naturePiece/data:n[@type=$naturePiece]/text()"/>
+ </xsl:template>
+ <!-- pour convertir le type de pièce d'origine en libellé -->
+ <xsl:template name="typePieceOrigine">
+ <xsl:param name="typePiece"/>
+ <xsl:value-of select="$data/data:data/data:typePieceOrigine/data:t[@type=$typePiece]/text()"/>
+ </xsl:template>
+ <!-- pour le type d'identifiant du tiers au niveau national -->
+ <xsl:template name="typeTiersNational">
+ <xsl:param name="typeTiers"/>
+ <xsl:value-of select="$data/data:data/data:typeTiersNational/data:t[@type=$typeTiers]/text()"/>
+ </xsl:template>
+ <!-- catégorie du tiers -->
+ <xsl:template name="categorieTiers">
+ <xsl:param name="catTiers"/>
+ <xsl:value-of select="$data/data:data/data:categorieTiers/data:c[@V=$catTiers]/text()"/>
+ </xsl:template>
+ <!-- Nature juridique du tiers -->
+ <xsl:template name="natureJuridiqueTiers">
+ <xsl:param name="natJur"/>
+ <xsl:value-of select="$data/data:data/data:natureJuridiqueTiers/data:t[@V=$natJur]/text()"/>
+ </xsl:template>
+ <!-- Correspondance entre le code de pays INSEE et son nom -->
+ <xsl:template name="codePaysINSEE" xmlns:data="data.uri">
+ <xsl:param name="codePays"/>
+ <xsl:value-of select="$data/data:data/data:codePaysINSEE/data:p[@V=$codePays]/text()"/>
+ </xsl:template>
+ <!-- Type d'adresse -->
+ <xsl:template name="typeAdresse">
+ <xsl:param name="codeType"/>
+ <xsl:value-of select="$data/data:data/data:typeAdresse/data:a[@V=$codeType]/text()"/>
+ </xsl:template>
+ <!-- pour le moyen de paiement -->
+ <xsl:template name="moyenPaiement">
+ <xsl:param name="typeMoyen"/>
+ <xsl:value-of select="$data/data:data/data:moyenPaiement/data:m[@type=$typeMoyen]/text()"/>
+ </xsl:template>
+
+ <xsl:template name="slash-date">
+ <xsl:param name="datebrute"/>
+ <!--date xmlns:data="data.uri" xsl:exclude-result-prefixes="data"-->
+ <xsl:value-of select="substring($datebrute, 9, 2)"/>
+ <xsl:text>/</xsl:text>
+ <xsl:value-of select="substring($datebrute, 6, 2)"/>
+ <xsl:text>/</xsl:text>
+ <xsl:value-of select="substring($datebrute, 1, 4)"/>
+ <!--/date-->
+ </xsl:template>
+ <xsl:template name="number">
+ <xsl:param name="num"/>
+ <xsl:choose>
+ <xsl:when test="string-length(string($num)) = 0"/>
+ <xsl:when test="number($num) = 0">0,00</xsl:when>
+ <xsl:when test="string(number($num)) = 'NaN'"/>
+ <xsl:otherwise>
+ <xsl:value-of select="format-number($num,'# ###,00;-# ###,00','decformat')"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <!-- début du document -->
+ <xsl:template match="/n:PES_Aller">
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <head>
+ <style type="text/css">
+ @page {
+ size: 29.7cm 21cm;
+ margin: 0.5 0.5 0.5 0.5;
+ }
+ body {
+ width: 26.7cm;
+ font-family: verdana, sans-serif;
+ font-size: 10px;
+ background-color: #FFFFFF;
+ }
+ div.divpage {
+ width: 29cm;
+ margin: 0 0 0 0;
+ }
+ table { border-collapse: collapse; }
+ table.inner {
+ font-size: 10px;
+ }
+ table.entete {
+ margin: 0;
+ border-style: none;
+ border-width: 0px;
+ border-color: black;
+ width: 100%;
+ font-size: 14px;
+ }
+ anomalie { background-color: #FFFF66; }
+ tr { margin: 0; }
+ td {
+ margin: 0;
+ border-style: inset;
+ border-width: 1px;
+ border-color: black;
+ vertical-align: top;
+ line-height: 13px;
+ }
+ td.colonne1 {
+ width: 6cm;
+ border-style: none;
+ }
+ td.colonne1bis {
+ width: 21cm;
+ border-style: none;
+ }
+ td.colonne2 {
+ width: 15cm;
+ text-align: center;
+ border-style: none;
+ }
+ td.colonne3 {
+ width: 3.5cm;
+ border-style: none;
+ }
+ td.colonne4 {
+ width: 3cm;
+ border-style: none;
+ }
+ table.enteteTablePrincipale {
+ font-size: 10px;
+ text-align: center;
+ width: 100%;
+ }
+ td.principaleCol1 {
+ width: 6.5cm;
+ }
+ td.principaleCol2 {
+ width: 2cm;
+ }
+ td.principaleCol3 {
+ width: 6.5cm;
+ }
+ td.principaleCol4 {
+ width: 1.7cm;
+ }
+ td.principaleCol5 {
+ width: 1.7cm;
+ }
+ td.principaleCol6 {
+ width: 1.6cm;
+ }
+ td.principaleCol7 {
+ width: 2.5cm;
+ }
+ td.principaleCol8 {
+ width: 2.5cm;
+ }
+ td.principaleCol9 {
+ width: 2.5cm;
+ }
+ table.totaux {
+ width: 100%;
+ font-size: 10px;
+ border-style: none;
+ }
+ td.sansBordure {
+ border-style: none;
+ }
+ td.mandatCol1 {
+ width: 5.5cm;
+ border-style: none none solid solid;
+ }
+ td.mandatCol2 {
+ width: 1cm;
+ border-style: none none solid solid;
+ }
+ td.mandatCol3 {
+ width: 4cm;
+ border-style: none none solid solid;
+ }
+ td.mandatCol3a {
+ width: 2cm;
+ text-align: left;
+ border-style: none none solid solid;
+ }
+ td.mandatCol3b {
+ width: 2cm;
+ text-align: right;
+ border-style: none none solid none;
+ }
+ td.mandatCol4 {
+ width: 6cm;
+ border-style: none none solid solid;
+ }
+ td.mandatCol4a {
+ width: 4cm;
+ text-align: left;
+ border-style: none none solid solid;
+ }
+ td.mandatCol4b {
+ width: 2cm;
+ text-align: right;
+ border-left-style: none;
+ border-style: none none solid none;
+ }
+ td.mandatCol5 {
+ width: 1.5cm;
+ border-style: none none solid solid;
+ }
+ td.mandatCol6 {
+ width: 1.5cm;
+ border-style: none none solid solid;
+ }
+ td.mandatCol7 {
+ width: 1.5cm;
+ border-style: none none solid solid;
+ }
+ td.mandatCol8 {
+ width: 6.5cm;
+ border-style: none solid solid solid;
+ }
+ td.mandatCol8a {
+ width: 4cm;
+ text-align: left;
+ border-style: none none solid solid;
+ }
+ td.mandatCol8b {
+ width: 2.5cm;
+ text-align: right;
+ border-style: none solid solid none;
+ }
+ table.footer {
+ margin: 0;
+ border-style: none;
+ width: 100%;
+ font-size: 12px;
+ }
+ td.totalLibelle {
+ width: 6cm;
+ }
+ td.totalValeur {
+ width: 2cm;
+ text-align: right;
+ }
+ td.right {
+ text-align: right;
+ }
+ table.noborder {
+ border-style: none;
+ }
+ tr.noborder {
+ border-style: none;
+ }
+ td.noborder {
+ border-style: none;
+ }
+ noupper { border-top-style: none; }
+ :link { color: #0000EE; background: transparent }
+ :visited { color: #551A8B; background: transparent }
+ a:active { color: #0000EE; background: transparent }
+ a:link img, a:visited img { border-style: none }
+ .gras { font-weight: bold; }
+ .pj { font-size: 10px; font-weight: normal; }
+ li.pj { list-style-type: none; margin-left: -20px; }
+ .rouge { color: red; font-weight: bold; }
+ </style>
+ <title><xsl:choose><xsl:when test="$elementId='Bordereau'">Bordereau</xsl:when><xsl:otherwise>Titre</xsl:otherwise></xsl:choose> de recette</title>
+ </head>
+ <body>
+ <!--div>param elementId = <xsl:value-of select="$elementId"/><br />param mandatId = <xsl:value-of select="$mandatId"/><br />param browser-destination = <xsl:value-of select="$browser-destination"/><br />AnoId = <xsl:value-of select="$anoId"></xsl:value-of><br />param primary-key = <xsl:value-of select="$primaryKey"/><br/>variable bordereau = <xsl:value-of select="$bordereau"/><br/><tags-ano><xsl:for-each select="$tags-ano/node"><node id="<xsl:value-of select="./@id"/>"/></xsl:for-each></tags-ano></div>
+ <div>Informations = <xsl:value-of select="node-name($bordereau)"></xsl:value-of></div-->
+ <!--div class="divpage"-->
+ <xsl:choose>
+ <xsl:when test="$elementId='Bordereau'">
+ <!-- pour un bordereau -->
+ <!-- table pour l'entête -->
+ <table class="entete" cellspacing="0">
+ <tr>
+ <td class="colonne1">
+ <xsl:element name="codique">
+ <xsl:variable name="idPostNodeId" select="./n:EnTetePES/n:IdPost/@ano:node-id"/>
+ <xsl:if test="count($tags-ano/node[@id = $idPostNodeId]) > 0"><xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute></xsl:if>
+ <xsl:value-of select="./n:EnTetePES/n:IdPost/@V"/>
+ </xsl:element>
+ <xsl:value-of select="./n:EnTetePES/n:LibellePoste/@V"/>
+ </td>
+ <td class="colonne2">
+ <!--img src="xemelios:/resource?helios.png" alt="*logo helios*"/-->
+ </td>
+ <td class="colonne3">Exercice</td>
+ <xsl:element name="td">
+ <xsl:attribute name="class">colonne4</xsl:attribute>
+ <xsl:variable name="currentNodeId" select="$bordereau/n:BlocBordereau/n:Exer/@ano:node-id"/>
+ <xsl:if test="count($tags-ano/node[@id = $currentNodeId]) > 0">
+ <xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute>
+ </xsl:if>
+ <xsl:value-of select="$bordereau/n:BlocBordereau/n:Exer/@V"/>
+ </xsl:element>
+ </tr>
+ </table>
+ <p><br/></p>
+ <!-- table pour le titre du bordereau -->
+ <table class="entete" cellspacing="0">
+ <tr>
+ <td class="colonne1">
+ <xsl:element name="codeCol">
+ <xsl:variable name="codColNodeId" select="./n:EnTetePES/n:CodCol/@ano:node-id"/>
+ <xsl:if test="count($tags-ano/node[@id = $codColNodeId]) > 0"><xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute></xsl:if>
+ <xsl:value-of select="./n:EnTetePES/n:CodCol/@V"/>
+ </xsl:element>
+
+ <xsl:element name="codeBudget">
+ <xsl:variable name="codBudNodeId" select="./n:EnTetePES/n:CodBud/@ano:node-id"/>
+ <xsl:if test="count($tags-ano/node[@id = $codBudNodeId]) > 0"><xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute></xsl:if>
+ <xsl:value-of select="./n:EnTetePES/n:CodBud/@V"/>
+ </xsl:element>
+
+ <xsl:value-of select="./n:EnTetePES/n:LibelleColBud/@V"/><br/>
+
+ <xsl:element name="siret">
+ <xsl:variable name="idCollNodeId" select="./n:EnTetePES/n:IdColl/@ano:node-id"/>
+ <xsl:if test="count($tags-ano/node[@id = $idCollNodeId]) > 0"><xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute></xsl:if>
+ <xsl:value-of select="./n:EnTetePES/n:IdColl/@V"/>
+ </xsl:element>
+ </td>
+ <td class="colonne2">Bordereau <span><xsl:variable name="nodeIdTypBord" select="$bordereau/n:BlocBordereau/n:TypBord/@ano:node-id"/><xsl:if test="count($tags-ano/node[@id = $nodeIdTypBord]) > 0"><xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute></xsl:if><xsl:call-template name="typeBordereauLibelle" ><xsl:with-param name="typeBord" select="$bordereau/n:BlocBordereau/n:TypBord/@V"/></xsl:call-template></span><br/>
+ <span><xsl:variable name="nodeIdNbrPce" select="$bordereau/n:BlocBordereau/n:NbrPce/@ano:node-id"/><xsl:if test="count($tags-ano/node[@id = $nodeIdNbrPce]) > 0"><xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute></xsl:if><xsl:value-of select="$bordereau/n:BlocBordereau/n:NbrPce/@V"/></span> <xsl:choose>
+ <xsl:when test="$bordereau/n:BlocBordereau/n:NbrPce/@V = 1">Titre</xsl:when>
+ <xsl:otherwise>Titres</xsl:otherwise>
+ </xsl:choose>
+ </td>
+ <td class="colonne3">Bordereau</td>
+ <td class="colonne4"><xsl:value-of select="$bordereau/n:BlocBordereau/n:IdBord/@V"/></td>
+ </tr>
+ <tr>
+ <td colspan="2" class="noborder"> </td><td class="noborder">Date d'émission</td><td class="noborder"><xsl:call-template name="slash-date"><xsl:with-param name="datebrute" select="$bordereau/n:BlocBordereau/n:DteBordEm/@V"></xsl:with-param></xsl:call-template></td>
+ </tr>
+ </table>
+ <p><br/></p>
+ <!-- entete de la table principale -->
+ <table class="enteteTablePrincipale" cellspacing="0">
+ <tr>
+ <td class="principaleCol1" style="border-bottom-style: none;">Nom et adresse du débiteur</td>
+ <td class="principaleCol2" style="border-bottom-style: none;">Titre</td>
+ <td class="principaleCol3" style="border-bottom-style: none;">Objet titre</td>
+ <td colspan="3" style="text-align:center;border-bottom-style: none;border-right-style: none;">Imputation</td>
+ <td class="principaleCol7" style="border-bottom-style: none;">Somme</td>
+ <td class="principaleCol8" style="border-bottom-style: none;">Somme</td>
+ <td class="principaleCol9" style="border-bottom-style: none;">Somme</td>
+ </tr>
+ <tr>
+ <td class="principaleCol1" style="border-top-style: none;"> </td>
+ <td class="principaleCol2" style="border-top-style: none;"> </td>
+ <td class="principaleCol3" style="border-top-style: none;"> </td>
+ <td class="principaleCol4">Nature</td>
+ <td class="principaleCol5">Fonction</td>
+ <td class="principaleCol6">Opération</td>
+ <td class="principaleCol7" style="border-top-style: none;">HT</td>
+ <td class="principaleCol8" style="border-top-style: none;">TVA</td>
+ <td class="principaleCol9" style="border-top-style: none;">TTC</td>
+ </tr>
+ <!-- contenu de la table principale -->
+ <xsl:for-each select="$bordereau/n:Piece" >
+ <xsl:element name="tr">
+ <xsl:if test="count($tags-ano/node[@id = ./@ano:node-id]) > 0"><xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute></xsl:if>
+ <!--xsl:if test="$tags-ano/node[@id = ./@ano:node-id]"-->
+ <xsl:variable name="currentNodeId" select="./n:BlocPiece/@ano:node-id"/>
+ <!--xsl:attribute name="node-id"><xsl:value-of select="$currentNodeId"/></xsl:attribute-->
+ <xsl:if test="count($tags-ano/node[@id = $currentNodeId]) > 0">
+ <xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute>
+ </xsl:if>
+ <td class="principaleCol1">
+ <xsl:choose>
+ <xsl:when test="count(distinct-values(n:LigneDePiece/n:Tiers[1]/n:InfoTiers/@added:key)) = 1">
+ <span><xsl:variable name="nodeIdInfoTiers" select="./n:LigneDePiece[1]/n:Tiers[1]/n:InfoTiers/@ano:node-id"/><xsl:variable name="nodeIdTypeTiers" select="./n:LigneDePiece[1]/n:Tiers[1]/n:InfoTiers/n:TypTiers/@ano:node-id"/>
+ <xsl:if test="count($tags-ano/node[@id = $nodeIdTypeTiers]) > 0"><span style="background-color: #FFFF66;">TypTiers : <xsl:value-of select="./n:LigneDePiece[1]/n:Tiers[1]/n:InfoTiers/n:TypTiers/@V"/></span></xsl:if>
+ <xsl:if test="count($tags-ano/node[@id = $nodeIdInfoTiers]) > 0"><xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute></xsl:if>
+ <xsl:if test="string-length(./n:LigneDePiece[1]/n:Tiers[1]/n:InfoTiers/n:Nom/@V) > 0"><xsl:value-of select="./n:LigneDePiece[1]/n:Tiers[1]/n:InfoTiers/n:Nom/@V"/> </xsl:if>
+ <xsl:if test="string-length(./n:LigneDePiece[1]/n:Tiers[1]/n:InfoTiers/n:Prenom/@V) > 0"><xsl:value-of select="./n:LigneDePiece[1]/n:Tiers[1]/n:InfoTiers/n:Prenom/@V"/> </xsl:if>
+ <xsl:if test="string-length(./n:LigneDePiece[1]/n:Tiers[1]/n:InfoTiers/n:ComplNom/@V) > 0"><xsl:value-of select="./n:LigneDePiece[1]/n:Tiers[1]/n:InfoTiers/n:ComplNom/@V"/> </xsl:if>
+ <xsl:if test="(string-length(./n:LigneDePiece[1]/n:Tiers[1]/n:InfoTiers/n:Nom/@V)+string-length(./n:LigneDePiece[1]/n:Tiers[1]/n:InfoTiers/n:Prenom/@V)+string-length(./n:LigneDePiece[1]/n:Tiers[1]/n:InfoTiers/n:ComplNom/@V)) > 0"><br/></xsl:if>
+ <xsl:if test="string-length(./n:LigneDePiece[1]/n:Tiers[1]/n:Adresse/n:Adr1/@V) > 0"><xsl:value-of select="./n:LigneDePiece[1]/n:Tiers[1]/n:Adresse/n:Adr1/@V"/><br/></xsl:if>
+ <xsl:if test="string-length(./n:LigneDePiece[1]/n:Tiers[1]/n:Adresse/n:Adr2/@V) > 0"><xsl:value-of select="./n:LigneDePiece[1]/n:Tiers[1]/n:Adresse/n:Adr2/@V"/><br/></xsl:if>
+ <xsl:if test="string-length(./n:LigneDePiece[1]/n:Tiers[1]/n:Adresse/n:CP/@V)+string-length(./n:LigneDePiece[1]/n:Tiers[1]/n:Adresse/n:Ville/@V) > 0"><xsl:value-of select="./n:LigneDePiece[1]/n:Tiers[1]/n:Adresse/n:CP/@V"/> <xsl:value-of select="./n:LigneDePiece[1]/n:Tiers[1]/n:Adresse/n:Ville/@V"/></xsl:if><xsl:if test="./n:LigneDePiece[1]/n:Tiers[1]/n:Adresse/n:CodPays"> - <xsl:call-template name="codePaysINSEE">
+ <xsl:with-param name="codePays" select="./n:LigneDePiece[1]/n:Tiers[1]/n:Adresse/n:CodPays/@V"></xsl:with-param>
+ </xsl:call-template></xsl:if>
+ </span>
+ </xsl:when>
+ <xsl:otherwise>DIVERS DEBITEURS</xsl:otherwise>
+ </xsl:choose>
+ </td>
+ <xsl:element name="td">
+ <xsl:attribute name="class">principaleCol2</xsl:attribute>
+ <xsl:variable name="nodeIdPiece" select="./n:BlocPiece/n:IdPce/@ano:node-id"/>
+ <xsl:if test="count($tags-ano/node[@id = $nodeIdPiece]) > 0">
+ <xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute>
+ </xsl:if>
+ <xsl:if test="$browser-destination = 'internal'"><xsl:element name="a"><xsl:attribute name="href">xemelios:/query?docId=pes-aller&etatId=PES_RecetteAller&elementId=BordereauRecette&collectivite=<xsl:value-of select="../../../n:EnTetePES/n:IdColl/@V"/>&budget=<xsl:value-of select="../../../n:EnTetePES/n:CodBud/@V"/>&path=[@added:primary-key='<xsl:value-of select="../@added:primary-key"/>']&xsl:param=(mandatId,<xsl:value-of select="n:BlocPiece/n:IdPce/@V"/>)</xsl:attribute><xsl:value-of select="./n:BlocPiece/n:IdPce/@V"/></xsl:element></xsl:if>
+ <xsl:if test="$browser-destination = 'external'"><xsl:value-of select="./n:BlocPiece/n:IdPce/@V"/></xsl:if>
+ </xsl:element>
+ <td class="principaleCol3">
+ <span>
+ <xsl:choose>
+ <xsl:when test="./n:BlocPiece/n:ObjPce/@V"><xsl:value-of select="./n:BlocPiece/n:ObjPce/@V"/></xsl:when>
+ <xsl:otherwise><xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute>[NON RENSEIGNE]</xsl:otherwise>
+ </xsl:choose>
+ </span><br/>
+ <span>
+ <xsl:variable name="nodeIdTypPce" select="./n:BlocPiece/n:TypPce/@ano:node-id"/>
+ <xsl:if test="count($tags-ano/node[@id = $nodeIdTypPce]) > 0"><xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute></xsl:if>
+ <xsl:call-template name="typePieceLibelle" >
+ <xsl:with-param name="typePiece" select="./n:BlocPiece/n:TypPce/@V" />
+ </xsl:call-template></span><br/>
+ <span>
+ <xsl:variable name="nodeIdNatPce" select="./n:BlocPiece/n:NatPce/@ano:node-id"/>
+ <xsl:if test="count($tags-ano/node[@id = $nodeIdNatPce]) > 0"><xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute></xsl:if>
+ <xsl:call-template name="naturePieceLibelle" >
+ <xsl:with-param name="naturePiece" select="./n:BlocPiece/n:NatPce/@V" />
+ </xsl:call-template></span><br/>
+ </td>
+
+ <!-- boucler dans les colonnes suivantes quand il y a plusieurs créanciers -->
+ <td class="principaleCol4">
+ <xsl:for-each-group select="./n:LigneDePiece/n:BlocLignePiece/n:InfoLignePiece" group-by="@added:imputation">
+ <span><xsl:if test="count($tags-ano/node/@id intersect current-group()/n:Nature/@ano:node-id) > 0"><xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute></xsl:if>
+ <xsl:value-of select="current-group()[1]/n:Nature/@V"/></span><br/>
+ </xsl:for-each-group>
+ </td>
+ <td class="principaleCol5">
+ <xsl:for-each-group select="./n:LigneDePiece/n:BlocLignePiece/n:InfoLignePiece" group-by="@added:imputation">
+ <span><xsl:if test="count($tags-ano/node/@id intersect current-group()/n:Fonction/@ano:node-id) > 0"><xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute></xsl:if>
+ <xsl:value-of select="current-group()[1]/n:Fonction/@V"/></span><br/>
+ </xsl:for-each-group>
+ </td>
+ <td class="principaleCol6">
+ <xsl:for-each-group select="./n:LigneDePiece/n:BlocLignePiece/n:InfoLignePiece" group-by="@added:imputation">
+ <span><xsl:if test="count($tags-ano/node/@id intersect current-group()/n:Operation/@ano:node-id) > 0"><xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute></xsl:if>
+ <xsl:value-of select="current-group()[1]/n:Operation/@V"/></span><br/>
+ </xsl:for-each-group>
+ </td>
+ <td class="principaleCol7">
+ <xsl:for-each-group select="./n:LigneDePiece/n:BlocLignePiece/n:InfoLignePiece" group-by="@added:imputation">
+ <xsl:call-template name="number"><xsl:with-param name="num" select="sum(current-group()/n:MtHT/@V)"/></xsl:call-template><br/>
+ </xsl:for-each-group>
+ </td>
+ <td class="principaleCol8">
+ <xsl:for-each-group select="./n:LigneDePiece/n:BlocLignePiece/n:InfoLignePiece" group-by="@added:imputation">
+ <xsl:call-template name="number"><xsl:with-param name="num" select="sum(current-group()/n:MtTVA/@V)"/></xsl:call-template><br/>
+ </xsl:for-each-group>
+ </td>
+ <td class="principaleCol9">
+ <xsl:for-each-group select="./n:LigneDePiece/n:BlocLignePiece/n:InfoLignePiece" group-by="@added:imputation">
+ <xsl:call-template name="number"><xsl:with-param name="num" select="sum(current-group()/n:MtHT/@V)+sum(current-group()/n:MtTVA/@V)"/></xsl:call-template><br/>
+ </xsl:for-each-group>
+ </td>
+ </xsl:element>
+ </xsl:for-each>
+ </table>
+ <p><br/></p>
+ <!-- table pour les totaux -->
+ <xsl:variable name="totalTVABordereau">
+ <xsl:choose>
+ <xsl:when test="$bordereau/n:BlocBordereau/n:MtBordTVA/@V > 0">
+ <xsl:value-of select="$bordereau/n:BlocBordereau/n:MtBordTVA/@V"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="0"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="totalTTCBordereau" select="$bordereau/n:BlocBordereau/n:MtBordHt/@V + $totalTVABordereau"/>
+
+ <xsl:variable name="minMandat">
+ <xsl:for-each select="$bordereau/n:Piece/n:BlocPiece/n:IdPce/@V">
+ <xsl:sort data-type="number" order="ascending"/>
+ <xsl:if test="position()=1"><xsl:value-of select="."/></xsl:if>
+ </xsl:for-each>
+ </xsl:variable>
+ <xsl:variable name="maxMandat">
+ <xsl:for-each select="$bordereau/n:Piece/n:BlocPiece/n:IdPce/@V">
+ <xsl:sort data-type="number" order="descending"/>
+ <xsl:if test="position()=1"><xsl:value-of select="."/></xsl:if>
+ </xsl:for-each>
+ </xsl:variable>
+ <table class="totaux" cellspacing="0">
+<!-- Mise en surbrillance des montant nulls ou negatifs. -->
+ <xsl:variable name="nodeHT" select="$bordereau/n:BlocBordereau/n:MtBordHt/@ano:node-id"/>
+ <xsl:variable name="nodeTVA" select="$bordereau/n:BlocBordereau/n:MtBordTVA/@ano:node-id"/>
+ <xsl:variable name="isNodeHTError" select="count($tags-ano/node[@id = $nodeHT]) > 0"/>
+ <xsl:variable name="isNodeTVAError" select="count($tags-ano/node[@id = $nodeTVA]) > 0"/>
+ <xsl:variable name="rowspan">
+ <xsl:choose>
+ <xsl:when test="$isNodeHTError">5</xsl:when>
+ <xsl:otherwise>4</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <tr>
+ <td class="noborder" rowspan="{$rowspan}">Arrêté le présent bordereau à la somme de <xsl:call-template name="number"><xsl:with-param name="num" select="$totalTTCBordereau"></xsl:with-param></xsl:call-template> euros.<br/>
+ <xsl:choose>
+ <xsl:when test="$minMandat = $maxMandat">Comprenant le titre n°<xsl:value-of select="$minMandat"/></xsl:when>
+ <xsl:otherwise>Comprenant les titres n°<xsl:value-of select="$minMandat"/> à <xsl:value-of select="$maxMandat"/></xsl:otherwise>
+ </xsl:choose>
+ <xsl:variable name="isSigned" select="exists($bordereau/ds:Signature)"/>
+ <xsl:variable name="signature" select="$bordereau/ds:Signature/ds:KeyInfo/ds:X509Data"/><!-- ds:X509Certificate/text()-->
+ <xsl:variable name="nomSignataire">
+ <xsl:choose>
+ <xsl:when test="$isSigned"><xsl:for-each select="$signature/ds:X509Certificate"><xsl:value-of select="xem:extractCN(./text())"/><xsl:if test="not(position() = last())"> / </xsl:if></xsl:for-each></xsl:when>
+ <xsl:otherwise>[NomSignataire]</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="role">
+ <xsl:choose>
+ <xsl:when test="$isSigned and $bordereau/ds:Signature/ds:Object/*[local-name()='QualifyingProperties']/*[local-name()='SignedProperties']/*[local-name()='SignedSignatureProperties']/*[local-name()='SignerRole']"><xsl:value-of select="$bordereau/ds:Signature/ds:Object/*[local-name()='QualifyingProperties']/*[local-name()='SignedProperties']/*[local-name()='SignedSignatureProperties']/*[local-name()='SignerRole']/*[local-name()='ClaimedRoles']/*[local-name()='ClaimedRole'][1]/text()"></xsl:value-of></xsl:when>
+ <xsl:otherwise>[Role]</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="email">
+ <xsl:choose>
+ <xsl:when test="$isSigned"><xsl:for-each select="$signature/ds:X509Certificate"><xsl:value-of select="xem:extractEMail(./text())"/><xsl:if test="not(position() = last())"> / </xsl:if></xsl:for-each></xsl:when>
+ <xsl:otherwise>[AdresseEMail]</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$isSigned"><br/><span class="rouge">Ce bordereau est signé. Ces éléments sont déduits du flux avec présence de signature électronique.</span></xsl:when>
+ <xsl:otherwise><br/><pre><xsl:value-of select="$bordereau/comment()"/></pre><span class="rouge">Ces éléments sont déduits du flux mais absence de signature électronique.</span></xsl:otherwise>
+ </xsl:choose>
+ <br/><br/>L'ordonnateur <xsl:value-of select="$nomSignataire"/><br/>
+ <xsl:value-of select="$role"/><br/>
+ <xsl:value-of select="/n:PES_Aller/n:EnTetePES/n:LibelleColBud/@V"/><br/>
+ <xsl:value-of select="$email"/><br/>
+ Tél : [NumeroTelephone]<br/>
+ le <span><xsl:variable name="nodeIdDteBordEm" select="$bordereau/n:BlocBordereau/n:DteBordEm/@ano:node-id"/><xsl:if test="count($tags-ano/node[@id = $nodeIdDteBordEm]) > 0"><xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute></xsl:if><xsl:call-template name="slash-date"><xsl:with-param name="datebrute" select="$bordereau/n:BlocBordereau/n:DteBordEm/@V"/></xsl:call-template></span>
+ </td>
+ <td class="totalLibelle" style="border-style: solid none none solid;">Total du présent bordereau</td>
+ <td class="totalValeur" style="border-style: solid solid none none;"><xsl:call-template name="number"><xsl:with-param name="num" select="$totalTTCBordereau"/></xsl:call-template></td>
+ </tr>
+ <xsl:if test="$isNodeHTError">
+ <tr style="background-color: #FFFF66;">
+ <td class="totalLibelle" style="border-style: none none none solid;">[MtBordHT]</td>
+ <td class="totalValeur" style="border-style: none solid none none;"><xsl:value-of select="$bordereau/n:BlocBordereau/n:MtBordHt/@V"/></td>
+ </tr>
+ </xsl:if>
+ <xsl:element name="tr">
+ <xsl:if test="$isNodeTVAError">
+ <xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute>
+ </xsl:if>
+ <!--td> </td-->
+ <td class="totalLibelle" style="border-style: none none none solid;"> dont TVA</td>
+ <td class="totalValeur" style="border-style: none solid none none;"><xsl:call-template name="number"><xsl:with-param name="num" select="$totalTVABordereau"/></xsl:call-template> </td>
+ </xsl:element>
+ <tr>
+ <!--td> </td-->
+ <td class="totalLibelle" style="border-style: none none none solid;">Total général au précédent bordereau</td>
+ <td class="totalValeur" style="border-style: none solid none none;"><xsl:call-template name="number"><xsl:with-param name="num" select="$bordereau/n:BlocBordereau/n:MtCumulAnnuel/@V - $totalTTCBordereau"/></xsl:call-template> </td>
+ </tr>
+ <tr>
+ <!--td> </td-->
+ <td class="totalLibelle" style="border-style: none none solid solid;">Cumul annuel</td>
+ <td class="totalValeur" style="border-style: none solid solid none;"><xsl:call-template name="number"><xsl:with-param name="num" select="$bordereau/n:BlocBordereau/n:MtCumulAnnuel/@V"/></xsl:call-template> </td>
+ </tr>
+ </table>
+ <p><br/></p>
+ <xsl:if test="$bordereau/ano:Anomalie">
+ <hr />
+ <xsl:for-each select="$bordereau/ano:Anomalie">
+ <xsl:element name="div">
+ <xsl:if test="$anoId = ./@ano:anoId">
+ <xsl:attribute name="style">background-color: #FFFF66</xsl:attribute>
+ </xsl:if>
+ <h3>
+ <xsl:element name="a">
+ <xsl:attribute name="name">AnoId_<xsl:value-of select="./@ano:anoId"/></xsl:attribute>
+ <xsl:attribute name="href">xemelios:/query?docId=pes-aller&etatId=PES_RecetteAller&elementId=BordereauRecette&collectivite=<xsl:value-of select="../../../n:EnTetePES/n:IdColl/@V"/>&budget=<xsl:value-of select="../../../n:EnTetePES/n:CodBud/@V"/>&path=[@added:primary-key='<xsl:value-of select="../@added:primary-key"/>']&xsl:param=(elementId,Bordereau)&xsl:param=(anoId,<xsl:value-of select="./@ano:anoId"/>)</xsl:attribute>
+ Anomalie <!--xsl:value-of select="./@ano:anoId"/-->
+ </xsl:element>
+ </h3>
+ <p><span class="gras">Contrôle : </span><xsl:value-of select="./@ano:ctrlId"/></p>
+ <p><span class="gras">Règle fonctionnelle : </span><xsl:value-of select="./ano:ctrlRegleFonct/text()" disable-output-escaping="yes"/></p>
+ <p><span class="gras">Message : </span><xsl:value-of select="./ano:message/text()" disable-output-escaping="yes"/></p>
+ <!--p><span class="gras">Noeuds : </span><xsl:for-each select="ano:node"><xsl:value-of select="./@ano:id"/>, </xsl:for-each></p-->
+ </xsl:element>
+ </xsl:for-each>
+ <hr />
+ </xsl:if>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <!-- Cas d'un titre -->
+ <!-- table pour l'entête -->
+ <table class="entete" cellspacing="0">
+ <tr>
+ <td class="colonne1">
+ <xsl:value-of select="./n:EnTetePES/n:IdPost/@V"/> <xsl:value-of select="./n:EnTetePES/n:LibellePoste/@V"/>
+ </td>
+ <td class="colonne2">
+ <!--img src="xemelios:/resource?helios.png" alt="*logo helios*"/-->
+ </td>
+ <td class="colonne3">Exercice</td>
+ <td class="colonne4"><xsl:value-of select="$bordereau/n:BlocBordereau/n:Exer/@V"/></td>
+ </tr>
+ </table>
+ <p><br/></p>
+ <xsl:for-each select="$bordereau/n:Piece[number(n:BlocPiece/n:IdPce/@V) = number($mandatId)]">
+ <!--xsl:if test="./@added:generated-id = $nodeId"-->
+ <!-- on calcule les totaux HT et TTC -->
+ <xsl:variable name="totalHT">
+ <xsl:value-of select="sum(./n:LigneDePiece/n:BlocLignePiece/n:InfoLignePiece/n:MtHT/@V)"/>
+ </xsl:variable>
+ <xsl:variable name="totalTTC">
+ <xsl:value-of select="sum(./n:LigneDePiece/n:BlocLignePiece/n:InfoLignePiece/n:MtTVA/@V) + sum(./n:LigneDePiece/n:BlocLignePiece/n:InfoLignePiece/n:MtHT/@V)"/>
+ </xsl:variable>
+ <!-- table pour le titre du mandat -->
+ <table class="entete" cellspacing="0">
+ <tr>
+ <td class="colonne1">
+ <xsl:value-of select="../../../n:EnTetePES/n:CodCol/@V"/><xsl:value-of select="../../../n:EnTetePES/n:CodBud/@V"/> <xsl:value-of select="../../../n:EnTetePES/n:LibelleColBud/@V"/><br/>
+ <xsl:value-of select="../../../n:EnTetePES/n:IdColl/@V"/>
+ <!-- MANQUE ServiceOrdonnateur : on n'a pas les données -->
+ <!-- MANQUE FinJur : on n'a pas les données -->
+ </td>
+ <td class="colonne2" style="font-weight:bold">
+
+ <xsl:call-template name="typePieceLibelle" >
+ <xsl:with-param name="typePiece" select="./n:BlocPiece/n:TypPce/@V" />
+ </xsl:call-template><br/>
+ <span>
+ <xsl:variable name="nodeIdNatPceP" select="./n:BlocPiece/n:NatPce/@ano:node-id"/>
+ <xsl:if test="count($tags-ano/node[@id = $nodeIdNatPceP]) > 0"><xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute></xsl:if>
+ <xsl:call-template name="naturePieceLibelle" >
+ <xsl:with-param name="naturePiece" select="./n:BlocPiece/n:NatPce/@V" />
+ </xsl:call-template></span><br/>
+ <xsl:choose>
+ <xsl:when test="string-length(./n:BlocPiece/n:ObjPce/@V) > 0"><xsl:value-of select="./n:BlocPiece/n:ObjPce/@V"/></xsl:when>
+ <xsl:otherwise>[ObjPce NON RENSEIGNE]</xsl:otherwise>
+ </xsl:choose><br/>
+ <!-- On calcule le nombre de PJ pour chaque type de support -->
+ <xsl:variable name="nbPJPieceElectro">
+ <xsl:value-of select="count(./n:BlocPiece/n:PJRef/n:Support[@V=01])"/>
+ </xsl:variable>
+ <xsl:variable name="nbPJPiecePapier">
+ <xsl:value-of select="count(./n:BlocPiece/n:PJRef/n:Support[@V=02])"/>
+ </xsl:variable>
+ <xsl:variable name="nbPJPieceCDROM">
+ <xsl:value-of select="count(./n:BlocPiece/n:PJRef/n:Support[@V=03])"/>
+ </xsl:variable>
+ <div style="font-size: 10px;text-align: left; margin-left: 5cm;">
+ <!-- xsl:choose>
+ <xsl:when test="$nbPJPieceElectro + $nbPJPiecePapier + $nbPJPieceCDROM = 0">
+ Non Justifié
+ </xsl:when>
+ <xsl:otherwise -->
+ Justifié par <xsl:value-of select="$nbPJPieceElectro + $nbPJPiecePapier + $nbPJPieceCDROM"/>
+ document(s) dont :<ul style="font-size:10px;margin-top:0px;">
+ <li><xsl:value-of select="$nbPJPieceElectro"/> document(s) en ligne<xsl:if test="$nbPJPieceElectro > 0">
+ <ul class="pj">
+ <xsl:for-each select="./n:BlocPiece/n:PJRef[n:Support/@V=01]">
+ <li class="pj">
+ <xsl:choose>
+ <xsl:when test="true()"><a>
+ <xsl:attribute name="href">xemelios:/attachment?pjId=<xsl:value-of select="./n:IdUnique/@V"/>&collectivite=<xsl:value-of select="/n:PES_Aller/n:EnTetePES/n:IdColl/@V"/></xsl:attribute>
+ <xsl:value-of select="./n:IdUnique/@V"/>
+ <xsl:choose>
+ <xsl:when test="string-length(./n:NomPJ/@V) > 0"> (<xsl:value-of select="./n:NomPJ/@V"/>)</xsl:when>
+ </xsl:choose>
+ </a></xsl:when>
+ <xsl:otherwise><xsl:value-of select="./n:IdUnique/@V"/>
+ <xsl:choose>
+ <xsl:when test="string-length(./n:NomPJ/@V) > 0"> (<xsl:value-of select="./n:NomPJ/@V"/>)</xsl:when>
+ </xsl:choose></xsl:otherwise>
+ </xsl:choose>
+ </li>
+ </xsl:for-each>
+ </ul>
+ </xsl:if></li>
+ <li><xsl:value-of select="$nbPJPiecePapier"/> document(s) papier<xsl:if test="$nbPJPiecePapier > 0">
+ <ul class="pj">
+ <xsl:for-each select="./n:BlocPiece/n:PJRef[n:Support/@V=02]">
+ <li class="pj"><xsl:choose>
+ <xsl:when test="string-length(./n:NomPJ/@V) > 0"><xsl:value-of select="./n:NomPJ/@V"/></xsl:when>
+ </xsl:choose><xsl:value-of select="./n:IdUnique/@V"/></li>
+ </xsl:for-each>
+ </ul>
+ </xsl:if></li>
+ <li><xsl:value-of select="$nbPJPieceCDROM"/> document(s) sur CDROM<xsl:if test="$nbPJPieceCDROM > 0">
+ <ul class="pj">
+ <xsl:for-each select="./n:BlocPiece/n:PJRef[n:Support/@V=03]">
+ <li class="pj"><xsl:choose>
+ <xsl:when test="string-length(./n:NomPJ/@V) > 0"><xsl:value-of select="./n:NomPJ/@V"/></xsl:when>
+ </xsl:choose><xsl:value-of select="./n:IdUnique/@V"/></li>
+ </xsl:for-each>
+ </ul>
+ </xsl:if></li>
+ </ul>
+ <!-- /xsl:otherwise>
+ </xsl:choose -->
+ </div>
+ </td>
+ <td class="colonne3">Titre<br/>Rôle<br/>Bordereau</td>
+ <td class="colonne4"><xsl:value-of select="./n:BlocPiece/n:IdPce/@V"/><br/>
+ <span><xsl:variable name="nodeIdIdRol" select="./n:BlocPiece/n:IdRol/@ano:node-id"/><xsl:if test="count($tags-ano/node[@id = $nodeIdIdRol]) > 0"><xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute></xsl:if><xsl:value-of select="./n:BlocPiece/n:IdRol/@V"/></span><br/>
+ <xsl:choose>
+ <xsl:when test="$browser-destination = 'internal'"><xsl:element name="a"><xsl:attribute name="href">xemelios:/query?docId=pes-aller&etatId=PES_RecetteAller&elementId=BordereauRecette&collectivite=<xsl:value-of select="/n:PES_Aller/n:EnTetePES/n:IdColl/@V"/>&budget=<xsl:value-of select="/n:PES_Aller/n:EnTetePES/n:CodBud/@V"/>&path=[@added:primary-key='<xsl:value-of select="../@added:primary-key"/>']&xsl:param=(elementId,Bordereau)</xsl:attribute><xsl:value-of select="../n:BlocBordereau/n:IdBord/@V"/></xsl:element></xsl:when>
+ <xsl:otherwise><xsl:value-of select="../n:BlocBordereau/n:IdBord/@V"/></xsl:otherwise>
+ </xsl:choose>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2" class="noborder"> </td><td class="noborder">Date d'émission</td><td class="noborder"><xsl:call-template name="slash-date"><xsl:with-param name="datebrute" select="../n:BlocBordereau/n:DteBordEm/@V"></xsl:with-param></xsl:call-template></td>
+ </tr>
+ </table>
+ <p style="text-align: center;">Titre exécutoire en application de l'article L252 A du Livre des procédures fiscales, pris, émis et rendu exécutoire<br/>conformément aux dispositions des articles R.2342-4 et D.3342-11 du code général des collectivités locales<br/></p>
+ <!-- entete de la table principale -->
+ <table class="enteteTablePrincipale" cellspacing="0">
+ <tr>
+ <td class="mandatCol1" rowspan="2" style="border-style: solid none solid solid;">Débiteur</td>
+ <td class="mandatCol2" rowspan="2" style="border-style: solid none solid solid;">Ligne</td>
+ <td class="mandatCol3" rowspan="2" style="border-style: solid none solid solid;">Pièce(s) de rattachement</td>
+ <td class="mandatCol4" rowspan="2" style="border-style: solid none solid solid;">Description</td>
+ <td colspan="3" style="text-align:center; border-bottom-style: solid;border-right-style: none;">Imputation</td>
+ <td class="mandatCol8" rowspan="2" style="border-style: solid solid solid solid;">Montant/Délais</td>
+ </tr>
+ <tr>
+ <!--td class="mandatCol1"> </td>
+ <td class="mandatCol2"> </td>
+ <td class="mandatCol3" colspan="2"> </td>
+ <td class="mandatCol4" colspan="2"> </td-->
+ <td class="mandatCol5" style="border-top-style: none;">Nature</td>
+ <td class="mandatCol6" style="border-top-style: none;">Fonction</td>
+ <td class="mandatCol7" style="border-top-style: none;">Opération</td>
+ <!--td class="mandatCol8" colspan="2"> </td-->
+ </tr>
+ <!-- contenu de la table principale -->
+ <xsl:for-each select="./n:LigneDePiece">
+ <xsl:sort select="n:BlocLignePiece/n:InfoLignePiece/n:IdLigne/@V" data-type="number"></xsl:sort>
+ <xsl:variable name="ligneHT">
+ <xsl:choose>
+ <xsl:when test="./n:BlocLignePiece/n:InfoLignePiece/n:MtHT/@V"><xsl:value-of select="./n:BlocLignePiece/n:InfoLignePiece/n:MtHT/@V"/></xsl:when>
+ <xsl:otherwise><xsl:value-of select="0"/></xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <!--xsl:variable name="nodeIdMtHT" select="./n:BlocLignePiece/n:InfoLignePiece/n:MtHT/@ano:node-id"/-->
+ <xsl:variable name="ligneTVA">
+ <xsl:choose>
+ <xsl:when test="./n:BlocLignePiece/n:InfoLignePiece/n:MtTVA/@V"><xsl:value-of select="./n:BlocLignePiece/n:InfoLignePiece/n:MtTVA/@V"/></xsl:when>
+ <xsl:otherwise><xsl:value-of select="0"/></xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <!--xsl:variable name="nodeIdMtTVA" select="./n:BlocLignePiece/n:InfoLignePiece/n:MtTVA/@ano:node-id"/-->
+ <xsl:variable name="ligneTTC"><xsl:value-of select="$ligneHT + $ligneTVA"/></xsl:variable>
+ <xsl:variable name="nodeInfoLignePiece" select="./n:BlocLignePiece/n:InfoLignePiece/@ano:node-id"/>
+ <xsl:variable name="isNodeInfoLignePieceError" select="count($tags-ano/node[@id = $nodeInfoLignePiece]) > 0"/>
+ <xsl:element name="tr">
+ <xsl:attribute name="style">text-align: left;<xsl:if test="$isNodeInfoLignePieceError"> background-color: #FFFF66;</xsl:if></xsl:attribute>
+ <td class="mandatCol1">
+ <span>
+ <xsl:variable name="nodeIdNatIdTiers" select="./n:Tiers[1]/n:InfoTiers/n:NatIdTiers/@ano:node-id"/>
+ <xsl:variable name="nodeIdIdTiers" select="./n:Tiers[1]/n:InfoTiers/n:IdTiers/@ano:node-id"/>
+ <xsl:if test="(count($tags-ano/node[@id = $nodeIdNatIdTiers]) > 0) or (count($tags-ano/node[@id = $nodeIdIdTiers]) > 0)"><xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute></xsl:if>
+ <xsl:call-template name="typeTiersNational" >
+ <xsl:with-param name="typeTiers" select="./n:Tiers[1]/n:InfoTiers/n:NatIdTiers/@V" />
+ </xsl:call-template><xsl:if test="string-length(./n:Tiers[1]/n:InfoTiers/n:IdTiers/@V) > 0"> : </xsl:if><xsl:value-of select="./n:Tiers[1]/n:InfoTiers/n:IdTiers/@V"/></span><br/>
+ <span>
+ <xsl:variable name="nodeIdCatTiers" select="./n:Tiers[1]/n:InfoTiers/n:CatTiers/@ano:node-id"/>
+ <xsl:if test="count($tags-ano/node[@id = $nodeIdCatTiers]) > 0"><xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute></xsl:if>
+ <xsl:call-template name="categorieTiers" >
+ <xsl:with-param name="catTiers" select="./n:Tiers[1]/n:InfoTiers/n:CatTiers/@V" />
+ </xsl:call-template></span><br/>
+ <xsl:variable name="nodeIdNatJur" select="./n:Tiers[1]/n:InfoTiers/n:NatJur/@ano:node-id"/>
+ <span>
+ <xsl:if test="count($tags-ano/node[@id = $nodeIdNatJur]) > 0"><xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute></xsl:if>
+ <xsl:call-template name="natureJuridiqueTiers" >
+ <xsl:with-param name="natJur" select="./n:Tiers[1]/n:InfoTiers/n:NatJur/@V" />
+ </xsl:call-template></span><br/>
+ <xsl:if test="string-length(./n:Tiers[1]/n:InfoTiers/n:Civilite/@V) > 0">
+ <xsl:value-of select="./n:Tiers[1]/n:InfoTiers/n:Civilite/@V"/> </xsl:if>
+ <xsl:variable name="currentNodeId" select="./n:Tiers[1]/n:InfoTiers/n:Nom/@ano:node-id"/>
+ <xsl:choose>
+ <xsl:when test="count($tags-ano/node[@id = $currentNodeId]) > 0">
+ <xsl:element name="span">
+ <xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute>
+ <xsl:value-of select="./n:Tiers[1]/n:InfoTiers/n:Nom/@V"/>
+ </xsl:element>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="./n:Tiers[1]/n:InfoTiers/n:Nom/@V"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:variable name="nodeIdPrenom" select="./n:Tiers[1]/n:InfoTiers/n:Prenom/@ano:node-id"/>
+ <span>
+ <xsl:if test="count($tags-ano/node[@id = $nodeIdPrenom]) > 0"><xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute></xsl:if>
+ <xsl:if test="string-length(./n:Tiers[1]/n:InfoTiers/n:Prenom/@V) > 0"><xsl:value-of select="./n:Tiers[1]/n:InfoTiers/n:Prenom/@V"/> </xsl:if>
+ </span>
+ <xsl:if test="string-length(./n:Tiers[1]/n:InfoTiers/n:ComplNom/@V) > 0"><xsl:value-of select="./n:Tiers[1]/n:InfoTiers/n:ComplNom/@V"/> </xsl:if>
+ <xsl:if test="(string-length(./n:Tiers[1]/n:InfoTiers/n:Civilite/@V)+string-length(./n:Tiers[1]/n:InfoTiers/n:Nom/@V)+string-length(./n:Tiers[1]/n:InfoTiers/n:Prenom/@V)+string-length(./n:Tiers[1]/n:InfoTiers/n:ComplNom/@V)) > 0"><br/></xsl:if>
+ <!--xsl:variable name="typeAdresseToDisplay">
+ <xsl:call-template name="typeAdresse" >
+ <xsl:with-param name="codeType" select="./n:Tiers[1]/n:Adresse/n:TypAdr/@V" />
+ </xsl:call-template></xsl:variable>
+ <xsl:if test="string-length($typeAdresseToDisplay) > 0"><xsl:value-of select="$typeAdresseToDisplay"/><br/></xsl:if-->
+ <xsl:if test="string-length(./n:Tiers[1]/n:Adresse/n:Adr1/@V) > 0"><xsl:value-of select="./n:Tiers[1]/n:Adresse/n:Adr1/@V"/><br/></xsl:if>
+ <xsl:if test="string-length(./n:Tiers[1]/n:Adresse/n:Adr2/@V) > 0"><xsl:value-of select="./n:Tiers[1]/n:Adresse/n:Adr2/@V"/><br/></xsl:if>
+ <!--xsl:value-of select="./n:Tiers[1]/n:Adresse/n:CP/@V"/-->
+ <xsl:variable name="NodeIdCP" select="./n:Tiers[1]/n:Adresse/n:CP/@ano:node-id"/>
+ <xsl:choose>
+ <xsl:when test="count($tags-ano/node[@id = $NodeIdCP]) > 0">
+ <xsl:element name="span">
+ <xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute>
+ <xsl:value-of select="./n:Tiers[1]/n:Adresse/n:CP/@V"/>
+ </xsl:element>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="./n:Tiers[1]/n:Adresse/n:CP/@V"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <!--xsl:value-of select="./n:Tiers[1]/n:Adresse/n:Ville/@V"/><br/-->
+ <xsl:variable name="NodeIdVille" select="./n:Tiers[1]/n:Adresse/n:Ville/@ano:node-id"/>
+ <xsl:choose>
+ <xsl:when test="count($tags-ano/node[@id = $NodeIdVille]) > 0">
+ <xsl:element name="span">
+ <xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute>
+ <xsl:value-of select="./n:Tiers[1]/n:Adresse/n:Ville/@V"/>
+ </xsl:element>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="./n:Tiers[1]/n:Adresse/n:Ville/@V"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:if test="boolean(./n:Tiers[1]/n:Adresse/n:CodRes/@V)">
+ <xsl:call-template name="codePaysINSEE" >
+ <xsl:with-param name="codePays" select="./n:Tiers[1]/n:Adresse/n:CodPays/@V" />
+ </xsl:call-template><br/>
+ </xsl:if><br /><br />
+ <!-- CpteBancaire -->
+ <xsl:value-of select="n:BlocLignePiece/n:InfoLignePce/n:LibVir1/@V"/><br/>
+ <xsl:variable name="currentNodeId" select="n:Tiers[1]/n:CpteBancaire/@ano:node-id"/>
+ <xsl:choose>
+ <xsl:when test="count($tags-ano/node[@id = $currentNodeId]) > 0">
+ <xsl:element name="span">
+ <xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute>
+ <xsl:value-of select="n:Tiers[1]/n:CpteBancaire/n:CodeEtab/@V"/>
+ <xsl:value-of select="n:Tiers[1]/n:CpteBancaire/n:CodeGuic/@V"/>
+ <xsl:value-of select="n:Tiers[1]/n:CpteBancaire/n:IdCpte/@V"/>
+ <xsl:value-of select="n:Tiers[1]/n:CpteBancaire/n:CleRib/@V"/><br/>
+ <xsl:value-of select="n:Tiers[1]/n:CpteBancaire/n:LibBanc/@V"/><br/>
+ <xsl:value-of select="n:Tiers[1]/n:CpteBancaire/n:IdBancInt/@V"/>
+ </xsl:element>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="n:Tiers[1]/n:CpteBancaire/n:CodeEtab/@V"/>
+ <xsl:value-of select="n:Tiers[1]/n:CpteBancaire/n:CodeGuic/@V"/>
+ <xsl:value-of select="n:Tiers[1]/n:CpteBancaire/n:IdCpte/@V"/>
+ <xsl:value-of select="n:Tiers[1]/n:CpteBancaire/n:CleRib/@V"/><br/>
+ <xsl:value-of select="n:Tiers[1]/n:CpteBancaire/n:LibBanc/@V"/><br/>
+ <xsl:value-of select="n:Tiers[1]/n:CpteBancaire/n:IdBancInt/@V"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </td>
+ <td class="mandatCol2">
+ <xsl:variable name="nodeIdLigne" select="n:BlocLignePiece/n:InfoLignePiece/n:IdLigne/@ano:node-id"/>
+ <xsl:if test="count($tags-ano/node[@id = $nodeIdLigne]) > 0"><xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute></xsl:if>
+ <xsl:value-of select="n:BlocLignePiece/n:InfoLignePiece/n:IdLigne/@V"/>
+ </td>
+ <td class="mandatCol3">
+ <!-- On calcule le nombre de PJ pour chaque type de support -->
+ <xsl:variable name="nbPJLigneElectro">
+ <xsl:value-of select="count(n:BlocLignePiece/n:InfoLignePiece/n:PJRef/n:Support[@V=01])"/>
+ </xsl:variable>
+ <xsl:variable name="nbPJLignePapier">
+ <xsl:value-of select="count(n:BlocLignePiece/n:InfoLignePiece/n:PJRef/n:Support[@V=02])"/>
+ </xsl:variable>
+ <xsl:variable name="nbPJLigneCDROM">
+ <xsl:value-of select="count(n:BlocLignePiece/n:InfoLignePiece/n:PJRef/n:Support[@V=03])"/>
+ </xsl:variable>
+ <table class="inner" width="100%" cellspacing="0">
+ <tr><td colspan="2" class="noborder"><span><xsl:variable name="nodeIdTypePieceOrig" select="n:BlocLignePiece/n:RattachPiece/n:NatPceOrig/@ano:node-id"/><xsl:if test="count($tags-ano/node[@id = $nodeIdTypePieceOrig]) > 0"><xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute></xsl:if><xsl:call-template name="typePieceOrigine" ><xsl:with-param name="typePiece" select="n:BlocLignePiece/n:RattachPiece/n:NatPceOrig/@V"/></xsl:call-template></span></td></tr>
+ <tr><td class="noborder">Exercice</td><td class="rigth noborder"><span><xsl:variable name="nodeIdExerRat" select="./n:BlocLignePiece/n:RattachPiece/n:ExerRat/@ano:node-id"/><xsl:if test="count($tags-ano/node[@id = $nodeIdExerRat]) > 0"><xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute></xsl:if><xsl:value-of select="./n:BlocLignePiece/n:RattachPiece/n:ExerRat/@V"/></span></td></tr>
+ <tr><td class="noborder">Identifiant pièce</td><td class="right noborder"><xsl:value-of select="./n:BlocLignePiece/n:RattachPiece/n:IdPceOrig/@V"/></td></tr>
+ <tr><td class="noborder">Ligne pièce</td><td class="rigth noborder"><xsl:value-of select="./n:BlocLignePiece/n:RattachPiece/n:IdLigneOrig/@V"/></td></tr>
+ <tr><td colspan="2" class="noborder"><!--xsl:choose>
+ <xsl:when test="$nbPJLigneElectro + $nbPJLignePapier + $nbPJLigneCDROM = 0">Non justifiée</xsl:when>
+ <xsl:otherwise-->
+ Justifiée par <xsl:value-of select="$nbPJLigneElectro + $nbPJLignePapier + $nbPJLigneCDROM"/> PJ<xsl:if test="$nbPJLigneElectro + $nbPJLignePapier + $nbPJLigneCDROM > 0"> dont :</xsl:if>
+ <ul style="margin-top: 0px; margin-left: 0.5cm;">
+ <xsl:if test="$nbPJLigneElectro > 0"><li><xsl:value-of select="$nbPJLigneElectro"/> en ligne<ul style="margin-top: 0; margin-left: 0.5cm; list-style-type: none;">
+ <xsl:for-each select="./n:BlocLignePiece/n:InfoLignePiece/n:PJRef[n:Support/@V=01]">
+ <li>
+ <xsl:choose>
+ <xsl:when test="true()"><a><xsl:attribute name="href">xemelios:/attachment?pjId=<xsl:value-of select="./n:IdUnique/@V"/>&collectivite=<xsl:value-of select="/n:PES_Aller/n:EnTetePES/n:IdColl/@V"/></xsl:attribute>
+ <xsl:choose><xsl:when test="string-length(./n:Libelle/@V) > 0"><xsl:value-of select="./n:Libelle/@V"/></xsl:when><xsl:otherwise><xsl:value-of select="./n:IdUnique/@V"/></xsl:otherwise></xsl:choose></a></xsl:when>
+ <xsl:otherwise><xsl:choose><xsl:when test="string-length(./n:Libelle/@V) > 0"><xsl:value-of select="./n:Libelle/@V"/></xsl:when><xsl:otherwise><xsl:value-of select="./n:IdUnique/@V"/></xsl:otherwise></xsl:choose></xsl:otherwise>
+ </xsl:choose>
+ </li>
+ </xsl:for-each></ul></li></xsl:if>
+ <xsl:if test="$nbPJLignePapier > 0"><li><xsl:value-of select="$nbPJLignePapier"/> papier<ul style="margin-top: 0; margin-left: 0.5cm; list-style-type: none;"><xsl:for-each select="./n:BlocLignePiece/n:InfoLignePiece/n:PJRef[n:Support/@V=02]"><li><xsl:choose><xsl:when test="string-length(./n:Libelle/@V) > 0"><xsl:value-of select="./n:Libelle/@V"/></xsl:when><xsl:otherwise><xsl:value-of select="./n:IdUnique/@V"/></xsl:otherwise></xsl:choose></li></xsl:for-each></ul></li></xsl:if>
+ <xsl:if test="$nbPJLigneCDROM > 0"><li><xsl:value-of select="$nbPJLigneCDROM"/> sur CDROM<ul style="margin-top: 0; margin-left: 0.5cm; list-style-type: none;"><xsl:for-each select="./n:BlocLignePiece/n:InfoLignePiece/n:PJRef[n:Support/@V=03]"><li><xsl:choose><xsl:when test="string-length(./n:Libelle/@V) > 0"><xsl:value-of select="./n:Libelle/@V"/></xsl:when><xsl:otherwise><xsl:value-of select="./n:IdUnique/@V"/></xsl:otherwise></xsl:choose></li></xsl:for-each></ul></li></xsl:if>
+ </ul><!--/xsl:otherwise>
+ </xsl:choose--></td></tr>
+ </table>
+ </td>
+ <!--td class="mandatCol3b">
+ <br/>
+ <br/>
+ <br/>
+ <br/>
+ <br/>
+ </td-->
+ <td class="mandatCol4">
+ <table class="inner" width="100%" cellspacing="0">
+ <tr><td class="noborder">Code produit :</td><td class="noborder right"><span><xsl:variable name="nodeIdCodProdLoc" select="./n:BlocLignePiece/n:InfoLignePiece/n:CodProdLoc/@ano:node-id"/><xsl:if test="count($tags-ano/node[@id = $nodeIdCodProdLoc]) > 0"><xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute></xsl:if><xsl:value-of select="./n:BlocLignePiece/n:InfoLignePiece/n:CodProdLoc/@V"/></span></td></tr>
+ <tr><td class="noborder">Objet :</td><td class="noborder right"><xsl:value-of select="./n:BlocLignePiece/n:InfoLignePiece/n:ObjLignePce/@V"/></td></tr>
+ <tr><td class="noborder">Encaissement :</td><td class="noborder right"><span><xsl:variable name="nodeIdEncaissement" select="./n:BlocLignePiece/n:LiensIdent/n:IdEncaissement/@ano:node-id"/><xsl:if test="count($tags-ano/node[@id = $nodeIdEncaissement]) > 0"><xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute></xsl:if><xsl:value-of select="./n:BlocLignePiece/n:LiensIdent/n:IdEncaissement/@V"/></span></td></tr>
+ <tr><td class="noborder">Fiche inventaire :</td><td class="noborder right"><span><xsl:variable name="nodeIdActif" select="./n:BlocLignePiece/n:LiensIdent/n:IdActif/@ano:node-if"/><xsl:if test="count($tags-ano/node[@id = $nodeIdActif]) > 0"><xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute></xsl:if><xsl:value-of select="./n:BlocLignePiece/n:LiensIdent/n:IdActif/@V"/></span></td></tr>
+ <tr><td class="noborder">Fiche emprunt :</td><td class="noborder right"><xsl:value-of select="./n:BlocLignePiece/n:LiensIdent/n:IdEmpruntOrdo/@V"/></td></tr>
+ <tr><td class="noborder">Numéro de régie :</td><td class="noborder right"><span><xsl:variable name="nodeIdRegie" select="./n:BlocLignePiece/n:LiensIdent/n:IdRegie/@ano:node-id"/><xsl:if test="count($tags-ano/node[@id = $nodeIdRegie]) > 0"><xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute></xsl:if><xsl:value-of select="./n:BlocLignePiece/n:LiensIdent/n:IdRegie/@V"/></span></td></tr>
+ <tr><td class="noborder">Numéro de marche :</td><td class="noborder right"><span><xsl:variable name="nodeIdMarche" select="./n:BlocLignePiece/n:LiensIdent/n:IdMarche/@ano:node-id"/><xsl:if test="count($tags-ano/node[@id = $nodeIdMarche]) > 0"><xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute></xsl:if><xsl:value-of select="./n:BlocLignePiece/n:LiensIdent/n:IdMarche/@V"/></span></td></tr>
+ <tr><td class="noborder">Fiche de convention :</td><td class="noborder right"><xsl:value-of select="./n:BlocLignePiece/n:LiensIdent/n:IdConv/@V"/></td></tr>
+ </table>
+ </td>
+ <!--td class="mandatCol4b">
+ </td-->
+ <td class="mandatCol5"><!--xsl:value-of select="./n:BlocLignePiece/n:InfoLignePiece/n:Nature/@V"/> </td-->
+ <span><xsl:variable name="nodeIdNature" select="./n:BlocLignePiece/n:InfoLignePiece/n:Nature/@ano:node-id"/><xsl:if test="count($tags-ano/node[@id = $nodeIdNature]) > 0"><xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute></xsl:if><xsl:value-of select="./n:BlocLignePiece/n:InfoLignePiece/n:Nature/@V"/> </span></td>
+ <td class="mandatCol6"><!--xsl:value-of select="./n:BlocLignePiece/n:InfoLignePiece/n:Fonction/@V"/> </td-->
+ <span><xsl:variable name="nodeIdFonction" select="./n:BlocLignePiece/n:InfoLignePiece/n:Fonction/@ano:node-id"/><xsl:if test="count($tags-ano/node[@id = $nodeIdFonction]) > 0"><xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute></xsl:if><xsl:value-of select="./n:BlocLignePiece/n:InfoLignePiece/n:Fonction/@V"/> </span></td>
+ <td class="mandatCol7"><span><xsl:variable name="nodeIdOperation" select="./n:BlocLignePiece/n:InfoLignePiece/n:Operation/@ano:node-id"/><xsl:if test="count($tags-ano/node[@id = $nodeIdOperation]) > 0"><xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute></xsl:if><xsl:value-of select="./n:BlocLignePiece/n:InfoLignePiece/n:Operation/@V"/> </span></td>
+ <td class="mandatCol8">
+ <xsl:variable name="nodeHT" select="./n:BlocLignePiece/n:InfoLignePiece/n:MtHT/@ano:node-id"/>
+ <xsl:variable name="nodeTVA" select="./n:BlocLignePiece/n:InfoLignePiece/n:MtTVA/@ano:node-id"/>
+ <table class="inner" width="100%" cellspacing="0">
+ <xsl:variable name="nodeCpteTva" select="./n:BlocLignePiece/n:InfoLignePiece/n:CpteTva/@ano:node-id"/>
+ <tr><td class="noborder">Montant HT</td><td class="right noborder"><xsl:element name="span"><xsl:if test="count($tags-ano/node[@id = $nodeHT]) > 0"><xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute></xsl:if><xsl:call-template name="number"><xsl:with-param name="num" select="$ligneHT"/></xsl:call-template></xsl:element></td></tr>
+ <tr><td class="noborder">Montant TVA</td><td class="right noborder"><xsl:element name="span"><xsl:if test="count($tags-ano/node[@id = $nodeTVA]) > 0"><xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute></xsl:if><xsl:call-template name="number"><xsl:with-param name="num" select="$ligneTVA"/></xsl:call-template></xsl:element></td></tr>
+ <tr><td class="noborder">Compte TVA</td><td class="right noborder"><xsl:element name="span"><xsl:if test="count($tags-ano/node[@id = $nodeCpteTva]) > 0"><xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute></xsl:if><xsl:choose><xsl:when test="string-length(./n:BlocLignePiece/n:InfoLignePiece/n:CpteTva/@V) > 0"><xsl:value-of select="./n:BlocLignePiece/n:InfoLignePiece/n:CpteTva/@V"/></xsl:when></xsl:choose></xsl:element></td></tr>
+ <tr><td class="noborder">Montant TTC</td><td class="right noborder"><xsl:call-template name="number"><xsl:with-param name="num" select="$ligneTTC"/></xsl:call-template></td></tr>
+ </table>
+ </td>
+ <!--td class="mandatCol8b">
+
+
+ <br/>
+
+ </td-->
+ </xsl:element>
+ </xsl:for-each>
+ <!-- pour les totaux -->
+ <tr style="text-align: left">
+ <td class="noborder"> </td>
+ <td class="noborder"> </td>
+ <td class="noborder"> </td>
+ <td class="noborder"> </td>
+ <td class="noborder"> </td>
+ <td class="noborder"> </td>
+ <td class="noborder"> </td>
+ <td class="mandatCol8">
+ <table class="inner" width="100%" cellspacing="0">
+ <tr><td class="noborder">TOTAL HT</td><td class="right noborder"><xsl:call-template name="number"><xsl:with-param name="num" select="$totalHT"/></xsl:call-template></td></tr></table>
+ </td>
+ </tr>
+ <tr style="text-align: left">
+ <td class="noborder"> </td>
+ <td class="noborder"> </td>
+ <td class="noborder"> </td>
+ <td class="noborder"> </td>
+ <td class="noborder"> </td>
+ <td class="noborder"> </td>
+ <td class="noborder"> </td>
+ <td class="mandatCol8">
+ <table class="inner" width="100%" cellspacing="0">
+ <tr><td class="noborder">TOTAL TTC</td><td class="right noborder"><xsl:call-template name="number"><xsl:with-param name="num" select="$totalTTC"/></xsl:call-template></td></tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+ <p/>
+ <xsl:if test="./ano:Anomalie">
+ <hr />
+ <xsl:for-each select="./ano:Anomalie">
+ <xsl:element name="div">
+ <xsl:if test="$anoId = ./@ano:anoId">
+ <xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute>
+ </xsl:if>
+ <xsl:variable name="idBordereau"><xsl:value-of select="../../@added:primary-key"/></xsl:variable>
+ <xsl:variable name="idPiece"><xsl:value-of select="../n:BlocPiece/n:IdPce/@V"/></xsl:variable>
+ <h3>
+ <xsl:element name="a">
+ <xsl:attribute name="name">AnoId_<xsl:value-of select="./@ano:anoId"/></xsl:attribute>
+ <xsl:attribute name="href">xemelios:/query?docId=pes-aller&etatId=PES_RecetteAller&elementId=BordereauRecette&collectivite=<xsl:value-of select="/n:PES_Aller/n:EnTetePES/n:IdColl/@V"/>&budget=<xsl:value-of select="/n:PES_Aller/n:EnTetePES/n:CodBud/@V"/>&path=[@added:primary-key='<xsl:value-of select="$idBordereau"/>']&xsl:param=(mandatId,<xsl:value-of select="$idPiece"/>)&xsl:param=(anoId,<xsl:value-of select="./@ano:anoId"/>)</xsl:attribute>
+ Anomalie <!--xsl:value-of select="./@ano:anoId"/-->
+ </xsl:element>
+ </h3>
+ <p><span class="gras">Contrôle : </span><xsl:value-of select="./@ano:ctrlLibelle"/> (<xsl:value-of select="./@ano:ctrlId"/>)</p>
+ <p><span class="gras">Règle fonctionnelle : </span><xsl:value-of select="./ano:ctrlRegleFonct/text()" disable-output-escaping="yes"/></p>
+ <p><span class="gras">Message : </span><xsl:value-of select="./ano:message/text()" disable-output-escaping="yes"/></p>
+ <!--p><span class="gras">Noeuds : </span><xsl:for-each select="ano:node"><xsl:value-of select="./@ano:id"/>, </xsl:for-each></p-->
+ </xsl:element>
+ </xsl:for-each>
+ <hr />
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:otherwise>
+
+ </xsl:choose>
+
+ <!-- une table pour le pied de page, le même pour le bordereau et le mandat -->
+ <!--table class="footer" cellspacing="0">
+ <tr>
+ <td class="colonne1" style="border-style:none">Edition du
+ </td>
+ <td class="colonne2" style="border-style:none"> </td>
+ <td class="colonne3" style="border-style:none"> </td>
+ <td class="colonne4" style="border-style:none"> </td>
+ </tr>
+ </table-->
+
+ <!--/div-->
+ </body>
+
+ </html>
+ </xsl:template>
+
+
+</xsl:stylesheet>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<controls>
+ <document id="pes-aller">
+ <param id="nomencl" name="Nomenclature" datatype="string" use="required" value="M14">
+ <select id="nomencl">
+ <option value="M4">M4</option>
+ <option value="M14">M14</option>
+ <option value="M21">M21</option>
+ <option value="M22">M22</option>
+ <option value="M31">M31</option>
+ <option value="M52">M52</option>
+ <option value="M61">M61</option>
+ <option value="M71">M71</option>
+ </select>
+ </param>
+ <param id="typnomencl" name="Type de nomenclature" datatype="string" use="required" value="Nature">
+ <select id="typnomencl">
+ <option value="Fonction">Fonction</option>
+ <option value="Nature">Nature</option>
+ <option value="Nature-ref-fonct">Nature avec réf. fonctionnelle</option>
+ </select>
+ </param>
+ <param id="votop" name="Vote par opération" datatype="boolean" value="false">
+ <input id="votop" datatype="boolean"/>
+ </param>
+ <param id="suivdgp" name="Suivi du DGP" datatype="boolean" value="true">
+ <input id="suivdgp" datatype="boolean"/>
+ </param>
+ <param id="dureedgp" name="Durée maximale du délai global de paiement" datatype="integer" use="required" value="45">
+ <input id="paiement" datatype="integer"/>
+ </param>
+ <param id="coltva" name="Collectivité assujettie à la TVA" datatype="boolean" value="true">
+ <input id="coltva" datatype="boolean"/>
+ </param>
+ <param id="servTVA" name="Liste des services assujettis à la TVA" datatype="string" value="">
+ <select id="servTVA" multivalued="true" editable="true"/>
+ </param>
+ <param id="compteTVA" name="Liste des comptes d'imputation de la TVA" datatype="string" value="">
+ <select id="compteTVA" multivalued="true" editable="true"/>
+ </param>
+ <param id="tauxTVA" name="Liste des taux TVA" datatype="string" use="required" value="2.1 5.5 19.6">
+ <select id="tauxTVA" multivalued="true" editable="true">
+ <option value="2.1">2.1</option>
+ <option value="5.5">5.5</option>
+ <option value="19.6">19.6</option>
+ </select>
+ </param>
+ <param id="seuilEmission" name="Seuil d'émission des titres" datatype="decimal" use="required" value="10">
+ <input id="seuilEmission" datatype="decimal"/>
+ </param>
+ <param id="codProd" name="Liste des Codes Produits" datatype="string" value="69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 248 300 302 305 306 307 308">
+ <select id="codProd" multivalued="true" editable="true">
+ <option value="69">69</option>
+ <option value="70">70</option>
+ <option value="71">71</option>
+ <option value="72">72</option>
+ <option value="73">73</option>
+ <option value="74">74</option>
+ <option value="75">75</option>
+ <option value="76">76</option>
+ <option value="77">77</option>
+ <option value="78">78</option>
+ <option value="79">79</option>
+ <option value="80">80</option>
+ <option value="81">81</option>
+ <option value="82">82</option>
+ <option value="83">83</option>
+ <option value="84">84</option>
+ <option value="85">85</option>
+ <option value="86">86</option>
+ <option value="87">87</option>
+ <option value="88">88</option>
+ <option value="89">89</option>
+ <option value="90">90</option>
+ <option value="91">91</option>
+ <option value="92">92</option>
+ <option value="93">93</option>
+ <option value="94">94</option>
+ <option value="95">95</option>
+ <option value="96">96</option>
+ <option value="97">97</option>
+ <option value="98">98</option>
+ <option value="99">99</option>
+ <option value="100">100</option>
+ <option value="101">101</option>
+ <option value="102">102</option>
+ <option value="103">103</option>
+ <option value="104">104</option>
+ <option value="105">105</option>
+ <option value="106">106</option>
+ <option value="107">107</option>
+ <option value="248">248</option>
+ <option value="300">300</option>
+ <option value="302">302</option>
+ <option value="305">305</option>
+ <option value="306">306</option>
+ <option value="307">307</option>
+ <option value="308">308</option>
+ </select>
+ </param>
+ <param id="finJur" name="Finess Juridique" datatype="string" value="">
+ <input id="finJur" datatype="string"/>
+ </param>
+ <param id="idPost" name="Codique" datatype="string" value="058090">
+ <input id="idPost" datatype="string"/>
+ </param>
+ <param id="idColl" name="SIRET" datatype="string" value="20000240000014">
+ <input id="idColl" datatype="string"/>
+ </param>
+ <param id="codCol" name="Code Collectivité" datatype="string" value="146">
+ <input id="codCol" datatype="string"/>
+ </param>
+ <param id="codBud" name="Code Budget" datatype="string" value="00">
+ <input id="codBud" datatype="string"/>
+ </param>
+ <controlTech id="TECH02" libelle="Contrôle de l'encoding du fichier." severity="BLOQUANT">
+ <paramTech id="encoding" name="encoding" value="ISO-8859-1"/>
+ <paramTech id="failOnError" name="failOnError" value="true"/>
+ </controlTech>
+ <controlTech id="TECH03" libelle="Contrôle de la conformance au schéma." severity="BLOQUANT">
+ <paramTech id="schemaLocation" name="schemaLocation" value="PES_V2/TD-ex-3.0/Schemas_PES/PES_V2/Rev0/PES_Aller.xsd"/>
+ <paramTech id="failOnError" name="failOnError" value="true"/>
+ </controlTech>
+ <control id="TIE01" libelle="Contrôle de présence de la dénomination du tiers" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.tie.TIE01">
+ <regle-fonctionnelle>A chaque ligne de pièce doit correspondre au moins un tiers.&lt;br/&gt; Les informations nécessaires sont les suivantes :&lt;br/&gt; &lt;ul&gt;&lt;li&gt;Le type d'adresse (TypAdr doit être valorisé à 01 ou 02)&lt;/li&gt;&lt;li&gt;Nom&lt;/li&gt;&lt;li&gt;Adresse (Adr2 est obligatoire, Adr1 et Adr3 sont facultatives), le code postal, la ville et le code pays (dans le cas d'une adresse à l'étranger),&lt;/li&gt;&lt;li&gt;De plus s'il s'agit d'une personne physique, la civilité et le prénom doivent être obligatoirement indiqués,&lt;/li&gt;&lt;li&gt;S'il s'agit d'une personne morale, la civilité et le prénom ne doivent pas être indiqués. &lt;/li&gt;&lt;/ul&gt;.</regle-fonctionnelle>
+ <message-echec>Bordereau n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD# - #MT# n° #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE#</message-echec>
+ </control>
+ <control id="TIE02" libelle="Contrôle du libellé des tiers" severity="FORCABLE" class="fr.gouv.finances.cp.xemelios.controls.pesv2.tie.TIE02">
+ <regle-fonctionnelle>Les tiers ne peuvent être libellés à «Divers» ou à «Divers...». Le tiers est de préférence déterminé.</regle-fonctionnelle>
+ <message-echec>Bordereau n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD# - #MT# n° #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE#</message-echec>
+ </control>
+ <control id="TIE03" libelle="Contrôle de l'identifiant national" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.tie.TIE03">
+ <regle-fonctionnelle>L'identifiant national du tiers doit être valide (contrôle de clé).&lt;br/&gt;Le type d'identifiant (NatIdTiers) ne doit pas être indiqué si l'identifiant (IdTiers) n'est pas valorisé.&lt;br/&gt; Il ne peut s'agir d'un numéro SIREN.&lt;br/&gt;Un artisan, en tant que personne physique, ne peut disposer d'un numéro SIRET.</regle-fonctionnelle>
+ <message-echec>Bordereau n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD# - #MT# n° #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE# - IdTiers= #TIERS_ID_TIERS# - NatIdTiers= #TIERS_NAT_ID_TIERS#</message-echec>
+ </control>
+ <control id="TIE04" libelle="Contrôle de cohérence entre la catégorie et la nature juridique" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.tie.TIE04">
+ <regle-fonctionnelle>La catégorie juridique du tiers, doit être cohérente avec la nature juridique du tiers.</regle-fonctionnelle>
+ <message-echec>Bordereau n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD# - #MT# n° #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE# - NatJur= #TIERS_NATJUR# - CatTiers= #TIERS_CATTIERS#</message-echec>
+ </control>
+ <control id="TIE05" libelle="Contrôle de cohérence entre le couple la catégorie / la nature juridique et l'identifiant national" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.tie.TIE05">
+ <regle-fonctionnelle>Si l'identifiant &quot;Siret&quot; saisi commence par 1 ou 2 alors le tiers doit être identifié comme une personne &quot;morale&quot; de droit public.&lt;br/&gt; Une personne physique, ne peut avoir d'identifiant national.</regle-fonctionnelle>
+ <message-echec>Bordereau n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD# - #MT# n° #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE# - CatTiers= #TIERS_CATTIERS# - NatIdTiers= #TIERS_NATIDTIERS# - IdTiers= #TIERS_IDTIERS#</message-echec>
+ </control>
+ <control id="TIE07" libelle="Contrôle sur le code résidant" severity="NON BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.tie.TIE07">
+ <regle-fonctionnelle>Les tiers résidents doivent avoir un code postal à 5 caractères.&lt;br/&gt; Le pays de résidence doit être indiqué pour les tiers non résidents.&lt;br/&gt; De plus, lorsque le code postal se situe à l'étranger ou en Corse, la balise CP doit étre valorisée à '99999' et le code postal doit être renseigné dans la balise ville.</regle-fonctionnelle>
+ <message-echec>Bordereau n° #BORD_NUM# - TypBord= #BORD_TYPBORD# - #MT# n° #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE# - Tiers : #TIERS_NOM#. #ERREUR#.</message-echec>
+ </control>
+ <control id="TIE06" libelle="Contrôle de la domiciliation bancaire" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.tie.TIE06">
+ <regle-fonctionnelle>Les références bancaires : clé RIB, code banque, code guichet et cadrage du numéro de compte doivent être cohérents et valides. (Pas valorisés à '00000' ou '99999').</regle-fonctionnelle>
+ <message-echec>Bordereau n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD# - #MT# n° #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE# - CpteBancaire= #CPTE_IDBANCINT# / #CPTE_CODEETAB# / #CPTE_CODEGUIC# / #CPTE_IDCPTE# / #CPTE_CLERIB#</message-echec>
+ </control>
+ <control id="COMM05B" libelle="Contrôle de la présence d'un identifiant de collectivité _ Contrôle des fichiers" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.comm.COMM05B">
+ <regle-fonctionnelle><![CDATA[Une collectivité doit être valorisée de façon exhaustive dans chaque fichier : <br/> <ul><li>La balise IdPost doit être valorisée sur 6 caractères alphanumériques SANS caractères « espace » dans la valeur</li> <li>La balise IdColl doit être valorisée avec un numéro SIRET valide, (14 caractères numériques) correspondant au numéro SIRET de la collectivité</li> <li>La balise CodCol doit être valorisée avec 3 caractères alphanumériques</li> <li>La balise CodBud doit être valorisée avec 2 caractères alphanumériques</li></ul>]]></regle-fonctionnelle>
+ <message-echec>#ERREUR#</message-echec>
+ </control>
+ <control id="COMM06B" libelle="Contrôle relatif au Finess Juridique _ Contrôle du fichier" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.comm.COMM06B">
+ <regle-fonctionnelle>La balise FinJur ne doit être présente que pour la nomenclature M21</regle-fonctionnelle>
+ <message-echec>FinJur = #FINJUR# _ Paramètre FinJur = #FINJUR_PARAM# : #ERREUR#</message-echec>
+ </control>
+ <control id="DEP01" libelle="Contrôle de l'exercice du bordereau" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.dep.DEP01">
+ <regle-fonctionnelle>L'exercice doit correspondre soit à l'année en cours, soit à l'année précédente si on est en période complémentaire tant que l'exercice n'est pas clos.</regle-fonctionnelle>
+ <message-echec>Bordereau de mandat n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD#</message-echec>
+ </control>
+ <control id="DEP02" libelle="Contrôle sur l'absence de doublon sur le numéro de bordereau" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.dep.DEP02">
+ <regle-fonctionnelle>Le numéro de bordereau ne doit pas être déjà attribuéà un bordereau de même budget collectivité, même exercice, même type de bordereau (même séquence).</regle-fonctionnelle>
+ <message-echec>Bordereau de mandat n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD#</message-echec>
+ </control>
+ <control id="DEP03" libelle="Contrôle de cohérence des montants du bordereau" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.dep.DEP03">
+ <regle-fonctionnelle>Le montant total, HT et TVA, du bordereau de mandats doit être égal à la somme des montants des mandats, HT et TVA.</regle-fonctionnelle>
+ <message-echec>Bordereau n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPE# MtBordHT= #BORD_MT_HT# - Somme des lignes= #BORD_SOMME_HT_PIECE# | Bordereau n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPE# MtBordTVA= #BORD_MT_TVA# - Somme des lignes= #BORD_SOMME_TVA_PIECE#</message-echec>
+ </control>
+ <control id="DEP04" libelle="Contrôle des montants" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.dep.DEP04">
+ <regle-fonctionnelle>Tous les montants doivent être strictement positifs.</regle-fonctionnelle>
+ <message-echec>Bordereau de mandat n° #BORD_NUM# - Exer= #BORD_EXER# - TypeBord= #BORD_TYPBORD# - MtBordHT= #BORD_MTHT# - MtBordTVA= #BORD_MTTVA#|Bordereau de mandat n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD# - Mandat n° #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE# - MtHT= #LIGNE_MTHT# - MtTVA= #LIGNE_MTTVA#</message-echec>
+ </control>
+ <control id="DEP05" libelle="Contrôle de l'absence de doublon sur le numéro de pièce" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.dep.DEP05">
+ <regle-fonctionnelle>Il ne doit pas y avoir de doublons sur le numéro de la pièce.</regle-fonctionnelle>
+ <message-echec>Bordereau de mandat n° #BORD_NUM# - Exer= #BORD_EXER# - TypeBord= #BORD_TYPBORD# - Mandat n° #PIECE_IDPCE#</message-echec>
+ </control>
+ <control id="DEP06" libelle="Contrôle de cohérence entre le type de bordereau et les couples (type, nature)" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.dep.DEP06">
+ <regle-fonctionnelle>Le triplet Type de bordereau / Nature du mandat / Type du mandat doit être cohérent.&lt;br/&gt;La nature 15 (autre) ne doit pas être utilisée.</regle-fonctionnelle>
+ <message-echec>Bordereau de mandat n° #BORD_NUM# - Exer= #BORD_EXER# - TypeBord= #BORD_TYPBORD# - Mandat n° #PIECE_IDPCE# - TypMandat= #PIECE_TYPPCE# - NatureMandat= #PIECE_NATPCE#</message-echec>
+ </control>
+ <control id="DEP07" libelle="Règle de valorisation de la Nature de la pièce" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.dep.DEP07">
+ <regle-fonctionnelle>&lt;br/&gt;Pour les nomenclatures M4- M14 -M21 -M52 -M61 - M31 - M71 :&lt;br/&gt;&lt;ul&gt;&lt;li&gt;SI le type de la pièce est ordre mixte ALORS le compte de tiers est seul vérifié.&lt;/li&gt;&lt;li&gt;SI au moins une ligne du mandat contient un compte par nature typé 'Paie' (64*, 621*, 631*, 633*, 6531*) ALORS la nature du mandat doit être valorisé à 'Paie'.&lt;/li&gt;&lt;li&gt;SINON&lt;ul&gt;&lt;li&gt;SI la première ligne du mandat contient une référence 'Régie' ALORS la nature du mandat doit être valorisé à 'Régie'.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;</regle-fonctionnelle>
+ <message-echec>Bordereau de mandat n° #BORD_NUM# - Exer= #BORD_EXER# - TypeBord= #BORD_TYPBORD# - Mandat n° #PIECE_IDPCE# - TypMandat= #PIECE_TYPPCE# - NatureMandat= #PIECE_NATPCE#</message-echec>
+ </control>
+ <control id="DEP08" libelle="Contrôle lié au type de nomenclature et vote par opération" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.dep.DEP08">
+ <regle-fonctionnelle>Les comptes Nature, Fonction et Opération doivent être renseignés selon la collectivité.</regle-fonctionnelle>
+ <message-echec>Bordereau de mandat n° #BORD_NUM# - Exer= #BORD_EXER# - TypeBord= #BORD_TYPBORD# - Mandat n° #PIECE_IDPCE# - Ligne n° #LIGNEDEPIECE_IDPCE#</message-echec>
+ </control>
+ <control id="DEP09" libelle="Contrôle de la cohérence générale des informations DGP" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.dep.DEP09">
+ <regle-fonctionnelle>Les mandats éligibles à la mise en paiement doivent contenir les informations nécessaires au suivi du DGP : date de départ, durée et date de fin du délai.</regle-fonctionnelle>
+ <message-echec>Bordereau de mandat n° #BORD_NUM# - Exer= #BORD_EXER# - TypeBord= #BORD_TYPBORD# - Mandat n° #PIECE_IDPCE# : </message-echec>
+ </control>
+ <control id="DEP10" libelle="Contrôles des informations DGP : date début, date fin et durée" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.dep.DEP10">
+ <regle-fonctionnelle>Les informations DGP doivent être valides: date de départ, durée et date de fin du délai.&lt;br/&gt; La durée ne peut être supérieure au délai fixé par la réglementation (#NB_JOURS# jours).&lt;br/&gt; La date de fin du délai doit être supérieure ou égale à la date de début augmentée de la durée du délai.</regle-fonctionnelle>
+ <message-echec>Bordereau de mandat n° #BORD_NUM# - Exer= #BORD_EXER# - TypeBord= #BORD_TYPBORD# - Mandat n° #PIECE_IDPCE# - Début DGP= #DGP_DEB# - Fin DGP= #DGP_FIN# - Durée DGP= #DGP_DUREE#</message-echec>
+ </control>
+ <control id="DEP11" libelle="Principe de séquentialité des numéros de ligne" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.dep.DEP11">
+ <regle-fonctionnelle>Le numéro de ligne ne doit pas être déjà attribué à l'intérieur du mandat.&lt;br/&gt;Les lignes d'un mandat doivent avoir des numéros d'ordre séquentiels.</regle-fonctionnelle>
+ <message-echec>Bordereau de mandat n° #BORD_NUM# - Exer= #BORD_EXER# - TypeBord= #BORD_TYPBORD# - Mandat n° #PIECE_IDPCE# - Ligne n° #LIGNE_PIECE_ID#</message-echec>
+ </control>
+ <control id="DEP12" libelle="Contrôle d'assujettissement à la TVA" severity="UNSET" class="fr.gouv.finances.cp.xemelios.controls.pesv2.dep.DEP12">
+ <regle-fonctionnelle>Le montant de la TVA ne doit être indiqué que si le budget collectivité et / ou le service gèrent la TVA.&lt;br/&gt; Si la TVA est mentionnée alors que la TVA est gérée par un service, le service doit être indiqué.</regle-fonctionnelle>
+ <message-echec>Bordereau de mandat n° #BORD_NUM# - Exer= #BORD_EXER# - TypeBord= #BORD_TYPBORD# - Mandat n° #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE#</message-echec>
+ </control>
+ <control id="DEP13" libelle="Contrôle sur le montant de la TVA" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.dep.DEP13">
+ <regle-fonctionnelle>Pour les collectivités ou services assujettis à la TVA, le montant du mandat doit être égal au montant budgétaire augmenté de la TVA. Le montant de la TVA est créditée au compte de la TVA et le montant hors taxe est créditée au compte budgétaire.</regle-fonctionnelle>
+ <message-echec>Bordereau de mandat n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD# - Mandat n° #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE# - MtHT= #LIGNE_MTHT# - MtTVA= #LIGNE_MTTVA#</message-echec>
+ </control>
+ <control id="DEP14" libelle="Contrôle de la présence d'un mode de règlement" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.dep.DEP14">
+ <regle-fonctionnelle>&lt;ul&gt;&lt;li&gt;Pour un mandat à payer, le mode de règlement doit être indiqué, et ne peut pas être égal à 'Autres' (ModRegl=09).&lt;/li&gt;&lt;li&gt;Si le mode règlement est ' numéraire ', le montant ne doit pas dépasser le seuil prévu dans la réglementation (au 22/08/2006 : 750 euros)&lt;/li&gt;&lt;li&gt;Si le mode de règlement est ' virement ' ou ' prélèvement ', les coordonnées bancaires doivent être renseignées.&lt;/li&gt;&lt;li&gt;Le mode de règlement ' 04 virement appli externe ' ne nécassite pas de RIB : les RIB sont inclus dans le fichier utilisé dans l'appli externe.&lt;/li&gt;&lt;li&gt;Dans le cas d'un mode de réglement par virement bancaire, la zone libellé du virement est renseignée.&lt;/li&gt;&lt;li&gt;Si le mode de réglement est ' virement à l'étranger ', l'identifiant international bancaire (IBAN) doit être renseigné ainsi que le BIC.&lt;/li&gt;&lt;li&gt;S'il s'agit d'un mandat collectif alors le mode de règlement doit être ' virement par application externe '.&lt;/li&gt;&lt;/ul&gt;</regle-fonctionnelle>
+ <message-echec>Bordereau de mandat n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD# - Mandat n° #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE#</message-echec>
+ </control>
+ <control id="DEP16" libelle="Contrôle d'existence de la pièce initiale" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.dep.DEP16">
+ <regle-fonctionnelle>Pour les mandats après paiement, mandats correctifs, mandats d'ordre de nature ' cession ', mandats de charges constatées d'avance de nature ' Fonctionnement ', le mandat devrait indiquer la référence à la pièce initiale.</regle-fonctionnelle>
+ <message-echec>Bordereau de mandat n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD# - Mandat n° #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE#</message-echec>
+ </control>
+ <control id="DEP17" libelle="Contrôles des mandats multi-lignes Emprunt" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.dep.DEP17">
+ <regle-fonctionnelle>Si une ligne de mandat porte un numéro ' emprunt ', toutes les lignes de mandats doivent porter un numéro ' emprunt '.</regle-fonctionnelle>
+ <message-echec>Bordereau de mandat n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD# - Mandat n° #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE#</message-echec>
+ </control>
+ <control id="DEP18" libelle="Contrôle de présence du numéro d'inventaire" severity="NON BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.dep.DEP18">
+ <regle-fonctionnelle>Dans le cas des opérations d'ordre mixte, le numéro d'inventaire est associéà un compte de contrepartie.(compte tiers)</regle-fonctionnelle>
+ <message-echec>Bordereau de mandat n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD# - Mandat n° #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE#</message-echec>
+ </control>
+ <control id="DEP19" libelle="Contrôles liés aux mandats d'ordre" severity="NON BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.dep.DEP19">
+ <regle-fonctionnelle>Si le mandat est typé 'mandat d'ordre', il ne peut comporter des références bancaires.&lt;br/&gt; Remarque : pour les mandats d'ordre : le créancier correspond au receveur de la collectivité. (De préférence CatTiers valorisé à 20 et NatJur valorisé à 07).</regle-fonctionnelle>
+ <message-echec>Bordereau de mandat n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD# - Mandat n° #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE# : #ERREUR#</message-echec>
+ </control>
+ <control id="DEP20" libelle="Contrôles spécifiques aux HLM" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.dep.DEP20">
+ <regle-fonctionnelle>L'information TVA HLM est obligatoire.</regle-fonctionnelle>
+ <message-echec>Bordereau de mandat n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD# - Mandat n° #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE#</message-echec>
+ </control>
+ <control id="DEP21" libelle="Contrôles spécifiques aux Hôpitaux" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.dep.DEP21">
+ <regle-fonctionnelle>Le compte de TVA doit être renseigné.</regle-fonctionnelle>
+ <message-echec>Bordereau de mandat n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD# - Mandat n° #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE# : #ERREUR#</message-echec>
+ </control>
+ <control id="DEP23" libelle="Contrôles liés aux mandats de marché" severity="NON BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.dep.DEP23">
+ <regle-fonctionnelle>Lorsque la pièce est un mandat de type Marché, un numéro de marché doit être renseigné, la balise IdMarche doit être alimentée.</regle-fonctionnelle>
+ <message-echec>Absence du numéro de marché. Bordereau de mandat n° #BORD_NUM# - Exer= #BORD_EXER# - TypPce= #PIECE_TYPPCE# - Mandat n° #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE#</message-echec>
+ </control>
+ <control id="DEP24" libelle="Contrôles liés aux mandats de cession" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.dep.DEP24">
+ <regle-fonctionnelle>Lorsque la pièce est un mandat d'ordre budgétaire de nature cession, le compte budgétaire est de type 675 (sortie du bien de l'actif), 676 (plus-value) ou 192 (moins-value) et le numéro d'opération doit faire apparaître le chapitre 042 ou 6 (sortie du bien de l'actif) [vote par nature] ou bien le chapitre 914 (sortie du bien de l'actif) ou 934 [vote par fonction].&lt;br/&gt; Le mandat doit faire référence à un titre d'ordre budgétaire.</regle-fonctionnelle>
+ <message-echec>Bordereau de mandat n° #BORD_NUM# - Exer= #BORD_EXER# - TypPce= #PIECE_TYPPCE# - Mandat n° #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE#</message-echec>
+ </control>
+ <control id="DEP25" libelle="Contrôles spécifiques aux Collectivités" severity="NON BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.dep.DEP25">
+ <regle-fonctionnelle>Les Codes Régie, Numéros d'Emprunts ou d'Inventaire doivent être renseignés.</regle-fonctionnelle>
+ <message-echec>Bordereau de mandat n° #BORD_NUM# - Exer= #BORD_EXER# - TypeBord= #BORD_TYPBORD# - Mandat n° #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE#. #ERREUR#</message-echec>
+ </control>
+ <control id="DEP26" libelle="Contrôles spécifiques aux Collectivités" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.dep.DEP26">
+ <regle-fonctionnelle>La référence à la pièce initiale doit être alimentée dans le cas des charges constatées d'avance et des charges à payer.</regle-fonctionnelle>
+ <message-echec>Bordereau de mandat n° #BORD_NUM# - Mandat n° #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE#. #ERREUR#</message-echec>
+ </control>
+ <control id="REC01" libelle="Contrôle de l'exercice du bordereau" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC01">
+ <regle-fonctionnelle>L'exercice doit correspondre soit à l'année en cours, soit à l'année précédente si on est en période complémentaire tant que l'exercice n'est pas clos.</regle-fonctionnelle>
+ <message-echec>Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER#</message-echec>
+ </control>
+ <control id="REC02" libelle="Contrôle sur l'absence de doublon sur le numéro de bordereau" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC02">
+ <regle-fonctionnelle>Le numéro de bordereau ne doit pas être déjà attribuéà un bordereau de même budget collectivité, même exercice, même type de bordereau (même séquence).</regle-fonctionnelle>
+ <message-echec>Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD#</message-echec>
+ </control>
+ <control id="REC03" libelle="Contrôle de l'existence de la date d'émission du bordereau" severity="NON BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC03">
+ <regle-fonctionnelle>La date d'émission du bordereau doit être valorisée.</regle-fonctionnelle>
+ <message-echec>Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD#</message-echec>
+ </control>
+ <control id="REC04" libelle="Contrôle du cumul des montants du bordereau" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC04">
+ <regle-fonctionnelle>Le montant total, HT et TVA, du bordereau de titres doit être égal à la somme des montants des titres, HT et TVA .</regle-fonctionnelle>
+ <message-echec>Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD# #MT_BORD# #MT_LIGNES#</message-echec>
+ </control>
+ <control id="REC05" libelle="Contrôle des montants" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC05">
+ <regle-fonctionnelle>Tous les montants HT doivent être strictement positifs.</regle-fonctionnelle>
+ <message-echec>Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypeBord= #BORD_TYPBORD# - MtBordHT= #BORD_MTHT# - MtBordTVA= #BORD_MTTVA#|Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD# - Titre n° #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE# - MtHT= #LIGNE_MTHT# - MtTVA= #LIGNE_MTTVA#</message-echec>
+ </control>
+ <control id="REC06" libelle="Contrôle de la cohérence du nombre de pièces" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC06">
+ <regle-fonctionnelle>Le nombre de pièces indiquées dans la balise ' NbrPce ' doit être cohérent avec le nombre de pièces insérées dans le fichier pour ce bordereau.</regle-fonctionnelle>
+ <message-echec>Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - NbrPce= #BORD_NBPCE# - Nombre de pieces= #NB_PIECES#</message-echec>
+ </control>
+ <control id="REC07" libelle="Contrôle de l'absence de doublon sur le numéro de pièce" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC07">
+ <regle-fonctionnelle>Il ne doit pas y avoir de doublons sur le numéro de la pièce.</regle-fonctionnelle>
+ <message-echec>Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypeBord= #BORD_TYPBORD# - Titre n° #PIECE_IDPCE#</message-echec>
+ </control>
+ <control id="REC08" libelle="Contrôle de la date d'envoi de l'avis des sommes à payer" severity="NON BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC08">
+ <regle-fonctionnelle>La date d'envoi des avis de sommes à payer peut être fournie par l'ordonnateur et peut alors servir pour le recouvrement du titre.</regle-fonctionnelle>
+ <message-echec>Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypeBord= #BORD_TYPBORD# - Titre n° #PIECE_IDPCE#</message-echec>
+ </control>
+ <control id="REC09" libelle="Contrôle de l'existence de l'objet de la recette" severity="NON BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC09">
+ <regle-fonctionnelle>L'objet de la recette devrait être renseigné.</regle-fonctionnelle>
+ <message-echec>Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypeBord= #BORD_TYPBORD# - Titre n° #PIECE_IDPCE#</message-echec>
+ </control>
+ <control id="REC10" libelle="Règle de valorisation de la Nature de la pièce" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC10">
+ <regle-fonctionnelle>Les règles sont vérifiées ligne par ligne.&lt;ul&gt;&lt;li&gt;Pour un titre de type ordre mixte, le compte de tiers doit être valorisé, il ne comporte aucun identifiant régie, marché, encaissement ou rôle. &lt;/li&gt; &lt;li&gt;Pour un titre de type émis après encaissement, la référence de l'encaissement doit être renseignée (Bloc RattachPiece et non IdEncaissement).&lt;/li&gt;&lt;li&gt;Si le titre est un titre récapitulatif avec rôle alors le numéro de rôle doit être renseigné.&lt;/li&gt;&lt;li&gt;Si le titre est un titre de type annulation OU de type rattachement OU de nature complémentaire alors le bloc de rattachement doit être valorisé.&lt;/li&gt;&lt;li&gt;Si le titre est un titre de nature marché alors le numéro de marché doit être indiqué.&lt;/li&gt;&lt;li&gt;Si le titre est de type régie alors le numéro de régie doit être valorisé.&lt;/li&gt;&lt;/ul&gt;</regle-fonctionnelle>
+ <message-echec>Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypeBord= #BORD_TYPBORD# - Titre n° #PIECE_IDPCE#.&lt;br/&gt;#ERREUR#|Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypeBord= #BORD_TYPBORD# - Titre n° #PIECE_IDPCE# - Ligne n° #PIECE_IDLIGNE#.&lt;br/&gt;#ERREUR#</message-echec>
+ </control>
+ <control id="REC11" libelle="Contrôle lié au type de nomenclature et vote par opération" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC11">
+ <regle-fonctionnelle>Les comptes Nature, Fonction et Opération doivent être renseignés selon la collectivité.</regle-fonctionnelle>
+ <message-echec>Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypeBord= #BORD_TYPBORD# - Titre n° #PIECE_IDPCE# - Ligne n° #LIGNEDEPIECE_IDPCE#</message-echec>
+ </control>
+ <control id="REC12" libelle="Contrôle de cohérence entre le type de bordereau et les couples (type, nature)" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC12">
+ <regle-fonctionnelle>Le triplet Type de bordereau / Nature du mandat / Type du mandat doit être cohérent.</regle-fonctionnelle>
+ <message-echec>Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypeBord= #BORD_TYPBORD# - Titre n° #PIECE_IDPCE# - TypPce= #PIECE_TYPPCE# - NatPce= #PIECE_NATPCE#</message-echec>
+ </control>
+ <control id="REC13" libelle="Contrôle de l'unicité du compte de tiers pour les titres se rattachant au même code produit" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC13">
+ <regle-fonctionnelle>Les lignes de titre se rattachant au même code produit sont prises en charge sur le même compte de tiers.</regle-fonctionnelle>
+ <message-echec>Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD# - titre n° #PIECE_IDPCE#&lt;ul&gt;#DETAIL_MSG#&lt;/ul&gt;</message-echec>
+ </control>
+ <control id="REC14" libelle="Principe de séquentialité des numéros de ligne" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC14">
+ <regle-fonctionnelle>Le numéro de la ligne de titre ne doit pas être déjà attribué pour le titre en cours de traitement.&lt;BR/&gt;Le numéro de ligne de titre doit être séquentiel pour le titre en cours de traitement.</regle-fonctionnelle>
+ <message-echec>Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypeBord= #BORD_TYPBORD# - Titre n° #PIECE_IDPCE#</message-echec>
+ </control>
+ <control id="REC15" libelle="Contrôle du seuil d'émission des titres" severity="NON BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC15">
+ <regle-fonctionnelle>Les montants des titres doivent avoir un montant supérieur au seuil de mise en recouvrement. </regle-fonctionnelle>
+ <message-echec>Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypeBord= #BORD_TYPBORD# - Titre n° #PIECE_IDPCE# - MtHT= #LIGNE_PIECE_MTHT#</message-echec>
+ </control>
+ <control id="REC16" libelle="Contrôle sur l'existence du code produit" severity="FORCABLE" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC16">
+ <regle-fonctionnelle>Les produits sont paramétrés aussi bien au niveau national qu'au niveau local et peuvent être fournis par l'ordonnateur. Il existe une table de correspondance entre les codes produits locaux et les codes produits nationaux.</regle-fonctionnelle>
+ <message-echec>Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypeBord= #BORD_TYPBORD# - Titre n° #PIECE_IDPCE#|Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypeBord= #BORD_TYPBORD# - Titre n° #PIECE_IDPCE# - Ligne= #LIGNE_NUM#</message-echec>
+ </control>
+ <control id="REC17" libelle="Contrôle de la collectivité sur la TVA" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC17">
+ <regle-fonctionnelle>Le montant de la TVA ne doit être indiqué que si le budget collectivité et / ou le service gèrent la TVA.&lt;br/&gt; Si la TVA est mentionnée alors que la TVA est gérée par un service, le service doit être indiqué.</regle-fonctionnelle>
+ <message-echec>Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypeBord= #BORD_TYPBORD# - Titre n° #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE#</message-echec>
+ </control>
+ <control id="REC18" libelle="Contrôle de l'existence du compte d'imputation de la TVA" severity="NON BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC18">
+ <regle-fonctionnelle>Les montants de la TVA sont imputés sur un compte spécifique de la TVA.</regle-fonctionnelle>
+ <message-echec>Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypeBord= #BORD_TYPBORD# - Titre n° #PIECE_IDPCE# #LIGNE_IDLIGNE#</message-echec>
+ </control>
+ <control id="REC19" libelle="Contrôle sur le montant de la TVA" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC19">
+ <regle-fonctionnelle>Pour les collectivités ou services assujettis à la TVA, le montant du titre doit être égal au montant budgétaire augmenté de la TVA. Le montant de la TVA est créditée au compte de la TVA et le montant hors taxe est créditée au compte budgétaire.</regle-fonctionnelle>
+ <message-echec>Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD# - titre n° #PIECE_IDPCE#&lt;ul&gt;##DETAIL_MSG##&lt;/ul&gt;</message-echec>
+ </control>
+ <control id="REC20" libelle="Contrôle sur l'existence du Type de tiers" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC20">
+ <regle-fonctionnelle>Pour chaque ligne de titre, un débiteur principal doit être renseigné.</regle-fonctionnelle>
+ <message-echec>Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD# - titre n° #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE#</message-echec>
+ </control>
+ <control id="REC21" libelle="Contrôles spécifiques aux Hôpitaux" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC21">
+ <regle-fonctionnelle>Le Finess juridique, les compte de TVA, les Codes Produits et les Informations Assurés peuvent être renseignés.</regle-fonctionnelle>
+ <message-echec>Entête|Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD# - titre n° #PIECE_IDPCE#|Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD# - titre n° #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE#</message-echec>
+ </control>
+ <control id="REC22" libelle="Contrôles spécifiques aux Collectivités" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC22">
+ <regle-fonctionnelle>&lt;ul&gt;Les Codes Produits Locaux doivent être renseignés et ils ne peuvent être libellés à 'Divers'.&lt;/ul&gt;&lt;ul&gt;En M21, il ne doit pas y avoir de balises CodProdLoc, mais uniquement des balises CodProd.&lt;/ul&gt;</regle-fonctionnelle>
+ <message-echec>Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD# - Titre n° #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE#.&lt;br/&gt;#MSG_ERREUR#.</message-echec>
+ </control>
+ <control id="REC23" libelle="Contrôle de l'adresse du débiteur" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC23">
+ <regle-fonctionnelle>Lorsqu'une ligne de titre comprend un tiers, il doit avoir une adresse</regle-fonctionnelle>
+ <message-echec>Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD# - Titre n° #PIECE_IDPCE# #LIGNE_ID#</message-echec>
+ </control>
+ <control id="REC24" libelle="Contrôle de présence et de cohérence de l'identifiant de collectivité" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC24">
+ <regle-fonctionnelle>L'identifiant de collectivité (IdColl) est obligatoire et doit être cohérent. Cette information se trouve dans l'Entête du fichier PES.</regle-fonctionnelle>
+ <message-echec>L'IdColl de l'EnTetePES #ID_COLL#</message-echec>
+ </control>
+ <control id="REC25" libelle="Contrôles liés aux titres d'ordre" severity="NON BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC25">
+ <regle-fonctionnelle>Si le titre est typé ' titre d'ordre ' il ne peut comporter des références bancaires.&lt;br/&gt; Remarque : pour les titres d'ordre : le créancier correspond au receveur de la collectivité. (De préférence CatTiers valorisé à 20 et NatJur valorisé à 07).</regle-fonctionnelle>
+ <message-echec>Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD# - Titre n° #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE#</message-echec>
+ </control>
+ <control id="REC26" libelle="Contrôles liés aux titres sur plusieurs années" severity="NON BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC26">
+ <regle-fonctionnelle>Lorsque la pièce est un titre sur plusieurs années, il faut vérifier que le numéro de convention (IdConv) est alimenté.</regle-fonctionnelle>
+ <message-echec>Absence du numéro de convention. Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD# - TypPce= #PIECE_TYPPCE# - Titre n° #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE#</message-echec>
+ </control>
+ <control id="REC27" libelle="Contrôles liés aux titres de cession" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC27">
+ <regle-fonctionnelle>Lorsque la pièce est un titre d'ordre budgétaire de nature cession, le compte budgétaire est de type 2x (sortie du bien de l'actif), 192 (plus-value) ou 776 (moins-value) et le numéro d'opération doit faire apparaître le chapitre 040 ou 4 (sortie du bien de l'actif) [vote par nature] ou bien le chapitre 914 (sortie du bien de l'actif) ou 934 [vote par fonction].&lt;br/&gt; Le titre doit faire référence à un mandat d'ordre budgétaire.</regle-fonctionnelle>
+ <message-echec>Bordereau de titre n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD# - TypPce= #PIECE_TYPPCE# - Titre n° #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE#</message-echec>
+ </control>
+ <control id="REC28" libelle="Contrôles spécifiques aux Collectivités" severity="NON BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC28">
+ <regle-fonctionnelle>Les Codes Régie, Numéros d'Emprunts ou d'Inventaire doivent être renseignés.</regle-fonctionnelle>
+ <message-echec>Bordereau de mandat n° #BORD_NUM# - Exer= #BORD_EXER# - TypeBord= #BORD_TYPBORD# - Titre n° #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE#. #ERREUR#</message-echec>
+ </control>
+ <control id="REC29" libelle="Contrôles spécifiques aux Collectivités" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.rec.REC29">
+ <regle-fonctionnelle>La référence à la pièce initiale doit être alimentée dans le cas des charges à répartir, des produits constatés d'avance et des produits à rattacher.</regle-fonctionnelle>
+ <message-echec>Bordereau de titre n° #BORD_NUM# - Titre n° #PIECE_IDPCE# - Ligne n° #LIGNE_IDLIGNE#. #ERREUR#</message-echec>
+ </control>
+ <control id="PJ1" libelle="Contrôle de version de PES_PJ" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.pj.PJ1">
+ <regle-fonctionnelle>La version du PES_PJ doit contenir la valeur 1.</regle-fonctionnelle>
+ <message-echec>Version de PES_PJ incorrecte (IdVer doit être de valeur 1).</message-echec>
+ </control>
+ <control id="PJ2" libelle="Contrôle de référencement de PJ avec PJRef" severity="NON BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.pj.PJ2">
+ <regle-fonctionnelle>Les PJ contenues dans le flux doivent avoir des identifiants différents.</regle-fonctionnelle>
+ <message-echec>Les identifiants uniques des PJ doivent absolument être différents les uns des autres.</message-echec>
+ </control>
+ <control id="PJ3" libelle="Contrôle de référencement de PJ avec RefCompta" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.pj.PJ3">
+ <regle-fonctionnelle>Les balises RefCompta et PJRef ne peuvent coexister simultanément dans le même flux PESV2.</regle-fonctionnelle>
+ <message-echec>PJ n° #PJ_IDUNIQUE# - Nom= #PJ_NOM#. Les balises RefCompta et PJRef ne peuvent exister dans le même flux PESV2 : &lt;ul&gt;&lt;li&gt;Soit le bloc PJRef est utilisé et la ou les PJ sont envoyée(s) avec les bordereaux de mandats ou titres auxquels elle(s) se rattache(nt)&lt;/li&gt;&lt;li&gt;Soit le bloc RefCompta est utilisé et la PJ est transmise a posteriori&lt;/li&gt;&lt;/ul&gt;</message-echec>
+ </control>
+ <control id="SIG1" libelle="Contrôle relatif à signature électronique" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.sig.SIG1">
+ <regle-fonctionnelle>En cas de dématérialisation complète avec présence de signature électronique, le flux doit contenir la présence du caractère dématérialisé de l'information.</regle-fonctionnelle>
+ <message-echec>#MSG_ERREUR#.</message-echec>
+ </control>
+ <control id="SIG2" libelle="Contrôle relatif aux montants de cumul annuel" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.sig.SIG2">
+ <regle-fonctionnelle>Le montant du cumul annuel est obligatoire en cas de dématérialisation complète (avec signature électronique).</regle-fonctionnelle>
+ <message-echec>Bordereau n° #BORD_NUM# - Exer= #BORD_EXER# - TypBord= #BORD_TYPBORD#. Le montant du cumul annuel est obligatoire en cas de dématérialisation complète (avec signature électronique).</message-echec>
+ </control>
+ <control id="SIG3" libelle="Contrôle relatif aux caractéristiques de la signature électronique" severity="BLOQUANT" class="fr.gouv.finances.cp.xemelios.controls.pesv2.sig.SIG3">
+ <regle-fonctionnelle>Les éléments de la signature électronique suivants sont obligatoires en cas de signature électronique (niveau global ou bordereau) et doivent être valorisés correctement : Nom du signataire, Qualité (Rôle) du signataire, Date de la signature, Cumul des montants annuels (Sévérité Bloquant)&lt;br/&gt; L'élément de la signature électronique suivant est souhaitable en cas de signature électronique (niveau global ou bordereau) et doit être valorisé correctement : Adresse signature (Sévérité Non Bloquant)</regle-fonctionnelle>
+ <message-echec>#MSG_ERREUR#</message-echec>
+ </control>
+ </document>
+</controls>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<persistence-config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:noNamespaceSchemaLocation="../../../../defs/config-metier/Persistence.xsd">
+ <layer name="mysql" persistence-model="xemelios-sql">
+ <document id="pes-aller" repository-import-xslt-file="">
+ <table type="repository" base-name="PES_ALLER_REPOSITORY" version="2">
+ CREATE TABLE IF NOT EXISTS ${base-name} (
+ ID VARCHAR(25),
+ LIBELLE VARCHAR(100),
+ COLLECTIVITE VARCHAR(15) NOT NULL,
+ REPOSITORY LONGBLOB,
+ ENCODING VARCHAR(20)
+ ) ENGINE MYISAM
+ <patch from-version="1">
+ <sql failonerror="false">ALTER TABLE ${base-name} ADD ID VARCHAR(25)</sql>
+ <sql failonerror="false">ALTER TABLE ${base-name} ADD LIBELLE VARCHAR(100)</sql>
+ </patch>
+ </table>
+ <table type="special-key" base-name="PES_ALLER_SPECIAL_KEYS" version="1">
+ CREATE TABLE IF NOT EXISTS ${base-name} (
+ COLLECTIVITE VARCHAR(15) NOT NULL,
+ BUDGET VARCHAR(24) NOT NULL,
+ INITIAL_DOC_NAME VARCHAR(100) NOT NULL,
+ KEY1 VARCHAR(100),
+ LIB1 VARCHAR(200),
+ KEY2 VARCHAR(100),
+ LIB2 VARCHAR(200),
+ KEY3 VARCHAR(100),
+ LIB3 VARCHAR(200),
+ KEY4 VARCHAR(100),
+ LIB4 VARCHAR(200),
+ KEY5 VARCHAR(100),
+ LIB5 VARCHAR(200),
+ KEY6 VARCHAR(100),
+ LIB6 VARCHAR(200),
+ KEY7 VARCHAR(100),
+ LIB7 VARCHAR(200),
+ KEY8 VARCHAR(100),
+ LIB8 VARCHAR(200),
+ KEY9 VARCHAR(100),
+ LIB9 VARCHAR(200),
+ KEY10 VARCHAR(100),
+ LIB10 VARCHAR(200),
+ INDEX IX_${base-name}_BC (COLLECTIVITE,BUDGET)
+ ) ENGINE MYISAM
+ </table>
+ <table type="list-bc" base-name="PES_ALLER_LIST_BUDG_COLL" version="1">
+ CREATE TABLE IF NOT EXISTS ${base-name} (
+ COLLECTIVITE VARCHAR(15) NOT NULL,
+ BUDGET VARCHAR(24) NOT NULL,
+ BUDGET_LIB VARCHAR(200),
+ COLLECTIVITE_LIB VARCHAR(200),
+ INITIAL_DOC_NAME VARCHAR(100) NOT NULL,
+ INDEX IX_${base-name}_BC (COLLECTIVITE,BUDGET),
+ ARCHIVE_NAME VARCHAR(100), INDEX ${base-name}_AN (ARCHIVE_NAME)
+ ) ENGINE MYISAM
+ </table>
+
+ <etat id="PES_DepenseAller" import-xslt-file="PES_V2/PES-Aller-DA-import-mysql.xsl">
+
+ <key1>
+ <path>/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/@added:generated-id</path>
+ </key1>
+ <key2>
+ <path>/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/@added:generated-id</path>
+ </key2>
+ <key3>
+ <path>/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:BlocPiece/n:InfoPce/n:PJRef/@added:generated-id</path>
+ </key3>
+ <key4>
+ <path>/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePce/n:PJRef/@added:generated-id</path>
+ </key4>
+ <key5>
+ <path>/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/added:AllPJRef/@added:generated-id</path>
+ </key5>
+ <table type="document" base-name="PES_ALLER_DA_DOCUMENTS" version="1">
+ CREATE TABLE IF NOT EXISTS ${base-name} (
+ COLLECTIVITE VARCHAR(15) NOT NULL,
+ BUDGET VARCHAR(24) NOT NULL,
+ INITIAL_DOC_NAME VARCHAR(100) NOT NULL,
+ DOC_ID VARCHAR(100) NOT NULL,
+ DOC LONGBLOB,
+ ENCODING VARCHAR(20),
+ INDEX IX_${base-name}_BC (COLLECTIVITE,BUDGET,DOC_ID),
+ ARCHIVE_NAME VARCHAR(100), INDEX ${base-name}_AN (ARCHIVE_NAME)
+ ) ENGINE MYISAM
+ </table>
+ <table type="index" id="bordereau_depense" base-name="PES_ALLER_DA_BORDEREAU_IX" version="1" main="true">
+ CREATE TABLE IF NOT EXISTS ${base-name} (
+ COLLECTIVITE VARCHAR(15) NOT NULL,
+ BUDGET VARCHAR(24) NOT NULL,
+ DOC_ID VARCHAR(100) NOT NULL,
+ PRIMARY_KEY VARCHAR(100) NOT NULL,
+ NODE_ID VARCHAR(100),
+ NB_MANDATS INTEGER,
+ EXERCICE VARCHAR(4),
+ ID_BORDEREAU INTEGER(7),
+ DATE_EMISSION_BORDEREAU DATE,
+ TYPE_BORDEREAU VARCHAR(2),
+ NB_PIECES INTEGER,
+ MT_CUMUL_ANNUEL DECIMAL(14,2),
+ MT_BOREREAU_HT DECIMAL(14,2),
+ MT_BORDEREAU_TVA DECIMAL(14,2),
+ MT_BORDEREAU_TTC DECIMAL(14,2),
+ INDEX IX_${base-name}_BC (COLLECTIVITE,BUDGET,DOC_ID),
+ INDEX IX_${base-name}_DC (DOC_ID),
+ INITIAL_DOC_NAME VARCHAR(100),
+ INDEX ${base-name}_IDN (INITIAL_DOC_NAME),
+ ARCHIVE_NAME VARCHAR(100),
+ INDEX ${base-name}_AN (ARCHIVE_NAME)
+ ) ENGINE MYISAM
+ </table>
+ <table type="index" id="piece_depense" base-name="PES_ALLER_DA_PIECE_IX" version="2" based-on="key1">
+ CREATE TABLE IF NOT EXISTS ${base-name} (
+ COLLECTIVITE VARCHAR(15) NOT NULL,
+ BUDGET VARCHAR(24) NOT NULL,
+ DOC_ID VARCHAR(100) NOT NULL,
+ NODE_ID VARCHAR(50),
+ NB_LIGNES INTEGER,
+ MONTANT_HT DECIMAL(14,2),
+ MONTANT_TTC DECIMAL(14,2),
+ CODE_SERVICE VARCHAR(10),
+ AFFECT VARCHAR(10),
+ ID_PIECE INTEGER(13),
+ TYPE_PIECE VARCHAR(2),
+ NATURE_PIECE VARCHAR(2),
+ OBJ VARCHAR(100),
+ DATE_ECHEANCE DATE,
+ PJ VARCHAR(250),
+ DGP VARCHAR(10),
+ DGP_DATE_DEB DATE,
+ DGP_DATE_FIN DATE,
+ DGP_DUREE VARCHAR(2),
+ CODE_INTERNE_MOR VARCHAR(2),
+ TAUX_INTERNE_MOR DECIMAL(5,2),
+ INDEX IX_${base-name}_BC (COLLECTIVITE,BUDGET,DOC_ID),
+ INDEX IX_${base-name}_DC (DOC_ID),
+ INITIAL_DOC_NAME VARCHAR(100),
+ INDEX ${base-name}_IDN (INITIAL_DOC_NAME),
+ ARCHIVE_NAME VARCHAR(100),
+ INDEX ${base-name}_AN (ARCHIVE_NAME)
+ ) ENGINE MYISAM
+ <patch from-version="1">
+ <sql failonerror="false">ALTER TABLE ${base-name} MODIFY ID_PIECE INTEGER(13)</sql>
+ </patch>
+
+ </table>
+ <table type="index" id="pjref_piece_depense" base-name="PES_ALLER_DA_PIECE_PJREF" based-on="key3" version="1">
+ CREATE TABLE IF NOT EXISTS ${base-name} (
+ COLLECTIVITE VARCHAR(15) NOT NULL,
+ BUDGET VARCHAR(24) NOT NULL,
+ DOC_ID VARCHAR(100) NOT NULL,
+ NODE_ID VARCHAR(50),
+ SUPPORT_PJ VARCHAR(2),
+ ID_UNIQUE_PJ VARCHAR(50),
+ NOM_PJ VARCHAR(100),
+ INDEX IX_${base-name}_BC (COLLECTIVITE,BUDGET,DOC_ID),
+ INDEX IX_${base-name}_DC (DOC_ID),
+ INITIAL_DOC_NAME VARCHAR(100),
+ INDEX ${base-name}_IDN (INITIAL_DOC_NAME),
+ ARCHIVE_NAME VARCHAR(100),
+ INDEX ${base-name}_AN (ARCHIVE_NAME)
+ ) ENGINE MYISAM
+ </table>
+ <table type="index" id="lignepiece_depense" base-name="PES_ALLER_DA_LIGNE_PIECE_IX" version="2" based-on="key2">
+ CREATE TABLE IF NOT EXISTS ${base-name} (
+ COLLECTIVITE VARCHAR(15) NOT NULL,
+ BUDGET VARCHAR(24) NOT NULL,
+ DOC_ID VARCHAR(100) NOT NULL,
+ NODE_ID VARCHAR(50),
+ ID_LIGNE INTEGER(6),
+ NATURE VARCHAR(12),
+ FONCTION VARCHAR(10),
+ OPERATION VARCHAR(10),
+ COMPTE_ANA VARCHAR(10),
+ FACTURE VARCHAR(20),
+ LIBELLE_VIREMENT_1 VARCHAR(50),
+ LIBELLE_VIREMENT_2 VARCHAR(50),
+ MODE_REGLEMENT VARCHAR(2),
+ TVA_INTRA_COM BOOLEAN,
+ COMPTE_TVA VARCHAR(12),
+ COMPTE_TIERS VARCHAR(12),
+ MT_HT DECIMAL(14,2),
+ MT_TTC DECIMAL(14,2),
+ MT_TVA DECIMAL(14,2),
+ MT_FACTURE_HT DECIMAL(14,2),
+ REC_TVA BOOLEAN,
+ MT_HT_RES DECIMAL(14,2),
+ CODE_OP_SPEC VARCHAR(2),
+ ID_OP_SPEC VARCHAR(15),
+ NATURE_PIECE_ORIGINE VARCHAR(2),
+ EXERCICE_RAT INTEGER(4),
+ ID_PIECE_ORIGINE INTEGER(12),
+ ID_LIGNE_ORIGINE VARCHAR(6),
+ ID_CONV VARCHAR(25),
+ ID_MARCHE VARCHAR(30),
+ ID_EMPRUNT_ORDO VARCHAR(24),
+ ID_ACTIF VARCHAR(25),
+ ID_REGIE INTEGER(5),
+ ID_TIERS VARCHAR(30),
+ DATE_MALADE DATE,
+ NAT_ID_TIERS VARCHAR(2),
+ DATE_ID_TIERS DATE,
+ REF_TIERS VARCHAR(30),
+ CAT_TIERS VARCHAR(2),
+ NAT_JUR VARCHAR(2),
+ CIVILITE VARCHAR(10),
+ NOM VARCHAR(38),
+ COMPLEMENT_NOM VARCHAR(38),
+ PRENOM VARCHAR(38),
+ TYPE_ADRESSE VARCHAR(1),
+ ADR1 VARCHAR(38),
+ ADR2 VARCHAR(38),
+ ADR3 VARCHAR(38),
+ CODE_POSTAL VARCHAR(5),
+ VILLE VARCHAR(38),
+ CODE_RES VARCHAR(3),
+ CODE_PAYS VARCHAR(3),
+ DATE_ADR DATE,
+ RIB VARCHAR(23),
+ INDEX IX_${base-name}_BC (COLLECTIVITE,BUDGET,DOC_ID),
+ INDEX IX_${base-name}_DC (DOC_ID),
+ INITIAL_DOC_NAME VARCHAR(100),
+ INDEX ${base-name}_IDN (INITIAL_DOC_NAME),
+ ARCHIVE_NAME VARCHAR(100),
+ INDEX ${base-name}_AN (ARCHIVE_NAME)
+ ) ENGINE MYISAM
+ <patch from-version="1">
+ <sql failonerror="false">alter table ${base-name} MODIFY ID_MARCHE VARCHAR(30)</sql>
+ </patch>
+
+ </table>
+ <table type="index" id="pjref_lignepiece_depense" base-name="PES_ALLER_DA_LIGNE_PIECE_PJREF" based-on="key4" version="1">
+ CREATE TABLE IF NOT EXISTS ${base-name} (
+ COLLECTIVITE VARCHAR(15) NOT NULL,
+ BUDGET VARCHAR(24) NOT NULL,
+ DOC_ID VARCHAR(100) NOT NULL,
+ NODE_ID VARCHAR(50),
+ SUPPORT_PJ VARCHAR(2),
+ ID_UNIQUE_PJ VARCHAR(50),
+ NOM_PJ VARCHAR(100),
+ INDEX IX_${base-name}_BC (COLLECTIVITE,BUDGET,DOC_ID),
+ INDEX IX_${base-name}_DC (DOC_ID),
+ INITIAL_DOC_NAME VARCHAR(100),
+ INDEX ${base-name}_IDN (INITIAL_DOC_NAME),
+ ARCHIVE_NAME VARCHAR(100),
+ INDEX ${base-name}_AN (ARCHIVE_NAME)
+ ) ENGINE MYISAM
+ </table>
+ <table type="index" id="depense_all_pj" base-name="PES_ALLER_DA_ALL_PJ" based-on="key5" version="1">
+ CREATE TABLE IF NOT EXISTS ${base-name} (
+ COLLECTIVITE VARCHAR(15) NOT NULL,
+ BUDGET VARCHAR(24) NOT NULL,
+ DOC_ID VARCHAR(100) NOT NULL,
+ NODE_ID VARCHAR(50),
+ SUPPORT_PJ VARCHAR(2),
+ ID_UNIQUE_PJ VARCHAR(50),
+ NOM_PJ VARCHAR(100),
+ INDEX IX_${base-name}_BC (COLLECTIVITE,BUDGET,DOC_ID),
+ INDEX IX_${base-name}_DC (DOC_ID),
+ INITIAL_DOC_NAME VARCHAR(100),
+ INDEX ${base-name}_IDN (INITIAL_DOC_NAME),
+ ARCHIVE_NAME VARCHAR(100),
+ INDEX ${base-name}_AN (ARCHIVE_NAME)
+ ) ENGINE MYISAM
+ </table>
+
+
+ <!-- CRITERIA BORDEREAU BLOC BORDEREAU -->
+ <criteria id="bordereau_exercice" type="1" sql-index-id="SQI_DA_1">
+ <where-clause>${table}.${column}=##VALEUR:bordereau_exercice##</where-clause>
+ </criteria>
+ <criteria id="bordereau_id" type="1" sql-index-id="SQI_DA_2">
+ <where-clause>${table}.${column}##OPERATEUR:bordereau_id####VALEUR:bordereau_id##</where-clause>
+ </criteria>
+ <criteria id="bordereau_date_emission" type="1" sql-index-id="SQI_DA_3">
+ <where-clause>fn:date-compare(${table}.${column},bordereau_date_emission)</where-clause>
+ </criteria>
+ <criteria id="bordereau_type" type="1" sql-index-id="SQI_DA_4">
+ <where-clause>${table}.${column}=##VALEUR:bordereau_type##</where-clause>
+ </criteria>
+ <criteria id="bordereau_nb_pieces" type="1" sql-index-id="SQI_DA_5">
+ <where-clause>${table}.${column}##OPERATEUR:bordereau_nb_pieces####VALEUR:bordereau_nb_pieces##</where-clause>
+ </criteria>
+ <criteria id="bordereau_mt_cumul_annuel" type="1" sql-index-id="SQI_DA_6">
+ <where-clause>${table}.${column}##OPERATEUR:bordereau_mt_cumul_annuel####VALEUR:bordereau_mt_cumul_annuel##</where-clause>
+ </criteria>
+ <criteria id="bordereau_mt_bord_ht" type="1" sql-index-id="SQI_DA_7">
+ <where-clause>${table}.${column}##OPERATEUR:bordereau_mt_ht####VALEUR:bordereau_mt_ht##</where-clause>
+ </criteria>
+ <criteria id="bordereau_mt_bord_tva" type="1" sql-index-id="SQI_DA_8">
+ <where-clause>${table}.${column}##OPERATEUR:bordereau_mt_bord_tva####VALEUR:bordereau_mt_bord_tva##</where-clause>
+ </criteria>
+ <criteria id="bordereau_montant_TTC" sql-index-id="SQI_DA_8B">
+ <where-clause>${table}.${column}##OPERATEUR:bordereau_montant_TTC####VALEUR:bordereau_montant_TTC##</where-clause>
+ </criteria>
+ <!-- CRITERIA PIECE -->
+ <criteria id="piece_code_service" sql-index-id="SQI_DA_9" type="1">
+ <where-clause>fn:string-compare(${table}.${column},piece_code_service)</where-clause>
+ </criteria>
+ <criteria id="piece_affect" sql-index-id="SQI_DA_10" type="1">
+ <where-clause>fn:string-compare(${table}.${column},piece_affect)</where-clause>
+ </criteria>
+ <criteria id="piece_id" sql-index-id="SQI_DA_11" type="1">
+ <where-clause>${table}.${column}##OPERATEUR:piece_id####VALEUR:piece_id##</where-clause>
+ </criteria>
+ <criteria id="piece_type" sql-index-id="SQI_DA_12" type="1">
+ <where-clause>${table}.${column}=##VALEUR:piece_type##</where-clause>
+ </criteria>
+ <criteria id="piece_nature" sql-index-id="SQI_DA_13" type="1">
+ <where-clause>${table}.${column}=##VALEUR:piece_nature##</where-clause>
+ </criteria>
+ <criteria id="piece_obj" sql-index-id="SQI_DA_14" type="1">
+ <where-clause>fn:string-compare(${table}.${column},piece_obj)</where-clause>
+ </criteria>
+ <criteria id="piece_date_echeance" sql-index-id="SQI_DA_15" type="1">
+ <where-clause>fn:date-compare(${table}.${column},piece_date_echeance)</where-clause>
+ </criteria>
+ <criteria id="piece_avec_pj" type="1" sql-index-id="SQI_DA_M221">
+ <where-clause>${table}.${column}='##VALEUR:piece_avec_pj##'</where-clause>
+ </criteria>
+ <criteria id="piece_dgp" sql-index-id="SQI_DA_M222" type="1">
+ <where-clause>${table}.${column}='##VALEUR:piece_dgp##'</where-clause>
+ </criteria>
+ <criteria id="piece_dgp_date_deb" sql-index-id="SQI_DA_18" type="1">
+ <where-clause>fn:date-compare(${table}.${column},piece_dgp_date_deb)</where-clause>
+ </criteria>
+ <criteria id="piece_dgp_date_fin" sql-index-id="SQI_DA_19" type="1">
+ <where-clause>fn:date-compare(${table}.${column},piece_dgp_date_fin)</where-clause>
+ </criteria>
+ <criteria id="piece_dgp_duree" sql-index-id="SQI_DA_20" type="1">
+ <where-clause>fn:string-compare(${table}.${column},piece_dgp_duree)</where-clause>
+ </criteria>
+ <criteria id="piece_dgp_code_interne_mor" sql-index-id="SQI_DA_21" type="1">
+ <where-clause>fn:string-compare(${table}.${column},piece_dgp_code_interne_mor)</where-clause>
+ </criteria>
+ <criteria id="piece_dgp_taux_interne_mor" sql-index-id="SQI_DA_22" type="1">
+ <where-clause>fn:string-compare(${table}.${column},piece_dgp_taux_interne_mor)</where-clause>
+ </criteria>
+ <criteria id="piece_montantHT" sql-index-id="SQI_DA_85" type="1">
+ <where-clause>${table}.${column}##OPERATEUR:piece_montantHT####VALEUR:piece_montantHT##</where-clause>
+ </criteria>
+ <criteria id="piece_montantTTC" sql-index-id="SQI_DA_86" type="1">
+ <where-clause>${table}.${column}##OPERATEUR:piece_montantTTC####VALEUR:piece_montantTTC##</where-clause>
+ </criteria>
+ <!-- CRITERIA PJREF PIECE -->
+ <criteria id="piece_pjref_support" sql-index-id="SQI_DA_23" type="1">
+ <where-clause>fn:string-compare(${table}.${column},piece_pjref_support)</where-clause>
+ </criteria>
+ <criteria id="piece_pjref_id_unique" sql-index-id="SQI_DA_24" type="1">
+ <where-clause>fn:string-compare(${table}.${column},piece_pjref_id_unique)</where-clause>
+ </criteria>
+ <criteria id="piece_pjref_nom_pj" sql-index-id="SQI_DA_25" type="1">
+ <where-clause>fn:string-compare(${table}.${column},piece_pjref_nom_pj)</where-clause>
+ </criteria>
+ <!-- CRITERIA LIGNE PIECE -->
+ <criteria id="ligne_piece_id_ligne" sql-index-id="SQI_DA_26" type="1">
+ <where-clause>${table}.${column}##OPERATEUR:ligne_piece_id_ligne####VALEUR:ligne_piece_id_ligne##</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_nature" sql-index-id="SQI_DA_27" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_nature)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_fonction" sql-index-id="SQI_DA_28" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_fonction)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_operation" sql-index-id="SQI_DA_29" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_operation)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_compte_ana" sql-index-id="SQI_DA_30" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_compte_ana)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_facture" sql-index-id="SQI_DA_31" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_facture)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_libelle_virement_1" sql-index-id="SQI_DA_32" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_libelle_virement_1)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_libelle_virement_2" sql-index-id="SQI_DA_33" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_libelle_virement_2)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_mode_reglement" sql-index-id="SQI_DA_34" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_mode_reglement)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_tva_intra_com" sql-index-id="SQI_DA_35" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_tva_intra_com)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_compte_tva" sql-index-id="SQI_DA_36" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_compte_tva)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_compte_tiers" sql-index-id="SQI_DA_37" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_compte_tiers)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_montant_ht" sql-index-id="SQI_DA_38" type="1">
+ <where-clause>${table}.${column}##OPERATEUR:ligne_piece_montant_ht####VALEUR:ligne_piece_montant_ht##</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_montant_ttc" sql-index-id="SQI_DA_87" type="1">
+ <where-clause>${table}.${column}##OPERATEUR:ligne_piece_montant_ttc####VALEUR:ligne_piece_montant_ttc##</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_montant_tva" sql-index-id="SQI_DA_39" type="1">
+ <where-clause>${table}.${column}##OPERATEUR:ligne_piece_montant_tva####VALEUR:ligne_piece_montant_tva##</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_montant_facture_ht" sql-index-id="SQI_DA_40" type="1">
+ <where-clause>${table}.${column}##OPERATEUR:ligne_piece_montant_facture_ht####VALEUR:ligne_piece_montant_facture_ht##</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_rec_tva" sql-index-id="SQI_DA_41" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_rec_tva)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_mt_ht_res" sql-index-id="SQI_DA_42" type="1">
+ <where-clause>${table}.${column}##OPERATEUR:ligne_piece_mt_ht_res####VALEUR:ligne_piece_mt_ht_res##</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_code_op_spec" sql-index-id="SQI_DA_43" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_code_op_spec)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_id_op_spec" sql-index-id="SQI_DA_44" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_id_op_spec)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_nature_piece" sql-index-id="SQI_DA_45" type="1">
+ <where-clause>${table}.${column}=##VALEUR:ligne_piece_nature_piece##</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_exercice_rat" sql-index-id="SQI_DA_46" type="1">
+ <where-clause>${table}.${column}##OPERATEUR:ligne_piece_exercice_rat####VALEUR:ligne_piece_exercice_rat##</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_id_piece_origine" sql-index-id="SQI_DA_47" type="1">
+ <where-clause>${table}.${column}##OPERATEUR:ligne_piece_id_piece_origine####VALEUR:ligne_piece_id_piece_origine##</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_id_ligne_origine" sql-index-id="SQI_DA_48" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_id_ligne_origine)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_id_conv" sql-index-id="SQI_DA_49" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_id_conv)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_id_marche" sql-index-id="SQI_DA_50" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_id_marche)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_id_emprunt_ordo" sql-index-id="SQI_DA_51" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_id_emprunt_ordo)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_id_actif" sql-index-id="SQI_DA_52" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_id_actif)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_id_regie" sql-index-id="SQI_DA_53" type="1">
+ <where-clause>${table}.${column}##OPERATEUR:ligne_piece_id_regie####VALEUR:ligne_piece_id_regie##</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_id_tiers" sql-index-id="SQI_DA_54" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_id_tiers)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_date_malade" sql-index-id="SQI_DA_55" type="1">
+ <where-clause>fn:date-compare(${table}.${column},ligne_piece_date_malade)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_nature_id_tiers" sql-index-id="SQI_DA_56" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_nature_id_tiers)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_nature_id_tiers_lib" sql-index-id="SQI_DA_56" type="1">
+ <where-clause>${table}.${column}=##VALEUR:ligne_piece_nature_id_tiers##</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_date_id_tiers" sql-index-id="SQI_DA_57" type="1">
+ <where-clause>fn:date-compare(${table}.${column},ligne_piece_date_id_tiers)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_reference_tiers" sql-index-id="SQI_DA_58" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_reference_tiers)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_categorie_tiers" sql-index-id="SQI_DA_59" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_categorie_tiers)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_nature_juridique" sql-index-id="SQI_DA_60" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_nature_juridique)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_civilite" sql-index-id="SQI_DA_61" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_civilite)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_nom" sql-index-id="SQI_DA_62" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_nom)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_complement_nom" sql-index-id="SQI_DA_63" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_complement_nom)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_prenom" sql-index-id="SQI_DA_64" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_prenom)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_type_adresse" sql-index-id="SQI_DA_65" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_type_adresse)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_adresse1" sql-index-id="SQI_DA_66" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_adresse1)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_adresse2" sql-index-id="SQI_DA_67" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_adresse2)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_adresse3" sql-index-id="SQI_DA_68" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_adresse3)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_cp" sql-index-id="SQI_DA_69" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_cp)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_ville" sql-index-id="SQI_DA_70" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_ville)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_code_res" sql-index-id="SQI_DA_71" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_code_res)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_code_pays" sql-index-id="SQI_DA_72" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_code_pays)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_date_adresse" sql-index-id="SQI_DA_73" type="1">
+ <where-clause>fn:date-compare(${table}.${column},ligne_piece_date_adresse)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_rib" sql-index-id="SQI_DA_74" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_rib)</where-clause>
+ </criteria>
+ <!-- CRITERIA PJREF LIGNE PIECE -->
+ <criteria id="ligne_piece_pjref_support" sql-index-id="SQI_DA_75" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_pjref_support)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_pjref_id_unique" sql-index-id="SQI_DA_76" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_pjref_id_unique)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_pjref_nom_pj" sql-index-id="SQI_DA_77" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_pjref_nom_pj)</where-clause>
+ </criteria>
+ <criteria id="nb_Piece" sql-index-id="SQI_DA_83">
+ <where-clause>${table}.${column}##OPERATEUR:nb_Piece####VALEUR:nb_Piece##</where-clause>
+ </criteria>
+ <criteria id="nb_Ligne" sql-index-id="SQI_DA_84">
+ <where-clause>${table}.${column}##OPERATEUR:nb_Ligne####VALEUR:nb_Ligne##</where-clause>
+ </criteria>
+ <criteria id="justifie_par" sql-index-id="DEP_ALLPJ_ID_UNIQUE">
+ <where-clause>fn:string-compare(${table}.${column},IdUnique)</where-clause>
+ </criteria>
+
+
+ <!-- INDEX BORDEREAU BLOC BORDEREAU -->
+ <sql-index id="SQI_DA_M0" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/@added:primary-key" datatype="string" column="PRIMARY_KEY" table="bordereau_depense"/>
+ <!--sql-index id="SQI_DA_M1" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/@added:primary-key" datatype="string" column="PRIMARY_KEY" table="bordereau_depense"/-->
+ <sql-index id="SQI_DA_M4" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/@ano:node-id" datatype="string" table="bordereau_depense" column="NODE_ID"/>
+ <!--sql-index id="SQI_DA_M5" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/@ano:node-id" datatype="string" table="bordereau_depense" column="NODE_ID"/-->
+ <sql-index id="SQI_DA_1" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:BlocBordereau/n:Exer/@V" datatype="integer" table="bordereau_depense" column="EXERCICE"/>
+ <!--sql-index id="SQI_DA_1B" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:BlocBordereau/n:Exer/@V" datatype="integer" table="bordereau_depense" column="EXERCICE"/-->
+ <sql-index id="SQI_DA_2" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:BlocBordereau/n:IdBord/@V" datatype="integer" table="bordereau_depense" column="ID_BORDEREAU"/>
+ <sql-index id="SQI_DA_3" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:BlocBordereau/n:DteBordEm/@V" datatype="date" format="yyyy-MM-dd" table="bordereau_depense" column="DATE_EMISSION_BORDEREAU"/>
+ <sql-index id="SQI_DA_4" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:BlocBordereau/n:TypBord/@V" datatype="string" table="bordereau_depense" column="TYPE_BORDEREAU"/>
+ <!--sql-index id="SQI_DA_4B" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:BlocBordereau/n:TypBord/@V" datatype="string" table="bordereau_depense" column="TYPE_BORDEREAU"/-->
+ <sql-index id="SQI_DA_5" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:BlocBordereau/n:NbrPce/@V" datatype="integer" table="bordereau_depense" column="NB_PIECES"/>
+ <sql-index id="SQI_DA_6" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:BlocBordereau/n:MtCumulAnnuel/@V" datatype="decimal" table="bordereau_depense" column="MT_CUMUL_ANNUEL"/>
+ <sql-index id="SQI_DA_7" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:BlocBordereau/n:MtBordHT/@V" datatype="decimal" table="bordereau_depense" column="MT_BOREREAU_HT"/>
+ <sql-index id="SQI_DA_8" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:BlocBordereau/n:MtBordTVA/@V" datatype="decimal" table="bordereau_depense" column="MT_BORDEREAU_TVA"/>
+ <sql-index id="SQI_DA_8B" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/@added:montantTTC" datatype="decimal" table="bordereau_depense" column="MT_BORDEREAU_TTC"/>
+ <!-- INDEX PIECE -->
+ <sql-index id="SQI_DA_9" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:BlocPiece/n:InfoPce/n:CodServ/@V" column="CODE_SERVICE" datatype="string" table="piece_depense"/>
+ <sql-index id="SQI_DA_10" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:BlocPiece/n:InfoPce/n:Affect/@V" column="AFFECT" datatype="string" table="piece_depense"/>
+ <sql-index id="SQI_DA_11" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:BlocPiece/n:InfoPce/n:IdPce/@V" column="ID_PIECE" datatype="integer" table="piece_depense"/>
+ <sql-index id="SQI_DA_12" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:BlocPiece/n:InfoPce/n:TypPce/@V" column="TYPE_PIECE" datatype="string" table="piece_depense"/>
+ <sql-index id="SQI_DA_13" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:BlocPiece/n:InfoPce/n:NatPce/@V" column="NATURE_PIECE" datatype="string" table="piece_depense"/>
+ <sql-index id="SQI_DA_14" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:BlocPiece/n:InfoPce/n:Obj/@V" column="OBJ" datatype="string" table="piece_depense"/>
+ <sql-index id="SQI_DA_15" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:BlocPiece/n:InfoPce/n:DteEch/@V" column="DATE_ECHEANCE" format="yyyy-MM-dd" datatype="date" table="piece_depense"/>
+ <!--sql-index id="SQI_DA_16" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:BlocPiece/n:InfoPce/n:PJ/@V" column="PJ" datatype="string" table="piece_depense"/n:-->
+ <!--sql-index id="SQI_DA_17" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:BlocPiece/n:DGP/n:Dgp/@V" column="DGP" datatype="boolean" table="piece_depense"/n:-->
+ <sql-index id="SQI_DA_18" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:BlocPiece/n:DGP/n:DteDebDgp/@V" column="DGP_DATE_DEB" format="yyyy-MM-dd" datatype="date" table="piece_depense"/>
+ <sql-index id="SQI_DA_19" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:BlocPiece/n:DGP/n:DteFinDgp/@V" column="DGP_DATE_FIN" format="yyyy-MM-dd" datatype="date" table="piece_depense"/>
+ <sql-index id="SQI_DA_20" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:BlocPiece/n:DGP/n:DureeDgp/@V" column="DGP_DUREE" datatype="string" table="piece_depense"/>
+ <sql-index id="SQI_DA_21" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:BlocPiece/n:DGP/n:CodeIntMor/@V" column="CODE_INTERNE_MOR" datatype="string" table="piece_depense"/>
+ <sql-index id="SQI_DA_22" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:BlocPiece/n:DGP/n:TxIntMor/@V" column="TAUX_INTERNE_MOR" datatype="string" table="piece_depense"/>
+ <sql-index id="SQI_DA_M221" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/@added:avecPJ" datatype="string" column="PJ" table="piece_depense"/>
+ <sql-index id="SQI_DA_M222" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/@added:DGP" column="DGP" datatype="string" table="piece_depense"/>
+ <!-- INDEX PJREF PIECE -->
+ <sql-index id="SQI_DA_23" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:BlocPiece/n:InfoPce/n:PJRef/n:Support/@V" column="SUPPORT_PJ" datatype="string" table="pjref_piece_depense"/>
+ <sql-index id="SQI_DA_24" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:BlocPiece/n:InfoPce/n:PJRef/n:IdUnique/@V" column="ID_UNIQUE_PJ" datatype="string" table="pjref_piece_depense"/>
+ <sql-index id="SQI_DA_25" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:BlocPiece/n:InfoPce/n:PJRef/n:NomPJ/@V" column="NOM_PJ" datatype="string" table="pjref_piece_depense"/>
+ <!--sql-index id="SQI_DA_M101" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:BlocPiece/n:InfoPce/n:PJRef/@generated-id" datatype="string" column="NODE_ID" table="pjref_piece_depense"/-->
+ <!-- INDEX LIGNE PIECE -->
+ <sql-index id="SQI_DA_26" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePce/n:IdLigne/@V" column="ID_LIGNE" datatype="integer" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_27" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePce/n:Nature/@V" column="NATURE" datatype="string" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_28" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePce/n:Fonction/@V" column="FONCTION" datatype="string" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_29" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePce/n:Operation/@V" column="OPERATION" datatype="string" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_30" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePce/n:CptAna/@V" column="COMPTE_ANA" datatype="string" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_31" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePce/n:Facture/@V" column="FACTURE" datatype="string" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_32" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePce/n:LibVir1/@V" column="LIBELLE_VIREMENT_1" datatype="string" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_33" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePce/n:LibVir2/@V" column="LIBELLE_VIREMENT_2" datatype="string" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_34" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePce/n:ModRegl/@V" column="MODE_REGLEMENT" datatype="string" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_35" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePce/n:TVAIntraCom/@V" column="TVA_INTRA_COM" datatype="boolean" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_36" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePce/n:CpteTVA/@V" column="COMPTE_TVA" datatype="string" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_37" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePce/n:CpteTiers/@V" column="COMPTE_TIERS" datatype="string" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_38" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePce/n:MtHT/@V" column="MT_HT" datatype="decimal" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_39" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePce/n:MtTVA/@V" column="MT_TVA" datatype="decimal" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_40" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePce/n:MtFactHT/@V" column="MT_FACTURE_HT" datatype="decimal" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_41" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoTVAHLM/n:RecTVA/@V" column="REC_TVA" datatype="boolean" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_42" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoTVAHLM/n:MtHTRes/@V" column="MT_HT_RES" datatype="decimal" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_43" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:OpSpec/n:CodOpSpec/@V" column="CODE_OP_SPEC" datatype="string" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_44" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:OpSpec/n:IdOpSpec/@V" column="ID_OP_SPEC" datatype="string" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_45" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:RattachPiece/n:NatPceOrig/@V" column="NATURE_PIECE_ORIGINE" datatype="string" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_46" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:RattachPiece/n:ExerRat/@V" column="EXERCICE_RAT" datatype="integer" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_47" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:RattachPiece/n:IdPceOrig/@V" column="ID_PIECE_ORIGINE" datatype="integer" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_48" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:RattachPiece/n:IdLigneOrig/@V" column="ID_LIGNE_ORIGINE" datatype="string" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_49" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:LiensIdent/n:IdConv/@V" column="ID_CONV" datatype="string" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_50" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:LiensIdent/n:IdMarche/@V" column="ID_MARCHE" datatype="string" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_51" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:LiensIdent/n:IdEmpruntOrdo/@V" column="ID_EMPRUNT_ORDO" datatype="string" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_52" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:LiensIdent/n:IdActif/@V" column="ID_ACTIF" datatype="string" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_53" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:LiensIdent/n:IdRegie/@V" column="ID_REGIE" datatype="integer" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_54" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:InfoTiers/n:IdTiers/@V" column="ID_TIERS" datatype="string" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_55" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:InfoTiers/n:DteMalade/@V" column="DATE_MALADE" format="yyyy-MM-dd" datatype="date" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_56" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:InfoTiers/n:NatIdTiers/@V" column="NAT_ID_TIERS" datatype="string" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_57" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:InfoTiers/n:DteIdTiers/@V" column="DATE_ID_TIERS" format="yyyy-MM-dd" datatype="date" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_58" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:InfoTiers/n:RefTiers/@V" column="REF_TIERS" datatype="string" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_59" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:InfoTiers/n:CatTiers/@V" column="CAT_TIERS" datatype="string" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_60" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:InfoTiers/n:NatJur/@V" column="NAT_JUR" datatype="string" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_61" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:InfoTiers/n:Civilite/@V" column="CIVILITE" datatype="string" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_62" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:InfoTiers/n:Nom/@V" column="NOM" datatype="string" format="uppercase" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_63" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:InfoTiers/n:ComplNom/@V" column="COMPLEMENT_NOM" datatype="string" format="uppercase" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_64" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:InfoTiers/n:Prenom/@V" column="PRENOM" datatype="string" format="uppercase" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_65" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:Adresse/n:TypAdr/@V" column="TYPE_ADRESSE" datatype="string" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_66" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:Adresse/n:Adr1/@V" column="ADR1" datatype="string" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_67" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:Adresse/n:Adr2/@V" column="ADR2" datatype="string" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_68" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:Adresse/n:Adr3/@V" column="ADR3" datatype="string" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_69" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:Adresse/n:CP/@V" column="CODE_POSTAL" datatype="string" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_70" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:Adresse/n:Ville/@V" column="VILLE" datatype="string" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_71" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:Adresse/n:CodRes/@V" column="CODE_RES" datatype="string" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_72" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:Adresse/n:CodPays/@V" column="CODE_PAYS" datatype="string" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_73" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:Adresse/n:DteAdr/@V" column="DATE_ADR" format="yyyy-MM-dd" datatype="date" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_74" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:CpteBancaire/@added:rib" column="RIB" datatype="string" table="lignepiece_depense"/>
+ <!-- INDEX PJREF LIGNE PIECE -->
+ <sql-index id="SQI_DA_75" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePce/n:PJRef/n:Support/@V" column="SUPPORT_PJ" datatype="string" table="pjref_lignepiece_depense"/>
+ <sql-index id="SQI_DA_76" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePce/n:PJRef/n:IdUnique" column="ID_UNIQUE_PJ" datatype="string" table="pjref_lignepiece_depense"/>
+ <sql-index id="SQI_DA_77" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePce/n:PJRef/n:NomPJ" column="NOM_PJ" datatype="string" table="pjref_lignepiece_depense"/>
+ <!-- INDEX GENERATED ID-->
+ <!--sql-index id="SQI_DA_78" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/@added:generated-id" column="NODE_ID" datatype="string" table="bordereau_depense"/n:-->
+ <sql-index id="SQI_DA_79" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/@added:generated-id" column="NODE_ID" datatype="string" table="piece_depense"/>
+ <sql-index id="SQI_DA_80" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/@added:generated-id" column="NODE_ID" datatype="string" table="lignepiece_depense"/>
+ <sql-index id="SQI_DA_81" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:BlocPiece/n:InfoPce/n:PJRef/@added:generated-id" column="NODE_ID" datatype="string" table="pjref_piece_depense"/>
+ <sql-index id="SQI_DA_82" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePce/n:PJRef/@added:generated-id" column="NODE_ID" datatype="string" table="pjref_lignepiece_depense"/>
+ <!-- INDEX ADDED -->
+ <sql-index id="SQI_DA_83" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/@added:nbPiece" column="NB_MANDATS" datatype="integer" table="bordereau_depense"/>
+ <sql-index id="SQI_DA_84" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/@added:nbLigne" column="NB_LIGNES" datatype="integer" table="piece_depense"/>
+ <sql-index id="SQI_DA_85" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/@added:montantTTC" column="MONTANT_TTC" datatype="decimal" table="piece_depense"/>
+ <sql-index id="SQI_DA_86" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/@added:montantHT" column="MONTANT_HT" datatype="decimal" table="piece_depense"/>
+ <sql-index id="SQI_DA_87" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/@added:montantTTC" column="MT_TTC" datatype="decimal" table="lignepiece_depense"/>
+
+ <!--sql-index id="SQI_DA_M2" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:BlocBordereau/n:IdBord/@V" datatype="integer" table="bordereau_depense" column="ID_BORDEREAU"/-->
+ <!--sql-index id="SQI_DA_M3" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:BlocPiece/n:InfoPce/n:IdPce/@V" column="ID_PIECE" datatype="string" table="piece_depense"/-->
+ <!-- ALL PJREF -->
+ <sql-index id="DEP_ALLPJ_NODE" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:added:AllPJRef/@added:generated-id" datatype="string" column="NODE_ID" table="depense_all_pj"/>
+ <sql-index id="DEP_ALLPJ_SUPPORT" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:added:AllPJRef/n:Support/@V" datatype="string" column="SUPPORT_PJ" table="depense_all_pj"/>
+ <sql-index id="DEP_ALLPJ_ID_UNIQUE" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:added:AllPJRef/n:IdUnique/@V" datatype="string" column="ID_UNIQUE_PJ" table="depense_all_pj"/>
+ <sql-index id="DEP_ALLPJ_NOM_PJ" path="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:added:AllPJRef/n:NomPJ/@V" datatype="string" column="NOM_PJ" table="depense_all_pj"/>
+
+ <element id="Piece">
+ <sql-count>COUNT(DISTINCT(CONCAT(PES_ALLER_DA_PIECE_IX.DOC_ID , PES_ALLER_DA_PIECE_IX.NODE_ID , PES_ALLER_DA_PIECE_IX.ID_PIECE)))</sql-count>
+ <special-cond>PES_ALLER_DA_PIECE_IX.DOC_ID IS NOT NULL</special-cond>
+ </element>
+ <element id="LigneDePiece">
+ <sql-count>COUNT(DISTINCT(CONCAT(PES_ALLER_DA_LIGNE_PIECE_IX.DOC_ID , PES_ALLER_DA_LIGNE_PIECE_IX.NODE_ID , PES_ALLER_DA_LIGNE_PIECE_IX.ID_LIGNE)))</sql-count>
+ <special-cond>PES_ALLER_DA_LIGNE_PIECE_IX.DOC_ID IS NOT NULL</special-cond>
+ </element>
+ </etat>
+ <!--etat id="PES_RoleAller" import-xslt-file="">
+ <table type="document" base-name="PES_ALLER_ROA_DOCUMENTS" version="1" main="yes">
+ CREATE TABLE IF NOT EXISTS ${base-name} (
+ COLLECTIVITE VARCHAR(15) NOT NULL,
+ BUDGET VARCHAR(24) NOT NULL,
+ INITIAL_DOC_NAME VARCHAR(100) NOT NULL,
+ DOC_ID VARCHAR(100) NOT NULL,
+ DOC LONGBLOB,
+ ENCODING VARCHAR(20),
+ INDEX IX_${base-name}_BC (COLLECTIVITE,BUDGET,DOC_ID)
+ ) ENGINE MYISAM
+ </table>
+ <table type="index" id="1" base-name="PES_ALLER_ROA_BORDEREAU_IX" version="1" main="yes">
+ CREATE TABLE IF NOT EXISTS ${base-name} (
+ COLLECTIVITE VARCHAR(15) NOT NULL,
+ BUDGET VARCHAR(24) NOT NULL,
+ DOC_ID VARCHAR(100) NOT NULL,
+ NODE_ID VARCHAR(50) NOT NULL,
+ EXERCICE DATE,
+ ID_BORDEREAU VARCHAR(7),
+ DATE_EMISSION_BORDEREAU DATE,
+ TYPE_BORDEREAU VARCHAR(2),
+ NB_PIECES INTEGER,
+ MT_CUMUL_ANNUEL DECIMAL(14,2),
+ MT_BOREREAU_HT DECIMAL(14,2),
+ MT_BORDEREAU_TVA DECIMAL(14,2),
+ INDEX IX_${base-name}_BC (COLLECTIVITE,BUDGET,DOC_ID),
+ INDEX IX_${base-name}_DC (DOC_ID)
+ ) ENGINE MYISAM
+ </table>
+ </etat>
+ <etat id="PES_BudgetAller" import-xslt-file="">
+ <table type="document" base-name="PES_ALLER_BA_DOCUMENTS" version="1" main="yes">
+ CREATE TABLE IF NOT EXISTS ${base-name} (
+ COLLECTIVITE VARCHAR(15) NOT NULL,
+ BUDGET VARCHAR(24) NOT NULL,
+ INITIAL_DOC_NAME VARCHAR(100) NOT NULL,
+ DOC_ID VARCHAR(100) NOT NULL,
+ DOC LONGBLOB,
+ ENCODING VARCHAR(20),
+ INDEX IX_${base-name}_BC (COLLECTIVITE,BUDGET,DOC_ID)
+ ) ENGINE MYISAM
+ </table>
+ <table type="index" id="1" base-name="PES_ALLER_BA_BORDEREAU_IX" version="1" main="yes">
+ CREATE TABLE IF NOT EXISTS ${base-name} (
+ COLLECTIVITE VARCHAR(15) NOT NULL,
+ BUDGET VARCHAR(24) NOT NULL,
+ DOC_ID VARCHAR(100) NOT NULL,
+ NODE_ID VARCHAR(50) NOT NULL,
+ EXERCICE DATE,
+ ID_BORDEREAU VARCHAR(7),
+ DATE_EMISSION_BORDEREAU DATE,
+ TYPE_BORDEREAU VARCHAR(2),
+ NB_PIECES INTEGER,
+ MT_CUMUL_ANNUEL DECIMAL(14,2),
+ MT_BOREREAU_HT DECIMAL(14,2),
+ MT_BORDEREAU_TVA DECIMAL(14,2),
+ INDEX IX_${base-name}_BC (COLLECTIVITE,BUDGET,DOC_ID),
+ INDEX IX_${base-name}_DC (DOC_ID)
+ ) ENGINE MYISAM
+ </table>
+ </etat>
+ <etat id="PES_EtatActif" import-xslt-file="">
+ <table type="document" base-name="PES_ALLER_EA_DOCUMENTS" version="1" main="yes">
+ CREATE TABLE IF NOT EXISTS ${base-name} (
+ COLLECTIVITE VARCHAR(15) NOT NULL,
+ BUDGET VARCHAR(24) NOT NULL,
+ INITIAL_DOC_NAME VARCHAR(100) NOT NULL,
+ DOC_ID VARCHAR(100) NOT NULL,
+ DOC LONGBLOB,
+ ENCODING VARCHAR(20),
+ INDEX IX_${base-name}_BC (COLLECTIVITE,BUDGET,DOC_ID)
+ ) ENGINE MYISAM
+ </table>
+ <table type="index" id="1" base-name="PES_ALLER_EA_BORDEREAU_IX" version="1" main="yes">
+ CREATE TABLE IF NOT EXISTS ${base-name} (
+ COLLECTIVITE VARCHAR(15) NOT NULL,
+ BUDGET VARCHAR(24) NOT NULL,
+ DOC_ID VARCHAR(100) NOT NULL,
+ NODE_ID VARCHAR(50) NOT NULL,
+ EXERCICE DATE,
+ ID_BORDEREAU VARCHAR(7),
+ DATE_EMISSION_BORDEREAU DATE,
+ TYPE_BORDEREAU VARCHAR(2),
+ NB_PIECES INTEGER,
+ MT_CUMUL_ANNUEL DECIMAL(14,2),
+ MT_BOREREAU_HT DECIMAL(14,2),
+ MT_BORDEREAU_TVA DECIMAL(14,2),
+ INDEX IX_${base-name}_BC (COLLECTIVITE,BUDGET,DOC_ID),
+ INDEX IX_${base-name}_DC (DOC_ID)
+ ) ENGINE MYISAM
+ </table>
+ </etat>
+ <etat id="PES_Marche" import-xslt-file="">
+ <table type="document" base-name="PES_ALLER_MARCHE_DOCUMENTS" version="1" main="yes">
+ CREATE TABLE IF NOT EXISTS ${base-name} (
+ COLLECTIVITE VARCHAR(15) NOT NULL,
+ BUDGET VARCHAR(24) NOT NULL,
+ INITIAL_DOC_NAME VARCHAR(100) NOT NULL,
+ DOC_ID VARCHAR(100) NOT NULL,
+ DOC LONGBLOB,
+ ENCODING VARCHAR(20),
+ INDEX IX_${base-name}_BC (COLLECTIVITE,BUDGET,DOC_ID)
+ ) ENGINE MYISAM
+ </table>
+ <table type="index" id="1" base-name="PES_ALLER_MARCHE_BORDEREAU_IX" version="1" main="yes">
+ CREATE TABLE IF NOT EXISTS ${base-name} (
+ COLLECTIVITE VARCHAR(15) NOT NULL,
+ BUDGET VARCHAR(24) NOT NULL,
+ DOC_ID VARCHAR(100) NOT NULL,
+ NODE_ID VARCHAR(50) NOT NULL,
+ EXERCICE DATE,
+ ID_BORDEREAU VARCHAR(7),
+ DATE_EMISSION_BORDEREAU DATE,
+ TYPE_BORDEREAU VARCHAR(2),
+ NB_PIECES INTEGER,
+ MT_CUMUL_ANNUEL DECIMAL(14,2),
+ MT_BOREREAU_HT DECIMAL(14,2),
+ MT_BORDEREAU_TVA DECIMAL(14,2),
+ INDEX IX_${base-name}_BC (COLLECTIVITE,BUDGET,DOC_ID),
+ INDEX IX_${base-name}_DC (DOC_ID)
+ ) ENGINE MYISAM
+ </table>
+ </etat>
+ <etat id="PESEtatPassif" import-xslt-file="">
+ <table type="document" base-name="PES_ALLER_EP_DOCUMENTS" version="1" main="yes">
+ CREATE TABLE IF NOT EXISTS ${base-name} (
+ COLLECTIVITE VARCHAR(15) NOT NULL,
+ BUDGET VARCHAR(24) NOT NULL,
+ INITIAL_DOC_NAME VARCHAR(100) NOT NULL,
+ DOC_ID VARCHAR(100) NOT NULL,
+ DOC LONGBLOB,
+ ENCODING VARCHAR(20),
+ INDEX IX_${base-name}_BC (COLLECTIVITE,BUDGET,DOC_ID)
+ ) ENGINE MYISAM
+ </table>
+ <table type="index" id="1" base-name="PES_ALLER_EP_BORDEREAU_IX" version="1" main="yes">
+ CREATE TABLE IF NOT EXISTS ${base-name} (
+ COLLECTIVITE VARCHAR(15) NOT NULL,
+ BUDGET VARCHAR(24) NOT NULL,
+ DOC_ID VARCHAR(100) NOT NULL,
+ NODE_ID VARCHAR(50) NOT NULL,
+ EXERCICE DATE,
+ ID_BORDEREAU VARCHAR(7),
+ DATE_EMISSION_BORDEREAU DATE,
+ TYPE_BORDEREAU VARCHAR(2),
+ NB_PIECES INTEGER,
+ MT_CUMUL_ANNUEL DECIMAL(14,2),
+ MT_BOREREAU_HT DECIMAL(14,2),
+ MT_BORDEREAU_TVA DECIMAL(14,2),
+ INDEX IX_${base-name}_BC (COLLECTIVITE,BUDGET,DOC_ID),
+ INDEX IX_${base-name}_DC (DOC_ID)
+ ) ENGINE MYISAM
+ </table>
+ </etat>
+ <etat id="PES_PJ" import-xslt-file="">
+ <table type="document" base-name="PES_ALLER_PJ_DOCUMENTS" version="1" main="yes">
+ CREATE TABLE IF NOT EXISTS ${base-name} (
+ COLLECTIVITE VARCHAR(15) NOT NULL,
+ BUDGET VARCHAR(24) NOT NULL,
+ INITIAL_DOC_NAME VARCHAR(100) NOT NULL,
+ DOC_ID VARCHAR(100) NOT NULL,
+ DOC LONGBLOB,
+ ENCODING VARCHAR(20),
+ INDEX IX_${base-name}_BC (COLLECTIVITE,BUDGET,DOC_ID)
+ ) ENGINE MYISAM
+ </table>
+ <table type="index" id="1" base-name="PES_ALLER_PJ_BORDEREAU_IX" version="1" main="yes">
+ CREATE TABLE IF NOT EXISTS ${base-name} (
+ COLLECTIVITE VARCHAR(15) NOT NULL,
+ BUDGET VARCHAR(24) NOT NULL,
+ DOC_ID VARCHAR(100) NOT NULL,
+ NODE_ID VARCHAR(50) NOT NULL,
+ EXERCICE DATE,
+ ID_BORDEREAU VARCHAR(7),
+ DATE_EMISSION_BORDEREAU DATE,
+ TYPE_BORDEREAU VARCHAR(2),
+ NB_PIECES INTEGER,
+ MT_CUMUL_ANNUEL DECIMAL(14,2),
+ MT_BOREREAU_HT DECIMAL(14,2),
+ MT_BORDEREAU_TVA DECIMAL(14,2),
+ INDEX IX_${base-name}_BC (COLLECTIVITE,BUDGET,DOC_ID),
+ INDEX IX_${base-name}_DC (DOC_ID)
+ ) ENGINE MYISAM
+ </table>
+ </etat-->
+
+ <etat id="PES_RecetteAller" import-xslt-file="PES_V2/PES-Aller-RA-import-mysql.xsl">
+ <key1>
+ <path>/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/@added:generated-id</path>
+ </key1>
+ <key2>
+ <path>/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:BlocPiece/n:PJRef/@added:generated-id</path>
+ </key2>
+ <key3>
+ <path>/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/@added:generated-id</path>
+ </key3>
+ <key4>
+ <path>/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePiece/n:PJRef/@added:generated-id</path>
+ </key4>
+ <key5>
+ <path>/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/@added:generated-id</path>
+ </key5>
+ <key6>
+ <path>/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Recouvrement/@added:generated-id</path>
+ </key6>
+ <key7>
+ <path>/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:added:AllPJRef/@added:generated-id</path>
+ </key7>
+
+ <table type="document" base-name="PES_ALLER_RA_DOCUMENTS" version="1">
+ CREATE TABLE IF NOT EXISTS ${base-name} (
+ COLLECTIVITE VARCHAR(15) NOT NULL,
+ BUDGET VARCHAR(24) NOT NULL,
+ INITIAL_DOC_NAME VARCHAR(100) NOT NULL,
+ DOC_ID VARCHAR(100) NOT NULL,
+ DOC LONGBLOB,
+ ENCODING VARCHAR(20),
+ INDEX IX_${base-name}_BC (COLLECTIVITE,BUDGET,DOC_ID),
+ ARCHIVE_NAME VARCHAR(100), INDEX ${base-name}_AN (ARCHIVE_NAME)
+ ) ENGINE MYISAM
+ </table>
+ <table type="index" id="T_RA_1" base-name="PES_ALLER_RA_BORDEREAU_IX" version="1" main="true">
+ CREATE TABLE IF NOT EXISTS ${base-name} (
+ COLLECTIVITE VARCHAR(15) NOT NULL,
+ BUDGET VARCHAR(24) NOT NULL,
+ DOC_ID VARCHAR(100) NOT NULL,
+ PRIMARY_KEY VARCHAR(100) NOT NULL,
+ EXERCICE INTEGER,
+ ID_BORDEREAU INTEGER,
+ DATE_EMISSION_BORDEREAU DATE,
+ TYPE_BORDEREAU VARCHAR(2),
+ NB_PIECES INTEGER,
+ MT_CUMUL_ANNUEL DECIMAL(14,2),
+ MT_BOREREAU_HT DECIMAL(14,2),
+ MT_BORDEREAU_TVA DECIMAL(14,2),
+ MONTANT_TTC DECIMAL(14,2),
+ INDEX IX_${base-name}_BC (COLLECTIVITE,BUDGET,DOC_ID),
+ INDEX IX_${base-name}_DC (DOC_ID),
+ INITIAL_DOC_NAME VARCHAR(100),
+ INDEX ${base-name}_IDN (INITIAL_DOC_NAME),
+ ARCHIVE_NAME VARCHAR(100),
+ INDEX ${base-name}_AN (ARCHIVE_NAME)
+ ) ENGINE MYISAM
+ </table>
+ <!--
+ NODE_ID VARCHAR(50) NOT NULL,
+ -->
+ <table type="index" id="T_RA_2" base-name="PES_ALLER_RA_PIECE_IX" version="2" based-on="key1">
+ CREATE TABLE IF NOT EXISTS ${base-name} (
+ COLLECTIVITE VARCHAR(15) NOT NULL,
+ BUDGET VARCHAR(24) NOT NULL,
+ DOC_ID VARCHAR(100) NOT NULL,
+ NODE_ID VARCHAR(50) NOT NULL,
+ CODE_SERVICE VARCHAR(10),
+ AFFECT VARCHAR(10),
+ CODE_PROD VARCHAR(2),
+ ID_PIECE INTEGER(13),
+ TYPE_PIECE VARCHAR(2),
+ NATURE_PIECE VARCHAR(2),
+ ID_ROL INTEGER,
+ DATE_ASP DATE,
+ OBJ VARCHAR(160),
+ DEB_FACT DATE,
+ FIN_FACT DATE,
+ NB_LIGNE INTEGER,
+ MONTANT_TTC DECIMAL(14,2),
+ MONTANT_HT DECIMAL(14,2),
+ AVEC_PJ VARCHAR(5),
+ INDEX IX_${base-name}_BC (COLLECTIVITE,BUDGET,DOC_ID),
+ INDEX IX_${base-name}_DC (DOC_ID),
+ INITIAL_DOC_NAME VARCHAR(100),
+ INDEX ${base-name}_IDN (INITIAL_DOC_NAME),
+ ARCHIVE_NAME VARCHAR(100),
+ INDEX ${base-name}_AN (ARCHIVE_NAME)
+ ) ENGINE MYISAM
+ <patch from-version="1">
+ <sql failonerror="false">ALTER TABLE ${base-name} MODIFY ID_PIECE INTEGER(13)</sql>
+ </patch>
+
+ </table>
+ <table type="index" id="T_RA_3" base-name="PES_ALLER_RA_PIECE_PJREF_IX" version="1" based-on="key2">
+ CREATE TABLE IF NOT EXISTS ${base-name} (
+ COLLECTIVITE VARCHAR(15) NOT NULL,
+ BUDGET VARCHAR(24) NOT NULL,
+ DOC_ID VARCHAR(100) NOT NULL,
+ NODE_ID VARCHAR(50) NOT NULL,
+ SUPPORT_PJ VARCHAR(2),
+ ID_UNIQUE_PJ VARCHAR(50),
+ NOM_PJ VARCHAR(100),
+ INDEX IX_${base-name}_BC (COLLECTIVITE,BUDGET,DOC_ID),
+ INDEX IX_${base-name}_DC (DOC_ID),
+ INITIAL_DOC_NAME VARCHAR(100),
+ INDEX ${base-name}_IDN (INITIAL_DOC_NAME),
+ ARCHIVE_NAME VARCHAR(100),
+ INDEX ${base-name}_AN (ARCHIVE_NAME)
+ ) ENGINE MYISAM
+ </table>
+ <table type="index" id="T_RA_4" base-name="PES_ALLER_RA_LIGNE_PIECE_IX" version="1" based-on="key3">
+ CREATE TABLE IF NOT EXISTS ${base-name} (
+ COLLECTIVITE VARCHAR(15) NOT NULL,
+ BUDGET VARCHAR(24) NOT NULL,
+ DOC_ID VARCHAR(100) NOT NULL,
+ NODE_ID VARCHAR(50) NOT NULL,
+ ID_LIGNE VARCHAR(6),
+ OBJET VARCHAR(160),
+ CODE_PROD VARCHAR(4),
+ FIN_GEO INTEGER,
+ COD_ET_GEO VARCHAR(3),
+ NATURE VARCHAR(12),
+ FONCTION VARCHAR(10),
+ OPERATION VARCHAR(10),
+ COMPTE_ANA VARCHAR(10),
+ FACTURE VARCHAR(20),
+ TAUX_TVA DECIMAL(5,2),
+ MAJO VARCHAR(5),
+ DATE_MAJO DATE,
+ TAUX_MAJO DECIMAL(5,2),
+ COMPTE_TIERS VARCHAR(12),
+ TVA_INTRA_COM VARCHAR(5),
+ COMPTE_TVA VARCHAR(12),
+ MT_HT DECIMAL(14,2),
+ MT_TVA DECIMAL(14,2),
+ MT_NON_MAJO DECIMAL(14,2),
+ NAT_PREL VARCHAR(2),
+ PER_PREL VARCHAR(2),
+ DATE_PREL DATE,
+ MNT_PREL DECIMAL(14,2),
+ COD_ASS_DEB VARCHAR(1),
+ COD_AYANT_DROIT VARCHAR(2),
+ NATURE_PIECE_ORIGINE VARCHAR(2),
+ EXERCICE_RAT VARCHAR(4),
+ ID_PIECE_ORIGINE INTEGER(12),
+ ID_LIGNE_ORIGINE VARCHAR(6),
+ ID_ENCAISSEMENT INTEGER,
+ ID_CONV VARCHAR(25),
+ ID_MARCHE VARCHAR(30),
+ ID_CAUTION VARCHAR(25),
+ ID_EMPRUNT_ORDO VARCHAR(24),
+ ID_ACTIF VARCHAR(25),
+ ID_REGIE VARCHAR(5),
+ MONTANT_TTC DECIMAL(14,2),
+ INDEX IX_${base-name}_BC (COLLECTIVITE,BUDGET,DOC_ID),
+ INDEX IX_${base-name}_DC (DOC_ID),
+ INITIAL_DOC_NAME VARCHAR(100),
+ INDEX ${base-name}_IDN (INITIAL_DOC_NAME),
+ ARCHIVE_NAME VARCHAR(100),
+ INDEX ${base-name}_AN (ARCHIVE_NAME)
+ ) ENGINE MYISAM
+ </table>
+ <table type="index" id="T_RA_5" base-name="PES_ALLER_RA_LIGNE_PIECE_PJREF" based-on="key4" version="1">
+ CREATE TABLE IF NOT EXISTS ${base-name} (
+ COLLECTIVITE VARCHAR(15) NOT NULL,
+ BUDGET VARCHAR(24) NOT NULL,
+ DOC_ID VARCHAR(100) NOT NULL,
+ NODE_ID VARCHAR(50) NOT NULL,
+ SUPPORT_PJ VARCHAR(2),
+ ID_UNIQUE_PJ VARCHAR(50),
+ NOM_PJ VARCHAR(100),
+ INDEX IX_${base-name}_BC (COLLECTIVITE,BUDGET,DOC_ID),
+ INDEX IX_${base-name}_DC (DOC_ID),
+ INITIAL_DOC_NAME VARCHAR(100),
+ INDEX ${base-name}_IDN (INITIAL_DOC_NAME),
+ ARCHIVE_NAME VARCHAR(100),
+ INDEX ${base-name}_AN (ARCHIVE_NAME)
+ ) ENGINE MYISAM
+ </table>
+ <table type="index" id="T_RA_6" base-name="PES_ALLER_RA_LIGNE_PIECE_TIERS" based-on="key5" version="1">
+ CREATE TABLE IF NOT EXISTS ${base-name} (
+ COLLECTIVITE VARCHAR(15) NOT NULL,
+ BUDGET VARCHAR(24) NOT NULL,
+ DOC_ID VARCHAR(100) NOT NULL,
+ NODE_ID VARCHAR(50) NOT NULL,
+ ID_TIERS VARCHAR(30),
+ DATE_MALADE DATE,
+ NAT_ID_TIERS VARCHAR(2),
+ DATE_ID_TIERS DATE,
+ REF_TIERS VARCHAR(30),
+ CAT_TIERS VARCHAR(2),
+ NAT_JUR VARCHAR(2),
+ TYP_TIERS VARCHAR(2),
+ CIVILITE VARCHAR(10),
+ NOM VARCHAR(38),
+ COMPLEMENT_NOM VARCHAR(38),
+ PRENOM VARCHAR(38),
+ TYP_ADR VARCHAR(1),
+ ADR1 VARCHAR(38),
+ ADR2 VARCHAR(38),
+ ADR3 VARCHAR(38),
+ CP VARCHAR(5),
+ VILLE VARCHAR(38),
+ COD_RES VARCHAR(5),
+ COD_PAYS INTEGER,
+ DATE_ADR DATE,
+ RIB VARCHAR(23),
+ INDEX IX_${base-name}_BC (COLLECTIVITE,BUDGET,DOC_ID),
+ INDEX IX_${base-name}_DC (DOC_ID),
+ INITIAL_DOC_NAME VARCHAR(100),
+ INDEX ${base-name}_IDN (INITIAL_DOC_NAME),
+ ARCHIVE_NAME VARCHAR(100),
+ INDEX ${base-name}_AN (ARCHIVE_NAME)
+ ) ENGINE MYISAM
+ </table>
+ <table type="index" id="T_RA_7" base-name="PES_ALLER_RA_LIGNE_PIECE_RECOUVREMENT" based-on="key6" version="1">
+ CREATE TABLE IF NOT EXISTS ${base-name} (
+ COLLECTIVITE VARCHAR(15) NOT NULL,
+ BUDGET VARCHAR(24) NOT NULL,
+ DOC_ID VARCHAR(100) NOT NULL,
+ NODE_ID VARCHAR(50) NOT NULL,
+ TYP_FLUX VARCHAR(2),
+ MODE_REGLEMENT VARCHAR(2),
+ DATE_RECOUVREMENT DATE,
+ ID_ENCAISSEMENT INTEGER,
+ MNT_RECOUVREMENT DECIMAL(14,2),
+ INDEX IX_${base-name}_BC (COLLECTIVITE,BUDGET,DOC_ID),
+ INDEX IX_${base-name}_DC (DOC_ID),
+ INITIAL_DOC_NAME VARCHAR(100),
+ INDEX ${base-name}_IDN (INITIAL_DOC_NAME),
+ ARCHIVE_NAME VARCHAR(100),
+ INDEX ${base-name}_AN (ARCHIVE_NAME)
+ ) ENGINE MYISAM
+ </table>
+ <table type="index" id="recette_all_pj" base-name="PES_ALLER_RA_ALL_PJ" based-on="key7" version="1">
+ CREATE TABLE IF NOT EXISTS ${base-name} (
+ COLLECTIVITE VARCHAR(15) NOT NULL,
+ BUDGET VARCHAR(24) NOT NULL,
+ DOC_ID VARCHAR(100) NOT NULL,
+ NODE_ID VARCHAR(50),
+ SUPPORT_PJ VARCHAR(2),
+ ID_UNIQUE_PJ VARCHAR(50),
+ NOM_PJ VARCHAR(100),
+ INDEX IX_${base-name}_BC (COLLECTIVITE,BUDGET,DOC_ID),
+ INDEX IX_${base-name}_DC (DOC_ID),
+ INITIAL_DOC_NAME VARCHAR(100),
+ INDEX ${base-name}_IDN (INITIAL_DOC_NAME),
+ ARCHIVE_NAME VARCHAR(100),
+ INDEX ${base-name}_AN (ARCHIVE_NAME)
+ ) ENGINE MYISAM
+ </table>
+
+
+ <!-- CRITERIA BORDEREAU BLOC BORDEREAU -->
+ <criteria id="bordereau_exercice" type="1" sql-index-id="SQI_RA_1">
+ <where-clause>${table}.${column}=##VALEUR:bordereau_exercice##</where-clause>
+ </criteria>
+ <criteria id="bordereau_id" type="1" sql-index-id="SQI_RA_2">
+ <where-clause>${table}.${column}##OPERATEUR:bordereau_id####VALEUR:bordereau_id##</where-clause>
+ </criteria>
+ <criteria id="bordereau_date_emission" type="1" sql-index-id="SQI_RA_3">
+ <where-clause>fn:date-compare(${table}.${column},bordereau_date_emission)</where-clause>
+ </criteria>
+ <criteria id="bordereau_type" type="1" sql-index-id="SQI_RA_4">
+ <where-clause>${table}.${column}='##VALEUR:bordereau_type##'</where-clause>
+ </criteria>
+ <criteria id="bordereau_nb_pieces" type="1" sql-index-id="SQI_RA_5">
+ <where-clause>${table}.${column}##OPERATEUR:bordereau_nb_pieces####VALEUR:bordereau_nb_pieces##</where-clause>
+ </criteria>
+ <criteria id="bordereau_mt_cumul_annuel" type="1" sql-index-id="SQI_RA_6">
+ <where-clause>${table}.${column}##OPERATEUR:bordereau_mt_cumul_annuel####VALEUR:bordereau_mt_cumul_annuel##</where-clause>
+ </criteria>
+ <criteria id="bordereau_mt_bord_ht" type="1" sql-index-id="SQI_RA_7">
+ <where-clause>${table}.${column}##OPERATEUR:bordereau_mt_bord_ht####VALEUR:bordereau_mt_bord_ht##</where-clause>
+ </criteria>
+ <criteria id="bordereau_mt_bord_tva" type="1" sql-index-id="SQI_RA_8">
+ <where-clause>${table}.${column}##OPERATEUR:bordereau_mt_bord_tva####VALEUR:bordereau_mt_bord_tva##</where-clause>
+ </criteria>
+ <criteria id="bordereau_mt_bord_ttc" type="1" sql-index-id="SQI_RA_M4">
+ <where-clause>${table}.${column}##OPERATEUR:bordereau_mt_bord_ttc####VALEUR:bordereau_mt_bord_ttc##</where-clause>
+ </criteria>
+ <!-- CRITERIA PIECE -->
+ <criteria id="piece_code_service" sql-index-id="SQI_RA_9" type="1">
+ <where-clause>fn:string-compare(${table}.${column},piece_code_service)</where-clause>
+ </criteria>
+ <criteria id="piece_affect" sql-index-id="SQI_RA_10" type="1">
+ <where-clause>fn:string-compare(${table}.${column},piece_affect)</where-clause>
+ </criteria>
+ <criteria id="piece_code_prod" type="1" sql-index-id="SQI_RA_11">
+ <where-clause>fn:string-compare(${table}.${column},piece_code_prod)</where-clause>
+ </criteria>
+ <criteria id="piece_id_pce" type="1" sql-index-id="SQI_RA_12">
+ <where-clause>${table}.${column}=##VALEUR:piece_id_pce##</where-clause>
+ </criteria>
+ <criteria id="piece_type_pce" type="1" sql-index-id="SQI_RA_13">
+ <where-clause>${table}.${column}='##VALEUR:piece_type_pce##'</where-clause>
+ </criteria>
+ <criteria id="piece_nat_pce" type="1" sql-index-id="SQI_RA_14">
+ <where-clause>${table}.${column}='##VALEUR:piece_nat_pce##'</where-clause>
+ </criteria>
+ <criteria id="piece_id_rol" type="1" sql-index-id="SQI_RA_15">
+ <where-clause>${table}.${column}##OPERATEUR:piece_id_rol####VALEUR:piece_id_rol##</where-clause>
+ </criteria>
+ <criteria id="piece_dte_asp" type="1" sql-index-id="SQI_RA_16">
+ <where-clause>fn:date-compare(${table}.${column},piece_dte_asp)</where-clause>
+ </criteria>
+ <criteria id="piece_obj_pce" type="1" sql-index-id="SQI_RA_17">
+ <where-clause>fn:string-compare(${table}.${column},piece_obj_pce)</where-clause>
+ </criteria>
+ <criteria id="piece_deb_fact" type="1" sql-index-id="SQI_RA_18">
+ <where-clause>fn:date-compare(${table}.${column},piece_deb_fact)</where-clause>
+ </criteria>
+ <criteria id="piece_fin_fact" type="1" sql-index-id="SQI_RA_19">
+ <where-clause>fn:date-compare(${table}.${column},piece_fin_fact)</where-clause>
+ </criteria>
+ <criteria id="piece_montant_ttc" type="1" sql-index-id="SQI_RA_98">
+ <where-clause>${table}.${column}##OPERATEUR:piece_montant_ttc####VALEUR:piece_montant_ttc##</where-clause>
+ </criteria>
+ <criteria id="piece_montant_ht" type="1" sql-index-id="SQI_RA_M5">
+ <where-clause>${table}.${column}##OPERATEUR:piece_montant_ht####VALEUR:piece_montant_ht##</where-clause>
+ </criteria>
+ <criteria id="piece_avec_pj" type="1" sql-index-id="SQI_RA_M7">
+ <where-clause>${table}.${column}='##VALEUR:piece_avec_pj##'</where-clause>
+ </criteria>
+ <!-- CRITERIA PJREF PIECE -->
+ <criteria id="piece_pjref_support" sql-index-id="SQI_RA_20" type="1">
+ <where-clause>fn:string-compare(${table}.${column},piece_pjref_support)</where-clause>
+ </criteria>
+ <criteria id="piece_pjref_id_unique" sql-index-id="SQI_RA_21" type="1">
+ <where-clause>fn:string-compare(${table}.${column},piece_pjref_id_unique)</where-clause>
+ </criteria>
+ <criteria id="piece_pjref_nom_pj" sql-index-id="SQI_RA_22" type="1">
+ <where-clause>fn:string-compare(${table}.${column},piece_pjref_nom_pj)</where-clause>
+ </criteria>
+ <!-- CRITERIA LIGNE PIECE -->
+ <criteria id="ligne_piece_id" sql-index-id="SQI_RA_23" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_id)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_obj" sql-index-id="SQI_RA_24" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_obj)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_code_prod_loc" sql-index-id="SQI_RA_25" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_code_prod_loc)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_fin_geo" sql-index-id="SQI_RA_26" type="1">
+ <where-clause>${table}.${column}##OPERATEUR:ligne_piece_fin_geo####VALEUR:ligne_piece_fin_geo##</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_code_et_geo" sql-index-id="SQI_RA_27" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_code_et_geo)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_nature" sql-index-id="SQI_RA_28" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_nature)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_fonction" sql-index-id="SQI_RA_29" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_fonction)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_operation" sql-index-id="SQI_RA_30" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_operation)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_cpt_ana" sql-index-id="SQI_RA_31" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_cpt_ana)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_facture" sql-index-id="SQI_RA_32" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_facture)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_tx_tva" sql-index-id="SQI_RA_33" type="1">
+ <where-clause>${table}.${column}##OPERATEUR:ligne_piece_tx_tva####VALEUR:ligne_piece_tx_tva##</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_majo" sql-index-id="SQI_RA_34" type="1">
+ <where-clause>${table}.${column}='##VALEUR:ligne_piece_majo##'</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_dte_majo" sql-index-id="SQI_RA_35" type="1">
+ <where-clause>fn:date-compare(${table}.${column},ligne_piece_dte_majo)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_tx_majo" sql-index-id="SQI_RA_36" type="1">
+ <where-clause>${table}.${column}##OPERATEUR:ligne_piece_tx_majo####VALEUR:ligne_piece_tx_majo##</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_cpte_tiers" sql-index-id="SQI_RA_37" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_cpte_tiers)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_tva_intracom" sql-index-id="SQI_RA_38" type="1">
+ <where-clause>${table}.${column}='##VALEUR:ligne_piece_tva_intracom'</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_cpte_tva" sql-index-id="SQI_RA_39" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_cpte_tva)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_mt_ht" sql-index-id="SQI_RA_40" type="1">
+ <where-clause>${table}.${column}##OPERATEUR:ligne_piece_mt_ht####VALEUR:ligne_piece_mt_ht##</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_mt_tva" sql-index-id="SQI_RA_41" type="1">
+ <where-clause>${table}.${column}##OPERATEUR:ligne_piece_mt_tva####VALEUR:ligne_piece_mt_tva##</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_mt_non_majo" sql-index-id="SQI_RA_42" type="1">
+ <where-clause>${table}.${column}##OPERATEUR:ligne_piece_mt_non_majo####VALEUR:ligne_piece_mt_non_majo##</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_nat_prel" sql-index-id="SQI_RA_43" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_nat_prel)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_per_prel" sql-index-id="SQI_RA_44" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_per_prel)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_dte_prel" sql-index-id="SQI_RA_45" type="1">
+ <where-clause>fn:date-compare(${table}.${column},ligne_piece_dte_prel)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_mnt_prel" sql-index-id="SQI_RA_46" type="1">
+ <where-clause>${table}.${column}##OPERATEUR:ligne_piece_mt_prel####VALEUR:ligne_piece_mt_prel##</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_cod_ass_deb" sql-index-id="SQI_RA_47" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_cod_ass_deb)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_cod_ayant_droit" sql-index-id="SQI_RA_48" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_cod_ayant_droit)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_nat_pce_orig" sql-index-id="SQI_RA_49" type="1">
+ <where-clause>${table}.${column}=##VALEUR:ligne_piece_nat_pce_orig##</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_exer_rat" sql-index-id="SQI_RA_50" type="1">
+ <where-clause>${table}.${column}=##VALEUR:ligne_piece_exer_rat##</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_id_pce_orig" sql-index-id="SQI_RA_51" type="1">
+ <where-clause>${table}.${column}##OPERATEUR:ligne_piece_id_pce_orig####VALEUR:ligne_piece_id_pce_orig##</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_id_ligne_orig" sql-index-id="SQI_RA_52" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_id_ligne_orig)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_id_encaissement" sql-index-id="SQI_RA_53" type="1">
+ <where-clause>${table}.${column}##OPERATEUR:ligne_piece_id_encaissement####VALEUR:ligne_piece_id_encaissement##</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_id_conv" sql-index-id="SQI_RA_54" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_id_conv)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_id_marche" sql-index-id="SQI_RA_55" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_id_marche)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_id_caution" sql-index-id="SQI_RA_56" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_id_caution)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_id_emprunt_ordo" sql-index-id="SQI_RA_57" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_id_emprunt_ordo)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_id_actif" sql-index-id="SQI_RA_58" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_id_actif)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_id_regie" sql-index-id="SQI_RA_59" type="1">
+ <where-clause>${table}.${column}=##VALEUR:ligne_piece_id_regie##</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_mt_ttc" sql-index-id="SQI_RA_M6" type="1">
+ <where-clause>${table}.${column}##OPERATEUR:ligne_piece_mt_ttc####VALEUR:ligne_piece_mt_ttc##</where-clause>
+ </criteria>
+ <criteria id="justifie_par" sql-index-id="REC_ALLPJ_ID_UNIQUE">
+ <where-clause>fn:string-compare(${table}.${column},IdUnique)</where-clause>
+ </criteria>
+
+
+ <!-- CRITERIA PJREF LIGNE PIECE -->
+ <criteria id="ligne_piece_pjref_support" sql-index-id="SQI_RA_60" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_pjref_support)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_pjref_id_unique" sql-index-id="SQI_RA_61" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_pjref_id_unique)</where-clause>
+ </criteria>
+ <criteria id="ligne_piece_pjref_nom_pj" sql-index-id="SQI_RA_62" type="1">
+ <where-clause>fn:string-compare(${table}.${column},ligne_piece_pjref_nom_pj)</where-clause>
+ </criteria>
+ <!-- CRITERIA TIERS -->
+ <criteria id="tiers_id_tiers" sql-index-id="SQI_RA_63" type="1">
+ <where-clause>fn:string-compare(${table}.${column},tiers_id_tiers)</where-clause>
+ </criteria>
+ <criteria id="tiers_dte_malade" sql-index-id="SQI_RA_64" type="1">
+ <where-clause>fn:date-compare(${table}.${column},tiers_dte_malade)</where-clause>
+ </criteria>
+ <criteria id="tiers_nat_id_tiers" sql-index-id="SQI_RA_65" type="1">
+ <where-clause>fn:string-compare(${table}.${column},tiers_nat_id_tiers)</where-clause>
+ </criteria>
+ <criteria id="tiers_dte_id_tiers" sql-index-id="SQI_RA_66" type="1">
+ <where-clause>fn:date-compare(${table}.${column},tiers_dte_id_tiers)</where-clause>
+ </criteria>
+ <criteria id="tiers_ref_tiers" sql-index-id="SQI_RA_67" type="1">
+ <where-clause>fn:string-compare(${table}.${column},tiers_ref_tiers)</where-clause>
+ </criteria>
+ <criteria id="tiers_nat_jur" sql-index-id="SQI_RA_69" type="1">
+ <where-clause>fn:string-compare(${table}.${column},tiers_nat_jur)</where-clause>
+ </criteria>
+ <criteria id="tiers_typ_tiers" sql-index-id="SQI_RA_70" type="1">
+ <where-clause>fn:string-compare(${table}.${column},tiers_typ_tiers)</where-clause>
+ </criteria>
+ <criteria id="tiers_civilite" sql-index-id="SQI_RA_71" type="1">
+ <where-clause>fn:string-compare(${table}.${column},tiers_civilite)</where-clause>
+ </criteria>
+ <criteria id="tiers_nom" sql-index-id="SQI_RA_72" type="1">
+ <where-clause>fn:string-compare(${table}.${column},tiers_nom)</where-clause>
+ </criteria>
+ <criteria id="tiers_compl_nom" sql-index-id="SQI_RA_73" type="1">
+ <where-clause>fn:string-compare(${table}.${column},tiers_compl_nom)</where-clause>
+ </criteria>
+ <criteria id="tiers_prenom" sql-index-id="SQI_RA_74" type="1">
+ <where-clause>fn:string-compare(${table}.${column},tiers_prenom)</where-clause>
+ </criteria>
+ <criteria id="tiers_typ_adr" sql-index-id="SQI_RA_75" type="1">
+ <where-clause>fn:string-compare(${table}.${column},tiers_typ_adr)</where-clause>
+ </criteria>
+ <criteria id="tiers_adr1" sql-index-id="SQI_RA_76" type="1">
+ <where-clause>fn:string-compare(${table}.${column},tiers_adr1)</where-clause>
+ </criteria>
+ <criteria id="tiers_adr2" sql-index-id="SQI_RA_77" type="1">
+ <where-clause>fn:string-compare(${table}.${column},tiers_adr2)</where-clause>
+ </criteria>
+ <criteria id="tiers_adr3" sql-index-id="SQI_RA_78" type="1">
+ <where-clause>fn:string-compare(${table}.${column},tiers_adr3)</where-clause>
+ </criteria>
+ <criteria id="tiers_cp" sql-index-id="SQI_RA_79" type="1">
+ <where-clause>fn:string-compare(${table}.${column},tiers_cp)</where-clause>
+ </criteria>
+ <criteria id="tiers_ville" sql-index-id="SQI_RA_80" type="1">
+ <where-clause>fn:string-compare(${table}.${column},tiers_ville)</where-clause>
+ </criteria>
+ <criteria id="tiers_cod_res" sql-index-id="SQI_RA_81" type="1">
+ <where-clause>${table}.${column}='##VALEUR:tiers_cod_res'</where-clause>
+ </criteria>
+ <criteria id="tiers_cod_pays" sql-index-id="SQI_RA_82" type="1">
+ <where-clause>fn:string-compare(${table}.${column},tiers_cod_pays)</where-clause>
+ </criteria>
+ <criteria id="tiers_dte_adr" sql-index-id="SQI_RA_83" type="1">
+ <where-clause>fn:date-compare(${table}.${column},tiers_dte_adr)</where-clause>
+ </criteria>
+ <criteria id="tiers_rib" sql-index-id="SQI_RA_84" type="1">
+ <where-clause>fn:string-compare(${table}.${column},tiers_rib)</where-clause>
+ </criteria>
+ <!-- CRITERIA RECOUVREMENT -->
+ <criteria id="recouvrement_typ_flux" sql-index-id="SQI_RA_85" type="1">
+ <where-clause>fn:string-compare(${table}.${column},recouvrement_typ_flux)</where-clause>
+ </criteria>
+ <criteria id="recouvrement_mod_regl" sql-index-id="SQI_RA_86" type="1">
+ <where-clause>fn:string-compare(${table}.${column},recouvrement_mod_regl)</where-clause>
+ </criteria>
+ <criteria id="recouvrement_dte_reco" sql-index-id="SQI_RA_87" type="1">
+ <where-clause>fn:date-compare(${table}.${column},recouvrement_dte_reco)</where-clause>
+ </criteria>
+ <criteria id="recouvrement_id_encaissement" sql-index-id="SQI_RA_88" type="1">
+ <where-clause>${table}.${column}##OPERATEUR:recouvrement_id_encaissement####VALEUR:recouvrement_id_encaissement##</where-clause>
+ </criteria>
+ <criteria id="recouvrement_mt_reco" sql-index-id="SQI_RA_89" type="1">
+ <where-clause>${table}.${column}##OPERATEUR:recouvrement_mt_reco####VALEUR:recouvrement_mt_reco##</where-clause>
+ </criteria>
+
+ <!-- INDEX BORDEREAU BLOC BORDEREAU -->
+ <sql-index id="SQI_RA_M0" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/@added:primary-key" datatype="string" column="PRIMARY_KEY" table="T_RA_1"/>
+ <!--sql-index id="SQI_RA_M1" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/@added:primary-key" datatype="string" column="PRIMARY_KEY" table="T_RA_1"/-->
+ <sql-index id="SQI_RA_1" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:BlocBordereau/n:Exer/@V" datatype="integer" table="T_RA_1" column="EXERCICE"/>
+ <!--sql-index id="SQI_RA_1B" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:BlocBordereau/n:Exer/@V" datatype="integer" table="T_RA_1" column="EXERCICE"/-->
+ <sql-index id="SQI_RA_2" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:BlocBordereau/n:IdBord/@V" datatype="integer" table="T_RA_1" column="ID_BORDEREAU"/>
+ <sql-index id="SQI_RA_3" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:BlocBordereau/n:DteBordEm/@V" datatype="date" table="T_RA_1" column="DATE_EMISSION_BORDEREAU" format="yyyy-MM-dd"/>
+ <sql-index id="SQI_RA_4" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:BlocBordereau/n:TypBord/@V" datatype="string" table="T_RA_1" column="TYPE_BORDEREAU"/>
+ <!--sql-index id="SQI_RA_4B" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:BlocBordereau/n:TypBord/@V" datatype="string" table="T_RA_1" column="TYPE_BORDEREAU"/-->
+ <sql-index id="SQI_RA_5" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:BlocBordereau/n:NbrPce/@V" datatype="integer" table="T_RA_1" column="NB_PIECES"/>
+ <sql-index id="SQI_RA_6" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:BlocBordereau/n:MtCumulAnnuel/@V" datatype="decimal" table="T_RA_1" column="MT_CUMUL_ANNUEL"/>
+ <sql-index id="SQI_RA_7" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:BlocBordereau/n:MtBordHt/@V" datatype="decimal" table="T_RA_1" column="MT_BOREREAU_HT"/>
+ <sql-index id="SQI_RA_8" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:BlocBordereau/n:MtBordTVA/@V" datatype="decimal" table="T_RA_1" column="MT_BORDEREAU_TVA"/>
+ <sql-index id="SQI_RA_M4" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/@added:montantTTC" datatype="decimal" table="T_RA_1" column="MONTANT_TTC"/>
+
+ <!-- INDEX PIECE -->
+ <sql-index id="SQI_RA_9" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:BlocPiece/n:CodServ/@V" datatype="string" table="T_RA_2" column="CODE_SERVICE" />
+ <sql-index id="SQI_RA_10" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:BlocPiece/n:Affect/@V" datatype="string" table="T_RA_2" column="AFFECT" />
+ <sql-index id="SQI_RA_11" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:BlocPiece/n:CodProd/@V" datatype="string" table="T_RA_2" column="CODE_PROD" />
+ <sql-index id="SQI_RA_12" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:BlocPiece/n:IdPce/@V" datatype="integer" table="T_RA_2" column="ID_PIECE" />
+ <sql-index id="SQI_RA_13" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:BlocPiece/n:TypPce/@V" datatype="string" table="T_RA_2" column="TYPE_PIECE" />
+ <sql-index id="SQI_RA_14" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:BlocPiece/n:NatPce/@V" datatype="string" table="T_RA_2" column="NATURE_PIECE" />
+ <sql-index id="SQI_RA_15" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:BlocPiece/n:IdRol/@V" datatype="integer" table="T_RA_2" column="ID_ROL" />
+ <sql-index id="SQI_RA_16" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:BlocPiece/n:DteAsp/@V" datatype="date" table="T_RA_2" column="DATE_ASP" format="yyyy-MM-dd"/>
+ <sql-index id="SQI_RA_17" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:BlocPiece/n:ObjPce/@V" datatype="string" table="T_RA_2" column="OBJ" />
+ <sql-index id="SQI_RA_18" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:BlocPiece/n:DebFact/@V" datatype="date" table="T_RA_2" column="DEB_FACT" format="yyyy-MM-dd" />
+ <sql-index id="SQI_RA_19" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:BlocPiece/n:FinFact/@V" datatype="date" table="T_RA_2" column="FIN_FACT" format="yyyy-MM-dd" />
+ <sql-index id="SQI_RA_97" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/@added:nbLigne" datatype="integer" table="T_RA_2" column="NB_LIGNE"/>
+ <sql-index id="SQI_RA_98" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/@added:montantTTC" datatype="decimal" table="T_RA_2" column="MONTANT_TTC"/>
+ <sql-index id="SQI_RA_M5" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/@added:montantHT" datatype="decimal" table="T_RA_2" column="MONTANT_HT"/>
+ <sql-index id="SQI_RA_M7" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/@added:avecPJ" datatype="string" table="T_RA_2" column="AVEC_PJ"/>
+ <!-- INDEX PJREF PIECE -->
+ <sql-index id="SQI_RA_20" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:BlocPiece/n:PJRef/n:Support/@V" column="SUPPORT_PJ" datatype="string" table="T_RA_3"/>
+ <sql-index id="SQI_RA_21" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:BlocPiece/n:PJRef/n:IdUnique/@V" column="ID_UNIQUE_PJ" datatype="string" table="T_RA_3"/>
+ <sql-index id="SQI_RA_22" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:BlocPiece/n:PJRef/n:NomPJ/@V" column="NOM_PJ" datatype="string" table="T_RA_3"/>
+ <!-- INDEX LIGNE PIECE -->
+ <sql-index id="SQI_RA_23" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePiece/n:IdLigne/@V" datatype="string" column="ID_LIGNE" table="T_RA_4"/>
+ <sql-index id="SQI_RA_24" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePiece/n:ObjLignePce/@V" datatype="string" column="OBJET" table="T_RA_4"/>
+ <sql-index id="SQI_RA_25" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePiece/n:CodProdLoc/@V" datatype="string" column="CODE_PROD" table="T_RA_4"/>
+ <sql-index id="SQI_RA_26" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePiece/n:FinGeo/@V" datatype="integer" column="FIN_GEO" table="T_RA_4"/>
+ <sql-index id="SQI_RA_27" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePiece/n:CodEtGeo/@V" datatype="string" column="COD_ET_GEO" table="T_RA_4"/>
+ <sql-index id="SQI_RA_28" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePiece/n:Nature/@V" datatype="string" column="NATURE" table="T_RA_4"/>
+ <sql-index id="SQI_RA_29" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePiece/n:Fonction/@V" datatype="string" column="FONCTION" table="T_RA_4"/>
+ <sql-index id="SQI_RA_30" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePiece/n:Operation/@V" datatype="string" column="OPERATION" table="T_RA_4"/>
+ <sql-index id="SQI_RA_31" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePiece/n:CptAna/@V" datatype="string" column="COMPTE_ANA" table="T_RA_4"/>
+ <sql-index id="SQI_RA_32" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePiece/n:Facture/@V" datatype="string" column="FACTURE" table="T_RA_4"/>
+ <sql-index id="SQI_RA_33" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePiece/n:TxTva/@V" datatype="decimal" column="TAUX_TVA" table="T_RA_4"/>
+ <sql-index id="SQI_RA_34" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePiece/n:Majo/@V" datatype="string" column="MAJO" table="T_RA_4"/>
+ <sql-index id="SQI_RA_35" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePiece/n:DteMajo/@V" datatype="date" column="DATE_MAJO" table="T_RA_4" format="yyyy-MM-dd"/>
+ <sql-index id="SQI_RA_36" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePiece/n:TxMajo/@V" datatype="decimal" column="TAUX_MAJO" table="T_RA_4"/>
+ <sql-index id="SQI_RA_37" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePiece/n:CpteTiers/@V" datatype="string" column="COMPTE_TIERS" table="T_RA_4"/>
+ <sql-index id="SQI_RA_38" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePiece/n:TvaIntraCom/@V" datatype="string" column="TVA_INTRA_COM" table="T_RA_4"/>
+ <sql-index id="SQI_RA_39" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePiece/n:CpteTVA/@V" datatype="string" column="COMPTE_TVA" table="T_RA_4"/>
+ <sql-index id="SQI_RA_40" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePiece/n:MtHT/@V" datatype="decimal" column="MT_HT" table="T_RA_4"/>
+ <sql-index id="SQI_RA_41" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePiece/n:MtTVA/@V" datatype="decimal" column="MT_TVA" table="T_RA_4"/>
+ <sql-index id="SQI_RA_42" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePiece/n:MtNonMajo/@V" datatype="decimal" column="MT_NON_MAJO" table="T_RA_4"/>
+ <sql-index id="SQI_RA_43" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoPrelevement/n:NatPrel/@V" datatype="string" column="NAT_PREL" table="T_RA_4"/>
+ <sql-index id="SQI_RA_44" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoPrelevement/n:PerPrel/@V" datatype="string" column="PER_PREL" table="T_RA_4"/>
+ <sql-index id="SQI_RA_45" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoPrelevement/n:DtePrel/@V" datatype="date" column="DATE_PREL" table="T_RA_4" format="yyyy-MM-dd"/>
+ <sql-index id="SQI_RA_46" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoPrelevement/n:MtPrel/@V" datatype="decimal" column="MNT_PREL" table="T_RA_4"/>
+ <sql-index id="SQI_RA_47" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoAssure/n:CodAssDeb/@V" datatype="string" column="COD_ASS_DEB" table="T_RA_4"/>
+ <sql-index id="SQI_RA_48" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoAssure/n:CodAyantDroit/@V" datatype="string" column="COD_AYANT_DROIT" table="T_RA_4"/>
+ <sql-index id="SQI_RA_49" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:RattachPiece/n:NatPceOrig/@V" datatype="string" column="NATURE_PIECE_ORIGINE" table="T_RA_4"/>
+ <sql-index id="SQI_RA_50" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:RattachPiece/n:ExerRat/@V" datatype="string" column="EXERCICE_RAT" table="T_RA_4"/>
+ <sql-index id="SQI_RA_51" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:RattachPiece/n:IdPceOrig/@V" datatype="integer" column="ID_PIECE_ORIGINE" table="T_RA_4"/>
+ <sql-index id="SQI_RA_52" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:RattachPiece/n:IdLigneOrig/@V" datatype="string" column="ID_LIGNE_ORIGINE" table="T_RA_4"/>
+ <sql-index id="SQI_RA_53" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:LiensIdent/n:IdEncaissement/@V" datatype="string" column="ID_ENCAISSEMENT" table="T_RA_4"/>
+ <sql-index id="SQI_RA_54" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:LiensIdent/n:IdConv/@V" datatype="string" column="ID_CONV" table="T_RA_4"/>
+ <sql-index id="SQI_RA_55" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:LiensIdent/n:IdMarche/@V" datatype="string" column="ID_MARCHE" table="T_RA_4"/>
+ <sql-index id="SQI_RA_56" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:LiensIdent/n:IdCaution/@V" datatype="string" column="ID_CAUTION" table="T_RA_4"/>
+ <sql-index id="SQI_RA_57" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:LiensIdent/n:IdEmpruntOrdo/@V" datatype="string" column="ID_EMPRUNT_ORDO" table="T_RA_4"/>
+ <sql-index id="SQI_RA_58" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:LiensIdent/n:IdActif/@V" datatype="string" column="ID_ACTIF" table="T_RA_4"/>
+ <sql-index id="SQI_RA_59" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:LiensIdent/n:IdRegie/@V" datatype="string" column="ID_REGIE" table="T_RA_4"/>
+ <sql-index id="SQI_RA_M6" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/@added:montantTTC" datatype="decimal" column="MONTANT_TTC" table="T_RA_4"/>
+ <!-- INDEX PJREF LIGNE PIECE -->
+ <sql-index id="SQI_RA_60" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePiece/n:PJRef/n:Support/@V" column="SUPPORT_PJ" datatype="string" table="T_RA_5"/>
+ <sql-index id="SQI_RA_61" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePiece/n:PJRef/n:IdUnique" column="ID_UNIQUE_PJ" datatype="string" table="T_RA_5"/>
+ <sql-index id="SQI_RA_62" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePiece/n:PJRef/n:NomPJ" column="NOM_PJ" datatype="string" table="T_RA_5"/>
+ <!-- INDEX TIERS -->
+ <sql-index id="SQI_RA_63" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:InfoTiers/n:IdTiers/@V" datatype="string" column="ID_TIERS" table="T_RA_6"/>
+ <sql-index id="SQI_RA_64" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:InfoTiers/n:DteMalade/@V" datatype="date" column="DATE_MALADE" table="T_RA_6" format="yyyy-MM-dd"/>
+ <sql-index id="SQI_RA_65" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:InfoTiers/n:NatIdTiers/@V" datatype="string" column="NAT_ID_TIERS" table="T_RA_6"/>
+ <sql-index id="SQI_RA_66" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:InfoTiers/n:DteIdTiers/@V" datatype="date" column="DATE_ID_TIERS" table="T_RA_6" format="yyyy-MM-dd"/>
+ <sql-index id="SQI_RA_67" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:InfoTiers/n:RefTiers/@V" datatype="string" column="REF_TIERS" table="T_RA_6"/>
+ <sql-index id="SQI_RA_68" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:InfoTiers/n:CatTiers/@V" datatype="string" column="CAT_TIERS" table="T_RA_6"/>
+ <sql-index id="SQI_RA_69" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:InfoTiers/n:NatJur/@V" datatype="string" column="NAT_JUR" table="T_RA_6"/>
+ <sql-index id="SQI_RA_70" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:InfoTiers/n:TypTiers/@V" datatype="string" column="TYP_TIERS" table="T_RA_6"/>
+ <sql-index id="SQI_RA_71" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:InfoTiers/n:Civilite/@V" datatype="string" column="CIVILITE" table="T_RA_6"/>
+ <sql-index id="SQI_RA_72" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:InfoTiers/n:Nom/@V" datatype="string" column="NOM" table="T_RA_6"/>
+ <sql-index id="SQI_RA_73" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:InfoTiers/n:ComplNom/@V" datatype="string" column="COMPLEMENT_NOM" table="T_RA_6"/>
+ <sql-index id="SQI_RA_74" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:InfoTiers/n:Prenom/@V" datatype="string" column="PRENOM" table="T_RA_6"/>
+ <sql-index id="SQI_RA_75" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:Adresse/n:TypAdr/@V" datatype="string" column="TYP_ADR" table="T_RA_6"/>
+ <sql-index id="SQI_RA_76" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:Adresse/n:Adr1/@V" datatype="string" column="ADR1" table="T_RA_6"/>
+ <sql-index id="SQI_RA_77" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:Adresse/n:Adr2/@V" datatype="string" column="ADR2" table="T_RA_6"/>
+ <sql-index id="SQI_RA_78" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:Adresse/n:Adr3/@V" datatype="string" column="ADR3" table="T_RA_6"/>
+ <sql-index id="SQI_RA_79" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:Adresse/n:CP/@V" datatype="string" column="CP" table="T_RA_6"/>
+ <sql-index id="SQI_RA_80" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:Adresse/n:Ville/@V" datatype="string" column="VILLE" table="T_RA_6"/>
+ <sql-index id="SQI_RA_81" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:Adresse/n:CodRes/@V" datatype="string" column="COD_RES" table="T_RA_6"/>
+ <sql-index id="SQI_RA_82" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:Adresse/n:CodPays/@V" datatype="string" column="COD_PAYS" table="T_RA_6"/>
+ <sql-index id="SQI_RA_83" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:Adresse/n:DteAdr/@V" datatype="date" column="DATE_ADR" table="T_RA_6" format="yyyy-MM-dd"/>
+ <sql-index id="SQI_RA_84" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/n:CpteBancaire/@added:rib" datatype="string" column="RIB" table="T_RA_6"/>
+ <!-- INDEX RECOUVREMENT -->
+ <sql-index id="SQI_RA_85" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Recouvrement/n:TypFlux/@V" datatype="string" column="TYP_FLUX" table="T_RA_7"/>
+ <sql-index id="SQI_RA_86" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Recouvrement/n:ModRegl/@V" datatype="string" column="MODE_REGLEMENT" table="T_RA_7"/>
+ <sql-index id="SQI_RA_87" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Recouvrement/n:DteReco/@V" datatype="date" column="DATE_RECOUVREMENT" table="T_RA_7" format="yyyy-MM-dd"/>
+ <sql-index id="SQI_RA_88" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Recouvrement/n:IdEncaissement/@V" datatype="integer" column="ID_ENCAISSEMENT" table="T_RA_7"/>
+ <sql-index id="SQI_RA_89" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Recouvrement/n:MtReco/@V" datatype="decimal" column="MNT_RECOUVREMENT" table="T_RA_7"/>
+
+ <!--sql-index id="SQI_RA_90" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/@added:generated-id" column="NODE_ID" datatype="string" table="T_RA_1"/n:-->
+ <sql-index id="SQI_RA_91" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/@added:generated-id" column="NODE_ID" datatype="string" table="T_RA_2"/>
+ <sql-index id="SQI_RA_92" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:BlocPiece/n:PJRef/@added:generated-id" column="NODE_ID" datatype="string" table="T_RA_3"/>
+ <sql-index id="SQI_RA_93" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/@added:generated-id" column="NODE_ID" datatype="string" table="T_RA_4"/>
+ <sql-index id="SQI_RA_94" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePiece/n:PJRef/@added:generated-id" column="NODE_ID" datatype="string" table="T_RA_5"/>
+ <sql-index id="SQI_RA_95" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Tiers/@added:generated-id" column="NODE_ID" datatype="string" table="T_RA_6"/>
+ <sql-index id="SQI_RA_96" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:Recouvrement/@added:generated-id" column="NODE_ID" datatype="string" table="T_RA_7"/>
+ <!--sql-index id="SQI_RA_M2" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:BlocBordereau/n:IdBord/@V" datatype="integer" table="T_RA_1" column="ID_BORDEREAU"/-->
+ <!--sql-index id="SQI_RA_M3" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:BlocPiece/n:IdPce/@V" column="ID_PIECE" datatype="string" table="T_RA_2"/-->
+ <!-- ALL PJ -->
+ <sql-index id="REC_ALLPJ_NODE" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:added:AllPJRef/@added:generated-id" datatype="string" column="NODE_ID" table="recette_all_pj"/>
+ <sql-index id="REC_ALLPJ_SUPPORT" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:added:AllPJRef/n:Support/@V" datatype="string" column="SUPPORT_PJ" table="recette_all_pj"/>
+ <sql-index id="REC_ALLPJ_ID_UNIQUE" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:added:AllPJRef/n:IdUnique/@V" datatype="string" column="ID_UNIQUE_PJ" table="recette_all_pj"/>
+ <sql-index id="REC_ALLPJ_NOM_PJ" path="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:added:AllPJRef/n:NomPJ/@V" datatype="string" column="NOM_PJ" table="recette_all_pj"/>
+
+ <element id="PieceRecette">
+ <sql-count>COUNT(DISTINCT(CONCAT(PES_ALLER_RA_PIECE_IX.DOC_ID , PES_ALLER_RA_PIECE_IX.NODE_ID , PES_ALLER_RA_PIECE_IX.ID_PIECE)))</sql-count>
+ <special-cond>PES_ALLER_RA_PIECE_IX.NODE_ID IS NOT NULL</special-cond>
+ </element>
+ <element id="LigneDePieceRecette">
+ <sql-count>COUNT(DISTINCT(CONCAT(PES_ALLER_RA_BORDEREAU_IX.DOC_ID,PES_ALLER_RA_LIGNE_PIECE_IX.NODE_ID)))</sql-count>
+ <special-cond>PES_ALLER_RA_LIGNE_PIECE_IX.NODE_ID IS NOT NULL</special-cond>
+ </element>
+ <element id="tiers">
+ <sql-count>COUNT(DISTINCT(CONCAT(PES_ALLER_RA_BORDEREAU_IX.DOC_ID,PES_ALLER_RA_LIGNE_PIECE_TIERS.NODE_ID)))</sql-count>
+ <special-cond>PES_ALLER_RA_LIGNE_PIECE_TIERS.NODE_ID IS NOT NULL</special-cond>
+ </element>
+ <element id="recouvrement">
+ <sql-count>COUNT(DISTINCT(CONCAT(PES_ALLER_RA_BORDEREAU_IX.DOC_ID,PES_ALLER_RA_LIGNE_PIECE_RECOUVREMENT.NODE_ID)))</sql-count>
+ <special-cond>PES_ALLER_RA_LIGNE_PIECE_RECOUVREMENT.NODE_ID IS NOT NULL</special-cond>
+ </element>
+ </etat>
+
+ <etat id="PES_PJ" import-xslt-file="PES_V2/PES-PJ-import-mysql.xsl" >
+ <key1>
+ <path>/n:PES_Aller/n:PES_PJ/@added:generated-id</path>
+ </key1>
+ <key2>
+ <path>/n:PES_Aller/n:PES_PJ/n:PJ/@added:generated-id</path>
+ </key2>
+ <key3>
+ <path>/n:PES_Aller/n:PES_PJ/n:PJ/n:RefCompta/@added:generated-id</path>
+ </key3>
+
+ <table type="document" base-name="PES_PJ_DOCUMENTS" version="1">
+ CREATE TABLE IF NOT EXISTS ${base-name} (
+ COLLECTIVITE VARCHAR(15) NOT NULL,
+ BUDGET VARCHAR(24) NOT NULL,
+ INITIAL_DOC_NAME VARCHAR(100) NOT NULL,
+ DOC_ID VARCHAR(100) NOT NULL,
+ DOC LONGBLOB,
+ ENCODING VARCHAR(20),
+ INDEX IX_${base-name}_BC (COLLECTIVITE,BUDGET,DOC_ID),
+ ARCHIVE_NAME VARCHAR(100), INDEX ${base-name}_AN (ARCHIVE_NAME)
+ ) ENGINE MYISAM
+ </table>
+ <table type="index" id="PES_PJ_PES_ALLER_PES_PJ_IX" base-name="PES_PJ_PES_ALLER_PES_PJ_IX" version="1" main="true" based-on="key1">
+ CREATE TABLE IF NOT EXISTS ${base-name} (
+ COLLECTIVITE VARCHAR(15) NOT NULL,
+ BUDGET VARCHAR(24) NOT NULL,
+ DOC_ID VARCHAR(100) NOT NULL,
+ NODE_ID VARCHAR(50) NOT NULL,
+ IDVER INTEGER ,
+ INDEX IX_${base-name}_BC (COLLECTIVITE,BUDGET,DOC_ID),
+ INDEX IX_${base-name}_DC (DOC_ID),
+ INITIAL_DOC_NAME VARCHAR(100),
+ INDEX ${base-name}_IDN (INITIAL_DOC_NAME),
+ ARCHIVE_NAME VARCHAR(100),
+ INDEX ${base-name}_AN (ARCHIVE_NAME)
+ ) ENGINE MYISAM
+ </table>
+ <table type="index" id="PES_PJ_PJ_IX" base-name="PES_PJ_PJ_IX" version="1" main="false" based-on="key2">
+ CREATE TABLE IF NOT EXISTS ${base-name} (
+ COLLECTIVITE VARCHAR(15) NOT NULL,
+ BUDGET VARCHAR(24) NOT NULL,
+ DOC_ID VARCHAR(100) NOT NULL,
+ NODE_ID VARCHAR(50) NOT NULL,
+ TYPEPJ VARCHAR(3) ,
+ NOMPJ VARCHAR(100) ,
+ DESCRIPTION VARCHAR(250) ,
+ IDUNIQUE VARCHAR(50) ,
+ SERVEURID VARCHAR(20) ,
+ LIBTYPEPJ VARCHAR(100),
+ INDEX IX_${base-name}_BC (COLLECTIVITE,BUDGET,DOC_ID),
+ INDEX IX_${base-name}_DC (DOC_ID),
+ INITIAL_DOC_NAME VARCHAR(100),
+ INDEX ${base-name}_IDN (INITIAL_DOC_NAME),
+ ARCHIVE_NAME VARCHAR(100),
+ INDEX ${base-name}_AN (ARCHIVE_NAME)
+ ) ENGINE MYISAM
+ </table>
+ <table type="index" id="PES_PJ_PJ_REFCOMPTA_IX" base-name="PES_PJ_PJ_REFCOMPTA_IX" version="1" main="false" based-on="key3">
+ CREATE TABLE IF NOT EXISTS ${base-name} (
+ COLLECTIVITE VARCHAR(15) NOT NULL,
+ BUDGET VARCHAR(24) NOT NULL,
+ DOC_ID VARCHAR(100) NOT NULL,
+ NODE_ID VARCHAR(50) NOT NULL,
+ IDENTIFIANT VARCHAR(20) ,
+ TYPEOBJET INTEGER ,
+ EXERCICE VARCHAR(255) ,
+ DOMAINE VARCHAR(255) ,
+ IDTIERS VARCHAR(30) ,
+ CODPROD VARCHAR(2) ,
+ COMPLEMENTIDENTIFIANT VARCHAR(20) ,
+ INDEX IX_${base-name}_BC (COLLECTIVITE,BUDGET,DOC_ID),
+ INDEX IX_${base-name}_DC (DOC_ID),
+ INITIAL_DOC_NAME VARCHAR(100),
+ INDEX ${base-name}_IDN (INITIAL_DOC_NAME),
+ ARCHIVE_NAME VARCHAR(100),
+ INDEX ${base-name}_AN (ARCHIVE_NAME)
+ ) ENGINE MYISAM
+ </table>
+
+
+ <!-- CRITERIA /n:PES_Aller/n:PES_PJ -->
+ <criteria id="CRI_PES_PJ_PES_PJ_IDVER" type="1" sql-index-id="SQI_PES_PJ_PES_PJ_IDVER">
+ <where-clause>${table}.${column}##OPERATEUR:IdVer####VALEUR:IdVer##</where-clause>
+ </criteria>
+
+ <!-- CRITERIA /n:PES_Aller/n:PES_PJ/n:PJ -->
+ <criteria id="CRI_PES_PJ_PJ_TYPEPJ" type="1" sql-index-id="SQI_PES_PJ_PJ_TYPEPJ">
+ <where-clause>${table}.${column}=##VALEUR:TypePJ##</where-clause>
+ </criteria>
+ <criteria id="_CRI_PES_PJ_PJ_LIBTYPEPJ" type="1" sql-index-id="SQI_PES_PJ_PJ_LIBTYPEPJ">
+ <where-clause>${table}.$#column}=##VALEUR:LibTypePJ##</where-clause>
+ </criteria>
+ <criteria id="CRI_PES_PJ_PJ_NOMPJ" type="1" sql-index-id="SQI_PES_PJ_PJ_NOMPJ">
+ <where-clause>fn:string-compare(${table}.${column},NomPJ)</where-clause>
+ </criteria>
+ <criteria id="CRI_PES_PJ_PJ_DESCRIPTION" type="1" sql-index-id="SQI_PES_PJ_PJ_DESCRIPTION">
+ <where-clause>fn:string-compare(${table}.${column},Description)</where-clause>
+ </criteria>
+ <criteria id="CRI_PES_PJ_PJ_IDUNIQUE" type="1" sql-index-id="SQI_PES_PJ_PJ_IDUNIQUE">
+ <where-clause>fn:string-compare(${table}.${column},IdUnique)</where-clause>
+ </criteria>
+ <criteria id="CRI_PES_PJ_PJ_SERVEURID" type="1" sql-index-id="SQI_PES_PJ_PJ_SERVEURID">
+ <where-clause>fn:string-compare(${table}.${column},ServeurId)</where-clause>
+ </criteria>
+
+ <!-- CRITERIA /n:PES_Aller/n:PES_PJ/n:PJ/n:RefCompta -->
+ <criteria id="CRI_PES_PJ_PJ_REFCOMPTA_IDENTIFIANT" type="1" sql-index-id="SQI_PES_PJ_PJ_REFCOMPTA_IDENTIFIANT">
+ <where-clause>fn:string-compare(${table}.${column},Identifiant)</where-clause>
+ </criteria>
+ <criteria id="CRI_PES_PJ_PJ_REFCOMPTA_TYPEOBJET" type="1" sql-index-id="SQI_PES_PJ_PJ_REFCOMPTA_TYPEOBJET">
+ <where-clause>${table}.${column}##OPERATEUR:TypeObjet####VALEUR:TypeObjet##</where-clause>
+ </criteria>
+ <criteria id="CRI_PES_PJ_PJ_REFCOMPTA_EXERCICE" type="1" sql-index-id="SQI_PES_PJ_PJ_REFCOMPTA_EXERCICE">
+ <where-clause>fn:string-compare(${table}.${column},Exercice)</where-clause>
+ </criteria>
+ <criteria id="CRI_PES_PJ_PJ_REFCOMPTA_DOMAINE" type="1" sql-index-id="SQI_PES_PJ_PJ_REFCOMPTA_DOMAINE">
+ <where-clause>fn:string-compare(${table}.${column},Domaine)</where-clause>
+ </criteria>
+ <criteria id="CRI_PES_PJ_PJ_REFCOMPTA_IDTIERS" type="1" sql-index-id="SQI_PES_PJ_PJ_REFCOMPTA_IDTIERS">
+ <where-clause>fn:string-compare(${table}.${column},IdTiers)</where-clause>
+ </criteria>
+ <criteria id="CRI_PES_PJ_PJ_REFCOMPTA_CODPROD" type="1" sql-index-id="SQI_PES_PJ_PJ_REFCOMPTA_CODPROD">
+ <where-clause>fn:string-compare(${table}.${column},CodProd)</where-clause>
+ </criteria>
+ <criteria id="CRI_PES_PJ_PJ_REFCOMPTA_COMPLEMENTIDENTIFIANT" type="1" sql-index-id="SQI_PES_PJ_PJ_REFCOMPTA_COMPLEMENTIDENTIFIANT">
+ <where-clause>fn:string-compare(${table}.${column},ComplementIdentifiant)</where-clause>
+ </criteria>
+
+
+ <!-- SQL-INDEX /n:PES_Aller/n:PES_PJ -->
+ <sql-index id="SQI_PES_PJ_PES_PJ__NODE_ID" path="/n:PES_Aller/n:PES_PJ/@added:generated-id" column="NODE_ID" datatype="string" table="PES_PJ_PES_ALLER_PES_PJ_IX"/>
+ <sql-index id="SQI_PES_PJ_PES_PJ_IDVER" path="/n:PES_Aller/n:PES_PJ/n:EnTetePES_PJ/n:IdVer/@V" datatype="integer" column="IDVER" table="PES_PJ_PES_ALLER_PES_PJ_IX" />
+
+ <!-- SQL-INDEX /n:PES_Aller/n:PES_PJ/n:PJ -->
+ <sql-index id="SQI_PES_PJ_PJ__NODE_ID" path="/n:PES_Aller/n:PES_PJ/n:PJ/@added:generated-id" column="NODE_ID" datatype="string" table="PES_PJ_PJ_IX"/>
+ <sql-index id="SQI_PES_PJ_PJ_TYPEPJ" path="/n:PES_Aller/n:PES_PJ/n:PJ/n:TypePJ/@V" datatype="string" column="TYPEPJ" table="PES_PJ_PJ_IX" />
+ <sql-index id="SQI_PES_PJ_PJ_LIBTYPEPJ" path="/n:PES_Aller/n:PES_PJ/n:PJ/@LibTypePJ" datatype="string" column="LIBTYPEPJ" table="PES_PJ_PJ_IX" />
+ <sql-index id="SQI_PES_PJ_PJ_NOMPJ" path="/n:PES_Aller/n:PES_PJ/n:PJ/n:NomPJ/@V" datatype="string" column="NOMPJ" table="PES_PJ_PJ_IX" />
+ <sql-index id="SQI_PES_PJ_PJ_DESCRIPTION" path="/n:PES_Aller/n:PES_PJ/n:PJ/n:Description/@V" datatype="string" column="DESCRIPTION" table="PES_PJ_PJ_IX" />
+ <sql-index id="SQI_PES_PJ_PJ_IDUNIQUE" path="/n:PES_Aller/n:PES_PJ/n:PJ/n:IdUnique/@V" datatype="string" column="IDUNIQUE" table="PES_PJ_PJ_IX" />
+ <sql-index id="SQI_PES_PJ_PJ_SERVEURID" path="/n:PES_Aller/n:PES_PJ/n:PJ/n:ServeurId/@V" datatype="string" column="SERVEURID" table="PES_PJ_PJ_IX" />
+
+ <!-- SQL-INDEX /n:PES_Aller/n:PES_PJ/n:PJ/n:RefCompta -->
+ <sql-index id="SQI_PES_PJ_PJ_REFCOMPTA__NODE_ID" path="/n:PES_Aller/n:PES_PJ/n:PJ/n:RefCompta/@added:generated-id" column="NODE_ID" datatype="string" table="PES_PJ_PJ_REFCOMPTA_IX"/>
+ <sql-index id="SQI_PES_PJ_PJ_REFCOMPTA_IDENTIFIANT" path="/n:PES_Aller/n:PES_PJ/n:PJ/n:RefCompta/n:Identifiant/@V" datatype="string" column="IDENTIFIANT" table="PES_PJ_PJ_REFCOMPTA_IX" />
+ <sql-index id="SQI_PES_PJ_PJ_REFCOMPTA_TYPEOBJET" path="/n:PES_Aller/n:PES_PJ/n:PJ/n:RefCompta/n:TypeObjet/@V" datatype="integer" column="TYPEOBJET" table="PES_PJ_PJ_REFCOMPTA_IX" />
+ <sql-index id="SQI_PES_PJ_PJ_REFCOMPTA_EXERCICE" path="/n:PES_Aller/n:PES_PJ/n:PJ/n:RefCompta/n:Exercice/@V" datatype="string" column="EXERCICE" table="PES_PJ_PJ_REFCOMPTA_IX" />
+ <sql-index id="SQI_PES_PJ_PJ_REFCOMPTA_DOMAINE" path="/n:PES_Aller/n:PES_PJ/n:PJ/n:RefCompta/n:Domaine/@V" datatype="string" column="DOMAINE" table="PES_PJ_PJ_REFCOMPTA_IX" />
+ <sql-index id="SQI_PES_PJ_PJ_REFCOMPTA_IDTIERS" path="/n:PES_Aller/n:PES_PJ/n:PJ/n:RefCompta/n:IdTiers/@V" datatype="string" column="IDTIERS" table="PES_PJ_PJ_REFCOMPTA_IX" />
+ <sql-index id="SQI_PES_PJ_PJ_REFCOMPTA_CODPROD" path="/n:PES_Aller/n:PES_PJ/n:PJ/n:RefCompta/n:CodProd/@V" datatype="string" column="CODPROD" table="PES_PJ_PJ_REFCOMPTA_IX" />
+ <sql-index id="SQI_PES_PJ_PJ_REFCOMPTA_COMPLEMENTIDENTIFIANT" path="/n:PES_Aller/n:PES_PJ/n:PJ/n:RefCompta/n:ComplementIdentifiant/@V" datatype="string" column="COMPLEMENTIDENTIFIANT" table="PES_PJ_PJ_REFCOMPTA_IX" />
+
+ <element id="PES_ALLER_PES_PJ_PJ_IX">
+ <sql-count>COUNT(DISTINCT(CONCAT(PES_ALLER_PES_PJ_IX.DOC_ID,PES_ALLER_PES_PJ_PJ_IX.NODE_ID)))</sql-count>
+ <special-cond>PES_ALLER_PES_PJ_PJ_IX.NODE_ID IS NOT NULL</special-cond>
+ </element>
+ <element id="PES_ALLER_PES_PJ_PJ_REFCOMPTA_IX">
+ <sql-count>COUNT(DISTINCT(CONCAT(PES_ALLER_PES_PJ_IX.DOC_ID,PES_ALLER_PES_PJ_PJ_REFCOMPTA_IX.NODE_ID)))</sql-count>
+ <special-cond>PES_ALLER_PES_PJ_PJ_REFCOMPTA_IX.NODE_ID IS NOT NULL</special-cond>
+ </element>
+
+ </etat>
+
+ </document>
+ </layer>
+</persistence-config>
--- /dev/null
+<!ELEMENT Adr1 EMPTY >
+<!ATTLIST Adr1 V CDATA #REQUIRED >
+
+<!ELEMENT Adresse ( TypAdr?, Adr1?, CP?, Ville?, CodRes? ) >
+<!ATTLIST Adresse V CDATA #IMPLIED >
+
+<!ELEMENT BlocBordereau ( Exer, IdBord, DteBordEm, TypBord, NbrPce, MtBordHt, MtBordTVA ) >
+
+<!ELEMENT BlocLignePiece ( InfoLignePiece ) >
+
+<!ELEMENT BlocPiece ( CodServ, IdPce, TypPce, NatPce, PJRef ) >
+
+<!ELEMENT Bordereau ( BlocBordereau, Piece ) >
+<!ATTLIST Bordereau Id NMTOKEN #REQUIRED >
+
+<!ELEMENT CP EMPTY >
+<!ATTLIST CP V NMTOKEN #REQUIRED >
+
+<!ELEMENT CatTiers EMPTY >
+<!ATTLIST CatTiers V NMTOKEN #REQUIRED >
+
+<!ELEMENT CodBud EMPTY >
+<!ATTLIST CodBud V NMTOKEN #REQUIRED >
+
+<!ELEMENT CodCol EMPTY >
+<!ATTLIST CodCol V NMTOKEN #REQUIRED >
+
+<!ELEMENT CodProdLoc EMPTY >
+<!ATTLIST CodProdLoc V NMTOKEN #REQUIRED >
+
+<!ELEMENT CodRes EMPTY >
+<!ATTLIST CodRes V NMTOKEN #REQUIRED >
+
+<!ELEMENT CodServ EMPTY >
+<!ATTLIST CodServ V NMTOKEN #REQUIRED >
+
+<!ELEMENT Contenu ( xenc:EncryptedData ) >
+
+<!ELEMENT Description EMPTY >
+<!ATTLIST Description V NMTOKEN #REQUIRED >
+
+<!ELEMENT DteBordEm EMPTY >
+<!ATTLIST DteBordEm V NMTOKEN #REQUIRED >
+
+<!ELEMENT DteStr EMPTY >
+<!ATTLIST DteStr V NMTOKEN #REQUIRED >
+
+<!ELEMENT Emetteur ( Sigle, Adresse ) >
+
+<!ELEMENT EnTetePES ( DteStr, IdPost, LibellePoste, IdColl, CodCol, CodBud, LibelleColBud ) >
+
+<!ELEMENT EnTetePES_PJ ( IdVer ) >
+
+<!ELEMENT EnTeteRecette ( IdVer, InfoDematerialisee ) >
+
+<!ELEMENT Enveloppe ( Parametres, Emetteur, Recepteur ) >
+
+<!ELEMENT Exer EMPTY >
+<!ATTLIST Exer V NMTOKEN #REQUIRED >
+
+<!ELEMENT Fonction EMPTY >
+<!ATTLIST Fonction V NMTOKEN #REQUIRED >
+
+<!ELEMENT IdBord EMPTY >
+<!ATTLIST IdBord V NMTOKEN #REQUIRED >
+
+<!ELEMENT IdColl EMPTY >
+<!ATTLIST IdColl V NMTOKEN #REQUIRED >
+
+<!ELEMENT IdLigne EMPTY >
+<!ATTLIST IdLigne V NMTOKEN #REQUIRED >
+
+<!ELEMENT IdPce EMPTY >
+<!ATTLIST IdPce V NMTOKEN #REQUIRED >
+
+<!ELEMENT IdPost EMPTY >
+<!ATTLIST IdPost V NMTOKEN #REQUIRED >
+
+<!ELEMENT IdUnique EMPTY >
+<!ATTLIST IdUnique V NMTOKEN #REQUIRED >
+
+<!ELEMENT IdVer EMPTY >
+<!ATTLIST IdVer V NMTOKEN #REQUIRED >
+
+<!ELEMENT InfoDematerialisee EMPTY >
+<!ATTLIST InfoDematerialisee V NMTOKEN #REQUIRED >
+
+<!ELEMENT InfoLignePiece ( IdLigne, CodProdLoc, Nature, Fonction, Operation, Majo, TvaIntraCom, MtHT, MtTVA ) >
+
+<!ELEMENT InfoTiers ( RefTiers, CatTiers, NatJur, TypTiers, Nom ) >
+
+<!ELEMENT LibelleColBud EMPTY >
+<!ATTLIST LibelleColBud V CDATA #REQUIRED >
+
+<!ELEMENT LibellePoste EMPTY >
+<!ATTLIST LibellePoste V NMTOKEN #REQUIRED >
+
+<!ELEMENT LigneDePiece ( BlocLignePiece, Tiers ) >
+
+<!ELEMENT Majo EMPTY >
+<!ATTLIST Majo V NMTOKEN #REQUIRED >
+
+<!ELEMENT MtBordHt EMPTY >
+<!ATTLIST MtBordHt V NMTOKEN #REQUIRED >
+
+<!ELEMENT MtBordTVA EMPTY >
+<!ATTLIST MtBordTVA V NMTOKEN #REQUIRED >
+
+<!ELEMENT MtHT EMPTY >
+<!ATTLIST MtHT V NMTOKEN #REQUIRED >
+
+<!ELEMENT MtTVA EMPTY >
+<!ATTLIST MtTVA V NMTOKEN #REQUIRED >
+
+<!ELEMENT NatJur EMPTY >
+<!ATTLIST NatJur V NMTOKEN #REQUIRED >
+
+<!ELEMENT NatPce EMPTY >
+<!ATTLIST NatPce V NMTOKEN #REQUIRED >
+
+<!ELEMENT Nature EMPTY >
+<!ATTLIST Nature V NMTOKEN #REQUIRED >
+
+<!ELEMENT NbrPce EMPTY >
+<!ATTLIST NbrPce V NMTOKEN #REQUIRED >
+
+<!ELEMENT Nom EMPTY >
+<!ATTLIST Nom V CDATA #REQUIRED >
+
+<!ELEMENT NomFic EMPTY >
+<!ATTLIST NomFic V NMTOKEN #REQUIRED >
+
+<!ELEMENT NomPJ EMPTY >
+<!ATTLIST NomPJ V CDATA #REQUIRED >
+
+<!ELEMENT Operation EMPTY >
+<!ATTLIST Operation V NMTOKEN #REQUIRED >
+
+<!ELEMENT PES_PJ ( EnTetePES_PJ, PJ ) >
+
+<!ELEMENT PES_RecetteAller ( EnTeteRecette, Bordereau ) >
+
+<!ELEMENT PJ ( Contenu, IdUnique, NomPJ, TypePJ, Description ) >
+
+<!ELEMENT PJRef ( Support, IdUnique ) >
+
+<!ELEMENT Parametres ( Version, NomFic, TypFic ) >
+
+<!ELEMENT Piece ( BlocPiece, LigneDePiece ) >
+
+<!ELEMENT Recepteur ( Sigle, Adresse ) >
+
+<!ELEMENT RefTiers EMPTY >
+<!ATTLIST RefTiers V NMTOKEN #REQUIRED >
+
+<!ELEMENT Sigle EMPTY >
+<!ATTLIST Sigle V CDATA #REQUIRED >
+
+<!ELEMENT Support EMPTY >
+<!ATTLIST Support V NMTOKEN #REQUIRED >
+
+<!ELEMENT Tiers ( InfoTiers, Adresse ) >
+
+<!ELEMENT TvaIntraCom EMPTY >
+<!ATTLIST TvaIntraCom V NMTOKEN #REQUIRED >
+
+<!ELEMENT TypAdr EMPTY >
+<!ATTLIST TypAdr V NMTOKEN #REQUIRED >
+
+<!ELEMENT TypBord EMPTY >
+<!ATTLIST TypBord V NMTOKEN #REQUIRED >
+
+<!ELEMENT TypFic EMPTY >
+<!ATTLIST TypFic V NMTOKEN #REQUIRED >
+
+<!ELEMENT TypPce EMPTY >
+<!ATTLIST TypPce V NMTOKEN #REQUIRED >
+
+<!ELEMENT TypTiers EMPTY >
+<!ATTLIST TypTiers V NMTOKEN #REQUIRED >
+
+<!ELEMENT TypePJ EMPTY >
+<!ATTLIST TypePJ V NMTOKEN #REQUIRED >
+
+<!ELEMENT Version EMPTY >
+<!ATTLIST Version V NMTOKEN #REQUIRED >
+
+<!ELEMENT Ville EMPTY >
+<!ATTLIST Ville V NMTOKEN #REQUIRED >
+
+<!ELEMENT ds:CanonicalizationMethod EMPTY >
+<!ATTLIST ds:CanonicalizationMethod Algorithm CDATA #REQUIRED >
+
+<!ELEMENT ds:DigestMethod EMPTY >
+<!ATTLIST ds:DigestMethod Algorithm CDATA #REQUIRED >
+
+<!ELEMENT ds:DigestValue ( #PCDATA ) >
+
+<!ELEMENT ds:KeyInfo ( ds:KeyName | ds:X509Data | xenc:EncryptedKey )* >
+<!ATTLIST ds:KeyInfo xmlns:ds CDATA #IMPLIED >
+
+<!ELEMENT ds:KeyName ( #PCDATA ) >
+
+<!ELEMENT ds:Object ( xad:QualifyingProperties, xch:SignatureCreationApplication ) >
+
+<!ELEMENT ds:Reference ( ds:Transforms, ds:DigestMethod, ds:DigestValue ) >
+<!ATTLIST ds:Reference Type CDATA #IMPLIED >
+<!ATTLIST ds:Reference URI CDATA #REQUIRED >
+
+<!ELEMENT ds:Signature ( ds:SignedInfo, ds:SignatureValue, ds:KeyInfo, ds:Object ) >
+<!ATTLIST ds:Signature Id NMTOKEN #REQUIRED >
+<!ATTLIST ds:Signature xmlns:ds CDATA #REQUIRED >
+<!ATTLIST ds:Signature xmlns:xad CDATA #REQUIRED >
+<!ATTLIST ds:Signature xmlns:xch CDATA #REQUIRED >
+
+<!ELEMENT ds:SignatureMethod EMPTY >
+<!ATTLIST ds:SignatureMethod Algorithm CDATA #REQUIRED >
+
+<!ELEMENT ds:SignatureValue ( #PCDATA ) >
+
+<!ELEMENT ds:SignedInfo ( ds:CanonicalizationMethod, ds:SignatureMethod, ds:Reference+ ) >
+
+<!ELEMENT ds:Transform ( ds:XPath? ) >
+<!ATTLIST ds:Transform Algorithm CDATA #REQUIRED >
+
+<!ELEMENT ds:Transforms ( ds:Transform+ ) >
+
+<!ELEMENT ds:X509Certificate ( #PCDATA ) >
+
+<!ELEMENT ds:X509Data ( ds:X509Certificate ) >
+
+<!ELEMENT ds:X509IssuerName ( #PCDATA ) >
+
+<!ELEMENT ds:X509SerialNumber ( #PCDATA ) >
+
+<!ELEMENT ds:XPath ( #PCDATA ) >
+
+<!ELEMENT n:PES_Aller ( Enveloppe, EnTetePES, PES_RecetteAller, PES_PJ, ds:Signature ) >
+<!ATTLIST n:PES_Aller Id ID #REQUIRED >
+<!ATTLIST n:PES_Aller xmlns:n CDATA #REQUIRED >
+<!ATTLIST n:PES_Aller xmlns:xch CDATA #REQUIRED >
+<!ATTLIST n:PES_Aller xmlns:xsi CDATA #REQUIRED >
+<!ATTLIST n:PES_Aller xsi:schemaLocation CDATA #REQUIRED >
+
+<!ELEMENT xad:Cert ( xad:CertDigest, xad:IssuerSerial ) >
+
+<!ELEMENT xad:CertDigest ( xad:DigestMethod, xad:DigestValue ) >
+
+<!ELEMENT xad:City ( #PCDATA ) >
+
+<!ELEMENT xad:ClaimedRole ( #PCDATA ) >
+
+<!ELEMENT xad:ClaimedRoles ( xad:ClaimedRole ) >
+
+<!ELEMENT xad:CountryName ( #PCDATA ) >
+
+<!ELEMENT xad:Description ( #PCDATA ) >
+
+<!ELEMENT xad:DigestMethod EMPTY >
+<!ATTLIST xad:DigestMethod Algorithm CDATA #REQUIRED >
+
+<!ELEMENT xad:DigestValue ( #PCDATA ) >
+
+<!ELEMENT xad:Identifier ( #PCDATA ) >
+
+<!ELEMENT xad:IssuerSerial ( ds:X509IssuerName, ds:X509SerialNumber ) >
+
+<!ELEMENT xad:PostalCode ( #PCDATA ) >
+
+<!ELEMENT xad:QualifyingProperties ( xad:SignedProperties ) >
+<!ATTLIST xad:QualifyingProperties Target CDATA #REQUIRED >
+
+<!ELEMENT xad:SPURI ( #PCDATA ) >
+
+<!ELEMENT xad:SigPolicyHash ( xad:DigestMethod, xad:DigestValue ) >
+
+<!ELEMENT xad:SigPolicyId ( xad:Identifier, xad:Description ) >
+
+<!ELEMENT xad:SigPolicyQualifier ( xad:SPURI ) >
+
+<!ELEMENT xad:SigPolicyQualifiers ( xad:SigPolicyQualifier ) >
+
+<!ELEMENT xad:SignaturePolicyId ( xad:SigPolicyId, xad:SigPolicyHash, xad:SigPolicyQualifiers ) >
+
+<!ELEMENT xad:SignaturePolicyIdentifier ( xad:SignaturePolicyId ) >
+
+<!ELEMENT xad:SignatureProductionPlace ( xad:City, xad:PostalCode, xad:CountryName ) >
+
+<!ELEMENT xad:SignedProperties ( xad:SignedSignatureProperties ) >
+<!ATTLIST xad:SignedProperties Id NMTOKEN #REQUIRED >
+
+<!ELEMENT xad:SignedSignatureProperties ( xad:SigningTime, xad:SigningCertificate, xad:SignaturePolicyIdentifier, xad:SignatureProductionPlace, xad:SignerRole ) >
+
+<!ELEMENT xad:SignerRole ( xad:ClaimedRoles ) >
+
+<!ELEMENT xad:SigningCertificate ( xad:Cert ) >
+
+<!ELEMENT xad:SigningTime ( #PCDATA ) >
+
+<!ELEMENT xch:AppEditor ( #PCDATA ) >
+
+<!ELEMENT xch:AppName ( #PCDATA ) >
+
+<!ELEMENT xch:AppType ( #PCDATA ) >
+
+<!ELEMENT xch:AppVersion ( #PCDATA ) >
+
+<!ELEMENT xch:Application ( xch:AppType, xch:AppName, xch:AppEditor, xch:AppVersion ) >
+
+<!ELEMENT xch:FASTAppType ( #PCDATA ) >
+
+<!ELEMENT xch:OS ( xch:OSName, xch:OSEditor, xch:OSVersion ) >
+
+<!ELEMENT xch:OSEditor ( #PCDATA ) >
+
+<!ELEMENT xch:OSName ( #PCDATA ) >
+
+<!ELEMENT xch:OSVersion ( #PCDATA ) >
+
+<!ELEMENT xch:SignatureCreationApplication ( xch:FASTAppType, xch:Application, xch:OS ) >
+
+<!ELEMENT xenc:CipherData ( xenc:CipherValue ) >
+
+<!ELEMENT xenc:CipherValue ( #PCDATA ) >
+
+<!ELEMENT xenc:EncryptedData ( xenc:EncryptionMethod, ds:KeyInfo, xenc:CipherData ) >
+<!ATTLIST xenc:EncryptedData Type CDATA #REQUIRED >
+<!ATTLIST xenc:EncryptedData xmlns:xenc CDATA #REQUIRED >
+
+<!ELEMENT xenc:EncryptedKey ( xenc:EncryptionMethod, xenc:CipherData ) >
+
+<!ELEMENT xenc:EncryptionMethod EMPTY >
+<!ATTLIST xenc:EncryptionMethod Algorithm CDATA #REQUIRED >
+
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+
+ <xsl:output method="html"/>
+
+ <xsl:template match="/">
+ <html>
+ <body>
+ <p>
+ <xsl:apply-templates/>
+ </p>
+ </body>
+ </html>
+ </xsl:template>
+
+ <xsl:template match="control">
+ <xsl:value-of select="./@id"/> : <xsl:value-of select="./@libelle"/><br/>
+ </xsl:template>
+
+</xsl:stylesheet>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">\r
+ <xs:include schemaLocation="Simple_Type.xsd"/>\r
+ <xs:complexType name="TAdresse">\r
+ <xs:sequence>\r
+ <xs:element name="TypAdr">\r
+ <xs:complexType>\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="0"/>\r
+ <xs:enumeration value="1"/>\r
+ <xs:enumeration value="2"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="Adr1" type="Base_Texte38" minOccurs="0"/>\r
+ <xs:element name="Adr2" type="Base_Texte38" minOccurs="0"/>\r
+ <xs:element name="Adr3" type="Base_Texte38" minOccurs="0"/>\r
+ <xs:element name="CP" type="Base_Texte5"/>\r
+ <xs:element name="Ville" type="Base_Texte38" minOccurs="0"/>\r
+ <xs:element name="CodRes" type="Base_Booleen"/>\r
+ <xs:element name="CodPays" type="Base_Num3" minOccurs="0"/>\r
+ <xs:element name="DteAdr" type="Base_Date" minOccurs="0"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">\r
+ <xs:include schemaLocation="Simple_Type.xsd"/>\r
+ <xs:complexType name="TBancaire">\r
+ <xs:sequence>\r
+ <xs:element name="IdPayInt" type="Base_Alphanum4" minOccurs="0"/>\r
+ <xs:element name="IdBancInt" type="Base_Alphanum11" minOccurs="0"/>\r
+ <xs:element name="CodeEtab" type="Base_Alphanum5"/>\r
+ <xs:element name="CodeGuic" type="Base_Alphanum5"/>\r
+ <xs:element name="IdCpte" type="Base_Texte11"/>\r
+ <xs:element name="CleRib" type="Base_Num2"/>\r
+ <xs:element name="LibBanc" type="Base_Texte24" minOccurs="0"/>\r
+ <xs:element name="TitCpte" type="Base_Texte32"/>\r
+ <xs:element name="DteBanc" type="Base_Date" minOccurs="0"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://www.w3.org/2001/04/xmlenc#" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" elementFormDefault="qualified" attributeFormDefault="unqualified">
+ <xs:include schemaLocation="../XMLENC/1.0/xenc-schema.xsd"/>
+ <xs:complexType name="PESEncryptedDataType">
+ <xs:annotation>
+ <xs:documentation>Element contenant la donnee chiffree et les informations necessaires au dechiffrement - L'element KeyInfo contient un element EncryptedKey par acteur destinataire de l'information.</xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="xenc:EncryptedDataType"/>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:group name="PESEncryptedDataGroup">
+ <xs:sequence>
+ <xs:element name="EncryptedData" type="xenc:PESEncryptedDataType"/>
+ </xs:sequence>
+ </xs:group>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<!-- edited with XMLSPY v5 rel. 2 U (http://www.xmlspy.com) by SERGE MURET (SEMA GROUP SA) -->\r
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">\r
+ <xs:include schemaLocation="Simple_Type.xsd"/>\r
+ <xs:include schemaLocation="CommunPES.xsd"/>\r
+ <xs:complexType name="TEnTetePES">\r
+ <xs:sequence>\r
+ <xs:element name="DteStr" type="Base_Date"/>\r
+ <xs:element name="IdPost" type="Base_Texte7"/>\r
+ <xs:element name="LibellePoste" type="Base_Texte38" minOccurs="0"/>\r
+ <xs:element name="IdColl" type="Base_Num14" minOccurs="0"/>\r
+ <xs:element name="FinJur" type="Base_Num20" minOccurs="0"/>\r
+ <xs:element name="CodCol" type="Base_Alphanum3"/>\r
+ <xs:element name="CodBud" type="Base_Alphanum2" minOccurs="0"/>\r
+ <xs:element name="LibelleColBud" type="Base_Texte38" minOccurs="0"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">\r
+ <xs:include schemaLocation="Simple_Type.xsd"/>\r
+ <xs:complexType name="TEnveloppe">\r
+ <xs:sequence>\r
+ <xs:element name="Parametres" type="TParametres"/>\r
+ <xs:element name="Emetteur" type="TCarteVisite" minOccurs="0"/>\r
+ <xs:element name="Recepteur" type="TCarteVisite" minOccurs="0"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TParametres">\r
+ <xs:sequence>\r
+ <xs:element name="Version" type="Base_Num2"/>\r
+ <xs:element name="TypFic" type="Base_Texte32"/>\r
+ <xs:element name="NomFic" type="Base_Texte100"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TCarteVisite">\r
+ <xs:sequence>\r
+ <xs:element name="Sigle" type="Base_Texte32" minOccurs="0"/>\r
+ <xs:element name="Adresse" type="Base_Texte38" minOccurs="0"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">\r
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="Class_SchemasCommuns.xsd"/>\r
+ <xs:include schemaLocation="Class_FacturePESIndiv.xsd"/>\r
+ <xs:include schemaLocation="Class_Tiers.xsd"/>\r
+ <xs:include schemaLocation="Class_Nomenclature.xsd"/>\r
+ <xs:complexType name="TNomenclatureFacture">\r
+ <xs:sequence>\r
+ <xs:element name="NomenclatureProduit" type="TNomenclature" minOccurs="0">\r
+ <xs:annotation>\r
+ <xs:documentation>Nomenclature des rubriques de Facturation (nécessaire en cas d'état de facturation collectif)</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ <xs:element name="NomenclatureNature" type="TNomenclature" minOccurs="0">\r
+ <xs:annotation>\r
+ <xs:documentation>Nomenclature des Code Natures (catégorisation préalable à l'imputation budgétaire)</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ <xs:element name="NomenclatureBudget" type="TNomenclature" minOccurs="0">\r
+ <xs:annotation>\r
+ <xs:documentation>Nomenclature des Budgets</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TLigneRepartition">\r
+ <xs:sequence>\r
+ <xs:element name="Libelle" type="cm:Base_Texte100"/>\r
+ <xs:element name="Code" type="cm:Base_Texte24">\r
+ <xs:annotation>\r
+ <xs:documentation>code Nature</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ <xs:element name="CodeFonction" type="cm:Base_Texte24" minOccurs="0">\r
+ <xs:annotation>\r
+ <xs:documentation>dans le cas d'une imputation par fonction</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ <xs:element name="CodeBudget" type="cm:Base_Texte24" minOccurs="0">\r
+ <xs:annotation>\r
+ <xs:documentation>dans le cas d'une imputation multi-budget</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ <xs:element name="Mt" type="cm:Base_Montant"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TRepartitionParNature">\r
+ <xs:sequence>\r
+ <xs:element name="Repartition" type="TLigneRepartition" maxOccurs="unbounded"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TPESFacture">\r
+ <xs:sequence>\r
+ <xs:element name="IdVer" type="cm:Base_Dec2">\r
+ <xs:annotation>\r
+ <xs:documentation>Numéro de version (exemple 1.0)</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ <xs:element name="Annee" type="cm:Base_Annee"/>\r
+ <xs:element name="NumSequence" type="cm:Base_Num4" minOccurs="0">\r
+ <xs:annotation>\r
+ <xs:documentation>En cas d'émission périodique, indique le numéro de la séquence</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ <xs:element name="TypeFact" type="TTypeFacture" minOccurs="0">\r
+ <xs:annotation>\r
+ <xs:documentation>Type de Facturation</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ <xs:element name="Date" type="cm:Base_Date">\r
+ <xs:annotation>\r
+ <xs:documentation>Date d'émission de la facture ou de l'état de facturation</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ <xs:element name="Emetteur" type="TTiers">\r
+ <xs:annotation>\r
+ <xs:documentation>Informations sur l'emetteur. C'est un tiers de type 20</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ <xs:element name="Tiers" type="TTiers" minOccurs="0" maxOccurs="11"> <!-- il n'y a que 13 types de tiers -->\r
+ <xs:annotation><xs:documentation>Les autres tiers de l'etat de facturation qui sont communs a toutes les factures</xs:documentation></xs:annotation>\r
+ </xs:element>\r
+ <xs:element name="FactureIndiv" type="TFacturePESIndiv" maxOccurs="unbounded">\r
+ <xs:annotation>\r
+ <xs:documentation>Données individuelles de facturation (par défaut une seule facture individuelle) - (état de facturation collectif : plusieurs factures individuelles)</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ <xs:element name="Nomenclatures" type="TNomenclatureFacture">\r
+ <xs:annotation>\r
+ <xs:documentation>Nomenclatures utilisees (Paramétrage du progiciel)\r
+- en cas d'évolution des nomenclatures, les anciens codes doivent être précisés (de façon incrémentale)</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ <xs:element name="RepartitionParNature" type="TRepartitionParNature" minOccurs="0">\r
+ <xs:annotation>\r
+ <xs:documentation>Repartition des dépenses par Nature (et budget le cas échéant)</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">\r
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="Class_SchemasCommuns.xsd"/>\r
+ <xs:include schemaLocation="Class_RepartitionBudget.xsd"/>\r
+ <xs:include schemaLocation="Class_Tiers.xsd"/>\r
+ <xs:complexType name="TLigneFacture">\r
+ <xs:sequence>\r
+ <xs:choice>\r
+ <xs:element name="Date" type="cm:Base_Date" maxOccurs="unbounded">\r
+ <xs:annotation>\r
+ <xs:documentation>Dates de réalisation de la prestation</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ <xs:sequence>\r
+ <xs:element name="DateDebut" type="cm:Base_Date"/>\r
+ <xs:element name="DateFin" type="cm:Base_Date"/>\r
+ </xs:sequence>\r
+ </xs:choice>\r
+ <xs:element name="CodeProduit" type="cm:Base_Texte24">\r
+ <xs:annotation>\r
+ <xs:documentation>Code du produit</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ <xs:element name="CodeNature" type="cm:Base_Texte24" minOccurs="0">\r
+ <xs:annotation>\r
+ <xs:documentation>Code Nature</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ <xs:element name="CodeFonction" type="cm:Base_Texte24" minOccurs="0">\r
+ <xs:annotation>\r
+ <xs:documentation>Code Fonction</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ <xs:element name="Libelle" type="cm:Base_Texte100">\r
+ <xs:annotation>\r
+ <xs:documentation>Libellé détaillé du produit</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ <xs:choice>\r
+ <xs:sequence>\r
+ <xs:element name="Unite" type="cm:Base_Texte38" minOccurs="0">\r
+ <xs:annotation>\r
+ <xs:documentation>Nature de l'unité d'oeuvre</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ <xs:element name="Quantite" type="cm:Base_Montant" minOccurs="0">\r
+ <xs:annotation>\r
+ <xs:documentation>Quantité d'unité</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ <xs:element name="MtUnitaire" type="cm:Base_Montant" minOccurs="0">\r
+ <xs:annotation>\r
+ <xs:documentation>Prix de chaque Unité</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ </xs:sequence>\r
+ <xs:sequence>\r
+ <xs:element name="MtBase" type="cm:Base_Taux" minOccurs="0">\r
+ <xs:annotation>\r
+ <xs:documentation>Base de calcul du prix</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ </xs:sequence>\r
+ </xs:choice>\r
+ <xs:element name="Taux" type="cm:Base_Taux3" minOccurs="0"/>\r
+ <xs:element name="MtRemise" type="cm:Base_Montant" minOccurs="0">\r
+ <xs:annotation>\r
+ <xs:documentation>Montant de la Remise HT</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ <xs:element name="MtHT" type="cm:Base_Montant">\r
+ <xs:annotation>\r
+ <xs:documentation>Montant HT de la Ligne après remise</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ <xs:element name="TauxTVA" type="cm:Base_Taux">\r
+ <xs:annotation>\r
+ <xs:documentation>Taux de TVA appliqué à cette ligne</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ <xs:element name="MtTVA" type="cm:Base_Montant"/>\r
+ <xs:element name="MtTTC" type="cm:Base_Montant"/>\r
+ <xs:element name="Tiers" type="TTiers" minOccurs="0" maxOccurs="11"/>\r
+ <xs:element name="reference" type="TReferencePiece" minOccurs="0" maxOccurs="unbounded">\r
+ <xs:annotation><xs:documentation>D'éventuelles références à d'autres pièces</xs:documentation></xs:annotation>\r
+ </xs:element>\r
+ <xs:element name="Ordre" type="cm:Base_Num3">\r
+ <xs:annotation>\r
+ <xs:documentation>Numéro d'ordre de la ligne de prestation</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ <xs:element name="OrdreEdition" type="cm:Base_Num3" minOccurs="0">\r
+ <xs:annotation>\r
+ <xs:documentation>Numéro d'ordre dans l'affichage de la facture</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ <xs:element name="Commentaire" type="cm:Base_Texte100" minOccurs="0" maxOccurs="unbounded">\r
+ <xs:annotation>\r
+ <xs:documentation>Commentaire dans l'ordre d'affichage de la prestation</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TDetailTVA">\r
+ <xs:sequence>\r
+ <xs:element name="TauxTVA" type="cm:Base_Taux"/>\r
+ <xs:element name="MtBaseHT" type="cm:Base_Montant"/>\r
+ <xs:element name="MtTVA" type="cm:Base_Montant"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TTotalAPayer">\r
+ <xs:sequence>\r
+ <xs:element name="MtTotalHT" type="cm:Base_Montant">\r
+ <xs:annotation>\r
+ <xs:documentation>après remise</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ <xs:element name="MtTotalTVA" type="cm:Base_Montant"/>\r
+ <xs:element name="MtTotalTTC" type="cm:Base_Montant"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TFacturePESIndiv">\r
+ <xs:annotation>\r
+ <xs:documentation>Données individuelles de facturation</xs:documentation>\r
+ </xs:annotation>\r
+ <xs:sequence>\r
+ <xs:element name="TypeFact" type="TTypeFacture" minOccurs="0">
+ <xs:annotation><xs:documentation>Si non présent, c'est une FACTURE. Sinon : FACTURE,COMMANDE,AVOIR,DEVIS,PRO FORMA,CARTE ACHAT,AVIS ECHEANCE,QUITTANCE</xs:documentation></xs:annotation>
+ </xs:element>\r
+ <xs:element name="DateEmission" type="cm:Base_Date"/>\r
+ <xs:element name="DateReglement" type="cm:Base_Date" minOccurs="0">\r
+ <xs:annotation>\r
+ <xs:documentation>Date limite de paiement</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ <xs:element name="NumeroFacture" type="cm:Base_Texte50">\r
+ <xs:annotation>\r
+ <xs:documentation>Identifiant de la Facture</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ <xs:element name="NumeroContrat" type="cm:Base_Texte50" minOccurs="0">
+ <xs:annotation><xs:documentation>Numéro de contrat</xs:documentation></xs:annotation>
+ </xs:element>\r
+ <xs:element name="NumeroMarche" type="cm:Base_Texte50" minOccurs="0">\r
+ <xs:annotation><xs:documentation>Numéro de marché</xs:documentation></xs:annotation>\r
+ </xs:element>\r
+ <xs:element name="Reference" type="TReferencePiece" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation><xs:documentation>D'éventuelles références à d'autres pièces</xs:documentation></xs:annotation>
+ </xs:element>\r
+ <xs:element name="Debiteur" type="TTiers" minOccurs="0">\r
+ <xs:annotation>\r
+ <xs:documentation>Description du débiteur. C'est un tiers de type 10</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ <xs:element name="Tiers" type="TTiers" minOccurs="0" maxOccurs="11">
+ <xs:annotation><xs:documentation>Les autres tiers de la facture qui sont communs à toutes les lignes de la facture</xs:documentation></xs:annotation>
+ </xs:element>\r
+ <xs:element name="Objet" type="cm:Base_Texte160">\r
+ <xs:annotation>\r
+ <xs:documentation>Objet de la Facture</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ <xs:element name="LigneFacture" type="TLigneFacture" maxOccurs="unbounded"/>\r
+ <xs:element name="DetailTVA" type="TDetailTVA" minOccurs="0" maxOccurs="unbounded">\r
+ <xs:annotation>\r
+ <xs:documentation>Optionnel - en l'absence du détail TVA par taux, celui-ci sera calculé par la feuille de style à partir de l'analyse des lignes</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ <xs:element name="TotalAPayer" type="TTotalAPayer"/>\r
+ <xs:element name="ModalitesReglement" type="cm:Base_Texte250"/>\r
+ <xs:element name="MoyenPaiement" type="TMoyenPaiement" minOccurs="0"/>\r
+ <xs:element name="TexteGenerateur" type="cm:Base_Texte160" minOccurs="0">\r
+ <xs:annotation>\r
+ <xs:documentation>Champ obligatoire en matière de facture de recette associé à un titre</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ <xs:element name="ConditionsGen" type="cm:Base_Texte250">\r
+ <xs:annotation>\r
+ <xs:documentation>Conditions Générales de Facturation</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ <xs:element name="RepartitionBudget" type="TRepartitionBudget" minOccurs="0" maxOccurs="unbounded">\r
+ <xs:annotation>\r
+ <xs:documentation>nécessaire en cas de répartition entre plusieurs budgets sans rapport avec la nature de la prestation</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TTypeFacture">
+ <xs:attribute name="V" type="VTypeFacture"/>
+ </xs:complexType>\r
+ <xs:simpleType name="VTypeFacture">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="FACTURE"><xs:annotation><xs:documentation>une facture</xs:documentation></xs:annotation></xs:enumeration>\r
+ <xs:enumeration value="COMMANDE"><xs:annotation><xs:documentation>une commande</xs:documentation></xs:annotation></xs:enumeration>
+ <xs:enumeration value="AVOIR"><xs:annotation><xs:documentation>un avoir</xs:documentation></xs:annotation></xs:enumeration>\r
+ <xs:enumeration value="DEVIS"><xs:annotation><xs:documentation>un devis</xs:documentation></xs:annotation></xs:enumeration>\r
+ <xs:enumeration value="PRO FORMA"><xs:annotation><xs:documentation>une facture pro forma</xs:documentation></xs:annotation></xs:enumeration>\r
+ <xs:enumeration value="CARTE ACHAT"><xs:annotation><xs:documentation>un relevé de carte achat</xs:documentation></xs:annotation></xs:enumeration>\r
+ <xs:enumeration value="AVIS ECHEANCE"><xs:annotation><xs:documentation>un avis d'échéance</xs:documentation></xs:annotation></xs:enumeration>\r
+ <xs:enumeration value="QUITTANCE"><xs:annotation><xs:documentation>une quittance</xs:documentation></xs:annotation></xs:enumeration>\r
+ </xs:restriction>
+ </xs:simpleType>\r
+ <xs:complexType name="TReferencePiece">
+ <xs:annotation><xs:documentation>Une référence a une autre pièce, éventuellement a une ligne particulière d'une autre pièce</xs:documentation></xs:annotation>\r
+ <xs:sequence>\r
+ <xs:element name="TypePiece" type="TTypeFacture" minOccurs="0">
+ <xs:annotation><xs:documentation>Le type de pièce référencée. Si non présent, on référence une facture</xs:documentation></xs:annotation>
+ </xs:element>
+ <xs:element name="NumeroPiece" type="cm:Base_Texte50">\r
+ <xs:annotation>\r
+ <xs:documentation>Identifiant de la pièce référencée</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ <xs:element name="NumLigne" type="cm:Base_Num3" minOccurs="0">
+ <xs:annotation><xs:documentation>L'éventuel numero de ligne de la pièce. Pour les factures, c'est le numéro d'Ordre de la ligne</xs:documentation></xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>\r
+ <xs:complexType name="TMoyenPaiement">
+ <xs:attribute name="V">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"><xs:annotation><xs:documentation>Numéraire</xs:documentation></xs:annotation></xs:enumeration>
+ <xs:enumeration value="02"><xs:annotation><xs:documentation>Chèque</xs:documentation></xs:annotation></xs:enumeration>
+ <xs:enumeration value="03"><xs:annotation><xs:documentation>Virement</xs:documentation></xs:annotation></xs:enumeration>
+ <xs:enumeration value="04"><xs:annotation><xs:documentation>Virement appli externe</xs:documentation></xs:annotation></xs:enumeration>
+ <xs:enumeration value="05"><xs:annotation><xs:documentation>Virement gros montant</xs:documentation></xs:annotation></xs:enumeration>
+ <xs:enumeration value="06"><xs:annotation><xs:documentation>Virement à l'étranger</xs:documentation></xs:annotation></xs:enumeration>
+ <xs:enumeration value="07"><xs:annotation><xs:documentation>Opération budget rattaché</xs:documentation></xs:annotation></xs:enumeration>
+ <xs:enumeration value="08"><xs:annotation><xs:documentation>Opération d'ordre</xs:documentation></xs:annotation></xs:enumeration>
+ <xs:enumeration value="09"><xs:annotation><xs:documentation>Autres (ne pas utiliser si un autre est plus précis)</xs:documentation></xs:annotation></xs:enumeration>
+ <xs:enumeration value="10"><xs:annotation><xs:documentation>Prélèvement</xs:documentation></xs:annotation></xs:enumeration>
+ <xs:enumeration value="11"><xs:annotation><xs:documentation>Virement interne</xs:documentation></xs:annotation></xs:enumeration>
+ <xs:enumeration value="12"><xs:annotation><xs:documentation>Titre interbancaire de paiement (TIP)</xs:documentation></xs:annotation></xs:enumeration>
+ <xs:enumeration value="13"><xs:annotation><xs:documentation>Percepteur</xs:documentation></xs:annotation></xs:enumeration>
+ <xs:enumeration value="14"><xs:annotation><xs:documentation>Prélèvement par carte bancaire</xs:documentation></xs:annotation></xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">\r
+ <xs:include schemaLocation="Simple_Type.xsd"/>\r
+ <xs:include schemaLocation="CommunPES.xsd"/>\r
+ <xs:complexType name="TInfoTiers">\r
+ <xs:sequence>\r
+ <xs:element name="IdTiers" type="Base_Texte15" minOccurs="0"/>\r
+ <xs:element name="DteMalade" type="Base_Date" minOccurs="0"/>\r
+ <xs:element name="TypTiers" type="TTypTiers" minOccurs="0"/>\r
+ <xs:element name="NatIdTiers" type="TNatIdTiers" minOccurs="0"/>\r
+ <xs:element name="DteIdTiers" type="Base_Date" minOccurs="0"/>\r
+ <xs:element name="RefTiers" type="Base_Texte30" minOccurs="0"/>\r
+ <xs:element name="CatTiers" type="TCatTiers"/>\r
+ <xs:element name="NatJur" type="TNatJur"/>\r
+ <xs:element name="Civilite" type="Base_Texte10" minOccurs="0"/>\r
+ <xs:element name="Nom" type="Base_Texte38"/>\r
+ <xs:element name="ComplNom" type="Base_Texte38" minOccurs="0"/>\r
+ <xs:element name="Prenom" type="Base_Texte38" minOccurs="0"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">\r
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="Class_SchemasCommuns.xsd"/>\r
+ <xs:complexType name="TLigneNomenclature">\r
+ <xs:sequence>\r
+ <xs:element name="Libelle" type="cm:Base_Texte100"/>\r
+ <xs:element name="Code" type="cm:Base_Texte24"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TNomenclature">\r
+ <xs:sequence>\r
+ <xs:element name="Description" type="cm:Base_Texte100">\r
+ <xs:annotation>\r
+ <xs:documentation>Description du rôle de la nomenclature ou de ses spécificités</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ <xs:element name="Correspondance" type="TLigneNomenclature" maxOccurs="unbounded"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#">\r
+ <xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="Class_Signature.xsd"/>\r
+ <xs:import namespace="http://www.w3.org/2001/04/xmlenc#" schemaLocation="Class_Chiffrement.xsd"/>\r
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="Class_SchemasCommuns.xsd"/>\r
+ <xs:include schemaLocation="Class_FacturePES.xsd"/>\r
+ <xs:complexType name="TPES_PJ_HELIADES">\r
+ <xs:sequence>\r
+ <xs:annotation>\r
+ <xs:documentation>--- Signature Optionnelle de chaque PJ par l'ordonnateur</xs:documentation>\r
+ </xs:annotation>\r
+ <xs:element name="Contenu" minOccurs="0">\r
+ <xs:annotation>\r
+ <xs:documentation>Stockage du fichier PJ</xs:documentation>\r
+ </xs:annotation>\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:choice>\r
+ <xs:element name="Fichier">\r
+ <xs:annotation>\r
+ <xs:documentation>Fichier d'origine (binaire ou XML) compressé avec GZip puis converti en Base 64</xs:documentation>\r
+ </xs:annotation>\r
+ <xs:complexType>\r
+ <xs:simpleContent>\r
+ <xs:extension base="xs:base64Binary">\r
+ <xs:attribute name="MIMEType" type="xs:token" use="required"/>\r
+ </xs:extension>\r
+ </xs:simpleContent>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:group ref="xenc:PESEncryptedDataGroup"/>\r
+ <xs:element name="PESFacture" type="TPESFacture" minOccurs="0"/>\r
+ </xs:choice>\r
+ <xs:choice minOccurs="0">\r
+ <xs:element name="SignatureXML" maxOccurs="unbounded">\r
+ <xs:annotation>\r
+ <xs:documentation>Fichier signature associé au fichier d'origine (XML-DSIG ou XAdES)</xs:documentation>\r
+ </xs:annotation>\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="Signature" type="ds:SignatureType"/>\r
+ </xs:sequence>\r
+ <xs:attribute name="MIMEType" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:token">\r
+ <xs:enumeration value="text/xml"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="SignatureBinaire" maxOccurs="unbounded">\r
+ <xs:annotation>\r
+ <xs:documentation>Fichier signature PKCS#7 associé au fichier d'origine converti en Base 64</xs:documentation>\r
+ </xs:annotation>\r
+ <xs:complexType>\r
+ <xs:simpleContent>\r
+ <xs:extension base="xs:base64Binary">\r
+ <xs:attribute name="MIMEType" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:token"/>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:extension>\r
+ </xs:simpleContent>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ </xs:choice>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="IdUnique" type="cm:Base_Alphanum50">\r
+ <xs:annotation>\r
+ <xs:documentation>Identifiant unique du document pour la collectivite</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ <xs:element name="NomPJ" type="cm:Base_Texte100">\r
+ <xs:annotation>\r
+ <xs:documentation>Nom du fichier </xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TPES_PJs_HELIADES">\r
+ <xs:sequence>\r
+ <xs:element name="PJ" minOccurs="0" maxOccurs="unbounded">\r
+ <xs:complexType>\r
+ <xs:complexContent>\r
+ <xs:extension base="TPES_PJ_HELIADES"/>\r
+ </xs:complexContent>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="Class_Signature.xsd"/>
+ <xs:import namespace="http://www.w3.org/2001/04/xmlenc#" schemaLocation="Class_Chiffrement.xsd"/>
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="Class_FacturePES.xsd"/>
+ <xs:complexType name="TPES_PJ">
+ <xs:sequence>
+ <xs:annotation>
+ <xs:documentation>--- Signature Optionnelle de chaque PJ par l'ordonnateur</xs:documentation>
+ </xs:annotation>
+ <xs:element name="Contenu" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Stockage du fichier PJ</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:choice>
+ <xs:element name="Fichier">
+ <xs:annotation>
+ <xs:documentation>Fichier d'origine (binaire ou XML) compressé avec GZip puis converti en Base 64</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:base64Binary">
+ <xs:attribute name="MIMEType" type="xs:token" use="required"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:group ref="xenc:PESEncryptedDataGroup"/>
+ <xs:element name="PESFacture" type="TPESFacture" minOccurs="0"/>
+ </xs:choice>
+ <xs:choice minOccurs="0">
+ <xs:element name="SignatureXML" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>Fichier signature associé au fichier d'origine (XML-DSIG ou XAdES)</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Signature" type="ds:SignatureType"/>
+ </xs:sequence>
+ <!--xs:attribute name="MIMEType" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="text/xml"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute-->
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="SignatureBinaire" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>Fichier signature PKCS#7 associé au fichier d'origine converti en Base 64</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:base64Binary">
+ <xs:attribute name="MIMEType" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:token"/>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ </xs:choice>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="IdUnique" type="cm:Base_Alphanum50">
+ <xs:annotation>
+ <xs:documentation>Identifiant unique du document pour la collectivite</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ServeurId" type="cm:Base_Alphanum20" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Identifiant du serveur de stockage du document (en lien avec le paramétrage Helios)</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="NomPJ" type="cm:Base_Texte100">
+ <xs:annotation>
+ <xs:documentation>Nom du fichier </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="TypePJ" type="cm:Base_Alphanum3" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Type de la pièce (document budgétaire, Facture, Etat de Paye,...) </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Description" type="cm:Base_Texte250">
+ <xs:annotation>
+ <xs:documentation>Description de la pièce saisie</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="RefCompta" type="TPES_RefCompta" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>Référence comptable de la pièce si celle ci n'est pas dématérialisée en même temps que l'objet comptable PES correspondant </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TPES_PJs">
+ <xs:sequence>
+ <xs:element name="EnTetePES_PJ">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="IdVer" type="cm:Base_Num2"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="PJ" minOccurs="0" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="TPES_PJ"/>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TPES_RefCompta">
+ <xs:sequence>
+ <xs:element name="Domaine" type="cm:TDomaine"/>
+ <xs:element name="Exercice" type="cm:Base_Annee"/>
+ <xs:element name="TypeObjet" type="cm:Base_Num2"/>
+ <xs:element name="Identifiant" type="cm:Base_Alphanum20" minOccurs="0"/>
+ <xs:element name="ComplementIdentifiant" type="cm:Base_Alphanum20" minOccurs="0"/>
+ <xs:element name="CodProd" type="cm:Base_Alphanum2" minOccurs="0"/>
+ <xs:element name="IdTiers" type="cm:Base_Texte15" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">\r
+ <xs:include schemaLocation="Simple_Type.xsd"/>\r
+ <xs:complexType name="TPJReference">\r
+ <xs:sequence>\r
+ <xs:element name="Support">\r
+ <xs:complexType>\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="01"/>\r
+ <xs:enumeration value="02"/>\r
+ <xs:enumeration value="03"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="IdUnique" type="Base_Alphanum50"/>\r
+ <xs:element name="NomPJ" type="Base_Texte100" minOccurs="0"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#">\r
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="Class_SchemasCommuns.xsd"/>\r
+ <xs:complexType name="TPES_PJ_Erreur">\r
+ <xs:sequence>\r
+ <xs:element name="IdUnique" type="cm:Base_Alphanum50">\r
+ <xs:annotation>\r
+ <xs:documentation>Identifiant unique du document pour la collectivite</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ <xs:element name="NomPJ" type="cm:Base_Texte100">\r
+ <xs:annotation>\r
+ <xs:documentation>Nom du fichier </xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ <xs:element name="CodeErreur" type="cm:Base_Num2"/>\r
+ <xs:element name="LibelleErreur" type="cm:Base_Texte50"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TPES_PJs_Erreur">\r
+ <xs:sequence>\r
+ <xs:element name="EnTetePES_PJ">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="IdVer" type="cm:Base_Num2"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="PJ_Erreur" minOccurs="0" maxOccurs="unbounded">\r
+ <xs:complexType>\r
+ <xs:complexContent>\r
+ <xs:extension base="TPES_PJ_Erreur"/>\r
+ </xs:complexContent>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun">\r
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="Class_SchemasCommuns.xsd"/>\r
+ <xs:complexType name="TRepartitionBudget">\r
+ <xs:sequence>\r
+ <xs:element name="CodeBudget" type="cm:Base_Texte24">\r
+ <xs:annotation>\r
+ <xs:documentation>Code du budget de comptabilisation</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ <xs:choice>\r
+ <xs:element name="Taux" type="cm:Base_Taux">\r
+ <xs:annotation>\r
+ <xs:documentation>(si répartitionau prorata)</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ <xs:element name="Mt" type="cm:Base_Montant">\r
+ <xs:annotation>\r
+ <xs:documentation>(si répartition forfaitaire)</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ </xs:choice>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="unqualified">\r
+ <xs:include schemaLocation="Simple_Type.xsd"/>\r
+ <xs:include schemaLocation="CommunPES.xsd"/>\r
+ <xs:include schemaLocation="Class_Enveloppe.xsd"/>\r
+ <xs:include schemaLocation="Class_EntetePES.xsd"/>\r
+ <xs:include schemaLocation="Class_Adresse.xsd"/>\r
+ <xs:include schemaLocation="Class_Bancaire.xsd"/>\r
+ <xs:include schemaLocation="Class_PJReference.xsd"/>\r
+ <xs:include schemaLocation="Class_InfoTiers.xsd"/>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://www.w3.org/2000/09/xmldsig#" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xad="http://uri.etsi.org/01903/v1.1.1#" elementFormDefault="qualified" attributeFormDefault="unqualified">
+ <xs:import namespace="http://uri.etsi.org/01903/v1.1.1#" schemaLocation="../XADES/1.0/XAdES-core-schema.xsd"/>
+ <xs:include schemaLocation="../XMLDSIG/1.0/xmldsig-core-schema.xsd"/>
+ <xs:complexType name="PESSignatureType">
+ <xs:complexContent>
+ <xs:restriction base="ds:SignatureType">
+ <xs:sequence>
+ <xs:element ref="ds:SignedInfo"/>
+ <xs:element ref="ds:SignatureValue"/>
+ <xs:element ref="ds:KeyInfo" minOccurs="0"/>
+ <xs:element ref="ds:Object" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:group name="PESSignatureGroup">
+ <xs:sequence>
+ <xs:element name="Signature" type="ds:PESSignatureType"/>
+ </xs:sequence>
+ </xs:group>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">\r
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="Class_SchemasCommuns.xsd"/>\r
+ <xs:complexType name="TInfoTiersFact">\r
+ <xs:complexContent>\r
+ <xs:extension base="cm:TInfoTiers"/>\r
+ </xs:complexContent>\r
+ </xs:complexType>\r
+ <xs:complexType name="TTiers">\r
+ <xs:sequence>\r
+ <xs:element name="TypeTiersFacture" type="TTypeTiersFacture" minOccurs="0" maxOccurs="1">
+ <xs:annotation><xs:documentation>\r
+ Cette information n'est pas requise dans la facture pour l'emetteur et le debiteur.\r
+ C'est le seul cas où elle n'est pas requise.\r
+ Les valeur possibles sont :\r
+ 10 - CLIENT\r
+ 11 - ACHETEUR\r
+ 12 - DESTINATAIRE\r
+ 13 - FACTURE\r
+ 14 - GESTIONNAIRE TVA\r
+ 15 - COMPTABLE (Client)\r
+ 20 - EMETTEUR\r
+ 21 - VENDEUR\r
+ 22 - EXPEDITEUR\r
+ 23 - FABRICANT\r
+ 24 - FOURNISSEUR\r
+ 25 - DESTINATAIRE PAIEMENT\r
+ 26 - COMPTABLE (Emetteur)\r
+ </xs:documentation></xs:annotation>
+ </xs:element>\r
+ <xs:element name="InfoTiers" type="TInfoTiersFact"/>\r
+ <xs:element name="Adresse" type="cm:TAdresse" minOccurs="0"/>\r
+ <xs:element name="CpteBancaire" type="cm:TBancaire" minOccurs="0"/>\r
+ <xs:element name="NumTVA" type="cm:Base_Texte24" minOccurs="0"/>\r
+ <xs:element name="Service" type="cm:Base_Texte24" minOccurs="0"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TTypeTiersFacture">\r
+ <xs:attribute name="V" type="VTypeTiersFacture"></xs:attribute>
+ </xs:complexType>\r
+ <xs:simpleType name="VTypeTiersFacture">\r
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="10"><xs:annotation><xs:documentation>CLIENT</xs:documentation></xs:annotation></xs:enumeration>
+ <xs:enumeration value="11"><xs:annotation><xs:documentation>ACHETEUR</xs:documentation></xs:annotation></xs:enumeration>\r
+ <xs:enumeration value="12"><xs:annotation><xs:documentation>DESTINATAIRE</xs:documentation></xs:annotation></xs:enumeration>\r
+ <xs:enumeration value="13"><xs:annotation><xs:documentation>FACTURE</xs:documentation></xs:annotation></xs:enumeration>\r
+ <xs:enumeration value="14"><xs:annotation><xs:documentation>GESTIONNAIRE TVA</xs:documentation></xs:annotation></xs:enumeration>\r
+ <xs:enumeration value="15"><xs:annotation><xs:documentation>COMPTABLE (Client)</xs:documentation></xs:annotation></xs:enumeration>\r
+ <xs:enumeration value="20"><xs:annotation><xs:documentation>EMETTEUR</xs:documentation></xs:annotation></xs:enumeration>\r
+ <xs:enumeration value="21"><xs:annotation><xs:documentation>VENDEUR</xs:documentation></xs:annotation></xs:enumeration>\r
+ <xs:enumeration value="22"><xs:annotation><xs:documentation>EXPEDITEUR</xs:documentation></xs:annotation></xs:enumeration>\r
+ <xs:enumeration value="23"><xs:annotation><xs:documentation>FABRICANT</xs:documentation></xs:annotation></xs:enumeration>\r
+ <xs:enumeration value="24"><xs:annotation><xs:documentation>FOURNISSEUR</xs:documentation></xs:annotation></xs:enumeration>\r
+ <xs:enumeration value="25"><xs:annotation><xs:documentation>DESTINATAIRE PAIEMENT</xs:documentation></xs:annotation></xs:enumeration>\r
+ <xs:enumeration value="26"><xs:annotation><xs:documentation>COMPTABLE (Emetteur)</xs:documentation></xs:annotation></xs:enumeration>\r
+ </xs:restriction>\r
+ </xs:simpleType>
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">\r
+ <!-- Regles de codifications communes au PES -->\r
+ <xs:include schemaLocation="Simple_Type.xsd"/>\r
+ <xs:complexType name="TDomaine">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="01"/>\r
+ <xs:enumeration value="02"/>\r
+ <xs:enumeration value="03"/>\r
+ <xs:enumeration value="04"/>\r
+ <xs:enumeration value="05"/>\r
+ <xs:enumeration value="06"/>\r
+ <xs:enumeration value="07"/>\r
+ <xs:enumeration value="08"/>\r
+ <xs:enumeration value="09"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+ <xs:complexType name="TNatIdTiers">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="01"/>\r
+ <xs:enumeration value="02"/>\r
+ <xs:enumeration value="03"/>\r
+ <xs:enumeration value="04"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+ <xs:complexType name="TTypTiers">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="01"/>\r
+ <xs:enumeration value="02"/>\r
+ <xs:enumeration value="03"/>\r
+ <xs:enumeration value="04"/>\r
+ <xs:enumeration value="05"/>\r
+ <xs:enumeration value="06"/>\r
+ <xs:enumeration value="07"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+ <xs:complexType name="TCatTiers">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="01"/>\r
+ <xs:enumeration value="20"/>\r
+ <xs:enumeration value="21"/>\r
+ <xs:enumeration value="22"/>\r
+ <xs:enumeration value="23"/>\r
+ <xs:enumeration value="24"/>\r
+ <xs:enumeration value="25"/>\r
+ <xs:enumeration value="26"/>\r
+ <xs:enumeration value="27"/>\r
+ <xs:enumeration value="28"/>\r
+ <xs:enumeration value="29"/>\r
+ <xs:enumeration value="50"/>\r
+ <xs:enumeration value="60"/>\r
+ <xs:enumeration value="61"/>\r
+ <xs:enumeration value="62"/>\r
+ <xs:enumeration value="63"/>\r
+ <xs:enumeration value="64"/>\r
+ <xs:enumeration value="65"/>\r
+ <xs:enumeration value="70"/>\r
+ <xs:enumeration value="71"/>\r
+ <xs:enumeration value="72"/>\r
+ <xs:enumeration value="73"/>\r
+ <xs:enumeration value="74"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+ <xs:complexType name="TNatJur">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="00"/>\r
+ <xs:enumeration value="01"/>\r
+ <xs:enumeration value="02"/>\r
+ <xs:enumeration value="03"/>\r
+ <xs:enumeration value="04"/>\r
+ <xs:enumeration value="05"/>\r
+ <xs:enumeration value="06"/>\r
+ <xs:enumeration value="07"/>\r
+ <xs:enumeration value="08"/>\r
+ <xs:enumeration value="09"/>\r
+ <xs:enumeration value="10"/>\r
+ <xs:enumeration value="11"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<!-- 05/05/2006 EPA HLS00036233 -->\r
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">\r
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>\r
+ <xs:include schemaLocation="CommunBudget.xsd"/>\r
+ <xs:complexType name="TBlocDocBudget">\r
+ <xs:sequence>\r
+ <xs:element name="Affect" type="cm:Base_Texte10" minOccurs="0"/>\r
+ <xs:element name="NatDec" type="TNatDec"/>\r
+ <xs:element name="RepCredit" type="TRepCredit"/>\r
+ <xs:element name="NumDec" type="cm:Base_Alphanum10" minOccurs="0"/>\r
+ <xs:element name="Exer" type="cm:Base_Annee"/>\r
+ <xs:element name="CodMvt" type="TCodMvt"/>\r
+ <xs:element name="DteDec" type="cm:Base_Date" minOccurs="0"/>\r
+ <xs:element name="DteDecExec" type="cm:Base_Date" minOccurs="0"/>\r
+ <xs:element name="PJRef" type="cm:TPJReference" minOccurs="0" maxOccurs="unbounded"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun">\r
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>\r
+ <xs:include schemaLocation="CommunBudget.xsd"/>\r
+ <xs:complexType name="TBlocDocBudget">\r
+ <xs:sequence>\r
+ <xs:element name="Affect" type="cm:Base_Texte10" minOccurs="0"/>\r
+ <xs:element name="NatDec" type="TNatDec"/>\r
+ <xs:element name="NumDec" type="cm:Base_Alphanum10" minOccurs="0"/>\r
+ <xs:element name="Exer" type="cm:Base_Annee"/>\r
+ <xs:element name="DteDec" type="cm:Base_Date" minOccurs="0"/>\r
+ <xs:element name="DteDecEx" type="cm:Base_Date" minOccurs="0"/>\r
+ <xs:element name="DteRcpt" type="cm:Base_Date"/>\r
+ <xs:element name="DteInteg" type="cm:Base_Date"/>\r
+ <xs:element name="DtePec" type="cm:Base_Date"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun">\r
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>\r
+ <xs:include schemaLocation="CommunBudget.xsd"/>\r
+ <xs:complexType name="TLigneBudget">\r
+ <xs:sequence>\r
+ <xs:element name="Nature" type="cm:Base_Texte12" minOccurs="0"/>\r
+ <xs:element name="LibCpte" type="cm:Base_Texte100" minOccurs="0"/>\r
+ <xs:element name="Fonction" type="cm:Base_Texte10" minOccurs="0"/>\r
+ <xs:element name="Operation" type="cm:Base_Num10" minOccurs="0"/>\r
+ <xs:element name="ContNat" type="cm:Base_Texte12" minOccurs="0"/>\r
+ <xs:element name="ArtSpe" type="cm:Base_Booleen" minOccurs="0"/>\r
+ <xs:element name="ContFon" type="cm:Base_Num10" minOccurs="0"/>\r
+ <xs:element name="ContOp" type="cm:Base_Num10" minOccurs="0"/>\r
+ <xs:element name="CodRD" type="cm:Base_Booleen"/>\r
+ <xs:element name="MtPrev" type="cm:Base_Montant"/>\r
+ <xs:element name="MtReal" type="cm:Base_Montant" minOccurs="0"/>\r
+ <xs:element name="OpBudg" type="cm:Base_Booleen"/>\r
+ <xs:element name="TypOpBudg" type="TTypOpBudg" minOccurs="0"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun">\r
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>\r
+ <xs:include schemaLocation="CommunBudget.xsd"/>\r
+ <xs:complexType name="TLigneBudget">\r
+ <xs:sequence>\r
+ <xs:element name="Nature" type="cm:Base_Texte12" minOccurs="0"/>\r
+ <xs:element name="Fonction" type="cm:Base_Texte10" minOccurs="0"/>\r
+ <xs:element name="Operation" type="cm:Base_Num10" minOccurs="0"/>\r
+ <xs:element name="ContNat" type="cm:Base_Texte12" minOccurs="0"/>\r
+ <xs:element name="ArtSpe" type="cm:Base_Booleen" minOccurs="0"/>\r
+ <xs:element name="ContFon" type="cm:Base_Num10" minOccurs="0"/>\r
+ <xs:element name="ContOp" type="cm:Base_Num10" minOccurs="0"/>\r
+ <xs:element name="CodRD" type="cm:Base_Booleen"/>\r
+ <xs:element name="MtPrev" type="cm:Base_Montant"/>\r
+ <xs:element name="MtReal" type="cm:Base_Montant"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">\r
+ <!-- Regles de codifications communes au PES Marche-->\r
+ <xs:complexType name="TNatDec">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="01"/>\r
+ <xs:enumeration value="02"/>\r
+ <xs:enumeration value="03"/>\r
+ <xs:enumeration value="04"/>\r
+ <xs:enumeration value="05"/>\r
+ <xs:enumeration value="06"/>\r
+ <xs:enumeration value="07"/>\r
+ <xs:enumeration value="08"/>\r
+ <xs:enumeration value="09"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+ <xs:complexType name="TRepCredit">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="01"/>\r
+ <xs:enumeration value="02"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+ <xs:complexType name="TCodMvt">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="1"/>\r
+ <xs:enumeration value="2"/>\r
+ <xs:enumeration value="3"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+ <xs:complexType name="TTypOpBudg">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="1"/>\r
+ <xs:enumeration value="2"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/budget/r0/aller" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns="http://www.minefi.gouv.fr/cp/helios/pes_v2/budget/r0/aller" elementFormDefault="unqualified">\r
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>\r
+ <xs:include schemaLocation="CommunBudget.xsd"/>\r
+ <xs:include schemaLocation="Class_BudgetAller.xsd"/>\r
+ <xs:include schemaLocation="Class_LigneBudgetAller.xsd"/>\r
+ <xs:complexType name="TPES_BudgetAller">\r
+ <xs:sequence>\r
+ <xs:element name="EnTeteBudget">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="IdVer" type="cm:Base_Num2"/>\r
+ <xs:element name="InfoDematerialisee" type="cm:Base_Booleen" minOccurs="0"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="DocumentBudgetaire" type="TDocumentBudgetaire" maxOccurs="unbounded"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TDocumentBudgetaire">\r
+ <xs:sequence>\r
+ <xs:element name="BlocDocBudget" type="TBlocDocBudget"/>\r
+ <xs:element name="LigneBudget" type="TLigneBudget" maxOccurs="unbounded"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/budget/r0/retour" xmlns="http://www.minefi.gouv.fr/cp/helios/pes_v2/budget/r0/retour" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="unqualified">\r
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>\r
+ <xs:include schemaLocation="CommunBudget.xsd"/>\r
+ <xs:include schemaLocation="Class_LigneBudgetRetour.xsd"/>\r
+ <xs:include schemaLocation="Class_BudgetRetour.xsd"/>\r
+ <xs:complexType name="TPES_BudgetRetour">\r
+ <xs:sequence>\r
+ <xs:element name="EnTeteBudget">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="IdVer" type="cm:Base_Num2"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="DocumentBudgetaire" type="TDocumentBudgetaire" maxOccurs="unbounded"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TDocumentBudgetaire">\r
+ <xs:sequence>\r
+ <xs:element name="BlocDocBudget" type="TBlocDocBudget"/>\r
+ <xs:element name="LigneBudget" type="TLigneBudget" maxOccurs="unbounded"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">\r
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>\r
+ <xs:include schemaLocation="CommunComptabilite.xsd"/>\r
+ <xs:complexType name="TBlocCompte">\r
+ <xs:sequence>\r
+ <xs:element name="IdentifiantCompte" type="TIdentifiantCompte">\r
+ <xs:annotation>\r
+ <xs:documentation>Identifiant compte - Bloc obligatoire</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ <xs:element name="NatFonCpte" type="TNatFonCpte" minOccurs="0">\r
+ <xs:annotation>\r
+ <xs:documentation>Identifiant compte - Bloc obligatoire</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ <xs:element name="BalanceComptable" type="TBalanceComptable" minOccurs="0">\r
+ <xs:annotation>\r
+ <xs:documentation>Balance comptable - Bloc Facultatif</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TIdentifiantCompte">\r
+ <xs:sequence>\r
+ <xs:element name="NumCpte" type="cm:Base_Texte12"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TBalanceComptable">\r
+ <xs:sequence>\r
+ <xs:element name="SldDef" type="cm:Base_Booleen" minOccurs="0"/>\r
+ <xs:element name="MtBeDeb" type="cm:Base_Montant"/>\r
+ <xs:element name="MtBeCred" type="cm:Base_Montant"/>\r
+ <xs:element name="MtOpDeb" type="cm:Base_Montant"/>\r
+ <xs:element name="MtOpCred" type="cm:Base_Montant"/>\r
+ <xs:element name="MtAnnTitre" type="cm:Base_Montant" minOccurs="0"/>\r
+ <xs:element name="MtAnnMdt" type="cm:Base_Montant" minOccurs="0"/>\r
+ <xs:element name="MtBudgPrim" type="cm:Base_Montant" minOccurs="0"/>\r
+ <xs:element name="MtBudgSupp" type="cm:Base_Montant" minOccurs="0"/>\r
+ <xs:element name="MtDecMod" type="cm:Base_Montant" minOccurs="0"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun">\r
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>\r
+ <xs:include schemaLocation="CommunComptabilite.xsd"/>\r
+ <xs:complexType name="TInformationEcriture">\r
+ <xs:sequence>\r
+ <xs:element name="DteEcrit" type="cm:Base_Date"/>\r
+ <xs:element name="NumEcrit" type="cm:Base_Alphanum6"/>\r
+ <xs:element name="LibEcrit" type="cm:Base_Texte100" minOccurs="0"/>\r
+ <xs:element name="CodEcrit" type="TCodEcrit"/>\r
+ <xs:element name="Sens" type="cm:Base_Booleen"/>\r
+ <xs:element name="Montant" type="cm:Base_Montant"/>\r
+ <xs:element name="Imputation" type="cm:Base_Texte12" minOccurs="0"/>\r
+ <xs:element name="RefTiers" type="cm:Base_Texte30" minOccurs="0"/>\r
+ <xs:element name="Nom" type="cm:Base_Texte38" minOccurs="0"/>\r
+ <xs:element name="EtPce" type="TEtPce" minOccurs="0"/>\r
+ <xs:element name="DteEtPce" type="cm:Base_Date" minOccurs="0"/>\r
+ <xs:element name="CodAct" type="cm:Base_Num3" minOccurs="0"/>\r
+ <xs:element name="ExerPce" type="cm:Base_Annee" minOccurs="0"/>\r
+ <xs:element name="IdPce" type="cm:Base_Num8" minOccurs="0"/>\r
+ <xs:element name="IdLignePce" type="cm:Base_Num6" minOccurs="0"/>\r
+ <xs:element name="CpteTiers" type="cm:Base_Num12" minOccurs="0"/>\r
+ <xs:element name="CodCollP503" type="cm:Base_Alphanum3" minOccurs="0"/>\r
+ <xs:element name="BudCollP503" type="cm:Base_Alphanum2" minOccurs="0"/>\r
+ <xs:element name="Type" type="TType" minOccurs="0"/>\r
+ <xs:element name="NatPceOrig" type="TNatPceOrig" minOccurs="0"/>\r
+ <xs:element name="ExerPceOrig" type="cm:Base_Annee" minOccurs="0"/>\r
+ <xs:element name="IdPceOrig" type="cm:Base_Num13" minOccurs="0"/>\r
+ <xs:element name="IdLignePceOrig" type="cm:Base_Num6" minOccurs="0"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- edited with XML Spy v4.4 (http://www.xmlspy.com) by Michael Conroy (SEMA) -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:include schemaLocation="../../Simple_Type_1.1.xsd"/>
+ <xs:complexType name="TEnveloppe">
+ <xs:sequence>
+ <xs:element name="Parametres" type="TParametres"/>
+ <xs:element name="Emetteur" type="TCarteVisite" minOccurs="0"/>
+ <xs:element name="Recepteur" type="TCarteVisite" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TParametres">
+ <xs:sequence>
+ <xs:element name="Version" type="Base_Num2"/>
+ <xs:element name="TypFic" type="Base_Texte32"/>
+ <xs:element name="NomFic" type="Base_Texte100"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TCarteVisite">
+ <xs:sequence>
+ <xs:element name="Sigle" type="Base_Texte32" minOccurs="0"/>
+ <xs:element name="Adresse" type="Base_Texte38" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">\r
+ <!-- Regles de codifications communes au PES Comptabillite-->\r
+ <xs:complexType name="TNatInf">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="0"/>\r
+ <xs:enumeration value="1"/>\r
+ <xs:enumeration value="2"/>\r
+ <xs:enumeration value="3"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+ <xs:complexType name="TType">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="1"/>\r
+ <xs:enumeration value="2"/>\r
+ <xs:enumeration value="3"/>\r
+ <!--xs:enumeration value="4"/-->\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+ <xs:complexType name="TNatFonCpte">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="01"/>\r
+ <xs:enumeration value="02"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+ <xs:complexType name="TNatPceOrig">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="01"/>\r
+ <xs:enumeration value="02"/>\r
+ <xs:enumeration value="03"/>\r
+ <xs:enumeration value="04"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+ <xs:complexType name="TEtPce">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="00"/>\r
+ <xs:enumeration value="01"/>\r
+ <xs:enumeration value="02"/>\r
+ <xs:enumeration value="03"/>\r
+ <xs:enumeration value="04"/>\r
+ <xs:enumeration value="05"/>\r
+ <xs:enumeration value="06"/>\r
+ <xs:enumeration value="07"/>\r
+ <xs:enumeration value="08"/>\r
+ <xs:enumeration value="09"/>\r
+ <xs:enumeration value="10"/>\r
+ <xs:enumeration value="11"/>\r
+ <xs:enumeration value="12"/>\r
+ <xs:enumeration value="13"/>\r
+ <xs:enumeration value="14"/>\r
+ <!--xs:enumeration value="90"/-->\r
+ <xs:enumeration value="15"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+ <xs:complexType name="TCodEcrit">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="00"/>\r
+ <xs:enumeration value="10"/>\r
+ <xs:enumeration value="11"/>\r
+ <xs:enumeration value="12"/>\r
+ <xs:enumeration value="13"/>\r
+ <xs:enumeration value="14"/>\r
+ <xs:enumeration value="16"/>\r
+ <xs:enumeration value="17"/>\r
+ <xs:enumeration value="18"/>\r
+ <xs:enumeration value="19"/>\r
+ <xs:enumeration value="20"/>\r
+ <xs:enumeration value="30"/>\r
+ <xs:enumeration value="40"/>\r
+ <xs:enumeration value="50"/>\r
+ <xs:enumeration value="51"/>\r
+ <xs:enumeration value="60"/>\r
+ <xs:enumeration value="70"/>\r
+ <xs:enumeration value="71"/>\r
+ <xs:enumeration value="72"/>\r
+ <xs:enumeration value="73"/>\r
+ <xs:enumeration value="74"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/comptabilite/r0/retour" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.minefi.gouv.fr/cp/helios/pes_v2/comptabilite/r0/retour" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" elementFormDefault="unqualified">\r
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>\r
+ <xs:include schemaLocation="CommunComptabilite.xsd"/>\r
+ <xs:include schemaLocation="Class_Compte.xsd"/>\r
+ <xs:include schemaLocation="Class_Ecriture.xsd"/>\r
+ <xs:complexType name="TPES_Comptabilite">\r
+ <xs:sequence>\r
+ <xs:element name="EnTeteComptabilite">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="IdVer" type="cm:Base_Num2"/>\r
+ <xs:element name="Exer" type="cm:Base_Annee"/>\r
+ <xs:element name="NatInf" type="TNatInf"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="InformationCompte" type="TInformationCompte" maxOccurs="unbounded"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TInformationCompte">\r
+ <xs:sequence>\r
+ <xs:element name="BlocCompte" type="TBlocCompte"/>\r
+ <xs:element name="InformationEcriture" type="TInformationEcriture" maxOccurs="unbounded"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">\r
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>\r
+ <xs:include schemaLocation="CommunDepense.xsd"/>\r
+ <xs:complexType name="TBlocBordereau">\r
+ <xs:sequence>\r
+ <xs:element name="Exer" type="cm:Base_Annee"/>\r
+ <xs:element name="IdBord" type="cm:Base_Num7"/>\r
+ <xs:element name="DteBordEm" type="cm:Base_Date" minOccurs="0"/>\r
+ <xs:element name="TypBord" type="TTypBord"/>\r
+ <xs:element name="NbrPce" type="cm:Base_Num5"/>\r
+ <xs:element name="MtCumulAnnuel" type="cm:Base_Montant" minOccurs="0"/>\r
+ <xs:element name="MtBordHT" type="cm:Base_Montant"/>\r
+ <xs:element name="MtBordTVA" type="cm:Base_Montant" minOccurs="0"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun">\r
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>\r
+ <xs:include schemaLocation="CommunDepense.xsd"/>\r
+ <xs:complexType name="TBlocBordereau">\r
+ <xs:sequence>\r
+ <xs:element name="Exer" type="cm:Base_Annee"/>\r
+ <xs:element name="IdBord" type="cm:Base_Num7"/>\r
+ <xs:element name="TypBord" type="TTypBord"/>\r
+ <xs:element name="DteBordEm" type="cm:Base_Date" minOccurs="0"/>\r
+ <xs:element name="NbrPce" type="cm:Base_Num5"/>\r
+ <xs:element name="MtBordHT" type="cm:Base_Montant"/>\r
+ <xs:element name="MtBordTVA" type="cm:Base_Montant" minOccurs="0"/>\r
+ <xs:element name="DteBordArr" type="cm:Base_Date" minOccurs="0"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun">\r
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>\r
+ <xs:include schemaLocation="CommunDepense.xsd"/>\r
+ <xs:complexType name="TInfoTiersRecette">\r
+ <xs:complexContent>\r
+ <xs:extension base="cm:TInfoTiers">\r
+ <xs:sequence>\r
+ <xs:element name="DteMalade" type="cm:Base_Date"/>\r
+ <xs:element name="TypTiers" type="cm:Base_Alphanum2"/>\r
+ </xs:sequence>\r
+ </xs:extension>\r
+ </xs:complexContent>\r
+ </xs:complexType>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunDepense.xsd"/>
+ <xs:complexType name="TBlocLignePiece">
+ <xs:sequence>
+ <xs:element name="InfoLignePce" type="TInfoLignePce">
+ <xs:annotation>
+ <xs:documentation>Information ligne de pièce</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="InfoTVAHLM" type="TInfoTVAHLM" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Information TVA HLM</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="OpSpec" type="TOpSpec" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Opération spécifique</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="RattachPiece" type="TRattachPiece" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Rattachement de pièce</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="LiensIdent" type="TLiensIdent" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Liens identifiants</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TInfoLignePce">
+ <xs:sequence>
+ <xs:element name="IdLigne" type="cm:Base_Num6"/>
+ <xs:element name="Nature" type="cm:Base_Texte12"/>
+ <xs:element name="Fonction" type="cm:Base_Num10" minOccurs="0"/>
+ <xs:element name="Operation" type="cm:Base_Num10" minOccurs="0"/>
+ <xs:element name="CptAna" type="cm:Base_Alphanum10" minOccurs="0"/>
+ <xs:element name="Facture" type="cm:Base_Texte20" minOccurs="0"/>
+ <xs:element name="LibVir1" type="cm:Base_Texte50" minOccurs="0"/>
+ <xs:element name="LibVir2" type="cm:Base_Texte50" minOccurs="0"/>
+ <xs:element name="ModRegl" type="TCodePaiement" minOccurs="0"/>
+ <xs:element name="TVAIntraCom" type="cm:Base_Booleen"/>
+ <xs:element name="CpteTVA" type="cm:Base_Alphanum12" minOccurs="0"/>
+ <xs:element name="CpteTiers" type="cm:Base_Texte12" minOccurs="0"/>
+ <xs:element name="MtHT" type="cm:Base_Montant"/>
+ <xs:element name="MtTVA" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="MtFactHT" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="PJRef" type="cm:TPJReference" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TInfoTVAHLM">
+ <xs:sequence>
+ <xs:element name="RecTVA" type="cm:Base_Booleen"/>
+ <xs:element name="MtHtRes" type="cm:Base_Montant"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TOpSpec">
+ <xs:sequence>
+ <xs:element name="CodOpSpec" type="TCodOpSpec"/>
+ <xs:element name="IdOpSpec" type="cm:Base_Alphanum15"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TRattachPiece">
+ <xs:sequence>
+ <xs:element name="NatPceOrig" type="TNatPceOrig"/>
+ <xs:element name="ExerRat" type="cm:Base_Annee"/>
+ <xs:element name="IdPceOrig" type="cm:Base_Num13"/>
+ <xs:element name="IdLigneOrig" type="cm:Base_Num6" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TLiensIdent">
+ <xs:sequence>
+ <xs:element name="IdConv" type="cm:Base_Texte25" minOccurs="0"/>
+ <xs:element name="IdMarche" type="cm:Base_Texte30" minOccurs="0"/>
+ <xs:element name="IdEmpruntOrdo" type="cm:Base_Texte24" minOccurs="0"/>
+ <xs:element name="IdActif" type="cm:Base_Texte25" minOccurs="0"/>
+ <xs:element name="IdRegie" type="cm:Base_Texte10" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun">\r
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>\r
+ <xs:include schemaLocation="CommunDepense.xsd"/>\r
+ <xs:complexType name="TBlocLignePiece">\r
+ <xs:sequence>\r
+ <xs:element name="InfoLignePce" type="TInfoLignePce">\r
+ <xs:annotation>\r
+ <xs:documentation>Information ligne de pièce</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ <xs:element name="InfoPaiement" type="TInfoPaiement" minOccurs="0">\r
+ <xs:annotation>\r
+ <xs:documentation>Information paiement</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ <xs:element name="OpSpec" type="TOpSpec" minOccurs="0">\r
+ <xs:annotation>\r
+ <xs:documentation>Opération spécifique</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ <xs:element name="RattachPiece" type="TRattachPiece" minOccurs="0">\r
+ <xs:annotation>\r
+ <xs:documentation>Rattachement de pièce</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ <xs:element name="LiensIdent" type="TLiensIdent" minOccurs="0">\r
+ <xs:annotation>\r
+ <xs:documentation>Liens identifiants</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TInfoLignePce">\r
+ <xs:sequence>\r
+ <xs:element name="IdLigne" type="cm:Base_Num6"/>\r
+ <xs:element name="Nature" type="cm:Base_Texte12" minOccurs="0"/>\r
+ <xs:element name="CptAna" type="cm:Base_Alphanum10" minOccurs="0"/>\r
+ <xs:element name="Facture" type="cm:Base_Texte20" minOccurs="0"/>\r
+ <xs:element name="LibVir1" type="cm:Base_Texte50" minOccurs="0"/>\r
+ <xs:element name="LibVir2" type="cm:Base_Texte50" minOccurs="0"/>\r
+ <xs:element name="ModRegl" type="TCodePaiement" minOccurs="0"/>\r
+ <xs:element name="CpteTVA" type="cm:Base_Alphanum12" minOccurs="0"/>\r
+ <xs:element name="CpteTiers" type="cm:Base_Texte12" minOccurs="0"/>\r
+ <xs:element name="MtHT" type="cm:Base_Montant"/>\r
+ <xs:element name="MtTVA" type="cm:Base_Montant" minOccurs="0"/>\r
+ <xs:element name="MtFactHT" type="cm:Base_Montant" minOccurs="0"/>\r
+ <xs:element name="CessOpp" type="TCessOpp" minOccurs="0"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TInfoPaiement">\r
+ <xs:sequence>\r
+ <xs:element name="NbrPay" type="cm:Base_Num4"/>\r
+ <xs:element name="MtPayTot" type="cm:Base_Montant"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TOpSpec">\r
+ <xs:sequence>\r
+ <xs:element name="CodOpSpec" type="TCodOpSpec"/>\r
+ <xs:element name="IdOpSpec" type="cm:Base_Alphanum15"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TRattachPiece">\r
+ <xs:sequence>\r
+ <xs:element name="NatPceOrig" type="TNatPceOrig"/>\r
+ <xs:element name="ExerRat" type="cm:Base_Annee"/>\r
+ <xs:element name="IdPceOrig" type="cm:Base_Num13"/>\r
+ <xs:element name="IdLigneOrig" type="cm:Base_Num6" minOccurs="0"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TLiensIdent">\r
+ <xs:sequence>\r
+ <xs:element name="IdConv" type="cm:Base_Texte25" minOccurs="0"/>\r
+ <xs:element name="IdMarche" type="cm:Base_Texte30" minOccurs="0"/>\r
+ <xs:element name="IdEmpruntOrdo" type="cm:Base_Texte24" minOccurs="0"/>\r
+ <xs:element name="IdActif" type="cm:Base_Texte25" minOccurs="0"/>\r
+ <xs:element name="IdRegie" type="cm:Base_Texte10" minOccurs="0"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">\r
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>\r
+ <xs:include schemaLocation="CommunDepense.xsd"/>\r
+ <xs:complexType name="TBlocPiece">\r
+ <xs:sequence>\r
+ <xs:element name="InfoPce" type="TInfoPce">\r
+ <xs:annotation>\r
+ <xs:documentation>information pièce - obligatoire</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ <xs:element name="DGP" type="TDGP" minOccurs="0">\r
+ <xs:annotation>\r
+ <xs:documentation>délai global de paiement- facultatif</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TInfoPce">\r
+ <xs:sequence>\r
+ <xs:element name="CodServ" type="cm:Base_Texte10" minOccurs="0"/>\r
+ <xs:element name="Affect" type="cm:Base_Texte10" minOccurs="0"/>\r
+ <xs:element name="IdPce" type="cm:Base_Num13"/>\r
+ <xs:element name="TypPce" type="TTypPce"/>\r
+ <xs:element name="NatPce" type="TNatPce"/>\r
+ <xs:element name="Obj" type="cm:Base_Texte100" minOccurs="0"/>\r
+ <xs:element name="DteEch" type="cm:Base_Date" minOccurs="0"/>\r
+ <xs:element name="PJRef" type="cm:TPJReference" minOccurs="0" maxOccurs="unbounded"/>\r
+ <xs:element name="PJ" type="cm:Base_Texte250" minOccurs="0"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TDGP">\r
+ <xs:sequence>\r
+ <xs:element name="Dgp" type="cm:Base_Booleen"/>\r
+ <xs:element name="DteDebDgp" type="cm:Base_Date"/>\r
+ <xs:element name="DteFinDgp" type="cm:Base_Date"/>\r
+ <xs:element name="DureeDgp" type="cm:Base_Num2"/>\r
+ <xs:element name="CodIntMor" type="TCodIntMor" minOccurs="0"/>\r
+ <xs:element name="TxIntMor" type="cm:Base_Taux" minOccurs="0"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun">\r
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>\r
+ <xs:include schemaLocation="CommunDepense.xsd"/>\r
+ <xs:complexType name="TBlocPiece">\r
+ <xs:sequence>\r
+ <xs:element name="InfoPce" type="TInfoPce">\r
+ <xs:annotation>\r
+ <xs:documentation>information ligne de pièce</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ <xs:element name="DGP" type="TDGP" minOccurs="0">\r
+ <xs:annotation>\r
+ <xs:documentation>délai global de paiement</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TInfoPce">\r
+ <xs:sequence>\r
+ <xs:element name="CodServ" type="cm:Base_Texte10" minOccurs="0"/>\r
+ <xs:element name="Affect" type="cm:Base_Texte10" minOccurs="0"/>\r
+ <xs:element name="IdPce" type="cm:Base_Num8"/>\r
+ <xs:element name="TypPce" type="TTypPce"/>\r
+ <xs:element name="NatPce" type="TNatPce"/>\r
+ <xs:element name="DtePceInt" type="cm:Base_Date" minOccurs="0"/>\r
+ <xs:element name="DtePcePec" type="cm:Base_Date" minOccurs="0"/>\r
+ <xs:element name="EtatPce" type="TEtatPce"/>\r
+ <xs:element name="ObsEtat" type="cm:Base_Texte100" minOccurs="0"/>\r
+ <xs:element name="DtePceRej" type="cm:Base_Date" minOccurs="0"/>\r
+ <xs:element name="DtePceInst" type="cm:Base_Date" minOccurs="0"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TDGP">\r
+ <xs:sequence>\r
+ <xs:element name="DteDebSusp" type="cm:Base_Date" minOccurs="0"/>\r
+ <xs:element name="DteFinSusp" type="cm:Base_Date" minOccurs="0"/>\r
+ <xs:element name="NatSusp" type="TNatSusp" minOccurs="0"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">\r
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>\r
+ <xs:include schemaLocation="CommunDepense.xsd"/>\r
+ <xs:complexType name="TPaiement">\r
+ <xs:sequence>\r
+ <xs:element name="ModeReg" type="TCodePaiement"/>\r
+ <xs:element name="DtePay" type="cm:Base_Date"/>\r
+ <xs:element name="IdPay" type="cm:Base_Num12"/>\r
+ <xs:element name="MtPay" type="cm:Base_Montant"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">\r
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>\r
+ <xs:include schemaLocation="CommunDepense.xsd"/>\r
+ <xs:complexType name="TInfoTiersDepense">\r
+ \r
+ <xs:sequence>\r
+ <xs:element name="IdTiers" type="cm:Base_Texte15" minOccurs="0"/>\r
+ <!--xs:element name="DteMalade" type="cm:Base_Date" minOccurs="0"/-->\r
+ <xs:element name="NatIdTiers" type="cm:TNatIdTiers" minOccurs="0"/>\r
+ <xs:element name="DteIdTiers" type="cm:Base_Date" minOccurs="0"/>\r
+ <xs:element name="RefTiers" type="cm:Base_Texte30" minOccurs="0"/>\r
+ <xs:element name="CatTiers" type="cm:TCatTiers"/>\r
+ <xs:element name="NatJur" type="cm:TNatJur"/>\r
+ <xs:element name="Civilite" type="cm:Base_Texte10" minOccurs="0"/>\r
+ <xs:element name="Nom" type="cm:Base_Texte38"/>\r
+ <xs:element name="ComplNom" type="cm:Base_Texte38" minOccurs="0"/>\r
+ <xs:element name="Prenom" type="cm:Base_Texte38" minOccurs="0"/>\r
+ </xs:sequence>\r
+ \r
+ </xs:complexType>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun">\r
+ <xs:complexType name="TNatInf">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="0"/>\r
+ <xs:enumeration value="1"/>\r
+ <xs:enumeration value="2"/>\r
+ <xs:enumeration value="3"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+ <xs:complexType name="TTypBord">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="01"/>\r
+ <xs:enumeration value="02"/>\r
+ <xs:enumeration value="03"/>\r
+ <xs:enumeration value="04"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+ <xs:complexType name="TTypPce">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="01"/>\r
+ <xs:enumeration value="02"/>\r
+ <xs:enumeration value="03"/>\r
+ <xs:enumeration value="04"/>\r
+ <xs:enumeration value="05"/>\r
+ <xs:enumeration value="06"/>\r
+ <xs:enumeration value="07"/>\r
+ <xs:enumeration value="08"/>\r
+ <xs:enumeration value="09"/>\r
+ <xs:enumeration value="10"/>\r
+ <xs:enumeration value="11"/>\r
+ <xs:enumeration value="12"/>\r
+ <xs:enumeration value="13"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+ <xs:complexType name="TNatPce">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="01"/>\r
+ <xs:enumeration value="02"/>\r
+ <xs:enumeration value="03"/>\r
+ <xs:enumeration value="04"/>\r
+ <xs:enumeration value="05"/>\r
+ <xs:enumeration value="06"/>\r
+ <xs:enumeration value="07"/>\r
+ <xs:enumeration value="08"/>\r
+ <xs:enumeration value="09"/>\r
+ <xs:enumeration value="10"/>\r
+ <xs:enumeration value="11"/>\r
+ <xs:enumeration value="12"/>\r
+ <xs:enumeration value="13"/>\r
+ <xs:enumeration value="14"/>\r
+ <xs:enumeration value="15"/>\r
+ <xs:enumeration value="18"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+ <xs:complexType name="TEtatPce">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="01"/>\r
+ <xs:enumeration value="02"/>\r
+ <xs:enumeration value="03"/>\r
+ <xs:enumeration value="04"/>\r
+ <xs:enumeration value="05"/>\r
+ <xs:enumeration value="06"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+ <xs:complexType name="TCodIntMor">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="01"/>\r
+ <xs:enumeration value="02"/>\r
+ <xs:enumeration value="03"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+ <xs:complexType name="TNatSusp">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="01"/>\r
+ <xs:enumeration value="02"/>\r
+ <xs:enumeration value="03"/>\r
+ <xs:enumeration value="04"/>\r
+ <xs:enumeration value="05"/>\r
+ <xs:enumeration value="06"/>\r
+ <xs:enumeration value="07"/>\r
+ <xs:enumeration value="08"/>\r
+ <xs:enumeration value="09"/>\r
+ <xs:enumeration value="10"/>\r
+ <xs:enumeration value="11"/>\r
+ <xs:enumeration value="12"/>\r
+ <xs:enumeration value="13"/>\r
+ <xs:enumeration value="14"/>\r
+ <xs:enumeration value="15"/>\r
+ <xs:enumeration value="16"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+ <xs:complexType name="TCodePaiement">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="01"/>\r
+ <xs:enumeration value="02"/>\r
+ <xs:enumeration value="03"/>\r
+ <xs:enumeration value="04"/>\r
+ <xs:enumeration value="05"/>\r
+ <xs:enumeration value="06"/>\r
+ <xs:enumeration value="07"/>\r
+ <xs:enumeration value="08"/>\r
+ <xs:enumeration value="09"/>\r
+ <xs:enumeration value="10"/>\r
+ <xs:enumeration value="11"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+ <xs:complexType name="TCessOpp">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="01"/>\r
+ <xs:enumeration value="02"/>\r
+ <xs:enumeration value="03"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+ <xs:complexType name="TCodOpSpec">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="01"/>\r
+ <xs:enumeration value="02"/>\r
+ <xs:enumeration value="03"/>\r
+ <xs:enumeration value="04"/>\r
+ <xs:enumeration value="05"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+ <xs:complexType name="TNatPceOrig">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="01"/>\r
+ <xs:enumeration value="02"/>\r
+ <xs:enumeration value="03"/>\r
+ <xs:enumeration value="04"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+ <xs:complexType name="TTypDep">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="00"/>\r
+ <xs:enumeration value="01"/>\r
+ <xs:enumeration value="02"/>\r
+ <xs:enumeration value="03"/>\r
+ <xs:enumeration value="11"/>\r
+ <xs:enumeration value="12"/>\r
+ <xs:enumeration value="21"/>\r
+ <xs:enumeration value="22"/>\r
+ <xs:enumeration value="31"/>\r
+ <xs:enumeration value="32"/>\r
+ <xs:enumeration value="33"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/depense/r0/aller" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.minefi.gouv.fr/cp/helios/pes_v2/depense/r0/aller" elementFormDefault="unqualified">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="../../Class_Signature.xsd"/>
+ <xs:include schemaLocation="CommunDepense.xsd"/>
+ <xs:include schemaLocation="Class_BordereauDepenseAller.xsd"/>
+ <xs:include schemaLocation="Class_MandatAller.xsd"/>
+ <xs:include schemaLocation="Class_LigneMandatAller.xsd"/>
+ <xs:include schemaLocation="Class_TiersDepense.xsd"/>
+ <xs:complexType name="TPES_DepenseAller">
+ <xs:sequence>
+ <xs:element name="EnTeteDepense">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="IdVer" type="cm:Base_Num2"/>
+ <xs:element name="InfoDematerialisee" type="cm:Base_Booleen" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Bordereau" type="TBordereau" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TBordereau">
+ <xs:sequence>
+ <xs:element name="BlocBordereau" type="TBlocBordereau"/>
+ <xs:element name="Piece" type="TPiece" maxOccurs="unbounded"/>
+ <xs:group ref="ds:PESSignatureGroup" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="Id" type="xs:ID" use="optional"/>
+ </xs:complexType>
+ <xs:complexType name="TPiece">
+ <xs:sequence>
+ <xs:element name="BlocPiece" type="TBlocPiece"/>
+ <xs:element name="LigneDePiece" type="TLigneDePiece" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TLigneDePiece">
+ <xs:sequence>
+ <xs:element name="BlocLignePiece" type="TBlocLignePiece"/>
+ <xs:element name="Tiers" type="TTiers" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TTiers">
+ <xs:sequence>
+ <xs:element name="InfoTiers" type="TInfoTiersDepense"/>
+ <xs:element name="Adresse" type="cm:TAdresse" minOccurs="0"/>
+ <xs:element name="CpteBancaire" type="cm:TBancaire" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/depense/r0/retour" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns="http://www.minefi.gouv.fr/cp/helios/pes_v2/depense/r0/retour" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="unqualified">\r
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>\r
+ <xs:include schemaLocation="CommunDepense.xsd"/>\r
+ <xs:include schemaLocation="Class_BordereauDepenseRetour.xsd"/>\r
+ <xs:include schemaLocation="Class_MandatRetour.xsd"/>\r
+ <xs:include schemaLocation="Class_LigneMandatRetour.xsd"/>\r
+ <xs:include schemaLocation="Class_Paiement.xsd"/>\r
+ <xs:include schemaLocation="Class_TiersDepense.xsd"/>\r
+ <xs:complexType name="TPES_DepenseRetour">\r
+ <xs:sequence>\r
+ <xs:element name="EnTeteDepense">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="IdVer" type="cm:Base_Num2"/>\r
+ <xs:element name="NatInf" type="TNatInf"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="Bordereau" type="TBordereau" maxOccurs="unbounded"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TBordereau">\r
+ <xs:sequence>\r
+ <xs:element name="BlocBordereau" type="TBlocBordereau"/>\r
+ <xs:element name="Piece" type="TPiece" maxOccurs="unbounded"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TPiece">\r
+ <xs:sequence>\r
+ <xs:element name="BlocPiece" type="TBlocPiece"/>\r
+ <xs:element name="LigneDePiece" type="TLigneDePiece" maxOccurs="unbounded"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TLigneDePiece">\r
+ <xs:sequence>\r
+ <xs:element name="BlocLignePiece" type="TBlocLignePiece"/>\r
+ <xs:element name="Tiers" type="TTiers" minOccurs="0"/>\r
+ <xs:element name="Paiement" type="TPaiement" minOccurs="0"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TTiers">\r
+ <xs:sequence>\r
+ <xs:element name="InfoTiers" type="TInfoTiersDepense"/>\r
+ <xs:element name="Adresse" type="cm:TAdresse" minOccurs="0"/>\r
+ <xs:element name="CpteBancaire" type="cm:TBancaire" minOccurs="0"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun">\r
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>\r
+ <xs:include schemaLocation="CommunInventaire.xsd"/>\r
+ <xs:complexType name="TEtatActif">\r
+ <xs:sequence>\r
+ <xs:element name="TypeMessage" type="TTypeMessage">\r
+ <xs:annotation>\r
+ <xs:documentation>Type de message</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ <xs:element name="IdentificationPiece" type="TIdentPiece">\r
+ <xs:annotation>\r
+ <xs:documentation>Identification de la pièce</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ <xs:element name="IdentificationBien" type="TIdentificationBien" minOccurs="0">\r
+ <xs:annotation>\r
+ <xs:documentation>Identification du bien</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ <xs:element name="InformationBien" type="TInformationBien" minOccurs="0">\r
+ <xs:annotation>\r
+ <xs:documentation>Informations sur le bien</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ <xs:element name="SortieDuBien" type="TSortieDuBien" minOccurs="0">\r
+ <xs:annotation>\r
+ <xs:documentation>Sortie du bien</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TTypeMessage">\r
+ <xs:sequence>\r
+ <xs:element name="TypEnreg" type="TTypEnreg"/>\r
+ <xs:element name="TypAct" type="TTypAct"/>\r
+ <xs:element name="Mt" type="cm:Base_Montant"/>\r
+ <xs:element name="Exer" type="cm:Base_Annee"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TIdentPiece">\r
+ <xs:sequence>\r
+ <xs:element name="IdPce" type="cm:Base_Num8"/>\r
+ <xs:element name="IdLigne" type="cm:Base_Num6"/>\r
+ <xs:element name="Nature" type="cm:Base_Texte12"/>\r
+ <xs:element name="Fonction" type="cm:Base_Num10" minOccurs="0"/>\r
+ <xs:element name="Operation" type="cm:Base_Num10" minOccurs="0"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TIdentificationBien">\r
+ <xs:sequence>\r
+ <xs:element name="NumInvent" type="cm:Base_Texte25" minOccurs="0"/>\r
+ <xs:element name="Affect" type="cm:Base_Texte10" minOccurs="0"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TInformationBien">\r
+ <xs:sequence>\r
+ <xs:element name="CatImmo" type="cm:Base_Texte6"/>\r
+ <xs:element name="DurAmt" type="cm:Base_Num3" minOccurs="0"/>\r
+ <xs:element name="DteAcqui" type="cm:Base_Date" minOccurs="0"/>\r
+ <xs:element name="DteSer" type="cm:Base_Date" minOccurs="0"/>\r
+ <xs:element name="DesBien" type="cm:Base_Texte250" minOccurs="0"/>\r
+ <xs:element name="DesCompl" type="cm:Base_Texte100" minOccurs="0"/>\r
+ <xs:element name="IdColl" type="cm:Base_Num14" minOccurs="0"/>\r
+ <xs:element name="CodColl" type="cm:Base_Alphanum3" minOccurs="0"/>\r
+ <xs:element name="CodBud" type="cm:Base_Alphanum2" minOccurs="0"/>\r
+ <xs:element name="DteInteg" type="cm:Base_Date" minOccurs="0"/>\r
+ <xs:element name="ImpDefNat" type="cm:Base_Texte12" minOccurs="0"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TSortieDuBien">\r
+ <xs:sequence>\r
+ <xs:element name="ModSort" type="TModSort"/>\r
+ <xs:element name="DteSort" type="cm:Base_Date"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun">\r
+ <!-- Regles de codifications communes au PES Inventaire-->\r
+ <xs:complexType name="TTypAct">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="01"/>\r
+ <xs:enumeration value="02"/>\r
+ <xs:enumeration value="03"/>\r
+ <xs:enumeration value="04"/>\r
+ <xs:enumeration value="05"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+ <xs:complexType name="TTypEnreg">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="01"/>\r
+ <xs:enumeration value="02"/>\r
+ <xs:enumeration value="03"/>\r
+ <xs:enumeration value="04"/>\r
+ <xs:enumeration value="05"/>\r
+ <xs:enumeration value="06"/>\r
+ <xs:enumeration value="07"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+ <xs:complexType name="TModSort">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="01"/>\r
+ <xs:enumeration value="02"/>\r
+ <xs:enumeration value="03"/>\r
+ <xs:enumeration value="04"/>\r
+ <xs:enumeration value="05"/>\r
+ <xs:enumeration value="06"/>\r
+ <xs:enumeration value="07"/>\r
+ <xs:enumeration value="08"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/etatactif/r0/aller" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns="http://www.minefi.gouv.fr/cp/helios/pes_v2/etatactif/r0/aller" elementFormDefault="unqualified">\r
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>\r
+ <xs:include schemaLocation="CommunInventaire.xsd"/>\r
+ <xs:include schemaLocation="Class_Inventaire.xsd"/>\r
+ <xs:complexType name="TPES_EtatActif">\r
+ <xs:sequence>\r
+ <xs:element name="EnTeteEtatActif">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="IdVer" type="cm:Base_Num2"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="EtatActif" type="TEtatActif" maxOccurs="unbounded"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">\r
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>\r
+ <xs:include schemaLocation="CommunEmprunts.xsd"/>\r
+ <xs:complexType name="TIdentificationEmprunt">\r
+ <xs:sequence>\r
+ <xs:element name="TypFlux" type="TTypFlux"/>\r
+ <xs:element name="TypMvt" type="TTypMvt"/>\r
+ <xs:element name="Affect" type="cm:Base_Texte10" minOccurs="0"/>\r
+ <xs:element name="NumEmpOrdo" type="cm:Base_Texte24"/>\r
+ <xs:element name="ObjEmp" type="cm:Base_Texte250" minOccurs="0"/>\r
+ <xs:element name="MtEmp" type="cm:Base_Montant"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TInformationEmprunt">\r
+ <xs:sequence>\r
+ <xs:element name="NumEmpPret" type="cm:Base_Texte24"/>\r
+ <xs:element name="TypEmp" type="TTypEmp"/>\r
+ <xs:element name="TypMon" type="TTypMon" minOccurs="0"/>\r
+ <xs:element name="PerRemb" type="TPerRemb"/>\r
+ <xs:element name="IntDiff" type="cm:Base_Montant" minOccurs="0"/>\r
+ <xs:element name="TypTx" type="TTypTx"/>\r
+ <xs:element name="Tx" type="cm:Base_Taux"/>\r
+ <xs:element name="FrsDossier" type="cm:Base_Montant" minOccurs="0"/>\r
+ <xs:element name="Duree" type="cm:Base_Num3"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TLigneTableauAmt">\r
+ <xs:sequence>\r
+ <xs:element name="DtePai" type="cm:Base_Date"/>\r
+ <xs:element name="FraisEch" type="cm:Base_Montant" minOccurs="0"/>\r
+ <xs:element name="Capital" type="cm:Base_Montant"/>\r
+ <xs:element name="Interet" type="cm:Base_Montant"/>\r
+ <xs:element name="InteretDiffere" type="cm:Base_Montant" minOccurs="0"/>\r
+ <xs:element name="MtCrd" type="cm:Base_Montant"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">\r
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>\r
+ <xs:include schemaLocation="CommunEmprunts.xsd"/>\r
+ <xs:complexType name="TInfoTiers">\r
+ <xs:sequence>\r
+ <xs:element name="IdTiers" type="cm:Base_Texte15" minOccurs="0"/>\r
+ <xs:element name="Civilite" type="cm:Base_Texte10" minOccurs="0"/>\r
+ <xs:element name="Nom" type="cm:Base_Texte38"/>\r
+ <xs:element name="ComplNom" type="cm:Base_Texte38" minOccurs="0"/>\r
+ <xs:element name="Prenom" type="cm:Base_Texte38" minOccurs="0"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">\r
+ <xs:complexType name="TTypFlux">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="01"/>\r
+ <xs:enumeration value="02"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+ <xs:complexType name="TTypMvt">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="01"/>\r
+ <xs:enumeration value="02"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+ <xs:complexType name="TTypEmp">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="01"/>\r
+ <xs:enumeration value="02"/>\r
+ <xs:enumeration value="03"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+ <xs:complexType name="TPerRemb">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="01"/>\r
+ <xs:enumeration value="02"/>\r
+ <xs:enumeration value="03"/>\r
+ <xs:enumeration value="04"/>\r
+ <xs:enumeration value="05"/>\r
+ <xs:enumeration value="06"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+ <xs:complexType name="TTypMon">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="01"/>\r
+ <xs:enumeration value="02"/>\r
+ <xs:enumeration value="03"/>\r
+ <xs:enumeration value="04"/>\r
+ <xs:enumeration value="05"/>\r
+ <xs:enumeration value="06"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+ <xs:complexType name="TTypTx">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="01"/>\r
+ <xs:enumeration value="02"/>\r
+ <xs:enumeration value="03"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/emprunt/r0/aller" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.minefi.gouv.fr/cp/helios/pes_v2/emprunt/r0/aller" elementFormDefault="unqualified">\r
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>\r
+ <xs:include schemaLocation="CommunEmprunts.xsd"/>\r
+ <xs:include schemaLocation="Class_Emprunt.xsd"/>\r
+ <xs:include schemaLocation="Class_TiersEmprunt.xsd"/>\r
+ <xs:complexType name="TPES_EtatPassif">\r
+ <xs:sequence>\r
+ <xs:element name="EnTeteEtatPassif">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="IdVer" type="cm:Base_Num2"/>\r
+ <xs:element name="Exer" type="cm:Base_Annee"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="EtatPassif" type="TEtatPassif" maxOccurs="unbounded"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TEtatPassif">\r
+ <xs:sequence>\r
+ <xs:element name="IdentificationEmprunt" type="TIdentificationEmprunt"/>\r
+ <xs:element name="InformationEmprunt" type="TInformationEmprunt" minOccurs="0"/>\r
+ <xs:element name="Tiers" type="TTiers"/>\r
+ <xs:element name="LigneTableauAmt" type="TLigneTableauAmt" minOccurs="0" maxOccurs="unbounded"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TTiers">\r
+ <xs:sequence>\r
+ <xs:element name="InfoTiers" type="TInfoTiers"/>\r
+ <xs:element name="Adresse" type="cm:TAdresse" minOccurs="0"/>\r
+ <xs:element name="CpteBancaire" type="cm:TBancaire" minOccurs="0"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun">\r
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>\r
+ <xs:include schemaLocation="CommunMarche.xsd"/>\r
+ <xs:complexType name="TBlocInformationMarche">\r
+ <xs:sequence>\r
+ <xs:element name="IdentificationMarche" type="TIdentificationMarche">\r
+ <xs:annotation>\r
+ <xs:documentation>Identification du marché</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ <xs:element name="FicheRecensementEco" type="TFicheRecensementEco" minOccurs="0">\r
+ <xs:annotation>\r
+ <xs:documentation>Fiche de recensement économique</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ <xs:element name="FicheSuiviMarche" type="TFicheSuiviMarche" minOccurs="0">\r
+ <xs:annotation>\r
+ <xs:documentation>Fiche de suivi du marché</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ <xs:element name="PJRef" type="cm:TPJReference" minOccurs="0" maxOccurs="unbounded"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TIdentificationMarche">\r
+ <xs:sequence>\r
+ <xs:element name="Affect" type="cm:Base_Texte10" minOccurs="0"/>\r
+ <xs:element name="IdMar" type="cm:Base_Texte30"/>\r
+ <xs:element name="IdDoc" type="cm:Base_Texte2"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TFicheRecensementEco">\r
+ <xs:sequence>\r
+ <xs:element name="Ppu" type="cm:Base_Num17"/>\r
+ <xs:element name="Passation" type="TPassation"/>\r
+ <xs:element name="CatCom" type="TCatCom"/>\r
+ <xs:element name="TypDep" type="TTypDep" minOccurs="0"/>\r
+ <xs:element name="OpReseau" type="cm:Base_Booleen" minOccurs="0"/>\r
+ <xs:element name="CodCPV" type="cm:Base_Num9"/>\r
+ <xs:element name="NatOuvr" type="cm:Base_Num6"/>\r
+ <xs:element name="MtHT" type="cm:Base_Montant"/>\r
+ <xs:element name="DteNotif" type="cm:Base_Date"/>\r
+ <xs:element name="DureeMar" type="cm:Base_Num3"/>\r
+ <xs:element name="Section" type="cm:Base_Booleen"/>\r
+ <xs:element name="Alloti" type="cm:Base_Booleen"/>\r
+ <xs:element name="JOUE" type="cm:Base_Alphanum10" minOccurs="0"/>\r
+ <xs:element name="PME" type="cm:Base_Booleen" minOccurs="0"/>\r
+ <xs:element name="CodeAPE" type="cm:Base_Alphanum4" minOccurs="0"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TFicheSuiviMarche">\r
+ <xs:sequence>\r
+ <xs:element name="TypMar" type="TTypMar"/>\r
+ <xs:element name="TypDoc" type="TTypDoc" minOccurs="0"/>\r
+ <xs:element name="IdMarIni" type="cm:Base_Texte30" minOccurs="0"/>\r
+ <xs:element name="IdDocIni" type="cm:Base_Texte2" minOccurs="0"/>\r
+ <xs:element name="ObjMar" type="cm:Base_Texte250" minOccurs="0"/>\r
+ <xs:element name="MultiBudg" type="cm:Base_Booleen"/>\r
+ <xs:element name="CarPx" type="TCarPx"/>\r
+ <xs:element name="Prest" type="TPrest"/>\r
+ <xs:element name="NatPrest" type="cm:Base_Texte50" minOccurs="0"/>\r
+ <xs:element name="GarApp" type="TGarApp" minOccurs="0"/>\r
+ <xs:element name="DelaiGar" type="cm:Base_Num2" minOccurs="0"/>\r
+ <xs:element name="MtGar" type="cm:Base_Montant" minOccurs="0"/>\r
+ <xs:element name="TxGar" type="cm:Base_Taux" minOccurs="0"/>\r
+ <xs:element name="TypGrp" type="TTypGrp" minOccurs="0"/>\r
+ <xs:element name="MtGlobSSTrait" type="cm:Base_Montant" minOccurs="0"/>\r
+ <xs:element name="DteExec" type="cm:Base_Date"/>\r
+ <xs:element name="DteOrdServ" type="cm:Base_Date"/>\r
+ <xs:element name="MarSimp" type="cm:Base_Booleen"/>\r
+ <xs:element name="Avance" type="TAvance" minOccurs="0"/>\r
+ <xs:element name="Penalite" type="cm:Base_Booleen"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<!-- edited with XML Spy v4.4 (http://www.xmlspy.com) by Michael Conroy (SEMA) -->\r
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun">\r
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>\r
+ <xs:include schemaLocation="CommunMarche.xsd"/>\r
+ <xs:complexType name="TInfoTiersMarche">\r
+ \r
+ <xs:sequence>\r
+ <xs:element name="IdTiers" type="cm:Base_Texte15" minOccurs="0"/>\r
+ <xs:element name="NatIdTiers" type="cm:TNatIdTiers" minOccurs="0"/>\r
+ <xs:element name="DteIdTiers" type="cm:Base_Date" minOccurs="0"/>\r
+ <xs:element name="RefTiers" type="cm:Base_Texte30" minOccurs="0"/>\r
+ <xs:element name="CatTiers" type="cm:TCatTiers"/>\r
+ <xs:element name="NatJur" type="cm:TNatJur"/>\r
+ <xs:element name="TypTiers" type="cm:TTypTiers"/>\r
+ <xs:element name="Civilite" type="cm:Base_Texte10" minOccurs="0"/>\r
+ <xs:element name="Nom" type="cm:Base_Texte38"/>\r
+ <xs:element name="ComplNom" type="cm:Base_Texte38" minOccurs="0"/>\r
+ <xs:element name="Prenom" type="cm:Base_Texte38" minOccurs="0"/>\r
+ </xs:sequence>\r
+ \r
+ </xs:complexType>\r
+ <xs:complexType name="TMontant">\r
+ <xs:sequence>\r
+ <xs:element name="Mt" type="cm:Base_Montant"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun">\r
+ <!-- Regles de codifications communes au PES Marche-->\r
+ <xs:complexType name="TTypMar">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="01"/>\r
+ <xs:enumeration value="02"/>\r
+ <xs:enumeration value="03"/>\r
+ <xs:enumeration value="04"/>\r
+ <xs:enumeration value="05"/>\r
+ <xs:enumeration value="06"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+ <xs:complexType name="TTypDoc">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="01"/>\r
+ <xs:enumeration value="02"/>\r
+ <xs:enumeration value="03"/>\r
+ <xs:enumeration value="04"/>\r
+ <xs:enumeration value="05"/>\r
+ <xs:enumeration value="06"/>\r
+ <xs:enumeration value="07"/>\r
+ <xs:enumeration value="08"/>\r
+ <xs:enumeration value="09"/>\r
+ <xs:enumeration value="10"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+ <xs:complexType name="TTypDep">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="01"/>\r
+ <xs:enumeration value="02"/>\r
+ <xs:enumeration value="03"/>\r
+ <xs:enumeration value="04"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+ <xs:complexType name="TPassation">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="01"/>\r
+ <xs:enumeration value="02"/>\r
+ <xs:enumeration value="03"/>\r
+ <xs:enumeration value="04"/>\r
+ <xs:enumeration value="05"/>\r
+ <xs:enumeration value="06"/>\r
+ <xs:enumeration value="07"/>\r
+ <xs:enumeration value="08"/>\r
+ <xs:enumeration value="09"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+ <xs:complexType name="TCatCom">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="01"/>\r
+ <xs:enumeration value="02"/>\r
+ <xs:enumeration value="03"/>\r
+ <xs:enumeration value="04"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+ <xs:complexType name="TCarPx">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="01"/>\r
+ <xs:enumeration value="02"/>\r
+ <xs:enumeration value="03"/>\r
+ <xs:enumeration value="04"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+ <xs:complexType name="TTypGrp">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="0"/>\r
+ <xs:enumeration value="1"/>\r
+ <xs:enumeration value="2"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+ <xs:complexType name="TAvance">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="0"/>\r
+ <xs:enumeration value="1"/>\r
+ <xs:enumeration value="2"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+ <xs:complexType name="TPrest">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="01"/>\r
+ <xs:enumeration value="02"/>\r
+ <xs:enumeration value="03"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+ <xs:complexType name="TGarApp">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="01"/>\r
+ <xs:enumeration value="02"/>\r
+ <xs:enumeration value="03"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+ <xs:complexType name="TTypTiers">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="01"/>\r
+ <xs:enumeration value="02"/>\r
+ <xs:enumeration value="03"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/marche/r0/aller" xmlns="http://www.minefi.gouv.fr/cp/helios/pes_v2/marche/r0/aller" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" elementFormDefault="unqualified">\r
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>\r
+ <xs:include schemaLocation="CommunMarche.xsd"/>\r
+ <xs:include schemaLocation="Class_InformationMarche.xsd"/>\r
+ <xs:include schemaLocation="Class_TiersMarche.xsd"/>\r
+ <xs:complexType name="TPES_Marche">\r
+ <xs:sequence>\r
+ <xs:element name="EnTeteMarche">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="IdVer" type="cm:Base_Num2"/>\r
+ <xs:element name="InfoDematerialisee" type="cm:Base_Booleen" minOccurs="0"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="InformationMarche" type="TInformationMarche" maxOccurs="unbounded"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TInformationMarche">\r
+ <xs:sequence>\r
+ <xs:element name="BlocInformationMarche" type="TBlocInformationMarche"/>\r
+ <xs:element name="TiersMarche" type="TTiers" maxOccurs="unbounded"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TTiers">\r
+ <xs:sequence>\r
+ <xs:element name="InfoTiers" type="TInfoTiersMarche"/>\r
+ <xs:element name="Montant" type="TMontant" minOccurs="0"/>\r
+ <xs:element name="Adresse" type="cm:TAdresse" minOccurs="0"/>\r
+ <xs:element name="CpteBancaire" type="cm:TBancaire" minOccurs="0"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">\r
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>\r
+ <xs:include schemaLocation="CommunRecette.xsd"/>\r
+ <xs:complexType name="TBlocBordereau">\r
+ <xs:sequence>\r
+ <xs:element name="Exer" type="cm:Base_Annee"/>\r
+ <xs:element name="IdBord" type="cm:Base_Num7"/>\r
+ <xs:element name="DteBordEm" type="cm:Base_Date"/> <!-- HLS00052096 -->\r
+ <xs:element name="TypBord" type="TTypBord"/>\r
+ <xs:element name="NbrPce" type="cm:Base_Num5"/>\r
+ <xs:element name="MtCumulAnnuel" type="cm:Base_Montant" minOccurs="0"/>\r
+ <xs:element name="MtBordHt" type="cm:Base_Montant"/>\r
+ <xs:element name="MtBordTVA" type="cm:Base_Montant" minOccurs="0"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">\r
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>\r
+ <xs:include schemaLocation="CommunRecette.xsd"/>\r
+ <xs:complexType name="TBlocBordereau">\r
+ <xs:sequence>\r
+ <xs:element name="Exer" type="cm:Base_Annee"/>\r
+ <xs:element name="IdBord" type="cm:Base_Num7"/>\r
+ <xs:element name="DteBordEm" type="cm:Base_Date" minOccurs="0"/>\r
+ <xs:element name="TypBord" type="TTypBord"/>\r
+ <xs:element name="NbrPce" type="cm:Base_Num5"/>\r
+ <xs:element name="MtBordHt" type="cm:Base_Montant"/>\r
+ <xs:element name="MtBordTVA" type="cm:Base_Montant" minOccurs="0"/>\r
+ <xs:element name="DteBordArr" type="cm:Base_Date" minOccurs="0"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunRecette.xsd"/>
+ <xs:complexType name="TBlocLignePiece">
+ <xs:sequence>
+ <xs:element name="InfoLignePiece" type="TInfoLignePiece">
+ <xs:annotation>
+ <xs:documentation>Informations Ligne de Piece</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="InfoPrelevement" type="TInfoPrelevement" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Informations Prélèvement</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="InfoAssure" type="TInfoAssure" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Informations Assuré</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="RattachPiece" type="TRattachPiece" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Rattachement Pièce</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="LiensIdent" type="TLiensIdent" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Liens identifiants</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TInfoLignePiece">
+ <xs:sequence>
+ <xs:element name="IdLigne" type="cm:Base_Num6"/>
+ <xs:element name="ObjLignePce" type="cm:Base_Texte160" minOccurs="0"/>
+ <xs:element name="CodProdLoc" type="cm:Base_Alphanum4" minOccurs="0"/>
+ <xs:element name="FinGeo" type="cm:Base_Num9" minOccurs="0"/>
+ <xs:element name="CodEtGeo" type="cm:Base_Alphanum3" minOccurs="0"/>
+ <xs:element name="Nature" type="cm:Base_Texte12"/>
+ <xs:element name="Fonction" type="cm:Base_Num10" minOccurs="0"/>
+ <xs:element name="Operation" type="cm:Base_Num10" minOccurs="0"/>
+ <xs:element name="CptAna" type="cm:Base_Alphanum10" minOccurs="0"/>
+ <xs:element name="TxTva" type="cm:Base_Taux" minOccurs="0"/>
+ <xs:element name="Majo" type="cm:Base_Booleen"/>
+ <xs:element name="DteMajo" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="TxMajo" type="cm:Base_Taux" minOccurs="0"/>
+ <xs:element name="CpteTiers" type="cm:Base_Texte12" minOccurs="0"/>
+ <xs:element name="TvaIntraCom" type="cm:Base_Booleen"/>
+ <xs:element name="CpteTva" type="cm:Base_Alphanum12" minOccurs="0"/>
+ <xs:element name="MtHT" type="cm:Base_Montant"/>
+ <xs:element name="MtTVA" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="MtNonMajo" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="PJRef" type="cm:TPJReference" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TInfoPrelevement">
+ <xs:sequence>
+ <xs:element name="NatPrel" type="TNatPrel"/>
+ <xs:element name="PerPrel" type="TPerPrel"/>
+ <xs:element name="DtePrel" type="cm:Base_Date"/>
+ <xs:element name="MtPrel" type="cm:Base_Montant"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TInfoAssure">
+ <xs:sequence>
+ <xs:element name="CodAssDeb" type="TCodAssDeb"/>
+ <xs:element name="CodAyantDroit" type="TCodAyantDroit" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TRattachPiece">
+ <xs:sequence>
+ <xs:element name="NatPceOrig" type="TNatPceOrig"/>
+ <xs:element name="ExerRat" type="cm:Base_Annee"/>
+ <xs:element name="IdPceOrig" type="cm:Base_Num13"/>
+ <xs:element name="IdLigneOrig" type="cm:Base_Num6" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TLiensIdent">
+ <xs:sequence>
+ <xs:element name="IdEncaissement" type="cm:Base_Num12" minOccurs="0"/>
+ <xs:element name="IdConv" type="cm:Base_Texte25" minOccurs="0"/>
+ <xs:element name="IdMarche" type="cm:Base_Texte30" minOccurs="0"/>
+ <xs:element name="IdCaution" type="cm:Base_Texte25" minOccurs="0"/>
+ <xs:element name="IdEmpruntOrdo" type="cm:Base_Texte24" minOccurs="0"/>
+ <xs:element name="IdActif" type="cm:Base_Texte25" minOccurs="0"/>
+ <xs:element name="IdRegie" type="cm:Base_Texte10" minOccurs="0"/>
+ </xs:sequence>
+
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun">\r
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>\r
+ <xs:include schemaLocation="CommunRecette.xsd"/>\r
+ <xs:complexType name="TBlocLignePiece">\r
+ <xs:sequence>\r
+ <xs:element name="InfoLignePiece" type="TInfoLignePiece">\r
+ <xs:annotation>\r
+ <xs:documentation>Informations Ligne de Piece</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ <xs:element name="InfoRecouvrement" type="TInfoRecouvrement" minOccurs="0">\r
+ <xs:annotation>\r
+ <xs:documentation>Informations Recouvrement</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ <xs:element name="InfoEcheancier" type="TInfoEcheancier" minOccurs="0">\r
+ <xs:annotation>\r
+ <xs:documentation>Informations Echéancier</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ <xs:element name="RattachPieceRec" type="TRattachPiece" minOccurs="0">\r
+ <xs:annotation>\r
+ <xs:documentation>Rattachement Piece</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ <xs:element name="LiensIdentRec" type="TLiensIdent" minOccurs="0">\r
+ <xs:annotation>\r
+ <xs:documentation>Liens identifiants</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ <xs:element name="InfoSuspPour" type="TInfoSuspPour" minOccurs="0">\r
+ <xs:annotation>\r
+ <xs:documentation>Informations suspension et poursuite</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ <xs:element name="InfoContentieux" type="TInfoContentieux" minOccurs="0">\r
+ <xs:annotation>\r
+ <xs:documentation>Informations Contentieux</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ <xs:element name="InfoAmiableContentieux" type="TInfoAmiableContentieux" minOccurs="0" maxOccurs="unbounded">\r
+ <xs:annotation>\r
+ <xs:documentation>Informations amiable et contentieux</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ <xs:element name="InfoPourExt" type="TInfoPourExt" minOccurs="0">\r
+ <xs:annotation>\r
+ <xs:documentation>Informations EPE</xs:documentation>\r
+ </xs:annotation>\r
+ </xs:element>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TInfoLignePiece">\r
+ <xs:sequence>\r
+ <xs:element name="IdLigne" type="cm:Base_Num6"/>\r
+ <xs:element name="ObjLignePce" type="cm:Base_Texte160" minOccurs="0"/>\r
+ <xs:element name="CodProdLoc" type="cm:Base_Alphanum4" minOccurs="0"/>\r
+ <xs:element name="FinGeo" type="cm:Base_Num9" minOccurs="0"/>\r
+ <xs:element name="CodEtGeo" type="cm:Base_Alphanum3" minOccurs="0"/>\r
+ <xs:element name="Nature" type="cm:Base_Texte12" minOccurs="0"/>\r
+ <xs:element name="CptAna" type="cm:Base_Alphanum10" minOccurs="0"/>\r
+ <xs:element name="CpteTiers" type="cm:Base_Texte12" minOccurs="0"/>\r
+ <xs:element name="CpteTva" type="cm:Base_Texte12" minOccurs="0"/>\r
+ <xs:element name="MtHT" type="cm:Base_Montant"/>\r
+ <xs:element name="MtTVA" type="cm:Base_Montant" minOccurs="0"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TInfoRecouvrement">\r
+ <xs:sequence>\r
+ <xs:element name="NbrReco" type="cm:Base_Num4" minOccurs="0"/>\r
+ <xs:element name="MtRecoTot" type="cm:Base_Montant" minOccurs="0"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TInfoEcheancier">\r
+ <xs:sequence>\r
+ <xs:element name="DteDerPai" type="cm:Base_Date"/>\r
+ <xs:element name="NbrPai" type="cm:Base_Num4"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TRattachPiece">\r
+ <xs:sequence>\r
+ <xs:element name="NatPceOrig" type="TNatPceOrig"/>\r
+ <xs:element name="ExerRat" type="cm:Base_Annee"/>\r
+ <xs:element name="IdPceOrig" type="cm:Base_Num13"/>\r
+ <xs:element name="IdLigneOrig" type="cm:Base_Num6" minOccurs="0"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TLiensIdent">\r
+ <xs:sequence>\r
+ <xs:element name="IdEncaissement" type="cm:Base_Num12" minOccurs="0"/>\r
+ <xs:element name="IdConv" type="cm:Base_Texte25" minOccurs="0"/>\r
+ <xs:element name="IdMarche" type="cm:Base_Texte30" minOccurs="0"/>\r
+ <xs:element name="IdCaution" type="cm:Base_Texte25" minOccurs="0"/>\r
+ <xs:element name="IdEmpruntOrdo" type="cm:Base_Texte24" minOccurs="0"/>\r
+ <xs:element name="IdActif" type="cm:Base_Texte25" minOccurs="0"/>\r
+ <xs:element name="IdRegie" type="cm:Base_Texte10" minOccurs="0"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TInfoSuspPour">\r
+ <xs:sequence>\r
+ <xs:element name="CodSuspPour" type="TCodSuspPour"/>\r
+ <xs:element name="DteSuspPour" type="cm:Base_Date"/>\r
+ <xs:element name="DteRepPour" type="cm:Base_Date" minOccurs="0"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TInfoContentieux">\r
+ <xs:sequence>\r
+ <xs:element name="MtCtxTot" type="cm:Base_Montant" minOccurs="0"/>\r
+ <xs:element name="MtMajo" type="cm:Base_Montant" minOccurs="0"/>\r
+ <xs:element name="MtFraisCmdt" type="cm:Base_Montant" minOccurs="0"/>\r
+ <xs:element name="MtFraisSaisie" type="cm:Base_Montant" minOccurs="0"/>\r
+ <xs:element name="MtFraisAutre" type="cm:Base_Montant" minOccurs="0"/>\r
+ <xs:element name="SldPrinc" type="cm:Base_Montant" minOccurs="0"/>\r
+ <xs:element name="SldFrais" type="cm:Base_Montant" minOccurs="0"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TInfoAmiableContentieux">\r
+ <xs:sequence>\r
+ <xs:element name="EtPce" type="TEtPce"/>\r
+ <xs:element name="DteEtPce" type="cm:Base_Date"/>\r
+ <xs:element name="IdAct" type="cm:Base_Num14" minOccurs="0"/>\r
+ <xs:element name="CodActu" type="TCodActu" minOccurs="0"/>\r
+ <xs:element name="DteActu" type="cm:Base_Date" minOccurs="0"/>\r
+ <xs:element name="MtMajo" type="cm:Base_Montant" minOccurs="0"/>\r
+ <xs:element name="MtFraisCmdt" type="cm:Base_Montant" minOccurs="0"/>\r
+ <xs:element name="MtFraisSaisie" type="cm:Base_Montant" minOccurs="0"/>\r
+ <xs:element name="MtFraisAutre" type="cm:Base_Montant" minOccurs="0"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TInfoPourExt">\r
+ <xs:sequence>\r
+ <xs:element name="DteEpe" type="cm:Base_Date"/>\r
+ <xs:element name="IdPostEpe" type="cm:Base_Texte7" minOccurs="0"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">\r
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>\r
+ <xs:include schemaLocation="CommunRecette.xsd"/>\r
+ <xs:complexType name="TRecouvrement">\r
+ <xs:sequence>\r
+ <xs:element name="TypFlux" type="TTypFlux"/>\r
+ <xs:element name="ModRegl" type="TModRegl"/>\r
+ <xs:element name="DteReco" type="cm:Base_Date"/>\r
+ <xs:element name="IdEncaissement" type="cm:Base_Num12"/>\r
+ <xs:element name="MtReco" type="cm:Base_Montant"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun">\r
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>\r
+ <xs:include schemaLocation="CommunRecette.xsd"/>\r
+ <xs:complexType name="TInfoTiersRecette">\r
+ \r
+ \r
+ <xs:sequence>\r
+ <xs:element name="IdTiers" type="cm:Base_Texte15" minOccurs="0"/>\r
+ <xs:element name="DteMalade" type="cm:Base_Date" minOccurs="0"/>\r
+ <xs:element name="NatIdTiers" type="cm:TNatIdTiers" minOccurs="0"/>\r
+ <xs:element name="DteIdTiers" type="cm:Base_Date" minOccurs="0"/>\r
+ <xs:element name="RefTiers" type="cm:Base_Texte30" minOccurs="0"/>\r
+ <xs:element name="CatTiers" type="cm:TCatTiers"/>\r
+ <xs:element name="NatJur" type="cm:TNatJur"/>\r
+ <xs:element name="TypTiers" type="cm:TTypTiers"/>\r
+ <xs:element name="Civilite" type="cm:Base_Texte10" minOccurs="0"/>\r
+ <xs:element name="Nom" type="cm:Base_Texte38"/>\r
+ <xs:element name="ComplNom" type="cm:Base_Texte38" minOccurs="0"/>\r
+ <xs:element name="Prenom" type="cm:Base_Texte38" minOccurs="0"/>\r
+ </xs:sequence>\r
+ \r
+ </xs:complexType>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun">\r
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>\r
+ <xs:include schemaLocation="CommunRecette.xsd"/>\r
+ <xs:complexType name="TBlocPiece">\r
+ <xs:sequence>\r
+ <xs:element name="CodServ" type="cm:Base_Texte10" minOccurs="0"/>\r
+ <xs:element name="Affect" type="cm:Base_Texte10" minOccurs="0"/>\r
+ <xs:element name="CodProd" type="cm:Base_Alphanum2" minOccurs="0"/>\r
+ <xs:element name="IdPce" type="cm:Base_Num13"/>\r
+ <xs:element name="TypPce" type="TTypPce"/>\r
+ <xs:element name="NatPce" type="TNatPce"/>\r
+ <xs:element name="IdRol" type="cm:Base_Num7" minOccurs="0"/>\r
+ <xs:element name="DteAsp" type="cm:Base_Date" minOccurs="0"/>\r
+ <xs:element name="ObjPce" type="cm:Base_Texte160" minOccurs="0"/>\r
+ <xs:element name="DebFact" type="cm:Base_Date" minOccurs="0"/>\r
+ <xs:element name="FinFact" type="cm:Base_Date" minOccurs="0"/>\r
+ <xs:element name="PJRef" type="cm:TPJReference" minOccurs="0" maxOccurs="unbounded"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun">\r
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>\r
+ <xs:include schemaLocation="CommunRecette.xsd"/>\r
+ <xs:complexType name="TBlocPiece">\r
+ <xs:sequence>\r
+ <xs:element name="CodServ" type="cm:Base_Texte10" minOccurs="0"/>\r
+ <xs:element name="Affect" type="cm:Base_Texte10" minOccurs="0"/>\r
+ <xs:element name="CodProd" type="cm:Base_Alphanum2" minOccurs="0"/>\r
+ <xs:element name="IdPce" type="cm:Base_Num8"/>\r
+ <xs:element name="TypPce" type="TTypPce"/>\r
+ <xs:element name="NatPce" type="TNatPce"/>\r
+ <xs:element name="IdRol" type="cm:Base_Num7" minOccurs="0"/>\r
+ <xs:element name="DteAsp" type="cm:Base_Date" minOccurs="0"/>\r
+ <xs:element name="ObjPce" type="cm:Base_Texte160" minOccurs="0"/>\r
+ <xs:element name="EtatPce" type="TEtatPce"/>\r
+ <xs:element name="ObsEtat" type="cm:Base_Texte100" minOccurs="0"/>\r
+ <xs:element name="DtePceInt" type="cm:Base_Date" minOccurs="0"/>\r
+ <xs:element name="DtePcePec" type="cm:Base_Date" minOccurs="0"/>\r
+ <xs:element name="DtePceInst" type="cm:Base_Date" minOccurs="0"/>\r
+ <xs:element name="DteRegulInst" type="cm:Base_Date" minOccurs="0"/>\r
+ <xs:element name="DtePceRej" type="cm:Base_Date" minOccurs="0"/>\r
+ <xs:element name="CodInst-Rej" type="TCodInst-Rej" minOccurs="0"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<!-- 05/05/2006 EPA HLS000224-->\r
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">\r
+ <!-- Regles de codifications communes au PES Recette-->\r
+ <xs:complexType name="TNatInf">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="0"/>\r
+ <xs:enumeration value="1"/>\r
+ <xs:enumeration value="2"/>\r
+ <xs:enumeration value="3"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+ <xs:complexType name="TTypBord">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="01"/>\r
+ <xs:enumeration value="02"/>\r
+ <xs:enumeration value="03"/>\r
+ <xs:enumeration value="04"/>\r
+ <xs:enumeration value="05"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+ <xs:complexType name="TTypPce">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="01"/>\r
+ <xs:enumeration value="02"/>\r
+ <xs:enumeration value="03"/>\r
+ <xs:enumeration value="04"/>\r
+ <xs:enumeration value="05"/>\r
+ <xs:enumeration value="06"/>\r
+ <xs:enumeration value="07"/>\r
+ <xs:enumeration value="08"/>\r
+ <xs:enumeration value="09"/>\r
+ <xs:enumeration value="10"/>\r
+ <xs:enumeration value="11"/>\r
+ <xs:enumeration value="12"/>\r
+ <xs:enumeration value="13"/>\r
+ <xs:enumeration value="14"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+ <xs:complexType name="TNatPce">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="01"/>\r
+ <xs:enumeration value="02"/>\r
+ <xs:enumeration value="03"/>\r
+ <xs:enumeration value="04"/>\r
+ <xs:enumeration value="05"/>\r
+ <xs:enumeration value="06"/>\r
+ <xs:enumeration value="07"/>\r
+ <xs:enumeration value="08"/>\r
+ <xs:enumeration value="09"/>\r
+ <xs:enumeration value="10"/>\r
+ <xs:enumeration value="11"/>\r
+ <xs:enumeration value="12"/>\r
+ <xs:enumeration value="18"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+ <xs:complexType name="TEtatPce">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="01"/>\r
+ <xs:enumeration value="02"/>\r
+ <xs:enumeration value="03"/>\r
+ <xs:enumeration value="04"/>\r
+ <xs:enumeration value="05"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+ <xs:complexType name="TCodInst-Rej">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="01"/>\r
+ <xs:enumeration value="02"/>\r
+ <xs:enumeration value="03"/>\r
+ <xs:enumeration value="04"/>\r
+ <xs:enumeration value="05"/>\r
+ <xs:enumeration value="06"/>\r
+ <xs:enumeration value="07"/>\r
+ <xs:enumeration value="08"/>\r
+ <xs:enumeration value="09"/>\r
+ <xs:enumeration value="10"/>\r
+ <xs:enumeration value="11"/>\r
+ <xs:enumeration value="12"/>\r
+ <xs:enumeration value="13"/>\r
+ <xs:enumeration value="14"/>\r
+ <xs:enumeration value="15"/>\r
+ <xs:enumeration value="16"/>\r
+ <xs:enumeration value="17"/>\r
+ <xs:enumeration value="18"/>\r
+ <xs:enumeration value="19"/>\r
+ <xs:enumeration value="20"/>\r
+ <xs:enumeration value="21"/>\r
+ <xs:enumeration value="22"/>\r
+ <xs:enumeration value="23"/>\r
+ <xs:enumeration value="24"/>\r
+ <xs:enumeration value="25"/>\r
+ <xs:enumeration value="26"/>\r
+ <xs:enumeration value="27"/>\r
+ <xs:enumeration value="28"/>\r
+ <xs:enumeration value="29"/>\r
+ <xs:enumeration value="30"/>\r
+ <xs:enumeration value="31"/>\r
+ <xs:enumeration value="32"/>\r
+ <xs:enumeration value="33"/>\r
+ <xs:enumeration value="34"/>\r
+ <xs:enumeration value="35"/>\r
+ <xs:enumeration value="36"/>\r
+ <xs:enumeration value="37"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+ <xs:complexType name="TNatPrel">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="01"/>\r
+ <xs:enumeration value="02"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+ <xs:complexType name="TPerPrel">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="01"/>\r
+ <xs:enumeration value="02"/>\r
+ <xs:enumeration value="03"/>\r
+ <xs:enumeration value="04"/>\r
+ <xs:enumeration value="05"/>\r
+ <xs:enumeration value="06"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+ <xs:complexType name="TCodAssDeb">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="1"/>\r
+ <xs:enumeration value="2"/>\r
+ <xs:enumeration value="3"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+ <xs:complexType name="TCodAyantDroit">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="01"/>\r
+ <xs:enumeration value="02"/>\r
+ <xs:enumeration value="03"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+ <xs:complexType name="TNatPceOrig">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="01"/>\r
+ <xs:enumeration value="02"/>\r
+ <xs:enumeration value="03"/>\r
+ <xs:enumeration value="04"/>\r
+ <xs:enumeration value="05"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+ <xs:complexType name="TEtPce">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="00"/>\r
+ <xs:enumeration value="01"/>\r
+ <xs:enumeration value="02"/>\r
+ <xs:enumeration value="03"/>\r
+ <xs:enumeration value="04"/>\r
+ <xs:enumeration value="05"/>\r
+ <xs:enumeration value="06"/>\r
+ <xs:enumeration value="07"/>\r
+ <xs:enumeration value="08"/>\r
+ <xs:enumeration value="09"/>\r
+ <xs:enumeration value="10"/>\r
+ <xs:enumeration value="11"/>\r
+ <xs:enumeration value="12"/>\r
+ <xs:enumeration value="13"/>\r
+ <xs:enumeration value="14"/>\r
+ <xs:enumeration value="15"/>\r
+ <xs:enumeration value="16"/>\r
+ <xs:enumeration value="17"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+ <xs:complexType name="TCodActu">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="01"/>\r
+ <xs:enumeration value="02"/>\r
+ <xs:enumeration value="03"/>\r
+ <xs:enumeration value="04"/>\r
+ <xs:enumeration value="05"/>\r
+ <xs:enumeration value="06"/>\r
+ <xs:enumeration value="07"/>\r
+ <xs:enumeration value="08"/>\r
+ <xs:enumeration value="09"/>\r
+ <xs:enumeration value="10"/>\r
+ <xs:enumeration value="11"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+ <xs:complexType name="TCodSuspPour">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="01"/>\r
+ <xs:enumeration value="02"/>\r
+ <xs:enumeration value="03"/>\r
+ <xs:enumeration value="04"/>\r
+ <xs:enumeration value="05"/>\r
+ <xs:enumeration value="06"/>\r
+ <xs:enumeration value="07"/>\r
+ <xs:enumeration value="08"/>\r
+ <xs:enumeration value="09"/>\r
+ <xs:enumeration value="10"/>\r
+ <xs:enumeration value="11"/>\r
+ <xs:enumeration value="12"/>\r
+ <xs:enumeration value="13"/>\r
+ <xs:enumeration value="14"/>\r
+ <xs:enumeration value="15"/>\r
+ <xs:enumeration value="16"/>\r
+ <xs:enumeration value="17"/>\r
+ <xs:enumeration value="18"/>\r
+ <xs:enumeration value="19"/>\r
+ <xs:enumeration value="20"/>\r
+ <xs:enumeration value="21"/>\r
+ <xs:enumeration value="22"/>\r
+ <xs:enumeration value="23"/>\r
+ <xs:enumeration value="24"/>\r
+ <xs:enumeration value="25"/>\r
+ <xs:enumeration value="26"/>\r
+ <xs:enumeration value="27"/>\r
+ <xs:enumeration value="28"/>\r
+ <xs:enumeration value="29"/>\r
+ <xs:enumeration value="30"/>\r
+ <xs:enumeration value="31"/>\r
+ <xs:enumeration value="32"/>\r
+ <xs:enumeration value="33"/>\r
+ <xs:enumeration value="34"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+ <xs:complexType name="TTypFlux">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="01"/>\r
+ <xs:enumeration value="02"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+ <xs:complexType name="TModRegl">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="01"/>\r
+ <xs:enumeration value="02"/>\r
+ <xs:enumeration value="03"/>\r
+ <xs:enumeration value="04"/>\r
+ <xs:enumeration value="05"/>\r
+ <xs:enumeration value="06"/>\r
+ <xs:enumeration value="07"/>\r
+ <xs:enumeration value="08"/>\r
+ <xs:enumeration value="09"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+ <xs:complexType name="TTypTiers">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="01"/>\r
+ <xs:enumeration value="02"/>\r
+ <xs:enumeration value="03"/>\r
+ <xs:enumeration value="04"/>\r
+ <xs:enumeration value="05"/>\r
+ <xs:enumeration value="06"/>\r
+ <xs:enumeration value="07"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/recette/r0/aller" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.minefi.gouv.fr/cp/helios/pes_v2/recette/r0/aller" elementFormDefault="unqualified">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="../../Class_Signature.xsd"/>
+ <xs:include schemaLocation="CommunRecette.xsd"/>
+ <xs:include schemaLocation="Class_BordereauRecetteAller.xsd"/>
+ <xs:include schemaLocation="Class_TitreAller.xsd"/>
+ <xs:include schemaLocation="Class_LigneTitreAller.xsd"/>
+ <xs:include schemaLocation="Class_RecouvrementRecette.xsd"/>
+ <xs:include schemaLocation="Class_TiersRecette.xsd"/>
+ <xs:complexType name="TPES_RecetteAller">
+ <xs:sequence>
+ <xs:element name="EnTeteRecette">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="IdVer" type="cm:Base_Num2"/>
+ <xs:element name="InfoDematerialisee" type="cm:Base_Booleen" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Bordereau" type="TBordereau" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TBordereau">
+ <xs:sequence>
+ <xs:element name="BlocBordereau" type="TBlocBordereau"/>
+ <xs:element name="Piece" type="TPiece" maxOccurs="unbounded"/>
+ <xs:group ref="ds:PESSignatureGroup" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="Id" type="xs:ID" use="optional"/>
+ </xs:complexType>
+ <xs:complexType name="TPiece">
+ <xs:sequence>
+ <xs:element name="BlocPiece" type="TBlocPiece"/>
+ <xs:element name="LigneDePiece" type="TLigneDePiece" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TLigneDePiece">
+ <xs:sequence>
+ <xs:element name="BlocLignePiece" type="TBlocLignePiece"/>
+ <xs:element name="Tiers" type="TTiers" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="Recouvrement" type="TRecouvrement" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TTiers">
+ <xs:sequence>
+ <xs:element name="InfoTiers" type="TInfoTiersRecette"/>
+ <xs:element name="Adresse" type="cm:TAdresse" minOccurs="0"/>
+ <xs:element name="CpteBancaire" type="cm:TBancaire" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/recette/r0/retour" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns="http://www.minefi.gouv.fr/cp/helios/pes_v2/recette/r0/retour" elementFormDefault="unqualified">\r
+ <!-- Directives d'inclusion -->\r
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>\r
+ <xs:include schemaLocation="CommunRecette.xsd"/>\r
+ <xs:include schemaLocation="Class_BordereauRecetteRetour.xsd"/>\r
+ <xs:include schemaLocation="Class_TitreRetour.xsd"/>\r
+ <xs:include schemaLocation="Class_LigneTitreRetour.xsd"/>\r
+ <xs:include schemaLocation="Class_RecouvrementRecette.xsd"/>\r
+ <xs:include schemaLocation="Class_TiersRecette.xsd"/>\r
+ <xs:complexType name="TPES_RecetteRetour">\r
+ <xs:sequence>\r
+ <xs:element name="EnTeteRecette">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="IdVer" type="cm:Base_Num2"/>\r
+ <xs:element name="NatInf" type="TNatInf"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="Bordereau" type="TBordereau" maxOccurs="unbounded"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TBordereau">\r
+ <xs:sequence>\r
+ <xs:element name="BlocBordereau" type="TBlocBordereau"/>\r
+ <xs:element name="Piece" type="TPiece" maxOccurs="unbounded"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TPiece">\r
+ <xs:sequence>\r
+ <xs:element name="BlocPiece" type="TBlocPiece"/>\r
+ <xs:element name="LigneDePiece" type="TLigneDePiece" maxOccurs="unbounded"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TLigneDePiece">\r
+ <xs:sequence>\r
+ <xs:element name="BlocLignePiece" type="TBlocLignePiece"/>\r
+ <xs:element name="Tiers" type="TTiers" minOccurs="0" maxOccurs="unbounded"/>\r
+ <xs:element name="Recouvrement" type="TRecouvrement" minOccurs="0" maxOccurs="unbounded"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TTiers">\r
+ <xs:sequence>\r
+ <xs:element name="InfoTiers" type="TInfoTiersRecette"/>\r
+ <xs:element name="Adresse" type="cm:TAdresse" minOccurs="0"/>\r
+ <xs:element name="CpteBancaire" type="cm:TBancaire" minOccurs="0"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">\r
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>\r
+ <xs:include schemaLocation="CommunRole.xsd"/>\r
+ <xs:complexType name="TBlocArticle">\r
+ <xs:sequence>\r
+ <xs:element name="InfoArticle" type="TInfoArticle"/>\r
+ <xs:element name="InfoPrelevement" type="TInfoPrelevement" minOccurs="0"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TInfoArticle">\r
+ <xs:sequence>\r
+ <xs:element name="CodServ" type="cm:Base_Texte10" minOccurs="0"/>\r
+ <xs:element name="Affect" type="cm:Base_Texte10" minOccurs="0"/>\r
+ <xs:element name="IdPce" type="cm:Base_Num8"/>\r
+ <xs:element name="PJRef" type="cm:TPJReference" minOccurs="0" maxOccurs="unbounded"/>\r
+ <xs:element name="NumDette" type="cm:Base_Num15" minOccurs="0"/>\r
+ <xs:element name="Per" type="cm:Base_Num1" minOccurs="0"/>\r
+ <xs:element name="Cle1" type="cm:Base_Num1" minOccurs="0"/>\r
+ <xs:element name="Cle2" type="cm:Base_Alphanum1" minOccurs="0"/>\r
+ <xs:element name="CpteTiers" type="cm:Base_Num12" minOccurs="0"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TInfoPrelevement">\r
+ <xs:sequence>\r
+ <xs:element name="NatPrel" type="TNatPrel"/>\r
+ <xs:element name="PerPrel" type="TPerPrel"/>\r
+ <xs:element name="DtePrel" type="cm:Base_Date"/>\r
+ <xs:element name="MtPrel" type="cm:Base_Montant"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">\r
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>\r
+ <xs:include schemaLocation="CommunRole.xsd"/>\r
+ <xs:complexType name="TBlocArticle">\r
+ <xs:sequence>\r
+ <xs:element name="CodServ" type="cm:Base_Texte10" minOccurs="0"/>\r
+ <xs:element name="Affect" type="cm:Base_Texte10" minOccurs="0"/>\r
+ <xs:element name="IdPce" type="cm:Base_Num12"/>\r
+ <xs:element name="NumDette" type="cm:Base_Num15" minOccurs="0"/>\r
+ <xs:element name="Per" type="cm:Base_Num1" minOccurs="0"/>\r
+ <xs:element name="Cle1" type="cm:Base_Num1" minOccurs="0"/>\r
+ <xs:element name="Cle2" type="cm:Base_Alphanum1" minOccurs="0"/>\r
+ <xs:element name="CpteTiers" type="cm:Base_Num12" minOccurs="0"/>\r
+ <xs:element name="EtatPce" type="TEtatPce"/>\r
+ <xs:element name="ObsEtat" type="cm:Base_Texte100" minOccurs="0"/>\r
+ <xs:element name="DtePceInt" type="cm:Base_Date"/>\r
+ <xs:element name="DtePcePec" type="cm:Base_Date"/>\r
+ <xs:element name="DtePceInst" type="cm:Base_Date" minOccurs="0"/>\r
+ <xs:element name="DteRegulInst" type="cm:Base_Date" minOccurs="0"/>\r
+ <xs:element name="DtePceRej" type="cm:Base_Date" minOccurs="0"/>\r
+ <xs:element name="CodInst-Rej" type="TCodInst-Rej" minOccurs="0"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">\r
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>\r
+ <xs:include schemaLocation="CommunRole.xsd"/>\r
+ <xs:complexType name="TRecouvrement">\r
+ <xs:sequence>\r
+ <xs:element name="TypFlux" type="TTypFlux"/>\r
+ <xs:element name="ModRegl" type="TModRegl"/>\r
+ <xs:element name="DteReco" type="cm:Base_Date"/>\r
+ <xs:element name="IdEncaissement" type="cm:Base_Num12"/>\r
+ <xs:element name="MtReco" type="cm:Base_Montant"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun">\r
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>\r
+ <xs:include schemaLocation="CommunRole.xsd"/>\r
+ <xs:complexType name="TBlocRole">\r
+ <xs:sequence>\r
+ <xs:element name="CodAct" type="TCodAct"/>\r
+ <xs:element name="Exer" type="cm:Base_Annee"/>\r
+ <xs:element name="IdRol" type="cm:Base_Num7"/>\r
+ <xs:element name="TypRol" type="TTypRol"/>\r
+ <xs:element name="DteRol" type="cm:Base_Date"/>\r
+ <xs:element name="MtRolHt" type="cm:Base_Montant"/>\r
+ <xs:element name="MtRolTVA" type="cm:Base_Montant" minOccurs="0"/>\r
+ <xs:element name="DteAsp" type="cm:Base_Date" minOccurs="0"/>\r
+ <xs:element name="Objet" type="cm:Base_Texte160" minOccurs="0"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">\r
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>\r
+ <xs:include schemaLocation="CommunRole.xsd"/>\r
+ <xs:complexType name="TBlocRole">\r
+ <xs:sequence>\r
+ <xs:element name="CodAct" type="TCodAct"/>\r
+ <xs:element name="Exer" type="cm:Base_Annee"/>\r
+ <xs:element name="IdRol" type="cm:Base_Num7"/>\r
+ <xs:element name="TypRol" type="TTypRol"/>\r
+ <xs:element name="DteRol" type="cm:Base_Date"/>\r
+ <xs:element name="MtRolHt" type="cm:Base_Montant"/>\r
+ <xs:element name="MtRolTVA" type="cm:Base_Montant" minOccurs="0"/>\r
+ <xs:element name="DteAsp" type="cm:Base_Date" minOccurs="0"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">\r
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>\r
+ <xs:include schemaLocation="CommunRole.xsd"/>\r
+ <xs:complexType name="TBlocSousArticle">\r
+ <xs:sequence>\r
+ <xs:element name="InfoSousArticle" type="TInfoSousArticle"/>\r
+ <xs:element name="InfoCollBen" type="TInfoCollBen" minOccurs="0"/>\r
+ <xs:element name="RattachPiece" type="TRattachPiece" minOccurs="0"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TInfoSousArticle">\r
+ <xs:sequence>\r
+ <xs:element name="IdLigne" type="cm:Base_Num6"/>\r
+ <xs:element name="CodProcLoc" type="cm:Base_Alphanum4"/>\r
+ <xs:element name="ObjPce" type="cm:Base_Texte160" minOccurs="0"/>\r
+ <xs:element name="Majo" type="cm:Base_Booleen"/>\r
+ <xs:element name="DteMajo" type="cm:Base_Date" minOccurs="0"/>\r
+ <xs:element name="TxMajo" type="cm:Base_Taux" minOccurs="0"/>\r
+ <xs:element name="MtHT" type="cm:Base_Montant"/>\r
+ <xs:element name="MtTVA" type="cm:Base_Montant" minOccurs="0"/>\r
+ <xs:element name="MtNonMajo" type="cm:Base_Montant" minOccurs="0"/>\r
+ <!--xs:element name="Quantite" type="cm:Base_Montant" minOccurs="0"/>\r
+ <xs:element name="MtUnitaire" type="cm:Base_Montant" minOccurs="0"/-->\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TInfoCollBen">\r
+ <xs:sequence>\r
+ <xs:element name="IdCollBen" type="cm:Base_Num14"/>\r
+ <xs:element name="CodCollBen" type="cm:Base_Alphanum3"/>\r
+ <xs:element name="CodBudBen" type="cm:Base_Alphanum2" minOccurs="0"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TRattachPiece">\r
+ <xs:sequence>\r
+ <xs:element name="ExerRat" type="cm:Base_Annee"/>\r
+ <xs:element name="IdRolOrig" type="cm:Base_Num7"/>\r
+ <xs:element name="IdPceOrig" type="cm:Base_Num8"/>\r
+ <xs:element name="IdLigneOrig" type="cm:Base_Num6" minOccurs="0"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<!-- edited with XMLSPY v5 rel. 2 U (http://www.xmlspy.com) by SERGE MURET (SEMA GROUP SA) -->\r
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">\r
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>\r
+ <xs:include schemaLocation="CommunRole.xsd"/>\r
+ <xs:complexType name="TBlocSousArticle">\r
+ <xs:sequence>\r
+ <xs:element name="InfoSousArticle" type="TInfoSousArticle"/>\r
+ <xs:element name="InfoCollBen" type="TInfoCollBen" minOccurs="0"/>\r
+ <xs:element name="InfoRecouvrement" type="TInfoRecouvrement" minOccurs="0"/>\r
+ <xs:element name="InfoEcheancier" type="TInfoEcheancier" minOccurs="0"/>\r
+ <xs:element name="RattachPiece" type="TRattachPiece" minOccurs="0"/>\r
+ <xs:element name="InfoSuspPour" type="TInfoSuspPour" minOccurs="0"/>\r
+ <xs:element name="InfoContentieux" type="TInfoContentieux" minOccurs="0"/>\r
+ <xs:element name="InfoAmiableContentieux" type="TInfoAmiableContentieux" minOccurs="0" maxOccurs="unbounded"/>\r
+ <xs:element name="InfoPourExt" type="TInfoPourExt" minOccurs="0"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TInfoSousArticle">\r
+ <xs:sequence>\r
+ <xs:element name="IdLigne" type="cm:Base_Num6"/>\r
+ <xs:element name="CodProcLoc" type="cm:Base_Alphanum4" minOccurs="0"/>\r
+ <xs:element name="ObjPce" type="cm:Base_Texte160" minOccurs="0"/>\r
+ <xs:element name="MtHT" type="cm:Base_Montant"/>\r
+ <xs:element name="MtTVA" type="cm:Base_Montant" minOccurs="0"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TInfoCollBen">\r
+ <xs:sequence>\r
+ <xs:element name="IdCollBen" type="cm:Base_Num14"/>\r
+ <xs:element name="CodCollBen" type="cm:Base_Alphanum3"/>\r
+ <xs:element name="CodBudBen" type="cm:Base_Alphanum2" minOccurs="0"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TInfoRecouvrement">\r
+ <xs:sequence>\r
+ <xs:element name="NbrReco" type="cm:Base_Num4"/>\r
+ <xs:element name="MtRecoTot" type="cm:Base_Montant" minOccurs="0"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TInfoEcheancier">\r
+ <xs:sequence>\r
+ <xs:element name="DteDerPay" type="cm:Base_Date"/>\r
+ <xs:element name="NbrPay" type="cm:Base_Num4"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TRattachPiece">\r
+ <xs:sequence>\r
+ <xs:element name="ExerRat" type="cm:Base_Annee"/>\r
+ <xs:element name="IdRolOrig" type="cm:Base_Num7"/>\r
+ <xs:element name="IdPceOrig" type="cm:Base_Num8"/>\r
+ <xs:element name="IdLigneOrig" type="cm:Base_Num6" minOccurs="0"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TInfoSuspPour">\r
+ <xs:sequence>\r
+ <xs:element name="CodSuspPour" type="TCodSuspPour"/>\r
+ <xs:element name="DteSuspPour" type="cm:Base_Date"/>\r
+ <xs:element name="DteRepPour" type="cm:Base_Date" minOccurs="0"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TInfoContentieux">\r
+ <xs:sequence>\r
+ <xs:element name="MtCtxTot" type="cm:Base_Montant" minOccurs="0"/>\r
+ <xs:element name="MtMajo" type="cm:Base_Montant" minOccurs="0"/>\r
+ <xs:element name="MtFraisCdt" type="cm:Base_Montant" minOccurs="0"/>\r
+ <xs:element name="MtFraisSais" type="cm:Base_Montant" minOccurs="0"/>\r
+ <xs:element name="MtFraisAutre" type="cm:Base_Montant" minOccurs="0"/>\r
+ <xs:element name="SldPrinc" type="cm:Base_Montant" minOccurs="0"/>\r
+ <xs:element name="SldMajo" type="cm:Base_Montant" minOccurs="0"/>\r
+ <xs:element name="SldFrais" type="cm:Base_Montant" minOccurs="0"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TInfoAmiableContentieux">\r
+ <xs:sequence>\r
+ <xs:element name="EtRec" type="TEtRec"/>\r
+ <xs:element name="EtatPrealable" type="cm:Base_Booleen"/>\r
+ <xs:element name="DteEtPce" type="cm:Base_Date"/>\r
+ <xs:element name="IdAct" type="cm:Base_Num14" minOccurs="0"/>\r
+ <xs:element name="CodActu" type="TCodActu" minOccurs="0"/>\r
+ <xs:element name="DteActu" type="cm:Base_Date" minOccurs="0"/>\r
+ <xs:element name="MtMajo" type="cm:Base_Montant" minOccurs="0"/>\r
+ <xs:element name="MtFrais" type="cm:Base_Montant" minOccurs="0"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TInfoPourExt">\r
+ <xs:sequence>\r
+ <xs:element name="DteEpe" type="cm:Base_Date"/>\r
+ <xs:element name="IdPostEpe" type="cm:Base_Texte7"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun">\r
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>\r
+ <xs:include schemaLocation="CommunRole.xsd"/>\r
+ <xs:complexType name="TInfoTiersRole">\r
+ \r
+ <xs:sequence>\r
+ <xs:element name="IdTiers" type="cm:Base_Texte15" minOccurs="0"/>\r
+ <xs:element name="DteMalade" type="cm:Base_Date" minOccurs="0"/>\r
+ <xs:element name="NatIdTiers" type="cm:TNatIdTiers" minOccurs="0"/>\r
+ <xs:element name="DteIdTiers" type="cm:Base_Date" minOccurs="0"/>\r
+ <xs:element name="RefTiers" type="cm:Base_Texte30" minOccurs="0"/>\r
+ <xs:element name="CatTiers" type="cm:TCatTiers"/>\r
+ <xs:element name="NatJur" type="cm:TNatJur"/>\r
+ <xs:element name="TypTiers" type="cm:TTypTiers"/>\r
+ <xs:element name="Civilite" type="cm:Base_Texte10" minOccurs="0"/>\r
+ <xs:element name="Nom" type="cm:Base_Texte38"/>\r
+ <xs:element name="ComplNom" type="cm:Base_Texte38" minOccurs="0"/>\r
+ <xs:element name="Prenom" type="cm:Base_Texte38" minOccurs="0"/>\r
+ </xs:sequence>\r
+ \r
+ \r
+ </xs:complexType>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">\r
+ <xs:complexType name="TCodAct">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="01"/>\r
+ <xs:enumeration value="02"/>\r
+ <xs:enumeration value="03"/>\r
+ <xs:enumeration value="04"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+ <xs:complexType name="TNatInf">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="0"/>\r
+ <xs:enumeration value="1"/>\r
+ <xs:enumeration value="2"/>\r
+ <xs:enumeration value="3"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+ <xs:complexType name="TTypRol">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="01"/>\r
+ <xs:enumeration value="02"/>\r
+ <xs:enumeration value="03"/>\r
+ <xs:enumeration value="04"/>\r
+ <xs:enumeration value="05"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+ <xs:complexType name="TEtatPce">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="01"/>\r
+ <xs:enumeration value="02"/>\r
+ <xs:enumeration value="03"/>\r
+ <xs:enumeration value="04"/>\r
+ <xs:enumeration value="05"/>\r
+ <xs:enumeration value="06"/>\r
+ <xs:enumeration value="07"/>\r
+ <xs:enumeration value="08"/>\r
+ <xs:enumeration value="09"/>\r
+ <xs:enumeration value="10"/>\r
+ <xs:enumeration value="11"/>\r
+ <xs:enumeration value="12"/>\r
+ <xs:enumeration value="13"/>\r
+ <xs:enumeration value="14"/>\r
+ <xs:enumeration value="15"/>\r
+ <xs:enumeration value="16"/>\r
+ <xs:enumeration value="17"/>\r
+ <xs:enumeration value="18"/>\r
+ <xs:enumeration value="19"/>\r
+ <xs:enumeration value="20"/>\r
+ <xs:enumeration value="21"/>\r
+ <xs:enumeration value="22"/>\r
+ <xs:enumeration value="23"/>\r
+ <xs:enumeration value="24"/>\r
+ <xs:enumeration value="25"/>\r
+ <xs:enumeration value="26"/>\r
+ <xs:enumeration value="27"/>\r
+ <xs:enumeration value="28"/>\r
+ <xs:enumeration value="29"/>\r
+ <xs:enumeration value="30"/>\r
+ <xs:enumeration value="31"/>\r
+ <xs:enumeration value="32"/>\r
+ <xs:enumeration value="33"/>\r
+ <xs:enumeration value="34"/>\r
+ <xs:enumeration value="35"/>\r
+ <xs:enumeration value="36"/>\r
+ <xs:enumeration value="37"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+ <xs:complexType name="TCodInst-Rej">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="01"/>\r
+ <xs:enumeration value="02"/>\r
+ <xs:enumeration value="03"/>\r
+ <xs:enumeration value="04"/>\r
+ <xs:enumeration value="05"/>\r
+ <xs:enumeration value="06"/>\r
+ <xs:enumeration value="07"/>\r
+ <xs:enumeration value="08"/>\r
+ <xs:enumeration value="09"/>\r
+ <xs:enumeration value="10"/>\r
+ <xs:enumeration value="11"/>\r
+ <xs:enumeration value="12"/>\r
+ <xs:enumeration value="13"/>\r
+ <xs:enumeration value="14"/>\r
+ <xs:enumeration value="15"/>\r
+ <xs:enumeration value="16"/>\r
+ <xs:enumeration value="17"/>\r
+ <xs:enumeration value="18"/>\r
+ <xs:enumeration value="19"/>\r
+ <xs:enumeration value="20"/>\r
+ <xs:enumeration value="21"/>\r
+ <xs:enumeration value="22"/>\r
+ <xs:enumeration value="23"/>\r
+ <xs:enumeration value="24"/>\r
+ <xs:enumeration value="25"/>\r
+ <xs:enumeration value="26"/>\r
+ <xs:enumeration value="27"/>\r
+ <xs:enumeration value="28"/>\r
+ <xs:enumeration value="29"/>\r
+ <xs:enumeration value="30"/>\r
+ <xs:enumeration value="31"/>\r
+ <xs:enumeration value="32"/>\r
+ <xs:enumeration value="33"/>\r
+ <xs:enumeration value="34"/>\r
+ <xs:enumeration value="35"/>\r
+ <xs:enumeration value="36"/>\r
+ <xs:enumeration value="37"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+ <xs:complexType name="TNatPrel">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="01"/>\r
+ <xs:enumeration value="02"/>\r
+ <xs:enumeration value="03"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+ <xs:complexType name="TPerPrel">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="00"/>\r
+ <xs:enumeration value="01"/>\r
+ <xs:enumeration value="02"/>\r
+ <xs:enumeration value="03"/>\r
+ <xs:enumeration value="04"/>\r
+ <xs:enumeration value="05"/>\r
+ <xs:enumeration value="06"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+ <xs:complexType name="TEtRec">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="00"/>\r
+ <xs:enumeration value="01"/>\r
+ <xs:enumeration value="02"/>\r
+ <xs:enumeration value="03"/>\r
+ <xs:enumeration value="04"/>\r
+ <xs:enumeration value="05"/>\r
+ <xs:enumeration value="06"/>\r
+ <xs:enumeration value="07"/>\r
+ <xs:enumeration value="08"/>\r
+ <xs:enumeration value="09"/>\r
+ <xs:enumeration value="10"/>\r
+ <xs:enumeration value="11"/>\r
+ <xs:enumeration value="12"/>\r
+ <xs:enumeration value="13"/>\r
+ <xs:enumeration value="14"/>\r
+ <xs:enumeration value="15"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+ <xs:complexType name="TCodActu">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="01"/>\r
+ <xs:enumeration value="02"/>\r
+ <xs:enumeration value="03"/>\r
+ <xs:enumeration value="04"/>\r
+ <xs:enumeration value="05"/>\r
+ <xs:enumeration value="06"/>\r
+ <xs:enumeration value="07"/>\r
+ <xs:enumeration value="08"/>\r
+ <xs:enumeration value="09"/>\r
+ <xs:enumeration value="10"/>\r
+ <xs:enumeration value="11"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+ <xs:complexType name="TCodSuspPour">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="01"/>\r
+ <xs:enumeration value="02"/>\r
+ <xs:enumeration value="03"/>\r
+ <xs:enumeration value="04"/>\r
+ <xs:enumeration value="05"/>\r
+ <xs:enumeration value="06"/>\r
+ <xs:enumeration value="07"/>\r
+ <xs:enumeration value="08"/>\r
+ <xs:enumeration value="09"/>\r
+ <xs:enumeration value="10"/>\r
+ <xs:enumeration value="11"/>\r
+ <xs:enumeration value="12"/>\r
+ <xs:enumeration value="13"/>\r
+ <xs:enumeration value="14"/>\r
+ <xs:enumeration value="15"/>\r
+ <xs:enumeration value="16"/>\r
+ <xs:enumeration value="17"/>\r
+ <xs:enumeration value="18"/>\r
+ <xs:enumeration value="19"/>\r
+ <xs:enumeration value="20"/>\r
+ <xs:enumeration value="21"/>\r
+ <xs:enumeration value="22"/>\r
+ <xs:enumeration value="23"/>\r
+ <xs:enumeration value="24"/>\r
+ <xs:enumeration value="25"/>\r
+ <xs:enumeration value="26"/>\r
+ <xs:enumeration value="27"/>\r
+ <xs:enumeration value="28"/>\r
+ <xs:enumeration value="29"/>\r
+ <xs:enumeration value="30"/>\r
+ <xs:enumeration value="31"/>\r
+ <xs:enumeration value="32"/>\r
+ <xs:enumeration value="33"/>\r
+ <xs:enumeration value="34"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+ <xs:complexType name="TTypFlux">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="01"/>\r
+ <xs:enumeration value="02"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+ <xs:complexType name="TModRegl">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="01"/>\r
+ <xs:enumeration value="02"/>\r
+ <xs:enumeration value="03"/>\r
+ <xs:enumeration value="04"/>\r
+ <xs:enumeration value="05"/>\r
+ <xs:enumeration value="06"/>\r
+ <xs:enumeration value="07"/>\r
+ <xs:enumeration value="08"/>\r
+ <xs:enumeration value="09"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+ <xs:complexType name="TTypTiers">\r
+ <xs:attribute name="V" use="required">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="01"/>\r
+ <xs:enumeration value="02"/>\r
+ <xs:enumeration value="03"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:attribute>\r
+ </xs:complexType>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/role/r0/aller" xmlns="http://www.minefi.gouv.fr/cp/helios/pes_v2/role/r0/aller" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="unqualified">\r
+ <!-- Directives d'inclusion -->\r
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>\r
+ <xs:include schemaLocation="CommunRole.xsd"/>\r
+ <xs:include schemaLocation="Class_RoleAller.xsd"/>\r
+ <xs:include schemaLocation="Class_ArticleAller.xsd"/>\r
+ <xs:include schemaLocation="Class_SousArticleAller.xsd"/>\r
+ <xs:include schemaLocation="Class_RecouvrementRole.xsd"/>\r
+ <xs:include schemaLocation="Class_TiersRole.xsd"/>\r
+ <xs:complexType name="TPES_RoleAller">\r
+ <xs:sequence>\r
+ <xs:element name="EnTeteRole">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="IdVer" type="cm:Base_Num2"/>\r
+ <xs:element name="InfoDematerialisee" type="cm:Base_Booleen" minOccurs="0"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="Role" type="TRole" maxOccurs="unbounded"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TRole">\r
+ <xs:sequence>\r
+ <xs:element name="BlocRole" type="TBlocRole"/>\r
+ <xs:element name="Article" type="TArticle" maxOccurs="unbounded"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TArticle">\r
+ <xs:sequence>\r
+ <xs:element name="BlocArticle" type="TBlocArticle"/>\r
+ <xs:element name="SousArticle" type="TSousArticle" maxOccurs="unbounded"/>\r
+ <xs:element name="Tiers" type="TTiers" minOccurs="0" maxOccurs="unbounded"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TSousArticle">\r
+ <xs:sequence>\r
+ <xs:element name="BlocSousArticle" type="TBlocSousArticle"/>\r
+ <xs:element name="Recouvrement" type="TRecouvrement" minOccurs="0" maxOccurs="unbounded"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TTiers">\r
+ <xs:sequence>\r
+ <xs:element name="InfoTiers" type="TInfoTiersRole"/>\r
+ <xs:element name="Adresse" type="cm:TAdresse" minOccurs="0"/>\r
+ <xs:element name="CpteBancaire" type="cm:TBancaire" minOccurs="0"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?> <!--EPA HLS00039776 20060626-->\r
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/role/r0/retour" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns="http://www.minefi.gouv.fr/cp/helios/pes_v2/role/r0/retour" elementFormDefault="unqualified">\r
+ <!-- Directives d'inclusion -->\r
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>\r
+ <xs:include schemaLocation="CommunRole.xsd"/>\r
+ <xs:include schemaLocation="Class_RoleRetour.xsd"/>\r
+ <xs:include schemaLocation="Class_ArticleRetour.xsd"/>\r
+ <xs:include schemaLocation="Class_SousArticleRetour.xsd"/>\r
+ <xs:include schemaLocation="Class_RecouvrementRole.xsd"/>\r
+ <xs:include schemaLocation="Class_TiersRole.xsd"/>\r
+ <!-- Fin des directives d'inclusios-->\r
+ <xs:complexType name="TPES_RoleRetour">\r
+ <xs:sequence>\r
+ <xs:element name="EnTeteRole">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="IdVer" type="cm:Base_Num2"/>\r
+ <xs:element name="NatInf" type="TNatInf"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="Role" type="TRole" maxOccurs="unbounded"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TRole">\r
+ <xs:sequence>\r
+ <xs:element name="BlocRole" type="TBlocRole"/>\r
+ <xs:element name="Article" type="TArticle" maxOccurs="unbounded"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TArticle">\r
+ <xs:sequence>\r
+ <xs:element name="BlocArticle" type="TBlocArticle"/>\r
+ <xs:element name="SousArticle" type="TSousArticle" minOccurs="0" maxOccurs="unbounded"/>\r
+ <xs:element name="Tiers" type="TTiers" minOccurs="0" maxOccurs="unbounded"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TSousArticle">\r
+ <xs:sequence>\r
+ <xs:element name="BlocSousArticle" type="TBlocSousArticle"/>\r
+ <xs:element name="Recouvrement" type="TRecouvrement" minOccurs="0" maxOccurs="unbounded"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TTiers">\r
+ <xs:sequence>\r
+ <xs:element name="InfoTiers" type="TInfoTiersRole"/>\r
+ <xs:element name="Adresse" type="cm:TAdresse" minOccurs="0"/>\r
+ <xs:element name="CpteBancaire" type="cm:TBancaire" minOccurs="0"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun">\r
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../Class_SchemasCommuns.xsd"/>\r
+ <xs:element name="Acquit" type="TAcquit"/>\r
+ <xs:complexType name="TAcquit">\r
+ <xs:sequence>\r
+ <xs:element name="NomFic" type="cm:Base_Texte100"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun">\r
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../Class_SchemasCommuns.xsd"/>\r
+ <xs:element name="NonAcquit" type="TNonAcquit"/>\r
+ <xs:complexType name="TNonAcquit">\r
+ <xs:sequence>\r
+ <xs:element name="NomFic" type="cm:Base_Texte100"/>\r
+ <xs:element name="Motif" type="cm:Base_Texte100"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/heliso/pes_v2/Rev0/aller" xmlns="http://www.minefi.gouv.fr/cp/heliso/pes_v2/Rev0/aller" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" elementFormDefault="unqualified">\r
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../Class_SchemasCommuns.xsd"/>\r
+ <xs:include schemaLocation="Class_Acquit.xsd"/>\r
+ <xs:element name="PES_Acquit">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="Enveloppe" type="cm:TEnveloppe"/>\r
+ <xs:element name="Acquit" type="TAcquit"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/aller" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" xmlns:xad="http://uri.etsi.org/01903/v1.1.1#" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/aller" xmlns:rola="http://www.minefi.gouv.fr/cp/helios/pes_v2/role/r0/aller" xmlns:reca="http://www.minefi.gouv.fr/cp/helios/pes_v2/recette/r0/aller" xmlns:depa="http://www.minefi.gouv.fr/cp/helios/pes_v2/depense/r0/aller" xmlns:buda="http://www.minefi.gouv.fr/cp/helios/pes_v2/budget/r0/aller" xmlns:mara="http://www.minefi.gouv.fr/cp/helios/pes_v2/marche/r0/aller" xmlns:acta="http://www.minefi.gouv.fr/cp/helios/pes_v2/etatactif/r0/aller" xmlns:empa="http://www.minefi.gouv.fr/cp/helios/pes_v2/emprunt/r0/aller" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" elementFormDefault="unqualified">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/budget/r0/aller" schemaLocation="../NS_Budget/r0/PES_BudgetAller.xsd"/>
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/depense/r0/aller" schemaLocation="../NS_Depense/r0/PES_DepenseAller.xsd"/>
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/recette/r0/aller" schemaLocation="../NS_Recette/r0/PES_RecetteAller.xsd"/>
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/role/r0/aller" schemaLocation="../NS_Role/r0/PES_RoleAller.xsd"/>
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/etatactif/r0/aller" schemaLocation="../NS_EtatActif/r0/PES_EtatActif.xsd"/>
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/emprunt/r0/aller" schemaLocation="../NS_EtatPassif/r0/PES_EtatPassif.xsd"/>
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/marche/r0/aller" schemaLocation="../NS_Marche/r0/PES_Marche.xsd"/>
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../Class_SchemasCommuns.xsd"/>
+ <xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="../Class_Signature.xsd"/>
+ <xs:import namespace="http://uri.etsi.org/01903/v1.1.1#" schemaLocation="../../XADES/1.0/XAdES-core-schema.xsd"/>
+ <xs:include schemaLocation="../Class_PJ.xsd"/>
+ <xs:include schemaLocation="../Class_FacturePES.xsd"/>
+ <xs:include schemaLocation="../Class_FacturePESIndiv.xsd"/>
+ <xs:include schemaLocation="../Class_Tiers.xsd"/>
+ <xs:include schemaLocation="../Class_RepartitionBudget.xsd"/>
+ <xs:include schemaLocation="../Class_Nomenclature.xsd"/>
+ <xs:element name="PES_Aller">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Enveloppe" type="cm:TEnveloppe"/>
+ <xs:element name="EnTetePES" type="cm:TEnTetePES"/>
+ <xs:element name="PES_DepenseAller" type="depa:TPES_DepenseAller" minOccurs="0"/>
+ <xs:element name="PES_RecetteAller" type="reca:TPES_RecetteAller" minOccurs="0"/>
+ <xs:element name="PES_RoleAller" type="rola:TPES_RoleAller" minOccurs="0"/>
+ <xs:element name="PES_BudgetAller" type="buda:TPES_BudgetAller" minOccurs="0"/>
+ <xs:element name="PES_EtatActif" type="acta:TPES_EtatActif" minOccurs="0"/>
+ <xs:element name="PES_Marche" type="mara:TPES_Marche" minOccurs="0"/>
+ <xs:element name="PES_EtatPassif" type="empa:TPES_EtatPassif" minOccurs="0"/>
+ <xs:element name="PES_PJ" type="TPES_PJs" minOccurs="0"/>
+ <xs:group ref="ds:PESSignatureGroup" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="Id" type="xs:ID" use="optional"/>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/heliso/pes_v2/Rev0/aller" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.minefi.gouv.fr/cp/heliso/pes_v2/Rev0/aller" elementFormDefault="unqualified">\r
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../Class_SchemasCommuns.xsd"/>\r
+ <xs:include schemaLocation="Class_NonAcquit.xsd"/>\r
+ <xs:element name="PES_NonAcquit">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="Enveloppe" type="cm:TEnveloppe"/>\r
+ <xs:element name="NonAcquit" type="TNonAcquit"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<!-- edited with XML Spy v4.4 (http://www.xmlspy.com) by Michael Conroy (SEMA) -->\r
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/helios/heliades_v1/Rev0/aller" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" xmlns:xad="http://uri.etsi.org/01903/v1.1.1#" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.minefi.gouv.fr/cp/helios/heliades_v1/Rev0/aller" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" elementFormDefault="unqualified">\r
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../Class_SchemasCommuns.xsd"/>\r
+ <xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="../Class_Signature.xsd"/>\r
+ <xs:import namespace="http://uri.etsi.org/01903/v1.1.1#" schemaLocation="../../xades/XAdES-core-schema.xsd"/>\r
+ <xs:include schemaLocation="../Class_PESPJs_HELIADES.xsd"/>\r
+ <xs:include schemaLocation="../Class_FacturePES.xsd"/>\r
+ <xs:include schemaLocation="../Class_FacturePESIndiv.xsd"/>\r
+ <xs:include schemaLocation="../Class_Tiers.xsd"/>\r
+ <xs:include schemaLocation="../Class_RepartitionBudget.xsd"/>\r
+ <xs:include schemaLocation="../Class_Nomenclature.xsd"/>\r
+ <xs:element name="PES_PJs_HELIADES_Aller">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="EnTetePES_PJ">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="IdVer" type="cm:Base_Num2"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="IdPost" type="cm:Base_Texte7"/>\r
+ <xs:element name="IdColl" type="cm:Base_Num20"/>\r
+ <xs:element name="PES_PJs_HELIADES" type="TPES_PJs_HELIADES" minOccurs="0"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/helios/heliades_v1/Rev0/retour" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.minefi.gouv.fr/cp/helios/heliades_v1/Rev0/retour" elementFormDefault="unqualified">\r
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../Class_SchemasCommuns.xsd"/>\r
+ <xs:element name="PES_PJs_HELIADES_Retour" type="TPES_PJs_HELIADES_Retour"/>\r
+ <xs:complexType name="TPES_PJ_HELIADES_Retour">\r
+ <xs:sequence>\r
+ <xs:element name="EnTetePES_PJ">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="IdVer" type="cm:Base_Num2"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ <xs:element name="IdPost" type="cm:Base_Texte7"/>\r
+ <xs:element name="IdColl" type="cm:Base_Num20"/>\r
+ <xs:element name="IdUnique" type="cm:Base_Alphanum50"/>\r
+ <xs:element name="NomPJ" type="cm:Base_Texte100"/>\r
+ <xs:element name="EtatGeide" type="cm:Base_Num2"/>\r
+ <xs:element name="LibelleErreur" type="cm:Base_Texte50" minOccurs="0"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TPES_PJs_HELIADES_Retour">\r
+ <xs:sequence>\r
+ <xs:element name="PJ_HELIADES_Retour" minOccurs="0" maxOccurs="unbounded">\r
+ <xs:complexType>\r
+ <xs:complexContent>\r
+ <xs:extension base="TPES_PJ_HELIADES_Retour"/>\r
+ </xs:complexContent>\r
+ </xs:complexType>\r
+ </xs:element>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/retour" xmlns:cptr="http://www.minefi.gouv.fr/cp/helios/pes_v2/comptabilite/r0/retour" xmlns:budr="http://www.minefi.gouv.fr/cp/helios/pes_v2/budget/r0/retour" xmlns:depr="http://www.minefi.gouv.fr/cp/helios/pes_v2/depense/r0/retour" xmlns:recr="http://www.minefi.gouv.fr/cp/helios/pes_v2/recette/r0/retour" xmlns:rolr="http://www.minefi.gouv.fr/cp/helios/pes_v2/role/r0/retour" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/retour" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="unqualified">\r
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/budget/r0/retour" schemaLocation="../NS_Budget/r0/PES_BudgetRetour.xsd"/>\r
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/recette/r0/retour" schemaLocation="../NS_Recette/r0/PES_RecetteRetour.xsd"/>\r
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/role/r0/retour" schemaLocation="../NS_Role/r0/PES_RoleRetour.xsd"/>\r
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/depense/r0/retour" schemaLocation="../NS_Depense/r0/PES_DepenseRetour.xsd"/>\r
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/comptabilite/r0/retour" schemaLocation="../NS_Comptabilite/r0/PES_Comptabilite.xsd"/>\r
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../Class_SchemasCommuns.xsd"/>\r
+ <xs:include schemaLocation="../Class_PJ_Retour.xsd"/>\r
+ <xs:element name="PES_Retour">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element name="Enveloppe" type="cm:TEnveloppe"/>\r
+ <xs:element name="EnTetePES" type="cm:TEnTetePES"/>\r
+ <xs:element name="PES_DepenseRetour" type="depr:TPES_DepenseRetour" minOccurs="0"/>\r
+ <xs:element name="PES_RecetteRetour" type="recr:TPES_RecetteRetour" minOccurs="0"/>\r
+ <xs:element name="PES_RoleRetour" type="rolr:TPES_RoleRetour" minOccurs="0"/>\r
+ <xs:element name="PES_BudgetRetour" type="budr:TPES_BudgetRetour" minOccurs="0"/>\r
+ <xs:element name="PES_Comptabilite" type="cptr:TPES_Comptabilite" minOccurs="0"/>\r
+ <xs:element name="PES_PJ_Retour" type="TPES_PJs_Erreur" minOccurs="0"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/retour" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/retour" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:budr="http://www.minefi.gouv.fr/cp/helios/pes_v2/budget/r0/retour" elementFormDefault="unqualified">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/budget/r0/retour" schemaLocation="../NS_Budget/r0/PES_BudgetRetour.xsd"/>
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../Class_SchemasCommuns.xsd"/>
+ <xs:element name="PES_Retour">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Enveloppe" type="cm:TEnveloppe"/>
+ <xs:element name="EnTetePES" type="cm:TEnTetePES"/>
+ <xs:element name="PES_BudgetRetour" type="budr:TPES_BudgetRetour" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/retour" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/retour" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:cptr="http://www.minefi.gouv.fr/cp/helios/pes_v2/comptabilite/r0/retour" elementFormDefault="unqualified">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/comptabilite/r0/retour" schemaLocation="../NS_Comptabilite/r0/PES_Comptabilite.xsd"/>
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../Class_SchemasCommuns.xsd"/>
+ <xs:element name="PES_Retour">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Enveloppe" type="cm:TEnveloppe"/>
+ <xs:element name="EnTetePES" type="cm:TEnTetePES"/>
+ <xs:element name="PES_Comptabilite" type="cptr:TPES_Comptabilite" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/retour" xmlns:depr="http://www.minefi.gouv.fr/cp/helios/pes_v2/depense/r0/retour" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/retour" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="unqualified">
+<xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/depense/r0/retour" schemaLocation="../NS_Depense/r0/PES_DepenseRetour.xsd"/>
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../Class_SchemasCommuns.xsd"/>
+ <xs:element name="PES_Retour">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Enveloppe" type="cm:TEnveloppe"/>
+ <xs:element name="EnTetePES" type="cm:TEnTetePES"/>
+ <xs:element name="PES_DepenseRetour" type="depr:TPES_DepenseRetour" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/retour" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/retour" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" elementFormDefault="unqualified">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="../Class_PJ_Retour.xsd"/>
+ <xs:element name="PES_Retour">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Enveloppe" type="cm:TEnveloppe"/>
+ <xs:element name="EnTetePES" type="cm:TEnTetePES"/>
+ <xs:element name="PES_PJ_Retour" type="TPES_PJs_Erreur" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/retour" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/retour" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:recr="http://www.minefi.gouv.fr/cp/helios/pes_v2/recette/r0/retour" elementFormDefault="unqualified">
+<xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/recette/r0/retour" schemaLocation="../NS_Recette/r0/PES_RecetteRetour.xsd"/>
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../Class_SchemasCommuns.xsd"/>
+ <xs:element name="PES_Retour">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Enveloppe" type="cm:TEnveloppe"/>
+ <xs:element name="EnTetePES" type="cm:TEnTetePES"/>
+ <xs:element name="PES_RecetteRetour" type="recr:TPES_RecetteRetour" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/retour" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/retour" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:rolr="http://www.minefi.gouv.fr/cp/helios/pes_v2/role/r0/retour" elementFormDefault="unqualified">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/role/r0/retour" schemaLocation="../NS_Role/r0/PES_RoleRetour.xsd"/>
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../Class_SchemasCommuns.xsd"/>
+ <xs:element name="PES_Retour">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Enveloppe" type="cm:TEnveloppe"/>
+ <xs:element name="EnTetePES" type="cm:TEnTetePES"/>
+ <xs:element name="PES_RoleRetour" type="rolr:TPES_RoleRetour" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- edited with XMLSPY v5 rel. 2 U (http://www.xmlspy.com) by SERGE MURET (SEMA GROUP SA) -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:complexType name="Base_Alphanum1">
+ <xs:attribute name="V" type="V_Alphanum1" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Alphanum1">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="1"/>
+ <xs:minLength value="1"/>
+ <xs:pattern value="[0-9a-zA-Z]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Alphanum2">
+ <xs:attribute name="V" type="V_Alphanum2" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Alphanum2">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="2"/>
+ <xs:minLength value="1"/>
+ <xs:pattern value="[0-9a-zA-Z]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Alphanum3">
+ <xs:attribute name="V" type="V_Alphanum3" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Alphanum3">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="3"/>
+ <xs:minLength value="1"/>
+ <xs:pattern value="[0-9a-zA-Z]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Alphanum4">
+ <xs:attribute name="V" type="V_Alphanum4" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Alphanum4">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="4"/>
+ <xs:minLength value="1"/>
+ <xs:pattern value="[0-9a-zA-Z]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Alphanum5">
+ <xs:attribute name="V" type="V_Alphanum5" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Alphanum5">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="5"/>
+ <xs:minLength value="1"/>
+ <xs:pattern value="[0-9a-zA-Z]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Alphanum6">
+ <xs:attribute name="V" type="V_Alphanum6" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Alphanum6">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="6"/>
+ <xs:minLength value="1"/>
+ <xs:pattern value="[0-9a-zA-Z]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Alphanum10">
+ <xs:attribute name="V" type="V_Alphanum10" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Alphanum10">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="10"/>
+ <xs:minLength value="1"/>
+ <xs:pattern value="[0-9a-zA-Z]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Alphanum11">
+ <xs:attribute name="V" type="V_Alphanum11" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Alphanum11">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="11"/>
+ <xs:minLength value="1"/>
+ <xs:pattern value="[0-9a-zA-Z]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Alphanum12">
+ <xs:attribute name="V" type="V_Alphanum12" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Alphanum12">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="12"/>
+ <xs:minLength value="1"/>
+ <xs:pattern value="[0-9a-zA-Z]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Alphanum14">
+ <xs:attribute name="V" type="V_Alphanum14" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Alphanum14">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="14"/>
+ <xs:minLength value="1"/>
+ <xs:pattern value="[0-9a-zA-Z]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Alphanum15">
+ <xs:attribute name="V" type="V_Alphanum15" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Alphanum15">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="15"/>
+ <xs:minLength value="1"/>
+ <xs:pattern value="[0-9a-zA-Z]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Alphanum16">
+ <xs:attribute name="V" type="V_Alphanum16" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Alphanum16">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="16"/>
+ <xs:minLength value="1"/>
+ <xs:pattern value="[0-9a-zA-Z]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Alphanum17">
+ <xs:attribute name="V" type="V_Alphanum17" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Alphanum17">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="17"/>
+ <xs:minLength value="1"/>
+ <xs:pattern value="[0-9a-zA-Z]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Alphanum20">
+ <xs:attribute name="V" type="V_Alphanum20" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Alphanum20">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="20"/>
+ <xs:minLength value="1"/>
+ <xs:pattern value="[0-9a-zA-Z]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Alphanum25">
+ <xs:attribute name="V" type="V_Alphanum25" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Alphanum25">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="25"/>
+ <xs:minLength value="1"/>
+ <xs:pattern value="[0-9a-zA-Z]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Alphanum30">
+ <xs:attribute name="V" type="V_Alphanum30" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Alphanum30">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="30"/>
+ <xs:minLength value="1"/>
+ <xs:pattern value="[0-9a-zA-Z]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Alphanum50">
+ <xs:attribute name="V" type="V_Alphanum50" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Alphanum50">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="50"/>
+ <xs:minLength value="1"/>
+ <xs:pattern value="[0-9a-zA-Z]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Alphanum80">
+ <xs:attribute name="V" type="V_Alphanum80" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Alphanum80">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="80"/>
+ <xs:minLength value="1"/>
+ <xs:pattern value="[0-9a-zA-Z]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Alphanum100">
+ <xs:attribute name="V" type="V_Alphanum100" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Alphanum100">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="100"/>
+ <xs:minLength value="1"/>
+ <xs:pattern value="[0-9a-zA-Z]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Alphanum250">
+ <xs:attribute name="V" type="V_Alphanum250" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Alphanum250">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="250"/>
+ <xs:minLength value="1"/>
+ <xs:pattern value="[0-9a-zA-Z]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Num1">
+ <xs:attribute name="V" type="V_Num1" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Num1">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="1"/>
+ <xs:minLength value="1"/>
+ <xs:pattern value="[0-9]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Num2">
+ <xs:attribute name="V" type="V_Num2" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Num2">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="2"/>
+ <xs:minLength value="1"/>
+ <xs:pattern value="[0-9]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Num3">
+ <xs:attribute name="V" type="V_Num3" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Num3">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="3"/>
+ <xs:minLength value="1"/>
+ <xs:pattern value="[0-9]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Num4">
+ <xs:attribute name="V" type="V_Num4" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Num4">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="4"/>
+ <xs:minLength value="1"/>
+ <xs:pattern value="[0-9]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Num5">
+ <xs:attribute name="V" type="V_Num5" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Num5">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="5"/>
+ <xs:minLength value="1"/>
+ <xs:pattern value="[0-9]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Num6">
+ <xs:attribute name="V" type="V_Num6" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Num6">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="6"/>
+ <xs:minLength value="1"/>
+ <xs:pattern value="[0-9]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Num7">
+ <xs:attribute name="V" type="V_Num7" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Num7">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="7"/>
+ <xs:minLength value="1"/>
+ <xs:pattern value="[0-9]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Num8">
+ <xs:attribute name="V" type="V_Num8" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Num8">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="8"/>
+ <xs:minLength value="1"/>
+ <xs:pattern value="[0-9]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Num9">
+ <xs:attribute name="V" type="V_Num9" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Num9">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="9"/>
+ <xs:minLength value="1"/>
+ <xs:pattern value="[0-9]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Num10">
+ <xs:attribute name="V" type="V_Num10" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Num10">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="10"/>
+ <xs:minLength value="1"/>
+ <xs:pattern value="[0-9]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Num12">
+ <xs:attribute name="V" type="V_Num12" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Num12">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="12"/>
+ <xs:minLength value="1"/>
+ <xs:pattern value="[0-9]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Num13">
+ <xs:attribute name="V" type="V_Num13" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Num13">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="13"/>
+ <xs:minLength value="1"/>
+ <xs:pattern value="[0-9]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Num14">
+ <xs:attribute name="V" type="V_Num14" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Num14">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="14"/>
+ <xs:minLength value="1"/>
+ <xs:pattern value="[0-9]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Num15">
+ <xs:attribute name="V" type="V_Num15" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Num15">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="15"/>
+ <xs:minLength value="1"/>
+ <xs:pattern value="[0-9]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Num16">
+ <xs:attribute name="V" type="V_Num16" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Num16">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="16"/>
+ <xs:minLength value="1"/>
+ <xs:pattern value="[0-9]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Num17">
+ <xs:attribute name="V" type="V_Num17" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Num17">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="17"/>
+ <xs:minLength value="1"/>
+ <xs:pattern value="[0-9]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Num20">
+ <xs:attribute name="V" type="V_Num20" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Num20">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="20"/>
+ <xs:minLength value="1"/>
+ <xs:pattern value="[0-9]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Num25">
+ <xs:attribute name="V" type="V_Num25" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Num25">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="25"/>
+ <xs:minLength value="1"/>
+ <xs:pattern value="[0-9]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Texte2">
+ <xs:attribute name="V" type="V_Texte2" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Texte2">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="2"/>
+ <xs:minLength value="1"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Texte5">
+ <xs:attribute name="V" type="V_Texte5" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Texte5">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="5"/>
+ <xs:minLength value="1"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Texte6">
+ <xs:attribute name="V" type="V_Texte6" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Texte6">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="6"/>
+ <xs:minLength value="1"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Texte7">
+ <xs:attribute name="V" type="V_Texte7" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Texte7">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="7"/>
+ <xs:minLength value="1"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Texte10">
+ <xs:attribute name="V" type="V_Texte10" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Texte10">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="10"/>
+ <xs:minLength value="1"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Texte11">
+ <xs:attribute name="V" type="V_Texte11" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Texte11">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="11"/>
+ <xs:minLength value="1"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Texte12">
+ <xs:attribute name="V" type="V_Texte12" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Texte12">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="12"/>
+ <xs:minLength value="1"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Texte14">
+ <xs:attribute name="V" type="V_Texte14" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Texte14">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="14"/>
+ <xs:minLength value="1"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Texte15">
+ <xs:attribute name="V" type="V_Texte15" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Texte15">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="15"/>
+ <xs:minLength value="1"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Texte16">
+ <xs:attribute name="V" type="V_Texte16" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Texte16">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="16"/>
+ <xs:minLength value="1"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Texte20">
+ <xs:attribute name="V" type="V_Texte20" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Texte20">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="20"/>
+ <xs:minLength value="1"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Texte24">
+ <xs:attribute name="V" type="V_Texte24" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Texte24">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="24"/>
+ <xs:minLength value="1"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Texte25">
+ <xs:attribute name="V" type="V_Texte25" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Texte25">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="25"/>
+ <xs:minLength value="1"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Texte30">
+ <xs:attribute name="V" type="V_Texte30" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Texte30">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="30"/>
+ <xs:minLength value="1"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Texte32">
+ <xs:attribute name="V" type="V_Texte32" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Texte32">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="32"/>
+ <xs:minLength value="1"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Texte38">
+ <xs:attribute name="V" type="V_Texte38" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Texte38">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="38"/>
+ <xs:minLength value="1"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Texte50">
+ <xs:attribute name="V" type="V_Texte50" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Texte50">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="50"/>
+ <xs:minLength value="1"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Texte100">
+ <xs:attribute name="V" type="V_Texte100" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Texte100">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="100"/>
+ <xs:minLength value="1"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Texte160">
+ <xs:attribute name="V" type="V_Texte160" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Texte160">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="160"/>
+ <xs:minLength value="1"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Texte200">
+ <xs:attribute name="V" type="V_Texte200" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Texte200">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="200"/>
+ <xs:minLength value="1"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Texte250">
+ <xs:attribute name="V" type="V_Texte250" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Texte250">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="250"/>
+ <xs:minLength value="1"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Texte500">
+ <xs:attribute name="V" type="V_Texte500" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Texte500">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="500"/>
+ <xs:minLength value="1"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Annee">
+ <xs:attribute name="V" type="V_Annee" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Annee">
+ <xs:restriction base="xs:gYear"/>
+ </xs:simpleType>
+ <xs:complexType name="Base_Booleen">
+ <xs:attribute name="V" type="V_Booleen" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Booleen">
+ <xs:restriction base="xs:boolean"/>
+ </xs:simpleType>
+ <xs:complexType name="Base_Date">
+ <xs:attribute name="V" type="V_Date" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Date">
+ <xs:restriction base="xs:date"/>
+ </xs:simpleType>
+ <xs:complexType name="Base_Montant">
+ <xs:attribute name="V" type="V_Montant" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Montant">
+ <xs:restriction base="xs:decimal">
+ <xs:totalDigits value="14"/>
+ <xs:fractionDigits value="2"/>
+
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Taux">
+ <xs:attribute name="V" type="V_Taux" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Taux">
+ <xs:restriction base="xs:decimal">
+ <xs:totalDigits value="5"/>
+ <xs:fractionDigits value="2"/>
+
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Montant3">
+ <xs:attribute name="V" type="V_Montant3" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Montant3">
+ <xs:restriction base="xs:decimal">
+ <xs:totalDigits value="15"/>
+ <xs:fractionDigits value="3"/>
+
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Taux3">
+ <xs:attribute name="V" type="V_Taux3" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Taux3">
+ <xs:restriction base="xs:decimal">
+ <xs:totalDigits value="6"/>
+ <xs:fractionDigits value="3"/>
+
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Dec3">
+ <xs:attribute name="V" type="V_Dec3" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Dec3">
+ <xs:restriction base="xs:decimal">
+ <xs:fractionDigits value="3"/>
+
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Dec2">
+ <xs:attribute name="V" type="V_Dec2" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Dec2">
+ <xs:restriction base="xs:decimal">
+ <xs:fractionDigits value="2"/>
+
+ </xs:restriction>
+ </xs:simpleType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<!-- edited with XMLSPY v2004 rel. 3 U (http://www.xmlspy.com) by test (test) -->\r
+<xs:schema targetNamespace="http://uri.etsi.org/01903/v1.1.1#" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns="http://uri.etsi.org/01903/v1.1.1#" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">\r
+ <xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="../../XMLDSIG/1.0/xmldsig-core-schema.xsd"/>\r
+ <!-- Start auxiliary types definitions: AnyType, ObjectIdentifierType, EncapsulatedPKIDataType and TimestampType-->\r
+ <!-- Start AnyType -->\r
+ <xs:element name="Any" type="AnyType"/>\r
+ <xs:complexType name="AnyType" mixed="true">\r
+ <xs:sequence>\r
+ <xs:any namespace="##any" processContents="lax"/>\r
+ </xs:sequence>\r
+ <xs:anyAttribute namespace="##any"/>\r
+ </xs:complexType>\r
+ <!-- End AnyType -->\r
+ <!-- Start ObjectIdentifierType-->\r
+ <xs:element name="ObjectIdentifier" type="ObjectIdentifierType"/>\r
+ <xs:complexType name="ObjectIdentifierType">\r
+ <xs:sequence>\r
+ <xs:element name="Identifier" type="IdentifierType"/>\r
+ <xs:element name="Description" type="xs:string" minOccurs="0"/>\r
+ <xs:element name="DocumentationReferences" type="DocumentationReferencesType" minOccurs="0"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="IdentifierType">\r
+ <xs:simpleContent>\r
+ <xs:extension base="xs:anyURI">\r
+ <xs:attribute name="Qualifier" type="QualifierType" use="optional"/>\r
+ </xs:extension>\r
+ </xs:simpleContent>\r
+ </xs:complexType>\r
+ <xs:simpleType name="QualifierType">\r
+ <xs:restriction base="xs:string">\r
+ <xs:enumeration value="OIDAsURN"/>\r
+ <xs:enumeration value="OIDAsURI"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ <xs:complexType name="DocumentationReferencesType">\r
+ <xs:sequence maxOccurs="unbounded">\r
+ <xs:element name="DocumentationReference" type="xs:anyURI"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <!-- End ObjectIdentifierType-->\r
+ <!-- Start EncapsulatedPKIDataType-->\r
+ <xs:element name="EncapsulatedPKIData" type="EncapsulatedPKIDataType"/>\r
+ <xs:complexType name="EncapsulatedPKIDataType">\r
+ <xs:simpleContent>\r
+ <xs:extension base="xs:base64Binary">\r
+ <xs:attribute name="Id" type="xs:ID" use="optional"/>\r
+ </xs:extension>\r
+ </xs:simpleContent>\r
+ </xs:complexType>\r
+ <!-- End EncapsulatedPKIDataType -->\r
+ <!-- Start TimeStampType -->\r
+ <xs:element name="TimeStamp" type="TimeStampType"/>\r
+ <xs:complexType name="TimeStampType">\r
+ <xs:sequence>\r
+ <xs:element name="HashDataInfo" type="HashDataInfoType" minOccurs="0" maxOccurs="unbounded"/>\r
+ <xs:choice minOccurs="0">\r
+ <xs:element name="EncapsulatedTimeStamp" type="EncapsulatedPKIDataType"/>\r
+ <xs:element name="XMLTimeStamp" type="AnyType"/>\r
+ </xs:choice>\r
+ <xs:element ref="ds:Signature" minOccurs="0"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="HashDataInfoType">\r
+ <xs:sequence>\r
+ <xs:element name="Transforms" type="ds:TransformsType" minOccurs="0"/>\r
+ </xs:sequence>\r
+ <xs:attribute name="URI" type="xs:anyURI" use="required"/>\r
+ </xs:complexType>\r
+ <!-- End TimeStampType -->\r
+ <!-- End auxiliary types definitions-->\r
+ <!-- Start container types -->\r
+ <!-- Start QualifyingProperties -->\r
+ <xs:element name="QualifyingProperties" type="QualifyingPropertiesType"/>\r
+ <xs:complexType name="QualifyingPropertiesType">\r
+ <xs:sequence>\r
+ <xs:element name="SignedProperties" type="SignedPropertiesType" minOccurs="0"/>\r
+ <xs:element name="UnsignedProperties" type="UnsignedPropertiesType" minOccurs="0"/>\r
+ </xs:sequence>\r
+ <xs:attribute name="Target" type="xs:anyURI" use="required"/>\r
+ <xs:attribute name="Id" type="xs:ID" use="optional"/>\r
+ </xs:complexType>\r
+ <!-- End QualifyingProperties -->\r
+ <!-- Start SignedProperties-->\r
+ <xs:element name="SignedProperties" type="SignedPropertiesType"/>\r
+ <xs:complexType name="SignedPropertiesType">\r
+ <xs:sequence>\r
+ <xs:element name="SignedSignatureProperties" type="SignedSignaturePropertiesType"/>\r
+ <xs:element name="SignedDataObjectProperties" type="SignedDataObjectPropertiesType" minOccurs="0"/>\r
+ </xs:sequence>\r
+ <xs:attribute name="Id" type="xs:ID" use="optional"/>\r
+ </xs:complexType>\r
+ <!-- End SignedProperties-->\r
+ <!-- Start UnsignedProperties-->\r
+ <xs:element name="UnsignedProperties" type="UnsignedPropertiesType"/>\r
+ <xs:complexType name="UnsignedPropertiesType">\r
+ <xs:sequence>\r
+ <xs:element name="UnsignedSignatureProperties" type="UnsignedSignaturePropertiesType" minOccurs="0"/>\r
+ <xs:element name="UnsignedDataObjectProperties" type="UnsignedDataObjectPropertiesType" minOccurs="0"/>\r
+ </xs:sequence>\r
+ <xs:attribute name="Id" type="xs:ID" use="optional"/>\r
+ </xs:complexType>\r
+ <!-- End UnsignedProperties-->\r
+ <!-- Start SignedSignatureProperties-->\r
+ <xs:element name="SignedSignatureProperties" type="SignedSignaturePropertiesType"/>\r
+ <xs:complexType name="SignedSignaturePropertiesType">\r
+ <xs:sequence>\r
+ <xs:element name="SigningTime" type="xs:dateTime"/>\r
+ <xs:element name="SigningCertificate" type="CertIDListType"/>\r
+ <xs:element name="SignaturePolicyIdentifier" type="SignaturePolicyIdentifierType"/>\r
+ <xs:element name="SignatureProductionPlace" type="SignatureProductionPlaceType" minOccurs="0"/>\r
+ <xs:element name="SignerRole" type="SignerRoleType" minOccurs="0"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <!-- End SignedSignatureProperties-->\r
+ <!-- Start SignedDataObjectProperties-->\r
+ <xs:element name="SignedDataObjectProperties" type="SignedDataObjectPropertiesType"/>\r
+ <xs:complexType name="SignedDataObjectPropertiesType">\r
+ <xs:sequence>\r
+ <xs:element name="DataObjectFormat" type="DataObjectFormatType" minOccurs="0" maxOccurs="unbounded"/>\r
+ <xs:element name="CommitmentTypeIndication" type="CommitmentTypeIndicationType" minOccurs="0" maxOccurs="unbounded"/>\r
+ <xs:element name="AllDataObjectsTimeStamp" type="TimeStampType" minOccurs="0" maxOccurs="unbounded"/>\r
+ <xs:element name="IndividualDataObjectsTimeStamp" type="TimeStampType" minOccurs="0" maxOccurs="unbounded"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <!-- End SignedDataObjectProperties-->\r
+ <!-- Start UnsignedSignatureProperties-->\r
+ <xs:element name="UnsignedSignatureProperties" type="UnsignedSignaturePropertiesType"/>\r
+ <xs:complexType name="UnsignedSignaturePropertiesType">\r
+ <xs:sequence>\r
+ <xs:element name="CounterSignature" type="CounterSignatureType" minOccurs="0" maxOccurs="unbounded"/>\r
+ <xs:element name="SignatureTimeStamp" type="TimeStampType" minOccurs="0" maxOccurs="unbounded"/>\r
+ <xs:element name="CompleteCertificateRefs" type="CompleteCertificateRefsType" minOccurs="0"/>\r
+ <xs:element name="CompleteRevocationRefs" type="CompleteRevocationRefsType" minOccurs="0"/>\r
+ <xs:choice>\r
+ <xs:element name="SigAndRefsTimeStamp" type="TimeStampType" minOccurs="0" maxOccurs="unbounded"/>\r
+ <xs:element name="RefsOnlyTimeStamp" type="TimeStampType" minOccurs="0" maxOccurs="unbounded"/>\r
+ </xs:choice>\r
+ <xs:element name="CertificateValues" type="CertificateValuesType" minOccurs="0"/>\r
+ <xs:element name="RevocationValues" type="RevocationValuesType" minOccurs="0"/>\r
+ <xs:element name="ArchiveTimeStamp" type="TimeStampType" minOccurs="0" maxOccurs="unbounded"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <!-- End UnsignedSignatureProperties-->\r
+ <!-- Start UnsignedDataObjectProperties-->\r
+ <xs:element name="UnsignedDataObjectProperties" type="UnsignedDataObjectPropertiesType"/>\r
+ <xs:complexType name="UnsignedDataObjectPropertiesType">\r
+ <xs:sequence>\r
+ <xs:element name="UnsignedDataObjectProperty" type="AnyType" minOccurs="0" maxOccurs="unbounded"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <!-- End UnsignedDataObjectProperties-->\r
+ <!-- Start QualifyingPropertiesReference-->\r
+ <xs:element name="QualifyingPropertiesReference" type="QualifyingPropertiesReferenceType"/>\r
+ <xs:complexType name="QualifyingPropertiesReferenceType">\r
+ <xs:sequence>\r
+ <xs:element name="Transforms" type="ds:TransformsType" minOccurs="0"/>\r
+ </xs:sequence>\r
+ <xs:attribute name="URI" type="xs:anyURI" use="required"/>\r
+ <xs:attribute name="Id" type="xs:ID" use="optional"/>\r
+ </xs:complexType>\r
+ <!-- End QualifyingPropertiesReference-->\r
+ <!-- End container types -->\r
+ <!-- Start SigningTime element -->\r
+ <xs:element name="SigningTime" type="xs:dateTime"/>\r
+ <!-- End SigningTime element -->\r
+ <!-- Start SigningCertificate -->\r
+ <xs:element name="SigningCertificate" type="CertIDListType"/>\r
+ <xs:complexType name="CertIDListType">\r
+ <xs:sequence>\r
+ <xs:element name="Cert" type="CertIDType" maxOccurs="unbounded"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="CertIDType">\r
+ <xs:sequence>\r
+ <xs:element name="CertDigest" type="DigestAlgAndValueType"/>\r
+ <xs:element name="IssuerSerial" type="ds:X509IssuerSerialType"/>\r
+ </xs:sequence>\r
+ <xs:attribute name="URI" type="xs:anyURI" use="optional"/>\r
+ </xs:complexType>\r
+ <xs:complexType name="DigestAlgAndValueType">\r
+ <xs:sequence>\r
+ <xs:element name="DigestMethod" type="ds:DigestMethodType"/>\r
+ <xs:element name="DigestValue" type="ds:DigestValueType"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <!-- End SigningCertificate -->\r
+ <!-- Start SignaturePolicyIdentifier -->\r
+ <xs:element name="SignaturePolicyIdentifier" type="SignaturePolicyIdentifierType"/>\r
+ <xs:complexType name="SignaturePolicyIdentifierType">\r
+ <xs:choice>\r
+ <xs:element name="SignaturePolicyId" type="SignaturePolicyIdType"/>\r
+ <xs:element name="SignaturePolicyImplied"/>\r
+ </xs:choice>\r
+ </xs:complexType>\r
+ <xs:complexType name="SignaturePolicyIdType">\r
+ <xs:sequence>\r
+ <xs:element name="SigPolicyId" type="ObjectIdentifierType"/>\r
+ <xs:element ref="ds:Transforms" minOccurs="0"/>\r
+ <xs:element name="SigPolicyHash" type="DigestAlgAndValueType"/>\r
+ <xs:element name="SigPolicyQualifiers" type="SigPolicyQualifiersListType" minOccurs="0"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="SigPolicyQualifiersListType">\r
+ <xs:sequence>\r
+ <xs:element name="SigPolicyQualifier" type="SigPolicyQualifierType" maxOccurs="unbounded"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:element name="SPURI" type="xs:anyURI"/>\r
+ <xs:element name="SPUserNotice" type="SPUserNoticeType"/>\r
+ <xs:complexType name="SPUserNoticeType">\r
+ <xs:sequence>\r
+ <xs:element name="NoticeRef" type="NoticeReferenceType" minOccurs="0"/>\r
+ <xs:element name="ExplicitText" type="xs:string" minOccurs="0"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="NoticeReferenceType">\r
+ <xs:sequence>\r
+ <xs:element name="Organization" type="xs:string"/>\r
+ <xs:element name="NoticeNumbers" type="IntegerListType"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="IntegerListType">\r
+ <xs:sequence>\r
+ <xs:element name="int" type="xs:integer" minOccurs="0" maxOccurs="unbounded"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <!-- End SignaturePolicyIdentifier -->\r
+ <!-- Start CounterSignature -->\r
+ <xs:element name="CounterSignature" type="CounterSignatureType"/>\r
+ <xs:complexType name="CounterSignatureType">\r
+ <xs:sequence>\r
+ <xs:element ref="ds:Signature"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <!-- End CounterSignature -->\r
+ <!-- Start DataObjectFormat -->\r
+ <xs:element name="DataObjectFormat" type="DataObjectFormatType"/>\r
+ <xs:complexType name="DataObjectFormatType">\r
+ <xs:sequence>\r
+ <xs:element name="Description" type="xs:string" minOccurs="0"/>\r
+ <xs:element name="ObjectIdentifier" type="ObjectIdentifierType" minOccurs="0"/>\r
+ <xs:element name="MimeType" type="xs:string" minOccurs="0"/>\r
+ <xs:element name="Encoding" type="xs:anyURI" minOccurs="0"/>\r
+ </xs:sequence>\r
+ <xs:attribute name="ObjectReference" type="xs:anyURI" use="required"/>\r
+ </xs:complexType>\r
+ <!-- End DataObjectFormat -->\r
+ <!-- Start CommitmentTypeIndication -->\r
+ <xs:element name="CommitmentTypeIndication" type="CommitmentTypeIndicationType"/>\r
+ <xs:complexType name="CommitmentTypeIndicationType">\r
+ <xs:sequence>\r
+ <xs:element name="CommitmentTypeId" type="ObjectIdentifierType"/>\r
+ <xs:choice>\r
+ <xs:element name="ObjectReference" type="xs:anyURI" minOccurs="0" maxOccurs="unbounded"/>\r
+ <xs:element name="AllSignedDataObjects"/>\r
+ </xs:choice>\r
+ <xs:element name="CommitmentTypeQualifiers" type="CommitmentTypeQualifiersListType" minOccurs="0"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="CommitmentTypeQualifiersListType">\r
+ <xs:sequence>\r
+ <xs:element name="CommitmentTypeQualifier" type="AnyType" minOccurs="0" maxOccurs="unbounded"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <!-- End CommitmentTypeIndication -->\r
+ <!-- Start SignatureProductionPlace -->\r
+ <xs:element name="SignatureProductionPlace" type="SignatureProductionPlaceType"/>\r
+ <xs:complexType name="SignatureProductionPlaceType">\r
+ <xs:sequence>\r
+ <xs:element name="City" type="xs:string" minOccurs="0"/>\r
+ <xs:element name="StateOrProvince" type="xs:string" minOccurs="0"/>\r
+ <xs:element name="PostalCode" type="xs:string" minOccurs="0"/>\r
+ <xs:element name="CountryName" type="xs:string" minOccurs="0"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <!-- End SignatureProductionPlace -->\r
+ <!-- Start SignerRole -->\r
+ <xs:element name="SignerRole" type="SignerRoleType"/>\r
+ <xs:complexType name="SignerRoleType">\r
+ <xs:sequence>\r
+ <xs:element name="ClaimedRoles" type="ClaimedRolesListType" minOccurs="0"/>\r
+ <xs:element name="CertifiedRoles" type="CertifiedRolesListType" minOccurs="0"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="ClaimedRolesListType">\r
+ <xs:sequence>\r
+ <xs:element name="ClaimedRole" type="xs:token"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="CertifiedRolesListType">\r
+ <xs:sequence>\r
+ <xs:element name="CertifiedRole" type="EncapsulatedPKIDataType" maxOccurs="unbounded"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <!-- End SignerRole -->\r
+ <xs:element name="AllDataObjectsTimeStamp" type="TimeStampType"/>\r
+ <xs:element name="IndividualDataObjectsTimeStamp" type="TimeStampType"/>\r
+ <xs:element name="SignatureTimeStamp" type="TimeStampType"/>\r
+ <!-- Start CompleteCertificateRefs -->\r
+ <xs:element name="CompleteCertificateRefs" type="CompleteCertificateRefsType"/>\r
+ <xs:complexType name="CompleteCertificateRefsType">\r
+ <xs:sequence>\r
+ <xs:element name="CertRefs" type="CertIDListType"/>\r
+ </xs:sequence>\r
+ <xs:attribute name="Id" type="xs:ID" use="optional"/>\r
+ </xs:complexType>\r
+ <!-- End CompleteCertificateRefs -->\r
+ <!-- Start CompleteRevocationRefs-->\r
+ <xs:element name="CompleteRevocationRefs" type="CompleteRevocationRefsType"/>\r
+ <xs:complexType name="CompleteRevocationRefsType">\r
+ <xs:sequence>\r
+ <xs:element name="CRLRefs" type="CRLRefsType" minOccurs="0"/>\r
+ <xs:element name="OCSPRefs" type="OCSPRefsType" minOccurs="0"/>\r
+ <xs:element name="OtherRefs" type="OtherCertStatusRefsType" minOccurs="0"/>\r
+ </xs:sequence>\r
+ <xs:attribute name="Id" type="xs:ID" use="optional"/>\r
+ </xs:complexType>\r
+ <xs:complexType name="CRLRefsType">\r
+ <xs:sequence>\r
+ <xs:element name="CRLRef" type="CRLRefType" maxOccurs="unbounded"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="CRLRefType">\r
+ <xs:sequence>\r
+ <xs:element name="DigestAlgAndValue" type="DigestAlgAndValueType"/>\r
+ <xs:element name="CRLIdentifier" type="CRLIdentifierType" minOccurs="0"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="CRLIdentifierType">\r
+ <xs:sequence>\r
+ <xs:element name="Issuer" type="xs:string"/>\r
+ <xs:element name="IssueTime" type="xs:dateTime"/>\r
+ <xs:element name="Number" type="xs:integer" minOccurs="0"/>\r
+ </xs:sequence>\r
+ <xs:attribute name="URI" type="xs:anyURI" use="optional"/>\r
+ </xs:complexType>\r
+ <xs:complexType name="OCSPRefsType">\r
+ <xs:sequence>\r
+ <xs:element name="OCSPRef" type="OCSPRefType" maxOccurs="unbounded"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="OCSPRefType">\r
+ <xs:sequence>\r
+ <xs:element name="OCSPIdentifier" type="OCSPIdentifierType"/>\r
+ <xs:element name="DigestAlgAndValue" type="DigestAlgAndValueType" minOccurs="0"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="OCSPIdentifierType">\r
+ <xs:sequence>\r
+ <xs:element name="ResponderID" type="xs:string"/>\r
+ <xs:element name="ProducedAt" type="xs:dateTime"/>\r
+ </xs:sequence>\r
+ <xs:attribute name="URI" type="xs:anyURI" use="optional"/>\r
+ </xs:complexType>\r
+ <xs:complexType name="OtherCertStatusRefsType">\r
+ <xs:sequence>\r
+ <xs:element name="OtherRef" type="AnyType" maxOccurs="unbounded"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <!-- End CompleteRevocationRefs-->\r
+ <xs:element name="SigAndRefsTimeStamp" type="TimeStampType"/>\r
+ <xs:element name="RefsOnlyTimeStamp" type="TimeStampType"/>\r
+ <!-- Start CertificateValues -->\r
+ <xs:element name="CertificateValues" type="CertificateValuesType"/>\r
+ <xs:complexType name="CertificateValuesType">\r
+ <xs:choice minOccurs="0" maxOccurs="unbounded">\r
+ <xs:element name="EncapsulatedX509Certificate" type="EncapsulatedPKIDataType"/>\r
+ <xs:element name="OtherCertificate" type="AnyType"/>\r
+ </xs:choice>\r
+ <xs:attribute name="Id" type="xs:ID" use="optional"/>\r
+ </xs:complexType>\r
+ <!-- End CertificateValues -->\r
+ <!-- Start RevocationValues-->\r
+ <xs:element name="RevocationValues" type="RevocationValuesType"/>\r
+ <xs:complexType name="RevocationValuesType">\r
+ <xs:sequence>\r
+ <xs:element name="CRLValues" type="CRLValuesType" minOccurs="0"/>\r
+ <xs:element name="OCSPValues" type="OCSPValuesType" minOccurs="0"/>\r
+ <xs:element name="OtherValues" type="OtherCertStatusValuesType" minOccurs="0"/>\r
+ </xs:sequence>\r
+ <xs:attribute name="Id" type="xs:ID" use="optional"/>\r
+ </xs:complexType>\r
+ <xs:complexType name="CRLValuesType">\r
+ <xs:sequence>\r
+ <xs:element name="EncapsulatedCRLValue" type="EncapsulatedPKIDataType" maxOccurs="unbounded"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="OCSPValuesType">\r
+ <xs:sequence>\r
+ <xs:element name="EncapsulatedOCSPValue" type="EncapsulatedPKIDataType" maxOccurs="unbounded"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="OtherCertStatusValuesType">\r
+ <xs:sequence>\r
+ <xs:element name="OtherValue" type="AnyType" maxOccurs="unbounded"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <!-- End RevocationValues-->\r
+ <xs:element name="ArchiveTimeStamp" type="TimeStampType"/>\r
+ <xs:complexType name="SigPolicyQualifierType">\r
+ <xs:sequence>\r
+ <xs:element ref="SPURI"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>\r
+<!-- edited with XMLSPY v2004 rel. 3 U (http://www.xmlspy.com) by test (test) -->\r
+<!-- Schema for XML Signatures\r
+ http://www.w3.org/2000/09/xmldsig#\r
+ $Revision: 1.1 $ on $Date: 2007/08/09 07:15:53 $ by $Author: chm $\r
+\r
+ Copyright 2001 The Internet Society and W3C (Massachusetts Institute\r
+ of Technology, Institut National de Recherche en Informatique et en\r
+ Automatique, Keio University). All Rights Reserved.\r
+ http://www.w3.org/Consortium/Legal/\r
+\r
+ This document is governed by the W3C Software License [1] as described\r
+ in the FAQ [2].\r
+\r
+ [1] http://www.w3.org/Consortium/Legal/copyright-software-19980720\r
+ [2] http://www.w3.org/Consortium/Legal/IPR-FAQ-20000620.html#DTD\r
+-->\r
+<schema targetNamespace="http://www.w3.org/2000/09/xmldsig#" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified" version="0.1">\r
+ <!-- Basic Types Defined for Signatures -->\r
+ <simpleType name="CryptoBinary">\r
+ <restriction base="base64Binary"/>\r
+ </simpleType>\r
+ <!-- Start Signature -->\r
+ <element name="Signature" type="ds:SignatureType"/>\r
+ <complexType name="SignatureType">\r
+ <sequence>\r
+ <element ref="ds:SignedInfo"/>\r
+ <element ref="ds:SignatureValue"/>\r
+ <element ref="ds:KeyInfo" minOccurs="0"/>\r
+ <element ref="ds:Object" minOccurs="0" maxOccurs="unbounded"/>\r
+ </sequence>\r
+ <attribute name="Id" type="ID" use="optional"/>\r
+ </complexType>\r
+ <element name="SignatureValue" type="ds:SignatureValueType"/>\r
+ <complexType name="SignatureValueType">\r
+ <simpleContent>\r
+ <extension base="base64Binary">\r
+ <attribute name="Id" type="ID" use="optional"/>\r
+ </extension>\r
+ </simpleContent>\r
+ </complexType>\r
+ <!-- Start SignedInfo -->\r
+ <element name="SignedInfo" type="ds:SignedInfoType"/>\r
+ <complexType name="SignedInfoType">\r
+ <sequence>\r
+ <element ref="ds:CanonicalizationMethod"/>\r
+ <element ref="ds:SignatureMethod"/>\r
+ <element ref="ds:Reference" maxOccurs="unbounded"/>\r
+ </sequence>\r
+ <attribute name="Id" type="ID" use="optional"/>\r
+ </complexType>\r
+ <element name="CanonicalizationMethod" type="ds:CanonicalizationMethodType"/>\r
+ <complexType name="CanonicalizationMethodType" mixed="true">\r
+ <sequence>\r
+ <any namespace="##any" minOccurs="0" maxOccurs="unbounded"/>\r
+ <!-- (0,unbounded) elements from (1,1) namespace -->\r
+ </sequence>\r
+ <attribute name="Algorithm" type="anyURI" use="required"/>\r
+ </complexType>\r
+ <element name="SignatureMethod" type="ds:SignatureMethodType"/>\r
+ <complexType name="SignatureMethodType" mixed="true">\r
+ <sequence>\r
+ <element name="HMACOutputLength" type="ds:HMACOutputLengthType" minOccurs="0"/>\r
+ <any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>\r
+ <!-- (0,unbounded) elements from (1,1) external namespace -->\r
+ </sequence>\r
+ <attribute name="Algorithm" type="anyURI" use="required"/>\r
+ </complexType>\r
+ <!-- Start Reference -->\r
+ <element name="Reference" type="ds:ReferenceType"/>\r
+ <complexType name="ReferenceType">\r
+ <sequence>\r
+ <element ref="ds:Transforms" minOccurs="0"/>\r
+ <element ref="ds:DigestMethod"/>\r
+ <element ref="ds:DigestValue"/>\r
+ </sequence>\r
+ <attribute name="Id" type="ID" use="optional"/>\r
+ <attribute name="URI" type="anyURI" use="optional"/>\r
+ <attribute name="Type" type="anyURI" use="optional"/>\r
+ </complexType>\r
+ <element name="Transforms" type="ds:TransformsType"/>\r
+ <complexType name="TransformsType">\r
+ <sequence>\r
+ <element ref="ds:Transform" maxOccurs="unbounded"/>\r
+ </sequence>\r
+ </complexType>\r
+ <element name="Transform" type="ds:TransformType"/>\r
+ <complexType name="TransformType" mixed="true">\r
+ <choice minOccurs="0" maxOccurs="unbounded">\r
+ <any namespace="##other" processContents="lax"/>\r
+ <element name="XPath" type="string"/>\r
+ <!-- (1,1) elements from (0,unbounded) namespaces -->\r
+ </choice>\r
+ <attribute name="Algorithm" type="anyURI" use="required"/>\r
+ </complexType>\r
+ <!-- End Reference -->\r
+ <element name="DigestMethod" type="ds:DigestMethodType"/>\r
+ <complexType name="DigestMethodType" mixed="true">\r
+ <sequence>\r
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>\r
+ </sequence>\r
+ <attribute name="Algorithm" type="anyURI" use="required"/>\r
+ </complexType>\r
+ <element name="DigestValue" type="ds:DigestValueType"/>\r
+ <simpleType name="DigestValueType">\r
+ <restriction base="base64Binary"/>\r
+ </simpleType>\r
+ <!-- End SignedInfo -->\r
+ <!-- Start KeyInfo -->\r
+ <element name="KeyInfo" type="ds:KeyInfoType"/>\r
+ <complexType name="KeyInfoType" mixed="true">\r
+ <choice maxOccurs="unbounded">\r
+ <element ref="ds:KeyName"/>\r
+ <element ref="ds:KeyValue"/>\r
+ <element ref="ds:RetrievalMethod"/>\r
+ <element ref="ds:X509Data"/>\r
+ <element ref="ds:PGPData"/>\r
+ <element ref="ds:SPKIData"/>\r
+ <element ref="ds:MgmtData"/>\r
+ <any namespace="##other" processContents="lax"/>\r
+ <!-- (1,1) elements from (0,unbounded) namespaces -->\r
+ </choice>\r
+ <attribute name="Id" type="ID" use="optional"/>\r
+ </complexType>\r
+ <element name="KeyName" type="string"/>\r
+ <element name="MgmtData" type="string"/>\r
+ <element name="KeyValue" type="ds:KeyValueType"/>\r
+ <complexType name="KeyValueType" mixed="true">\r
+ <choice>\r
+ <element ref="ds:DSAKeyValue"/>\r
+ <element ref="ds:RSAKeyValue"/>\r
+ <any namespace="##other" processContents="lax"/>\r
+ </choice>\r
+ </complexType>\r
+ <element name="RetrievalMethod" type="ds:RetrievalMethodType"/>\r
+ <complexType name="RetrievalMethodType">\r
+ <sequence>\r
+ <element ref="ds:Transforms" minOccurs="0"/>\r
+ </sequence>\r
+ <attribute name="URI" type="anyURI"/>\r
+ <attribute name="Type" type="anyURI" use="optional"/>\r
+ </complexType>\r
+ <!-- Start X509Data -->\r
+ <element name="X509Data" type="ds:X509DataType"/>\r
+ <complexType name="X509DataType">\r
+ <sequence maxOccurs="unbounded">\r
+ <choice>\r
+ <element name="X509IssuerSerial" type="ds:X509IssuerSerialType"/>\r
+ <element name="X509SKI" type="base64Binary"/>\r
+ <element name="X509SubjectName" type="string"/>\r
+ <element name="X509Certificate" type="base64Binary"/>\r
+ <element name="X509CRL" type="base64Binary"/>\r
+ <any namespace="##other" processContents="lax"/>\r
+ </choice>\r
+ </sequence>\r
+ </complexType>\r
+ <complexType name="X509IssuerSerialType">\r
+ <sequence>\r
+ <element name="X509IssuerName" type="string"/>\r
+ <element name="X509SerialNumber" type="integer"/>\r
+ </sequence>\r
+ </complexType>\r
+ <!-- End X509Data -->\r
+ <!-- Begin PGPData -->\r
+ <element name="PGPData" type="ds:PGPDataType"/>\r
+ <complexType name="PGPDataType">\r
+ <choice>\r
+ <sequence>\r
+ <element name="PGPKeyID" type="base64Binary"/>\r
+ <element name="PGPKeyPacket" type="base64Binary" minOccurs="0"/>\r
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>\r
+ </sequence>\r
+ <sequence>\r
+ <element name="PGPKeyPacket" type="base64Binary"/>\r
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>\r
+ </sequence>\r
+ </choice>\r
+ </complexType>\r
+ <!-- End PGPData -->\r
+ <!-- Begin SPKIData -->\r
+ <element name="SPKIData" type="ds:SPKIDataType"/>\r
+ <complexType name="SPKIDataType">\r
+ <sequence maxOccurs="unbounded">\r
+ <element name="SPKISexp" type="base64Binary"/>\r
+ <any namespace="##other" processContents="lax" minOccurs="0"/>\r
+ </sequence>\r
+ </complexType>\r
+ <!-- End SPKIData -->\r
+ <!-- End KeyInfo -->\r
+ <!-- Start Object (Manifest, SignatureProperty) -->\r
+ <element name="Object" type="ds:ObjectType"/>\r
+ <complexType name="ObjectType" mixed="true">\r
+ <sequence minOccurs="0" maxOccurs="unbounded">\r
+ <any namespace="##any" processContents="lax"/>\r
+ </sequence>\r
+ <attribute name="Id" type="ID" use="optional"/>\r
+ <attribute name="MimeType" type="string" use="optional"/>\r
+ <attribute name="Encoding" type="anyURI" use="optional"/>\r
+ <!-- add a grep facet -->\r
+ </complexType>\r
+ <element name="Manifest" type="ds:ManifestType"/>\r
+ <complexType name="ManifestType">\r
+ <sequence>\r
+ <element ref="ds:Reference" maxOccurs="unbounded"/>\r
+ </sequence>\r
+ <attribute name="Id" type="ID" use="optional"/>\r
+ </complexType>\r
+ <element name="SignatureProperties" type="ds:SignaturePropertiesType"/>\r
+ <complexType name="SignaturePropertiesType">\r
+ <sequence>\r
+ <element ref="ds:SignatureProperty" maxOccurs="unbounded"/>\r
+ </sequence>\r
+ <attribute name="Id" type="ID" use="optional"/>\r
+ </complexType>\r
+ <element name="SignatureProperty" type="ds:SignaturePropertyType"/>\r
+ <complexType name="SignaturePropertyType" mixed="true">\r
+ <choice maxOccurs="unbounded">\r
+ <any namespace="##other" processContents="lax"/>\r
+ <!-- (1,1) elements from (1,unbounded) namespaces -->\r
+ </choice>\r
+ <attribute name="Target" type="anyURI" use="required"/>\r
+ <attribute name="Id" type="ID" use="optional"/>\r
+ </complexType>\r
+ <!-- End Object (Manifest, SignatureProperty) -->\r
+ <!-- Start Algorithm Parameters -->\r
+ <simpleType name="HMACOutputLengthType">\r
+ <restriction base="integer"/>\r
+ </simpleType>\r
+ <!-- Start KeyValue Element-types -->\r
+ <element name="DSAKeyValue" type="ds:DSAKeyValueType"/>\r
+ <complexType name="DSAKeyValueType">\r
+ <sequence>\r
+ <sequence minOccurs="0">\r
+ <element name="P" type="ds:CryptoBinary"/>\r
+ <element name="Q" type="ds:CryptoBinary"/>\r
+ </sequence>\r
+ <element name="G" type="ds:CryptoBinary" minOccurs="0"/>\r
+ <element name="Y" type="ds:CryptoBinary"/>\r
+ <element name="J" type="ds:CryptoBinary" minOccurs="0"/>\r
+ <sequence minOccurs="0">\r
+ <element name="Seed" type="ds:CryptoBinary"/>\r
+ <element name="PgenCounter" type="ds:CryptoBinary"/>\r
+ </sequence>\r
+ </sequence>\r
+ </complexType>\r
+ <element name="RSAKeyValue" type="ds:RSAKeyValueType"/>\r
+ <complexType name="RSAKeyValueType">\r
+ <sequence>\r
+ <element name="Modulus" type="ds:CryptoBinary"/>\r
+ <element name="Exponent" type="ds:CryptoBinary"/>\r
+ </sequence>\r
+ </complexType>\r
+ <!-- End KeyValue Element-types -->\r
+ <!-- End Signature -->\r
+</schema>\r
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>\r
+<!-- edited with XMLSPY v2004 rel. 3 U (http://www.xmlspy.com) by test (test) -->\r
+<schema targetNamespace="http://www.w3.org/2001/04/xmlenc#" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.0">\r
+ <import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="../../XMLDSIG/1.0/xmldsig-core-schema.xsd"/>\r
+ <complexType name="EncryptedType" abstract="true">\r
+ <sequence>\r
+ <element name="EncryptionMethod" type="xenc:EncryptionMethodType" minOccurs="0"/>\r
+ <element ref="ds:KeyInfo" minOccurs="0"/>\r
+ <element ref="xenc:CipherData"/>\r
+ <element ref="xenc:EncryptionProperties" minOccurs="0"/>\r
+ </sequence>\r
+ <attribute name="Id" type="ID" use="optional"/>\r
+ <attribute name="Type" type="anyURI" use="optional"/>\r
+ <attribute name="MimeType" type="string" use="optional"/>\r
+ <attribute name="Encoding" type="anyURI" use="optional"/>\r
+ </complexType>\r
+ <complexType name="EncryptionMethodType" mixed="true">\r
+ <sequence>\r
+ <element name="KeySize" type="xenc:KeySizeType" minOccurs="0"/>\r
+ <element name="OAEPparams" type="base64Binary" minOccurs="0"/>\r
+ <any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>\r
+ </sequence>\r
+ <attribute name="Algorithm" type="anyURI" use="required"/>\r
+ </complexType>\r
+ <simpleType name="KeySizeType">\r
+ <restriction base="integer"/>\r
+ </simpleType>\r
+ <element name="CipherData" type="xenc:CipherDataType"/>\r
+ <complexType name="CipherDataType">\r
+ <choice>\r
+ <element name="CipherValue" type="base64Binary"/>\r
+ <element ref="xenc:CipherReference"/>\r
+ </choice>\r
+ </complexType>\r
+ <element name="CipherReference" type="xenc:CipherReferenceType"/>\r
+ <complexType name="CipherReferenceType">\r
+ <choice>\r
+ <element name="Transforms" type="xenc:TransformsType" minOccurs="0"/>\r
+ </choice>\r
+ <attribute name="URI" type="anyURI" use="required"/>\r
+ </complexType>\r
+ <complexType name="TransformsType">\r
+ <sequence>\r
+ <element ref="ds:Transform" maxOccurs="unbounded"/>\r
+ </sequence>\r
+ </complexType>\r
+ <element name="EncryptedData" type="xenc:EncryptedDataType"/>\r
+ <complexType name="EncryptedDataType">\r
+ <complexContent>\r
+ <extension base="xenc:EncryptedType"/>\r
+ </complexContent>\r
+ </complexType>\r
+ <!-- Children of ds:KeyInfo -->\r
+ <element name="EncryptedKey" type="xenc:EncryptedKeyType"/>\r
+ <complexType name="EncryptedKeyType">\r
+ <complexContent>\r
+ <extension base="xenc:EncryptedType">\r
+ <sequence>\r
+ <element ref="xenc:ReferenceList" minOccurs="0"/>\r
+ <element name="CarriedKeyName" type="string" minOccurs="0"/>\r
+ </sequence>\r
+ <attribute name="Recipient" type="string" use="optional"/>\r
+ </extension>\r
+ </complexContent>\r
+ </complexType>\r
+ <element name="AgreementMethod" type="xenc:AgreementMethodType"/>\r
+ <complexType name="AgreementMethodType" mixed="true">\r
+ <sequence>\r
+ <element name="KA-Nonce" type="base64Binary" minOccurs="0"/>\r
+ <any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>\r
+ <element name="OriginatorKeyInfo" type="ds:KeyInfoType" minOccurs="0"/>\r
+ <element name="RecipientKeyInfo" type="ds:KeyInfoType" minOccurs="0"/>\r
+ <!-- <element ref="ds:DigestMethod" minOccurs="0"/> -->\r
+ </sequence>\r
+ <attribute name="Algorithm" type="anyURI" use="required"/>\r
+ </complexType>\r
+ <!-- End Children of ds:KeyInfo -->\r
+ <element name="ReferenceList">\r
+ <complexType>\r
+ <choice maxOccurs="unbounded">\r
+ <element name="DataReference" type="xenc:ReferenceType"/>\r
+ <element name="KeyReference" type="xenc:ReferenceType"/>\r
+ </choice>\r
+ </complexType>\r
+ </element>\r
+ <complexType name="ReferenceType">\r
+ <sequence>\r
+ <any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>\r
+ </sequence>\r
+ <attribute name="URI" type="anyURI" use="required"/>\r
+ </complexType>\r
+ <element name="EncryptionProperties" type="xenc:EncryptionPropertiesType"/>\r
+ <complexType name="EncryptionPropertiesType">\r
+ <sequence>\r
+ <element ref="xenc:EncryptionProperty" maxOccurs="unbounded"/>\r
+ </sequence>\r
+ <attribute name="Id" type="ID" use="optional"/>\r
+ </complexType>\r
+ <element name="EncryptionProperty" type="xenc:EncryptionPropertyType"/>\r
+ <complexType name="EncryptionPropertyType" mixed="true">\r
+ <choice maxOccurs="unbounded">\r
+ <any namespace="##other" processContents="lax"/>\r
+ </choice>\r
+ <attribute name="Target" type="anyURI" use="optional"/>\r
+ <attribute name="Id" type="ID" use="optional"/>\r
+ <anyAttribute namespace="http://www.w3.org/XML/1998/namespace"/>\r
+ </complexType>\r
+</schema>\r
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<documents xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../defs/config-metier/documents-def.xsd">
+ <document balise="PES_Aller" extension="xml" id="pes-aller" referentiel="not-available-tag" import-class="fr.gouv.finances.dgfip.xemelios.importers.DefaultImporter" libelle-extension="de l'Etat de PES aller (XML)" schema="PES_Aller.xsd" titre="PES V2 Helios" persistence-config="PES_V2/pes-aller-persist.xml" menu-grouping="split" isControlable="true" control-config-file="PES_V2/pes-aller-controls.xml" pj-namespace-uri="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/aller" ordre-presentation="7" global-import-xslt-file="PES_V2/PES_Aller-global-import.xsl" global-uri-transformer="fr.gouv.finances.cp.xemelios.pesv2.UriTransformer" default-etat-global="general_view" natIdColl="SIRET">
+ <namespaces>
+ <!--ns prefix="" uri="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/aller"/-->
+ <ns prefix="n" uri="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/aller"/>
+ <ns prefix="added" uri="http://projets.admisource.gouv.fr/xemelios/namespaces#added"/>
+ <ns prefix="ano" uri="http://projets.admisource.gouv.fr/xemelios/namespaces#anomally"/>
+ <ns prefix="ds" uri="http://www.w3.org/2000/09/xmldsig#"/>
+ <ns prefix="xad" uri="http://uri.etsi.org/01903/v1.1.1#"/>
+ </namespaces>
+ <!--special-key libelle="Exercice" path="/PES_Aller/PES_DepenseAller/Bordereau/BlocBordereau/Exer/@V" pos="1"/-->
+ <default-budget value="00">Budget Principal</default-budget>
+ <collectivite-path id="cp1">
+ <path>/PES_Aller/EnTetePES</path>
+ <code-path>/PES_Aller/EnTetePES/IdColl/@V</code-path>
+ <libelle-path>/PES_Aller/EnTetePES/LibelleColBud/@V</libelle-path>
+ </collectivite-path>
+ <budget-path id="bp1">
+ <path>/PES_Aller/EnTetePES</path>
+ <code-path>/PES_Aller/EnTetePES/CodBud/@V</code-path>
+ <libelle-path>/PES_Aller/EnTetePES/LibBud/@V</libelle-path>
+ </budget-path>
+
+ <entete id="et1">EnTetePES</entete>
+ <entete id="et2">Enveloppe</entete>
+ <entete id="et3">Signature</entete>
+
+ <etat balise="PES_DepenseAller" balise-namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/aller" id="PES_DepenseAller" titre="Dépense" use-external-browser="false" importable-element="BordereauDepense" xslt-file="PES_V2/mandatBordereau.xsl" exportable="true">
+ <help>Cet état regroupe les bordereaux de dépense</help>
+ <element balise="Bordereau" id="BordereauDepense" max-display="20" titre="Bordereaux">
+ <path>/n:PES_Aller/n:PES_DepenseAller/n:Bordereau</path>
+
+ <environment>
+ <variable name="max-display" domain="element" type="integer">
+ <libelle>Nombre de Bordereaux affichés</libelle>
+ <reference name="@max-display"/>
+ </variable>
+ <variable name="max-display" domain="documents" type="integer">
+ <libelle>Nombre de Bordereaux affichés</libelle>
+ <reference name="/documents/document[@id='pes-aller']/etat[@id='PES_DepenseAller']/element[@id='BordereauDepense']/@max-display"/>
+ </variable>
+ </environment>
+
+ <liste-resultat ordre="ASC,ASC" tri-defaut="e1lr1,e1lr2">
+ <hidden name="xsl-param:elementId">
+ <valeur>name()</valeur>
+ </hidden>
+ <champ id="e1lr1" libelle="Exercice" affichable="true" exportable="true" identifiant="true">
+ <help>Exercice du Bordereau</help>
+ <valeur>n:BlocBordereau/n:Exer/@V</valeur>
+ </champ>
+ <champ id="e1lr2" libelle="Numéro Bordereau" affichable="true" exportable="true" identifiant="true" datatype="integer">
+ <help>Numéro de Bordereau</help>
+ <valeur>n:BlocBordereau/n:IdBord/@V</valeur>
+ </champ>
+ <champ id="e1lr3" libelle="Date Emission" datatype="date" affichable="true" exportable="true" identifiant="false">
+ <help>Date d'émission du Bordereau</help>
+ <valeur>n:BlocBordereau/n:DteBordEm/@V</valeur>
+ </champ>
+ <champ id="e1lr4" libelle="Somme HT" datatype="amount" affichable="true" exportable="true" identifiant="false" aggregate="true">
+ <help>Somme HT du Bordereau</help>
+ <valeur>n:BlocBordereau/n:MtBordHT/@V</valeur>
+ </champ>
+ <champ id="e1lr5" libelle="Somme TTC" datatype="amount" affichable="true" exportable="true" identifiant="false" aggregate="true">
+ <help>Somme TTC du Bordereau</help>
+ <valeur>@added:montantTTC</valeur>
+ </champ>
+ <champ id="e1lr6" libelle="Type de Bordereau" affichable="true" exportable="true" identifiant="true">
+ <help>Type de Bordereau</help>
+ <!--valeur>BlocBordereau/TypBord/@V</valeur-->
+ <valeur>@added:LibelleTypBord</valeur>
+ </champ>
+ <champ id="e1lr7" libelle="Nb Mandats" affichable="true" exportable="true" identifiant="false" aggregate="true" datatype="integer">
+ <help>Nombre de Mandats contenus dans le Bordereau</help>
+ <valeur>@added:nbPiece</valeur>
+ </champ>
+ </liste-resultat>
+
+ <enfants>
+ <enfant element="Piece" path="n:Piece"/>
+ </enfants>
+
+ <critere id="bordereau_exercice" libelle="Exercice du Bordereau">
+ <help>Permet de filtrer par exercice de Bordereau</help>
+ <path>{n:BlocBordereau/n:Exer/@V=##VALEUR:bordereau_exercice##}</path>
+ <input id="bordereau_exercice" help="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:BlocBordereau/n:Exer/@V"/>
+ </critere>
+ <critere id="bordereau_id" libelle="Numéro de Bordereau">
+ <help>Permet de filtrer par numéro de Bordereau</help>
+ <path>{n:BlocBordereau/n:IdBord/@V##OPERATEUR:bordereau_id####VALEUR:bordereau_id##}</path>
+ <input id="bordereau_id" datatype="numeric"/>
+ </critere>
+ <critere id="bordereau_date_emission" libelle="Date d'émission">
+ <help>Permet de filtrer par date d'émission du Bordereau</help>
+ <path>{##OPERATEUR:bordereau_date_emission##(n:BlocBordereau/n:DteBordEm/@V,"##VALEUR:bordereau_date_emission##")}</path>
+ <input id="bordereau_date_emission" datatype="date" xml-format="yyyy-MM-dd"/>
+ </critere>
+ <critere id="bordereau_mt_bord_ht" libelle="Somme HT">
+ <help>Permet de filtrer par montant HT du Bordereau</help>
+ <path>{n:BlocBordereau/n:MtBordHT/@V##OPERATEUR:bordereau_mt_ht####VALEUR:bordereau_mt_ht##}</path>
+ <input id="bordereau_mt_ht" datatype="numeric"/>
+ </critere>
+ <critere id="bordereau_montant_TTC" libelle="Somme TTC">
+ <help>Permet de filtrer par montant TTC du Bordereau</help>
+ <path>{@added:montantTTC##OPERATEUR:bordereau_montant_TTC####VALEUR:bordereau_montant_TTC##}</path>
+ <input id="bordereau_montant_TTC" datatype="numeric"/>
+ </critere>
+ <critere id="bordereau_type" libelle="Type de Bordereau">
+ <help>Permet de filtrer par type de Bordereau</help>
+ <path>{n:BlocBordereau/n:TypBord/@V="##VALEUR:bordereau_type##"}</path>
+ <select id="bordereau_type">
+ <option value="01">Bordereau de Mandats</option>
+ <option value="02">Bordereau d'annulation de Mandats</option>
+ <option value="03">Bordereau d'ordres de paiement ordonnateur</option>
+ <option value="04">Bordereau de Mandats émis d'office</option>
+ </select>
+ </critere>
+ <critere id="bordereau_nb_pieces" libelle="Nombre de Pièces">
+ <help>Permet de filtrer par le nombre de Pièces du Bordereau</help>
+ <path>{@added:nbPiece##OPERATEUR:bordereau_nb_pieces####VALEUR:bordereau_nb_pieces##}</path>
+ <input id="bordereau_nb_pieces" datatype="numeric"/>
+ </critere>
+ </element>
+
+ <element balise="Piece" id="Piece" max-display="20" titre="Mandats">
+ <path>/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece</path>
+
+ <environment>
+ <variable name="max-display" domain="element" type="integer">
+ <libelle>Nombre de Bordereaux affichés</libelle>
+ <reference name="@max-display"/>
+ </variable>
+ <variable name="max-display" domain="documents" type="integer">
+ <libelle>Nombre de Bordereaux affichés</libelle>
+ <reference name="/documents/document[@id='pes-aller']/etat[@id='PES_DepenseAller']/element[@id='Piece']/@max-display"/>
+ </variable>
+ </environment>
+
+ <liste-resultat ordre="ASC,ASC,ASC" tri-defaut="e2lr1,numBordereau,e2lr3">
+ <hidden name="xsl-param:mandatId">
+ <valeur>n:BlocPiece/n:InfoPce/n:IdPce/@V</valeur>
+ </hidden>
+
+ <champ id="e2lr1" libelle="Exercice Bord." affichable="true" exportable="true" identifiant="false">
+ <help>Exercice du Bordereau</help>
+ <valeur>../n:BlocBordereau/n:Exer/@V</valeur>
+ </champ>
+ <champ id="numBordereau" libelle="Num. Bordereau" affichable="true">
+ <help>Numéro du Bordereau</help>
+ <valeur>../n:BlocBordereau/n:IdBord/@V</valeur>
+ </champ>
+ <champ id="e2lr3" libelle="Num. Mandat" affichable="true" exportable="true" identifiant="true">
+ <help>Numéro du Mandat</help>
+ <valeur>n:BlocPiece/n:InfoPce/n:IdPce/@V</valeur>
+ </champ>
+ <champ id="e2lr4" libelle="Objet Mandat" affichable="true" exportable="true" identifiant="false">
+ <help>Objet du Mandat</help>
+ <valeur>n:BlocPiece/n:InfoPce/n:Obj/@V</valeur>
+ </champ>
+ <champ id="e2lr5" libelle="Mt HT" datatype="amount" affichable="true" exportable="true" identifiant="false" aggregate="true">
+ <help>Montant HT du Mandat</help>
+ <valeur>@added:montantHT</valeur>
+ </champ>
+ <champ id="e2lr6" libelle="Mt TTC" datatype="amount" affichable="true" exportable="true" identifiant="false" aggregate="true">
+ <help>Montant TTC du Mandat</help>
+ <valeur>@added:montantTTC</valeur>
+ </champ>
+ <champ id="e2lr7" libelle="Type Mandat" affichable="true" exportable="true" identifiant="true">
+ <help>Type de Mandat</help>
+ <valeur>@added:LibelleTypPiece</valeur>
+ </champ>
+ <champ id="e2lr8" libelle="Nature Mandat" affichable="true" exportable="true" identifiant="false">
+ <help>Nature du Mandat</help>
+ <valeur>@added:LibelleNatPiece</valeur>
+ </champ>
+ <champ id="e2lr9" libelle="Eligible DGP" datatype="string" affichable="true" exportable="true" identifiant="false">
+ <help>Date de début du délai global de paiement</help>
+ <valeur>@added:EligibleDGP</valeur>
+ </champ>
+ <champ id="e2lr10" libelle="Date début DGP" datatype="date" affichable="true" exportable="true" identifiant="false">
+ <help>Date de début du délai global de paiement</help>
+ <valeur>n:BlocPiece/n:DGP/n:DteDebDgp/@V</valeur>
+ </champ>
+ <champ id="e2lr11" libelle="Date fin DGP" datatype="date" affichable="true" exportable="true" identifiant="false">
+ <help>Date de fin du délai global de paiement</help>
+ <valeur>n:BlocPiece/n:DGP/n:DteFinDgp/@V</valeur>
+ </champ>
+ <champ id="pjCount" libelle="Nb. PJ" datatype="integer" affichable="true" exportable="true" identifiant="false" aggregate="true">
+ <help>Nombre de Pièces justificatives du Mandat</help>
+ <valeur>@added:nbPJ</valeur>
+ </champ>
+ <champ id="e2lr12" libelle="Date échéance" datatype="date" affichable="true" exportable="true" identifiant="false">
+ <help>Date d'échéance</help>
+ <valeur>n:BlocPiece/n:InfoPce/n:DteEch/@V</valeur>
+ </champ>
+ <champ id="e2lr13" libelle="Justifié par" datatype="string" affichable="true" exportable="true" identifiant="false">
+ <help>Justifié par</help>
+ <valeur>added:AllPJRef/n:IdUnique/@V</valeur>
+ </champ>
+ </liste-resultat>
+
+ <parent element="BordereauDepense" path=".."/>
+
+ <enfants>
+ <enfant element="LigneDePiece" path="n:LigneDePiece"/>
+ </enfants>
+
+ <critere id="bordereau_exercice" libelle="Exercice du Bordereau">
+ <help><![CDATA[Permet de filtrer par exercice de Bordereau]]></help>
+ <path>{../n:BlocBordereau/n:Exer/@V=##VALEUR:bordereau_exercice##}</path>
+ <input id="bordereau_exercice" help="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:BlocBordereau/n:Exer/@V"/>
+ </critere>
+ <critere id="bordereau_id" libelle="Numéro de Bordereau">
+ <help><![CDATA[Permet de filtrer par numéro de Bordereau]]></help>
+ <path>{../n:BlocBordereau/n:IdBord/@V##OPERATEUR:bordereau_id####VALEUR:bordereau_id##}</path>
+ <input id="bordereau_id" datatype="numeric"/>
+ </critere>
+ <critere id="piece_id" libelle="Numéro de Mandat">
+ <help>Permet de filtrer par numéro de Mandat</help>
+ <path>{n:BlocPiece/n:InfoPce/n:IdPce/@V##OPERATEUR:piece_id####VALEUR:piece_id##}</path>
+ <input id="piece_id" datatype="numeric"/>
+ </critere>
+ <critere id="piece_obj" libelle="Objet du Mandat">
+ <path>{##OPERATEUR:piece_obj##(n:BlocPiece/n:InfoPce/n:Obj/@V,"##VALEUR:piece_obj##")}</path>
+ <input id="piece_obj" datatype="string"/>
+ </critere>
+ <critere id="piece_montantHT" libelle="Montant HT">
+ <help>Permet de filtrer par montant HT de Mandat</help>
+ <path>{@added:montantHT##OPERATEUR:piece_montantHT####VALEUR:piece_montantHT##}</path>
+ <input id="piece_montantHT" datatype="numeric"/>
+ </critere>
+ <critere id="piece_montantTTC" libelle="Montant TTC">
+ <help>Permet de filtrer par montant TTC de Mandat</help>
+ <path>{@added:montantTTC##OPERATEUR:piece_montantTTC####VALEUR:piece_montantTTC##}</path>
+ <input id="piece_montantTTC" datatype="numeric"/>
+ </critere>
+ <critere id="piece_type" libelle="Type de Mandat">
+ <help>Permet de filtrer par type de Mandat</help>
+ <path>{n:BlocPiece/n:InfoPce/n:TypPce/@V="##VALEUR:piece_type##"}</path>
+ <select id="piece_type">
+ <option value="01">Mandat ordinaire</option>
+ <option value="02">Mandat correctif</option>
+ <option value="03">Mandat ordre budgétaire</option>
+ <option value="04">Mandat d'ordre mixte</option>
+ <option value="05">Mandat émis après paiement</option>
+ <option value="06">Mandat global</option>
+ <option value="07">Mandat d'admission en non valeurs</option>
+ <option value="08">Mandat collectif</option>
+ <option value="09">Mandat sur marché</option>
+ <option value="10">Mandat de rattachement</option>
+ <option value="11">Ordre de paiement</option>
+ <option value="13">Charges constatées d'avance</option>
+ </select>
+ </critere>
+ <critere id="piece_nature" libelle="Nature de Mandat">
+ <help>Permet de filtrer par nature de Mandat</help>
+ <path>{n:BlocPiece/n:InfoPce/n:NatPce/@V="##VALEUR:piece_nature##"}</path>
+ <select id="piece_nature">
+ <option value="01">Fonctionnement</option>
+ <option value="02">Investissement</option>
+ <option value="03">Inventaire</option>
+ <option value="04">Emprunt</option>
+ <option value="05">Régie</option>
+ <option value="06">Annulation / Réduction</option>
+ <option value="07">Complémentaire</option>
+ <option value="08">Ré-émis</option>
+ <option value="09">Annulant un titre</option>
+ <option value="10">Annulation du Mandat de rattachement</option>
+ <option value="11">Paie</option>
+ <option value="12">Retenue de garantie</option>
+ <option value="13">Dernier acompte sur marché</option>
+ <option value="14">Avance forfaitaire</option>
+ <option value="15">Autre</option>
+ <option value="18">Cession</option>
+ </select>
+ </critere>
+ <critere id="piece_dgp" libelle="Eligibles au DGP">
+ <help>Permet de filtrer par éligibilité au DGP</help>
+ <path>{@added:DGP="##VALEUR:piece_dgp##"}</path>
+ <select id="piece_dgp">
+ <option value="true">OUI</option>
+ <option value="false">NON</option>
+ </select>
+ </critere>
+ <critere id="piece_dgp_date_deb" libelle="Date de début du DGP ">
+ <help>Permet de filtrer par date de début de DGP</help>
+ <path>{##OPERATEUR:piece_dgp_date_deb##(n:BlocPiece/n:DGP/n:DteDebDgp/@V,"##VALEUR:piece_dgp_date_deb##")}</path>
+ <input id="piece_dgp_date_deb" datatype="date" xml-format="yyyy-MM-dd"/>
+ </critere>
+ <critere id="piece_dgp_date_fin" libelle="Date de fin du DGP ">
+ <help>Permet de filtrer par date de fin de DGP</help>
+ <path>{##OPERATEUR:piece_dgp_date_fin##(n:BlocPiece/n:DGP/n:DteFinDgp/@V,"##VALEUR:piece_dgp_date_fin##")}</path>
+ <input id="piece_dgp_date_fin" datatype="date" xml-format="yyyy-MM-dd"/>
+ </critere>
+ <critere id="piece_avec_pj" libelle="Pièce avec PJ">
+ <help>Permet de filtrer les Mandats ayant ou non des Pièces justificatives</help>
+ <path>{@added:avecPJ="##VALEUR:piece_avec_pj##"}</path>
+ <select id="piece_avec_pj">
+ <option value="true">OUI</option>
+ <option value="false">NON</option>
+ </select>
+ </critere>
+ <critere id="piece_date_echeance" libelle="Date d'échéance">
+ <help>Permet de filtrer par date d'échéance</help>
+ <path>{##OPERATEUR:piece_date_echeance##(n:BlocPiece/n:InfoPce/n:DteEch/@V,"##VALEUR:piece_date_echeance##")}</path>
+ <input id="piece_date_echeance" datatype="date" xml-format="yyyy-MM-dd"/>
+ </critere>
+ <critere id="justifie_par" libelle="Justifié par">
+ <help>Permet de filtrer par Pièce justificative</help>
+ <path>{added:AllPJRef{##OPERATEUR:IdUnique##(added:AllPJRef/n:IdUnique/@V,"##VALEUR:IdUnique##")}}</path>
+ <input id="IdUnique" datatype="string" libelle="(Id Unique)"/>
+ </critere>
+ </element>
+
+ <element balise="LigneDePiece" id="LigneDePiece" max-display="20" titre="Lignes De Mandat">
+ <path>/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece</path>
+
+ <environment>
+ <variable name="max-display" domain="element" type="integer">
+ <libelle>Nombre de Bordereaux affichés</libelle>
+ <reference name="@max-display"/>
+ </variable>
+ <variable name="max-display" domain="documents" type="integer">
+ <libelle>Nombre de Bordereaux affichés</libelle>
+ <reference name="/documents/document[@id='pes-aller']/etat[@id='PES_DepenseAller']/element[@id='LigneDePiece']/@max-display"/>
+ </variable>
+ </environment>
+
+ <liste-resultat ordre="ASC,ASC,ASC,ASC" tri-defaut="e3lr1,e3lr2,e3lr3,e3lr4">
+ <hidden name="xsl-param:mandatId">
+ <valeur>../n:BlocPiece/n:InfoPce/n:IdPce/@V</valeur>
+ </hidden>
+
+ <champ id="e3lr1" libelle="Exercice Bordereau" affichable="true" exportable="true" identifiant="false">
+ <help>Exercice du Bordereau</help>
+ <valeur>../../n:BlocBordereau/n:Exer/@V</valeur>
+ </champ>
+ <champ id="e3lr2" libelle="Num. Bordereau" datatype="integer" affichable="true">
+ <help>Numéro du Bordereau</help>
+ <valeur>../../n:BlocBordereau/n:IdBord/@V</valeur>
+ </champ>
+ <champ id="e3lr3" libelle="Num. Mandat" datatype="integer" affichable="true" exportable="true" identifiant="true">
+ <help>Numéro du Mandat</help>
+ <valeur>../n:BlocPiece/n:InfoPce/n:IdPce/@V</valeur>
+ </champ>
+ <champ id="e3lr4" libelle="Num. Ligne" datatype="integer" affichable="true" exportable="true" identifiant="true">
+ <help>Numéro de ligne de Mandat</help>
+ <valeur>n:BlocLignePiece/n:InfoLignePce/n:IdLigne/@V</valeur>
+ </champ>
+ <champ id="e3lr5" libelle="Compte Nature" datatype="integer" affichable="true" exportable="true" identifiant="false">
+ <help>Imputation par nature</help>
+ <valeur>n:BlocLignePiece/n:InfoLignePce/n:Nature/@V</valeur>
+ </champ>
+ <champ id="e3lr6" libelle="Compte Fonction" datatype="integer" affichable="true" exportable="true" identifiant="false">
+ <help>Imputation par fonction</help>
+ <valeur>n:BlocLignePiece/n:InfoLignePce/n:Fonction/@V</valeur>
+ </champ>
+ <champ id="e3lr7" libelle="Code Opération" affichable="true" exportable="true" identifiant="false">
+ <help>Numéro d'opération</help>
+ <valeur>n:BlocLignePiece/n:InfoLignePce/n:Operation/@V</valeur>
+ </champ>
+ <champ id="e3lr8" libelle="Tiers (Nom)" affichable="true" exportable="true" identifiant="false">
+ <help>Nom du créancier</help>
+ <valeur>n:Tiers/n:InfoTiers/n:Nom/@V</valeur>
+ </champ>
+ <champ id="e3lr9" libelle="Tiers (Prénom)" affichable="true" exportable="true" identifiant="false">
+ <help>Prénom du créancier</help>
+ <valeur>n:Tiers/n:InfoTiers/n:Prenom/@V</valeur>
+ </champ>
+ <champ id="e3lr10" libelle="Obj. Mandat" affichable="true" exportable="true" identifiant="false">
+ <help>Objet du Mandat</help>
+ <valeur>../n:BlocPiece/n:InfoPce/n:Obj/@V</valeur>
+ </champ>
+ <champ id="e3lr11" libelle="Mt HT" datatype="amount" affichable="true" exportable="true" identifiant="false" aggregate="true">
+ <help>Montant HT</help>
+ <valeur>n:BlocLignePiece/n:InfoLignePce/n:MtHT/@V</valeur>
+ </champ>
+ <champ id="e3lr12" libelle="Mt TVA" datatype="amount" affichable="true" exportable="true" identifiant="false" aggregate="true">
+ <help>Montant TVA</help>
+ <valeur>n:BlocLignePiece/n:InfoLignePce/n:MtTVA/@V</valeur>
+ </champ>
+ <champ id="e3lr13" libelle="Mt TTC" datatype="amount" affichable="true" exportable="true" identifiant="false" aggregate="true">
+ <help>Montant TTC</help>
+ <valeur>@added:montantTTC</valeur>
+ </champ>
+ <champ id="e3lr14" libelle="Compte Tiers" affichable="true" exportable="true" identifiant="false">
+ <help>Compte tiers</help>
+ <valeur>n:BlocLignePiece/n:InfoLignePce/n:CpteTiers/@V</valeur>
+ </champ>
+ <champ id="e3lr15" libelle="Mode de Règlement" affichable="true" exportable="true" identifiant="false">
+ <help>Compte tiers</help>
+ <valeur>n:BlocLignePiece/n:InfoLignePce/n:ModRegl/@added:Libelle</valeur>
+ </champ>
+ <champ id="e3lr16" libelle="Cpte Bancaire" affichable="true" exportable="true" identifiant="false">
+ <help>Compte tiers</help>
+ <valeur>n:Tiers/n:CpteBancaire/@added:rib</valeur>
+ </champ>
+ <champ id="e3lr17" libelle="Num. Marché" affichable="true" exportable="true" identifiant="false">
+ <help>Numéro du marché</help>
+ <valeur>n:BlocLignePiece/n:LiensIdent/n:IdMarche/@V</valeur>
+ </champ>
+ <champ id="e3lr18" libelle="Num. Régie" datatype="integer" affichable="true" exportable="true" identifiant="false">
+ <help>Numéro de régie</help>
+ <valeur>n:BlocLignePiece/n:LiensIdent/n:IdRegie/@V</valeur>
+ </champ>
+ <champ id="e3lr19" libelle="Typ. Pce Origine" affichable="true" exportable="true" identifiant="false">
+ <help>Type de la Pièce d'origine de régie</help>
+ <valeur>@added:LibelleNatPceOrigLignePiece</valeur>
+ </champ>
+ <champ id="e3lr20" libelle="Exer. Rattach." affichable="true" exportable="true" identifiant="false">
+ <help>Exercice de rattachement</help>
+ <valeur>n:BlocLignePiece/n:RattachPiece/n:ExerRat/@V</valeur>
+ </champ>
+ <champ id="e3lr21" libelle="Num. Pce Origine" affichable="true" exportable="true" identifiant="false">
+ <help>Numéro de la Pièce d'origine</help>
+ <valeur>n:BlocLignePiece/n:RattachPiece/n:IdPceOrig/@V</valeur>
+ </champ>
+ <champ id="e3lr22" libelle="Cat. Tiers" affichable="true" exportable="true" identifiant="false">
+ <help>Catégorie du créancier</help>
+ <valeur>@added:LibelleCatTiersLignePiece</valeur>
+ </champ>
+ <champ id="e3lr23" libelle="Nature Juridique" affichable="true" exportable="true" identifiant="false">
+ <help>Nature juridique du créancier</help>
+ <valeur>@added:LibelleNatJurLignePiece</valeur>
+ </champ>
+ <champ id="e3lr24" libelle="Id. National" affichable="true" exportable="true" identifiant="false">
+ <help>Identifiant national du créancier</help>
+ <valeur>n:Tiers/n:InfoTiers/n:IdTiers/@V</valeur>
+ </champ>
+ <champ id="e3lr25" libelle="Id. National (Type)" affichable="true" exportable="true" identifiant="false">
+ <help>Identifiant national du créancier (Type)</help>
+ <valeur>n:Tiers/n:InfoTiers/n:IdTiers/@V</valeur>
+ </champ>
+ <champ id="e3lr26" libelle="Num. Facture" affichable="true" exportable="true" identifiant="false">
+ <help>Numéro de Facture</help>
+ <valeur>n:BlocLignePiece/n:InfoLignePce/n:Facture/@V</valeur>
+ </champ>
+ </liste-resultat>
+
+ <parent element="Piece" path=".."/>
+
+ <critere id="bordereau_exercice" libelle="Exercice du Bordereau">
+ <help>Permet de filtrer par exercice</help>
+ <path>{../../n:BlocBordereau/n:Exer/@V=##VALEUR:bordereau_exercice##}</path>
+ <input id="bordereau_exercice" help="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:BlocBordereau/n:Exer/@V"/>
+ </critere>
+ <critere id="bordereau_id" libelle="Numéro de Bordereau">
+ <help>Permet de filtrer par numéro de Bordereau</help>
+ <path>{../../n:BlocBordereau/n:IdBord/@V##OPERATEUR:bordereau_id####VALEUR:bordereau_id##}</path>
+ <input id="bordereau_id" datatype="numeric"/>
+ </critere>
+ <critere id="piece_id" libelle="Numéro de Mandat">
+ <help>Permet de filtrer par numéro de Mandat</help>
+ <path>{../n:BlocPiece/n:InfoPce/n:IdPce/@V##OPERATEUR:piece_id####VALEUR:piece_id##}</path>
+ <input id="piece_id" datatype="numeric"/>
+ </critere>
+ <critere id="ligne_piece_id_ligne" libelle="Numéro de Ligne">
+ <help>Permet de filtrer par numéro de Mandat</help>
+ <path>{n:BlocLignePiece/n:InfoLignePce/n:IdLigne/@V##OPERATEUR:ligne_piece_id_ligne####VALEUR:ligne_piece_id_ligne##}</path>
+ <input id="ligne_piece_id_ligne" datatype="numeric"/>
+ </critere>
+ <critere id="ligne_piece_nature" libelle="Compte par Nature">
+ <help>Permet de filtrer par imputation par nature</help>
+ <path>{##OPERATEUR:ligne_piece_nature##(n:BlocLignePiece/n:InfoLignePce/n:Nature/@V,"##VALEUR:ligne_piece_nature##")}</path>
+ <input id="ligne_piece_nature" datatype="string" help="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePce/n:Nature/@V"/>
+ </critere>
+ <critere id="ligne_piece_fonction" libelle="Compte par Fonction">
+ <help>Permet de filtrer par imputation par fonction</help>
+ <path>{##OPERATEUR:ligne_piece_fonction##(n:BlocLignePiece/n:InfoLignePce/n:Fonction/@V,"##VALEUR:ligne_piece_fonction##")}</path>
+ <input id="ligne_piece_fonction" datatype="string" help="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePce/n:Fonction/@V"/>
+ </critere>
+ <critere id="ligne_piece_operation" libelle="Code Opération">
+ <help>Permet de filtrer par numéro d'opération</help>
+ <path>{##OPERATEUR:ligne_piece_operation##(n:BlocLignePiece/n:InfoLignePce/n:Operation/@V,"##VALEUR:ligne_piece_operation##")}</path>
+ <input id="ligne_piece_operation" datatype="string" help="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePce/n:Operation/@V"/>
+ </critere>
+ <critere id="ligne_piece_nom" libelle="Tiers (Nom)">
+ <help>Permet de filtrer par nom de créancier</help>
+ <path>{##OPERATEUR:ligne_piece_nom##(n:Tiers/n:InfoTiers/n:Nom/@V,"##VALEUR:ligne_piece_nom##")}</path>
+ <input id="ligne_piece_nom" datatype="string" uppercase="true"/>
+ </critere>
+ <critere id="ligne_piece_prenom" libelle="Tiers (Prénom)">
+ <help>Permet de filtrer par prénom de créancier</help>
+ <path>{##OPERATEUR:ligne_piece_prenom##(n:Tiers/n:InfoTiers/n:Prenom/@V,"##VALEUR:ligne_piece_prenom##")}</path>
+ <input id="ligne_piece_prenom" datatype="string" uppercase="true"/>
+ </critere>
+ <critere id="piece_obj" libelle="Objet du Mandat">
+ <path>{##OPERATEUR:piece_obj##(../n:BlocPiece/n:InfoPce/n:Obj/@V,"##VALEUR:piece_obj##")}</path>
+ <input id="piece_obj" datatype="string"/>
+ </critere>
+ <critere id="ligne_piece_montant_ht" libelle="Montant HT">
+ <help>Permet de filtrer par montant HT</help>
+ <path>{n:BlocLignePiece/n:InfoLignePce/n:MtHT/@V##OPERATEUR:ligne_piece_montant_ht####VALEUR:ligne_piece_montant_ht##}</path>
+ <input id="ligne_piece_montant_ht" datatype="numeric"/>
+ </critere>
+ <critere id="ligne_piece_montant_tva" libelle="Montant TVA">
+ <help>Permet de filtrer par montant TVA</help>
+ <path>{n:BlocLignePiece/n:InfoLignePce/n:MtTVA/@V##OPERATEUR:ligne_piece_montant_tva####VALEUR:ligne_piece_montant_tva##}</path>
+ <input id="ligne_piece_montant_tva" datatype="numeric"/>
+ </critere>
+ <critere id="ligne_piece_montant_ttc" libelle="Montant TTC">
+ <help>Permet de filtrer par montant TTC</help>
+ <path>{@added:montantTTC##OPERATEUR:ligne_piece_montant_ttc####VALEUR:ligne_piece_montant_ttc##}</path>
+ <input id="ligne_piece_montant_ttc" datatype="numeric"/>
+ </critere>
+ <critere id="ligne_piece_compte_tiers" libelle="Compte de Tiers">
+ <help>Permet de filtrer par compte de tiers</help>
+ <path>{##OPERATEUR:ligne_piece_compte_tiers##(n:BlocLignePiece/n:InfoLignePce/n:CpteTiers/@V,"##VALEUR:ligne_piece_compte_tiers##")}</path>
+ <input id="ligne_piece_compte_tiers" datatype="string" uppercase="true"/>
+ </critere>
+ <critere id="ligne_piece_mode_reglement" libelle="Mode de Réglement">
+ <help>Permet de filtrer par mode de règlement</help>
+ <path>{n:BlocLignePiece/n:InfoLignePce/n:ModRegl/@V##OPERATEUR:ligne_piece_mode_reglement####VALEUR:ligne_piece_mode_reglement##}</path>
+ <select id="ligne_piece_mode_reglement">
+ <option value="01">Numéraire</option>
+ <option value="02">Chèque</option>
+ <option value="03">Virement</option>
+ <option value="04">Virement appli externe</option>
+ <option value="05">Virement gros montant</option>
+ <option value="06">Virement à l'étranger</option>
+ <option value="07">Opération budget rattaché</option>
+ <option value="08">Opération d'ordre</option>
+ <option value="09">Autres</option>
+ <option value="10">Prélèvement</option>
+ <option value="11">Virement interne</option>
+ </select>
+ </critere>
+ <critere id="ligne_piece_rib" libelle="Compte Bancaire (RIB)">
+ <help>Permet de filtrer par Compte bancaire</help>
+ <path>{##OPERATEUR:ligne_piece_rib##(n:Tiers/n:CpteBancaire/@added:rib,"##VALEUR:ligne_piece_rib##")}</path>
+ <input id="ligne_piece_rib" datatype="string" uppercase="true"/>
+ </critere>
+ <critere id="ligne_piece_id_marche" libelle="Numéro de Marché">
+ <help>Permet de filtrer par numéro de marché</help>
+ <path>{##OPERATEUR:ligne_piece_id_marche##(n:BlocLignePiece/n:LiensIdent/n:IdMarche/@V,"##VALEUR:ligne_piece_id_marche##")}</path>
+ <input id="ligne_piece_id_marche" datatype="string" help="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:LiensIdent/n:IdMarche/@V"/>
+ </critere>
+ <critere id="ligne_piece_id_regie" libelle="Numéro de Régie">
+ <help>Permet de filtrer par numéro de régie</help>
+ <path>{n:BlocLignePiece/n:LiensIdent/n:IdRegie/@V##OPERATEUR:ligne_piece_id_regie####VALEUR:ligne_piece_id_regie##}</path>
+ <input id="ligne_piece_id_regie" datatype="numeric" help="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:LiensIdent/n:IdRegie/@V"/>
+ </critere>
+ <critere id="ligne_piece_nature_piece" libelle="Type de Pièce origine">
+ <help>Permet de filtrer par type de Pièce d'origine</help>
+ <path>{n:BlocLignePiece/n:RattachPiece/n:NatPceOrig/@V=##VALEUR:ligne_piece_nature_piece##}</path>
+ <select id="ligne_piece_nature_piece">
+ <option value="01">Mandat</option>
+ <option value="02">Titre</option>
+ <option value="03">Paiement</option>
+ <option value="04">Liste non valeur</option>
+ </select>
+ </critere>
+ <critere id="ligne_piece_exercice_rat" libelle="Exercice de Rattachement">
+ <help>Permet de filtrer par exercice de rattachement</help>
+ <path>{n:BlocLignePiece/n:RattachPiece/n:ExerRat/@V##OPERATEUR:ligne_piece_exercice_rat####VALEUR:ligne_piece_exercice_rat##}</path>
+ <input id="ligne_piece_exercice_rat" datatype="numeric" help="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:RattachPiece/n:ExerRat/@V"/>
+ </critere>
+ <critere id="ligne_piece_id_piece_origine" libelle="Numéro Pièce d'origine">
+ <help>Permet de filtrer par numéro de Pièce d'origine</help>
+ <path>{n:BlocLignePiece/n:RattachPiece/n:IdPceOrig/@V##OPERATEUR:ligne_piece_id_piece_origine####VALEUR:ligne_piece_id_piece_origine##}</path>
+ <input id="ligne_piece_id_piece_origine" datatype="numeric"/>
+ </critere>
+ <critere id="ligne_piece_categorie_tiers" libelle="Catégorie de tiers">
+ <help>Permet de filtrer par catégorie de créancier</help>
+ <path>{##OPERATEUR:ligne_piece_categorie_tiers##(n:Tiers/n:InfoTiers/n:CatTiers/@V,"##VALEUR:ligne_piece_categorie_tiers##")}</path>
+ <select id="ligne_piece_categorie_tiers">
+ <option value="01">Personnes physiques</option>
+ <option value="20">État et établissements publics nationaux</option>
+ <option value="21">Régions</option>
+ <option value="22">Départements</option>
+ <option value="23">Communes</option>
+ <option value="24">Groupements de collectivités</option>
+ <option value="25">Caisses des écoles</option>
+ <option value="26">CCAS</option>
+ <option value="27">Établissements publics de santé</option>
+ <option value="28">École nationale de la santé publique</option>
+ <option value="29">Autres établissements publics et organismes internationaux</option>
+ <option value="50">Personnes morales de droit privé autres qu'organismes sociaux</option>
+ <option value="60">Caisses de sécurité sociale régime général</option>
+ <option value="61">Caisses de sécurité sociale régime agricole</option>
+ <option value="62">Sécurité sociale des travailleurs non salariés et professions non agricoles</option>
+ <option value="63">Autres régimes obligatoires de sécurité sociale</option>
+ <option value="64">Mutuelles et organismes d'assurance</option>
+ <option value="65">Divers autres tiers payants</option>
+ <option value="70">CNRACL</option>
+ <option value="71">IRCANTEC</option>
+ <option value="72">ASSEDIC</option>
+ <option value="73">Caisses mutualistes de retraite complémentaires</option>
+ <option value="74">Autres organismes sociaux</option>
+ </select>
+ </critere>
+ <critere id="ligne_piece_nature_juridique" libelle="Nature Juridique">
+ <help>Permet de filtrer par nature juridique de créancier</help>
+ <path>{##OPERATEUR:ligne_piece_nature_juridique##(n:Tiers/n:InfoTiers/n:NatJur/@V,"##VALEUR:ligne_piece_nature_juridique##")}</path>
+ <select id="ligne_piece_nature_juridique">
+ <option value="00">Inconnue</option>
+ <option value="01">Particuliers</option>
+ <option value="02">Artisan / Commerçant / Agriculteur</option>
+ <option value="03">Société</option>
+ <option value="04">CAM ou caisse appliquant les mêmes règles</option>
+ <option value="05">Caisse complémentaire</option>
+ <option value="06">Association</option>
+ <option value="07">Etat ou organisme d'Etat</option>
+ <option value="08">Etablissement public national</option>
+ <option value="09">Collectivité territoriale / EPL / EPS</option>
+ <option value="10">Etat étranger / Ambassade</option>
+ <option value="11">CAF</option>
+ </select>
+ </critere>
+ <critere id="ligne_piece_id_tiers" libelle="Identifiant National" optional-display-id="e3lr15">
+ <help>Permet de filtrer par identifiant national de créancier</help>
+ <path>{##OPERATEUR:ligne_piece_id_tiers##(n:Tiers/n:InfoTiers/n:IdTiers/@V,"##VALEUR:ligne_piece_id_tiers##")}</path>
+ <input id="ligne_piece_id_tiers" datatype="string"/>
+ </critere>
+ <critere id="ligne_piece_nature_id_tiers_lib" libelle="Identifiant National (Type)">
+ <help>Permet de filtrer par type d'identifiant national de créancier</help>
+ <path>{n:Tiers/n:InfoTiers/n:NatIdTiers/@V=##VALEUR:ligne_piece_nature_id_tiers##}</path>
+ <select id="ligne_piece_nature_id_tiers">
+ <option value="01">Siret</option>
+ <option value="02">Siren</option>
+ <option value="03">Finess</option>
+ <option value="04">Nir</option>
+ </select>
+ </critere>
+ <critere id="ligne_piece_facture" libelle="Numéro de Facture">
+ <help>Permet de filtrer par numéro de facture</help>
+ <path>{##OPERATEUR:ligne_piece_facture##(n:BlocLignePiece/n:InfoLignePce/n:Facture/@V,"##VALEUR:ligne_piece_facture##")}</path>
+ <input id="ligne_piece_facture" datatype="string"/>
+ </critere>
+ </element>
+ </etat>
+
+ <etat balise="PES_RecetteAller" balise-namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/aller" id="PES_RecetteAller" titre="Recette" use-external-browser="false" importable-element="BordereauRecette" xslt-file="PES_V2/mandatBordereauRecette.xsl" exportable="true">
+ <help>Cet état regroupe les Bordereaux de recette</help>
+
+ <element balise="Bordereau" id="BordereauRecette" max-display="20" titre="Bordereaux">
+ <path>/n:PES_Aller/n:PES_RecetteAller/n:Bordereau</path>
+
+ <environment>
+ <variable name="max-display" domain="element" type="integer">
+ <libelle>Nombre de Bordereaux affichés</libelle>
+ <reference name="@max-display"/>
+ </variable>
+ <variable name="max-display" domain="documents" type="integer">
+ <libelle>Nombre de Bordereaux affichées</libelle>
+ <reference name="/documents/document[@id='pes-aller']/etat[@id='PES_RecetteAller']/element[@id='BordereauRecette']/@max-display"/>
+ </variable>
+ </environment>
+
+ <liste-resultat ordre="ASC,ASC" tri-defaut="e4lr1,e4lr2">
+ <hidden name="xsl-param:elementId">
+ <valeur>name()</valeur>
+ </hidden>
+
+ <champ id="e4lr1" datatype="integer" libelle="Exercice" affichable="true" exportable="true" identifiant="true">
+ <help>Exercice du Bordereau</help>
+ <valeur>n:BlocBordereau/n:Exer/@V</valeur>
+ </champ>
+ <champ id="e4lr2" libelle="Numéro Bordereau" datatype="integer" affichable="true" exportable="true" identifiant="true">
+ <help>Numéro de Bordereau</help>
+ <valeur>n:BlocBordereau/n:IdBord/@V</valeur>
+ </champ>
+ <champ id="e4lr3" datatype="date" libelle="Date Emission" affichable="true" exportable="true" identifiant="false">
+ <help>Date d'émission du Bordereau</help>
+ <valeur>n:BlocBordereau/n:DteBordEm/@V</valeur>
+ </champ>
+ <champ id="e4lr4" datatype="amount" libelle="Somme HT" affichable="true" exportable="true" identifiant="false" aggregate="true">
+ <help>Montant total HT du Bordereau</help>
+ <valeur>n:BlocBordereau/n:MtBordHt/@V</valeur>
+ </champ>
+ <champ id="e4lr5" datatype="amount" libelle="Somme TTC" affichable="true" exportable="true" identifiant="false" aggregate="true">
+ <help>Montant total TTC du Bordereau</help>
+ <valeur>@added:montantTTC</valeur>
+ </champ>
+ <champ id="e4lr6" datatype="integer" libelle="Nb Titres" affichable="true" exportable="true" identifiant="false" aggregate="true">
+ <help>Nombres de Titres portés par ce Bordereau</help>
+ <valeur>n:BlocBordereau/n:NbrPce/@V</valeur>
+ </champ>
+ <champ id="e4lr7" libelle="Type Bordereau" affichable="true" exportable="true" identifiant="true">
+ <help>Type de Bordereau</help>
+ <valeur>@added:TypBordLibelle</valeur>
+ </champ>
+ </liste-resultat>
+
+ <enfants>
+ <enfant element="PieceRecette" path="n:Piece"/>
+ </enfants>
+
+
+ <critere id="bordereau_exercice" libelle="Exercice du Bordereau">
+ <help>Permet de filtrer par exercice de Bordereau</help>
+ <path>{n:BlocBordereau/n:Exer/@V=##VALEUR:bordereau_exercice##}</path>
+ <input id="bordereau_exercice" help="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:BlocBordereau/n:Exer/@V"/>
+ </critere>
+ <critere id="bordereau_id" libelle="Numéro de Bordereau">
+ <help>Permet de filtrer par numéro de Bordereau</help>
+ <path>{n:BlocBordereau/n:IdBord/@V##OPERATEUR:bordereau_id####VALEUR:bordereau_id##}</path>
+ <input id="bordereau_id" datatype="numeric"/>
+ </critere>
+ <critere id="bordereau_date_emission" libelle="Date émission">
+ <help>Permet de filtrer par date d'émission du Bordereau</help>
+ <path>{##OPERATEUR:bordereau_date_emission##(n:BlocBordereau/n:DteBordEm/@V,"##VALEUR:bordereau_date_emission##")}</path>
+ <input id="bordereau_date_emission" datatype="date" xml-format="yyyy-MM-dd"/>
+ </critere>
+ <critere id="bordereau_mt_bord_ht" libelle="Montant HT">
+ <help>Permet de filtrer par montant total HT de Bordereau</help>
+ <path>{n:BlocBordereau/n:MtBordHt/@V##OPERATEUR:bordereau_mt_bord_ht####VALEUR:bordereau_mt_bord_ht##}</path>
+ <input id="bordereau_mt_bord_ht" datatype="numeric"/>
+ </critere>
+ <critere id="bordereau_mt_bord_ttc" libelle="Montant TTC">
+ <help>Permet de filtrer par montant total TTC de Bordereau</help>
+ <path>{@added:montantTTC##OPERATEUR:bordereau_mt_bord_ttc####VALEUR:bordereau_mt_bord_ttc##}</path>
+ <input id="bordereau_mt_bord_ttc" datatype="numeric"/>
+ </critere>
+ <critere id="bordereau_type" libelle="Type de Bordereau">
+ <help>Permet de filtrer par type de Bordereau</help>
+ <path>{n:BlocBordereau/n:TypBord/@V="##VALEUR:bordereau_type##"}</path>
+ <select id="bordereau_type">
+ <option value="01">Bordereau ordinaire</option>
+ <option value="02">Bordereau d'annulation/réduction</option>
+ <option value="03">Bordereau d'ordre de recette</option>
+ <option value="04">Bordereau de Titre émis suite à décision juridictionnelle</option>
+ <option value="05">Entête P503</option>
+ </select>
+ </critere>
+ <critere id="bordereau_nb_pieces" libelle="Nombre de Titres">
+ <help>Permet de filtrer par nombres de Titres portés par Bordereau</help>
+ <path>{n:BlocBordereau/n:NbrPce/@V##OPERATEUR:bordereau_nb_pieces####VALEUR:bordereau_nb_pieces##}</path>
+ <input id="bordereau_nb_pieces" datatype="numeric"/>
+ </critere>
+ </element>
+
+ <element balise="Piece" id="PieceRecette" max-display="20" titre="Titres">
+ <path>/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece</path>
+
+ <environment>
+ <variable name="max-display" domain="element" type="integer">
+ <libelle>Nombre de Bordereaux affichés</libelle>
+ <reference name="@max-display"/>
+ </variable>
+ <variable name="max-display" domain="documents" type="integer">
+ <libelle>Nombre de Bordereaux affichés</libelle>
+ <reference name="/documents/document[@id='pes-aller']/etat[@id='PES_RecetteAller']/element[@id='PieceRecette']/@max-display"/>
+ </variable>
+ </environment>
+
+ <liste-resultat ordre="ASC,ASC,ASC" tri-defaut="e5lr1,e5lr2,e5lr3">
+ <hidden name="xsl-param:mandatId">
+ <valeur>n:BlocPiece/n:IdPce/@V</valeur>
+ </hidden>
+
+ <champ id="e5lr1" datatype="integer" libelle="Exercice Bordereau" affichable="true" exportable="true" identifiant="true">
+ <help>Exercice du Bordereau</help>
+ <valeur>../n:BlocBordereau/n:Exer/@V</valeur>
+ </champ>
+ <champ id="e5lr2" libelle="Num. Bordereau" datatype="integer" affichable="true" exportable="true" identifiant="true">
+ <help>Numéro de Bordereau</help>
+ <valeur>../n:BlocBordereau/n:IdBord/@V</valeur>
+ </champ>
+ <champ id="e5lr3" libelle="Num. Titre" datatype="integer" affichable="true" exportable="true" identifiant="true">
+ <help>Numéro de Titre</help>
+ <valeur>n:BlocPiece/n:IdPce/@V</valeur>
+ </champ>
+ <champ id="e5lr4" libelle="Objet Titre" affichable="true" exportable="true" identifiant="false">
+ <help>Objet du Titre</help>
+ <valeur>n:BlocPiece/n:ObjPce/@V</valeur>
+ </champ>
+ <champ id="e5lr5" libelle="Num. Rôle" affichable="true" exportable="true" identifiant="true">
+ <help>Numéro de Rôle</help>
+ <valeur>n:BlocPiece/n:IdRol/@V</valeur>
+ </champ>
+ <champ id="e5lr6" libelle="Mt HT" datatype="amount" affichable="true" exportable="true" identifiant="false" aggregate="true">
+ <help>Montant HT du Titre</help>
+ <valeur>@added:montantHT</valeur>
+ </champ>
+ <champ id="e5lr7" libelle="Mt TTC" datatype="amount" affichable="true" exportable="true" identifiant="false" aggregate="true">
+ <help>Montant TTC du Titre</help>
+ <valeur>@added:montantTTC</valeur>
+ </champ>
+ <champ id="e5lr8" libelle="Type de Titre" affichable="true" exportable="true" identifiant="true">
+ <help>Type de Titre</help>
+ <valeur>@added:TypPceLibelle</valeur>
+ </champ>
+ <champ id="e5lr9" libelle="Nature de Titre" affichable="true" exportable="true" identifiant="false">
+ <help>Nature de Titre</help>
+ <valeur>@added:LibelleNatPiece</valeur>
+ </champ>
+ <champ id="e5lr10" libelle="Date Deb. Facture" datatype="date" affichable="true" exportable="true" identifiant="false">
+ <help>Date de début de la période de facturation</help>
+ <valeur>n:BlocPiece/n:DebFact/@V</valeur>
+ </champ>
+ <champ id="e5lr11" libelle="Date Fin Facture" datatype="date" affichable="true" exportable="true" identifiant="false">
+ <help>Date de fin de la période de facturation</help>
+ <valeur>n:BlocPiece/n:FinFact/@V</valeur>
+ </champ>
+ <champ id="e5lr12" libelle="Date Envoi" datatype="date" affichable="true" exportable="true" identifiant="false">
+ <help>Date d'envoi de l'avis des sommes à payer</help>
+ <valeur>n:BlocPiece/n:DteAsp/@V</valeur>
+ </champ>
+ <champ id="e5lr13" libelle="Justifié par" affichable="true" exportable="true" identifiant="false">
+ <help>Justifié par</help>
+ <valeur>n:IdUnique/@V</valeur>
+ </champ>
+ <champ id="pjCountTitre" libelle="Nb. PJ" datatype="integer" affichable="true" exportable="true" identifiant="false" aggregate="true" default-display="true">
+ <help>Nombre de Pièces justificatives du Titre</help>
+ <valeur>@added:nbPJ</valeur>
+ </champ>
+ </liste-resultat>
+
+ <parent element="BordereauRecette" path=".."/>
+
+ <enfants>
+ <enfant element="LigneDePieceRecette" path="n:LigneDePiece"/>
+ </enfants>
+
+ <critere id="bordereau_exercice" libelle="Exercice du Bordereau">
+ <help>Permet de filtrer par exercice de Bordereau</help>
+ <path>{../n:BlocBordereau/n:Exer/@V=##VALEUR:bordereau_exercice##}</path>
+ <input id="bordereau_exercice" help="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:BlocBordereau/n:Exer/@V"/>
+ </critere>
+ <critere id="bordereau_id" libelle="Numéro de Bordereau">
+ <help>Permet de filtrer par numéro de Bordereau</help>
+ <path>{../n:BlocBordereau/n:IdBord/@V##OPERATEUR:bordereau_id####VALEUR:bordereau_id##}</path>
+ <input id="bordereau_id" datatype="numeric"/>
+ </critere>
+ <critere id="piece_id_pce" libelle="Numéro de Titre">
+ <help>Permet de filtrer par numéro de Titre</help>
+ <path>{n:BlocPiece/n:IdPce/@V##OPERATEUR:piece_id_pce####VALEUR:piece_id_pce##}</path>
+ <input id="piece_id_pce" datatype="numeric"/>
+ </critere>
+ <critere id="piece_obj_pce" libelle="Objet du Titre">
+ <path>{##OPERATEUR:piece_obj_pce##(n:BlocPiece/n:ObjPce/@V,"##VALEUR:piece_obj_pce##")}</path>
+ <input id="piece_obj_pce" datatype="string"/>
+ </critere>
+ <critere id="piece_id_rol" libelle="Numéro de Rôle">
+ <help>Permet de filtrer par numéro de rôle</help>
+ <path>{n:BlocPiece/n:IdRol/@V##OPERATEUR:piece_id_rol####VALEUR:piece_id_rol##}</path>
+ <input id="piece_id_rol" datatype="numeric"/>
+ </critere>
+ <critere id="piece_montant_ht" libelle="Montant HT">
+ <help>Permet de filtrer par montant HT de Mandat</help>
+ <path>{@added:montantHT##OPERATEUR:piece_montantHT####VALEUR:piece_montantHT##}</path>
+ <input id="piece_montantHT" datatype="numeric"/>
+ </critere>
+ <critere id="piece_montant_ttc" libelle="Montant TTC">
+ <help>Permet de filtrer par montant TTC de Mandat</help>
+ <path>{@added:montantTTC##OPERATEUR:piece_montantTTC####VALEUR:piece_montantTTC##}</path>
+ <input id="piece_montantTTC" datatype="numeric"/>
+ </critere>
+ <critere id="piece_type_pce" libelle="Type de Titre">
+ <help>Permet de filtrer par type de Titre</help>
+ <path>{n:BlocPiece/n:TypPce/@V="##VALEUR:piece_type_pce##"}</path>
+ <select id="piece_type_pce">
+ <option value="01">Titre ordinaire</option>
+ <option value="02">Titre correctif</option>
+ <option value="03">Titre d'ordre budgétaire</option>
+ <option value="04">Titre d'ordre mixte</option>
+ <option value="05">Titre émis après encaissement</option>
+ <option value="06">Titre récapitulatif avec rôle</option>
+ <option value="07">Titre récapitulatif sans rôle</option>
+ <option value="08">Rôle Titre</option>
+ <option value="09">Titre de majoration</option>
+ <option value="10">Titre en plusieurs années</option>
+ <option value="11">Titre de rattachement</option>
+ <option value="12">Ordre de recette ordonnateur</option>
+ <option value="13">Demande émission de Titre (P503)</option>
+ <option value="14">Produits constatés d'avance</option>
+ </select>
+ </critere>
+ <critere id="piece_nat_pce" libelle="Nature de Titre">
+ <help>Permet de filtrer par nature de Titre</help>
+ <path>{n:BlocPiece/n:NatPce/@V="##VALEUR:piece_nat_pce##"}</path>
+ <select id="piece_nat_pce">
+ <option value="01">Fonctionnement</option>
+ <option value="02">Investissement</option>
+ <option value="03">Inventaire</option>
+ <option value="04">Emprunt</option>
+ <option value="05">Régie</option>
+ <option value="06">Annulation/Réduction</option>
+ <option value="07">Complémentaire</option>
+ <option value="08">Réémis</option>
+ <option value="09">Annulant un Mandat</option>
+ <option value="10">Annulation du Titre de rattachement</option>
+ <option value="11">Marché</option>
+ <option value="12">Autres</option>
+ <option value="18">Opération d'ordre liée aux cessions</option>
+ </select>
+ </critere>
+ <critere id="piece_deb_fact" libelle="Date de début de la période de facturation">
+ <help>Permet de filtrer par date de début de la période de facturation</help>
+ <path>{##OPERATEUR:piece_deb_fact##(n:BlocPiece/n:DebFact/@V,"##VALEUR:piece_deb_fact##")}</path>
+ <input id="piece_deb_fact" datatype="date" xml-format="yyyy-MM-dd"/>
+ </critere>
+ <critere id="piece_fin_fact" libelle="Date de fin de la période de facturation">
+ <help>Permet de filtrer par date de fin de période de facturation</help>
+ <path>{##OPERATEUR:piece_fin_fact##(n:BlocPiece/n:FinFact/@V,"##VALEUR:piece_fin_fact##")}</path>
+ <input id="piece_fin_fact" datatype="date" xml-format="yyyy-MM-dd"/>
+ </critere>
+ <critere id="piece_dte_asp" libelle="Date d'envoi de l'avis des sommes à payer">
+ <help>Permet de filtrer par date d'envoi de l'avis des sommes à payer</help>
+ <path>{##OPERATEUR:piece_dte_asp##(n:BlocPiece/n:DteAsp/@V,"##VALEUR:piece_dte_asp##")}</path>
+ <input id="piece_dte_asp" datatype="date" xml-format="yyyy-MM-dd"/>
+ </critere>
+ <critere id="justifie_par" libelle="Justifié par">
+ <help>Permet de filtrer les Titres par Pièce justificative</help>
+ <path>{added:AllPJRef{##OPERATEUR:IdUnique##(n:IdUnique/@V,"##VALEUR:IdUnique##")}}</path>
+ <input id="IdUnique" datatype="string" libelle="(Id Unique)"/>
+ </critere>
+ <critere id="piece_avec_pj" libelle="Pièce avec PJ">
+ <help>Permet de filtrer les Titres ayant ou non des Pièces justificatives</help>
+ <path>{@added:avecPJ="##VALEUR:piece_avec_pj##"}</path>
+ <select id="piece_avec_pj">
+ <option value="true">OUI</option>
+ <option value="false">NON</option>
+ </select>
+ </critere>
+ </element>
+
+ <element balise="LigneDePiece" id="LigneDePieceRecette" max-display="20" titre="Lignes De Titre">
+ <path>/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece</path>
+
+ <environment>
+ <variable name="max-display" domain="element" type="integer">
+ <libelle>Nombre de Bordereaux affichés</libelle>
+ <reference name="@max-display"/>
+ </variable>
+ <variable name="max-display" domain="documents" type="integer">
+ <libelle>Nombre de Bordereaux affichés</libelle>
+ <reference name="/documents/document[@id='pes-aller']/etat[@id='PES_RecetteAller']/element[@id='LigneDePieceRecette']/@max-display"/>
+ </variable>
+ </environment>
+
+ <liste-resultat ordre="ASC,ASC,ASC,ASC" tri-defaut="e6lr1,e6lr2,e6lr3,e6lr4">
+ <hidden name="xsl-param:mandatId">
+ <valeur>../n:BlocPiece/n:IdPce/@V</valeur>
+ </hidden>
+
+ <champ id="e6lr1" libelle="Exercice Bordereau" affichable="true" exportable="true" identifiant="false">
+ <help>Exercice de Bordereau</help>
+ <valeur>../../n:BlocBordereau/n:Exer/@V</valeur>
+ </champ>
+ <champ id="e6lr2" libelle="Num. Bordereau" datatype="integer" affichable="true" exportable="true" identifiant="true">
+ <help>Numéro de Bordereau</help>
+ <valeur>../../n:BlocBordereau/n:IdBord/@V</valeur>
+ </champ>
+ <champ id="e6lr3" libelle="Num. Titre" affichable="true" exportable="true" identifiant="true">
+ <help>Numéro du Titre</help>
+ <valeur>../n:BlocPiece/n:IdPce/@V</valeur>
+ </champ>
+ <champ id="e6lr4" libelle="Num. Ligne" affichable="true" exportable="true" identifiant="true">
+ <help>Numéro de ligne de Titre</help>
+ <valeur>n:InfoLignePiece/n:IdLigne/@V</valeur>
+ </champ>
+ <champ id="e6lr5" libelle="Compte Nature" affichable="true" exportable="true" identifiant="false">
+ <help>Imputation par nature</help>
+ <valeur>n:BlocLignePiece/n:InfoLignePiece/n:Nature/@V</valeur>
+ </champ>
+ <champ id="e6lr6" libelle="Compte Fonction" affichable="true" exportable="true" identifiant="false">
+ <help>Imputation par fonction</help>
+ <valeur>n:BlocLignePiece/n:InfoLignePiece/n:Fonction/@V</valeur>
+ </champ>
+ <champ id="e6lr7" libelle="Code opération" affichable="true" exportable="true" identifiant="false">
+ <help>Numéro d'opération</help>
+ <valeur>n:BlocLignePiece/n:InfoLignePiece/n:Operation/@V</valeur>
+ </champ>
+ <champ id="e6lr8" libelle="Tiers (Nom)" affichable="true" exportable="true" identifiant="false">
+ <help>Nom du créancier</help>
+ <valeur>n:Tiers/n:InfoTiers/n:Nom/@V</valeur>
+ </champ>
+ <champ id="e7lr9" libelle="Tiers (Prénom)" affichable="true" exportable="true" identifiant="false">
+ <help>Prénom du créancier</help>
+ <valeur>n:Tiers/n:InfoTiers/n:Prenom/@V</valeur>
+ </champ>
+ <champ id="e6lr10" libelle="Objet du Titre" affichable="true" exportable="true" identifiant="false">
+ <help>Objet du Titre</help>
+ <valeur>../n:BlocPiece/n:ObjPce/@V</valeur>
+ </champ>
+ <champ id="e6lr11" libelle="Mt HT" datatype="amount" affichable="true" exportable="true" identifiant="false" aggregate="true">
+ <help>Montant HT</help>
+ <valeur>n:BlocLignePiece/n:InfoLignePiece/n:MtHT/@V</valeur>
+ </champ>
+ <champ id="e6lr12" libelle="Mt TVA" datatype="amount" affichable="true" exportable="true" identifiant="false" aggregate="true">
+ <help>Montant TVA</help>
+ <valeur>n:BlocLignePiece/n:InfoLignePiece/n:MtTVA/@V</valeur>
+ </champ>
+ <champ id="e6lr13" libelle="Mt TTC" datatype="amount" affichable="true" exportable="true" identifiant="false" aggregate="true">
+ <help>Montant TTC</help>
+ <valeur>n:BlocLignePiece/n:InfoLignePiece/n:MontantTTC/@V</valeur>
+ </champ>
+ <champ id="e6lr14" libelle="Cpte Tiers" affichable="true" exportable="true" identifiant="false">
+ <help>Compte de tiers</help>
+ <valeur>n:BlocLignePiece/n:InfoLignePiece/n:CpteTiers/@V</valeur>
+ </champ>
+ <champ id="e6lr15" libelle="Num. Marché" affichable="true" exportable="true" identifiant="false">
+ <help>Numéro de marché</help>
+ <valeur>n:BlocLignePiece/n:LiensIdent/n:IdMarche/@V</valeur>
+ </champ>
+ <champ id="e6lr16" libelle="Num. Régie" affichable="true" exportable="true" identifiant="false">
+ <help>Numéro de régie</help>
+ <valeur>n:BlocLignePiece/n:LiensIdent/n:IdRegie/@V</valeur>
+ </champ>
+ <champ id="e6lr17" libelle="Typ. Pce Origine" affichable="true" exportable="true" identifiant="false">
+ <help>Type de la Pièce d'origine de régie</help>
+ <valeur>@added:LibelleNatPceOrigLignePiece</valeur>
+ </champ>
+ <champ id="e6lr18" libelle="Num. Pce Origine" affichable="true" exportable="true" identifiant="false">
+ <help>Numéro de Pièce d'origine</help>
+ <valeur>n:BlocLignePiece/n:RattachPiece/n:IdPceOrig/@V</valeur>
+ </champ>
+ <champ id="e6lr19" libelle="Exercice Rattachement" affichable="true" exportable="true" identifiant="false">
+ <help>Exercice de rattachement</help>
+ <valeur>n:BlocLignePiece/n:RattachPiece/n:ExerRat/@V</valeur>
+ </champ>
+ <champ id="e6lr20" libelle="Date Prélèvement" affichable="true" exportable="true" identifiant="false">
+ <help>Date de prélèvement</help>
+ <valeur>n:BlocLignePiece/n:InfoPrelevement/n:DtePrel/@V</valeur>
+ </champ>
+ <champ id="e6lr21" libelle="Cat. Tiers" affichable="true" exportable="true" identifiant="false">
+ <help>Catégorie du créancier</help>
+ <valeur>@added:LibelleCatTiersLignePiece</valeur>
+ </champ>
+ <champ id="e6lr22" libelle="Nature Juridique" affichable="true" exportable="true" identifiant="false">
+ <help>Nature juridique du créancier</help>
+ <valeur>@added:LibelleNatJurLignePiece</valeur>
+ </champ>
+ <champ id="e6lr23" libelle="Id. National" affichable="true" exportable="true" identifiant="false">
+ <help>Identifiant national du créancier</help>
+ <valeur>n:Tiers/n:InfoTiers/n:IdTiers/@V</valeur>
+ </champ>
+ <champ id="e6lr24" libelle="Id. National (Type)" affichable="true" exportable="true" identifiant="false">
+ <help>Identifiant national du créancier (Type)</help>
+ <valeur>n:Tiers/n:InfoTiers/n:IdTiers/@V</valeur>
+ </champ>
+ <champ id="e6lr25" libelle="Ligne Titre Majorable" affichable="true" exportable="true" identifiant="false">
+ <help>Majoration</help>
+ <valeur>n:BlocLignePiece/n:InfoLignePiece/n:Majo/@V</valeur>
+ </champ>
+ </liste-resultat>
+
+ <parent element="PieceRecette" path=".."/>
+
+ <critere id="bordereau_exercice" libelle="Exercice du Bordereau">
+ <help>Permet de filtrer par exercice de Bordereau</help>
+ <path>{../../n:BlocBordereau/n:Exer/@V=##VALEUR:bordereau_exercice##}</path>
+ <input id="bordereau_exercice" help="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:BlocBordereau/n:Exer/@V"/>
+ </critere>
+ <critere id="bordereau_id" libelle="Numéro de Bordereau">
+ <help>Permet de filtrer par numéro de Bordereau</help>
+ <path>{../../n:BlocBordereau/n:IdBord/@V##OPERATEUR:bordereau_id####VALEUR:bordereau_id##}</path>
+ <input id="bordereau_id" datatype="numeric"/>
+ </critere>
+ <critere id="piece_id_pce" libelle="Numéro de Titre">
+ <help>Permet de filtrer par numéro de Titre</help>
+ <path>{../n:BlocPiece/n:IdPce/@V##OPERATEUR:piece_id_pce####VALEUR:piece_id_pce##}</path>
+ <input id="piece_id_pce" datatype="numeric"/>
+ </critere>
+ <critere id="ligne_piece_id" libelle="Numéro de Ligne">
+ <help>Permet de filtrer par numéro de Mandat</help>
+ <path>{n:BlocLignePiece/n:InfoLignePiece/n:IdLigne/@V##OPERATEUR:ligne_piece_id_ligne####VALEUR:ligne_piece_id_ligne##}</path>
+ <input id="ligne_piece_id_ligne" datatype="numeric"/>
+ </critere>
+ <critere id="ligne_piece_nature" libelle="Compte par nature">
+ <help>Permet de filtrer par imputation par nature</help>
+ <path>{##OPERATEUR:ligne_piece_nature##(n:BlocLignePiece/n:InfoLignePiece/n:Nature/@V,"##VALEUR:ligne_piece_nature##")}</path>
+ <input id="ligne_piece_nature" datatype="string"/>
+ </critere>
+ <critere id="ligne_piece_fonction" libelle="Compte fonction">
+ <help>Permet de filtrer par imputation par fonction</help>
+ <path>{##OPERATEUR:ligne_piece_fonction##(n:BlocLignePiece/n:InfoLignePiece/n:Fonction/@V,"##VALEUR:ligne_piece_fonction##")}</path>
+ <input id="ligne_piece_fonction" datatype="string"/>
+ </critere>
+ <critere id="ligne_piece_operation" libelle="Code Opération">
+ <help>Permet de filtrer par numéro d'opération</help>
+ <path>{##OPERATEUR:ligne_piece_operation##(n:BlocLignePiece/n:InfoLignePiece/n:Operation/@V,"##VALEUR:ligne_piece_operation##")}</path>
+ <input id="ligne_piece_operation" datatype="string" help="/n:PES_Aller/n:PES_DepenseAller/n:Bordereau/Piece/n:LigneDePiece/n:BlocLignePiece/n:InfoLignePce/n:Operation/@V"/>
+ </critere>
+ <critere id="tiers_nom" libelle="Tiers (Nom)">
+ <help>Permet de filtrer par nom de créancier</help>
+ <path>{##OPERATEUR:tiers_nom##(n:Tiers/n:InfoTiers/n:Nom/@V,"##VALEUR:tiers_nom##")}</path>
+ <input id="tiers_nom" datatype="string" uppercase="true"/>
+ </critere>
+ <critere id="tiers_prenom" libelle="Tiers (Prénom)">
+ <help>Permet de filtrer par prénom de créancier</help>
+ <path>{##OPERATEUR:tiers_prenom##(n:Tiers/n:InfoTiers/n:Prenom/@V,"##VALEUR:tiers_prenom##")}</path>
+ <input id="tiers_prenom" datatype="string" uppercase="true"/>
+ </critere>
+ <critere id="piece_obj_pce" libelle="Objet du Titre">
+ <path>{##OPERATEUR:piece_obj##(../n:BlocPiece/n:ObjPce/@V,"##VALEUR:piece_obj##")}</path>
+ <input id="piece_obj" datatype="string"/>
+ </critere>
+ <critere id="ligne_piece_mt_ht" libelle="Montant HT">
+ <help>Permet de filtrer par montant HT</help>
+ <path>{n:BlocLignePiece/n:InfoLignePiece/n:MtHT/@V##OPERATEUR:ligne_piece_mt_ht####VALEUR:ligne_piece_mt_ht##}</path>
+ <input id="ligne_piece_mt_ht" datatype="numeric"/>
+ </critere>
+ <critere id="ligne_piece_mt_tva" libelle="Montant TVA">
+ <help>Permet de filtrer par montant TVA</help>
+ <path>{n:BlocLignePiece/n:InfoLignePiece/n:MtTVA/@V##OPERATEUR:ligne_piece_mt_tva####VALEUR:ligne_piece_mt_tva##}</path>
+ <input id="ligne_piece_mt_tva" datatype="numeric"/>
+ </critere>
+ <critere id="ligne_piece_mt_ttc" libelle="Montant TTC">
+ <help>Permet de filtrer par montant TTC</help>
+ <path>{@added:montantTTC##OPERATEUR:ligne_piece_mt_ttc####VALEUR:ligne_piece_mt_ttc##}</path>
+ <input id="ligne_piece_mt_ttc" datatype="numeric"/>
+ </critere>
+ <critere id="ligne_piece_cpte_tiers" libelle="Compte de Tiers">
+ <help>Permet de filtrer par compte de tiers</help>
+ <path>{##OPERATEUR:ligne_piece_compte_tiers##(n:BlocLignePiece/n:InfoLignePiece/n:CpteTiers/@V,"##VALEUR:ligne_piece_compte_tiers##")}</path>
+ <input id="ligne_piece_compte_tiers" datatype="string" uppercase="true"/>
+ </critere>
+ <critere id="ligne_piece_id_marche" libelle="Numéro de Marché" optional-display-id="e6lr14">
+ <help>Permet de filtrer par numéro de marché</help>
+ <path>{##OPERATEUR:ligne_piece_id_marche##(n:BlocLignePiece/n:LiensIdent/n:IdMarche/@V,"##VALEUR:ligne_piece_id_marche##")}</path>
+ <input id="ligne_piece_id_marche" help="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:LiensIdent/n:IdMarche/@V" datatype="string"/>
+ </critere>
+ <critere id="ligne_piece_id_regie" libelle="Numéro de Régie" optional-display-id="e6lr15">
+ <help>Permet de filtrer par numéro de régie</help>
+ <path>{n:BlocLignePiece/n:LiensIdent/n:IdRegie/@V="##VALEUR:ligne_piece_id_regie##"}</path>
+ <input id="ligne_piece_id_regie" help="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:LiensIdent/n:IdRegie/@V"/>
+ </critere>
+ <critere id="ligne_piece_nat_pce_orig" libelle="Type de Pièce origine">
+ <help>Permet de filtrer par type de Pièce d'origine</help>
+ <path>{n:BlocLignePiece/n:RattachPiece/n:NatPceOrig/@V=##VALEUR:ligne_piece_nat_pce_orig##}</path>
+ <select id="ligne_piece_nat_pce_orig">
+ <option value="01">Mandat</option>
+ <option value="02">Titre</option>
+ <option value="03">Paiement</option>
+ <option value="04">Liste non valeur</option>
+ </select>
+ </critere>
+ <critere id="ligne_piece_id_pce_orig" libelle="Numéro de Pièce d'origine">
+ <help>Permet de filtrer par numéro de Pièce d'origine</help>
+ <path>{n:BlocLignePiece/n:RattachPiece/n:IdPceOrig/@V##OPERATEUR:ligne_piece_id_pce_orig####VALEUR:ligne_piece_id_pce_orig##}</path>
+ <input id="ligne_piece_id_pce_orig" datatype="numeric"/>
+ </critere>
+ <critere id="ligne_piece_exer_rat" libelle="Exercice de rattachement" optional-display-id="e6lr13">
+ <help>Permet de filtrer par exercice de rattachement</help>
+ <path>{n:BlocLignePiece/n:RattachPiece/n:ExerRat/@V="##VALEUR:ligne_piece_exer_rat##"}</path>
+ <input id="ligne_piece_exer_rat" help="/n:PES_Aller/n:PES_RecetteAller/n:Bordereau/n:Piece/n:LigneDePiece/n:BlocLignePiece/n:RattachPiece/n:ExerRat/@V"/>
+ </critere>
+ <critere id="ligne_piece_dte_prel" libelle="Date de prélèvement" optional-display-id="e6lr12">
+ <help>Permet de filtrer par date de prélèvement</help>
+ <path>{##OPERATEUR:ligne_piece_dte_prel##(n:BlocLignePiece/n:InfoPrelevement/n:DtePrel/@V,"##VALEUR:ligne_piece_dte_prel##")}</path>
+ <input id="ligne_piece_dte_prel" datatype="date" xml-format="yyyy-MM-dd"/>
+ </critere>
+ <critere id="ligne_piece_id_tiers" libelle="Identifiant National" optional-display-id="e6lr23">
+ <help>Permet de filtrer par identifiant national de créancier</help>
+ <path>{##OPERATEUR:ligne_piece_id_tiers##(n:Tiers/n:InfoTiers/n:IdTiers/@V,"##VALEUR:ligne_piece_id_tiers##")}</path>
+ <input id="ligne_piece_id_tiers" datatype="string"/>
+ </critere>
+ <critere id="ligne_piece_nature_id_tiers_lib" libelle="Identifiant National (Type)">
+ <help>Permet de filtrer par type d'identifiant national de créancier</help>
+ <path>{n:Tiers/n:InfoTiers/n:NatIdTiers/@V=##VALEUR:ligne_piece_nature_id_tiers##}</path>
+ <select id="ligne_piece_nature_id_tiers">
+ <option value="01">Siret</option>
+ <option value="02">Siren</option>
+ <option value="03">Finess</option>
+ <option value="04">Nir</option>
+ </select>
+ </critere>
+ <critere id="ligne_piece_categorie_tiers" libelle="Catégorie de tiers">
+ <help>Permet de filtrer par catégorie de créancier</help>
+ <path>{##OPERATEUR:ligne_piece_categorie_tiers##(n:Tiers/n:InfoTiers/n:CatTiers/@V,"##VALEUR:ligne_piece_categorie_tiers##")}</path>
+ <select id="ligne_piece_categorie_tiers">
+ <option value="01">Personnes physiques</option>
+ <option value="20">État et établissements publics nationaux</option>
+ <option value="21">Régions</option>
+ <option value="22">Départements</option>
+ <option value="23">Communes</option>
+ <option value="24">Groupements de collectivités</option>
+ <option value="25">Caisses des écoles</option>
+ <option value="26">CCAS</option>
+ <option value="27">Établissements publics de santé</option>
+ <option value="28">École nationale de la santé publique</option>
+ <option value="29">Autres établissements publics et organismes internationaux</option>
+ <option value="50">Personnes morales de droit privé autres qu'organismes sociaux</option>
+ <option value="60">Caisses de sécurité sociale régime général</option>
+ <option value="61">Caisses de sécurité sociale régime agricole</option>
+ <option value="62">Sécurité sociale des travailleurs non salariés et professions non agricoles</option>
+ <option value="63">Autres régimes obligatoires de sécurité sociale</option>
+ <option value="64">Mutuelles et organismes d'assurance</option>
+ <option value="65">Divers autres tiers payants</option>
+ <option value="70">CNRACL</option>
+ <option value="71">IRCANTEC</option>
+ <option value="72">ASSEDIC</option>
+ <option value="73">Caisses mutualistes de retraite complémentaires</option>
+ <option value="74">Autres organismes sociaux</option>
+ </select>
+ </critere>
+ <critere id="ligne_piece_nature_juridique" libelle="Nature Juridique">
+ <help>Permet de filtrer par nature juridique de créancier</help>
+ <path>{##OPERATEUR:ligne_piece_nature_juridique##(n:Tiers/n:InfoTiers/n:NatJur/@V,"##VALEUR:ligne_piece_nature_juridique##")}</path>
+ <select id="ligne_piece_nature_juridique">
+ <option value="00">Inconnue</option>
+ <option value="01">Particuliers</option>
+ <option value="02">Artisan / Commerçant / Agriculteur</option>
+ <option value="03">Société</option>
+ <option value="04">CAM ou caisse appliquant les mêmes règles</option>
+ <option value="05">Caisse complémentaire</option>
+ <option value="06">Association</option>
+ <option value="07">Etat ou organisme d'Etat</option>
+ <option value="08">Etablissement public national</option>
+ <option value="09">Collectivité territoriale / EPL / EPS</option>
+ <option value="10">Etat étranger / Ambassade</option>
+ <option value="11">CAF</option>
+ </select>
+ </critere>
+ <critere id="ligne_piece_majo" libelle="Ligne de Titre Majorable">
+ <help>Permet de filtrer par majoration</help>
+ <path>{n:BlocLignePiece/n:InfoLignePiece/n:Majo/@V="##VALEUR:ligne_piece_majo##"}</path>
+ <select id="ligne_piece_majo">
+ <option value="true">OUI</option>
+ <option value="false">NON</option>
+ </select>
+ </critere>
+ </element>
+ </etat>
+
+ <!-- <etat balise="PES_RoleAller" id="PES_RoleAller" Titre="PES Role Aller" use-external-browser="true" importable-element="Bordereau">
+ <element balise="Bordereau" id="BordereauRoleAller" max-display="500" titre="Bordereaux Role Aller">
+ <path>/PES_Aller/PES_RoleAller/Bordereau</path>
+ <liste-resultat ordre="ASC" tri-defaut="lr1">
+ <champ id="lr1" libelle="LR1">
+ <valeur></valeur>
+ </champ>
+ </liste-resultat>
+
+ <critere id="bordereau_exercice" libelle="Exercice du bordereau">
+ <path>{../../Bordereau/BlocBordereau/Exer/@V=##VALEUR:bordereau_exercice##}</path>
+ <select id="bordereau_exercice">
+ <special-key-entry distinct="true" pos="1"/>
+ </select>
+ </critere>
+ </element>
+
+ </etat>
+ <etat balise="PES_BudgetAller" id="PES_BudgetAller" titre="PES Budget Aller" use-external-browser="true" importable-element="Bordereau">
+ <element balise="Bordereau" id="BordereauBudgetAller" max-display="500" titre="Bordereaux Budget Aller">
+ <path>/PES_Aller/PES_BudgetAller/Bordereau</path>
+ <liste-resultat ordre="ASC" tri-defaut="lr1">
+ <champ id="lr1" libelle="LR1">
+ <valeur></valeur>
+ </champ>
+ </liste-resultat>
+
+ <critere id="bordereau_exercice" libelle="Exercice du bordereau">
+ <path>{../../Bordereau/BlocBordereau/Exer/@V=##VALEUR:bordereau_exercice##}</path>
+ <select id="bordereau_exercice">
+ <special-key-entry distinct="true" pos="1"/>
+ </select>
+ </critere>
+ </element>
+
+ </etat>
+ <etat balise="PES_EtatActif" id="PES_EtatActif" titre="PES Etat Actif" use-external-browser="true" importable-element="Bordereau">
+ <element balise="Bordereau" id="BordereauEtatActif" max-display="500" titre="Bordereaux Role Aller">
+ <path>/PES_Aller/PES_EtatActif/Bordereau</path>
+ <liste-resultat ordre="ASC" tri-defaut="lr1">
+ <champ id="lr1" libelle="LR1">
+ <valeur></valeur>
+ </champ>
+ </liste-resultat>
+
+ <critere id="bordereau_exercice" libelle="Exercice du bordereau">
+ <path>{../../Bordereau/BlocBordereau/Exer/@V=##VALEUR:bordereau_exercice##}</path>
+ <select id="bordereau_exercice">
+ <special-key-entry distinct="true" pos="1"/>
+ </select>
+ </critere>
+ </element>
+
+ </etat>
+ <etat balise="PES_Marche" id="PES_Marche" titre="PES Marche" use-external-browser="true" importable-element="Bordereau">
+ <element balise="Bordereau" id="BordereauMarche" max-display="500" titre="Bordereaux Marche">
+ <path>/PES_Aller/PES_Marche/Bordereau</path>
+ <liste-resultat ordre="ASC" tri-defaut="lr1">
+ <champ id="lr1" libelle="LR1">
+ <valeur></valeur>
+ </champ>
+ </liste-resultat>
+
+ <critere id="bordereau_exercice" libelle="Exercice du bordereau">
+ <path>{../../Bordereau/BlocBordereau/Exer/@V=##VALEUR:bordereau_exercice##}</path>
+ <select id="bordereau_exercice">
+ <special-key-entry distinct="true" pos="1"/>
+ </select>
+ </critere>
+ </element>
+
+ </etat>
+ <etat balise="PES_EtatAPassif" id="PES_EtatPassif" titre="PES Etat Passif" use-external-browser="true" importable-element="Bordereau">
+ <element balise="Bordereau" id="BordereauEtatPassif" max-display="500" titre="Bordereaux Etat Passif">
+ <path>/PES_Aller/PES_EtatPassif/Bordereau</path>
+ <liste-resultat ordre="ASC" tri-defaut="lr1">
+ <champ id="lr1" libelle="LR1">
+ <valeur></valeur>
+ </champ>
+ </liste-resultat>
+
+ <critere id="bordereau_exercice" libelle="Exercice du bordereau">
+ <path>{../../Bordereau/BlocBordereau/Exer/@V=##VALEUR:bordereau_exercice##}</path>
+ <select id="bordereau_exercice">
+ <special-key-entry distinct="true" pos="1"/>
+ </select>
+ </critere>
+ </element>
+
+ </etat>
+
+ <etat balise="PES_PJ" id="PES_PJ" titre="PES PJ" use-external-browser="true" importable-element="Bordereau">
+ <element balise="PJ" id="PJ" max-display="500" titre="PJS">
+ <path>/PES_Aller/PES_PJ/PJ</path>
+ <liste-resultat ordre="ASC" tri-defaut="lr1">
+ <champ id="lr1" libelle="LR1">
+ <valeur></valeur>
+ </champ>
+ </liste-resultat>
+
+ <critere id="bordereau_exercice" libelle="Exercice du bordereau">
+ <path>{../../Bordereau/BlocBordereau/Exer/@V=##VALEUR:bordereau_exercice##}</path>
+ <select id="bordereau_exercice">
+ <special-key-entry distinct="true" pos="1"/>
+ </select>
+ </critere>
+ </element>
+
+ </etat>
+ -->
+
+ <etat balise="PES_PJ" balise-namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/aller" id="PES_PJ" titre="Pièces Justificatives" use-external-browser="false" importable-element="PJ" xslt-file="" transform-class="fr.gouv.finances.cp.xemelios.pesv2.PesFacturePiXslHrefTransformer" exportable="true">
+ <help>Cet état regroupe les Pièces justificatives</help>
+ <entete id="e3">EnTetePES_PJ</entete>
+ <element balise="PJ" id="PJ" max-display="500" titre="Pièces Justificatives">
+ <path>/n:PES_Aller/n:PES_PJ/n:PJ</path>
+ <environment>
+ <variable name="max-display" domain="element" type="integer">
+ <libelle>Nombre de Pièces justificatives affichées</libelle>
+ <reference name="@max-display"/>
+ </variable>
+ <variable name="max-display" domain="documents" type="integer">
+ <libelle>Nombre de Pièces justificatives affichées</libelle>
+ <reference name="/documents/document[@id='pes-aller']/etat[@id='PES_PJ']/element[@id='PJ']/@max-display"/>
+ </variable>
+ </environment>
+ <liste-resultat ordre="ASC" tri-defaut="e7lr1">
+ <champ id="e7lr1" libelle="Type PJ" affichable="true" exportable="true" identifiant="false">
+ <help>Type de la Pièce justificative</help>
+ <valeur>@LibTypePJ</valeur>
+ </champ>
+ <champ id="e7lr2" libelle="Nom PJ" affichable="true" exportable="true" identifiant="false">
+ <help>Nom de la Pièce justificative</help>
+ <valeur>n:NomPJ/@V</valeur>
+ </champ>
+ <champ id="e7lr3" libelle="Description" affichable="true" exportable="true" identifiant="false">
+ <help>Description de la Pièce justificative</help>
+ <valeur>n:Description/@V</valeur>
+ </champ>
+ <champ id="e7lr4" libelle="Id. Unique" affichable="true" exportable="true" identifiant="true">
+ <help>Identifiant unique de la Pièce justificative</help>
+ <valeur>n:IdUnique/@V</valeur>
+ </champ>
+ <champ id="e7lr5" libelle="Serveur" affichable="true" exportable="true" identifiant="false">
+ <help>Serveur où la Pièce justificative est stockée</help>
+ <valeur>n:ServeurId/@V</valeur>
+ </champ>
+ <champ id="e7lr8" libelle="PJs" datatype="pj-list" affichable="true" exportable="false" identifiant="false">
+ <help>Références</help>
+ <valeur>n:PJRef</valeur>
+ </champ>
+ </liste-resultat>
+
+ <critere id="CRI_PES_PJ_PJ_TYPEPJ" libelle="Type PJ">
+ <help>Permet de filtrer par type de Pièce justificative</help>
+ <path>{n:TypePJ/@V=##VALEUR:TypePJ##}</path>
+ <select id="TypePJ">
+ <option value="001">Document Budgétaire</option>
+ <option value="002">Facture de Recette</option>
+ <option value="003">Facture de Dépense</option>
+ <option value="004">Etat de Paye</option>
+ <option value="005">Etat d'Aide Sociale</option>
+ </select>
+ </critere>
+ <critere id="CRI_PES_PJ_PJ_NOMPJ" libelle="Nom PJ">
+ <help>Permet de filtrer par nom de Pièce justificative</help>
+ <path>{##OPERATEUR:NomPJ##(n:NomPJ/@V,"##VALEUR:NomPJ##")}</path>
+ <input id="NomPJ" datatype="string"/>
+ </critere>
+ <critere id="CRI_PES_PJ_PJ_DESCRIPTION" libelle="Description">
+ <help>Permet de filtrer par description de Pièce justificative</help>
+ <path>{##OPERATEUR:Description##(n:Description/@V,"##VALEUR:Description##")}</path>
+ <input id="Description" datatype="string"/>
+ </critere>
+ <critere id="CRI_PES_PJ_PJ_IDUNIQUE" libelle="Id. Unique">
+ <help>Permet de filtrer par identifiant unique de la Pièce justificative</help>
+ <path>{##OPERATEUR:IdUnique##(n:IdUnique/@V,"##VALEUR:IdUnique##")}</path>
+ <input id="IdUnique" datatype="string"/>
+ </critere>
+ <critere id="CRI_PES_PJ_PJ_SERVEURID" libelle="Serveur">
+ <help>Permet de filtrer par serveur de stockage</help>
+ <path>{##OPERATEUR:ServeurId##(n:ServeurId/@V,"##VALEUR:ServeurId##")}</path>
+ <input id="ServeurId" datatype="string"/>
+ </critere>
+ </element>
+ </etat>
+ <etat balise="none" balise-namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/aller" id="general_view" titre="Résumé général" use-external-browser="false" displayInMenuIf="xemelios.pes-aller.show-general" exportable="false" xslt-file="PES_V2/general-view.xsl" hideInHelp="true">
+ <element balise="none2" id="hiddenElem" max-display="1" titre="none">
+ <path>.</path>
+ </element>
+ </etat>
+ <etat balise="none2" balise-namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/aller" id="analyse-flux" titre="Analyse du flux" use-external-browser="false" displayInMenuIf="xemelios.pes-aller.show-analyse-flux" exportable="false" xslt-file="PES_V2/analyse-flux.xsl" hideInHelp="true">
+ <element balise="none2" id="hiddenElem" max-display="1" titre="none">
+ <path>.</path>
+ </element>
+ </etat>
+ <traitementexterne id="verification-signature" libelle="Vérification de la signature">
+ <parameter name="always_use_libxml2" value="false"/>
+ <parameter name="do_validation" value="false"/>
+ <parameter name="do_posttrait" value="false"/>
+ <parameter name="signature_xpath" value="//ds:Signature"/>
+ <parameter name="max_file_size_apachexmlsec" value="20"/>
+ <parameter name="external_dtd" value="PES_V2/pes_v2.DTD"/>
+ </traitementexterne>
+ </document>
+</documents>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
+
+ <xsl:param name="default.params.location"/>
+
+ <xsl:variable name="default.params" select="document($default.params.location)"/>
+
+ <xsl:output encoding="UTF-8" method="xml" standalone="yes" indent="yes"/>
+ <xsl:template match="*">
+ <xsl:choose>
+ <xsl:when test="name()='param'">
+ <xsl:variable name="param.id" select="./@id"/>
+ <xsl:choose>
+ <xsl:when test="count($default.params//param[@id=$param.id]) > 0">
+ <xsl:copy-of select="$default.params//param[@id=$param.id]"/>
+ </xsl:when>
+ <xsl:otherwise><xsl:copy-of select="."/></xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="name()='regle-fonctionnelle'">
+ <xsl:element name="{name()}" namespace="{namespace-uri()}">
+ <xsl:choose>
+ <xsl:when test="contains(text(),'>') or contains(text(),'<')">
+ <xsl:text disable-output-escaping="yes"><![CDATA[</xsl:text><xsl:value-of select="text()" disable-output-escaping="yes"/><xsl:text disable-output-escaping="yes">]]></xsl:text>
+ </xsl:when>
+ <xsl:otherwise><xsl:value-of select="text()"/></xsl:otherwise>
+ </xsl:choose>
+ </xsl:element>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:element name="{name()}" namespace="{namespace-uri()}">
+ <xsl:for-each select="./@*">
+ <xsl:attribute name="{name()}" namespace="{namespace-uri()}"><xsl:value-of select="."/></xsl:attribute>
+ </xsl:for-each>
+ <xsl:apply-templates/>
+ </xsl:element>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+</xsl:stylesheet>
--- /dev/null
+/*
+ * Créé le 22 août 07
+ *
+ * Pour changer le modèle de ce fichier généré, allez à :
+ * Fenêtre>Préférences>Java>Génération de code>Code et commentaires
+ */
+package fr.gouv.finances.cp.xemelios.controls.pesv2;
+
+public interface ConstantsControlsPESv2 {
+ public String BORDEREAU_DEPENSE = "BordereauDepense";
+ public String BORDEREAU_RECETTE = "BordereauRecette";
+}
--- /dev/null
+/*
+ * Créé le 22 août 07
+ *
+ * Pour changer le modèle de ce fichier généré, allez à :
+ * Fenêtre>Préférences>Java>Génération de code>Code et commentaires
+ */
+package fr.gouv.finances.cp.xemelios.controls.pesv2;
+
+public interface ConstantsControlsPESv2 {
+ public final String PATH_RECETTE = "PES_RecetteAller";
+ public final String PATH_DEPENSE = "PES_DepenseAller";
+ public final String BORDEREAU_DEPENSE = "BordereauDepense";
+ public final String BORDEREAU_RECETTE = "BordereauRecette";
+ public final String PARAM_DUREE_DGP = "dureedgp";
+ public final String PARAM_NOMENCLATURE = "nomencl";
+}
--- /dev/null
+/*
+ * Copyright
+ * 2010 axYus - www.axyus.com
+ * 2010 Christel ESCOBAR - christel.escobar@axyus.com
+ *
+ * This file is part of XEMELIOS.
+ *
+ * XEMELIOS is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * XEMELIOS 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
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XEMELIOS; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+package fr.gouv.finances.cp.xemelios.controls.pesv2.comm;
+
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.cp.xemelios.controls.AbstractUnitControl;
+import fr.gouv.finances.cp.xemelios.controls.Anomalie;
+import fr.gouv.finances.cp.xemelios.controls.IdGenerator;
+import fr.gouv.finances.cp.xemelios.controls.Node;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+/**
+ * Implémente le contrôle N° COMM05B - Contrôle de la présence d'un identifiant de collectivité - Contrôle du fichier
+ * Il consiste à vérifier la règle fonctionnelle suivante :
+ * 1) L\92ensemble des balises IdPost, IdColl, CodCol, CodBud doivent être valorisés et correspondre aux Paramètres définis
+ * (IdPost pour PAR3, IdColl pour PAR4, CodCol pour PAR5, CodBud pour PAR6). Dans le cas contraire générer les ANOMALIES BLOQUANTES suivantes.
+ * Si IdPost est vide ou ne correspond pas à PAR3 « Le codique du poste doit être renseigné et correspondre au paramétrage ».
+ * Si IdColl est vide ou ne correspond pas à PAR4 « le SIRET de la collectivité doit être valorisé et correspondre au paramétrage».
+ * Si IdColl est vide ou ne correspond pas à PAR5 : « le code collectivité doit être valorisé et correspondre au paramétrage ».
+ * Si IdBud est vide ou ne correspond pas à PAR6 « le code budget doit être valorisé et correspondre au paramétrage».
+ * Si Aucune balise n\92est présente (IdPost, IdColl, CodColl, CodBud) alors générer une ANOMALIE BLOQUANTE « la collectivité doit être identifiée »
+ * 2) La balise IdPost doit correspondre à PAR3. Dans le cas contraire générer une ANOMALIE BLOQUANTE : « Le codique du poste est différent du paramétrage :
+ * il doit comprendre au minimum 6
+ * caractères SANS espace »
+ * 3) La balise IdColl doit correspondre à PAR4. Dans le cas contraire générer une ANOMALIE BLOQUANTE « Le n° SIRET de la collectivité doit être valide et
+ * correspondre au paramétrage. Il comporte 14 caractères numériques»
+ * 4) La balise CodColl doit correspondre à PAR5. Dans le cas contraire générer une ANOMALIE BLOQUANTE : « Le Code collectivité doit être valide et correspondre
+ * au paramétrage. Il comporte 3 caractères alphanumériques SANS espaces »
+ * 5) La balise CodBud doit correspondre à PAR6. Dans le cas contraire générer une ANOMALIE BLOQUANTE : « Le Code budget doit être valide et correspondre au paramétrage.
+ * Il comprend 2 caractères alphanumériques SANS espaces »
+ */
+
+public class COMM05B extends AbstractUnitControl implements ConstantsControlsPESv2 {
+ private final static Logger logger = Logger.getLogger(COMM05B.class);
+ public static final transient String CTRL_ID = "COMM05B";
+ private Vector<Anomalie> anos = new Vector<Anomalie>();
+ private Hashtable<String,Object> hParams;
+
+ private String docId = null;
+
+ /**
+ * La chaine cible
+ */
+ private static final String CHEMIN_FIN = "PES_Aller/";
+ private static final String ON_RETURN_ANOMALIES = "/Bordereau/";
+
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+ private String PAR3 = "";
+ private String PAR4 = "";
+ private String PAR5 = "";
+ private String PAR6 = "";
+
+ private String bord_Exer = "";
+ private String bord_IdBord = "";
+ private String bord_TypBord = "";
+
+ private String idPost = "";
+ private String idCol = "";
+ private String codCol = "";
+ private String codBud = "";
+ private String idPost_NodeId = "";
+ private String idCol_NodeId = "";
+ private String codCol_NodeId = "";
+ private String codBud_NodeId = "";
+
+ private boolean idPost_present = false;
+ private boolean idCol_present = false;
+ private boolean codCol_present = false;
+ private boolean codBud_present = false;
+
+ private boolean first_bordereau = false;
+
+ /**
+ * Variables devant être remplacées dans le message
+ */
+
+ private static final String MSG_ERREUR = "#ERREUR#";
+
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses et les Recettes
+ */
+ private static final String RECETTE = "PES_RecetteAller";
+ private static final String DEPENSE = "PES_DepenseAller";
+ private boolean depense = false;
+
+ private static final String CHEMIN_BLOCBORDEREAU = "/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/Bordereau/BlocBordereau/TypBord/";
+
+ private static final String CHEMIN_ENTETE = "/EnTetePES/";
+ private static final String CHEMIN_CODIQUE = "/EnTetePES/IdPost/";
+ private static final String CHEMIN_SIRET = "/EnTetePES/IdColl/";
+ private static final String CHEMIN_CODCOL = "/EnTetePES/CodCol/";
+ private static final String CHEMIN_CODBUB = "/EnTetePES/CodBud/";
+
+
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+ }
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+ public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+ // RECETTE ou DEPENSE
+ if (xpath.indexOf(DEPENSE)!=-1) {
+ depense = true;
+ }
+ if (xpath.indexOf(RECETTE)!=-1) {
+ depense = false;
+ }
+ if (xpath.endsWith(CHEMIN_CODIQUE)) {
+ idPost = atts.getValue("V");
+ idPost_NodeId = atts.getValue("ano:node-id");
+ idPost_present = true;
+ }
+ if (xpath.endsWith(CHEMIN_SIRET)) {
+ idCol = atts.getValue("V");
+ idCol_NodeId = atts.getValue("ano:node-id");
+ idCol_present = true;
+ }
+ if (xpath.endsWith(CHEMIN_CODCOL)) {
+ codCol = atts.getValue("V");
+ codCol_NodeId = atts.getValue("ano:node-id");
+ codCol_present = true;
+ }
+ if (xpath.endsWith(CHEMIN_CODBUB)) {
+ codBud = atts.getValue("V");
+ codBud_NodeId = atts.getValue("ano:node-id");
+ codBud_present = true;
+ }
+ if (!first_bordereau){
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ bord_Exer = bord_IdBord = bord_TypBord = "";
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_Exer = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ first_bordereau = true;
+ }
+ }
+ }
+
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+ boolean oneTime = false;
+
+ if(!oneTime && xpath.endsWith(ON_RETURN_ANOMALIES)){
+ oneTime = true;
+
+ if (hParams.get("idPost")!=null)
+ PAR3 = (String)hParams.get("idPost");
+ if (hParams.get("idColl")!=null)
+ PAR4 = (String)hParams.get("idColl");
+ if (hParams.get("codCol")!=null)
+ PAR5 = (String)hParams.get("codCol");
+ if (hParams.get("codBud")!=null)
+ PAR6 = (String)hParams.get("codBud");
+
+ String erreur = "";
+
+
+ if (!idPost_present || !idPost.equals(PAR3) || idPost.equals("")) {
+ erreur = "Codique = " + idPost + " _ Paramètre codique = " + PAR3 + " : Le codique du poste doit être renseigné et correspondre au paramétrage.";
+
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_ERREUR, erreur);
+
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "Bordereau");
+ xslParams.put("mandatId", "");
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ (depense?DEPENSE:RECETTE),
+ (depense?BORDEREAU_DEPENSE:BORDEREAU_RECETTE), // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path,
+ xslParams);
+ ano.addNode(new Node(idPost_NodeId));
+ anos.add(ano);
+ }
+ if (!idCol_present || !idCol.equals(PAR3) || idCol.equals("")) {
+ erreur = "SIRET = " + idCol + " _ Paramètre SIRET = " + PAR4 + " : Le SIRET de la collectivité doit être valorisé et correspondre au paramétrage.";
+
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_ERREUR, erreur);
+
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "Bordereau");
+ xslParams.put("mandatId", "");
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ (depense?DEPENSE:RECETTE),
+ (depense?BORDEREAU_DEPENSE:BORDEREAU_RECETTE), // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path,
+ xslParams);
+ ano.addNode(new Node(idCol_NodeId));
+ anos.add(ano);
+ }
+ if (!codCol_present || !codCol.equals(PAR3) || codCol.equals("")) {
+ erreur = "Code collectivité = " + codCol + " _ Paramètre code collectivité = " + PAR5 + " : Le code collectivité doit être valorisé et correspondre au paramétrage.";
+
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_ERREUR, erreur);
+
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "Bordereau");
+ xslParams.put("mandatId", "");
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ (depense?DEPENSE:RECETTE),
+ (depense?BORDEREAU_DEPENSE:BORDEREAU_RECETTE), // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path,
+ xslParams);
+ ano.addNode(new Node(codCol_NodeId));
+ anos.add(ano);
+ }
+ if (!codBud_present || !codBud.equals(PAR3) || codBud.equals("")) {
+ erreur = "Code budget = " + codBud + " _ Paramètre code budget = " + PAR6 + " : Le code budget doit être valorisé et correspondre au paramétrage.";
+
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_ERREUR, erreur);
+
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "Bordereau");
+ xslParams.put("mandatId", "");
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ (depense?DEPENSE:RECETTE),
+ (depense?BORDEREAU_DEPENSE:BORDEREAU_RECETTE), // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path,
+ xslParams);
+ ano.addNode(new Node(codBud_NodeId));
+ anos.add(ano);
+ }
+ if (!idPost_present && !idCol_present && !codCol_present && !codBud_present) {
+ erreur = "La collectivité doit être identifiée.";
+
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_ERREUR, erreur);
+
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "Bordereau");
+ xslParams.put("mandatId", "");
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ (depense?DEPENSE:RECETTE),
+ (depense?BORDEREAU_DEPENSE:BORDEREAU_RECETTE), // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path,
+ xslParams);
+ anos.add(ano);
+ }
+ if (!idPost.matches("^[0-9a-zA-Z]{6}$")) {
+ erreur = "Codique = " + idPost + " : Le codique du poste doit être composé de 6 caractères SANS espace.";
+
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_ERREUR, erreur);
+
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "Bordereau");
+ xslParams.put("mandatId", "");
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ (depense?DEPENSE:RECETTE),
+ (depense?BORDEREAU_DEPENSE:BORDEREAU_RECETTE), // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path,
+ xslParams);
+ ano.addNode(new Node(idPost_NodeId));
+ anos.add(ano);
+ }
+ if (!idCol.matches("^[0-9]{14}$")) {
+ erreur = "SIRET = " + idCol + " : Le n° SIRET doit être composé de 14 caractères numériques.";
+
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_ERREUR, erreur);
+
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "Bordereau");
+ xslParams.put("mandatId", "");
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ (depense?DEPENSE:RECETTE),
+ (depense?BORDEREAU_DEPENSE:BORDEREAU_RECETTE), // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path,
+ xslParams);
+ ano.addNode(new Node(idCol_NodeId));
+ anos.add(ano);
+ }
+ if (!codCol.matches("^[0-9a-zA-Z]{3}$")) {
+ erreur = "Code collectivité = " + codCol + " : Le code collectivité doit être composé de 3 caractères alphanumériques SANS espace.";
+
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_ERREUR, erreur);
+
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "Bordereau");
+ xslParams.put("mandatId", "");
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ (depense?DEPENSE:RECETTE),
+ (depense?BORDEREAU_DEPENSE:BORDEREAU_RECETTE), // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path,
+ xslParams);
+ ano.addNode(new Node(codCol_NodeId));
+ anos.add(ano);
+ }
+ if (!codBud.matches("^[0-9a-zA-Z]{2}$")) {
+ erreur = "Code budget = " + codBud + " : Le code budget doit être composé de 2 caractères alphanumériques SANS espace.";
+
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_ERREUR, erreur);
+
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "Bordereau");
+ xslParams.put("mandatId", "");
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ (depense?DEPENSE:RECETTE),
+ (depense?BORDEREAU_DEPENSE:BORDEREAU_RECETTE), // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path,
+ xslParams);
+ ano.addNode(new Node(codBud_NodeId));
+ anos.add(ano);
+ }
+ return anos;
+ } else {
+ return null;
+ }
+ }
+
+ public void endDocument() throws SAXException {}
+
+ public void characters(char[] ch, int start, int length, String xpath) {}
+
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ public void skippedEntity(String name, String xpath) {}
+
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) {}
+}
--- /dev/null
+/*
+ * Copyright
+ * 2010 axYus - www.axyus.com
+ * 2010 Christel ESCOBAR - christel.escobar@axyus.com
+ *
+ * This file is part of XEMELIOS.
+ *
+ * XEMELIOS is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * XEMELIOS 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
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XEMELIOS; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+package fr.gouv.finances.cp.xemelios.controls.pesv2.comm;
+
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.dgfip.xemelios.controls.core.AbstractUnitControl;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Anomalie;
+import fr.gouv.finances.dgfip.xemelios.controls.core.IdGenerator;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Node;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+/**
+ * Implémente le contrôle N° COMM05B - Contrôle de la présence d'un identifiant de collectivité - Contrôle du fichier
+ * Il consiste à vérifier la règle fonctionnelle suivante :
+ * 1) L\92ensemble des balises IdPost, IdColl, CodCol, CodBud doivent être valorisés et correspondre aux Paramètres définis
+ * (IdPost pour PAR3, IdColl pour PAR4, CodCol pour PAR5, CodBud pour PAR6). Dans le cas contraire générer les ANOMALIES BLOQUANTES suivantes.
+ * Si IdPost est vide ou ne correspond pas à PAR3 « Le codique du poste doit être renseigné et correspondre au paramétrage ».
+ * Si IdColl est vide ou ne correspond pas à PAR4 « le SIRET de la collectivité doit être valorisé et correspondre au paramétrage».
+ * Si IdColl est vide ou ne correspond pas à PAR5 : « le code collectivité doit être valorisé et correspondre au paramétrage ».
+ * Si IdBud est vide ou ne correspond pas à PAR6 « le code budget doit être valorisé et correspondre au paramétrage».
+ * Si Aucune balise n\92est présente (IdPost, IdColl, CodColl, CodBud) alors générer une ANOMALIE BLOQUANTE « la collectivité doit être identifiée »
+ * 2) La balise IdPost doit correspondre à PAR3. Dans le cas contraire générer une ANOMALIE BLOQUANTE : « Le codique du poste est différent du paramétrage :
+ * il doit comprendre au minimum 6
+ * caractères SANS espace »
+ * 3) La balise IdColl doit correspondre à PAR4. Dans le cas contraire générer une ANOMALIE BLOQUANTE « Le n° SIRET de la collectivité doit être valide et
+ * correspondre au paramétrage. Il comporte 14 caractères numériques»
+ * 4) La balise CodColl doit correspondre à PAR5. Dans le cas contraire générer une ANOMALIE BLOQUANTE : « Le Code collectivité doit être valide et correspondre
+ * au paramétrage. Il comporte 3 caractères alphanumériques SANS espaces »
+ * 5) La balise CodBud doit correspondre à PAR6. Dans le cas contraire générer une ANOMALIE BLOQUANTE : « Le Code budget doit être valide et correspondre au paramétrage.
+ * Il comprend 2 caractères alphanumériques SANS espaces »
+ */
+
+public class COMM05B extends AbstractUnitControl implements ConstantsControlsPESv2 {
+ private final static Logger logger = Logger.getLogger(COMM05B.class);
+ public static final transient String CTRL_ID = "COMM05B";
+ private Vector<Anomalie> anos = new Vector<Anomalie>();
+ private Hashtable<String,Object> hParams;
+
+ private String docId = null;
+
+ /**
+ * La chaine cible
+ */
+ private static final String CHEMIN_FIN = "PES_Aller/";
+ private static final String ON_RETURN_ANOMALIES = "/Bordereau/";
+
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+ private String PAR3 = "";
+ private String PAR4 = "";
+ private String PAR5 = "";
+ private String PAR6 = "";
+
+ private String bord_Exer = "";
+ private String bord_IdBord = "";
+ private String bord_TypBord = "";
+
+ private String idPost = "";
+ private String idCol = "";
+ private String codCol = "";
+ private String codBud = "";
+ private String idPost_NodeId = "";
+ private String idCol_NodeId = "";
+ private String codCol_NodeId = "";
+ private String codBud_NodeId = "";
+
+ private boolean idPost_present = false;
+ private boolean idCol_present = false;
+ private boolean codCol_present = false;
+ private boolean codBud_present = false;
+
+ private boolean first_bordereau = false;
+
+ /**
+ * Variables devant être remplacées dans le message
+ */
+
+ private static final String MSG_ERREUR = "#ERREUR#";
+
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses et les Recettes
+ */
+ private static final String RECETTE = "PES_RecetteAller";
+ private static final String DEPENSE = "PES_DepenseAller";
+ private boolean depense = false;
+
+ private static final String CHEMIN_BLOCBORDEREAU = "/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/Bordereau/BlocBordereau/TypBord/";
+
+ private static final String CHEMIN_ENTETE = "/EnTetePES/";
+ private static final String CHEMIN_CODIQUE = "/EnTetePES/IdPost/";
+ private static final String CHEMIN_SIRET = "/EnTetePES/IdColl/";
+ private static final String CHEMIN_CODCOL = "/EnTetePES/CodCol/";
+ private static final String CHEMIN_CODBUB = "/EnTetePES/CodBud/";
+
+
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+ }
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+ public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+ // RECETTE ou DEPENSE
+ if (xpath.indexOf(DEPENSE)!=-1) {
+ depense = true;
+ }
+ if (xpath.indexOf(RECETTE)!=-1) {
+ depense = false;
+ }
+ if (xpath.endsWith(CHEMIN_CODIQUE)) {
+ idPost = atts.getValue("V");
+ idPost_NodeId = atts.getValue("ano:node-id");
+ idPost_present = true;
+ }
+ if (xpath.endsWith(CHEMIN_SIRET)) {
+ idCol = atts.getValue("V");
+ idCol_NodeId = atts.getValue("ano:node-id");
+ idCol_present = true;
+ }
+ if (xpath.endsWith(CHEMIN_CODCOL)) {
+ codCol = atts.getValue("V");
+ codCol_NodeId = atts.getValue("ano:node-id");
+ codCol_present = true;
+ }
+ if (xpath.endsWith(CHEMIN_CODBUB)) {
+ codBud = atts.getValue("V");
+ codBud_NodeId = atts.getValue("ano:node-id");
+ codBud_present = true;
+ }
+ if (!first_bordereau){
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ bord_Exer = bord_IdBord = bord_TypBord = "";
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_Exer = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ first_bordereau = true;
+ }
+ }
+ }
+
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+ boolean oneTime = false;
+
+ if(!oneTime && xpath.endsWith(ON_RETURN_ANOMALIES)){
+ oneTime = true;
+
+ if (hParams.get("idPost")!=null)
+ PAR3 = (String)hParams.get("idPost");
+ if (hParams.get("idColl")!=null)
+ PAR4 = (String)hParams.get("idColl");
+ if (hParams.get("codCol")!=null)
+ PAR5 = (String)hParams.get("codCol");
+ if (hParams.get("codBud")!=null)
+ PAR6 = (String)hParams.get("codBud");
+
+ String erreur = "";
+
+
+ if (!idPost_present || !idPost.equals(PAR3) || idPost.equals("")) {
+ erreur = "Codique = " + idPost + " _ Paramètre codique = " + PAR3 + " : Le codique du poste doit être renseigné et correspondre au paramétrage.";
+
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_ERREUR, erreur);
+
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "Bordereau");
+ xslParams.put("mandatId", "");
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ (depense?DEPENSE:RECETTE),
+ (depense?BORDEREAU_DEPENSE:BORDEREAU_RECETTE), // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path,
+ xslParams);
+ ano.addNode(new Node(idPost_NodeId));
+ anos.add(ano);
+ }
+ if (!idCol_present || !idCol.equals(PAR4) || idCol.equals("")) {
+ erreur = "SIRET = " + idCol + " _ Paramètre SIRET = " + PAR4 + " : Le SIRET de la collectivité doit être valorisé et correspondre au paramétrage.";
+
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_ERREUR, erreur);
+
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "Bordereau");
+ xslParams.put("mandatId", "");
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ (depense?DEPENSE:RECETTE),
+ (depense?BORDEREAU_DEPENSE:BORDEREAU_RECETTE), // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path,
+ xslParams);
+ ano.addNode(new Node(idCol_NodeId));
+ anos.add(ano);
+ }
+ if (!codCol_present || !codCol.equals(PAR5) || codCol.equals("")) {
+ erreur = "Code collectivité = " + codCol + " _ Paramètre code collectivité = " + PAR5 + " : Le code collectivité doit être valorisé et correspondre au paramétrage.";
+
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_ERREUR, erreur);
+
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "Bordereau");
+ xslParams.put("mandatId", "");
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ (depense?DEPENSE:RECETTE),
+ (depense?BORDEREAU_DEPENSE:BORDEREAU_RECETTE), // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path,
+ xslParams);
+ ano.addNode(new Node(codCol_NodeId));
+ anos.add(ano);
+ }
+ if (!codBud_present || !codBud.equals(PAR6) || codBud.equals("")) {
+ erreur = "Code budget = " + codBud + " _ Paramètre code budget = " + PAR6 + " : Le code budget doit être valorisé et correspondre au paramétrage.";
+
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_ERREUR, erreur);
+
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "Bordereau");
+ xslParams.put("mandatId", "");
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ (depense?DEPENSE:RECETTE),
+ (depense?BORDEREAU_DEPENSE:BORDEREAU_RECETTE), // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path,
+ xslParams);
+ ano.addNode(new Node(codBud_NodeId));
+ anos.add(ano);
+ }
+ if (!idPost_present && !idCol_present && !codCol_present && !codBud_present) {
+ erreur = "La collectivité doit être identifiée.";
+
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_ERREUR, erreur);
+
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "Bordereau");
+ xslParams.put("mandatId", "");
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ (depense?DEPENSE:RECETTE),
+ (depense?BORDEREAU_DEPENSE:BORDEREAU_RECETTE), // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path,
+ xslParams);
+ anos.add(ano);
+ }
+ if (!idPost.matches("^[0-9a-zA-Z]{6}$")) {
+ erreur = "Codique = " + idPost + " : Le codique du poste doit être composé de 6 caractères SANS espace.";
+
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_ERREUR, erreur);
+
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "Bordereau");
+ xslParams.put("mandatId", "");
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ (depense?DEPENSE:RECETTE),
+ (depense?BORDEREAU_DEPENSE:BORDEREAU_RECETTE), // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path,
+ xslParams);
+ ano.addNode(new Node(idPost_NodeId));
+ anos.add(ano);
+ }
+ if (!idCol.matches("^[0-9]{14}$")) {
+ erreur = "SIRET = " + idCol + " : Le n° SIRET doit être composé de 14 caractères numériques.";
+
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_ERREUR, erreur);
+
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "Bordereau");
+ xslParams.put("mandatId", "");
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ (depense?DEPENSE:RECETTE),
+ (depense?BORDEREAU_DEPENSE:BORDEREAU_RECETTE), // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path,
+ xslParams);
+ ano.addNode(new Node(idCol_NodeId));
+ anos.add(ano);
+ }
+ if (!codCol.matches("^[0-9a-zA-Z]{3}$")) {
+ erreur = "Code collectivité = " + codCol + " : Le code collectivité doit être composé de 3 caractères alphanumériques SANS espace.";
+
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_ERREUR, erreur);
+
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "Bordereau");
+ xslParams.put("mandatId", "");
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ (depense?DEPENSE:RECETTE),
+ (depense?BORDEREAU_DEPENSE:BORDEREAU_RECETTE), // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path,
+ xslParams);
+ ano.addNode(new Node(codCol_NodeId));
+ anos.add(ano);
+ }
+ if (!codBud.matches("^[0-9a-zA-Z]{2}$")) {
+ erreur = "Code budget = " + codBud + " : Le code budget doit être composé de 2 caractères alphanumériques SANS espace.";
+
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_ERREUR, erreur);
+
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "Bordereau");
+ xslParams.put("mandatId", "");
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ (depense?DEPENSE:RECETTE),
+ (depense?BORDEREAU_DEPENSE:BORDEREAU_RECETTE), // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path,
+ xslParams);
+ ano.addNode(new Node(codBud_NodeId));
+ anos.add(ano);
+ }
+ return anos;
+ } else {
+ return null;
+ }
+ }
+
+ public void endDocument() throws SAXException {}
+
+ public void characters(char[] ch, int start, int length, String xpath) {}
+
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ public void skippedEntity(String name, String xpath) {}
+
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) {}
+}
--- /dev/null
+/*
+ * Copyright
+ * 2010 axYus - www.axyus.com
+ * 2010 Christel ESCOBAR - christel.escobar@axyus.com
+ *
+ * This file is part of XEMELIOS.
+ *
+ * XEMELIOS is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * XEMELIOS 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
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XEMELIOS; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+package fr.gouv.finances.cp.xemelios.controls.pesv2.comm;
+
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.dgfip.xemelios.controls.core.AbstractUnitControl;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Anomalie;
+import fr.gouv.finances.dgfip.xemelios.controls.core.IdGenerator;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Node;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+/**
+ * Implémente le contrôle N° COMM06B - Contrôle relatif au Finess Juridique - Contrôle du fichier
+ * Il consiste à vérifier la règle fonctionnelle suivante :
+ * 2) Si PAR1 = M21, vérifier que la balise EnTetePes/FinJur est présente dans le fichier
+ * Dans le cas contraire générer une anomalie : « pour une M21 le finess juridique doit être présent dans le flux et correspondre au paramétrage »
+ * 3) Si PAR1 <> M21, vérifier que la balise EnTetePes/FinJur n\92est pas présente dans le fichier
+ * Dans le cas contraire générer une anomalie : « Le finess juridique ne doit être présent que pour les M21 »
+
+ */
+public class COMM06B extends AbstractUnitControl implements ConstantsControlsPESv2 {
+ private final static Logger logger = Logger.getLogger(COMM06B.class);
+ public static final transient String CTRL_ID = "COMM06B";
+ private Vector<Anomalie> anos = new Vector<Anomalie>();
+ private Hashtable<String,Object> hParams;
+
+ private String docId = null;
+
+ /**
+ * La chaine cible
+ */
+ private static final String CHEMIN_FIN = "PES_Aller/";
+ private static final String ON_RETURN_ANOMALIES = CHEMIN_FIN;
+
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+ private String PAR1 = "";
+ private String PAR2 = "";
+
+ private String bord_Exer = "";
+ private String bord_IdBord = "";
+ private String bord_TypBord = "";
+
+ private String finjur = "";
+ private String finjur_NodeId = "";
+ private boolean finjur_present = false;
+
+ private boolean first_bordereau = false;
+
+ /**
+ * Variables devant être remplacées dans le message
+ */
+ private static final String MSG_FINJUR = "#FINJUR#";
+ private static final String MSG_FINJUR_PARAM = "#FINJUR_PARAM#";
+ private static final String MSG_ERREUR = "#ERREUR#";
+
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses et les Recettes
+ */
+ private static final String RECETTE = "PES_RecetteAller";
+ private static final String DEPENSE = "PES_DepenseAller";
+ private boolean depense = false;
+
+ private static final String CHEMIN_BLOCBORDEREAU = "/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/Bordereau/BlocBordereau/TypBord/";
+
+ private static final String CHEMIN_FINJUR = "/EnTetePES/FinJur/";
+
+
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+ }
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+ public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+ // RECETTE ou DEPENSE
+ if (xpath.indexOf(DEPENSE)!=-1) {
+ depense = true;
+ }
+ if (xpath.indexOf(RECETTE)!=-1) {
+ depense = false;
+ }
+ if (xpath.endsWith(CHEMIN_FINJUR)) {
+ finjur = atts.getValue("V");
+ finjur_NodeId = atts.getValue("ano:node-id");
+ finjur_present = true;
+ }
+ if (!first_bordereau){
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ bord_Exer = bord_IdBord = bord_TypBord = "";
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_Exer = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ first_bordereau = true;
+ }
+ }
+ }
+
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+ if(xpath.equals(CHEMIN_FIN)){
+ PAR1 = (String)hParams.get("nomencl");
+ if (hParams.get("finJur")!=null)
+ PAR2 = (String)hParams.get("finJur");
+ boolean err = false;
+ String erreur = "";
+
+ if (PAR1.equals("M21") && (!finjur_present || !finjur.equals(PAR2))) {
+ err = true;
+ erreur = "Pour une M21, le finess juridique doit être présent dans le flux et correspondre au paramétrage.";
+ }
+ if (!PAR1.equals("M21") && finjur_present) {
+ err = true;
+ erreur = "Le finess juridique ne doit être présent que pour les M21.";
+ }
+
+ if (err) {
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_ERREUR, erreur);
+ msg = msg.replaceAll(MSG_FINJUR, finjur);
+ msg = msg.replaceAll(MSG_FINJUR_PARAM, PAR2);
+
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "Bordereau");
+ xslParams.put("mandatId", "");
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ (depense?DEPENSE:RECETTE),
+ (depense?BORDEREAU_DEPENSE:BORDEREAU_RECETTE), // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path,
+ xslParams);
+ ano.addNode(new Node(finjur_NodeId));
+ anos.add(ano);
+ }
+
+ return anos;
+ } else {
+ return null;
+ }
+ }
+
+ public void endDocument() throws SAXException {}
+
+ public void characters(char[] ch, int start, int length, String xpath) {}
+
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ public void skippedEntity(String name, String xpath) {}
+
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) {}
+}
--- /dev/null
+/*
+ * Implémente le contrôle N° DEP09
+ * Il consiste à vérifier la règle fonctionnelle suivante :
+ * Contrôle de la cohérence générale des informations DGP.
+ * Il est fait ainsi :
+ * 1- Lorsqu'on lit un élément BlocBordereau :
+ * - on vide BlocBordereau/Exer/@V, BlocBordereau/IdBord/@V, BlocBordereau/Typbord/@V.
+ * - on stocke BlocBordereau/Exer/@V, BlocBordereau/IdBord/@V, BlocBordereau/Typbord/@V.
+ * 2- Lorsqu'on lit un élément BlocPiece :
+ * - on vide BlocPiece/IdPce/@V.
+ * - on réinitialise le flag à faux.
+ * - on stocke BlocPiece/IdPce/@V.
+ * 3- Lorsqu'on lit un élément DGP :
+ * - on positionne un flag indiquant que le DGP est renseigné.
+ * 4- Lorsqu'on lit une fin d'élément BlocPiece :
+ * - on vérifie le flag positionné ci-dessus.
+ */
+package fr.gouv.finances.cp.xemelios.controls.pesv2.dep;
+
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.cp.xemelios.controls.AbstractUnitControl;
+import fr.gouv.finances.cp.xemelios.controls.Anomalie;
+import fr.gouv.finances.cp.xemelios.controls.IdGenerator;
+import fr.gouv.finances.cp.xemelios.controls.Node;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+public class DEP09 extends AbstractUnitControl implements ConstantsControlsPESv2 {
+
+ private static Logger logger = Logger.getLogger(DEP09.class);
+ public static final transient String CTRL_ID = "DEP09";
+ private Vector<Anomalie> anos = new Vector<Anomalie>();
+ private Hashtable<String, Object> hParams;
+ /**
+ * La balise du document général
+ */
+ private String docId = null;
+ private String bord_nodeId = null;
+ private String piece_nodeId = null;
+ /**
+ * Severité
+ */
+ private static final String BLOQUANT = "BLOQUANT";
+ private static final String NON_BLOQUANT = "NON BLOQUANT";
+ /**
+ * La chaine cible
+ */
+ private static final String ON_RETURN_ANOMALIES = "/PES_DepenseAller/Bordereau/Piece/";
+ private static final String FIN_BLOCPIECE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/";
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+ private String bord_Exer = "";
+ private String bord_IdBord = "";
+ private String bord_TypBord = "";
+ private String piece_IdPce = "";
+ private String piece_TypPce = "";
+ private String piece_NatPce = "";
+ private String codeNature = "";
+ private String idLigne = "";
+ private boolean suiviDGP = false;
+ private String baliseDgp = "";
+ private boolean dgp_Present = false;
+ private Vector<String> codesNatures;
+// private Vector<String> vTypPceNatPceEligible = new Vector<String>();
+ /**
+ * Variables devant être remplacées dans le message
+ */
+ private static final String MSG_BORD_NUM = "#BORD_NUM#";
+ private static final String MSG_BORD_EXER = "#BORD_EXER#";
+ private static final String MSG_BORD_TYPBORD = "#BORD_TYPBORD#";
+ private static final String MSG_PIECE_IDPCE = "#PIECE_IDPCE#";
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses uniquement
+ */
+ private static final String CHEMIN_BLOCBORDEREAU = "/PES_DepenseAller/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/PES_DepenseAller/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/PES_DepenseAller/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/PES_DepenseAller/Bordereau/BlocBordereau/TypBord/";
+ private static final String CHEMIN_BLOCPIECE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/";
+ private static final String CHEMIN_BLOCPIECE_IDPCE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/InfoPce/IdPce/";
+ private static final String CHEMIN_BLOCPIECE_TYPPIECE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/InfoPce/TypPce/";
+ private static final String CHEMIN_BLOCPIECE_NATPIECE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/InfoPce/NatPce/";
+ private static final String CHEMIN_DGP = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/DGP/";
+ private static final String CHEMIN_BALISE_DGP = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/DGP/Dgp";
+ private static final String CHEMIN_NATURE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/Nature";
+ private static final String CHEMIN_IDLIGNE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/IdLigne";
+
+ public void startDocument() throws SAXException {
+ logger.info("In " + CTRL_ID);
+ }
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+ public void startElement(String uri, String localName, String qName, Attributes atts, String xpath) {
+ // 1
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ bord_Exer = bord_IdBord = bord_TypBord = "";
+ bord_nodeId = atts.getValue("ano:node-id");
+ } else if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_Exer = atts.getValue("V");
+ } else if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ } else if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ } else if (xpath.endsWith(CHEMIN_BLOCPIECE_TYPPIECE)) {
+ piece_TypPce = atts.getValue("V");
+ } else if (xpath.endsWith(CHEMIN_BLOCPIECE_NATPIECE)) {
+ piece_NatPce = atts.getValue("V");
+ } else if (xpath.endsWith(CHEMIN_BLOCPIECE)) {
+ piece_IdPce = "";
+ dgp_Present = false;
+ anos = new Vector<Anomalie>();
+ codesNatures = new Vector<String>();
+ } else if (xpath.endsWith(CHEMIN_BLOCPIECE_IDPCE)) {
+ piece_IdPce = atts.getValue("V");
+ piece_nodeId = atts.getValue("ano:node-id");
+ } else if (xpath.endsWith(CHEMIN_DGP)) {
+ dgp_Present = true;
+ } else if (xpath.endsWith(CHEMIN_NATURE)) {
+ codeNature = atts.getValue("V");
+ codesNatures.add(codeNature);
+ } else if (xpath.endsWith(CHEMIN_IDLIGNE)) {
+ idLigne = atts.getValue("V");
+ } else if(xpath.endsWith(CHEMIN_BALISE_DGP)) {
+ baliseDgp = atts.getValue("V");
+ }
+ }
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+ if (xpath.endsWith(ON_RETURN_ANOMALIES)) {
+ return anos;
+ } else if (xpath.endsWith(FIN_BLOCPIECE)) {
+ if(suiviDGP) {
+ if(dgp_Present) {
+ if(isTrue(baliseDgp)) {
+ if(isPieceEligible(piece_TypPce, piece_NatPce)) {
+ if(!isAllNatureUnder012(codesNatures)) {
+ // cas 1 -> pas d'anomalie
+ } else {
+ // cas 2
+ anos.add(createAnomalie(BLOQUANT, "les pièces des chapitres globalisés 012 ne peuvent faire l'objet d'un DGP"));
+ }
+ } else {
+ // cas 3 cas 4
+ anos.add(createAnomalie(BLOQUANT, "la pièce n'est pas éligible au DGP"));
+ }
+ } else {
+ if(isPieceEligible(piece_TypPce, piece_NatPce)) {
+ if(!isAllNatureUnder012(codesNatures)) {
+ // cas 5
+ anos.add(createAnomalie(BLOQUANT, "la balise Dgp doit être valorisée à True car la pièce est éligible au DGP"));
+ } else {
+ // cas 6
+ anos.add(createAnomalie(NON_BLOQUANT, "il est incohérent de valoriser le Bloc DGP pour le chapitre globalisé 012"));
+ }
+ } else {
+ if(!isAllNatureUnder012(codesNatures)) {
+ // cas 7
+ anos.add(createAnomalie(BLOQUANT, "le bloc DGP ne doit pas être valorisé car la pièce n'est pas éligible au DGP"));
+ } else {
+ // cas 8
+ anos.add(createAnomalie(BLOQUANT, "le bloc DGP ne doit pas être valorisé car la pièce n'est pas éligible au DGP et il s'agit d'un chapitre globalisé 012"));
+ }
+ }
+ }
+ } else {
+ if(isTrue(baliseDgp)) {
+ // cas 9 à 12
+ } else {
+ if(isPieceEligible(piece_TypPce, piece_NatPce)) {
+ if(!isAllNatureUnder012(codesNatures)) {
+ // cas 13
+ anos.add(createAnomalie(BLOQUANT, "le bloc DGP devrait être valorisé car la pièce est éligible au DGP"));
+ } else {
+ // cas 14
+ }
+ } else {
+ // cas 15 et 16
+ }
+ }
+ }
+ } else {
+ if(dgp_Present) {
+ // cas 17..24
+ anos.add(createAnomalie(BLOQUANT, "il est incohérent de ne pas suivre le DGP (paramétrage Xémélios) et de valoriser un bloc DGP"));
+ } else {
+ if(isTrue(baliseDgp)) {
+ // cas 25..28
+ } else {
+ //cas 29..32
+ }
+ }
+
+ }
+ return null;
+ } else {
+ return null;
+ }
+ }
+
+ protected Anomalie createAnomalie(String severity, String complMessage) {
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_Exer);
+ msg = msg.replaceAll(MSG_BORD_TYPBORD, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_IDPCE, piece_IdPce);
+ msg = msg.concat(complMessage);
+
+ String path = "@added:primary-key='" + bord_Exer + "-" + bord_TypBord + "-" + bord_IdBord + "'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau " + bord_IdBord + " Mandat " + piece_IdPce + ": "+complMessage;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "");
+ xslParams.put("mandatId", piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ "PES_DepenseAller",
+ BORDEREAU_DEPENSE, // élément importable
+ bord_IdBord, // id élément importable
+ "BlocPiece",
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ severity,
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ ano.addNode(new Node(piece_nodeId));
+ return ano;
+ }
+
+ protected boolean isTrue(String v) {
+ if(v==null) return false;
+ return "1".equals(v) || "true".equals(v) || "yes".equals(v);
+ }
+
+ protected boolean isAllNatureUnder012(Vector<String> codes) {
+ for(String nat:codes) {
+ if(!isNatureUnder012(nat)) return false;
+ }
+ return true;
+ }
+ protected boolean isNatureUnder012(String nature) {
+ if (nature == null) {
+ return false;
+ }
+ return nature.equals("012")
+ || nature.startsWith("621")
+ || nature.startsWith("631")
+ || nature.startsWith("633")
+ || nature.startsWith("64");
+ }
+
+ protected boolean isPieceEligible(String type, String nat) {
+ if ("01".equals(type)) {
+ return "01".equals(nat) || "02".equals(nat) || "03".equals(nat) || "04".equals(nat) || "05".equals(nat);
+ } else if ("09".equals(type)) {
+ return "01".equals(nat) || "02".equals(nat) || "13".equals(nat) || "14".equals(nat);
+ } else {
+ return false;
+ }
+ }
+
+ public void endDocument() throws SAXException {
+ }
+
+ public void characters(char[] ch, int start, int length, String xpath) {
+ }
+
+ public void ignorableWhitespace(char[] ch, int start, int length, String xpath) {
+ }
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {
+ }
+
+ public void endPrefixMapping(String prefix, String xpath) {
+ }
+
+ public void processingInstruction(String target, String data, String xpath) {
+ }
+
+ public void skippedEntity(String name, String xpath) {
+ }
+
+ public void setParameters(Hashtable<String, Object> params) {
+ this.hParams = params;
+ if (hParams.get("suivdgp") == null) {
+ logger.error("pas de param suividgp !");
+ } else {
+ suiviDGP = ((Boolean) hParams.get("suivdgp")).booleanValue();
+ }
+ }
+
+ public void setDocumentLocator(Locator locator) {
+ }
+}
--- /dev/null
+/*
+ * Implémente le contrôle N° DEP09
+ * Il consiste à vérifier la règle fonctionnelle suivante :
+ * Contrôle de la cohérence générale des informations DGP.
+ * Il est fait ainsi :
+ * 1- Lorsqu'on lit un élément BlocBordereau :
+ * - on vide BlocBordereau/Exer/@V, BlocBordereau/IdBord/@V, BlocBordereau/Typbord/@V.
+ * - on stocke BlocBordereau/Exer/@V, BlocBordereau/IdBord/@V, BlocBordereau/Typbord/@V.
+ * 2- Lorsqu'on lit un élément BlocPiece :
+ * - on vide BlocPiece/IdPce/@V.
+ * - on réinitialise le flag à faux.
+ * - on stocke BlocPiece/IdPce/@V.
+ * 3- Lorsqu'on lit un élément DGP :
+ * - on positionne un flag indiquant que le DGP est renseigné.
+ * 4- Lorsqu'on lit une fin d'élément BlocPiece :
+ * - on vérifie le flag positionné ci-dessus.
+ */
+package fr.gouv.finances.cp.xemelios.controls.pesv2.dep;
+
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.cp.xemelios.controls.AbstractUnitControl;
+import fr.gouv.finances.cp.xemelios.controls.Anomalie;
+import fr.gouv.finances.cp.xemelios.controls.IdGenerator;
+import fr.gouv.finances.cp.xemelios.controls.Node;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+public class DEP09 extends AbstractUnitControl implements ConstantsControlsPESv2{
+ private static Logger logger = Logger.getLogger(DEP09.class);
+ public static final transient String CTRL_ID = "DEP09";
+ private Vector<Anomalie> anos = new Vector<Anomalie>();
+ private Hashtable<String,Object> hParams;
+
+ /**
+ * La balise du document général
+ */
+ private String docId = null;
+ private String bord_nodeId = null;
+ private String piece_nodeId = null;
+
+ /**
+ * Severité
+ */
+ private static final String BLOQUANT = "BLOQUANT";
+ private static final String NON_BLOQUANT = "NON BLOQUANT";
+
+ /**
+ * La chaine cible
+ */
+ private static final String ON_RETURN_ANOMALIES = "/PES_DepenseAller/Bordereau/Piece/";
+ private static final String FIN_BLOCPIECE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/";
+
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+ private String bord_Exer = "";
+ private String bord_IdBord = "";
+ private String bord_TypBord = "";
+ private String piece_IdPce = "";
+ private String piece_TypPce = "";
+ private String piece_NatPce = "";
+ private boolean dgp_Present = false;
+
+ private Vector<String> vTypPceNatPceEligible = new Vector<String>();
+
+ /**
+ * Variables devant être remplacées dans le message
+ */
+ private static final String MSG_BORD_NUM = "#BORD_NUM#";
+ private static final String MSG_BORD_EXER = "#BORD_EXER#";
+ private static final String MSG_BORD_TYPBORD = "#BORD_TYPBORD#";
+ private static final String MSG_PIECE_IDPCE = "#PIECE_IDPCE#";
+
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses uniquement
+ */
+ private static final String CHEMIN_BLOCBORDEREAU = "/PES_DepenseAller/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/PES_DepenseAller/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/PES_DepenseAller/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/PES_DepenseAller/Bordereau/BlocBordereau/TypBord/";
+
+ private static final String CHEMIN_BLOCPIECE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/";
+ private static final String CHEMIN_BLOCPIECE_IDPCE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/InfoPce/IdPce/";
+ private static final String CHEMIN_BLOCPIECE_TYPPIECE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/InfoPce/TypPce/";
+ private static final String CHEMIN_BLOCPIECE_NATPIECE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/InfoPce/NatPce/";
+
+ private static final String CHEMIN_DGP = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/DGP/";
+
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+ vTypPceNatPceEligible.add("0101");vTypPceNatPceEligible.add("0102");vTypPceNatPceEligible.add("0103");vTypPceNatPceEligible.add("0104");
+ vTypPceNatPceEligible.add("0105");vTypPceNatPceEligible.add("0111");
+ vTypPceNatPceEligible.add("0207");vTypPceNatPceEligible.add("0208");
+ vTypPceNatPceEligible.add("0801");vTypPceNatPceEligible.add("0802");vTypPceNatPceEligible.add("0811");
+ vTypPceNatPceEligible.add("0901");vTypPceNatPceEligible.add("0902");vTypPceNatPceEligible.add("0913");vTypPceNatPceEligible.add("0914");
+ vTypPceNatPceEligible.add("1101");vTypPceNatPceEligible.add("1102");vTypPceNatPceEligible.add("1114");
+ }
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+ public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+ // 1
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ bord_Exer = bord_IdBord = bord_TypBord = "";
+ bord_nodeId = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_Exer = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCPIECE_TYPPIECE)) {
+ piece_TypPce = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCPIECE_NATPIECE)) {
+ piece_NatPce = atts.getValue("V");
+ }
+ // 2
+ if (xpath.endsWith(CHEMIN_BLOCPIECE)) {
+ piece_IdPce = "";
+ dgp_Present = false;
+ anos = new Vector<Anomalie>();
+ }
+ if (xpath.endsWith(CHEMIN_BLOCPIECE_IDPCE)) {
+ piece_IdPce = atts.getValue("V");
+ piece_nodeId = atts.getValue("ano:node-id");
+ }
+
+ // 3
+ if (xpath.endsWith(CHEMIN_DGP)) {
+ dgp_Present = true;
+ }
+ }
+
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+ if(xpath.endsWith(ON_RETURN_ANOMALIES)){
+ return anos;
+ } else if (xpath.endsWith(FIN_BLOCPIECE)){
+ String typnat = piece_TypPce+piece_NatPce;
+ if (vTypPceNatPceEligible.contains(typnat) && !dgp_Present) {
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_Exer);
+ msg = msg.replaceAll(MSG_BORD_TYPBORD, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_IDPCE, piece_IdPce);
+
+ String severity = BLOQUANT;
+ if (hParams.get("suivdgp")==null) logger.error("pas de param suividgp !");
+ else {
+ boolean suiviDGP = ((Boolean)hParams.get("suivdgp")).booleanValue();
+ if (!suiviDGP) severity = NON_BLOQUANT;
+
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "");
+ xslParams.put("mandatId", piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_DEPENSE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ severity,
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ ano.addNode(new Node(piece_nodeId));
+ anos.add(ano);
+ }
+ }
+ return null;
+ } else {
+ return null;
+ }
+ }
+
+ public void endDocument() throws SAXException {}
+
+ public void characters(char[] ch, int start, int length, String xpath) {}
+
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ public void skippedEntity(String name, String xpath) {}
+
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) {}
+}
--- /dev/null
+/*
+ * Copyright
+ * 2008 axYus - www.axyus.com
+ * 2008 C ESCOBAR - christel.escobar@axyus.com
+ *
+ * This file is part of XEMELIOS.
+ *
+ * XEMELIOS is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * XEMELIOS 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
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XEMELIOS; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+package fr.gouv.finances.cp.xemelios.controls.pesv2.dep;
+
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.cp.xemelios.controls.AbstractUnitControl;
+import fr.gouv.finances.cp.xemelios.controls.Anomalie;
+import fr.gouv.finances.cp.xemelios.controls.IdGenerator;
+import fr.gouv.finances.cp.xemelios.controls.Node;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+public class DEP19 extends AbstractUnitControl implements ConstantsControlsPESv2{
+
+/**
+ * Implémente le contrôle N° DEP19
+ *
+ * Contrôle de présence du numéro d\92inventaire
+ *
+ * Vérifier pour tous les mandats, si Piece/ BlocPiece/ InfoPce/ TypPce[@V] vaut 03 ou 04, alors :
+ * 1) la balise ModRegl ne peut valoir (01 / 02 / 03 / 04 / 05 / 06 / 10 : numéraire / cheque / prélèvement ou virement).
+ * 2) aucunes de ses lignes ne doit avoir de bloc LigneDePiece/ Tiers/CpteBancaire (BLOQUANT).
+ * Messages d'erreur différents selon si la balise CodeEtab est valoris&ée à 30001
+ * 3) toutes ses lignes doivent avoir un tiers dont la CatTiers vaut 20 et NatJur 07.
+ *
+ */
+
+ private final static Logger logger = Logger.getLogger(DEP19.class);
+ public static final transient String CTRL_ID = "DEP19";
+ private Vector<Anomalie> anos = new Vector<Anomalie>();
+ private Hashtable<String,Object> hParams;
+
+ /**
+ * La balise du document général
+ */
+ private String docId = null;
+ private String nodeId = null;
+
+ /**
+ * La chaine cible
+ */
+ private static final String FIN_PIECE = "/PES_DepenseAller/Bordereau/Piece/";
+ private static final String LIGNEPCE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/";
+ private static final String ON_RETURN_ANOMALIES = FIN_PIECE;
+
+
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+
+ private String bord_IdBord = "";
+ private String bord_ExerBord = "";
+ private String bord_TypBord = "";
+ private String piece_IdPce = "";
+ private String piece_TypPce = "";
+ private String lignepiece_Id = "";
+ private String lignepiece_TypPce_NodeId = "";
+ private String lignepiece_CatTiers = "";
+// private String lignepiece_CpteTiers_NodeId = "";
+ private String lignepiece_CatTiers_NodeId = "";
+ private String lignepiece_NatJur = "";
+ private String lignepiece_NatJur_NodeId = "";
+ private String lignepiece_CpteBancaire = "";
+ private String lignepiece_CpteBancaire_NodeId = "";
+ private String cpteBancaire_CodeEtab = "";
+ private String cpteBancaire_CodeEtab_NodeId = "";
+ private String lignepiece_ModRegl = "";
+ private String lignepiece_ModRegl_NodeId = "";
+
+
+ /**
+ * Variables devant être remplacées dans le message
+ */
+ private static final String MSG_BORD_NUM = "#BORD_NUM#";
+ private static final String MSG_BORD_EXER = "#BORD_EXER#";
+ private static final String MSG_BORD_TYPE = "#BORD_TYPBORD#";
+ private static final String MSG_PIECE_ID = "#PIECE_IDPCE#";
+ private static final String MSG_LIGNEPIECE_ID = "#LIGNE_IDLIGNE#";
+ private static final String MSG_ERREUR = "#ERREUR#";
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses uniquement
+ */
+ private static final String CHEMIN_BLOCBORDEREAU = "/PES_DepenseAller/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_PIECE = "/PES_DepenseAller/Bordereau/Piece/";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/PES_DepenseAller/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/PES_DepenseAller/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/PES_DepenseAller/Bordereau/BlocBordereau/TypBord/";
+ private static final String CHEMIN_BLOCPIECE_IDPIECE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/InfoPce/IdPce/";
+ private static final String CHEMIN_BLOCPIECE_TYPPIECE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/InfoPce/TypPce/";
+ private static final String CHEMIN_LIGNEPIECE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/";
+ private static final String CHEMIN_BLOCLIGNEPIECE_ID = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/IdLigne/";
+ private static final String CHEMIN_BLOCLIGNEPIECE_MODREGL = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/ModRegl/";
+ private static final String CHEMIN_BLOCLIGNEPIECE_CATTIERS = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/Tiers/InfoTiers/CatTiers/";
+ private static final String CHEMIN_BLOCLIGNEPIECE_NATJUR = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/Tiers/InfoTiers/NatJur/";
+ private static final String CHEMIN_BLOCLIGNEPIECE_CPTEBANCAIRE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/Tiers/CpteBancaire/";
+ private static final String CHEMIN_CPTEBANCAIRE_CODEETAB = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/Tiers/CpteBancaire/CodeEtab/";
+
+
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+ }
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+ public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+ // 1
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ anos = new Vector<Anomalie>();
+ bord_ExerBord = bord_IdBord = bord_TypBord = "";
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_ExerBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_PIECE)) {
+ piece_TypPce = piece_IdPce = "";
+ lignepiece_TypPce_NodeId = "";
+ anos.clear();
+ }
+ if(xpath.endsWith(CHEMIN_BLOCPIECE_IDPIECE)){
+ piece_IdPce = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_LIGNEPIECE)) {
+ lignepiece_CatTiers = lignepiece_CpteBancaire = lignepiece_NatJur = lignepiece_ModRegl = lignepiece_Id = "";
+ lignepiece_CatTiers_NodeId = lignepiece_CpteBancaire_NodeId = lignepiece_NatJur_NodeId = lignepiece_ModRegl_NodeId = "";
+ }
+ if(xpath.endsWith(CHEMIN_BLOCLIGNEPIECE_CATTIERS)){
+ lignepiece_CatTiers = atts.getValue("V");
+ lignepiece_CatTiers_NodeId = atts.getValue("ano:node-id");
+ }
+ if(xpath.endsWith(CHEMIN_BLOCLIGNEPIECE_CPTEBANCAIRE)){
+ lignepiece_CpteBancaire = "OK";
+ lignepiece_CpteBancaire_NodeId = atts.getValue("ano:node-id");
+ }
+ if(xpath.endsWith(CHEMIN_CPTEBANCAIRE_CODEETAB)){
+ cpteBancaire_CodeEtab = atts.getValue("V");
+ cpteBancaire_CodeEtab_NodeId = atts.getValue("ano:node-id");
+ }
+ if(xpath.endsWith(CHEMIN_BLOCLIGNEPIECE_NATJUR)){
+ lignepiece_NatJur = atts.getValue("V");
+ lignepiece_NatJur_NodeId= atts.getValue("ano:node-id");
+ }
+ if(xpath.endsWith(CHEMIN_BLOCPIECE_TYPPIECE)){
+ piece_TypPce = atts.getValue("V");
+ lignepiece_TypPce_NodeId = atts.getValue("ano:node-id");
+ }
+ if(xpath.endsWith(CHEMIN_BLOCLIGNEPIECE_ID)){
+ lignepiece_Id = atts.getValue("V");
+ }
+ if(xpath.endsWith(CHEMIN_BLOCLIGNEPIECE_MODREGL)){
+ lignepiece_ModRegl = atts.getValue("V");
+ lignepiece_ModRegl_NodeId = atts.getValue("V");
+ }
+ }
+
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+ if(xpath.endsWith(LIGNEPCE)){
+ if(piece_TypPce.equals("03") || piece_TypPce.equals("04")){
+//1
+ Vector<String> modReglNonPermis = new Vector<String>();
+ modReglNonPermis.add("01"); modReglNonPermis.add("02"); modReglNonPermis.add("03");
+ modReglNonPermis.add("04"); modReglNonPermis.add("05"); modReglNonPermis.add("06"); modReglNonPermis.add("10");
+
+ if (modReglNonPermis.contains(lignepiece_ModRegl)){
+ String severity = "BLOQUANT";
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ String erreur = "Le mode de règlement indiqué n'est pas autorisé pour les mandats d'ordre";
+
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_ExerBord);
+ msg = msg.replaceAll(MSG_BORD_TYPE, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_ID, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNEPIECE_ID, lignepiece_Id);
+ msg = msg.replaceAll(MSG_ERREUR, erreur);
+
+ String path="@added:primary-key='"+bord_ExerBord+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId","");
+ xslParams.put("mandatId",piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_DEPENSE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ severity,
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+
+ ano.addNode(new Node(lignepiece_ModRegl_NodeId));
+ anos.add(ano);
+
+ }
+
+//2
+ if (!lignepiece_CpteBancaire.equals("")){
+ String severity = "BLOQUANT";
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ String erreur = "";
+
+ if (cpteBancaire_CodeEtab.equals("30001"))
+ erreur = "Le bloc banque ne doit pas être valorisé et ne peut correspondre à un compte banque de France";
+ else
+ erreur = "Le bloc banque ne peut être renseigné lorsqu'il s'agit d'un mandat typé d'ordre";
+
+
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_ExerBord);
+ msg = msg.replaceAll(MSG_BORD_TYPE, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_ID, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNEPIECE_ID, lignepiece_Id);
+ msg = msg.replaceAll(MSG_ERREUR, erreur);
+
+ String path="@added:primary-key='"+bord_ExerBord+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId","");
+ xslParams.put("mandatId",piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_DEPENSE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ severity,
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+
+ ano.addNode(new Node(lignepiece_CpteBancaire_NodeId));
+ anos.add(ano);
+ }
+
+//3
+ if (!lignepiece_CatTiers.equals("20") || !lignepiece_NatJur.equals("07")){
+ String severity = getDocumentModel().getControlById(CTRL_ID).getSeverity();
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ String erreur = "Pour les mandats d'ordre, le créancier correspond au receveur de la collectivité (de préférence CatTiers valorisé à 20 et NatJur valorisé à 07) NON BLOQUANT";
+
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_ExerBord);
+ msg = msg.replaceAll(MSG_BORD_TYPE, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_ID, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNEPIECE_ID, lignepiece_Id);
+ msg = msg.replaceAll(MSG_ERREUR, erreur);
+
+ String path="@added:primary-key='"+bord_ExerBord+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId","");
+ xslParams.put("mandatId",piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_DEPENSE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ severity,
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+
+ if (!lignepiece_CatTiers.equals("20"))
+ ano.addNode(new Node(lignepiece_CatTiers_NodeId));
+ if (!lignepiece_NatJur.equals("07"))
+ ano.addNode(new Node(lignepiece_NatJur_NodeId));
+
+ anos.add(ano);
+ }
+ }
+ return null;
+ }else if(xpath.endsWith(ON_RETURN_ANOMALIES)){
+ return anos;
+ } else {
+ return null;
+ }
+ }
+
+ public void endDocument() throws SAXException {}
+
+ public void characters(char[] ch, int start, int length, String xpath) {}
+
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ public void skippedEntity(String name, String xpath) {}
+
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) {}
+
+// private class Triplet{
+// private String lignePceId;
+// private String severity;
+// private Vector<String> v = new Vector<String>();
+// private Triplet (String idligne,String sev,Vector<String> nodes){
+// this.lignePceId = idligne;
+// this.severity = sev;
+// this.v = nodes;
+// }
+// }
+}
--- /dev/null
+/*
+ * Implémente le contrôle N° DEP20
+ *
+ * Contrôles spécifiques aux HLM
+ *
+ * L'information TVA HLM est obligatoire
+ *
+ */
+package fr.gouv.finances.cp.xemelios.controls.pesv2.dep;
+
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.cp.xemelios.controls.AbstractUnitControl;
+import fr.gouv.finances.cp.xemelios.controls.Anomalie;
+import fr.gouv.finances.cp.xemelios.controls.IdGenerator;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+public class DEP20 extends AbstractUnitControl implements ConstantsControlsPESv2{
+ private final static Logger logger = Logger.getLogger(DEP20.class);
+ public static final transient String CTRL_ID = "DEP20";
+ private Vector<Anomalie> anos = new Vector<Anomalie>();
+ private Hashtable<String,Object> hParams;
+
+ /**
+ * La balise du document général
+ */
+ private String docId = null;
+ private String nodeId = null;
+
+ /**
+ * La chaine cible
+ */
+ private static final String FIN_PIECE = "/PES_DepenseAller/Bordereau/Piece/";
+ private static final String LIGNEPCE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/";
+ private static final String ON_RETURN_ANOMALIES = FIN_PIECE;
+
+
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+
+ private String bord_IdBord = "";
+ private String bord_ExerBord = "";
+ private String bord_TypBord = "";
+ private String piece_IdPce = "";
+ private String piece_TypPce = "";
+ private String piece_NodeIdPce = "";
+ private String lignepiece_Id = "";
+ private String lignepiece_TypPce_NodeId = "";
+ private String lignepiece_InfoTVAHLM = "";
+ private String lignepiece_InfoTVAHLM_NodeId = "";
+
+ private Vector<String> vLigneId = new Vector<String>();
+
+ /**
+ * Variables devant être remplacées dans le message
+ */
+ private static final String MSG_BORD_NUM = "#BORD_NUM#";
+ private static final String MSG_BORD_EXER = "#BORD_EXER#";
+ private static final String MSG_BORD_TYPE = "#BORD_TYPBORD#";
+ private static final String MSG_PIECE_ID = "#PIECE_IDPCE#";
+ private static final String MSG_LIGNEPIECE_ID = "#LIGNE_IDLIGNE#";
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses uniquement
+ */
+ private static final String CHEMIN_BLOCBORDEREAU = "/PES_DepenseAller/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_PIECE = "/PES_DepenseAller/Bordereau/";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/PES_DepenseAller/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/PES_DepenseAller/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/PES_DepenseAller/Bordereau/BlocBordereau/TypBord/";
+ private static final String CHEMIN_BLOCPIECE_IDPIECE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/InfoPce/IdPce/";
+ private static final String CHEMIN_BLOCPIECE_TYPPIECE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/InfoPce/TypPce/";
+ private static final String CHEMIN_BLOCLIGNEPIECE_ID = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/IdLigne/";
+ private static final String CHEMIN_BLOCLIGNEPIECE_CATTIERS = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/Tiers/InfoTiers/CatTiers/";
+ private static final String CHEMIN_BLOCLIGNEPIECE_NATJUR = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/Tiers/InfoTiers/NatJur/";
+ private static final String CHEMIN_BLOCLIGNEPIECE_INFOTVAHLM = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoTVAHLM/";
+
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+ }
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+ public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+ // 1
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ anos = new Vector<Anomalie>();
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_ExerBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ }
+ if(xpath.endsWith(CHEMIN_BLOCPIECE_IDPIECE)){
+ piece_IdPce = atts.getValue("V");
+ anos.clear();
+ vLigneId.clear();
+ }
+ if(xpath.endsWith(CHEMIN_BLOCLIGNEPIECE_INFOTVAHLM)){
+ lignepiece_InfoTVAHLM= "OK";
+ lignepiece_InfoTVAHLM_NodeId = atts.getValue("ano:node-id");
+ }
+ if(xpath.endsWith(CHEMIN_BLOCPIECE_TYPPIECE)){
+ piece_TypPce = atts.getValue("V");
+ lignepiece_TypPce_NodeId = atts.getValue("ano:node-id");
+ }
+ if(xpath.endsWith(CHEMIN_BLOCLIGNEPIECE_ID)){
+ lignepiece_Id = atts.getValue("V");
+ }
+ }
+
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+ if(xpath.endsWith(LIGNEPCE)){
+ if(lignepiece_InfoTVAHLM.equals("") && hParams.get("nomencl").equals("M31")){
+ vLigneId.add(lignepiece_Id);
+ }
+ lignepiece_InfoTVAHLM = "";
+ return null;
+ }else if(xpath.endsWith(ON_RETURN_ANOMALIES)){
+ for(String ligneId:vLigneId){
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_ExerBord);
+ msg = msg.replaceAll(MSG_BORD_TYPE, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_ID, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNEPIECE_ID, ligneId);
+ String path="@added:primary-key='"+bord_ExerBord+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId","");
+ xslParams.put("mandatId",piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_DEPENSE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ anos.add(ano);
+ }
+ return anos;
+ } else {
+ return null;
+ }
+ }
+
+ public void endDocument() throws SAXException {}
+
+ public void characters(char[] ch, int start, int length, String xpath) {}
+
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ public void skippedEntity(String name, String xpath) {}
+
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) {}
+
+ private class Triplet{
+ private String lignePceId;private String severity;
+ private Vector<String> v = new Vector<String>();
+ private Triplet (String idligne,String sev,Vector<String> nodes){
+ this.lignePceId = idligne;
+ this.severity = sev;
+ this.v = nodes;
+ }
+ }
+}
--- /dev/null
+/*
+ * Copyright
+ * 2007 axYus - www.axyus.com
+ * 2010 C ESCOBAR - christel.escobar@axyus.com
+ *
+ * This file is part of XEMELIOS.
+ *
+ * XEMELIOS is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * XEMELIOS 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
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XEMELIOS; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+package fr.gouv.finances.cp.xemelios.controls.pesv2.dep;
+
+import java.util.Hashtable;
+import java.util.StringTokenizer;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.cp.xemelios.controls.AbstractUnitControl;
+import fr.gouv.finances.cp.xemelios.controls.Anomalie;
+import fr.gouv.finances.cp.xemelios.controls.IdGenerator;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+public class DEP21 extends AbstractUnitControl implements ConstantsControlsPESv2{
+
+ /**
+ * Implémente le contrôle N° DEP21
+ *
+ * Contrôles spécifiques aux Hôpitaux
+ *
+ * Le compte de TVA doit être renseigné.
+ *
+ * Si PAR1=M21 ou M22, alors vérifier que
+ * - pour toutes les lignes LigneDePiece / BlocLignePiece/ InfoLignePce/ CpteTva est renseigné.
+ *
+ */
+
+ private final static Logger logger = Logger.getLogger(DEP21.class);
+ public static final transient String CTRL_ID="DEP21";
+ private Vector<Anomalie> anos = new Vector<Anomalie>();
+ private Hashtable<String,Object> hParams;
+
+ /**
+ * La balise du document général
+ */
+ private String docId = null;
+ private String bord_nodeId = null;
+ private String ligne_nodeId = "";
+
+ /**
+ * La chaine cible
+ */
+ private static final String FIN_BORDEREAU = "/PES_DepenseAller/Bordereau/";
+ private static final String FIN_PIECE = "/PES_DepenseAller/Bordereau/Piece/";
+ private static final String FIN_LIGNE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/";
+
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+ private String bord_Exer = "";
+ private String bord_IdBord = "";
+ private String bord_TypBord = "";
+ private String piece_IdPce = "";
+ private String ligne_IdLigne = "";
+
+ private boolean cpteTva_present = false;
+
+
+ /**
+ * Variables devant être remplacées dans le message
+ */
+ private static final String MSG_BORD_NUM = "#BORD_NUM#";
+ private static final String MSG_BORD_EXER = "#BORD_EXER#";
+ private static final String MSG_BORD_TYPBORD = "#BORD_TYPBORD#";
+ private static final String MSG_PIECE_IDPCE = "#PIECE_IDPCE#";
+ private static final String MSG_LIGNE_IDLIGNE = "#LIGNE_IDLIGNE#";
+ private static final String MSG_ERREUR = "#ERREUR#";
+
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses uniquement
+ */
+
+ private static final String CHEMIN_BLOCBORDEREAU = "/PES_DepenseAller/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/PES_DepenseAller/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/PES_DepenseAller/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/PES_DepenseAller/Bordereau/BlocBordereau/TypBord/";
+
+ private static final String CHEMIN_BLOCPIECE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/";
+ private static final String CHEMIN_BLOCPIECE_IDPCE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/InfoPce/IdPce/";
+
+ private static final String CHEMIN_INFOLIGNEPIECE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/";
+ private static final String CHEMIN_INFOLIGNEPIECE_IDLIGNE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/IdLigne/";
+ private static final String CHEMIN_INFOLIGNEPIECE_CPTETVA = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/CpteTVA/";
+
+
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+ }
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+ public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ bord_Exer = bord_IdBord = bord_TypBord = "";
+ bord_nodeId = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_Exer = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ }
+
+ // 2
+ if (xpath.endsWith(CHEMIN_BLOCPIECE)) {
+ piece_IdPce = "";
+ anos = new Vector<Anomalie>();
+ }
+ if (xpath.endsWith(CHEMIN_BLOCPIECE_IDPCE)) {
+ piece_IdPce = atts.getValue("V");
+ }
+
+ // 2
+ if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE)) {
+ ligne_IdLigne = ligne_nodeId = "";
+ cpteTva_present = false;
+
+ }
+ if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE_IDLIGNE)) {
+ ligne_IdLigne = atts.getValue("V");
+ ligne_nodeId = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE_CPTETVA)) {
+ cpteTva_present = true;
+ }
+ }
+
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+ if (haveToTest () && xpath.endsWith(FIN_LIGNE)){
+ if (!cpteTva_present) {
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ String erreur = "Le compte de TVA doit être renseigné sur toutes les lignes";
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_Exer);
+ msg = msg.replaceAll(MSG_BORD_TYPBORD, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_IDPCE, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNE_IDLIGNE, ligne_IdLigne);
+ msg = msg.replaceAll(MSG_ERREUR, erreur);
+
+
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "");
+ xslParams.put("mandatId", piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_DEPENSE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ //ano.addNode(new Node(ligne_nodeId));
+ anos.add(ano);
+ }
+ return null;
+
+ } else if(xpath.endsWith(FIN_PIECE)){
+ return anos;
+ }
+ return null;
+ }
+
+ private boolean haveToTest () {
+ String tmp = (String)hParams.get("nomencl");
+ return ("M21".equals(tmp) || "M22".equals(tmp));
+ }
+
+ public void endDocument() throws SAXException {}
+
+ public void characters(char[] ch, int start, int length, String xpath) {}
+
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ public void skippedEntity(String name, String xpath) {}
+
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) {}
+}
--- /dev/null
+// CES _ 08/02/2010 _ Suppression du controle suite à demande extranet 181
+
+///*
+// * Copyright
+// * 2007 axYus - www.axyus.com
+// * 2007 JP.Tessier - jean-philippe.tessier@axyus.com
+// *
+// * This file is part of XEMELIOS.
+// *
+// * XEMELIOS is free software; you can redistribute it and/or modify
+// * it under the terms of the GNU General Public License as published by
+// * the Free Software Foundation; either version 2 of the License, or
+// * (at your option) any later version.
+// *
+// * XEMELIOS 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
+// * GNU General Public License for more details.
+// *
+// * You should have received a copy of the GNU General Public License
+// * along with XEMELIOS; if not, write to the Free Software
+// * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+// */
+//
+//package fr.gouv.finances.cp.xemelios.controls.pesv2.dep;
+//
+//import fr.gouv.finances.dgfip.utils.Luhn;
+//import java.util.Hashtable;
+//import java.util.Vector;
+//
+//import org.apache.log4j.Logger;
+//import org.xml.sax.Attributes;
+//import org.xml.sax.Locator;
+//import org.xml.sax.SAXException;
+//
+//import fr.gouv.finances.cp.xemelios.controls.AbstractUnitControl;
+//import fr.gouv.finances.cp.xemelios.controls.Anomalie;
+//import fr.gouv.finances.cp.xemelios.controls.IdGenerator;
+//import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+//
+///*
+// * Implémente le contrôle N° DEP22
+// *
+// * Contrôle sur la présence de la balise IdColl
+// *
+// */
+//public class DEP22 extends AbstractUnitControl implements ConstantsControlsPESv2{
+// private final static Logger logger = Logger.getLogger(DEP22.class);
+// public static final transient String CTRL_ID = "DEP22";
+// private Vector<Anomalie> anos = new Vector<Anomalie>();
+// private Hashtable<String,Object> hParams;
+//
+// /**
+// * La chaine cible
+// */
+// private static final String FIN_BORDEREAU = "/PES_DepenseAller/";
+// private static final String ON_RETURN_ANOMALIES = FIN_BORDEREAU;
+//
+//
+// /**
+// * Variables contenant les valeurs nécessaires à ce contrôle
+// */
+//
+// private String IdColl = "";
+//
+// /**
+// * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+// * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses uniquement
+// */
+// private static final String CHEMIN_PESDEPENSEALLER = "/PES_DepenseAller/";
+// private static final String CHEMIN_IDCOLL = "/EnTetePES/IdColl/";
+//
+// public void startDocument() throws SAXException {
+// logger.info("In "+CTRL_ID);
+// }
+//
+// public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+// // 1
+// if (xpath.endsWith(CHEMIN_PESDEPENSEALLER)) {
+// anos = new Vector<Anomalie>();
+// }
+// if (xpath.endsWith(CHEMIN_IDCOLL)) {
+// IdColl = atts.getValue("V");
+// logger.debug(CTRL_ID+" : IdColl="+IdColl);
+// }
+// }
+//
+//
+// public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+// if(xpath.endsWith(ON_RETURN_ANOMALIES)){
+// if(!(hParams.get("nomencl").equals("M21")) && !Luhn.testLuhnString(IdColl)) {
+// String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent().replaceAll("#ID_COLL#","n'est pas bon. "+IdColl!=null?"Il ne correspond pas un un SIRET/SIREN valide":"Il n'existe pas dans le flux analysé"+".");
+// String anoId = IdGenerator.nextId();
+// Anomalie ano = new Anomalie(anoId,
+// getDocumentModel().getControlById(CTRL_ID).getId(),
+// getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+// getDocumentModel().getDocumentId(),
+// xpath.split("/")[1],
+// null, // élément importable
+// null, // id élément importable
+// null,
+// null,
+// msg,
+// getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+// getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+// null, // xpath vers le bordereau sous lequel se trouve l'anomalie
+// null); // paramètres supplémentaires pour accéder à l'élément en anomalie
+// anos.add(ano);
+// }
+// return anos;
+// } else {
+// return null;
+// }
+// }
+//
+// public void endDocument() throws SAXException {}
+//
+// public void characters(char[] ch, int start, int length, String xpath) {}
+//
+// public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+//
+// public void startPrefixMapping(String prefix, String uri, String xpath) {}
+//
+// public void endPrefixMapping(String prefix, String xpath) {}
+//
+// public void processingInstruction(String target, String data, String xpath) {}
+//
+// public void skippedEntity(String name, String xpath) {}
+//
+// public void setParameters(Hashtable<String,Object> params) {
+// this.hParams=params;
+// }
+//
+// public void setDocumentLocator(Locator locator) {}
+//
+//}
--- /dev/null
+/*
+ * Copyright
+ * 2008 axYus - www.axyus.com
+ * 2008 C ESCOBAR - christel.escobar@axyus.com
+ *
+ * This file is part of XEMELIOS.
+ *
+ * XEMELIOS is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * XEMELIOS 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
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XEMELIOS; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+
+package fr.gouv.finances.cp.xemelios.controls.pesv2.dep;
+
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.cp.xemelios.controls.AbstractUnitControl;
+import fr.gouv.finances.cp.xemelios.controls.Anomalie;
+import fr.gouv.finances.cp.xemelios.controls.IdGenerator;
+import fr.gouv.finances.cp.xemelios.controls.Node;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+
+/**
+ * Implémente le contrôle N° DEP24
+ *
+ * Il consiste à vérifier la règle fonctionnelle suivante :
+ * Lorsque la pièce est un mandat d'ordre budgétaire de nature cession, le compte budgétaire est de type 675 (sortie du bien de l'actif), 676 (plus-value) ou 192 (moins-value)
+ * et le numéro d'opération doit faire apparaître le chapitre 042 ou 6 (sortie du bien de l'actif) [vote par nature] ou bien le chapitre 914 (sortie du bien de l'actif) ou 934 [vote par fonction].
+ * Le mandat doit faire référence à un titre d'ordre budgétaire.
+ *
+ */
+
+
+public class DEP24 extends AbstractUnitControl implements ConstantsControlsPESv2{
+ private final static Logger logger = Logger.getLogger(DEP24.class);
+ public static final transient String CTRL_ID = "DEP24";
+ private Vector<Anomalie> anos = new Vector<Anomalie>();
+ private Hashtable<String,Object> hParams;
+
+ /**
+ * La balise du document général
+ */
+
+ private String docId = null;
+ private String nodeId = null;
+
+ /**
+ * La chaine cible
+ */
+
+ private static final String FIN_PIECE = "/PES_DepenseAller/Bordereau/Piece/";
+ private static final String LIGNEPCE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/";
+ private static final String ON_RETURN_ANOMALIES = FIN_PIECE;
+
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+
+ private String bord_IdBord = "";
+ private String bord_ExerBord = "";
+ private String bord_TypBord = "";
+ private String piece_IdPce = "";
+ private String piece_TypPce = "";
+ private String piece_NatPce = "";
+ private String ligne_IdLigne = "";
+ private String ligne_Nature = "";
+ private String ligne_Operation = "";
+
+ private String ligne_Nature_NodeId = "";
+ private String ligne_Operation_NodeId = "";
+ private String ligne_IdLigne_NodeId = "";
+
+
+ private boolean rattachPiece_exist = false;
+
+
+ /**
+ * Variables devant être remplacées dans le message-echec
+ */
+
+ private static final String MSG_BORD_NUM = "#BORD_NUM#";
+ private static final String MSG_BORD_EXER = "#BORD_EXER#";
+ private static final String MSG_PIECE_TYPPCE = "#PIECE_TYPPCE#";
+ private static final String MSG_PIECE_ID = "#PIECE_IDPCE#";
+ private static final String MSG_LIGNE_IDLIGNE = "#LIGNE_IDLIGNE#";
+
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses uniquement
+ */
+
+ private static final String CHEMIN_BLOCBORDEREAU = "/PES_DepenseAller/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_PIECE = "/PES_DepenseAller/Bordereau/Piece/";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/PES_DepenseAller/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/PES_DepenseAller/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/PES_DepenseAller/Bordereau/BlocBordereau/TypBord/";
+ private static final String CHEMIN_BLOCPIECE_IDPIECE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/InfoPce/IdPce/";
+ private static final String CHEMIN_BLOCPIECE_TYPPIECE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/InfoPce/TypPce/";
+ private static final String CHEMIN_BLOCPIECE_NATPIECE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/InfoPce/NatPce/";
+ private static final String CHEMIN_BLOCLIGNEPIECE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/";
+ private static final String CHEMIN_RATTACHPIECE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/RattachPiece/";
+ private static final String CHEMIN_INFOLIGNEPIECE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/";
+ private static final String CHEMIN_INFOLIGNEPIECE_IDLIGNE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/IdLigne/";
+ private static final String CHEMIN_INFOLIGNEPIECE_NATURE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/Nature/";
+ private static final String CHEMIN_INFOLIGNEPIECE_OPERATION = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/Operation/";
+
+
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+ }
+
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+
+ public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ bord_ExerBord = bord_IdBord = bord_TypBord = "";
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_ExerBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_PIECE)) {
+ if (!anos.isEmpty())
+ anos = new Vector<Anomalie>();
+ piece_IdPce = piece_TypPce = piece_NatPce = "";
+ }
+ if(xpath.endsWith(CHEMIN_BLOCPIECE_IDPIECE)){
+ piece_IdPce = atts.getValue("V");
+ anos.clear();
+ }
+ if(xpath.endsWith(CHEMIN_BLOCPIECE_TYPPIECE)){
+ piece_TypPce = atts.getValue("V");
+ }
+ if(xpath.endsWith(CHEMIN_BLOCPIECE_NATPIECE)){
+ piece_NatPce = atts.getValue("V");
+ }
+ if(xpath.endsWith(CHEMIN_BLOCLIGNEPIECE)){
+ rattachPiece_exist = false;
+ }
+ if(xpath.endsWith(CHEMIN_RATTACHPIECE)){
+ rattachPiece_exist = true;
+ }
+ if(xpath.endsWith(CHEMIN_INFOLIGNEPIECE)){
+ ligne_IdLigne = ligne_Nature = ligne_Operation = "";
+ ligne_Nature_NodeId = ligne_Operation_NodeId = ligne_IdLigne_NodeId = "";
+ }
+ if(xpath.endsWith(CHEMIN_INFOLIGNEPIECE_IDLIGNE)){
+ ligne_IdLigne = atts.getValue("V");
+ ligne_IdLigne_NodeId = atts.getValue("ano:node-id");
+
+ }
+ if(xpath.endsWith(CHEMIN_INFOLIGNEPIECE_NATURE)){
+ ligne_Nature = atts.getValue("V");
+ ligne_Nature_NodeId = atts.getValue("ano:node-id");
+ }
+ if(xpath.endsWith(CHEMIN_INFOLIGNEPIECE_OPERATION)){
+ ligne_Operation = atts.getValue("V");
+ ligne_Operation_NodeId = atts.getValue("ano:node-id");
+ }
+
+ }
+
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+ Vector<Node> anonodes = new Vector<Node>();
+ String PAR1 = (String)hParams.get("nomencl");
+ String PAR2 = (String)hParams.get("typnomencl");
+
+
+ if(xpath.endsWith(LIGNEPCE)){
+
+ if ( ("M4".equals(PAR1) || "M14".equals(PAR1)) && ("Nature".equals(PAR2) || "Nature-ref-fonct".equals(PAR2)) ) {
+
+ if (piece_TypPce.equals("03") && piece_NatPce.equals("18") &&
+ ( (!ligne_Nature.equals("675") && !ligne_Nature.equals("676") && !ligne_Nature.equals("192")) ||
+ (!ligne_Operation.equals("042") && !ligne_Operation.equals("6")) || !rattachPiece_exist )) {
+
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_ExerBord);
+ msg = msg.replaceAll(MSG_PIECE_TYPPCE, piece_TypPce);
+ msg = msg.replaceAll(MSG_PIECE_ID, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNE_IDLIGNE, ligne_IdLigne);
+ String path="@added:primary-key='"+bord_ExerBord+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId","");
+ xslParams.put("mandatId",piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_DEPENSE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+
+ if (!ligne_Nature.equals("675") && !ligne_Nature.equals("676") && !ligne_Nature.equals("192"))
+ anonodes.add(new Node (ligne_Nature_NodeId));
+ if (!ligne_Operation.equals("042") && !ligne_Operation.equals("6"))
+ anonodes.add(new Node (ligne_Operation_NodeId));
+ if (!rattachPiece_exist || ligne_Nature.equals("") || ligne_Operation.equals(""))
+ anonodes.add(new Node (ligne_IdLigne_NodeId));
+
+ ano.addAll(anonodes);
+ anos.add(ano);
+ }
+ }
+
+ if ( "M14".equals(PAR1) && "Fonction".equals(PAR2) ) {
+
+ if (piece_TypPce.equals("03") && piece_NatPce.equals("18") &&
+ ( (!ligne_Nature.equals("675") && !ligne_Nature.equals("676") && !ligne_Nature.equals("192")) ||
+ (!ligne_Operation.equals("914") && !ligne_Operation.equals("934")) || !rattachPiece_exist )) {
+
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_ExerBord);
+ msg = msg.replaceAll(MSG_PIECE_TYPPCE, piece_TypPce);
+ msg = msg.replaceAll(MSG_PIECE_ID, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNE_IDLIGNE, ligne_IdLigne);
+ String path="@added:primary-key='"+bord_ExerBord+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId","");
+ xslParams.put("mandatId",piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_DEPENSE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+
+ if (!ligne_Nature.equals("675") && !ligne_Nature.equals("676") && !ligne_Nature.equals("192"))
+ anonodes.add(new Node (ligne_Nature_NodeId));
+ if (!ligne_Operation.equals("914") && !ligne_Operation.equals("934"))
+ anonodes.add(new Node (ligne_Operation_NodeId));
+ if (!rattachPiece_exist || ligne_Nature.equals("") || ligne_Operation.equals(""))
+ anonodes.add(new Node (ligne_IdLigne_NodeId));
+
+ ano.addAll(anonodes);
+ anos.add(ano);
+ }
+ }
+
+ return null;
+ }
+ else if (xpath.endsWith(ON_RETURN_ANOMALIES)){
+
+ return anos;
+
+ } else {
+ return null;
+ }
+ }
+
+ public void endDocument() throws SAXException {}
+
+ public void characters(char[] ch, int start, int length, String xpath) {}
+
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ public void skippedEntity(String name, String xpath) {}
+
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) {}
+
+}
--- /dev/null
+/*
+ * Copyright
+ * 2010 axYus - www.axyus.com
+ * 2010 C ESCOBAR - christel.escobar@axyus.com
+ *
+ * This file is part of XEMELIOS.
+ *
+ * XEMELIOS is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * XEMELIOS 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
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XEMELIOS; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+
+package fr.gouv.finances.cp.xemelios.controls.pesv2.dep;
+
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.cp.xemelios.controls.AbstractUnitControl;
+import fr.gouv.finances.cp.xemelios.controls.Anomalie;
+import fr.gouv.finances.cp.xemelios.controls.IdGenerator;
+import fr.gouv.finances.cp.xemelios.controls.Node;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+
+/**
+ * Implémente le contrôle N° DEP27
+ *
+ * Il concerne les contrôles sur la balise opération.
+ *
+ */
+
+
+public class DEP27 extends AbstractUnitControl implements ConstantsControlsPESv2{
+ private final static Logger logger = Logger.getLogger(DEP27.class);
+ public static final transient String CTRL_ID = "DEP27";
+ private Vector<Anomalie> anos = new Vector<Anomalie>();
+ private Hashtable<String,Object> hParams;
+
+ /**
+ * La balise du document général
+ */
+
+ private String docId = null;
+ private String nodeId = null;
+
+ /**
+ * La chaine cible
+ */
+
+ private static final String FIN_PIECE = "/PES_DepenseAller/Bordereau/Piece/";
+ private static final String LIGNEPCE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/";
+ private static final String ON_RETURN_ANOMALIES = FIN_PIECE;
+
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+
+ private String bord_IdBord = "";
+ private String bord_ExerBord = "";
+ private String bord_TypBord = "";
+ private String piece_IdPce = "";
+ private String piece_TypPce = "";
+ private String piece_NatPce = "";
+ private String ligne_IdLigne = "";
+ private String ligne_Operation = "";
+ private String ligne_Fonction = "";
+
+ private String ligne_Operation_NodeId = "";
+ private String ligne_IdLigne_NodeId = "";
+ private String ligne_Fonction_NodeId = "";
+
+
+ /**
+ * Variables devant être remplacées dans le message-echec
+ */
+
+ private static final String MSG_BORD_NUM = "#BORD_NUM#";
+ private static final String MSG_PIECE_ID = "#PIECE_IDPCE#";
+ private static final String MSG_LIGNE_IDLIGNE = "#LIGNE_IDLIGNE#";
+ private static final String MSG_LIGNE_OPE = "#LIGNE_OPE#";
+ private static final String MSG_ERREUR = "#ERREUR#";
+
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses uniquement
+ */
+
+ private static final String CHEMIN_BLOCBORDEREAU = "/PES_DepenseAller/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_PIECE = "/PES_DepenseAller/Bordereau/Piece/";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/PES_DepenseAller/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/PES_DepenseAller/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/PES_DepenseAller/Bordereau/BlocBordereau/TypBord/";
+ private static final String CHEMIN_BLOCPIECE_IDPIECE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/InfoPce/IdPce/";
+ private static final String CHEMIN_BLOCPIECE_TYPPIECE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/InfoPce/TypPce/";
+ private static final String CHEMIN_BLOCPIECE_NATPIECE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/InfoPce/NatPce/";
+ private static final String CHEMIN_BLOCLIGNEPIECE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/";
+ private static final String CHEMIN_INFOLIGNEPIECE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/";
+ private static final String CHEMIN_INFOLIGNEPIECE_IDLIGNE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/IdLigne/";
+ private static final String CHEMIN_INFOLIGNEPIECE_OPERATION = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/Operation/";
+ private static final String CHEMIN_INFOLIGNEPIECE_FONCTION = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/Fonction/";
+
+
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+ }
+
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+
+ public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ bord_ExerBord = bord_IdBord = bord_TypBord = "";
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_ExerBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_PIECE)) {
+ if (!anos.isEmpty())
+ anos = new Vector<Anomalie>();
+ piece_IdPce = piece_TypPce = piece_NatPce = "";
+ }
+ if(xpath.endsWith(CHEMIN_BLOCPIECE_IDPIECE)){
+ piece_IdPce = atts.getValue("V");
+ anos.clear();
+ }
+ if(xpath.endsWith(CHEMIN_BLOCPIECE_TYPPIECE)){
+ piece_TypPce = atts.getValue("V");
+ }
+ if(xpath.endsWith(CHEMIN_BLOCPIECE_NATPIECE)){
+ piece_NatPce = atts.getValue("V");
+ }
+ if(xpath.endsWith(CHEMIN_INFOLIGNEPIECE)){
+ ligne_IdLigne = ligne_Operation = ligne_Fonction = "";
+ ligne_Operation_NodeId = ligne_IdLigne_NodeId = ligne_Fonction_NodeId = "";
+ }
+ if(xpath.endsWith(CHEMIN_INFOLIGNEPIECE_IDLIGNE)){
+ ligne_IdLigne = atts.getValue("V");
+ ligne_IdLigne_NodeId = atts.getValue("ano:node-id");
+
+ }
+ if(xpath.endsWith(CHEMIN_INFOLIGNEPIECE_OPERATION)){
+ ligne_Operation = atts.getValue("V");
+ ligne_Operation_NodeId = atts.getValue("ano:node-id");
+ }
+ if(xpath.endsWith(CHEMIN_INFOLIGNEPIECE_FONCTION)){
+ ligne_Fonction = atts.getValue("V");
+ ligne_Fonction_NodeId = atts.getValue("ano:node-id");
+ }
+
+ }
+
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+ Vector<Node> anonodes = new Vector<Node>();
+ String PAR1 = (String)hParams.get("nomencl");
+ String PAR2 = (String)hParams.get("typnomencl");
+
+
+ if(xpath.endsWith(LIGNEPCE) &&
+ !(PAR1.equals("M14") && piece_TypPce.equals("03") && piece_NatPce.equals("18"))){
+ boolean err = false;
+//1
+ if ( haveToTest(PAR1) && (piece_TypPce.equals("03") || piece_TypPce.equals("04")) && (PAR2.equals("Nature") || PAR2.equals("Nature-ref-fonct")) ) {
+
+ if (piece_NatPce.equals("01") && !ligne_Operation.equals("6") && !ligne_Operation.equals("042") && !ligne_Operation.equals("7") && !ligne_Operation.equals("043")) {
+ err = true;
+ anonodes.add(new Node (ligne_Operation_NodeId));
+ }
+ if (piece_NatPce.equals("02") && !ligne_Operation.equals("4") && !ligne_Operation.equals("040") && !ligne_Operation.equals("5") && !ligne_Operation.equals("041")) {
+ err = true;
+ anonodes.add(new Node (ligne_Operation_NodeId));
+ }
+ }
+
+ if ( haveToTest(PAR1) && (piece_TypPce.equals("03") || piece_TypPce.equals("04")) && PAR2.equals("Fonction") ) {
+
+ if (piece_NatPce.equals("01") && ( !((ligne_Operation.equals("6") || ligne_Operation.equals("042")) && ligne_Fonction.equals("934"))
+ && !((ligne_Operation.equals("7") || ligne_Operation.equals("043")) && ligne_Fonction.equals("935")) )) {
+ err = true;
+ anonodes.add(new Node (ligne_Operation_NodeId));
+ anonodes.add(new Node (ligne_Fonction_NodeId));
+ }
+ if (piece_NatPce.equals("02") && ( !((ligne_Operation.equals("4") || ligne_Operation.equals("040")) && ligne_Fonction.equals("914"))
+ && !((ligne_Operation.equals("5") || ligne_Operation.equals("041")) && ligne_Fonction.equals("910")) )) {
+ err = true;
+ anonodes.add(new Node (ligne_Operation_NodeId));
+ anonodes.add(new Node (ligne_Fonction_NodeId));
+ }
+ }
+//2
+ if ( PAR1.equals("M71") && (piece_TypPce.equals("03") || piece_TypPce.equals("04")) && (PAR2.equals("Nature") || PAR2.equals("Nature-ref-fonct")) ) {
+
+ if (piece_NatPce.equals("01") && !ligne_Operation.equals("6") && !ligne_Operation.equals("042")) {
+ err = true;
+ anonodes.add(new Node (ligne_Operation_NodeId));
+ }
+ if (piece_NatPce.equals("02") && !ligne_Operation.equals("4") && !ligne_Operation.equals("040") && !ligne_Operation.equals("5") && !ligne_Operation.equals("041")) {
+ err = true;
+ anonodes.add(new Node (ligne_Operation_NodeId));
+ }
+ }
+
+ if ( PAR1.equals("M71") && (piece_TypPce.equals("03") || piece_TypPce.equals("04")) && PAR2.equals("Fonction") ) {
+
+ if (piece_NatPce.equals("01") && !((ligne_Operation.equals("6") || ligne_Operation.equals("042")) && ligne_Fonction.equals("934"))) {
+ err = true;
+ anonodes.add(new Node (ligne_Operation_NodeId));
+ anonodes.add(new Node (ligne_Fonction_NodeId));
+ }
+ if (piece_NatPce.equals("02") && ( !((ligne_Operation.equals("4") || ligne_Operation.equals("040")) && ligne_Fonction.equals("914"))
+ && !((ligne_Operation.equals("5") || ligne_Operation.equals("041")) && ligne_Fonction.equals("910")) )) {
+ err = true;
+ anonodes.add(new Node (ligne_Operation_NodeId));
+ anonodes.add(new Node (ligne_Fonction_NodeId));
+ }
+ }
+//3
+ if ( PAR1.equals("M52") && (PAR2.equals("Nature") || PAR2.equals("Nature-ref-fonct")) ) {
+
+ if (piece_NatPce.equals("01") && !ligne_Operation.equals("1") && !ligne_Operation.equals("010") && !ligne_Operation.equals("2") && !ligne_Operation.equals("015") && !ligne_Operation.equals("3") && !ligne_Operation.equals("016")) {
+ err = true;
+ anonodes.add(new Node (ligne_Operation_NodeId));
+ }
+ }
+
+ if ( PAR1.equals("M52") && PAR2.equals("Fonction") ) {
+
+ if (piece_NatPce.equals("01") && ( !(ligne_Operation.equals("4") && ligne_Fonction.equals("905"))
+ && !(ligne_Operation.equals("4") && ligne_Fonction.equals("935"))
+ && !(ligne_Operation.equals("5") && ligne_Fonction.equals("935")) )) {
+ err = true;
+ anonodes.add(new Node (ligne_Operation_NodeId));
+ anonodes.add(new Node (ligne_Fonction_NodeId));
+ }
+ }
+
+ if (err) {
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ String erreur = "Une opération de chapitre d'ordre doit être renseignée ou le paramètre vote par opération doit être sélectionné";
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_PIECE_ID, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNE_IDLIGNE, ligne_IdLigne);
+ msg = msg.replaceAll(MSG_LIGNE_OPE, ligne_Operation);
+ msg = msg.replaceAll(MSG_ERREUR, erreur);
+ String path="@added:primary-key='"+bord_ExerBord+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId","");
+ xslParams.put("mandatId",piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_DEPENSE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+
+ ano.addAll(anonodes);
+ anos.add(ano);
+ }
+
+ return null;
+
+ }
+ else if (xpath.endsWith(ON_RETURN_ANOMALIES)){
+
+ return anos;
+
+ } else {
+ return null;
+ }
+}
+
+
+ public boolean haveToTest(String nomenclature){
+ return (!nomenclature.equals("M52") && !nomenclature.equals("M71"));
+ }
+
+ public void endDocument() throws SAXException {}
+
+ public void characters(char[] ch, int start, int length, String xpath) {}
+
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ public void skippedEntity(String name, String xpath) {}
+
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) {}
+
+}
--- /dev/null
+/*
+ * Copyright
+ * 2007 axYus - www.axyus.com
+ * 2007 JP.Tessier - jean-philippe.tessier@axyus.com
+ *
+ * This file is part of XEMELIOS.
+ *
+ * XEMELIOS is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * XEMELIOS 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
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XEMELIOS; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+package fr.gouv.finances.cp.xemelios.controls.pesv2.dep;
+
+import java.util.GregorianCalendar;
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.dgfip.xemelios.controls.core.AbstractUnitControl;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Anomalie;
+import fr.gouv.finances.dgfip.xemelios.controls.core.IdGenerator;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Node;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+/*
+ * Implémente le contrôle N° DEP01
+ * Il consiste à vérifier la règle fonctionnelle suivante :
+ * Contrôle de l\92exercice du bordereau.
+ * Il est fait ainsi :
+ * 1- Lorsqu'on lit un élément Pes_DepenseAller/BlocBordereau :
+ * - on vérifie que BlocBordereau/Exer/@V vaut N ou N-1
+ */
+public class DEP01 extends AbstractUnitControl implements ConstantsControlsPESv2{
+ private final static Logger logger = Logger.getLogger(DEP01.class);
+ public static final transient String CTRL_ID = "DEP01";
+ private Vector<Anomalie> anos = new Vector<Anomalie>();
+ private Hashtable<String,Object> hParams;
+
+ /**
+ * La balise du document général
+ */
+ private String docId = null;
+ private String nodeId = null;
+
+ /**
+ * La chaine cible
+ */
+ private static final String ON_RETURN_ANOMALIES = "/PES_DepenseAller/Bordereau/";
+ private static final String FIN_BORDEREAU = "/PES_DepenseAller/Bordereau/";
+
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+ private String bord_Exer = "";
+ private String bord_IdBord = "";
+ private String bord_TypBord = "";
+
+ /**
+ * Variables devant être remplacées dans le message
+ */
+ private static final String MSG_BORD_NUM = "#BORD_NUM#";
+ private static final String MSG_BORD_EXER = "#BORD_EXER#";
+ private static final String MSG_BORD_TYPBORD = "#BORD_TYPBORD#";
+
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses uniquement
+ */
+ private static final String CHEMIN_BLOCBORDEREAU = "/PES_DepenseAller/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/PES_DepenseAller/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/PES_DepenseAller/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/PES_DepenseAller/Bordereau/BlocBordereau/TypBord/";
+
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+ }
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+ public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+ // 1
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ bord_Exer = bord_IdBord = "";
+ anos = new Vector<Anomalie>();
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_Exer = atts.getValue("V");
+ nodeId = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ }
+ }
+
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+ if(xpath.endsWith(ON_RETURN_ANOMALIES)){
+ boolean err = false;
+ try {
+ int annee = Integer.parseInt(bord_Exer);
+ GregorianCalendar gc = (GregorianCalendar)GregorianCalendar.getInstance();
+ if (annee == gc.get(GregorianCalendar.YEAR) || annee==(gc.get(GregorianCalendar.YEAR)-1)) err = false;
+ else err = true;
+ } catch (Exception e) { err = true; }
+
+ if (err) {
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_Exer);
+ msg = msg.replaceAll(MSG_BORD_TYPBORD, bord_TypBord);
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "Bordereau");
+ xslParams.put("mandatId", "");
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_DEPENSE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ ano.addNode(new Node(nodeId));
+ anos.add(ano);
+ }
+ return anos;
+ } else {
+ return null;
+ }
+ }
+
+ public void endDocument() throws SAXException {}
+
+ public void characters(char[] ch, int start, int length, String xpath) {}
+
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ public void skippedEntity(String name, String xpath) {}
+
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) {}
+}
--- /dev/null
+/*
+ * Copyright
+ * 2007 axYus - www.axyus.com
+ * 2007 JP.Tessier - jean-philippe.tessier@axyus.com
+ *
+ * This file is part of XEMELIOS.
+ *
+ * XEMELIOS is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * XEMELIOS 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
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XEMELIOS; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+package fr.gouv.finances.cp.xemelios.controls.pesv2.dep;
+
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.dgfip.xemelios.controls.core.AbstractUnitControl;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Anomalie;
+import fr.gouv.finances.dgfip.xemelios.controls.core.IdGenerator;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Node;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+/*
+ * Implémente le contrôle N° DEP02
+ *
+ * Contrôle sur l\92absence de doublon sur le numéro de bordereau
+ *
+ * Le numéro de bordereau ne doit pas être déjà attribué à un bordereau de:
+ * - même budget collectivité.
+ * - même type de bordereau (même séquence).
+ *
+ * Tous les BlocBordereau/IdBord[@V] doivent être différents pour un même BlocBordereau/TypBord[@V]
+ *
+ */
+public class DEP02 extends AbstractUnitControl implements ConstantsControlsPESv2{
+ private final static Logger logger = Logger.getLogger(DEP02.class);
+ public static final transient String CTRL_ID = "DEP02";
+ private Vector<Anomalie> anos = new Vector<Anomalie>();
+ private Hashtable<String,Object> hParams;
+
+ /**
+ * La balise du document général
+ */
+ private String docId = null;
+ private String nodeId = null;
+
+ /**
+ * La chaine cible
+ */
+ private static final String FIN_BORDEREAU = "/PES_DepenseAller/Bordereau/";
+ private static final String ON_RETURN_ANOMALIES = FIN_BORDEREAU;
+
+
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+
+ private String bord_IdBord = "";
+ private String bord_TypBord = "";
+ private String bord_Exer = "";
+ private String bord_NodeIdBord = "";
+ private Hashtable<String,Object> hashIdsBord = new Hashtable<String,Object>();
+
+ /**
+ * Variables devant être remplacées dans le message
+ */
+ private static final String MSG_BORD_NUM = "#BORD_NUM#";
+ private static final String MSG_BORD_EXER = "#BORD_EXER#";
+ private static final String MSG_BORD_TYPBORD = "#BORD_TYPBORD#";
+
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses uniquement
+ */
+ private static final String CHEMIN_BLOCBORDEREAU = "/PES_DepenseAller/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_BORDEREAU = "/PES_DepenseAller/Bordereau/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/PES_DepenseAller/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/PES_DepenseAller/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/PES_DepenseAller/Bordereau/BlocBordereau/TypBord/";
+
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+ }
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+ public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+ // 1
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ anos = new Vector<Anomalie>();
+ }
+ if (xpath.endsWith(CHEMIN_BORDEREAU)) {
+
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_Exer = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BORDEREAU)) {
+ bord_NodeIdBord = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ }
+ }
+
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+ if(xpath.endsWith(ON_RETURN_ANOMALIES)){
+ boolean err = false;
+ try {
+ for(String idbord:hashIdsBord.keySet()){
+ String typbord=hashIdsBord.get(idbord).toString();
+ if(idbord.equals(bord_IdBord) && typbord.equals(bord_TypBord)){
+ err = true;
+ }
+ }
+ } catch (Exception e) { err = true; }
+
+ if (err) {
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_Exer);
+ msg = msg.replaceAll(MSG_BORD_TYPBORD, bord_TypBord);
+ String path="@ano:node-id='"+bord_NodeIdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId","Bordereau");
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_DEPENSE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ ano.addNode(new Node(bord_NodeIdBord));
+ anos.add(ano);
+ }
+ hashIdsBord.put(bord_IdBord,bord_TypBord);
+ return anos;
+ } else {
+ return null;
+ }
+ }
+
+ public void endDocument() throws SAXException {}
+
+ public void characters(char[] ch, int start, int length, String xpath) {}
+
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ public void skippedEntity(String name, String xpath) {}
+
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) {}
+}
--- /dev/null
+/*
+ * Implémente le contrôle N° DEP03
+ *
+ * Contrôle de cohérence des montants du bordereau
+ *
+ * Le montant total, HT et TVA, du bordereau de mandats doit être égal à la somme des montants des mandats, HT et TVA.
+ *
+ * Pour chaque bordereau vérifier que BlocBordereau/MtBordHT[@V] = somme des Piece/LigneDePiece/BlocLignePiece/InfoLignePce/MtHT[@V]
+ *
+ * Pour chaque bordereau vérifier que BlocBordereau/MtBordTVA[@V] = somme des Piece/LigneDePiece/BlocLignePiece/InfoLignePce/MtTVA[@V]
+ * (si MtBordTVA pas renseigné, ne pas faire le test)
+ *
+ */
+package fr.gouv.finances.cp.xemelios.controls.pesv2.dep;
+
+import java.math.BigDecimal;
+import java.text.DecimalFormat;
+import java.util.ArrayList;
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.dgfip.xemelios.controls.core.AbstractUnitControl;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Anomalie;
+import fr.gouv.finances.dgfip.xemelios.controls.core.IdGenerator;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Node;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+public class DEP03 extends AbstractUnitControl implements ConstantsControlsPESv2{
+ private final static Logger logger = Logger.getLogger(DEP03.class);
+ public static final transient String CTRL_ID = "DEP03";
+ private Vector<Anomalie> anos = new Vector<Anomalie>();
+ private Hashtable<String,Object> hParams;
+
+ /**
+ * La balise du document général
+ */
+ private String docId = null;
+ private ArrayList<Node> nodesId = new ArrayList<Node>();
+
+ /**
+ * La chaine cible
+ */
+ private static final String FIN_BORDEREAU = "/PES_DepenseAller/Bordereau/";
+ private static final String ON_RETURN_ANOMALIES = FIN_BORDEREAU;
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+ private String bord_ExerBord;
+ private String bord_IdBord;
+ private String bord_TypBord;
+ private BigDecimal bord_MtBordHT;
+ private BigDecimal bord_MtBordTVA;
+ private BigDecimal bord_NodeIdBord;
+
+ private static final String KEY_HASHTABLE_MT_HT = "MTBORDHT";
+ private static final String KEY_HASHTABLE_MT_TVA = "MTBORDTVA";
+ private static final String BALISE_MT_HT_PIECE = "MtHT";
+ private static final String BALISE_MT_TVA_PIECE = "MtTVA";
+ private static boolean CTRL_TVA = false;
+ private static DecimalFormat df;
+
+ private Hashtable<String,BigDecimal> hashMtsBord = new Hashtable<String,BigDecimal>();
+
+ /**
+ * Variables devant être remplacées dans le message
+ */
+ private static final String MSG_BORD_NUM = "#BORD_NUM#";
+ private static final String MSG_BORD_EXER = "#BORD_EXER#";
+ private static final String MSG_BORD_TYPEBORD = "#BORD_TYPE#";
+ private static final String MSG_BORD_MTHT = "#BORD_MT_HT#";
+ private static final String MSG_BORD_SOMMEHTPIECE = "#BORD_SOMME_HT_PIECE#";
+ private static final String MSG_BORD_MTTVA = "#BORD_MT_TVA#";
+ private static final String MSG_BORD_SOMMETVAPIECE = "#BORD_SOMME_TVA_PIECE#";
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses uniquement
+ */
+ private static final String CHEMIN_BLOCBORDEREAU = "/PES_DepenseAller/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_BORDEREAU = "/PES_DepenseAller/Bordereau/";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/PES_DepenseAller/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/PES_DepenseAller/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/PES_DepenseAller/Bordereau/BlocBordereau/TypBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_MTHTBORD = "/PES_DepenseAller/Bordereau/BlocBordereau/MtBordHT/";
+ private static final String CHEMIN_BLOCBORDEREAU_MTHTPIECE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/MtHT/";
+ private static final String CHEMIN_BLOCBORDEREAU_MTTVABORD = "/PES_DepenseAller/Bordereau/BlocBordereau/MtBordTVA/";
+ private static final String CHEMIN_BLOCBORDEREAU_MTTVAPIECE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/MtTVA/";
+
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+ df = new DecimalFormat("############0.00");
+ if(Boolean.parseBoolean(hParams.get("coltva").toString())){
+ CTRL_TVA=true;
+ }
+ }
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+ public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+ // 1
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ anos = new Vector<Anomalie>();
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_MTHTBORD) || xpath.endsWith(CHEMIN_BLOCBORDEREAU_MTHTPIECE) ||
+ xpath.endsWith(CHEMIN_BLOCBORDEREAU_MTTVABORD) || xpath.endsWith(CHEMIN_BLOCBORDEREAU_MTTVAPIECE)) {
+ nodesId.add(new Node(atts.getValue("ano:node-id")));
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_ExerBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_MTHTBORD)) {
+ try {
+ bord_MtBordHT = new BigDecimal(atts.getValue("V"));
+ }catch(Exception ex) {}
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_MTTVABORD)) {
+ try {
+ bord_MtBordTVA = new BigDecimal(atts.getValue("V"));
+ }catch(Exception ex) {}
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_MTHTPIECE)) {
+ if(hashMtsBord.get(BALISE_MT_HT_PIECE)!=null){
+ try{
+ BigDecimal oldValue = hashMtsBord.get(BALISE_MT_HT_PIECE);
+ BigDecimal newValue = new BigDecimal(atts.getValue("V")).add(oldValue);
+ hashMtsBord.put(BALISE_MT_HT_PIECE,newValue);
+ }catch (NumberFormatException nfe){
+ nfe.printStackTrace();
+ logger.debug("Pb de parsing de float dans DEP03.");
+ }
+ }else{
+ BigDecimal value = new BigDecimal(atts.getValue("V"));
+ hashMtsBord.put(BALISE_MT_HT_PIECE,value);
+ }
+ }
+ if(CTRL_TVA){
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_MTTVAPIECE)) {
+ if(hashMtsBord.get(BALISE_MT_TVA_PIECE)!=null){
+ try{
+ BigDecimal oldValue = hashMtsBord.get(BALISE_MT_TVA_PIECE);
+ BigDecimal newValue = new BigDecimal(atts.getValue("V")).add(oldValue);
+ hashMtsBord.put(BALISE_MT_TVA_PIECE,newValue);
+ }catch (NumberFormatException nfe){
+ nfe.printStackTrace();
+ logger.debug("Pb de parsing de float dans DEP03.");
+ }
+ }else{
+ BigDecimal value = new BigDecimal(atts.getValue("V"));
+ hashMtsBord.put(BALISE_MT_TVA_PIECE,value);
+ }
+ }
+ }
+ }
+
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+ if(xpath.endsWith(ON_RETURN_ANOMALIES)){
+ // Vérification d'un mt tva de bordereeau
+ if(CTRL_TVA){
+ if(hashMtsBord.get(BALISE_MT_TVA_PIECE)!=null && bord_MtBordHT!=null && bord_MtBordTVA!=null && hashMtsBord.get(BALISE_MT_HT_PIECE)!=null){
+ if ((!hashMtsBord.get(BALISE_MT_HT_PIECE).equals(bord_MtBordHT))
+ || (!hashMtsBord.get(BALISE_MT_TVA_PIECE).equals(bord_MtBordTVA))) {
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_ExerBord);
+ msg = msg.replaceAll(MSG_BORD_TYPEBORD, bord_TypBord);
+ msg = msg.replaceAll(MSG_BORD_MTHT, (bord_MtBordHT!=null? bord_MtBordHT.toString() : ""));
+ msg = msg.replaceAll(MSG_BORD_MTTVA, (bord_MtBordTVA!=null ? bord_MtBordTVA.toString():""));
+ msg = msg.replaceAll(MSG_BORD_SOMMEHTPIECE, hashMtsBord.get(BALISE_MT_HT_PIECE).toString());
+ msg = msg.replaceAll(MSG_BORD_SOMMETVAPIECE, hashMtsBord.get(BALISE_MT_TVA_PIECE).toString());
+ String path="@added:primary-key='"+bord_ExerBord+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId","Bordereau");
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ "BordereauDepense", // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ ano.addAll(nodesId);
+ anos.add(ano);
+ }
+ }else{
+ if (!(hashMtsBord.get(BALISE_MT_HT_PIECE).equals(bord_MtBordHT))) {
+
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_ExerBord);
+ msg = msg.replaceAll(MSG_BORD_TYPEBORD, bord_TypBord);
+ msg = msg.replaceAll(MSG_BORD_MTHT, (bord_MtBordHT!=null?bord_MtBordHT.toString():""));
+ msg = msg.replaceAll(MSG_BORD_MTTVA, (bord_MtBordTVA!=null ? bord_MtBordTVA.toString():""));
+ msg = msg.replaceAll(MSG_BORD_SOMMEHTPIECE, hashMtsBord.get(BALISE_MT_HT_PIECE).toString());
+ msg = msg.replaceAll(MSG_BORD_SOMMETVAPIECE, "");
+ String path="@added:primary-key='"+bord_ExerBord+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId","Bordereau");
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ "BordereauDepense", // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ ano.addAll(nodesId);
+ anos.add(ano);
+ }
+ }
+ }else{
+ if (!(hashMtsBord.get(BALISE_MT_HT_PIECE).equals(bord_MtBordHT))) {
+
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_ExerBord);
+ msg = msg.replaceAll(MSG_BORD_TYPEBORD, bord_TypBord);
+ msg = msg.replaceAll(MSG_BORD_MTHT, (bord_MtBordHT!=null?bord_MtBordHT.toString():""));
+ msg = msg.replaceAll(MSG_BORD_MTTVA, (bord_MtBordTVA!=null?bord_MtBordTVA.toString():""));
+ msg = msg.replaceAll(MSG_BORD_SOMMEHTPIECE, new BigDecimal(hashMtsBord.get(BALISE_MT_HT_PIECE).toString()).toString());
+ msg = msg.replaceAll(MSG_BORD_SOMMETVAPIECE, "");
+ String path="@added:primary-key='"+bord_ExerBord+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId","Bordereau");
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ "BordereauDepense", // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ ano.addAll(nodesId);
+ anos.add(ano);
+ }
+ }
+ hashMtsBord.clear();
+ nodesId.clear();
+ return anos;
+ } else {
+ return null;
+ }
+ }
+
+ public void endDocument() throws SAXException {}
+
+ public void characters(char[] ch, int start, int length, String xpath) {}
+
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ public void skippedEntity(String name, String xpath) {}
+
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) {}
+}
--- /dev/null
+/*
+ * Implémente le contrôle N° DEP04
+ * Il consiste à vérifier la règle fonctionnelle suivante :
+ * Contrôle des montants.
+ * Il est fait ainsi :
+ * 1- Lorsqu'on lit un élément BlocBordereau :
+ * - on vide BlocBordereau/Exer/@V, BlocBordereau/IdBord/@V, BlocBordereau/Typbord/@V, BlocBordereau/MtBordHT/@V, BlocBordereau/MtBordTVA/@V.
+ * - on stocke BlocBordereau/Exer/@V, BlocBordereau/IdBord/@V, BlocBordereau/Typbord/@V, BlocBordereau/MtBordHT/@V, BlocBordereau/MtBordTVA/@V.
+ * 2- Lorsqu'on lit un élément BlocPiece :
+ * - on vide BlocPiece/IdPce/@V.
+ * - on stocke BlocPiece/IdPce/@V.
+ * 3- Lorsqu'on lit un élément InfoLignePiece :
+ * - on vide InfoLignePiece/IdLigne/@V, InfoLignePiece/MtHT/@V, InfoLignePiece/MtTVA/@V.
+ * - on stocke InfoLignePiece/IdLigne/@V, InfoLignePiece/MtHT/@V, InfoLignePiece/MtTVA/@V.
+ * 4- Lorsqu'on lit une fin d'élément BlocBordereau :
+ * - on vérifie que BlocBordereau/MtBordHT/@V et BlocBordereau/MtBordTVA/@V. est positif.
+ * 5- Lorsqu'on lit une fin d'élément InfoLignePiece :
+ * - on vérifie que InfoLignePiece/MtHT/@V et InfoLignePiece/MtTVA/@V est positif.
+ *
+ *
+ * !!!! Attention !!!!
+ * Le message de ce contrôle est double. Selon le cas, nous avons besoin de deux messages différents.
+ * Ainsi les deux messages sont concaténés et séparés par le caractère '|'
+ */
+package fr.gouv.finances.cp.xemelios.controls.pesv2.dep;
+
+import java.util.Hashtable;
+import java.util.StringTokenizer;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.dgfip.xemelios.controls.core.AbstractUnitControl;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Anomalie;
+import fr.gouv.finances.dgfip.xemelios.controls.core.IdGenerator;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Node;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+public class DEP04 extends AbstractUnitControl implements ConstantsControlsPESv2{
+ private final static Logger logger = Logger.getLogger(DEP04.class);
+ public static final transient String CTRL_ID="DEP04";
+ private Vector<Anomalie> anos = new Vector<Anomalie>();
+ private Hashtable<String,Object> hParams;
+
+ /**
+ * La balise du document général
+ */
+ private String docId = null;
+ private String bord_nodeId = null;
+ private String ligne_nodeId = null;
+
+ /**
+ * La chaine cible
+ */
+ private static final String ON_RETURN_ANOMALIES = "/PES_DepenseAller/Bordereau/";
+ private static final String FIN_BORDEREAU = ON_RETURN_ANOMALIES;
+ private static final String FIN_LIGNEPIECE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/";
+
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+ private String bord_Exer = "";
+ private String bord_IdBord = "";
+ private String bord_TypBord = "";
+ private String bord_Mtht = "";
+ private String bord_Mttva = "";
+ private String bord_Mtht_nodeid = "";
+ private String bord_Mttva_nodeid = "";
+ private String piece_IdPce = "";
+ private String ligne_IdLigne = "";
+ private String ligne_Mtht = "";
+ private String ligne_Mttva = "";
+ private String ligne_Mtht_nodeid = "";
+ private String ligne_Mttva_nodeid = "";
+
+ /**
+ * Variables devant être remplacées dans le message
+ */
+ private static final String MSG_BORD_NUM = "#BORD_NUM#";
+ private static final String MSG_BORD_EXER = "#BORD_EXER#";
+ private static final String MSG_BORD_TYPBORD = "#BORD_TYPBORD#";
+ private static final String MSG_BORD_MTHT = "#BORD_MTHT#";
+ private static final String MSG_BORD_MTTVA = "#BORD_MTTVA#";
+ private static final String MSG_PIECE_IDPCE = "#PIECE_IDPCE#";
+ private static final String MSG_LIGNE_IDLIGNE = "#LIGNE_IDLIGNE#";
+ private static final String MSG_LIGNE_MTHT = "#LIGNE_MTHT#";
+ private static final String MSG_LIGNE_MTTVA = "#LIGNE_MTTVA#";
+
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses uniquement
+ */
+ private static final String CHEMIN_BLOCBORDEREAU = "/PES_DepenseAller/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/PES_DepenseAller/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/PES_DepenseAller/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/PES_DepenseAller/Bordereau/BlocBordereau/TypBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_MTBORDHT = "/PES_DepenseAller/Bordereau/BlocBordereau/MtBordHT/";
+ private static final String CHEMIN_BLOCBORDEREAU_MTBORDTVA = "/PES_DepenseAller/Bordereau/BlocBordereau/MtBordTVA/";
+
+ private static final String CHEMIN_BLOCPIECE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/";
+ private static final String CHEMIN_BLOCPIECE_IDPCE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/InfoPce/IdPce/";
+
+ private static final String CHEMIN_INFOLIGNEPIECE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/";
+ private static final String CHEMIN_INFOLIGNEPIECE_IDLIGNE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/IdLigne/";
+ private static final String CHEMIN_INFOLIGNEPIECE_MTHT = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/MtHT/";
+ private static final String CHEMIN_INFOLIGNEPIECE_MTTVA = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/MtTVA/";
+
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+ }
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+ public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+ // 1
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ bord_Exer = bord_IdBord = bord_TypBord = bord_Mtht = bord_Mttva = "";
+ bord_nodeId = atts.getValue("ano:node-id");
+ anos = new Vector<Anomalie>();
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_Exer = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_MTBORDHT)) {
+ bord_Mtht = atts.getValue("V");
+ bord_Mtht_nodeid = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_MTBORDTVA)) {
+ bord_Mttva = atts.getValue("V");
+ bord_Mttva_nodeid = atts.getValue("ano:node-id");
+ }
+
+ // 2
+ if (xpath.endsWith(CHEMIN_BLOCPIECE)) {
+ piece_IdPce = "";
+ }
+ if (xpath.endsWith(CHEMIN_BLOCPIECE_IDPCE)) {
+ piece_IdPce = atts.getValue("V");
+ }
+
+ // 3
+ if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE)) {
+ ligne_IdLigne = ligne_Mtht = ligne_Mttva = "";
+ ligne_nodeId = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE_IDLIGNE)) {
+ ligne_IdLigne = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE_MTHT)) {
+ ligne_Mtht = atts.getValue("V");
+ ligne_Mtht_nodeid = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE_MTTVA)) {
+ ligne_Mttva = atts.getValue("V");
+ ligne_Mttva_nodeid = atts.getValue("ano:node-id");
+ }
+ }
+
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+ if(xpath.endsWith(ON_RETURN_ANOMALIES)){
+ return anos;
+ } else if (FIN_BORDEREAU.equals(localName)){
+ boolean err = false;
+ Vector<Node> anonodes = new Vector<Node>();
+ try {
+ if (bord_Mtht!=null && !"".equals(bord_Mtht)) {
+ double mtHT = Double.parseDouble(bord_Mtht);
+ if (mtHT > 0) {}else{err = true; anonodes.add(new Node (bord_Mtht_nodeid)); }
+ }
+ if (bord_Mttva!=null && !"".equals(bord_Mttva)) {
+ double mtTVA = Double.parseDouble(bord_Mttva);
+ if (mtTVA > 0) {}else{err = true; anonodes.add(new Node (bord_Mttva_nodeid)); }
+ }
+ } catch (Exception e) { err = true; }
+
+ if (err) {
+ StringTokenizer st = new StringTokenizer (getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent(), "|");
+ String msg = st.nextToken();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_Exer);
+ msg = msg.replaceAll(MSG_BORD_TYPBORD, bord_TypBord);
+ msg = msg.replaceAll(MSG_BORD_MTHT, bord_Mtht);
+ msg = msg.replaceAll(MSG_BORD_MTTVA, bord_Mttva);
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "Bordereau");
+ xslParams.put("mandatId", "");
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_DEPENSE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ ano.addAll(anonodes);
+ anos.add(ano);
+ }
+ return null;
+ } else if (xpath.endsWith(FIN_LIGNEPIECE)){
+ boolean err = false;
+ Vector<Node> anonodes = new Vector<Node>();
+ try {
+ if (ligne_Mtht!=null && !"".equals(ligne_Mtht)) {
+ double mtHT = Double.parseDouble(ligne_Mtht);
+ if (mtHT > 0) {}else{err = true; anonodes.add(new Node (ligne_Mtht_nodeid)); }
+ }
+ if (ligne_Mttva!=null && !"".equals(ligne_Mttva)) {
+ double mtTVA = Double.parseDouble(ligne_Mttva);
+ if (mtTVA > 0) {}else{err = true; anonodes.add(new Node (ligne_Mttva_nodeid)); }
+ }
+ } catch (Exception e) { err = true; }
+
+ if (err) {
+ StringTokenizer st = new StringTokenizer (getDocumentModel().getControlById(CTRL_ID).getMessage().getContent(), "|");
+ st.nextToken();
+ String msg = st.nextToken();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_Exer);
+ msg = msg.replaceAll(MSG_BORD_TYPBORD, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_IDPCE, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNE_IDLIGNE, ligne_IdLigne);
+ msg = msg.replaceAll(MSG_LIGNE_MTHT, ligne_Mtht);
+ msg = msg.replaceAll(MSG_LIGNE_MTTVA, ligne_Mttva);
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "");
+ xslParams.put("mandatId", piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_DEPENSE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ ano.addAll(anonodes);
+ anos.add(ano);
+ }
+ return null;
+ } else {
+ return null;
+ }
+ }
+
+ public void endDocument() throws SAXException {}
+
+ public void characters(char[] ch, int start, int length, String xpath) {}
+
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ public void skippedEntity(String name, String xpath) {}
+
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) {}
+}
--- /dev/null
+/*
+ * Implémente le contrôle N° DEP05
+ *
+ * Contrôle de l\92absence de doublon sur le numéro de pièce
+ *
+ * Il ne doit pas y avoir de doublons sur le numéro de la pièce.
+ *
+ * Tous les Piece/BlocPiece/InfoPce/IdPce[@V] doivent être différents pour un même BlocBordereau/Exer[@V] et même BlocBordereau/TypBord[@V]
+ *
+ */
+package fr.gouv.finances.cp.xemelios.controls.pesv2.dep;
+
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.dgfip.utils.Pair;
+import fr.gouv.finances.dgfip.xemelios.controls.core.AbstractUnitControl;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Anomalie;
+import fr.gouv.finances.dgfip.xemelios.controls.core.IdGenerator;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Node;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+public class DEP05 extends AbstractUnitControl implements ConstantsControlsPESv2{
+ private final static Logger logger = Logger.getLogger(DEP05.class);
+ public static final transient String CTRL_ID = "DEP05";
+ private Vector<Anomalie> anos = new Vector<Anomalie>();
+ private Hashtable<String,Object> hParams;
+
+ /**
+ * La balise du document général
+ */
+ private String docId = null;
+ private String nodeId = null;
+
+ /**
+ * La chaine cible
+ */
+ private static final String FIN_BORDEREAU = "/PES_DepenseAller/Bordereau/";
+ private static final String FIN_INFOPCE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/InfoPce/";
+ private static final String ON_RETURN_ANOMALIES = FIN_BORDEREAU;
+
+
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+
+ private String bord_IdBord = "";
+ private String bord_ExerBord = "";
+ private String bord_TypBord = "";
+ private String piece_IdPce = "";
+ private String piece_NodeIdPce = "";
+ private Hashtable<String,Pair> hashIdsPiece = new Hashtable<String,Pair>();
+ private Vector<Quadruplet> vIdsPiece= new Vector<Quadruplet>();// stockage des id de piece en defaut
+ private Vector<Node> anonodes = new Vector<Node>();
+ /**
+ * Variables devant être remplacées dans le message
+ */
+ private static final String MSG_BORD_NUM = "#BORD_NUM#";
+ private static final String MSG_BORD_EXER = "#BORD_EXER#";
+ private static final String MSG_BORD_TYPE = "#BORD_TYPBORD#";
+ private static final String MSG_PIECE_ID = "#PIECE_IDPCE#";
+
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses uniquement
+ */
+ private static final String CHEMIN_BLOCBORDEREAU = "/PES_DepenseAller/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_BORDEREAU = "/PES_DepenseAller/Bordereau/";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/PES_DepenseAller/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/PES_DepenseAller/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/PES_DepenseAller/Bordereau/BlocBordereau/TypBord/";
+ private static final String CHEMIN_BLOCPIECE_IDPIECE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/InfoPce/IdPce/";
+
+
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+ }
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+ public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+ // 1
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ anos = new Vector<Anomalie>();
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_ExerBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ }
+ if(xpath.endsWith(CHEMIN_BLOCPIECE_IDPIECE)){
+ piece_IdPce=atts.getValue("V");
+ piece_NodeIdPce=atts.getValue("ano:node-id");
+
+ for(String idpce:hashIdsPiece.keySet()){
+ String exerbord=hashIdsPiece.get(idpce).key;
+ String typbord=hashIdsPiece.get(idpce).libelle;
+ if(idpce.equals(piece_IdPce) && typbord.equals(bord_TypBord) && exerbord.equals(bord_ExerBord)){
+ vIdsPiece.add(new Quadruplet(bord_ExerBord,bord_TypBord,bord_IdBord,piece_IdPce));
+ anonodes.add(new Node(piece_NodeIdPce));
+ }
+ }
+ }
+ }
+
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+ if(xpath.endsWith(FIN_INFOPCE)){
+ hashIdsPiece.put(piece_IdPce,new Pair(bord_ExerBord,bord_TypBord));
+ return null;
+ }else if(xpath.endsWith(ON_RETURN_ANOMALIES)){
+ for(Quadruplet quadruplet:vIdsPiece){
+ String idPce=quadruplet.idPiece;
+ String idBord=quadruplet.idbordereau;
+ if (bord_IdBord.equals(idBord)){
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_ExerBord);
+ msg = msg.replaceAll(MSG_BORD_TYPE, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_ID, idPce);
+ String path="@added:primary-key='"+bord_ExerBord+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+idPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId","Bordereau");
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_DEPENSE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ for(Node node:anonodes){
+ ano.addNode(node);
+ }
+ anos.add(ano);
+ }
+ }
+ anonodes.clear();
+ return anos;
+ } else {
+ return null;
+ }
+ }
+
+ public void endDocument() throws SAXException {}
+
+ public void characters(char[] ch, int start, int length, String xpath) {}
+
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ public void skippedEntity(String name, String xpath) {}
+
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+ public void setDocumentLocator(Locator locator) {}
+
+ private class Quadruplet{
+ private String exercice,typbordereau,idbordereau,idPiece;
+ private Quadruplet(String exercice,String typbordereau,String idbordereau,String idPiece){
+ this.exercice=exercice;
+ this.typbordereau=typbordereau;
+ this.idbordereau=idbordereau;
+ this.idPiece=idPiece;
+ }
+ }
+}
--- /dev/null
+/*
+ * Implémente le contrôle N° DEP06
+ *
+ * Contrôle de cohérence entre le type de bordereau et les couples (type, nature)
+ *
+ * Le triplet Type de bordereau / Nature du mandat / Type du mandat doit être cohérent
+ *
+ */
+package fr.gouv.finances.cp.xemelios.controls.pesv2.dep;
+
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.dgfip.xemelios.controls.core.AbstractUnitControl;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Anomalie;
+import fr.gouv.finances.dgfip.xemelios.controls.core.IdGenerator;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Node;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+public class DEP06 extends AbstractUnitControl implements ConstantsControlsPESv2{
+ private final static Logger logger = Logger.getLogger(DEP06.class);
+ public static final transient String CTRL_ID = "DEP06";
+ private Vector<Anomalie> anos = new Vector<Anomalie>();
+ private Hashtable<String,Object> hParams;
+
+ /**
+ * La balise du document général
+ */
+ private String docId = null;
+ private String nodeId = null;
+
+ /**
+ * La chaine cible
+ */
+ private static final String FIN_BORDEREAU = "/PES_DepenseAller/Bordereau/";
+ private static final String FIN_INFOPCE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/InfoPce/";
+ private static final String ON_RETURN_ANOMALIES = FIN_BORDEREAU;
+
+
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+
+ private String bord_IdBord = "";
+ private String bord_ExerBord = "";
+ private String bord_TypBord = "";
+ private String piece_IdPce = "";
+ private String piece_NatPce = "";
+ private String piece_TypPce = "";
+ private String piece_NodeIdPce = "";
+
+ private String piece_NodeIdNatPce = "";
+ private String piece_NodeIdTypPce = "";
+ private String bord_NodeIdTypBord = "";
+
+ private Vector<Node> vNodeId = new Vector<Node>();
+
+ private Vector<String> listePossible = new Vector<String>();
+
+ /**
+ * Variables devant être remplacées dans le message
+ */
+ private static final String MSG_BORD_NUM = "#BORD_NUM#";
+ private static final String MSG_BORD_EXER = "#BORD_EXER#";
+ private static final String MSG_BORD_TYPE = "#BORD_TYPBORD#";
+ private static final String MSG_PIECE_ID = "#PIECE_IDPCE#";
+ private static final String MSG_PIECE_TYP = "#PIECE_TYPPCE#";
+ private static final String MSG_PIECE_NAT = "#PIECE_NATPCE#";
+
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses uniquement
+ */
+ private static final String CHEMIN_BLOCBORDEREAU = "/PES_DepenseAller/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/PES_DepenseAller/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/PES_DepenseAller/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCPIECE_IDPIECE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/InfoPce/IdPce/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/PES_DepenseAller/Bordereau/BlocBordereau/TypBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPPCE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/InfoPce/TypPce/";
+ private static final String CHEMIN_BLOCBORDEREAU_NATPCE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/InfoPce/NatPce/";
+
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+
+ // 59 clés possibles
+ //listePossible.add( NaturePce , TypePce , TypeBoredereau );
+ // 01
+ listePossible.add("01/01/01");listePossible.add("01/03/01");listePossible.add("01/04/01");listePossible.add("01/05/01");
+ listePossible.add("01/06/01");listePossible.add("01/07/01");listePossible.add("01/08/01");listePossible.add("01/09/01");
+ listePossible.add("01/10/01");listePossible.add("01/11/03");listePossible.add("01/13/01");
+ // 02
+ listePossible.add("02/01/01");listePossible.add("02/03/01");listePossible.add("02/04/01");listePossible.add("02/05/01");
+ listePossible.add("02/08/01");listePossible.add("02/09/01");listePossible.add("02/10/01");listePossible.add("02/11/03");
+ // 03
+ listePossible.add("03/01/01");listePossible.add("03/03/01");listePossible.add("03/04/01");listePossible.add("03/05/01");
+ listePossible.add("03/10/01");
+ // 04
+ listePossible.add("04/01/01");listePossible.add("01/03/01");listePossible.add("04/04/01");listePossible.add("04/05/01");
+ listePossible.add("04/06/01");listePossible.add("01/10/01");
+ // 05
+ listePossible.add("05/01/01");listePossible.add("05/05/01");listePossible.add("05/10/01");
+ // 06
+ listePossible.add("06/02/02");listePossible.add("06/04/02");listePossible.add("06/13/02");
+ // 07
+ listePossible.add("07/02/01");listePossible.add("07/05/01");
+ // 08
+ listePossible.add("08/02/01");
+ // 09
+ listePossible.add("09/02/01");
+ // 10
+ listePossible.add("10/02/02");
+ // 11
+ listePossible.add("11/01/01");listePossible.add("11/08/01");listePossible.add("11/10/01");
+ // 12
+ listePossible.add("12/09/01");
+ // 13
+ listePossible.add("13/09/01");
+ // 18
+ listePossible.add("18/03/01");
+ // 14
+ listePossible.add("14/09/01");listePossible.add("14/11/03");
+ // 15
+//FA 68 - on supprime les NatPce=15
+// listePossible.add("15/01/01");listePossible.add("15/03/01");listePossible.add("15/04/01");listePossible.add("15/05/01");
+// listePossible.add("15/06/01");listePossible.add("15/07/01");listePossible.add("15/08/01");listePossible.add("15/09/01");
+// listePossible.add("15/10/01");listePossible.add("15/11/03");
+ }
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+ public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+ // 1
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ //anos = new Vector<Anomalie>();
+ anos.clear();
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_ExerBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ bord_NodeIdTypBord = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCPIECE_IDPIECE)) {
+ piece_IdPce = atts.getValue("V");
+ piece_NodeIdPce = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPPCE)) {
+ piece_TypPce = atts.getValue("V");
+ piece_NodeIdTypPce = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_NATPCE)) {
+ piece_NatPce = atts.getValue("V");
+ piece_NodeIdNatPce = atts.getValue("ano:node-id");
+ }
+ }
+
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+ if(xpath.endsWith(FIN_INFOPCE)){
+ if(!(listePossible.contains(piece_NatPce+"/"+piece_TypPce+"/"+bord_TypBord)) || piece_NatPce.equals("15")){
+
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_ExerBord);
+ msg = msg.replaceAll(MSG_BORD_TYPE, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_ID, piece_IdPce);
+ msg = msg.replaceAll(MSG_PIECE_TYP, piece_TypPce);
+ msg = msg.replaceAll(MSG_PIECE_NAT, piece_NatPce);
+ String path="@added:primary-key='"+bord_ExerBord+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId","Bordereau");
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_DEPENSE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ ano.addNode(new Node(piece_NodeIdNatPce));
+ ano.addNode(new Node(piece_NodeIdTypPce));
+ ano.addNode(new Node(bord_NodeIdTypBord));
+ anos.add(ano);
+ }
+ return null;
+ }else if(xpath.endsWith(ON_RETURN_ANOMALIES)){
+ return anos;
+ } else {
+ return null;
+ }
+ }
+
+ public void endDocument() throws SAXException {}
+
+ public void characters(char[] ch, int start, int length, String xpath) {}
+
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ public void skippedEntity(String name, String xpath) {}
+
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) {}
+}
--- /dev/null
+/*
+ * Implémente le contrôle N° DEP07
+ *
+ * Règle de valorisation de la Nature de la pièce
+ *
+ * 1- Pour les nomenclatures M14 -M21 -M52 -M61 - M31 - M71, si le type de la pièce est ordre mixte, le compte de tiers est seul vérifié.
+ * 2- SI
+ * au moins une ligne du mandat contient un compte par nature typé \91Paie\92 (64*, 621*, 631*, 633*, 6531*), ALORS la nature du mandat doit être valorisé à \91Paie\92.
+ * SINON
+ * SI
+ * la première ligne du mandat contient une référence Régie ALORS la nature du mandat doit être valorisé à \91Régie\92.
+ *
+ */
+package fr.gouv.finances.cp.xemelios.controls.pesv2.dep;
+
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.dgfip.xemelios.controls.core.AbstractUnitControl;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Anomalie;
+import fr.gouv.finances.dgfip.xemelios.controls.core.IdGenerator;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Node;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+public class DEP07 extends AbstractUnitControl implements ConstantsControlsPESv2{
+ private final static Logger logger = Logger.getLogger(DEP07.class);
+ public static final transient String CTRL_ID = "DEP07";
+ private Vector<Anomalie> anos = new Vector<Anomalie>();
+ private Hashtable<String,Object> hParams;
+
+ /**
+ * La balise du document général
+ */
+ private String docId = null;
+ private String nodeId = null;
+
+ /**
+ * La chaine cible
+ */
+ private static final String FIN_BORDEREAU = "/PES_DepenseAller/Bordereau/";
+ private static final String FIN_LIGNEPCE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/";
+ private static final String ON_RETURN_ANOMALIES = "/PES_DepenseAller/Bordereau/Piece/";
+
+
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+
+ private String bord_IdBord = "";
+ private String bord_ExerBord = "";
+ private String bord_TypBord = "";
+ private String piece_IdPce = "";
+ private String piece_NatPce = "";
+ private String piece_TypPce = "";
+
+ private String piece_NodeIdNatPce = "";
+
+ private String ligneDePiece_Nature = "";
+ private String ligneDePiece_Regie = "";
+ private String ligneDePiece_NodeIdRegie = "";
+ private String ligneDePiece_FirstNodeIdRegie = "";
+ private String ligneDePiece_NodeIdNomTiers = "";
+ private static int cptNbRegie = 0;
+
+ private Vector<String> vligneDePiece_NodeIdNature64;
+
+ private static String code_Nomenclature = "";
+ private static boolean blocTiersExist = false;
+ private static boolean ligneDePieceNatureBegin64 = false;
+ private static boolean oneLigneDePieceRegie = false;
+
+ private Vector<String> listePossible = new Vector<String>();
+
+ /**
+ * Variables devant être remplacées dans le message
+ */
+ private static final String MSG_BORD_NUM = "#BORD_NUM#";
+ private static final String MSG_BORD_EXER = "#BORD_EXER#";
+ private static final String MSG_BORD_TYPE = "#BORD_TYPBORD#";
+ private static final String MSG_PIECE_ID = "#PIECE_IDPCE#";
+ private static final String MSG_PIECE_TYP = "#PIECE_TYPPCE#";
+ private static final String MSG_PIECE_NAT = "#PIECE_NATPCE#";
+
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses uniquement
+ */
+ private static final String CHEMIN_BLOCBORDEREAU = "/PES_DepenseAller/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/PES_DepenseAller/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/PES_DepenseAller/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_TIERS = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/Tiers/";
+ private static final String CHEMIN_TIERS_NOM = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/Tiers/InfoTiers/Nom/";
+ private static final String CHEMIN_BLOCPIECE_IDPIECE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/InfoPce/IdPce/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/PES_DepenseAller/Bordereau/BlocBordereau/TypBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPPCE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/InfoPce/TypPce/";
+ private static final String CHEMIN_BLOCBORDEREAU_NATPCE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/InfoPce/NatPce/";
+
+ private static final String CHEMIN_LIGNEDEPIECE_NATURE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/Nature/";
+ private static final String CHEMIN_LIGNEDEPIECE_REGIE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/LiensIdent/IdRegie/";
+
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+ code_Nomenclature=hParams.get("nomencl").toString();
+ vligneDePiece_NodeIdNature64 = new Vector<String>();
+
+ listePossible.add("M4");listePossible.add("M14");listePossible.add("M21");listePossible.add("M52");
+ listePossible.add("M61");listePossible.add("M31");listePossible.add("M71");
+ }
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+ public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+ // 1
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ //anos = new Vector<Anomalie>();
+ //anos.clear();
+ }
+ if(xpath.endsWith(CHEMIN_TIERS)){
+ blocTiersExist=true;
+ }
+ if(xpath.endsWith(CHEMIN_TIERS_NOM)){
+ ligneDePiece_NodeIdNomTiers=atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_ExerBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCPIECE_IDPIECE)) {
+ anos.clear();
+ piece_IdPce = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPPCE)) {
+ piece_TypPce = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_NATPCE)) {
+ piece_NatPce = atts.getValue("V");
+ piece_NodeIdNatPce = atts.getValue("ano:node-id");
+ }
+ if(xpath.endsWith(CHEMIN_LIGNEDEPIECE_NATURE)){
+ ligneDePiece_Regie="";
+ ligneDePiece_Nature=atts.getValue("V");
+ if(ligneDePiece_Nature.matches("64.*")
+ || ligneDePiece_Nature.matches("621.*")
+ || ligneDePiece_Nature.matches("631.*")
+ || ligneDePiece_Nature.matches("633.*")
+ || ligneDePiece_Nature.matches("6531.*")) {
+ vligneDePiece_NodeIdNature64.add(atts.getValue("ano:node-id"));
+ }
+ }
+ if(xpath.endsWith(CHEMIN_LIGNEDEPIECE_REGIE)&&!oneLigneDePieceRegie){
+
+ oneLigneDePieceRegie=true;
+
+ cptNbRegie++;
+ if(cptNbRegie==1){
+ ligneDePiece_FirstNodeIdRegie=atts.getValue("ano:node-id");;
+ }
+
+ ligneDePiece_Regie=atts.getValue("V");
+ ligneDePiece_NodeIdRegie=atts.getValue("ano:node-id");
+ }
+ }
+
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+ if(xpath.endsWith(FIN_LIGNEPCE)){
+ // 1-
+ if(listePossible.contains(code_Nomenclature) && piece_TypPce.equals("04")){
+ if(!blocTiersExist){
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_ExerBord);
+ msg = msg.replaceAll(MSG_BORD_TYPE, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_ID, piece_IdPce);
+ msg = msg.replaceAll(MSG_PIECE_TYP, piece_TypPce);
+ msg = msg.replaceAll(MSG_PIECE_NAT, piece_NatPce);
+ String path="@added:primary-key='"+bord_ExerBord+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId","");
+ xslParams.put("mandatId",piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_DEPENSE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ ano.addNode(new Node(piece_NodeIdNatPce));
+ ano.addNode(new Node(ligneDePiece_NodeIdNomTiers));
+ anos.add(ano);
+ }
+ }
+ // -2
+ if((ligneDePiece_Nature.matches("64.*")
+ || ligneDePiece_Nature.matches("621.*")
+ || ligneDePiece_Nature.matches("631.*")
+ || ligneDePiece_Nature.matches("633.*")
+ || ligneDePiece_Nature.matches("6531.*")) && !ligneDePieceNatureBegin64){
+ ligneDePieceNatureBegin64=true;
+ if((piece_TypPce.equals("01") && !piece_NatPce.equals("11")) || (piece_TypPce.equals("02") && !piece_NatPce.equals("06"))) {
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_ExerBord);
+ msg = msg.replaceAll(MSG_BORD_TYPE, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_ID, piece_IdPce);
+ msg = msg.replaceAll(MSG_PIECE_TYP, piece_TypPce);
+ msg = msg.replaceAll(MSG_PIECE_NAT, piece_NatPce);
+ String path="@added:primary-key='"+bord_ExerBord+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId","");
+ xslParams.put("mandatId",piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_DEPENSE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ ano.addNode(new Node(piece_NodeIdNatPce));
+ for(String nodeid:vligneDePiece_NodeIdNature64){
+ ano.addNode(new Node(nodeid));
+ }
+ anos.add(ano);
+ }
+ } else if(!ligneDePiece_Regie.matches("")){
+ if(!piece_NatPce.matches("05")){
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_ExerBord);
+ msg = msg.replaceAll(MSG_BORD_TYPE, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_ID, piece_IdPce);
+ msg = msg.replaceAll(MSG_PIECE_TYP, piece_TypPce);
+ msg = msg.replaceAll(MSG_PIECE_NAT, piece_NatPce);
+ String path="@added:primary-key='"+bord_ExerBord+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId","");
+ xslParams.put("mandatId",piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_DEPENSE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ ano.addNode(new Node(piece_NodeIdNatPce));
+ ano.addNode(new Node(ligneDePiece_FirstNodeIdRegie));
+ anos.add(ano);
+ }
+ }
+ blocTiersExist=false;
+ return null;
+ }else if(xpath.endsWith(ON_RETURN_ANOMALIES)){
+
+ ligneDePieceNatureBegin64=false;
+ return anos;
+ } else {
+ return null;
+ }
+ }
+
+ public void endDocument() throws SAXException {}
+
+ public void characters(char[] ch, int start, int length, String xpath) {}
+
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ public void skippedEntity(String name, String xpath) {}
+
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) {}
+}
--- /dev/null
+/*
+ * Copyright
+ * 2007 axYus - www.axyus.com
+ * 2007 JP.Tessier - jean-philippe.tessier@axyus.com
+ * 2008 C ESCOBAR - christel.escobar@axyus.com
+ *
+ * This file is part of XEMELIOS.
+ *
+ * XEMELIOS is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * XEMELIOS 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
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XEMELIOS; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+package fr.gouv.finances.cp.xemelios.controls.pesv2.dep;
+
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.dgfip.xemelios.controls.core.AbstractUnitControl;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Anomalie;
+import fr.gouv.finances.dgfip.xemelios.controls.core.IdGenerator;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Node;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+/**
+ * Implémente le contrôle N° DEP08
+ *
+ * Contrôle lié au type de nomenclature et vote par opération
+ *
+ * Les comptes Nature, Fonction et Opération doivent être renseignés selon la collectivité.
+ *
+ */
+public class DEP08 extends AbstractUnitControl implements ConstantsControlsPESv2{
+ private final static Logger logger = Logger.getLogger(DEP08.class);
+ public static final transient String CTRL_ID = "DEP08";
+ private Vector<Anomalie> anos = new Vector<Anomalie>();
+ private Hashtable<String,Object> hParams;
+
+ /**
+ * La balise du document général
+ */
+ private String docId = null;
+ private String nodeId = null;
+
+ /**
+ * La chaine cible
+ */
+ private static final String FIN_BORDEREAU = "/PES_DepenseAller/Bordereau/";
+ private static final String FIN_LIGNEPCE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/";
+ private static final String ON_RETURN_ANOMALIES = "/PES_DepenseAller/Bordereau/Piece/";
+
+
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+
+ private String bord_IdBord = "";
+ private String bord_ExerBord = "";
+ private String bord_TypBord = "";
+ private String piece_IdPce = "";
+ private String ligneDePiece_Fonction = "";
+ private String ligneDePiece_FonctionNodeId = "";
+ private String ligneDePiece_Nature = "";
+ private String ligneDePiece_NatureNodeId = "";
+ private String ligneDePiece_Operation = "";
+ private String ligneDePiece_OperationNodeId = "";
+ private String ligneDePiece_Id = "";
+ private String ligneDePiece_NodeId = "";
+
+ private static boolean voteOperation;
+ private String typeNomenclature = "";
+
+ /**
+ * Variables devant être remplacées dans le message
+ */
+ private static final String MSG_BORD_NUM = "#BORD_NUM#";
+ private static final String MSG_BORD_EXER = "#BORD_EXER#";
+ private static final String MSG_BORD_TYPE = "#BORD_TYPBORD#";
+ private static final String MSG_PIECE_ID = "#PIECE_IDPCE#";
+ private static final String MSG_LIGNEDEPIECE_ID = "#LIGNEDEPIECE_IDPCE#";
+
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses uniquement
+ */
+
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/PES_DepenseAller/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/PES_DepenseAller/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCPIECE_IDPIECE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/InfoPce/IdPce/";
+ private static final String CHEMIN_BLOCPIECE_LIGNEPIECE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/";
+ private static final String CHEMIN_BLOCLIGNEPIECE_IDLIGNE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/IdLigne/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/PES_DepenseAller/Bordereau/BlocBordereau/TypBord/";
+ private static final String CHEMIN_LIGNEDEPIECE_FONCTION = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/Fonction/";
+ private static final String CHEMIN_LIGNEDEPIECE_NATURE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/Nature/";
+ private static final String CHEMIN_LIGNEDEPIECE_OPERATION = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/Operation/";
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+ voteOperation=Boolean.parseBoolean(hParams.get("votop").toString());
+ typeNomenclature=hParams.get("typnomencl").toString();
+ }
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+ public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+ // 1
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_ExerBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCPIECE_IDPIECE)) {
+ anos.clear();
+ piece_IdPce = atts.getValue("V");
+ }
+ if(xpath.endsWith(CHEMIN_LIGNEDEPIECE_FONCTION)){
+ ligneDePiece_Fonction=atts.getValue("V");
+ ligneDePiece_FonctionNodeId=atts.getValue("ano:node-id");
+ }
+ if(xpath.endsWith(CHEMIN_LIGNEDEPIECE_NATURE)){
+ ligneDePiece_Nature=atts.getValue("V");
+ ligneDePiece_NatureNodeId=atts.getValue("ano:node-id");
+ }
+ if(xpath.endsWith(CHEMIN_LIGNEDEPIECE_OPERATION)){
+ ligneDePiece_Operation=atts.getValue("V");
+ ligneDePiece_OperationNodeId=atts.getValue("ano:node-id");
+ }
+ if(xpath.endsWith(CHEMIN_BLOCLIGNEPIECE_IDLIGNE)){
+ ligneDePiece_Id=atts.getValue("V");
+ ligneDePiece_NodeId = atts.getValue("ano:node-id");
+ }
+ }
+
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+ if(xpath.endsWith(FIN_LIGNEPCE)){
+ if(ligneDePiece_Fonction.equals("") && typeNomenclature.equals("Fonction")){
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_ExerBord);
+ msg = msg.replaceAll(MSG_BORD_TYPE, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_ID, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNEDEPIECE_ID, ligneDePiece_Id);
+ String path="@added:primary-key='"+bord_ExerBord+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId","");
+ xslParams.put("mandatId",piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_DEPENSE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ ano.addNode(new Node(ligneDePiece_NodeId));
+ anos.add(ano);
+ } else if(ligneDePiece_Nature.equals("") && typeNomenclature.equals("Nature")){
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_ExerBord);
+ msg = msg.replaceAll(MSG_BORD_TYPE, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_ID, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNEDEPIECE_ID, ligneDePiece_Id);
+ String path="@added:primary-key='"+bord_ExerBord+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId","");
+ xslParams.put("mandatId",piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_DEPENSE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ ano.addNode(new Node(ligneDePiece_NodeId));
+ anos.add(ano);
+ } else if((ligneDePiece_Nature.equals("") || ligneDePiece_Fonction.equals("")) && typeNomenclature.matches("Nature-ref-fonct")){
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_ExerBord);
+ msg = msg.replaceAll(MSG_BORD_TYPE, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_ID, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNEDEPIECE_ID, ligneDePiece_Id);
+ String path="@added:primary-key='"+bord_ExerBord+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId","");
+ xslParams.put("mandatId",piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_DEPENSE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ ano.addNode(new Node(ligneDePiece_NodeId));
+ anos.add(ano);
+ } else if(!voteOperation && !ligneDePiece_Operation.equals("") && !controlOperation(Integer.parseInt(ligneDePiece_Operation))){
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_ExerBord);
+ msg = msg.replaceAll(MSG_BORD_TYPE, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_ID, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNEDEPIECE_ID, ligneDePiece_Id);
+ String path="@added:primary-key='"+bord_ExerBord+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId","");
+ xslParams.put("mandatId",piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_DEPENSE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ ano.addNode(new Node(ligneDePiece_OperationNodeId));
+ anos.add(ano);
+ }
+ ligneDePiece_Fonction = ligneDePiece_FonctionNodeId = ligneDePiece_Nature = ligneDePiece_NatureNodeId = ligneDePiece_Operation = "";
+ return null;
+ }else if(xpath.endsWith(ON_RETURN_ANOMALIES)){
+ return anos;
+ } else {
+ return null;
+ }
+ }
+
+ public void endDocument() throws SAXException {}
+
+ public void characters(char[] ch, int start, int length, String xpath) {}
+
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ public void skippedEntity(String name, String xpath) {}
+
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) {}
+
+ public boolean controlOperation (int i){
+
+ if ( (i>0) && (i<=10) ){
+ return true;
+ }
+ else
+ return false;
+
+ }
+}
--- /dev/null
+/*
+ * Implémente le contrôle N° DEP09
+ * Il consiste à vérifier la règle fonctionnelle suivante :
+ * Contrôle de la cohérence générale des informations DGP.
+ * Il est fait ainsi :
+ * 1- Lorsqu'on lit un élément BlocBordereau :
+ * - on vide BlocBordereau/Exer/@V, BlocBordereau/IdBord/@V, BlocBordereau/Typbord/@V.
+ * - on stocke BlocBordereau/Exer/@V, BlocBordereau/IdBord/@V, BlocBordereau/Typbord/@V.
+ * 2- Lorsqu'on lit un élément BlocPiece :
+ * - on vide BlocPiece/IdPce/@V.
+ * - on réinitialise le flag à faux.
+ * - on stocke BlocPiece/IdPce/@V.
+ * 3- Lorsqu'on lit un élément DGP :
+ * - on positionne un flag indiquant que le DGP est renseigné.
+ * 4- Lorsqu'on lit une fin d'élément BlocPiece :
+ * - on vérifie le flag positionné ci-dessus.
+ */
+package fr.gouv.finances.cp.xemelios.controls.pesv2.dep;
+
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.dgfip.xemelios.controls.core.AbstractUnitControl;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Anomalie;
+import fr.gouv.finances.dgfip.xemelios.controls.core.IdGenerator;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Node;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+public class DEP09 extends AbstractUnitControl implements ConstantsControlsPESv2 {
+
+ private static Logger logger = Logger.getLogger(DEP09.class);
+ public static final transient String CTRL_ID = "DEP09";
+ private Vector<Anomalie> anos = new Vector<Anomalie>();
+ private Hashtable<String, Object> hParams;
+ /**
+ * La balise du document général
+ */
+ private String docId = null;
+ private String bord_nodeId = null;
+ private String piece_nodeId = null;
+ /**
+ * Severité
+ */
+ private static final String BLOQUANT = "BLOQUANT";
+ private static final String NON_BLOQUANT = "NON BLOQUANT";
+ /**
+ * La chaine cible
+ */
+ private static final String ON_RETURN_ANOMALIES = "/PES_DepenseAller/Bordereau/Piece/";
+// private static final String FIN_BLOCPIECE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/";
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+ private String bord_Exer = "";
+ private String bord_IdBord = "";
+ private String bord_TypBord = "";
+ private String piece_IdPce = "";
+ private String piece_TypPce = "";
+ private String piece_NatPce = "";
+ private String codeNature = "";
+ private String idLigne = "";
+ private boolean suiviDGP = false;
+ private String baliseDgp = "";
+ private boolean dgp_Present = false;
+ private Vector<String> codesNatures;
+// private Vector<String> vTypPceNatPceEligible = new Vector<String>();
+ /**
+ * Variables devant être remplacées dans le message
+ */
+ private static final String MSG_BORD_NUM = "#BORD_NUM#";
+ private static final String MSG_BORD_EXER = "#BORD_EXER#";
+ private static final String MSG_BORD_TYPBORD = "#BORD_TYPBORD#";
+ private static final String MSG_PIECE_IDPCE = "#PIECE_IDPCE#";
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses uniquement
+ */
+ private static final String CHEMIN_BLOCBORDEREAU = "/PES_DepenseAller/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/PES_DepenseAller/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/PES_DepenseAller/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/PES_DepenseAller/Bordereau/BlocBordereau/TypBord/";
+ private static final String CHEMIN_BLOCPIECE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/";
+ private static final String CHEMIN_BLOCPIECE_IDPCE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/InfoPce/IdPce/";
+ private static final String CHEMIN_BLOCPIECE_TYPPIECE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/InfoPce/TypPce/";
+ private static final String CHEMIN_BLOCPIECE_NATPIECE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/InfoPce/NatPce/";
+ private static final String CHEMIN_DGP = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/DGP/";
+ private static final String CHEMIN_BALISE_DGP = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/DGP/Dgp/";
+ private static final String CHEMIN_NATURE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/Nature/";
+ private static final String CHEMIN_IDLIGNE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/IdLigne/";
+
+ public void startDocument() throws SAXException {
+ logger.info("In " + CTRL_ID);
+ }
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+ public void startElement(String uri, String localName, String qName, Attributes atts, String xpath) {
+ logger.debug(xpath);
+ // 1
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ bord_Exer = bord_IdBord = bord_TypBord = "";
+ bord_nodeId = atts.getValue("ano:node-id");
+ } else if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_Exer = atts.getValue("V");
+ } else if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ } else if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ } else if (xpath.endsWith(CHEMIN_BLOCPIECE_TYPPIECE)) {
+ piece_TypPce = atts.getValue("V");
+ } else if (xpath.endsWith(CHEMIN_BLOCPIECE_NATPIECE)) {
+ piece_NatPce = atts.getValue("V");
+ } else if (xpath.endsWith(CHEMIN_BLOCPIECE)) {
+ piece_IdPce = "";
+ dgp_Present = false;
+ anos = new Vector<Anomalie>();
+ codesNatures = new Vector<String>();
+ } else if (xpath.endsWith(CHEMIN_BLOCPIECE_IDPCE)) {
+ piece_IdPce = atts.getValue("V");
+ piece_nodeId = atts.getValue("ano:node-id");
+ } else if (xpath.endsWith(CHEMIN_DGP)) {
+ dgp_Present = true;
+ } else if (xpath.endsWith(CHEMIN_NATURE)) {
+ codeNature = atts.getValue("V");
+ logger.debug("adding nature "+codeNature);
+ codesNatures.add(codeNature);
+ } else if (xpath.endsWith(CHEMIN_IDLIGNE)) {
+ idLigne = atts.getValue("V");
+ } else if(xpath.endsWith(CHEMIN_BALISE_DGP)) {
+ baliseDgp = atts.getValue("V");
+ }
+ }
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+ if (xpath.endsWith(ON_RETURN_ANOMALIES)) {
+ if(suiviDGP) {
+ if(dgp_Present) {
+ if(isTrue(baliseDgp)) {
+ if(isPieceEligible(piece_TypPce, piece_NatPce)) {
+ if(!isAllNatureUnder012(codesNatures)) {
+ // cas 1 -> pas d'anomalie
+ } else {
+ // cas 2
+ anos.add(createAnomalie(BLOQUANT, "les pièces des chapitres globalisés 012 ne peuvent faire l'objet d'un DGP"));
+ }
+ } else {
+ // cas 3 cas 4
+ anos.add(createAnomalie(BLOQUANT, "la pièce n'est pas éligible au DGP"));
+ }
+ } else {
+ if(isPieceEligible(piece_TypPce, piece_NatPce)) {
+ if(!isAllNatureUnder012(codesNatures)) {
+ // cas 5
+ anos.add(createAnomalie(BLOQUANT, "la balise Dgp doit être valorisée à VRAI (true ou 0) car la pièce est éligible au DGP"));
+ } else {
+ // cas 6
+ anos.add(createAnomalie(NON_BLOQUANT, "il est incohérent de valoriser le Bloc DGP pour le chapitre globalisé 012"));
+ }
+ } else {
+ if(!isAllNatureUnder012(codesNatures)) {
+ // cas 7
+ anos.add(createAnomalie(BLOQUANT, "le bloc DGP ne doit pas être valorisé car la pièce n'est pas éligible au DGP"));
+ } else {
+ // cas 8
+ anos.add(createAnomalie(BLOQUANT, "le bloc DGP ne doit pas être valorisé car la pièce n'est pas éligible au DGP et il s'agit d'un chapitre globalisé 012"));
+ }
+ }
+ }
+ } else {
+ if(isTrue(baliseDgp)) {
+ // cas 9 à 12
+ } else {
+ if(isPieceEligible(piece_TypPce, piece_NatPce)) {
+ if(!isAllNatureUnder012(codesNatures)) {
+ // cas 13
+ anos.add(createAnomalie(BLOQUANT, "le bloc DGP devrait être valorisé car la pièce est éligible au DGP"));
+ } else {
+ // cas 14
+ }
+ } else {
+ // cas 15 et 16
+ }
+ }
+ }
+ } else {
+ if(dgp_Present) {
+ // cas 17..24
+ anos.add(createAnomalie(BLOQUANT, "il est incohérent de ne pas suivre le DGP (paramétrage Xémélios) et de valoriser un bloc DGP"));
+ } else {
+ if(isTrue(baliseDgp)) {
+ // cas 25..28
+ } else {
+ //cas 29..32
+ }
+ }
+
+ }
+ return anos;
+ } else {
+ return null;
+ }
+ }
+
+ protected Anomalie createAnomalie(String severity, String complMessage) {
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_Exer);
+ msg = msg.replaceAll(MSG_BORD_TYPBORD, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_IDPCE, piece_IdPce);
+ msg = msg.concat(complMessage);
+
+ String path = "@added:primary-key='" + bord_Exer + "-" + bord_TypBord + "-" + bord_IdBord + "'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau " + bord_IdBord + " Mandat " + piece_IdPce + ": "+complMessage;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "");
+ xslParams.put("mandatId", piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ "PES_DepenseAller",
+ BORDEREAU_DEPENSE, // élément importable
+ bord_IdBord, // id élément importable
+ "BlocPiece",
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ severity,
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ ano.addNode(new Node(piece_nodeId));
+ return ano;
+ }
+
+ protected boolean isTrue(String v) {
+ if(v==null) return false;
+ return "0".equals(v) || "true".equals(v);
+ }
+
+ protected boolean isAllNatureUnder012(Vector<String> codes) {
+ for(String nat:codes) {
+ if(!isNatureUnder012(nat)) return false;
+ }
+ return true;
+ }
+ protected boolean isNatureUnder012(String nature) {
+ if (nature == null) {
+ return false;
+ }
+ return nature.equals("012")
+ || nature.startsWith("621")
+ || nature.startsWith("631")
+ || nature.startsWith("633")
+ || nature.startsWith("64");
+ }
+
+ protected boolean isPieceEligible(String type, String nat) {
+ if ("01".equals(type)) {
+ return "01".equals(nat) || "02".equals(nat) || "03".equals(nat) || "04".equals(nat) || "05".equals(nat);
+ } else if ("09".equals(type)) {
+ return "01".equals(nat) || "02".equals(nat) || "13".equals(nat) || "14".equals(nat);
+ } else {
+ return false;
+ }
+ }
+
+ public void endDocument() throws SAXException {
+ }
+
+ public void characters(char[] ch, int start, int length, String xpath) {
+ }
+
+ public void ignorableWhitespace(char[] ch, int start, int length, String xpath) {
+ }
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {
+ }
+
+ public void endPrefixMapping(String prefix, String xpath) {
+ }
+
+ public void processingInstruction(String target, String data, String xpath) {
+ }
+
+ public void skippedEntity(String name, String xpath) {
+ }
+
+ public void setParameters(Hashtable<String, Object> params) {
+ this.hParams = params;
+ if (hParams.get("suivdgp") == null) {
+ logger.error("pas de param suividgp !");
+ } else {
+ suiviDGP = ((Boolean) hParams.get("suivdgp")).booleanValue();
+ }
+ }
+
+ public void setDocumentLocator(Locator locator) {
+ }
+}
--- /dev/null
+/*
+ * Implémente le contrôle N° DEP10
+ * Il consiste à vérifier la règle fonctionnelle suivante :
+ * Les informations DGP doivent être valides: date de départ, durée et date de fin du délai.
+ * La durée ne peut être supérieure au délai fixé par la réglementation (PAR1 jours).
+ * La date de fin du délai doit être supérieure ou égale à la date de début augmentée de la durée du délai.
+ *
+ * Il est fait ainsi :
+ * 1- Lorsqu'on lit un élément BlocBordereau :
+ * - on vide BlocBordereau/Exer/@V, BlocBordereau/IdBord/@V, BlocBordereau/Typbord/@V.
+ * - on stocke BlocBordereau/Exer/@V, BlocBordereau/IdBord/@V, BlocBordereau/Typbord/@V.
+ * 2- Lorsqu'on lit un élément BlocPiece :
+ * - on vide BlocPiece/IdPce/@V.
+ * - on stocke BlocPiece/IdPce/@V.
+ * 3- Lorsqu'on lit un élément DGP :
+ * - on vide DGP/DteDebDgp/@V, DGP/DteFinDgp/@V, DGP/DureeDgp/@V.
+ * - on stocke DGP/DteDebDgp/@V, DGP/DteFinDgp/@V, DGP/DureeDgp/@V.
+ * 4- Lorsqu'on lit une fin d'élément DGP :
+ * - on vérifie que DGP/DureeDgp/@V <= 45.
+ * - on vérifie que DGP/DteDebDgp/@V + DGP/DureeDgp/@V <= DGP/DteFinDgp/@V.
+ */
+package fr.gouv.finances.cp.xemelios.controls.pesv2.dep;
+
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.dgfip.xemelios.controls.core.AbstractUnitControl;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Anomalie;
+import fr.gouv.finances.dgfip.xemelios.controls.core.IdGenerator;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Node;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+public class DEP10 extends AbstractUnitControl implements ConstantsControlsPESv2{
+ private final static Logger logger = Logger.getLogger(DEP10.class);
+ public static final transient String CTRL_ID = "DEP10";
+ private Vector<Anomalie> anos = new Vector<Anomalie>();
+ private Hashtable<String,Object> hParams;
+ private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+
+ /**
+ * La balise du document général
+ */
+ private String docId = null;
+ private String bord_nodeId = null;
+ private String ligne_nodeId = null;
+
+ /**
+ * La chaine cible
+ */
+ private static final String ON_RETURN_ANOMALIES = "/PES_DepenseAller/Bordereau/Piece/";
+ private static final String FIN_DGP = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/DGP/";
+
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+ private String bord_Exer = "";
+ private String bord_IdBord = "";
+ private String bord_TypBord = "";
+ private String piece_IdPce = "";
+ private boolean dgp_present = false;
+ private String dgp_DteDeb = "";
+ private String dgp_DteFin = "";
+ private String dgp_Duree = "";
+ private String dgp_DteDeb_nodeid = "";
+ private String dgp_DteFin_nodeid = "";
+ private String dgp_Duree_nodeid = "";
+
+ /**
+ * Variables devant être remplacées dans le message
+ */
+ private static final String MSG_BORD_NUM = "#BORD_NUM#";
+ private static final String MSG_BORD_EXER = "#BORD_EXER#";
+ private static final String MSG_BORD_TYPBORD = "#BORD_TYPBORD#";
+ private static final String MSG_PIECE_IDPCE = "#PIECE_IDPCE#";
+ private static final String MSG_DGP_DEB = "#DGP_DEB#";
+ private static final String MSG_DGP_FIN = "#DGP_FIN#";
+ private static final String MSG_DGP_DUREE = "#DGP_DUREE#";
+
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses uniquement
+ */
+ private static final String CHEMIN_BLOCBORDEREAU = "/PES_DepenseAller/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/PES_DepenseAller/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/PES_DepenseAller/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/PES_DepenseAller/Bordereau/BlocBordereau/TypBord/";
+
+ private static final String CHEMIN_BLOCPIECE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/";
+ private static final String CHEMIN_BLOCPIECE_IDPCE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/InfoPce/IdPce/";
+
+ private static final String CHEMIN_DGP = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/DGP/";
+ private static final String CHEMIN_DGP_DTEDEB = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/DGP/DteDebDgp/";
+ private static final String CHEMIN_DGP_DTEFIN = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/DGP/DteFinDgp/";
+ private static final String CHEMIN_DGP_DUREE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/DGP/DureeDgp/";
+
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+ }
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+ public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+ // 1
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ bord_Exer = bord_IdBord = bord_TypBord = "";
+ bord_nodeId = atts.getValue("ano:node-id");
+ anos = new Vector<Anomalie>();
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_Exer = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ }
+
+ // 2
+ if (xpath.endsWith(CHEMIN_BLOCPIECE)) {
+ piece_IdPce = "";
+ dgp_present = false;
+ }
+ if (xpath.endsWith(CHEMIN_BLOCPIECE_IDPCE)) {
+ piece_IdPce = atts.getValue("V");
+ }
+
+ // 3
+ if (xpath.endsWith(CHEMIN_DGP)) {
+ dgp_DteDeb = dgp_DteFin = dgp_Duree = "";
+ ligne_nodeId = atts.getValue("ano:node-id");
+ dgp_present = true;
+ }
+ if (xpath.endsWith(CHEMIN_DGP_DTEDEB)) {
+ dgp_DteDeb = atts.getValue("V");
+ dgp_DteDeb_nodeid = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_DGP_DTEFIN)) {
+ dgp_DteFin = atts.getValue("V");
+ dgp_DteFin_nodeid = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_DGP_DUREE)) {
+ dgp_Duree = atts.getValue("V");
+ dgp_Duree_nodeid = atts.getValue("ano:node-id");
+ }
+ }
+
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+ if(xpath.endsWith(ON_RETURN_ANOMALIES)){
+ return anos;
+ } else if (xpath.endsWith(FIN_DGP)){
+ if (dgp_present) {
+ boolean err = false;
+ Vector<Node> anonodes = new Vector<Node>();
+ int dureeMax = 45;
+ if (hParams.get("dureedgp")!=null)
+ dureeMax = ((Integer)hParams.get("dureedgp")).intValue();
+ int duree = 0;
+ Date dateDeb = null, dateFin = null;
+ if (dgp_Duree!=null && !"".equals(dgp_Duree)) {
+ duree = Integer.parseInt(dgp_Duree);
+ }
+ if (duree > dureeMax) {err = true; anonodes.add(new Node(dgp_Duree_nodeid));}
+
+ if (dgp_DteDeb!=null && !"".equals(dgp_DteDeb)) {
+ try { dateDeb = sdf.parse(dgp_DteDeb); } catch (Exception e) { dateDeb = null; err = true; anonodes.add(new Node(dgp_DteDeb_nodeid));}
+ }
+ if (dgp_DteFin!=null && !"".equals(dgp_DteFin)) {
+ try { dateFin = sdf.parse(dgp_DteFin); } catch (Exception e) { dateFin = null; err = true; anonodes.add(new Node(dgp_DteFin_nodeid));}
+ }
+
+ Calendar c = Calendar.getInstance();
+ c.setTime(dateDeb);
+ c.add(Calendar.DATE, duree);
+
+ if (dateFin.getTime()<c.getTime().getTime()) {
+ err = true;
+ anonodes.add(new Node(dgp_DteDeb_nodeid));
+ anonodes.add(new Node(dgp_DteFin_nodeid));
+ }
+
+ if (err) {
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_Exer);
+ msg = msg.replaceAll(MSG_BORD_TYPBORD, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_IDPCE, piece_IdPce);
+ msg = msg.replaceAll(MSG_DGP_DEB, dgp_DteDeb);
+ msg = msg.replaceAll(MSG_DGP_FIN, dgp_DteFin);
+ msg = msg.replaceAll(MSG_DGP_DUREE, dgp_Duree);
+
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId","");
+ xslParams.put("mandatId", piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_DEPENSE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent().replaceAll("#NB_JOURS#",hParams.get("dureedgp").toString()),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ ano.addAll(anonodes);
+ anos.add(ano);
+ }
+ }
+ return null;
+ } else {
+ return null;
+ }
+ }
+
+ public void endDocument() throws SAXException {}
+
+ public void characters(char[] ch, int start, int length, String xpath) {}
+
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ public void skippedEntity(String name, String xpath) {}
+
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) {}
+}
--- /dev/null
+/*
+ * Implémente le contrôle N° DEP11
+ *
+ * Principe de séquentialité des numéros de ligne
+ *
+ * Le numéro de ligne ne doit pas être déjà attribué à l\92intérieur du mandat.
+ *
+ * Les lignes d\92un mandat doivent avoir des numéros d\92ordre séquentiels.
+ *
+ */
+package fr.gouv.finances.cp.xemelios.controls.pesv2.dep;
+
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.dgfip.xemelios.controls.core.AbstractUnitControl;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Anomalie;
+import fr.gouv.finances.dgfip.xemelios.controls.core.IdGenerator;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Node;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+public class DEP11 extends AbstractUnitControl implements ConstantsControlsPESv2{
+ private final static Logger logger = Logger.getLogger(DEP11.class);
+ public static final transient String CTRL_ID = "DEP11";
+ private Vector<Anomalie> anos = new Vector<Anomalie>();
+ private Hashtable<String,Object> hParams;
+
+ /**
+ * La balise du document général
+ */
+ private String docId = null;
+ private String nodeId = null;
+
+ /**
+ * La chaine cible
+ */
+ private static final String FIN_PIECE = "/PES_DepenseAller/Bordereau/Piece/";
+ private static final String FIN_INFOLIGNEPCE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/";
+ private static final String ON_RETURN_ANOMALIES = FIN_PIECE;
+
+
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+
+ private String bord_IdBord = "";
+ private String bord_ExerBord = "";
+ private String bord_TypBord = "";
+ private String piece_IdPce = "";
+ private String piece_NodeIdPce = "";
+ private String lignepiece_Id = "";
+ private String lignepiece_NodeId = "";
+ private Vector<String> vIdsLigne = new Vector<String>();
+
+ /**
+ * Variables devant être remplacées dans le message
+ */
+ private static final String MSG_BORD_NUM = "#BORD_NUM#";
+ private static final String MSG_BORD_EXER = "#BORD_EXER#";
+ private static final String MSG_BORD_TYPE = "#BORD_TYPBORD#";
+ private static final String MSG_PIECE_ID = "#PIECE_IDPCE#";
+ private static final String MSG_LIGNEPIECE_ID = "#LIGNE_PIECE_ID#";
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses uniquement
+ */
+ private static final String CHEMIN_BLOCBORDEREAU = "/PES_DepenseAller/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_PIECE = "/PES_DepenseAller/Bordereau/";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/PES_DepenseAller/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/PES_DepenseAller/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/PES_DepenseAller/Bordereau/BlocBordereau/TypBord/";
+ private static final String CHEMIN_BLOCPIECE_IDPIECE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/InfoPce/IdPce/";
+ private static final String CHEMIN_BLOCLIGNEPIECE_IDLIGNEPIECE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/IdLigne/";
+
+
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+ }
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+ public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+ // 1
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ anos = new Vector<Anomalie>();
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_ExerBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ }
+ if(xpath.endsWith(CHEMIN_BLOCPIECE_IDPIECE)){
+ piece_IdPce=atts.getValue("V");
+ anos.clear();
+ vIdsLigne.clear();
+ }
+ if(xpath.endsWith(CHEMIN_BLOCLIGNEPIECE_IDLIGNEPIECE)){
+ lignepiece_Id=atts.getValue("V");
+ lignepiece_NodeId=atts.getValue("ano:node-id");
+ }
+ }
+
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+ if(xpath.endsWith(FIN_INFOLIGNEPCE)){
+ try{
+ if((vIdsLigne.size() == 0 && Integer.parseInt(lignepiece_Id) != 1) || (vIdsLigne.size() > 0 && (Integer.parseInt(vIdsLigne.lastElement())+1) != Integer.parseInt(lignepiece_Id))){
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_ExerBord);
+ msg = msg.replaceAll(MSG_BORD_TYPE, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_ID, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNEPIECE_ID, lignepiece_Id);
+ String path="@added:primary-key='"+bord_ExerBord+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId","");
+ xslParams.put("mandatId",piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_DEPENSE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ ano.addNode(new Node(lignepiece_NodeId));
+ anos.add(ano);
+ }
+ vIdsLigne.add(lignepiece_Id);
+ } catch (NumberFormatException nfe){
+ logger.debug("Pb de parseInt dans DEP11.");
+ nfe.printStackTrace();
+ }
+ return null;
+ }else if(xpath.endsWith(ON_RETURN_ANOMALIES)){
+ return anos;
+ } else {
+ return null;
+ }
+ }
+
+ public void endDocument() throws SAXException {}
+
+ public void characters(char[] ch, int start, int length, String xpath) {}
+
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ public void skippedEntity(String name, String xpath) {}
+
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) {}
+}
--- /dev/null
+/*
+ * Copyright
+ * 2007 axYus - www.axyus.com
+ * 2007 JP.Tessier - jean-philippe.tessier@axyus.com
+ *
+ * This file is part of XEMELIOS.
+ *
+ * XEMELIOS is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * XEMELIOS 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
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XEMELIOS; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+package fr.gouv.finances.cp.xemelios.controls.pesv2.dep;
+
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.dgfip.xemelios.controls.core.AbstractUnitControl;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Anomalie;
+import fr.gouv.finances.dgfip.xemelios.controls.core.IdGenerator;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Node;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+/*
+ * Implémente le contrôle N° DEP12
+ * Il consiste à vérifier la règle fonctionnelle suivante :
+ * Le montant de la TVA ne doit être indiqué que si le budget collectivité et / ou le service gèrent la TVA.
+ * Si la TVA est mentionnée alors que la TVA est gérée par un service, le service doit être indiqué.
+ * Il est fait ainsi :
+ * 1- Lorsqu'on lit un élément BlocBordereau :
+ * - on vide BlocBordereau/Exer/@V, BlocBordereau/IdBord/@V, BlocBordereau/Typbord/@V.
+ * - on stocke BlocBordereau/Exer/@V, BlocBordereau/IdBord/@V, BlocBordereau/Typbord/@V.
+ * 2- Lorsqu'on lit un élément BlocPiece :
+ * - on vide BlocPiece/IdPce/@V, BlocPiece/CodServ/@V.
+ * - on stocke BlocPiece/IdPce/@V, BlocPiece/CodServ/@V.
+ * 3- Lorsqu'on lit un élément InfoLignePiece :
+ * - on vide InfoLignePiece/IdLigne/@V, InfoLignePiece/MtTVA/@V.
+ * - on stocke InfoLignePiece/IdLigne/@V, InfoLignePiece/MtTVA/@V.
+ * 4- Lorsqu'on lit une fin d'élément BlocPiece :
+ * - Si BlocPiece/CodServ/@V est renseigné
+ * Si le paramètre "servTVA" contient BlocPiece/CodServ/@V
+ * Il faut que toutes les lignes de pièce aient un montant TVA renseigné.
+ * Sinon
+ * Il faut que toutes les lignes de pièce aient un montant TVA non renseigné.
+ * Sinon
+ * Si le paramètre "coltva" vaut "true"
+ * Il faut que toutes les lignes de pièce aient un montant TVA renseigné.
+ * Sinon
+ * Il faut que toutes les lignes de pièce aient un montant TVA non renseigné.
+ */
+public class DEP12 extends AbstractUnitControl implements ConstantsControlsPESv2{
+ private final static Logger logger = Logger.getLogger(DEP12.class);
+ public static final transient String CTRL_ID="DEP12";
+ private Vector<Anomalie> anos = new Vector<Anomalie>();
+ private Hashtable<String,Object> hParams;
+
+ /**
+ * Liste des nodes des lignes ayant une TVA
+ */
+ private Vector<Node> nodesHasTVA = new Vector<Node>();
+ /**
+ * Liste des nodes des lignes n'ayant pas de TVA
+ */
+ private Vector<Node> nodesHasNoTVA = new Vector<Node>();
+
+ /**
+ * La balise du document général
+ */
+ private String docId = null;
+ private String bord_nodeId = null;
+ private String piece_nodeId = null;
+
+ /**
+ * Severité
+ */
+ private static final String BLOQUANT = "BLOQUANT";
+ private static final String NON_BLOQUANT = "NON BLOQUANT";
+
+ /**
+ * La chaine cible
+ */
+ private static final String FIN_BORDEREAU = "/PES_DepenseAller/Bordereau/";
+ private static final String ON_RETURN_ANOMALIES = FIN_BORDEREAU;
+ private static final String FIN_PIECE = "/PES_DepenseAller/Bordereau/Piece/";
+ private static final String FIN_LIGNEPIECE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/";
+ private static final String FIN_INFO_LIGNE_PIECE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/";
+
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+ private String bord_Exer = "";
+ private String bord_IdBord = "";
+ private String bord_TypBord = "";
+ private String piece_IdPce = "";
+ private String ligne_IdLigne = "";
+ private String piece_CodServ = "";
+ private boolean allLinesHasTVAFilled = true;
+ private boolean lineHasTVA = false;
+
+ private Vector<Node> anonodes;
+ /**
+ * Variables devant être remplacées dans le message
+ */
+ private static final String MSG_BORD_NUM = "#BORD_NUM#";
+ private static final String MSG_BORD_EXER = "#BORD_EXER#";
+ private static final String MSG_BORD_TYPBORD = "#BORD_TYPBORD#";
+ private static final String MSG_PIECE_IDPCE = "#PIECE_IDPCE#";
+ private static final String MSG_LIGNE_IDLIGNE = "#LIGNE_IDLIGNE#";
+
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses uniquement
+ */
+ private static final String CHEMIN_BLOCBORDEREAU = "/PES_DepenseAller/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/PES_DepenseAller/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/PES_DepenseAller/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/PES_DepenseAller/Bordereau/BlocBordereau/TypBord/";
+
+ private static final String CHEMIN_BLOCPIECE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/";
+ private static final String CHEMIN_BLOCPIECE_IDPCE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/InfoPce/IdPce/";
+ private static final String CHEMIN_BLOCPIECE_CODSERV = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/InfoPce/CodServ/";
+
+ private static final String CHEMIN_INFOLIGNEPIECE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/";
+ private static final String CHEMIN_INFOLIGNEPIECE_IDLIGNE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/IdLigne/";
+ private static final String CHEMIN_INFOLIGNEPIECE_MTTVA = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/MtTVA/";
+
+ @Override
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+ }
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+ @Override
+ public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+ // 1
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ bord_Exer = bord_IdBord = bord_TypBord = "";
+ bord_nodeId = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_Exer = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ }
+
+ // 2
+ if (xpath.endsWith(CHEMIN_BLOCPIECE)) {
+ piece_IdPce = piece_CodServ = "";
+ piece_nodeId = atts.getValue("ano:node-id");
+ anos = new Vector<Anomalie>();
+ anos.clear();
+ if(anonodes != null) anonodes.clear();
+ }
+ if (xpath.endsWith(CHEMIN_BLOCPIECE_IDPCE)) {
+ piece_IdPce = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCPIECE_CODSERV)) {
+ piece_CodServ = atts.getValue("V");
+ }
+
+ // 3
+ if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE)) {
+ lineHasTVA = false;
+ ligne_IdLigne = "";
+ }
+ if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE_IDLIGNE)) {
+ ligne_IdLigne = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE_MTTVA)) {
+ nodesHasNoTVA.clear();
+ nodesHasTVA.clear();
+ String ligne_Mttva = atts.getValue("V");
+ if (ligne_Mttva != null && !"".equals(ligne_Mttva)) {
+ {
+ lineHasTVA = true;
+ nodesHasTVA.add(new Node(atts.getValue("ano:node-id")));
+ }
+ } else {
+ lineHasTVA = false;
+ nodesHasNoTVA.add(new Node(atts.getValue("ano:node-id")));
+ }
+ }
+ }
+
+
+ @Override
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+ if (xpath.endsWith(FIN_INFO_LIGNE_PIECE)){
+ allLinesHasTVAFilled &= lineHasTVA;
+
+ boolean err = false;
+ anonodes = new Vector<Node>();
+ String severity = BLOQUANT;
+ String[]servTVA = (String[])hParams.get("servTVA");
+ boolean coltva = ((Boolean)hParams.get("coltva")).booleanValue();
+
+ if (piece_CodServ!=null && !"".equals(piece_CodServ)) {
+ severity = BLOQUANT;
+ if (contains (servTVA, piece_CodServ)) {
+ if(!lineHasTVA){
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_Exer);
+ msg = msg.replaceAll(MSG_BORD_TYPBORD, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_IDPCE, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNE_IDLIGNE, ligne_IdLigne);
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "");
+ xslParams.put("mandatId", piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_DEPENSE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ severity,
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ ano.addAll(nodesHasNoTVA);
+ anos.add(ano);
+ }
+ }else{
+ if(lineHasTVA){
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_Exer);
+ msg = msg.replaceAll(MSG_BORD_TYPBORD, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_IDPCE, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNE_IDLIGNE, ligne_IdLigne);
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "");
+ xslParams.put("mandatId", piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_DEPENSE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ severity,
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ ano.addAll(nodesHasTVA);
+ anos.add(ano);
+ }
+ }
+ } else {
+ severity = NON_BLOQUANT;
+ if (coltva) {
+ if(!lineHasTVA){
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_Exer);
+ msg = msg.replaceAll(MSG_BORD_TYPBORD, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_IDPCE, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNE_IDLIGNE, ligne_IdLigne);
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "");
+ xslParams.put("mandatId", piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_DEPENSE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ severity,
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ ano.addAll(nodesHasNoTVA);
+ anos.add(ano);
+ }
+ }
+ else {
+ if(lineHasTVA){
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_Exer);
+ msg = msg.replaceAll(MSG_BORD_TYPBORD, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_IDPCE, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNE_IDLIGNE, ligne_IdLigne);
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "");
+ xslParams.put("mandatId", piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_DEPENSE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ severity,
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ ano.addAll(nodesHasTVA);
+ anos.add(ano);
+ }
+ }
+ }
+
+ return null;
+ } else if (xpath.endsWith(FIN_PIECE)){
+ return anos;
+ } else {
+ return null;
+ }
+ }
+
+ private boolean contains (String[]tab, String val) {
+ for (String el:tab) {
+ if (el.equals(val)) return true;
+ }
+ return false;
+ }
+
+ @Override
+ public void endDocument() throws SAXException {}
+
+ @Override
+ public void characters(char[] ch, int start, int length, String xpath) {}
+
+ @Override
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ @Override
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ @Override
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ @Override
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ @Override
+ public void skippedEntity(String name, String xpath) {}
+
+ @Override
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+
+ @Override
+ public void setDocumentLocator(Locator locator) {}
+}
--- /dev/null
+/*
+ * Copyright
+ * 2007 axYus - www.axyus.com
+ * 2007 JP.Tessier - jean-philippe.tessier@axyus.com
+ *
+ * This file is part of XEMELIOS.
+ *
+ * XEMELIOS is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * XEMELIOS 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
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XEMELIOS; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+package fr.gouv.finances.cp.xemelios.controls.pesv2.dep;
+
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.dgfip.xemelios.controls.core.AbstractUnitControl;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Anomalie;
+import fr.gouv.finances.dgfip.xemelios.controls.core.IdGenerator;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Node;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+/*
+ * Implémente le contrôle N° DEP13
+ * Il consiste à vérifier la règle fonctionnelle suivante :
+ * Pour les collectivités ou services assujettis à la TVA, le montant du mandat doit être égal au montant budgétaire augmenté de la TVA.
+ * Le montant de la TVA est créditée au compte de la TVA et le montant hors taxe est créditée au compte budgétaire.
+ * Il est fait ainsi :
+ * 1- Lorsqu'on lit un élément BlocBordereau :
+ * - on vide BlocBordereau/Exer/@V, BlocBordereau/IdBord/@V, BlocBordereau/Typbord/@V.
+ * - on stocke BlocBordereau/Exer/@V, BlocBordereau/IdBord/@V, BlocBordereau/Typbord/@V.
+ * 2- Lorsqu'on lit un élément BlocPiece :
+ * - on vide BlocPiece/IdPce/@V.
+ * - on stocke BlocPiece/IdPce/@V.
+ * 3- Lorsqu'on lit un élément InfoLignePiece :
+ * - on vide InfoLignePiece/IdLigne/@V, InfoLignePiece/MtHT/@V, InfoLignePiece/MtTVA/@V.
+ * - on stocke InfoLignePiece/IdLigne/@V, InfoLignePiece/MtHT/@V, InfoLignePiece/MtTVA/@V.
+ * 4- Lorsqu'on lit une fin d'élément InfoLignePiece :
+ * - on vérifie que InfoLignePiece/MtTVA/@V divisé par (InfoLignePiece/MtHT/@V + InfoLignePiece/MtTVA/@V) donne un taux
+ * présent dans la liste des taux de TVA "tauxTVA".
+ */
+public class DEP13 extends AbstractUnitControl implements ConstantsControlsPESv2{
+ private final static Logger logger = Logger.getLogger(DEP13.class);
+ public static final transient String CTRL_ID="DEP13";
+ private Vector<Anomalie> anos = new Vector<Anomalie>();
+ private Hashtable<String,Object> hParams;
+
+ /**
+ * La balise du document général
+ */
+ private String docId = null;
+ private String bord_nodeId = null;
+ private String ligne_nodeId = null;
+
+ /**
+ * La chaine cible
+ */
+ private static final String FIN_BORDEREAU = "/PES_DepenseAller/Bordereau/";
+ private static final String ON_RETURN_ANOMALIES = "/PES_DepenseAller/Bordereau/Piece/";
+ private static final String FIN_LIGNEPIECE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/";
+
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+ private String bord_Exer = "";
+ private String bord_IdBord = "";
+ private String bord_TypBord = "";
+ private String piece_IdPce = "";
+ private String ligne_IdLigne = "";
+ private String ligne_Mtht = "";
+ private String ligne_Mttva = "";
+ private String ligne_Mtht_nodeid = "";
+ private String ligne_Mttva_nodeid = "";
+
+ /**
+ * Variables devant être remplacées dans le message
+ */
+ private static final String MSG_BORD_NUM = "#BORD_NUM#";
+ private static final String MSG_BORD_EXER = "#BORD_EXER#";
+ private static final String MSG_BORD_TYPBORD = "#BORD_TYPBORD#";
+ private static final String MSG_PIECE_IDPCE = "#PIECE_IDPCE#";
+ private static final String MSG_LIGNE_IDLIGNE = "#LIGNE_IDLIGNE#";
+ private static final String MSG_LIGNE_MTHT = "#LIGNE_MTHT#";
+ private static final String MSG_LIGNE_MTTVA = "#LIGNE_MTTVA#";
+
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses uniquement
+ */
+ private static final String CHEMIN_BLOCBORDEREAU = "/PES_DepenseAller/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/PES_DepenseAller/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/PES_DepenseAller/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/PES_DepenseAller/Bordereau/BlocBordereau/TypBord/";
+
+ private static final String CHEMIN_BLOCPIECE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/";
+ private static final String CHEMIN_BLOCPIECE_IDPCE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/InfoPce/IdPce/";
+
+ private static final String CHEMIN_INFOLIGNEPIECE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/";
+ private static final String CHEMIN_INFOLIGNEPIECE_IDLIGNE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/IdLigne/";
+ private static final String CHEMIN_INFOLIGNEPIECE_MTHT = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/MtHT/";
+ private static final String CHEMIN_INFOLIGNEPIECE_MTTVA = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/MtTVA/";
+
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+ }
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+ public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+ // 1
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ bord_Exer = bord_IdBord = bord_TypBord = "";
+ bord_nodeId = atts.getValue("ano:node-id");
+ anos = new Vector<Anomalie>();
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_Exer = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ }
+
+ // 2
+ if (xpath.endsWith(CHEMIN_BLOCPIECE)) {
+ piece_IdPce = "";
+ }
+ if (xpath.endsWith(CHEMIN_BLOCPIECE_IDPCE)) {
+ piece_IdPce = atts.getValue("V");
+ }
+
+ // 3
+ if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE)) {
+ ligne_IdLigne = ligne_Mtht = ligne_Mttva = "";
+ ligne_nodeId = atts.getValue("ano:node-id");
+ ligne_Mtht_nodeid = ligne_Mttva_nodeid = "";
+ }
+ if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE_IDLIGNE)) {
+ ligne_IdLigne = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE_MTHT)) {
+ ligne_Mtht = atts.getValue("V");
+ ligne_Mtht_nodeid = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE_MTTVA)) {
+ ligne_Mttva = atts.getValue("V");
+ ligne_Mttva_nodeid = atts.getValue("ano:node-id");
+ }
+ }
+
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+ if(xpath.endsWith(ON_RETURN_ANOMALIES)){
+ return anos;
+ } else if (xpath.endsWith(FIN_LIGNEPIECE)){
+ boolean err = false;
+
+ String[] les_taux = (String[])hParams.get("tauxTVA");
+ double mtHT = -1, mtTVA = -1;
+ if (ligne_Mtht!=null && !"".equals(ligne_Mtht)) {
+ try {mtHT = Double.parseDouble(ligne_Mtht);} catch (Exception e) {mtHT = -1;}
+ }
+ if (ligne_Mttva!=null && !"".equals(ligne_Mttva)) {
+ try {mtTVA = Double.parseDouble(ligne_Mttva);} catch (Exception e) {mtTVA = -1;}
+ }
+ if (mtHT != -1 && mtTVA != -1) {
+ //double mtTTC = mtHT+mtTVA;
+ //double taux = (Math.round(10000*mtTVA/mtTTC)/100.0);
+ double taux = mtTVA / mtHT;
+ err = !contains(les_taux, taux);
+ }
+
+ if (err) {
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_Exer);
+ msg = msg.replaceAll(MSG_BORD_TYPBORD, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_IDPCE, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNE_IDLIGNE, ligne_IdLigne);
+ msg = msg.replaceAll(MSG_LIGNE_MTHT, ligne_Mtht);
+ msg = msg.replaceAll(MSG_LIGNE_MTTVA, ligne_Mttva);
+
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "");
+ xslParams.put("mandatId", piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_DEPENSE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ ano.addNode(new Node(ligne_Mtht_nodeid));
+ ano.addNode(new Node(ligne_Mttva_nodeid));
+ anos.add(ano);
+ }
+ return null;
+ } else {
+ return null;
+ }
+ }
+
+ private boolean contains (String[] tab, double val) {
+ for (String el:tab) {
+ try {
+ double tx = Double.valueOf(el)/100.0;
+ double marge_erreur = tx/100.0; // divisé par 100 pour l'avoir en pourcentage et par 100 pour ne prendre qu'1 % de marge
+ if ((val >= (tx-marge_erreur)) && (val <= (tx+marge_erreur))) return true;
+ } catch (Exception e) {
+
+ }
+ }
+ return false;
+ }
+
+ public void endDocument() throws SAXException {}
+
+ public void characters(char[] ch, int start, int length, String xpath) {}
+
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ public void skippedEntity(String name, String xpath) {}
+
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) {}
+}
--- /dev/null
+/*
+ * Copyright
+ * 2008 axYus - www.axyus.com
+ * 2008 C ESCOBAR - christel.escobar@axyus.com
+ *
+ * This file is part of XEMELIOS.
+ *
+ * XEMELIOS is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * XEMELIOS 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
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XEMELIOS; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+
+package fr.gouv.finances.cp.xemelios.controls.pesv2.dep;
+
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.dgfip.xemelios.controls.core.AbstractUnitControl;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Anomalie;
+import fr.gouv.finances.dgfip.xemelios.controls.core.IdGenerator;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Node;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+/**
+ * Implémente le contrôle N° DEP14
+ *
+ * Contrôle de la présence d\92un mode de règlement
+ *
+ * 1 - Pour un mandat à payer, le mode de règlement doit être indiqué, et ne peut pas être égal à "Autres" (ModRegl=09).
+ * 2 - Si le mode règlement est « numéraire », le montant ne doit pas dépasser le seuil prévu dans la réglementation (au 22/08/2006 : 750 euros)
+ * 3 - Si le mode de règlement est « virement » ou « prélévement », les coordonnées bancaires doivent être renseignées.
+ * Le mode de règlement « 04 virement appli externe » ne nécessite pas de RIB : les RIB sont inclus dans le fichier utilisé dans l'appli externe.
+ * 4 - Dans le cas d'un mode de règlement par virement bancaire, la zone libellé du virement est renseignée.
+ * 5 - Si le mode de règlement est « virement à l\92étranger », l\92identifiant international bancaire (IBAN) doit être renseigné aisni que le BIC.
+ * 6 - S'il s'agit d'un mandat collectif alors le mode de règlement doit être « Virement par application externe ».
+ */
+
+public class DEP14 extends AbstractUnitControl implements ConstantsControlsPESv2{
+ private final static Logger logger = Logger.getLogger(DEP14.class);
+ public static final transient String CTRL_ID = "DEP14";
+ private Vector<Anomalie> anos = new Vector<Anomalie>();
+ private Hashtable<String,Object> hParams;
+
+ /**
+ * La balise du document général
+ */
+ private String docId = null;
+ private String nodeId = null;
+
+ /**
+ * La chaine cible
+ */
+ private static final String FIN_PIECE = "/PES_DepenseAller/Bordereau/Piece/";
+ private static final String FIN_LIGNEPCE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/";
+ private static final String ON_RETURN_ANOMALIES = FIN_PIECE;
+
+
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+
+ private String bord_IdBord = "";
+ private String bord_ExerBord = "";
+ private String bord_TypBord = "";
+ private String piece_IdPce = "";
+ private String piece_TypPce = "";
+ private String piece_NatPce = "";
+ private String lignepiece_Id = "";
+ private String lignepiece_ModeReglement = "";
+ private String lignepiece_IdBanc = "";
+ private String lignepiece_IdPayInt = "";
+ private String lignepiece_LibVir1 = "";
+ private String lignepiece_ModeReglement_NodeId = "";
+ private String lignepiece_CpteBanc_NodeId = "";
+ private String lignepiece_LibVir1_NodeId = "";
+
+
+ private Double lignepiece_MtHT = 0.0;
+ private Double lignepiece_MtTVA = 0.0;
+ private String lignepiece_MtHT_NodeId = "";
+ private String lignepiece_MtTVA_NodeId = "";
+
+ private boolean cpteBancaireExist = false;
+
+ private Vector<String> vTypPceNatPceEligible = new Vector<String>();
+ /**
+ * Variables devant être remplacées dans le message
+ */
+ private static final String MSG_BORD_NUM = "#BORD_NUM#";
+ private static final String MSG_BORD_EXER = "#BORD_EXER#";
+ private static final String MSG_BORD_TYPE = "#BORD_TYPBORD#";
+ private static final String MSG_PIECE_ID = "#PIECE_IDPCE#";
+ private static final String MSG_LIGNEPIECE_ID = "#LIGNE_IDLIGNE#";
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses uniquement
+ */
+ private static final String CHEMIN_BLOCBORDEREAU = "/PES_DepenseAller/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/PES_DepenseAller/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/PES_DepenseAller/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/PES_DepenseAller/Bordereau/BlocBordereau/TypBord/";
+ private static final String CHEMIN_BLOCPIECE_IDPIECE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/InfoPce/IdPce/";
+ private static final String CHEMIN_BLOCPIECE_TYPPIECE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/InfoPce/TypPce/";
+ private static final String CHEMIN_BLOCPIECE_NATPIECE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/InfoPce/NatPce/";
+
+ private static final String CHEMIN_BLOCLIGNEPIECE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/";
+ private static final String CHEMIN_BLOCLIGNEPIECE_IDLIGNEPIECE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/IdLigne/";
+ private static final String CHEMIN_BLOCLIGNEPIECE_MODEREGLEMENT = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/ModRegl/";
+ private static final String CHEMIN_BLOCLIGNEPIECE_MTHT = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/MtHT/";
+ private static final String CHEMIN_BLOCLIGNEPIECE_MTTVA = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/MtTVA/";
+ private static final String CHEMIN_BLOCLIGNEPIECE_TIERS = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/Tiers/";
+ private static final String CHEMIN_BLOCLIGNEPIECE_CPTEBANCAIRE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/Tiers/CpteBancaire/";
+ private static final String CHEMIN_BLOCLIGNEPIECE_CPTEBANCAIRE_IDBANC = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/Tiers/CpteBancaire/IdBancInt/";
+ private static final String CHEMIN_BLOCLIGNEPIECE_CPTEBANCAIRE_IDPAYINT = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/Tiers/CpteBancaire/IdPayInt/";
+ private static final String CHEMIN_BLOCLIGNEPIECE_LIBVIR1 = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/LibVir1/";
+
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+ vTypPceNatPceEligible.add("0101");vTypPceNatPceEligible.add("0102");vTypPceNatPceEligible.add("0103");vTypPceNatPceEligible.add("0104");
+ vTypPceNatPceEligible.add("0105");vTypPceNatPceEligible.add("0111");vTypPceNatPceEligible.add("0115");
+ vTypPceNatPceEligible.add("0207");vTypPceNatPceEligible.add("0208");
+ vTypPceNatPceEligible.add("0801");vTypPceNatPceEligible.add("0802");vTypPceNatPceEligible.add("0811");vTypPceNatPceEligible.add("0815");
+ vTypPceNatPceEligible.add("0901");vTypPceNatPceEligible.add("0902");vTypPceNatPceEligible.add("0913");vTypPceNatPceEligible.add("0914");
+ vTypPceNatPceEligible.add("0915");
+ vTypPceNatPceEligible.add("1101");vTypPceNatPceEligible.add("1102");vTypPceNatPceEligible.add("1114");vTypPceNatPceEligible.add("1115");
+ }
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+ public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+ // 1
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ anos = new Vector<Anomalie>();
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_ExerBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ }
+ if(xpath.endsWith(CHEMIN_BLOCPIECE_IDPIECE)){
+ piece_IdPce=atts.getValue("V");
+ anos.clear();
+ }
+ if (xpath.endsWith(CHEMIN_BLOCPIECE_TYPPIECE)) {
+ piece_TypPce = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCPIECE_NATPIECE)) {
+ piece_NatPce = atts.getValue("V");
+ }
+ if(xpath.endsWith(CHEMIN_BLOCLIGNEPIECE)){
+ lignepiece_MtHT = 0.0;
+ lignepiece_MtTVA = 0.0;
+ lignepiece_LibVir1 = lignepiece_ModeReglement = "";
+ lignepiece_LibVir1_NodeId = lignepiece_MtTVA_NodeId = lignepiece_MtHT_NodeId = lignepiece_ModeReglement_NodeId = "";
+ }
+ if(xpath.endsWith(CHEMIN_BLOCLIGNEPIECE_IDLIGNEPIECE)){
+ lignepiece_Id=atts.getValue("V");
+ }
+ if(xpath.endsWith(CHEMIN_BLOCLIGNEPIECE_MODEREGLEMENT)){
+ lignepiece_ModeReglement = atts.getValue("V");
+ lignepiece_ModeReglement_NodeId = atts.getValue("ano:node-id");
+ }
+ if(xpath.endsWith(CHEMIN_BLOCLIGNEPIECE_MTHT)){
+ lignepiece_MtHT_NodeId = atts.getValue("ano:node-id");
+ try{
+ lignepiece_MtHT = Double.parseDouble(atts.getValue("V"));
+ } catch (NumberFormatException nfe){
+ nfe.printStackTrace();
+ }
+ }
+ if(xpath.endsWith(CHEMIN_BLOCLIGNEPIECE_MTTVA)){
+ lignepiece_MtTVA_NodeId = atts.getValue("ano:node-id");
+ try{
+ lignepiece_MtTVA = Double.parseDouble(atts.getValue("V"));
+ } catch (NumberFormatException nfe){
+ nfe.printStackTrace();
+ }
+ }
+ if(xpath.endsWith(CHEMIN_BLOCLIGNEPIECE_TIERS)){
+ lignepiece_IdBanc = lignepiece_IdPayInt = "";
+ cpteBancaireExist = false;
+ lignepiece_CpteBanc_NodeId = "";
+ }
+ if(xpath.endsWith(CHEMIN_BLOCLIGNEPIECE_CPTEBANCAIRE)){
+ cpteBancaireExist = true;
+ lignepiece_CpteBanc_NodeId = atts.getValue("ano:node-id");
+ }
+ if(xpath.endsWith(CHEMIN_BLOCLIGNEPIECE_CPTEBANCAIRE_IDBANC)){
+ lignepiece_IdBanc = atts.getValue("V");
+ }
+ if(xpath.endsWith(CHEMIN_BLOCLIGNEPIECE_CPTEBANCAIRE_IDPAYINT)){
+ lignepiece_IdPayInt = atts.getValue("V");
+ }
+ if(xpath.endsWith(CHEMIN_BLOCLIGNEPIECE_LIBVIR1)){
+ lignepiece_LibVir1 = atts.getValue("V");
+ lignepiece_LibVir1_NodeId = atts.getValue("ano:node-id");
+ }
+
+ }
+
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+ if(xpath.endsWith(FIN_LIGNEPCE)){
+ try{
+ String typnat = piece_TypPce+piece_NatPce;
+ // 1
+ if(vTypPceNatPceEligible.contains(typnat) && (lignepiece_ModeReglement.equals("09") || lignepiece_ModeReglement.equals(""))){
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_ExerBord);
+ msg = msg.replaceAll(MSG_BORD_TYPE, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_ID, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNEPIECE_ID, lignepiece_Id);
+ String path="@added:primary-key='"+bord_ExerBord+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId","");
+ xslParams.put("mandatId",piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ String severity = "";
+ String message = "";
+ if(lignepiece_ModeReglement.equals("")){
+ severity = "NON BLOQUANT";
+ message = msg + " (NON BLOQUANT)";
+ }else{
+ severity = getDocumentModel().getControlById(CTRL_ID).getSeverity();
+ message = msg;
+ }
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_DEPENSE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ message,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ severity,
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ ano.addNode(new Node(lignepiece_ModeReglement_NodeId));
+ anos.add(ano);
+ // 2
+ } if(vTypPceNatPceEligible.contains(typnat) && (lignepiece_ModeReglement.equals("01") && ((lignepiece_MtHT+lignepiece_MtTVA)>=750))){
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_ExerBord);
+ msg = msg.replaceAll(MSG_BORD_TYPE, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_ID, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNEPIECE_ID, lignepiece_Id);
+ String path="@added:primary-key='"+bord_ExerBord+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId","");
+ xslParams.put("mandatId",piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_DEPENSE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ ano.addNode(new Node(lignepiece_MtHT_NodeId));
+ ano.addNode(new Node(lignepiece_MtTVA_NodeId));
+ anos.add(ano);
+ // 3
+ } if(vTypPceNatPceEligible.contains(typnat) && ((lignepiece_ModeReglement.equals("03")
+ || lignepiece_ModeReglement.equals("05")
+ || lignepiece_ModeReglement.equals("06")
+ || lignepiece_ModeReglement.equals("10")) && !cpteBancaireExist)){
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_ExerBord);
+ msg = msg.replaceAll(MSG_BORD_TYPE, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_ID, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNEPIECE_ID, lignepiece_Id);
+ String path="@added:primary-key='"+bord_ExerBord+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId","");
+ xslParams.put("mandatId",piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_DEPENSE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ ano.addNode(new Node(lignepiece_CpteBanc_NodeId));
+ anos.add(ano);
+ // 4
+ } if(vTypPceNatPceEligible.contains(typnat) && ((lignepiece_ModeReglement.equals("03")
+ || lignepiece_ModeReglement.equals("05")
+ || lignepiece_ModeReglement.equals("06")) && lignepiece_LibVir1.equals(""))){
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_ExerBord);
+ msg = msg.replaceAll(MSG_BORD_TYPE, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_ID, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNEPIECE_ID, lignepiece_Id);
+ String path="@added:primary-key='"+bord_ExerBord+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId","");
+ xslParams.put("mandatId",piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_DEPENSE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ ano.addNode(new Node(lignepiece_LibVir1_NodeId));
+ anos.add(ano);
+ // 5
+ } if(vTypPceNatPceEligible.contains(typnat) && lignepiece_ModeReglement.equals("06") && (lignepiece_IdBanc.equals("") || lignepiece_IdPayInt.equals(""))) {
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_ExerBord);
+ msg = msg.replaceAll(MSG_BORD_TYPE, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_ID, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNEPIECE_ID, lignepiece_Id);
+ String path="@added:primary-key='"+bord_ExerBord+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId","");
+ xslParams.put("mandatId",piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_DEPENSE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ ano.addNode(new Node(lignepiece_CpteBanc_NodeId));
+ anos.add(ano);
+ //6
+ } if( vTypPceNatPceEligible.contains(typnat) && piece_TypPce.equals("08") && !lignepiece_ModeReglement.equals("04") ) {
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_ExerBord);
+ msg = msg.replaceAll(MSG_BORD_TYPE, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_ID, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNEPIECE_ID, lignepiece_Id);
+ String path="@added:primary-key='"+bord_ExerBord+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId","");
+ xslParams.put("mandatId",piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_DEPENSE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ ano.addNode(new Node(lignepiece_ModeReglement_NodeId));
+ anos.add(ano);
+ }
+ } catch (NumberFormatException nfe){
+ nfe.printStackTrace();
+ }
+ lignepiece_ModeReglement="";
+ return null;
+ }else if(xpath.endsWith(ON_RETURN_ANOMALIES)){
+ return anos;
+ } else {
+ return null;
+ }
+ }
+
+ public void endDocument() throws SAXException {}
+
+ public void characters(char[] ch, int start, int length, String xpath) {}
+
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ public void skippedEntity(String name, String xpath) {}
+
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) {}
+}
--- /dev/null
+// CES _ 08/02/2010 _ Suppression du controle suite à demande extranet 176
+
+///*
+// * Implémente le contrôle N° DEP15
+// * Il consiste à vérifier la règle fonctionnelle suivante :
+// * Le montant d\92une ligne de mandat ne peut être supérieur au seuil maximal des marchés formalisés (PAR1)
+// * Il est fait ainsi :
+// * 1- Lorsqu'on lit un élément BlocBordereau :
+// * - on vide BlocBordereau/Exer/@V, BlocBordereau/IdBord/@V, BlocBordereau/Typbord/@V.
+// * - on stocke BlocBordereau/Exer/@V, BlocBordereau/IdBord/@V, BlocBordereau/Typbord/@V.
+// * 2- Lorsqu'on lit un élément BlocPiece :
+// * - on vide BlocPiece/IdPce/@V.
+// * - on stocke BlocPiece/IdPce/@V.
+// * 3- Lorsqu'on lit un élément InfoLignePiece :
+// * - on vide InfoLignePiece/IdLigne/@V, InfoLignePiece/MtHT/@V, InfoLignePiece/MtTVA/@V.
+// * - on stocke InfoLignePiece/IdLigne/@V, InfoLignePiece/MtHT/@V, InfoLignePiece/MtTVA/@V.
+// * 4- Lorsqu'on lit une fin d'élément InfoLignePiece :
+// * - on vérifie que InfoLignePiece/MtTVA/@V + InfoLignePiece/MtHT/@V < PAR1
+// */
+//package fr.gouv.finances.cp.xemelios.controls.pesv2.dep;
+//
+//import java.math.BigDecimal;
+//import java.util.Hashtable;
+//import java.util.Vector;
+//
+//import org.apache.log4j.Logger;
+//import org.xml.sax.Attributes;
+//import org.xml.sax.Locator;
+//import org.xml.sax.SAXException;
+//
+//import fr.gouv.finances.cp.xemelios.controls.AbstractUnitControl;
+//import fr.gouv.finances.cp.xemelios.controls.Anomalie;
+//import fr.gouv.finances.cp.xemelios.controls.IdGenerator;
+//import fr.gouv.finances.cp.xemelios.controls.Node;
+//import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+//
+//public class DEP15 extends AbstractUnitControl implements ConstantsControlsPESv2{
+// private final static Logger logger = Logger.getLogger(DEP15.class);
+// public static final transient String CTRL_ID="DEP15";
+// private Vector<Anomalie> anos = new Vector<Anomalie>();
+// private Hashtable<String,Object> hParams;
+//
+// /**
+// * La balise du document général
+// */
+// private String docId = null;
+// private String bord_nodeId = null;
+// private String ligne_nodeId = null;
+//
+// /**
+// * La chaine cible
+// */
+// private static final String FIN_BORDEREAU = "/PES_DepenseAller/Bordereau/";
+// private static final String ON_RETURN_ANOMALIES = "/PES_DepenseAller/Bordereau/Piece/";
+// private static final String FIN_LIGNEPIECE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/";
+//
+// /**
+// * Variables contenant les valeurs nécessaires à ce contrôle
+// */
+// private String bord_Exer = "";
+// private String bord_IdBord = "";
+// private String bord_TypBord = "";
+// private String piece_IdPce = "";
+// private String ligne_IdLigne = "";
+// private String ligne_Mtht = "";
+// private String ligne_Mttva = "";
+// private String ligne_Mtht_nodeid = "";
+// private String ligne_Mttva_nodeid = "";
+//
+// /**
+// * Variables devant être remplacées dans le message
+// */
+// private static final String MSG_BORD_NUM = "#BORD_NUM#";
+// private static final String MSG_BORD_EXER = "#BORD_EXER#";
+// private static final String MSG_BORD_TYPBORD = "#BORD_TYPBORD#";
+// private static final String MSG_PIECE_IDPCE = "#PIECE_IDPCE#";
+// private static final String MSG_LIGNE_IDLIGNE = "#LIGNE_IDLIGNE#";
+// private static final String MSG_LIGNE_MTHT = "#LIGNE_MTHT#";
+// private static final String MSG_LIGNE_MTTVA = "#LIGNE_MTTVA#";
+//
+// /**
+// * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+// * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses uniquement
+// */
+// private static final String CHEMIN_BLOCBORDEREAU = "/PES_DepenseAller/Bordereau/BlocBordereau/";
+// private static final String CHEMIN_BLOCBORDEREAU_EXER = "/PES_DepenseAller/Bordereau/BlocBordereau/Exer/";
+// private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/PES_DepenseAller/Bordereau/BlocBordereau/IdBord/";
+// private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/PES_DepenseAller/Bordereau/BlocBordereau/TypBord/";
+//
+// private static final String CHEMIN_BLOCPIECE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/";
+// private static final String CHEMIN_BLOCPIECE_IDPCE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/InfoPce/IdPce/";
+//
+// private static final String CHEMIN_INFOLIGNEPIECE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/";
+// private static final String CHEMIN_INFOLIGNEPIECE_IDLIGNE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/IdLigne/";
+// private static final String CHEMIN_INFOLIGNEPIECE_MTHT = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/MtHT/";
+// private static final String CHEMIN_INFOLIGNEPIECE_MTTVA = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/MtTVA/";
+//
+// public void startDocument() throws SAXException {
+// logger.info("In "+CTRL_ID);
+// }
+//
+// public void setDocId(String docID) {
+// this.docId = docID;
+// }
+//
+// public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+// // 1
+// if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+// bord_Exer = bord_IdBord = bord_TypBord = "";
+// bord_nodeId = atts.getValue("ano:node-id");
+// anos = new Vector<Anomalie>();
+// }
+// if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+// bord_Exer = atts.getValue("V");
+// }
+// if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+// bord_IdBord = atts.getValue("V");
+// }
+// if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+// bord_TypBord = atts.getValue("V");
+// }
+//
+// // 2
+// if (xpath.endsWith(CHEMIN_BLOCPIECE)) {
+// piece_IdPce = "";
+// }
+// if (xpath.endsWith(CHEMIN_BLOCPIECE_IDPCE)) {
+// piece_IdPce = atts.getValue("V");
+// }
+//
+// // 3
+// if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE)) {
+// ligne_IdLigne = ligne_Mtht = ligne_Mttva = "";
+// ligne_nodeId = atts.getValue("ano:node-id");
+// ligne_Mtht_nodeid = ligne_Mttva_nodeid = "";
+// }
+// if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE_IDLIGNE)) {
+// ligne_IdLigne = atts.getValue("V");
+// }
+// if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE_MTHT)) {
+// ligne_Mtht = atts.getValue("V");
+// ligne_Mtht_nodeid = atts.getValue("ano:node-id");
+// }
+// if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE_MTTVA)) {
+// ligne_Mttva = atts.getValue("V");
+// ligne_Mttva_nodeid = atts.getValue("ano:node-id");
+// }
+// }
+//
+//
+// public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+// if(xpath.endsWith(ON_RETURN_ANOMALIES)){
+// return anos;
+// } else if (xpath.endsWith(FIN_LIGNEPIECE)){
+// boolean err = false;
+// try {
+// BigDecimal seuil = (BigDecimal)hParams.get("seuilMax");
+// double mtHT =0, mtTVA = 0;
+// if (ligne_Mtht!=null && !"".equals(ligne_Mtht)) {
+// mtHT = Double.parseDouble(ligne_Mtht);
+// }
+// if (ligne_Mttva!=null && !"".equals(ligne_Mttva)) {
+// mtTVA = Double.parseDouble(ligne_Mttva);
+// }
+// double mtTTC = mtHT+mtTVA;
+// err = (seuil.compareTo(new BigDecimal (mtTTC))!=1);
+// } catch (Exception e) { err = true; }
+// if (err) {
+// String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+// msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+// msg = msg.replaceAll(MSG_BORD_EXER, bord_Exer);
+// msg = msg.replaceAll(MSG_BORD_TYPBORD, bord_TypBord);
+// msg = msg.replaceAll(MSG_PIECE_IDPCE, piece_IdPce);
+// msg = msg.replaceAll(MSG_LIGNE_IDLIGNE, ligne_IdLigne);
+// msg = msg.replaceAll(MSG_LIGNE_MTHT, ligne_Mtht);
+// msg = msg.replaceAll(MSG_LIGNE_MTTVA, ligne_Mttva);
+//
+// String path="@added:primary-key='"+bord_Exer+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+// String anoId = IdGenerator.nextId();
+// String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+// Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+// xslParams.put("elementId", "");
+// xslParams.put("mandatId", piece_IdPce);
+// xslParams.put("browser-destination", "internal");
+// xslParams.put("anoId", anoId);
+// Anomalie ano = new Anomalie(anoId,
+// getDocumentModel().getControlById(CTRL_ID).getId(),
+// getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+// getDocumentModel().getDocumentId(),
+// xpath.split("/")[1],
+// BORDEREAU_DEPENSE, // élément importable
+// bord_IdBord, // id élément importable
+// localName,
+// libelleLien,
+// msg,
+// getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+// getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+// path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+// xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+// if (ligne_Mtht_nodeid!=null) ano.addNode(new Node(ligne_Mtht_nodeid));
+// if (ligne_Mttva_nodeid!=null) ano.addNode(new Node(ligne_Mttva_nodeid));
+// anos.add(ano);
+// }
+// return null;
+// } else {
+// return null;
+// }
+// }
+//
+// public void endDocument() throws SAXException {}
+//
+// public void characters(char[] ch, int start, int length, String xpath) {}
+//
+// public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+//
+// public void startPrefixMapping(String prefix, String uri, String xpath) {}
+//
+// public void endPrefixMapping(String prefix, String xpath) {}
+//
+// public void processingInstruction(String target, String data, String xpath) {}
+//
+// public void skippedEntity(String name, String xpath) {}
+//
+// public void setParameters(Hashtable<String,Object> params) {
+// this.hParams=params;
+// }
+//
+// public void setDocumentLocator(Locator locator) {}
+//}
--- /dev/null
+/*
+ * Copyright
+ * 2008 axYus - www.axyus.com
+ * 2008 C ESCOBAR - christel.escobar@axyus.com
+ *
+ * This file is part of XEMELIOS.
+ *
+ * XEMELIOS is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * XEMELIOS 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
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XEMELIOS; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+
+package fr.gouv.finances.cp.xemelios.controls.pesv2.dep;
+
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.dgfip.xemelios.controls.core.AbstractUnitControl;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Anomalie;
+import fr.gouv.finances.dgfip.xemelios.controls.core.IdGenerator;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Node;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+/**
+ * Implémente le contrôle N° DEP16
+ *
+ * Contrôle d\92existence de la pièce initiale
+ *
+ * 1) SI Piece/ BlocPiece/ InfoPce/ TypPce[@V] parmi 02 et 05
+ * ALORS présence de LigneDePiece/BlocLignePiece/RattachPiece
+ * 2) SI Piece/ BlocPiece/ InfoPce/ TypPce[@V]=03 ET SI Piece/ BlocPiece/ InfoPce/ NatPce[@V]=18
+ * ALORS présence de LigneDePiece/BlocLignePiece/RattachPiece
+ * 3) SI Piece/ BlocPiece/ InfoPce/ TypPce[@V]=13 ET SI Piece/ BlocPiece/ InfoPce/ NatPce[@V]=01
+ * ALORS présence de LigneDePiece/BlocLignePiece/RattachPiece
+ *
+ */
+
+public class DEP16 extends AbstractUnitControl implements ConstantsControlsPESv2{
+ private final static Logger logger = Logger.getLogger(DEP16.class);
+ public static final transient String CTRL_ID = "DEP16";
+ private Vector<Anomalie> anos = new Vector<Anomalie>();
+ private Hashtable<String,Object> hParams;
+
+ /**
+ * La balise du document général
+ */
+ private String docId = null;
+ private String nodeId = null;
+
+ /**
+ * La chaine cible
+ */
+ private static final String FIN_PIECE = "/PES_DepenseAller/Bordereau/Piece/";
+ private static final String FIN_LIGNEPCE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/";
+ private static final String ON_RETURN_ANOMALIES = FIN_PIECE;
+
+
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+
+ private String bord_IdBord = "";
+ private String bord_ExerBord = "";
+ private String bord_TypBord = "";
+ private String piece_IdPce = "";
+ private String piece_TypPce = "";
+ private String piece_NatPce = "";
+ private String lignepiece_Id = "";
+ private String lignepiece_NodeId = "";
+
+
+
+ private boolean rattachPieceExist = false;
+
+// private Vector<String> vTypValide = new Vector<String>();
+
+ /**
+ * Variables devant être remplacées dans le message
+ */
+ private static final String MSG_BORD_NUM = "#BORD_NUM#";
+ private static final String MSG_BORD_EXER = "#BORD_EXER#";
+ private static final String MSG_BORD_TYPE = "#BORD_TYPBORD#";
+ private static final String MSG_PIECE_ID = "#PIECE_IDPCE#";
+ private static final String MSG_LIGNEPIECE_ID = "#LIGNE_IDLIGNE#";
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses uniquement
+ */
+ private static final String CHEMIN_BLOCBORDEREAU = "/PES_DepenseAller/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_PIECE = "/PES_DepenseAller/Bordereau/Piece/";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/PES_DepenseAller/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/PES_DepenseAller/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/PES_DepenseAller/Bordereau/BlocBordereau/TypBord/";
+ private static final String CHEMIN_BLOCPIECE_IDPIECE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/InfoPce/IdPce/";
+ private static final String CHEMIN_BLOCPIECE_TYPPIECE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/InfoPce/TypPce/";
+ private static final String CHEMIN_BLOCPIECE_NATPIECE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/InfoPce/NatPce/";
+ private static final String CHEMIN_LIGNEPIECE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/";
+ private static final String CHEMIN_INFOLIGNEPIECE_IDLIGNE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/IdLigne/";
+ private static final String CHEMIN_BLOCLIGNEPIECE_RATTACHPIECE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/RattachPiece/";
+
+
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+// vTypValide.add("02");vTypValide.add("03");vTypValide.add("04");vTypValide.add("05");vTypValide.add("13");
+ }
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+ public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+ // 1
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ anos = new Vector<Anomalie>();
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_ExerBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ }
+ if(xpath.endsWith(CHEMIN_PIECE)){
+ piece_TypPce = piece_NatPce = piece_IdPce = "";
+ }
+ if(xpath.endsWith(CHEMIN_BLOCPIECE_IDPIECE)){
+ piece_IdPce = atts.getValue("V");
+ anos.clear();
+ }
+ if(xpath.endsWith(CHEMIN_BLOCLIGNEPIECE_RATTACHPIECE)){
+ rattachPieceExist = true;
+ }
+ if(xpath.endsWith(CHEMIN_BLOCPIECE_TYPPIECE)){
+ piece_TypPce = atts.getValue("V");;
+ }
+ if(xpath.endsWith(CHEMIN_BLOCPIECE_NATPIECE)){
+ piece_NatPce = atts.getValue("V");;
+ }
+ if(xpath.endsWith(CHEMIN_LIGNEPIECE)){
+ lignepiece_NodeId = "";
+ rattachPieceExist = false;
+ }
+ if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE_IDLIGNE)) {
+ lignepiece_Id = atts.getValue("V");
+ lignepiece_NodeId = atts.getValue("ano:node-id");
+ }
+ }
+
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+ if(xpath.endsWith(FIN_LIGNEPCE)){
+ //1
+ if( (piece_TypPce.equals("02") || piece_TypPce.equals("05")) && !rattachPieceExist){
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_ExerBord);
+ msg = msg.replaceAll(MSG_BORD_TYPE, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_ID, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNEPIECE_ID, lignepiece_Id);
+ String path="@added:primary-key='"+bord_ExerBord+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId","");
+ xslParams.put("mandatId",piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_DEPENSE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ ano.addNode(new Node(lignepiece_NodeId));
+ anos.add(ano);
+ }
+ //2
+ if( piece_TypPce.equals("03") && piece_NatPce.equals("18") && !rattachPieceExist ){
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_ExerBord);
+ msg = msg.replaceAll(MSG_BORD_TYPE, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_ID, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNEPIECE_ID, lignepiece_Id);
+ String path="@added:primary-key='"+bord_ExerBord+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId","");
+ xslParams.put("mandatId",piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_DEPENSE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ ano.addNode(new Node(lignepiece_NodeId));
+ anos.add(ano);
+ }
+ //3
+ if( piece_TypPce.equals("13") && piece_NatPce.equals("01") && !rattachPieceExist ){
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_ExerBord);
+ msg = msg.replaceAll(MSG_BORD_TYPE, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_ID, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNEPIECE_ID, lignepiece_Id);
+ String path="@added:primary-key='"+bord_ExerBord+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId","");
+ xslParams.put("mandatId",piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_DEPENSE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ ano.addNode(new Node(lignepiece_NodeId));
+ anos.add(ano);
+ }
+ return null;
+ }else if(xpath.endsWith(ON_RETURN_ANOMALIES)){
+ return anos;
+ } else {
+ return null;
+ }
+ }
+
+ public void endDocument() throws SAXException {}
+
+ public void characters(char[] ch, int start, int length, String xpath) {}
+
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ public void skippedEntity(String name, String xpath) {}
+
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) {}
+}
--- /dev/null
+/*
+ * Implémente le contrôle N° DEP17
+ *
+ * Contrôle d\92existence de la pièce initiale
+ *
+ * SI Piece/ BlocPiece/ InfoPce/ TypPce[@V] parmi 03, 04, 05, 13 ALORS présence de LigneDePiece/BlocLignePiece/RattachPiece
+ *
+ */
+package fr.gouv.finances.cp.xemelios.controls.pesv2.dep;
+
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.dgfip.xemelios.controls.core.AbstractUnitControl;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Anomalie;
+import fr.gouv.finances.dgfip.xemelios.controls.core.IdGenerator;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Node;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+public class DEP17 extends AbstractUnitControl implements ConstantsControlsPESv2{
+ private final static Logger logger = Logger.getLogger(DEP17.class);
+ public static final transient String CTRL_ID = "DEP17";
+ private Vector<Anomalie> anos = new Vector<Anomalie>();
+ private Hashtable<String,Object> hParams;
+
+ /**
+ * La balise du document général
+ */
+ private String docId = null;
+ private String nodeId = null;
+
+ /**
+ * La chaine cible
+ */
+ private static final String FIN_PIECE = "/PES_DepenseAller/Bordereau/Piece/";
+ private static final String LIGNEPCE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/";
+ private static final String ON_RETURN_ANOMALIES = FIN_PIECE;
+
+
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+
+ private String bord_IdBord = "";
+ private String bord_ExerBord = "";
+ private String bord_TypBord = "";
+ private String piece_IdPce = "";
+ private String piece_TypPce = "";
+ private String piece_NodeIdPce = "";
+ private String lignepiece_Id = "";
+ private String lignepiece_NodeId = "";
+ private String lignepiece_IdEmpruntOrdo = "";
+ private String lignepiece_IdEmpruntOrdo_NodeId = "";
+
+
+
+ private boolean rattachPieceExist = false;
+
+ private Vector<Triplet> vIdEmpruntOrdo = new Vector<Triplet>();
+
+ /**
+ * Variables devant être remplacées dans le message
+ */
+ private static final String MSG_BORD_NUM = "#BORD_NUM#";
+ private static final String MSG_BORD_EXER = "#BORD_EXER#";
+ private static final String MSG_BORD_TYPE = "#BORD_TYPBORD#";
+ private static final String MSG_PIECE_ID = "#PIECE_IDPCE#";
+ private static final String MSG_LIGNEPIECE_ID = "#LIGNE_IDLIGNE#";
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses uniquement
+ */
+ private static final String CHEMIN_BLOCBORDEREAU = "/PES_DepenseAller/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_PIECE = "/PES_DepenseAller/Bordereau/";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/PES_DepenseAller/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/PES_DepenseAller/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/PES_DepenseAller/Bordereau/BlocBordereau/TypBord/";
+ private static final String CHEMIN_BLOCPIECE_IDPIECE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/InfoPce/IdPce/";
+ private static final String CHEMIN_BLOCPIECE_TYPPIECE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/InfoPce/TypPce/";
+ private static final String CHEMIN_BLOCLIGNEPIECE_ID = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/IdLigne/";
+ private static final String CHEMIN_BLOCLIGNEPIECE_IDEMPRUNTORDO = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/LiensIdent/IdEmpruntOrdo/";
+ private static final String CHEMIN_BLOCLIGNEPIECE_NATORIGPIECE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/RattachPiece/NatOrigPce/";
+
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+ }
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+ public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+ // 1
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ anos = new Vector<Anomalie>();
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_ExerBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ }
+ if(xpath.endsWith(CHEMIN_BLOCPIECE_IDPIECE)){
+ piece_IdPce = atts.getValue("V");
+ anos.clear();
+ }
+ if(xpath.endsWith(CHEMIN_BLOCLIGNEPIECE_IDEMPRUNTORDO)){
+ lignepiece_IdEmpruntOrdo = atts.getValue("V");
+ lignepiece_IdEmpruntOrdo_NodeId = atts.getValue("ano:node-id");
+ }
+ if(xpath.endsWith(CHEMIN_BLOCPIECE_TYPPIECE)){
+ piece_TypPce = atts.getValue("V");
+ }
+ if(xpath.endsWith(CHEMIN_BLOCLIGNEPIECE_ID)){
+ lignepiece_Id = atts.getValue("V");
+ lignepiece_NodeId = atts.getValue("ano:node-id");
+ }
+ }
+
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+ if(xpath.endsWith(LIGNEPCE)){
+ if(lignepiece_IdEmpruntOrdo_NodeId.equals("")){
+ lignepiece_IdEmpruntOrdo_NodeId = lignepiece_NodeId;
+ }
+ vIdEmpruntOrdo.add(new Triplet(lignepiece_Id,lignepiece_IdEmpruntOrdo,lignepiece_IdEmpruntOrdo_NodeId));
+ lignepiece_IdEmpruntOrdo="";
+ lignepiece_IdEmpruntOrdo_NodeId="";
+ return null;
+ }else if(xpath.endsWith(ON_RETURN_ANOMALIES)){
+ Vector<Triplet> vtriplet = new Vector<Triplet>();
+ for(Triplet tri:vIdEmpruntOrdo){
+ String ligneId = tri.idLigne;
+ String emprunt = tri.empruntOrdo;
+ String nodeId = tri.empruntOrdo_NodeId;
+ if(emprunt.equals("")){
+ vtriplet.add(new Triplet(ligneId,emprunt,nodeId));
+ }
+ }
+ if(vIdEmpruntOrdo.size()>0 && vtriplet.size()!=vIdEmpruntOrdo.size()){
+ for(Triplet t:vtriplet){
+ String ligneId = t.idLigne;
+ String nodeId = t.empruntOrdo_NodeId;
+
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_ExerBord);
+ msg = msg.replaceAll(MSG_BORD_TYPE, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_ID, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNEPIECE_ID, ligneId);
+ String path="@added:primary-key='"+bord_ExerBord+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId","");
+ xslParams.put("mandatId",piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_DEPENSE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ ano.addNode(new Node(nodeId));
+ anos.add(ano);
+ }
+ }
+ vIdEmpruntOrdo.clear();
+ return anos;
+ } else {
+ return null;
+ }
+ }
+
+ public void endDocument() throws SAXException {}
+
+ public void characters(char[] ch, int start, int length, String xpath) {}
+
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ public void skippedEntity(String name, String xpath) {}
+
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) {}
+
+ private class Triplet{
+ private String idLigne,empruntOrdo,empruntOrdo_NodeId;
+ private Triplet(String id,String emprunt,String empruntNode){
+ this.idLigne = id;
+ this.empruntOrdo = emprunt;
+ this.empruntOrdo_NodeId = empruntNode;
+ }
+ }
+}
--- /dev/null
+/*
+ * Implémente le contrôle N° DEP18
+ *
+ * Contrôle de présence du numéro d\92inventaire
+ *
+ * Dans le cas des opérations d\92ordre mixte, le numéro d\92inventaire est associé à un compte de contrepartie. (compte tiers)
+ *
+ */
+package fr.gouv.finances.cp.xemelios.controls.pesv2.dep;
+
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.dgfip.xemelios.controls.core.AbstractUnitControl;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Anomalie;
+import fr.gouv.finances.dgfip.xemelios.controls.core.IdGenerator;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Node;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+public class DEP18 extends AbstractUnitControl implements ConstantsControlsPESv2{
+ private final static Logger logger = Logger.getLogger(DEP18.class);
+ public static final transient String CTRL_ID = "DEP18";
+ private Vector<Anomalie> anos = new Vector<Anomalie>();
+ private Hashtable<String,Object> hParams;
+
+ /**
+ * La balise du document général
+ */
+ private String docId = null;
+ private String nodeId = null;
+
+ /**
+ * La chaine cible
+ */
+ private static final String FIN_PIECE = "/PES_DepenseAller/Bordereau/Piece/";
+ private static final String LIGNEPCE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/";
+ private static final String ON_RETURN_ANOMALIES = FIN_PIECE;
+
+
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+
+ private String bord_IdBord = "";
+ private String bord_ExerBord = "";
+ private String bord_TypBord = "";
+ private String piece_IdPce = "";
+ private String piece_TypPce = "";
+ private String piece_NodeIdPce = "";
+ private String lignepiece_Id = "";
+ private String lignepiece_TypPce_NodeId = "";
+ private String lignepiece_CpteTiers_NodeId = "";
+ private String node_id_id_actif = "";
+
+
+ private boolean idActifExist = false;
+ private boolean cpteTiersExist = false;
+
+ private Vector<Triplet> vCpteTiersNodeId = new Vector<Triplet>();
+
+ /**
+ * Variables devant être remplacées dans le message
+ */
+ private static final String MSG_BORD_NUM = "#BORD_NUM#";
+ private static final String MSG_BORD_EXER = "#BORD_EXER#";
+ private static final String MSG_BORD_TYPE = "#BORD_TYPBORD#";
+ private static final String MSG_PIECE_ID = "#PIECE_IDPCE#";
+ private static final String MSG_LIGNEPIECE_ID = "#LIGNE_IDLIGNE#";
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses uniquement
+ */
+ private static final String CHEMIN_BLOCBORDEREAU = "/PES_DepenseAller/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_PIECE = "/PES_DepenseAller/Bordereau/";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/PES_DepenseAller/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/PES_DepenseAller/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/PES_DepenseAller/Bordereau/BlocBordereau/TypBord/";
+ private static final String CHEMIN_BLOCPIECE_IDPIECE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/InfoPce/IdPce/";
+ private static final String CHEMIN_BLOCPIECE_TYPPIECE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/InfoPce/TypPce/";
+ private static final String CHEMIN_BLOCLIGNEPIECE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/";
+ private static final String CHEMIN_BLOCLIGNEPIECE_ID = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/IdLigne/";
+ private static final String CHEMIN_BLOCLIGNEPIECE_CPTETIERS = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/CpteTiers/";
+ private static final String CHEMIN_BLOCLIGNEPIECE_IDACTIF = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/LiensIdent/IdActif/";
+
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+ }
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+ public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+ // 1
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ anos = new Vector<Anomalie>();
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_ExerBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ }
+ if(xpath.endsWith(CHEMIN_BLOCPIECE_IDPIECE)){
+ piece_IdPce = atts.getValue("V");
+ anos.clear();
+ }
+ if(xpath.endsWith(CHEMIN_BLOCLIGNEPIECE)){
+ node_id_id_actif = "";
+ }
+ if(xpath.endsWith(CHEMIN_BLOCLIGNEPIECE_IDACTIF)){
+ idActifExist = true;
+ node_id_id_actif = atts.getValue("ano:node-id");
+ }
+ if(xpath.endsWith(CHEMIN_BLOCLIGNEPIECE_CPTETIERS)){
+ cpteTiersExist = true;
+ lignepiece_CpteTiers_NodeId = atts.getValue("ano:node-id");
+ }
+
+ if(xpath.endsWith(CHEMIN_BLOCPIECE_TYPPIECE)){
+ piece_TypPce = atts.getValue("V");
+ lignepiece_TypPce_NodeId = atts.getValue("ano:node-id");
+ }
+ if(xpath.endsWith(CHEMIN_BLOCLIGNEPIECE_ID)){
+ lignepiece_Id = atts.getValue("V");
+ }
+ }
+
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+ if(xpath.endsWith(LIGNEPCE)){
+ if(piece_TypPce.equals("04") && idActifExist && !cpteTiersExist){
+ vCpteTiersNodeId.add(new Triplet(lignepiece_Id,lignepiece_TypPce_NodeId,node_id_id_actif));
+ }
+ idActifExist=false;
+ cpteTiersExist=false;
+ lignepiece_CpteTiers_NodeId="";
+ return null;
+ }else if(xpath.endsWith(ON_RETURN_ANOMALIES)){
+ if(vCpteTiersNodeId.size()>0){
+ for(Triplet triplet:vCpteTiersNodeId){
+ String nodeid_typepce = triplet.nodeid_typePce;
+ String ligneId = triplet.idLigne;
+ String nodeid_idactif = triplet.nodeid_idactif;
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_ExerBord);
+ msg = msg.replaceAll(MSG_BORD_TYPE, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_ID, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNEPIECE_ID, ligneId);
+ String path="@added:primary-key='"+bord_ExerBord+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId","");
+ xslParams.put("mandatId",piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_DEPENSE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ ano.addNode(new Node(nodeid_typepce));
+ ano.addNode(new Node(nodeid_idactif));
+ anos.add(ano);
+ }
+ }
+ vCpteTiersNodeId.clear();
+ return anos;
+ } else {
+ return null;
+ }
+ }
+
+ public void endDocument() throws SAXException {}
+
+ public void characters(char[] ch, int start, int length, String xpath) {}
+
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ public void skippedEntity(String name, String xpath) {}
+
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) {}
+
+ private class Triplet{
+ private String idLigne,nodeid_typePce,nodeid_idactif;
+ private Triplet(String id,String nodeidtyppce,String nodeididactif){
+ this.idLigne = id;
+ this.nodeid_typePce = nodeidtyppce;
+ this.nodeid_idactif = nodeididactif;
+ }
+ }
+}
--- /dev/null
+/*
+ * Copyright
+ * 2008 axYus - www.axyus.com
+ * 2008 C ESCOBAR - christel.escobar@axyus.com
+ *
+ * This file is part of XEMELIOS.
+ *
+ * XEMELIOS is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * XEMELIOS 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
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XEMELIOS; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+package fr.gouv.finances.cp.xemelios.controls.pesv2.dep;
+
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.dgfip.xemelios.controls.core.AbstractUnitControl;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Anomalie;
+import fr.gouv.finances.dgfip.xemelios.controls.core.IdGenerator;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Node;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+public class DEP19 extends AbstractUnitControl implements ConstantsControlsPESv2{
+
+/**
+ * Implémente le contrôle N° DEP19
+ *
+ * Contrôle de présence du numéro d\92inventaire
+ *
+ * Vérifier pour tous les mandats, si Piece/ BlocPiece/ InfoPce/ TypPce[@V] vaut 03 ou 04, alors :
+ * 1) la balise ModRegl ne peut valoir (01 / 02 / 03 / 04 / 05 / 06 / 10 : numéraire / cheque / prélèvement ou virement).
+ * 2) aucunes de ses lignes ne doit avoir de bloc LigneDePiece/ Tiers/CpteBancaire (BLOQUANT).
+ * Messages d'erreur différents selon si la balise CodeEtab est valoris&ée à 30001
+ * 3) toutes ses lignes doivent avoir un tiers dont la CatTiers vaut 20 et NatJur 07.
+ *
+ */
+
+ private final static Logger logger = Logger.getLogger(DEP19.class);
+ public static final transient String CTRL_ID = "DEP19";
+ private Vector<Anomalie> anos = new Vector<Anomalie>();
+ private Hashtable<String,Object> hParams;
+
+ /**
+ * La balise du document général
+ */
+ private String docId = null;
+ private String nodeId = null;
+
+ /**
+ * La chaine cible
+ */
+ private static final String FIN_PIECE = "/PES_DepenseAller/Bordereau/Piece/";
+ private static final String LIGNEPCE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/";
+ private static final String ON_RETURN_ANOMALIES = FIN_PIECE;
+
+
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+
+ private String bord_IdBord = "";
+ private String bord_ExerBord = "";
+ private String bord_TypBord = "";
+ private String piece_IdPce = "";
+ private String piece_TypPce = "";
+ private String lignepiece_Id = "";
+ private String lignepiece_TypPce_NodeId = "";
+ private String lignepiece_CatTiers = "";
+// private String lignepiece_CpteTiers_NodeId = "";
+ private String lignepiece_CatTiers_NodeId = "";
+ private String lignepiece_NatJur = "";
+ private String lignepiece_NatJur_NodeId = "";
+ private String lignepiece_CpteBancaire = "";
+ private String lignepiece_CpteBancaire_NodeId = "";
+ private String cpteBancaire_CodeEtab = "";
+ private String cpteBancaire_CodeEtab_NodeId = "";
+ private String lignepiece_ModRegl = "";
+ private String lignepiece_ModRegl_NodeId = "";
+
+
+ /**
+ * Variables devant être remplacées dans le message
+ */
+ private static final String MSG_BORD_NUM = "#BORD_NUM#";
+ private static final String MSG_BORD_EXER = "#BORD_EXER#";
+ private static final String MSG_BORD_TYPE = "#BORD_TYPBORD#";
+ private static final String MSG_PIECE_ID = "#PIECE_IDPCE#";
+ private static final String MSG_LIGNEPIECE_ID = "#LIGNE_IDLIGNE#";
+ private static final String MSG_ERREUR = "#ERREUR#";
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses uniquement
+ */
+ private static final String CHEMIN_BLOCBORDEREAU = "/PES_DepenseAller/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_PIECE = "/PES_DepenseAller/Bordereau/Piece/";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/PES_DepenseAller/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/PES_DepenseAller/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/PES_DepenseAller/Bordereau/BlocBordereau/TypBord/";
+ private static final String CHEMIN_BLOCPIECE_IDPIECE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/InfoPce/IdPce/";
+ private static final String CHEMIN_BLOCPIECE_TYPPIECE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/InfoPce/TypPce/";
+ private static final String CHEMIN_LIGNEPIECE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/";
+ private static final String CHEMIN_BLOCLIGNEPIECE_ID = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/IdLigne/";
+ private static final String CHEMIN_BLOCLIGNEPIECE_MODREGL = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/ModRegl/";
+ private static final String CHEMIN_BLOCLIGNEPIECE_CATTIERS = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/Tiers/InfoTiers/CatTiers/";
+ private static final String CHEMIN_BLOCLIGNEPIECE_NATJUR = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/Tiers/InfoTiers/NatJur/";
+ private static final String CHEMIN_BLOCLIGNEPIECE_CPTEBANCAIRE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/Tiers/CpteBancaire/";
+ private static final String CHEMIN_CPTEBANCAIRE_CODEETAB = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/Tiers/CpteBancaire/CodeEtab/";
+
+
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+ }
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+ public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+ // 1
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ anos = new Vector<Anomalie>();
+ bord_ExerBord = bord_IdBord = bord_TypBord = "";
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_ExerBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_PIECE)) {
+ piece_TypPce = piece_IdPce = "";
+ lignepiece_TypPce_NodeId = "";
+ anos.clear();
+ }
+ if(xpath.endsWith(CHEMIN_BLOCPIECE_IDPIECE)){
+ piece_IdPce = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_LIGNEPIECE)) {
+ lignepiece_CatTiers = lignepiece_CpteBancaire = lignepiece_NatJur = lignepiece_ModRegl = lignepiece_Id = "";
+ lignepiece_CatTiers_NodeId = lignepiece_CpteBancaire_NodeId = lignepiece_NatJur_NodeId = lignepiece_ModRegl_NodeId = "";
+ }
+ if(xpath.endsWith(CHEMIN_BLOCLIGNEPIECE_CATTIERS)){
+ lignepiece_CatTiers = atts.getValue("V");
+ lignepiece_CatTiers_NodeId = atts.getValue("ano:node-id");
+ }
+ if(xpath.endsWith(CHEMIN_BLOCLIGNEPIECE_CPTEBANCAIRE)){
+ lignepiece_CpteBancaire = "OK";
+ lignepiece_CpteBancaire_NodeId = atts.getValue("ano:node-id");
+ }
+ if(xpath.endsWith(CHEMIN_CPTEBANCAIRE_CODEETAB)){
+ cpteBancaire_CodeEtab = atts.getValue("V");
+ cpteBancaire_CodeEtab_NodeId = atts.getValue("ano:node-id");
+ }
+ if(xpath.endsWith(CHEMIN_BLOCLIGNEPIECE_NATJUR)){
+ lignepiece_NatJur = atts.getValue("V");
+ lignepiece_NatJur_NodeId= atts.getValue("ano:node-id");
+ }
+ if(xpath.endsWith(CHEMIN_BLOCPIECE_TYPPIECE)){
+ piece_TypPce = atts.getValue("V");
+ lignepiece_TypPce_NodeId = atts.getValue("ano:node-id");
+ }
+ if(xpath.endsWith(CHEMIN_BLOCLIGNEPIECE_ID)){
+ lignepiece_Id = atts.getValue("V");
+ }
+ if(xpath.endsWith(CHEMIN_BLOCLIGNEPIECE_MODREGL)){
+ lignepiece_ModRegl = atts.getValue("V");
+ lignepiece_ModRegl_NodeId = atts.getValue("V");
+ }
+ }
+
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+ if(xpath.endsWith(LIGNEPCE)){
+ if(piece_TypPce.equals("03") || piece_TypPce.equals("04")){
+//1
+ Vector<String> modReglNonPermis = new Vector<String>();
+ modReglNonPermis.add("01"); modReglNonPermis.add("02"); modReglNonPermis.add("03");
+ modReglNonPermis.add("04"); modReglNonPermis.add("05"); modReglNonPermis.add("06");
+ modReglNonPermis.add("09"); modReglNonPermis.add("10");
+
+ if (modReglNonPermis.contains(lignepiece_ModRegl)){
+ String severity = "BLOQUANT";
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ String erreur = "Le mode de règlement indiqué n'est pas autorisé pour les mandats d'ordre";
+
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_ExerBord);
+ msg = msg.replaceAll(MSG_BORD_TYPE, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_ID, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNEPIECE_ID, lignepiece_Id);
+ msg = msg.replaceAll(MSG_ERREUR, erreur);
+
+ String path="@added:primary-key='"+bord_ExerBord+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId","");
+ xslParams.put("mandatId",piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_DEPENSE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ severity,
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+
+ ano.addNode(new Node(lignepiece_ModRegl_NodeId));
+ anos.add(ano);
+
+ }
+
+//2
+ if (!lignepiece_CpteBancaire.equals("")){
+ String severity = "BLOQUANT";
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ String erreur = "";
+
+ if (cpteBancaire_CodeEtab.equals("30001"))
+ erreur = "Le bloc banque ne doit pas être valorisé et ne peut correspondre à un compte banque de France";
+ else
+ erreur = "Le bloc banque ne peut être renseigné lorsqu'il s'agit d'un mandat typé d'ordre";
+
+
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_ExerBord);
+ msg = msg.replaceAll(MSG_BORD_TYPE, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_ID, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNEPIECE_ID, lignepiece_Id);
+ msg = msg.replaceAll(MSG_ERREUR, erreur);
+
+ String path="@added:primary-key='"+bord_ExerBord+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId","");
+ xslParams.put("mandatId",piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_DEPENSE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ severity,
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+
+ ano.addNode(new Node(lignepiece_CpteBancaire_NodeId));
+ anos.add(ano);
+ }
+
+//3
+ if (!lignepiece_CatTiers.equals("20") || !lignepiece_NatJur.equals("07")){
+ String severity = getDocumentModel().getControlById(CTRL_ID).getSeverity();
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ String erreur = "Pour les mandats d'ordre, le créancier correspond au receveur de la collectivité (de préférence CatTiers valorisé à 20 et NatJur valorisé à 07) NON BLOQUANT";
+
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_ExerBord);
+ msg = msg.replaceAll(MSG_BORD_TYPE, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_ID, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNEPIECE_ID, lignepiece_Id);
+ msg = msg.replaceAll(MSG_ERREUR, erreur);
+
+ String path="@added:primary-key='"+bord_ExerBord+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId","");
+ xslParams.put("mandatId",piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_DEPENSE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ severity,
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+
+ if (!lignepiece_CatTiers.equals("20"))
+ ano.addNode(new Node(lignepiece_CatTiers_NodeId));
+ if (!lignepiece_NatJur.equals("07"))
+ ano.addNode(new Node(lignepiece_NatJur_NodeId));
+
+ anos.add(ano);
+ }
+ }
+ return null;
+ }else if(xpath.endsWith(ON_RETURN_ANOMALIES)){
+ return anos;
+ } else {
+ return null;
+ }
+ }
+
+ public void endDocument() throws SAXException {}
+
+ public void characters(char[] ch, int start, int length, String xpath) {}
+
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ public void skippedEntity(String name, String xpath) {}
+
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) {}
+
+// private class Triplet{
+// private String lignePceId;
+// private String severity;
+// private Vector<String> v = new Vector<String>();
+// private Triplet (String idligne,String sev,Vector<String> nodes){
+// this.lignePceId = idligne;
+// this.severity = sev;
+// this.v = nodes;
+// }
+// }
+}
--- /dev/null
+/*
+ * Copyright
+ * 2010 axYus - www.axyus.com
+ * 2010 Christel ESCOBAR - christel.escobar@axyus.com
+ *
+ * This file is part of XEMELIOS.
+ *
+ * XEMELIOS is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * XEMELIOS 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
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XEMELIOS; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+package fr.gouv.finances.cp.xemelios.controls.pesv2.dep;
+
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.dgfip.xemelios.controls.core.AbstractUnitControl;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Anomalie;
+import fr.gouv.finances.dgfip.xemelios.controls.core.IdGenerator;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+/**
+ * Implémente le contrôle N° DEP20
+ *
+ * Contrôles spécifiques aux HLM
+ *
+ * L'information TVA HLM est obligatoire
+ * Modification CHM du 2010-08-09 : désactivé
+ *
+**/
+public class DEP20 extends AbstractUnitControl implements ConstantsControlsPESv2{
+ private final static Logger logger = Logger.getLogger(DEP20.class);
+ public static final transient String CTRL_ID = "DEP20";
+ private Vector<Anomalie> anos = new Vector<Anomalie>();
+ private Hashtable<String,Object> hParams;
+
+ /**
+ * La balise du document général
+ */
+ private String docId = null;
+ private String nodeId = null;
+
+ /**
+ * La chaine cible
+ */
+ private static final String FIN_PIECE = "/PES_DepenseAller/Bordereau/Piece/";
+ private static final String LIGNEPCE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/";
+ private static final String ON_RETURN_ANOMALIES = FIN_PIECE;
+
+
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+
+ private String bord_IdBord = "";
+ private String bord_ExerBord = "";
+ private String bord_TypBord = "";
+ private String piece_IdPce = "";
+ private String piece_TypPce = "";
+ private String piece_NodeIdPce = "";
+ private String lignepiece_Id = "";
+ private String lignepiece_TypPce_NodeId = "";
+ private String lignepiece_InfoTVAHLM = "";
+ private String lignepiece_InfoTVAHLM_NodeId = "";
+
+ private Vector<String> vLigneId = new Vector<String>();
+
+ /**
+ * Variables devant être remplacées dans le message
+ */
+ private static final String MSG_BORD_NUM = "#BORD_NUM#";
+ private static final String MSG_BORD_EXER = "#BORD_EXER#";
+ private static final String MSG_BORD_TYPE = "#BORD_TYPBORD#";
+ private static final String MSG_PIECE_ID = "#PIECE_IDPCE#";
+ private static final String MSG_LIGNEPIECE_ID = "#LIGNE_IDLIGNE#";
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses uniquement
+ */
+ private static final String CHEMIN_BLOCBORDEREAU = "/PES_DepenseAller/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_PIECE = "/PES_DepenseAller/Bordereau/";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/PES_DepenseAller/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/PES_DepenseAller/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/PES_DepenseAller/Bordereau/BlocBordereau/TypBord/";
+ private static final String CHEMIN_BLOCPIECE_IDPIECE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/InfoPce/IdPce/";
+ private static final String CHEMIN_BLOCPIECE_TYPPIECE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/InfoPce/TypPce/";
+ private static final String CHEMIN_BLOCLIGNEPIECE_ID = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/IdLigne/";
+ private static final String CHEMIN_BLOCLIGNEPIECE_CATTIERS = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/Tiers/InfoTiers/CatTiers/";
+ private static final String CHEMIN_BLOCLIGNEPIECE_NATJUR = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/Tiers/InfoTiers/NatJur/";
+ private static final String CHEMIN_BLOCLIGNEPIECE_INFOTVAHLM = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoTVAHLM/";
+
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+ }
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+ public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+ // 1
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ anos = new Vector<Anomalie>();
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_ExerBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ }
+ if(xpath.endsWith(CHEMIN_BLOCPIECE_IDPIECE)){
+ piece_IdPce = atts.getValue("V");
+ anos.clear();
+ vLigneId.clear();
+ }
+ if(xpath.endsWith(CHEMIN_BLOCLIGNEPIECE_INFOTVAHLM)){
+ lignepiece_InfoTVAHLM= "OK";
+ lignepiece_InfoTVAHLM_NodeId = atts.getValue("ano:node-id");
+ }
+ if(xpath.endsWith(CHEMIN_BLOCPIECE_TYPPIECE)){
+ piece_TypPce = atts.getValue("V");
+ lignepiece_TypPce_NodeId = atts.getValue("ano:node-id");
+ }
+ if(xpath.endsWith(CHEMIN_BLOCLIGNEPIECE_ID)){
+ lignepiece_Id = atts.getValue("V");
+ }
+ }
+
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+ if(xpath.endsWith(LIGNEPCE)){
+ if(lignepiece_InfoTVAHLM.equals("") && hParams.get("nomencl").equals("M31")){
+ vLigneId.add(lignepiece_Id);
+ }
+ lignepiece_InfoTVAHLM = "";
+ return null;
+ }else if(xpath.endsWith(ON_RETURN_ANOMALIES)){
+ for(String ligneId:vLigneId){
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_ExerBord);
+ msg = msg.replaceAll(MSG_BORD_TYPE, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_ID, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNEPIECE_ID, ligneId);
+ String path="@added:primary-key='"+bord_ExerBord+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId","");
+ xslParams.put("mandatId",piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_DEPENSE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ anos.add(ano);
+ }
+// return anos;
+ return null;
+ } else {
+ return null;
+ }
+ }
+
+ public void endDocument() throws SAXException {}
+
+ public void characters(char[] ch, int start, int length, String xpath) {}
+
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ public void skippedEntity(String name, String xpath) {}
+
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) {}
+
+ private class Triplet{
+ private String lignePceId;private String severity;
+ private Vector<String> v = new Vector<String>();
+ private Triplet (String idligne,String sev,Vector<String> nodes){
+ this.lignePceId = idligne;
+ this.severity = sev;
+ this.v = nodes;
+ }
+ }
+}
--- /dev/null
+/*
+ * Copyright
+ * 2007 axYus - www.axyus.com
+ * 2010 C ESCOBAR - christel.escobar@axyus.com
+ *
+ * This file is part of XEMELIOS.
+ *
+ * XEMELIOS is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * XEMELIOS 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
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XEMELIOS; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+package fr.gouv.finances.cp.xemelios.controls.pesv2.dep;
+
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.dgfip.xemelios.controls.core.AbstractUnitControl;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Anomalie;
+import fr.gouv.finances.dgfip.xemelios.controls.core.IdGenerator;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+/**
+ * Implémente le contrôle N° DEP21
+ *
+ * Contrôles spécifiques aux Hôpitaux
+ *
+ * Le compte de TVA doit être renseigné.
+ *
+ * Si PAR1=M21 ou M22, alors vérifier que
+ * - pour toutes les lignes LigneDePiece / BlocLignePiece/ InfoLignePce/ CpteTva est renseigné.
+ * Modif 2010-08-09 CHM: désactivé
+ *
+ */
+public class DEP21 extends AbstractUnitControl implements ConstantsControlsPESv2{
+
+
+ private final static Logger logger = Logger.getLogger(DEP21.class);
+ public static final transient String CTRL_ID="DEP21";
+ private Vector<Anomalie> anos = new Vector<Anomalie>();
+ private Hashtable<String,Object> hParams;
+
+ /**
+ * La balise du document général
+ */
+ private String docId = null;
+ private String bord_nodeId = null;
+ private String ligne_nodeId = "";
+
+ /**
+ * La chaine cible
+ */
+ private static final String FIN_BORDEREAU = "/PES_DepenseAller/Bordereau/";
+ private static final String FIN_PIECE = "/PES_DepenseAller/Bordereau/Piece/";
+ private static final String FIN_LIGNE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/";
+
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+ private String bord_Exer = "";
+ private String bord_IdBord = "";
+ private String bord_TypBord = "";
+ private String piece_IdPce = "";
+ private String ligne_IdLigne = "";
+
+ private boolean cpteTva_present = false;
+
+
+ /**
+ * Variables devant être remplacées dans le message
+ */
+ private static final String MSG_BORD_NUM = "#BORD_NUM#";
+ private static final String MSG_BORD_EXER = "#BORD_EXER#";
+ private static final String MSG_BORD_TYPBORD = "#BORD_TYPBORD#";
+ private static final String MSG_PIECE_IDPCE = "#PIECE_IDPCE#";
+ private static final String MSG_LIGNE_IDLIGNE = "#LIGNE_IDLIGNE#";
+ private static final String MSG_ERREUR = "#ERREUR#";
+
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses uniquement
+ */
+
+ private static final String CHEMIN_BLOCBORDEREAU = "/PES_DepenseAller/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/PES_DepenseAller/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/PES_DepenseAller/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/PES_DepenseAller/Bordereau/BlocBordereau/TypBord/";
+
+ private static final String CHEMIN_BLOCPIECE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/";
+ private static final String CHEMIN_BLOCPIECE_IDPCE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/InfoPce/IdPce/";
+
+ private static final String CHEMIN_INFOLIGNEPIECE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/";
+ private static final String CHEMIN_INFOLIGNEPIECE_IDLIGNE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/IdLigne/";
+ private static final String CHEMIN_INFOLIGNEPIECE_CPTETVA = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/CpteTVA/";
+
+
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+ }
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+ public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ bord_Exer = bord_IdBord = bord_TypBord = "";
+ bord_nodeId = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_Exer = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ }
+
+ // 2
+ if (xpath.endsWith(CHEMIN_BLOCPIECE)) {
+ piece_IdPce = "";
+ anos = new Vector<Anomalie>();
+ }
+ if (xpath.endsWith(CHEMIN_BLOCPIECE_IDPCE)) {
+ piece_IdPce = atts.getValue("V");
+ }
+
+ // 2
+ if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE)) {
+ ligne_IdLigne = ligne_nodeId = "";
+ cpteTva_present = false;
+
+ }
+ if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE_IDLIGNE)) {
+ ligne_IdLigne = atts.getValue("V");
+ ligne_nodeId = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE_CPTETVA)) {
+ cpteTva_present = true;
+ }
+ }
+
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+ if (haveToTest () && xpath.endsWith(FIN_LIGNE)){
+ if (!cpteTva_present) {
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ String erreur = "Le compte de TVA doit être renseigné sur toutes les lignes";
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_Exer);
+ msg = msg.replaceAll(MSG_BORD_TYPBORD, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_IDPCE, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNE_IDLIGNE, ligne_IdLigne);
+ msg = msg.replaceAll(MSG_ERREUR, erreur);
+
+
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "");
+ xslParams.put("mandatId", piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_DEPENSE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ //ano.addNode(new Node(ligne_nodeId));
+ anos.add(ano);
+ }
+ return null;
+
+ } else if(xpath.endsWith(FIN_PIECE)){
+// return anos;
+ return null;
+ }
+ return null;
+ }
+
+ private boolean haveToTest () {
+ String tmp = (String)hParams.get("nomencl");
+ return ("M21".equals(tmp) || "M22".equals(tmp));
+ }
+
+ public void endDocument() throws SAXException {}
+
+ public void characters(char[] ch, int start, int length, String xpath) {}
+
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ public void skippedEntity(String name, String xpath) {}
+
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) {}
+}
--- /dev/null
+// CES _ 08/02/2010 _ Suppression du controle suite à demande extranet 181
+
+///*
+// * Copyright
+// * 2007 axYus - www.axyus.com
+// * 2007 JP.Tessier - jean-philippe.tessier@axyus.com
+// *
+// * This file is part of XEMELIOS.
+// *
+// * XEMELIOS is free software; you can redistribute it and/or modify
+// * it under the terms of the GNU General Public License as published by
+// * the Free Software Foundation; either version 2 of the License, or
+// * (at your option) any later version.
+// *
+// * XEMELIOS 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
+// * GNU General Public License for more details.
+// *
+// * You should have received a copy of the GNU General Public License
+// * along with XEMELIOS; if not, write to the Free Software
+// * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+// */
+//
+//package fr.gouv.finances.cp.xemelios.controls.pesv2.dep;
+//
+//import fr.gouv.finances.dgfip.utils.Luhn;
+//import java.util.Hashtable;
+//import java.util.Vector;
+//
+//import org.apache.log4j.Logger;
+//import org.xml.sax.Attributes;
+//import org.xml.sax.Locator;
+//import org.xml.sax.SAXException;
+//
+//import fr.gouv.finances.cp.xemelios.controls.AbstractUnitControl;
+//import fr.gouv.finances.cp.xemelios.controls.Anomalie;
+//import fr.gouv.finances.cp.xemelios.controls.IdGenerator;
+//import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+//
+///*
+// * Implémente le contrôle N° DEP22
+// *
+// * Contrôle sur la présence de la balise IdColl
+// *
+// */
+//public class DEP22 extends AbstractUnitControl implements ConstantsControlsPESv2{
+// private final static Logger logger = Logger.getLogger(DEP22.class);
+// public static final transient String CTRL_ID = "DEP22";
+// private Vector<Anomalie> anos = new Vector<Anomalie>();
+// private Hashtable<String,Object> hParams;
+//
+// /**
+// * La chaine cible
+// */
+// private static final String FIN_BORDEREAU = "/PES_DepenseAller/";
+// private static final String ON_RETURN_ANOMALIES = FIN_BORDEREAU;
+//
+//
+// /**
+// * Variables contenant les valeurs nécessaires à ce contrôle
+// */
+//
+// private String IdColl = "";
+//
+// /**
+// * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+// * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses uniquement
+// */
+// private static final String CHEMIN_PESDEPENSEALLER = "/PES_DepenseAller/";
+// private static final String CHEMIN_IDCOLL = "/EnTetePES/IdColl/";
+//
+// public void startDocument() throws SAXException {
+// logger.info("In "+CTRL_ID);
+// }
+//
+// public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+// // 1
+// if (xpath.endsWith(CHEMIN_PESDEPENSEALLER)) {
+// anos = new Vector<Anomalie>();
+// }
+// if (xpath.endsWith(CHEMIN_IDCOLL)) {
+// IdColl = atts.getValue("V");
+// logger.debug(CTRL_ID+" : IdColl="+IdColl);
+// }
+// }
+//
+//
+// public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+// if(xpath.endsWith(ON_RETURN_ANOMALIES)){
+// if(!(hParams.get("nomencl").equals("M21")) && !Luhn.testLuhnSiren(IdColl) && !Luhn.testLuhnSiret(IdColl)) {
+// String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent().replaceAll("#ID_COLL#","n'est pas bon. "+IdColl!=null?"Il ne correspond pas un un SIRET/SIREN valide":"Il n'existe pas dans le flux analysé"+".");
+// String anoId = IdGenerator.nextId();
+// Anomalie ano = new Anomalie(anoId,
+// getDocumentModel().getControlById(CTRL_ID).getId(),
+// getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+// getDocumentModel().getDocumentId(),
+// xpath.split("/")[1],
+// null, // élément importable
+// null, // id élément importable
+// null,
+// null,
+// msg,
+// getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+// getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+// null, // xpath vers le bordereau sous lequel se trouve l'anomalie
+// null); // paramètres supplémentaires pour accéder à l'élément en anomalie
+// anos.add(ano);
+// }
+// return anos;
+// } else {
+// return null;
+// }
+// }
+//
+// public void endDocument() throws SAXException {}
+//
+// public void characters(char[] ch, int start, int length, String xpath) {}
+//
+// public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+//
+// public void startPrefixMapping(String prefix, String uri, String xpath) {}
+//
+// public void endPrefixMapping(String prefix, String xpath) {}
+//
+// public void processingInstruction(String target, String data, String xpath) {}
+//
+// public void skippedEntity(String name, String xpath) {}
+//
+// public void setParameters(Hashtable<String,Object> params) {
+// this.hParams=params;
+// }
+//
+// public void setDocumentLocator(Locator locator) {}
+//
+//}
--- /dev/null
+/*
+ * Copyright
+ * 2008 axYus - www.axyus.com
+ * 2008 C ESCOBAR - christel.escobar@axyus.com
+ *
+ * This file is part of XEMELIOS.
+ *
+ * XEMELIOS is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * XEMELIOS 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
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XEMELIOS; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+package fr.gouv.finances.cp.xemelios.controls.pesv2.dep;
+
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.dgfip.xemelios.controls.core.AbstractUnitControl;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Anomalie;
+import fr.gouv.finances.dgfip.xemelios.controls.core.IdGenerator;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Node;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+
+/**
+ * Implémente le contrôle N° DEP23
+ *
+ * Il consiste à vérifier la règle fonctionnelle suivante :
+ * Lorsque la pièce est un mandat de type Marché, un numéro de marché doit être renseigné, la balise IdMarche doit être alimentée.
+ *
+ */
+
+
+public class DEP23 extends AbstractUnitControl implements ConstantsControlsPESv2{
+ private final static Logger logger = Logger.getLogger(DEP23.class);
+ public static final transient String CTRL_ID = "DEP23";
+ private Vector<Anomalie> anos = new Vector<Anomalie>();
+ private Hashtable<String,Object> hParams;
+
+ /**
+ * La balise du document général
+ */
+
+ private String docId = null;
+ private String nodeId = null;
+
+ /**
+ * La chaine cible
+ */
+
+ private static final String FIN_PIECE = "/PES_DepenseAller/Bordereau/Piece/";
+ private static final String LIGNEPCE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/";
+ private static final String ON_RETURN_ANOMALIES = FIN_PIECE;
+
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+
+ private String bord_IdBord = "";
+ private String bord_ExerBord = "";
+ private String bord_TypBord = "";
+ private String piece_IdPce = "";
+ private String piece_TypPce = "";
+ private String lienident_IdMarche = "";
+ private String ligne_IdLigne = "";
+
+ /**
+ * Variables devant être remplacées dans le message-echec
+ */
+
+ private static final String MSG_BORD_NUM = "#BORD_NUM#";
+ private static final String MSG_BORD_EXER = "#BORD_EXER#";
+ private static final String MSG_PIECE_TYPPCE = "#PIECE_TYPPCE#";
+ private static final String MSG_PIECE_ID = "#PIECE_IDPCE#";
+ private static final String MSG_LIGNE_IDLIGNE = "#LIGNE_IDLIGNE#";
+
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses uniquement
+ */
+
+ private static final String CHEMIN_BLOCBORDEREAU = "/PES_DepenseAller/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_PIECE = "/PES_DepenseAller/Bordereau/Piece";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/PES_DepenseAller/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/PES_DepenseAller/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/PES_DepenseAller/Bordereau/BlocBordereau/TypBord/";
+ private static final String CHEMIN_BLOCPIECE_IDPIECE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/InfoPce/IdPce/";
+ private static final String CHEMIN_BLOCPIECE_TYPPIECE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/InfoPce/TypPce/";
+ private static final String CHEMIN_INFOLIGNEPIECE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/";
+ private static final String CHEMIN_INFOLIGNEPIECE_IDLIGNE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/IdLigne/";
+ private static final String CHEMIN_LIENIDENT = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/LiensIdent/";
+ private static final String CHEMIN_LIENIDENT_IDMARCHE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/LiensIdent/IdMarche/";
+
+
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+ }
+
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+
+ public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ bord_ExerBord = bord_IdBord = bord_TypBord = "";
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_ExerBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_PIECE)) {
+ if (anos == null)
+ anos = new Vector<Anomalie>();
+ piece_IdPce = piece_TypPce = "";
+ lienident_IdMarche = "";
+ }
+ if(xpath.endsWith(CHEMIN_BLOCPIECE_IDPIECE)){
+ piece_IdPce = atts.getValue("V");
+ anos.clear();
+ }
+ if(xpath.endsWith(CHEMIN_BLOCPIECE_TYPPIECE)){
+ piece_TypPce = atts.getValue("V");
+ }
+ if(xpath.endsWith(CHEMIN_INFOLIGNEPIECE)){
+ ligne_IdLigne = "";
+ }
+ if(xpath.endsWith(CHEMIN_INFOLIGNEPIECE_IDLIGNE)){
+ ligne_IdLigne = atts.getValue("V");
+ }
+ if(xpath.endsWith(CHEMIN_LIENIDENT)){
+ lienident_IdMarche = "";
+ }
+ if(xpath.endsWith(CHEMIN_LIENIDENT_IDMARCHE)){
+ lienident_IdMarche = atts.getValue("V");
+ }
+
+
+ }
+
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+
+ if(xpath.endsWith(LIGNEPCE)){
+
+ if (piece_TypPce.equals("09") && lienident_IdMarche.equals("")){
+
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_ExerBord);
+ msg = msg.replaceAll(MSG_PIECE_TYPPCE, piece_TypPce);
+ msg = msg.replaceAll(MSG_PIECE_ID, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNE_IDLIGNE, ligne_IdLigne);
+ String path="@added:primary-key='"+bord_ExerBord+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId","");
+ xslParams.put("mandatId",piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_DEPENSE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ anos.add(ano);
+ }
+ return null;
+ }
+ else if (xpath.endsWith(ON_RETURN_ANOMALIES)){
+
+ return anos;
+
+ } else {
+ return null;
+ }
+ }
+
+ public void endDocument() throws SAXException {}
+
+ public void characters(char[] ch, int start, int length, String xpath) {}
+
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ public void skippedEntity(String name, String xpath) {}
+
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) {}
+
+}
--- /dev/null
+/*
+ * Copyright
+ * 2008 axYus - www.axyus.com
+ * 2008 C ESCOBAR - christel.escobar@axyus.com
+ *
+ * This file is part of XEMELIOS.
+ *
+ * XEMELIOS is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * XEMELIOS 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
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XEMELIOS; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+package fr.gouv.finances.cp.xemelios.controls.pesv2.dep;
+
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.dgfip.xemelios.controls.core.AbstractUnitControl;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Anomalie;
+import fr.gouv.finances.dgfip.xemelios.controls.core.IdGenerator;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Node;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+/**
+ * Implémente le contrôle N° DEP24
+ *
+ * Il consiste à vérifier la règle fonctionnelle suivante :
+ * Lorsque la pièce est un mandat d'ordre budgétaire de nature cession, le compte budgétaire est de type 675 (sortie du bien de l'actif), 676 (plus-value) ou 192 (moins-value)
+ * et le numéro d'opération doit faire apparaître le chapitre 042 ou 6 (sortie du bien de l'actif) [vote par nature] ou bien le chapitre 914 (sortie du bien de l'actif) ou 934 [vote par fonction].
+ * Le mandat doit faire référence à un titre d'ordre budgétaire.
+ *
+ */
+public class DEP24 extends AbstractUnitControl implements ConstantsControlsPESv2 {
+
+ private final static Logger logger = Logger.getLogger(DEP24.class);
+ public static final transient String CTRL_ID = "DEP24";
+ private Vector<Anomalie> anos = new Vector<Anomalie>();
+ private Hashtable<String, Object> hParams;
+ /**
+ * La balise du document général
+ */
+ private String docId = null;
+ private String nodeId = null;
+ /**
+ * La chaine cible
+ */
+ private static final String FIN_PIECE = "/PES_DepenseAller/Bordereau/Piece/";
+ private static final String LIGNEPCE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/";
+ private static final String ON_RETURN_ANOMALIES = FIN_PIECE;
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+ private String bord_IdBord = "";
+ private String bord_ExerBord = "";
+ private String bord_TypBord = "";
+ private String piece_IdPce = "";
+ private String piece_TypPce = "";
+ private String piece_NatPce = "";
+ private String ligne_IdLigne = "";
+ private String ligne_Nature = "";
+ private String ligne_Operation = "";
+ private String ligne_Nature_NodeId = "";
+ private String ligne_Operation_NodeId = "";
+ private String ligne_Fonction = "";
+ private String ligne_Fonction_NodeId = "";
+ private String ligne_IdLigne_NodeId = "";
+ private boolean rattachPiece_exist = false;
+ /**
+ * Variables devant être remplacées dans le message-echec
+ */
+ private static final String MSG_BORD_NUM = "#BORD_NUM#";
+ private static final String MSG_BORD_EXER = "#BORD_EXER#";
+ private static final String MSG_PIECE_TYPPCE = "#PIECE_TYPPCE#";
+ private static final String MSG_PIECE_ID = "#PIECE_IDPCE#";
+ private static final String MSG_LIGNE_IDLIGNE = "#LIGNE_IDLIGNE#";
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses uniquement
+ */
+ private static final String CHEMIN_BLOCBORDEREAU = "/PES_DepenseAller/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_PIECE = "/PES_DepenseAller/Bordereau/Piece/";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/PES_DepenseAller/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/PES_DepenseAller/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/PES_DepenseAller/Bordereau/BlocBordereau/TypBord/";
+ private static final String CHEMIN_BLOCPIECE_IDPIECE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/InfoPce/IdPce/";
+ private static final String CHEMIN_BLOCPIECE_TYPPIECE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/InfoPce/TypPce/";
+ private static final String CHEMIN_BLOCPIECE_NATPIECE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/InfoPce/NatPce/";
+ private static final String CHEMIN_BLOCLIGNEPIECE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/";
+ private static final String CHEMIN_RATTACHPIECE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/RattachPiece/";
+ private static final String CHEMIN_INFOLIGNEPIECE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/";
+ private static final String CHEMIN_INFOLIGNEPIECE_IDLIGNE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/IdLigne/";
+ private static final String CHEMIN_INFOLIGNEPIECE_NATURE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/Nature/";
+ private static final String CHEMIN_INFOLIGNEPIECE_OPERATION = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/Operation/";
+ private static final String CHEMIN_INFOLIGNEPIECE_FONCTION = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/Fonction/";
+
+ public void startDocument() throws SAXException {
+ logger.info("In " + CTRL_ID);
+ }
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+ public void startElement(String uri, String localName, String qName, Attributes atts, String xpath) {
+
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ bord_ExerBord = bord_IdBord = bord_TypBord = "";
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_ExerBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_PIECE)) {
+ if (!anos.isEmpty()) {
+ anos = new Vector<Anomalie>();
+ }
+ piece_IdPce = piece_TypPce = piece_NatPce = "";
+ }
+ if (xpath.endsWith(CHEMIN_BLOCPIECE_IDPIECE)) {
+ piece_IdPce = atts.getValue("V");
+ anos.clear();
+ }
+ if (xpath.endsWith(CHEMIN_BLOCPIECE_TYPPIECE)) {
+ piece_TypPce = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCPIECE_NATPIECE)) {
+ piece_NatPce = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCLIGNEPIECE)) {
+ rattachPiece_exist = false;
+ }
+ if (xpath.endsWith(CHEMIN_RATTACHPIECE)) {
+ rattachPiece_exist = true;
+ }
+ if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE)) {
+ ligne_IdLigne = ligne_Nature = ligne_Operation = "";
+ ligne_Nature_NodeId = ligne_Operation_NodeId = ligne_IdLigne_NodeId = "";
+ }
+ if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE_IDLIGNE)) {
+ ligne_IdLigne = atts.getValue("V");
+ ligne_IdLigne_NodeId = atts.getValue("ano:node-id");
+
+ }
+ if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE_NATURE)) {
+ ligne_Nature = atts.getValue("V");
+ ligne_Nature_NodeId = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE_OPERATION)) {
+ ligne_Operation = atts.getValue("V");
+ ligne_Operation_NodeId = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE_FONCTION)) {
+ ligne_Fonction = atts.getValue("V");
+ ligne_Fonction_NodeId = atts.getValue("ano:node-id");
+ }
+
+ }
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+ Vector<Node> anonodes = new Vector<Node>();
+ String PAR1 = (String) hParams.get("nomencl");
+ String PAR2 = (String) hParams.get("typnomencl");
+
+
+ if (xpath.endsWith(LIGNEPCE)) {
+
+ if (!("M21".equals(PAR1) || "M22".equals(PAR1) || "M31".equals(PAR1)) && ("Nature".equals(PAR2) || "Nature-ref-fonct".equals(PAR2))) {
+ if (piece_TypPce.equals("03") && piece_NatPce.equals("18")
+ && ((!ligne_Nature.equals("675") && !ligne_Nature.equals("676") && !ligne_Nature.equals("192"))
+ || (!ligne_Operation.equals("042") && !ligne_Operation.equals("6")) || !rattachPiece_exist)) {
+
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_ExerBord);
+ msg = msg.replaceAll(MSG_PIECE_TYPPCE, piece_TypPce);
+ msg = msg.replaceAll(MSG_PIECE_ID, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNE_IDLIGNE, ligne_IdLigne);
+ String path = "@added:primary-key='" + bord_ExerBord + "-" + bord_TypBord + "-" + bord_IdBord + "'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau " + bord_IdBord + " Mandat " + piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "");
+ xslParams.put("mandatId", piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_DEPENSE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+
+ if (!ligne_Nature.equals("675") && !ligne_Nature.equals("676") && !ligne_Nature.equals("192")) {
+ anonodes.add(new Node(ligne_Nature_NodeId));
+ }
+ if (!ligne_Operation.equals("042") && !ligne_Operation.equals("6")) {
+ anonodes.add(new Node(ligne_Operation_NodeId));
+ }
+ if (!rattachPiece_exist || ligne_Nature.equals("") || ligne_Operation.equals("")) {
+ anonodes.add(new Node(ligne_IdLigne_NodeId));
+ }
+
+ ano.addAll(anonodes);
+ anos.add(ano);
+ }
+ }
+
+ if ( !("M21".equals(PAR1) || "M22".equals(PAR1) || "M31".equals(PAR1)) && "Fonction".equals(PAR2)) {
+
+ if (piece_TypPce.equals("03") && piece_NatPce.equals("18")
+ && ((!ligne_Nature.equals("675") && !ligne_Nature.equals("676") && !ligne_Nature.equals("192"))
+ || (!ligne_Fonction.equals("914") && !ligne_Fonction.equals("934")) || !rattachPiece_exist)) {
+
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_ExerBord);
+ msg = msg.replaceAll(MSG_PIECE_TYPPCE, piece_TypPce);
+ msg = msg.replaceAll(MSG_PIECE_ID, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNE_IDLIGNE, ligne_IdLigne);
+ String path = "@added:primary-key='" + bord_ExerBord + "-" + bord_TypBord + "-" + bord_IdBord + "'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau " + bord_IdBord + " Mandat " + piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "");
+ xslParams.put("mandatId", piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_DEPENSE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+
+ if (!ligne_Nature.equals("675") && !ligne_Nature.equals("676") && !ligne_Nature.equals("192")) {
+ anonodes.add(new Node(ligne_Nature_NodeId));
+ }
+ if (!ligne_Fonction.equals("914") && !ligne_Fonction.equals("934")) {
+ anonodes.add(new Node(ligne_Fonction_NodeId));
+ }
+ if (!rattachPiece_exist || ligne_Nature.equals("") || ligne_Operation.equals("")) {
+ anonodes.add(new Node(ligne_IdLigne_NodeId));
+ }
+
+ ano.addAll(anonodes);
+ anos.add(ano);
+ }
+ }
+
+ return null;
+ } else if (xpath.endsWith(ON_RETURN_ANOMALIES)) {
+
+ return anos;
+
+ } else {
+ return null;
+ }
+ }
+
+ public void endDocument() throws SAXException {
+ }
+
+ public void characters(char[] ch, int start, int length, String xpath) {
+ }
+
+ public void ignorableWhitespace(char[] ch, int start, int length, String xpath) {
+ }
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {
+ }
+
+ public void endPrefixMapping(String prefix, String xpath) {
+ }
+
+ public void processingInstruction(String target, String data, String xpath) {
+ }
+
+ public void skippedEntity(String name, String xpath) {
+ }
+
+ public void setParameters(Hashtable<String, Object> params) {
+ this.hParams = params;
+ }
+
+ public void setDocumentLocator(Locator locator) {
+ }
+}
--- /dev/null
+/*
+ * Copyright
+ * 2008 axYus - www.axyus.com
+ * 2008 C ESCOBAR - christel.escobar@axyus.com
+ *
+ * This file is part of XEMELIOS.
+ *
+ * XEMELIOS is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * XEMELIOS 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
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XEMELIOS; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+
+package fr.gouv.finances.cp.xemelios.controls.pesv2.dep;
+
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.dgfip.xemelios.controls.core.AbstractUnitControl;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Anomalie;
+import fr.gouv.finances.dgfip.xemelios.controls.core.IdGenerator;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Node;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+
+/**
+ * Implémente le contrôle N° DEP25
+ *
+ * Il consiste à vérifier la règle fonctionnelle suivante :
+ * Les Codes Régie, Numéros d'Emprunts ou d'Inventaire doivent être renseignés.
+ *
+ */
+
+
+public class DEP25 extends AbstractUnitControl implements ConstantsControlsPESv2{
+ private final static Logger logger = Logger.getLogger(DEP25.class);
+ public static final transient String CTRL_ID = "DEP25";
+ private Vector<Anomalie> anos = new Vector<Anomalie>();
+ private Hashtable<String,Object> hParams;
+
+ /**
+ * La balise du document général
+ */
+
+ private String docId = null;
+ private String nodeId = null;
+
+ /**
+ * La chaine cible
+ */
+
+ private static final String FIN_PIECE = "/PES_DepenseAller/Bordereau/Piece/";
+ private static final String LIGNEPCE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/";
+ private static final String ON_RETURN_ANOMALIES = FIN_PIECE;
+
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+
+ private String bord_IdBord = "";
+ private String bord_ExerBord = "";
+ private String bord_TypBord = "";
+ private String piece_IdPce = "";
+ private String piece_TypPce = "";
+ private String piece_NatPce = "";
+ private String ligne_IdLigne = "";
+ private String ligne_IdActif = "";
+ private String ligne_IdEmpruntOrdo = "";
+ private String ligne_IdRegie = "";
+
+ private String ligne_IdLigne_NodeId = "";
+
+
+ /**
+ * Variables devant être remplacées dans le message-echec
+ */
+
+ private static final String MSG_BORD_NUM = "#BORD_NUM#";
+ private static final String MSG_BORD_EXER = "#BORD_EXER#";
+ private static final String MSG_BORD_TYPBORD = "#BORD_TYPBORD#";
+ private static final String MSG_PIECE_TYPPCE = "#PIECE_TYPPCE#";
+ private static final String MSG_PIECE_ID = "#PIECE_IDPCE#";
+ private static final String MSG_LIGNE_IDLIGNE = "#LIGNE_IDLIGNE#";
+ private static final String MSG_ERREUR = "#ERREUR#";
+
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses uniquement
+ */
+
+ private static final String CHEMIN_BLOCBORDEREAU = "/PES_DepenseAller/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_PIECE = "/PES_DepenseAller/Bordereau/Piece";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/PES_DepenseAller/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/PES_DepenseAller/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/PES_DepenseAller/Bordereau/BlocBordereau/TypBord/";
+ private static final String CHEMIN_BLOCPIECE_IDPIECE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/InfoPce/IdPce/";
+ private static final String CHEMIN_BLOCPIECE_TYPPIECE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/InfoPce/TypPce/";
+ private static final String CHEMIN_BLOCPIECE_NATPIECE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/InfoPce/NatPce/";
+ private static final String CHEMIN_BLOCLIGNEPIECE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/";
+ private static final String CHEMIN_LIENSIDENT_IDACTIF = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/LiensIdent/IdActif/";
+ private static final String CHEMIN_LIENSIDENT_IDEMPRUNTORDO = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/LiensIdent/IdEmpruntOrdo/";
+ private static final String CHEMIN_LIENSIDENT_IDREGIE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/LiensIdent/IdRegie/";
+ private static final String CHEMIN_INFOLIGNEPIECE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/";
+ private static final String CHEMIN_INFOLIGNEPIECE_IDLIGNE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/IdLigne/";
+
+
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+ }
+
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+
+ public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ bord_ExerBord = bord_IdBord = bord_TypBord = "";
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_ExerBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_PIECE)) {
+ if (!anos.isEmpty())
+ anos = new Vector<Anomalie>();
+ piece_IdPce = piece_TypPce = piece_NatPce = "";
+ }
+ if(xpath.endsWith(CHEMIN_BLOCPIECE_IDPIECE)){
+ piece_IdPce = atts.getValue("V");
+ anos.clear();
+ }
+ if(xpath.endsWith(CHEMIN_BLOCPIECE_TYPPIECE)){
+ piece_TypPce = atts.getValue("V");
+ }
+ if(xpath.endsWith(CHEMIN_BLOCPIECE_NATPIECE)){
+ piece_NatPce = atts.getValue("V");
+ }
+ if(xpath.endsWith(CHEMIN_BLOCLIGNEPIECE)){
+ ligne_IdActif = ligne_IdEmpruntOrdo = ligne_IdRegie = "";
+ }
+ if(xpath.endsWith(CHEMIN_LIENSIDENT_IDACTIF)){
+ ligne_IdActif = atts.getValue("V");
+ }
+ if(xpath.endsWith(CHEMIN_LIENSIDENT_IDEMPRUNTORDO)){
+ ligne_IdEmpruntOrdo = atts.getValue("V");
+ }
+ if(xpath.endsWith(CHEMIN_LIENSIDENT_IDREGIE)){
+ ligne_IdRegie = atts.getValue("V");
+ }
+ if(xpath.endsWith(CHEMIN_INFOLIGNEPIECE)){
+ ligne_IdLigne = "";
+ ligne_IdLigne_NodeId = "";
+ }
+ if(xpath.endsWith(CHEMIN_INFOLIGNEPIECE_IDLIGNE)){
+ ligne_IdLigne = atts.getValue("V");
+ ligne_IdLigne_NodeId = atts.getValue("ano:node-id");
+ }
+
+ }
+
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+
+ if(xpath.endsWith(LIGNEPCE)){
+ boolean err = false;
+
+ if ( piece_NatPce.equals("03") && ligne_IdActif.equals(""))
+ err = true;
+ if ( piece_NatPce.equals("04") && ligne_IdEmpruntOrdo.equals(""))
+ err = true;
+ if ( piece_NatPce.equals("05") && ligne_IdRegie.equals(""))
+ err = true;
+
+ if(err) {
+
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_ExerBord);
+ msg = msg.replaceAll(MSG_BORD_TYPBORD, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_TYPPCE, piece_TypPce);
+ msg = msg.replaceAll(MSG_PIECE_ID, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNE_IDLIGNE, ligne_IdLigne);
+
+ if (piece_NatPce.equals("03") && ligne_IdActif.equals(""))
+ msg = msg.replaceAll(MSG_ERREUR, "Numéro d'inventaire non renseigné.");
+ if (piece_NatPce.equals("04") && ligne_IdEmpruntOrdo.equals(""))
+ msg = msg.replaceAll(MSG_ERREUR, "Numéro d'emprunt non renseigné.");
+ if (piece_NatPce.equals("05") && ligne_IdRegie.equals(""))
+ msg = msg.replaceAll(MSG_ERREUR, "Numéro de régie non renseigné.");
+
+ String path="@added:primary-key='"+bord_ExerBord+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId","");
+ xslParams.put("mandatId",piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_DEPENSE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+
+
+ ano.addNode(new Node (ligne_IdLigne_NodeId));
+ anos.add(ano);
+
+ }
+
+ return null;
+ }
+ else if (xpath.endsWith(ON_RETURN_ANOMALIES)){
+
+ return anos;
+
+ } else {
+ return null;
+ }
+ }
+
+ public void endDocument() throws SAXException {}
+
+ public void characters(char[] ch, int start, int length, String xpath) {}
+
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ public void skippedEntity(String name, String xpath) {}
+
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) {}
+
+}
--- /dev/null
+/*
+ * Copyright
+ * 2008 axYus - www.axyus.com
+ * 2008 C ESCOBAR - christel.escobar@axyus.com
+ *
+ * This file is part of XEMELIOS.
+ *
+ * XEMELIOS is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * XEMELIOS 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
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XEMELIOS; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+
+
+package fr.gouv.finances.cp.xemelios.controls.pesv2.dep;
+
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.dgfip.xemelios.controls.core.AbstractUnitControl;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Anomalie;
+import fr.gouv.finances.dgfip.xemelios.controls.core.IdGenerator;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Node;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+
+/**
+ * Implémente le contrôle N° DEP26
+ *
+ * Il consiste à vérifier la règle fonctionnelle suivante :
+ * La référence à la pièce initiale doit être alimentée dans le cas des charges constatées d'avance et des charges à payer.
+ *
+ */
+
+
+public class DEP26 extends AbstractUnitControl implements ConstantsControlsPESv2{
+ private final static Logger logger = Logger.getLogger(DEP26.class);
+ public static final transient String CTRL_ID = "DEP26";
+ private Vector<Anomalie> anos = new Vector<Anomalie>();
+ private Hashtable<String,Object> hParams;
+
+ /**
+ * La balise du document général
+ */
+
+ private String docId = null;
+ private String nodeId = null;
+
+ /**
+ * La chaine cible
+ */
+
+ private static final String FIN_PIECE = "/PES_DepenseAller/Bordereau/Piece/";
+ private static final String LIGNEPCE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/";
+ private static final String ON_RETURN_ANOMALIES = FIN_PIECE;
+
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+
+ private String bord_IdBord = "";
+ private String bord_ExerBord = "";
+ private String bord_TypBord = "";
+ private String piece_IdPce = "";
+ private String piece_TypPce = "";
+ private String piece_NatPce = "";
+ private String ligne_IdLigne = "";
+ private String rattachPiece_NatPceOrig = "";
+ private String rattachPiece_ExerRat = "";
+
+
+ private String ligne_IdLigne_NodeId = "";
+ private String rattachPiece_NatPceOrig_nodeId = "";
+ private String rattachPiece_ExerRat_nodeId = "";
+ private boolean rattachPiece_exist = false;
+
+
+
+
+
+ /**
+ * Variables devant être remplacées dans le message-echec
+ */
+
+ private static final String MSG_BORD_NUM = "#BORD_NUM#";
+ private static final String MSG_PIECE_ID = "#PIECE_IDPCE#";
+ private static final String MSG_LIGNE_IDLIGNE = "#LIGNE_IDLIGNE#";
+ private static final String MSG_ERREUR = "#ERREUR#";
+
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses uniquement
+ */
+
+ private static final String CHEMIN_BLOCBORDEREAU = "/PES_DepenseAller/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_PIECE = "/PES_DepenseAller/Bordereau/Piece/";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/PES_DepenseAller/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/PES_DepenseAller/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/PES_DepenseAller/Bordereau/BlocBordereau/TypBord/";
+ private static final String CHEMIN_BLOCPIECE_NATPIECE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/InfoPce/NatPce/";
+ private static final String CHEMIN_BLOCPIECE_IDPIECE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/InfoPce/IdPce/";
+ private static final String CHEMIN_BLOCPIECE_TYPPIECE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/InfoPce/TypPce/";
+ private static final String CHEMIN_BLOCLIGNEPIECE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/";
+ private static final String CHEMIN_BLOCLIGNEPIECE_RATTACHPIECE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/RattachPiece/";
+ private static final String CHEMIN_RATTACHPIECE_NATPCEORIG = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/RattachPiece/NatPceOrig/";
+ private static final String CHEMIN_RATTACHPIECE_EXERRAT = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/RattachPiece/ExerRat/";
+ private static final String CHEMIN_INFOLIGNEPIECE_IDLIGNE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/IdLigne/";
+
+
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+ }
+
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+
+ public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ bord_ExerBord = bord_IdBord = bord_TypBord = "";
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_ExerBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_PIECE)) {
+ if (anos != null)
+ anos = new Vector<Anomalie>();
+ piece_IdPce = piece_TypPce = piece_NatPce = "";
+ }
+ if(xpath.endsWith(CHEMIN_BLOCPIECE_IDPIECE)){
+ piece_IdPce = atts.getValue("V");
+ anos.clear();
+ }
+ if(xpath.endsWith(CHEMIN_BLOCPIECE_TYPPIECE)){
+ piece_TypPce = atts.getValue("V");
+ }
+ if(xpath.endsWith(CHEMIN_BLOCPIECE_NATPIECE)){
+ piece_NatPce = atts.getValue("V");
+ }
+ if(xpath.endsWith(CHEMIN_BLOCLIGNEPIECE)){
+ ligne_IdLigne = rattachPiece_NatPceOrig = rattachPiece_ExerRat = "";
+ ligne_IdLigne_NodeId = rattachPiece_NatPceOrig_nodeId = rattachPiece_ExerRat_nodeId = "";
+ rattachPiece_exist = false;
+ }
+ if(xpath.endsWith(CHEMIN_BLOCLIGNEPIECE_RATTACHPIECE)){
+ rattachPiece_exist = true;
+ }
+ if(xpath.endsWith(CHEMIN_RATTACHPIECE_NATPCEORIG)){
+ rattachPiece_NatPceOrig = atts.getValue("V");
+ rattachPiece_NatPceOrig_nodeId = atts.getValue("ano:node-id");
+ }
+ if(xpath.endsWith(CHEMIN_RATTACHPIECE_EXERRAT)){
+ rattachPiece_ExerRat = atts.getValue("V");
+ rattachPiece_ExerRat_nodeId = atts.getValue("ano:node-id");
+ }
+ if(xpath.endsWith(CHEMIN_INFOLIGNEPIECE_IDLIGNE)){
+ ligne_IdLigne = atts.getValue("V");
+ ligne_IdLigne_NodeId = atts.getValue("ano:node-id");
+ }
+ }
+
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+ Vector<Node> anonodes = new Vector<Node>();
+ String erreur = "";
+
+ if(xpath.endsWith(LIGNEPCE)){
+
+
+ if ( haveToTest() &&
+ ((piece_TypPce.equals("13") && piece_NatPce.equals("01")) || (piece_TypPce.equals("02") && piece_NatPce.equals("10"))) &&
+ ( !rattachPiece_exist || !rattachPiece_NatPceOrig.equals("01") || (((Integer.parseInt(bord_ExerBord))-1) != (Integer.parseInt(rattachPiece_ExerRat))) )){
+
+ erreur = "L'exercice de la pièce de rattachement doit être égal à l'exercice précédent celui du bordereau et la pièce de rattachement est un mandat";
+
+ if (!rattachPiece_exist){
+ anonodes.add(new Node (ligne_IdLigne_NodeId));
+ }
+ else {
+ if (!rattachPiece_NatPceOrig.equals("01")){
+ anonodes.add(new Node (rattachPiece_NatPceOrig_nodeId));
+ }
+ if (((Integer.parseInt(bord_ExerBord))-1) != (Integer.parseInt(rattachPiece_ExerRat))){
+ anonodes.add(new Node (rattachPiece_ExerRat_nodeId));
+ }
+ }
+
+
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_PIECE_ID, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNE_IDLIGNE, ligne_IdLigne);
+ msg = msg.replaceAll(MSG_ERREUR, erreur);
+ String path="@added:primary-key='"+bord_ExerBord+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId","");
+ xslParams.put("mandatId",piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_DEPENSE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+
+
+ ano.addAll(anonodes);
+ anos.add(ano);
+
+ }
+
+ return null;
+ }
+
+ else if (xpath.endsWith(ON_RETURN_ANOMALIES)){
+
+ return anos;
+
+ } else {
+ return null;
+ }
+ }
+
+
+ public boolean haveToTest(){
+ String PAR1 = (String)hParams.get("nomencl");
+ return (PAR1.equals("M4") || PAR1.equals("M14") || PAR1.equals("M52") || PAR1.equals("M61") || PAR1.equals("M71"));
+ }
+
+ public void endDocument() throws SAXException {}
+
+ public void characters(char[] ch, int start, int length, String xpath) {}
+
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ public void skippedEntity(String name, String xpath) {}
+
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) {}
+
+}
--- /dev/null
+/*
+ * Copyright
+ * 2010 axYus - www.axyus.com
+ * 2010 C ESCOBAR - christel.escobar@axyus.com
+ *
+ * This file is part of XEMELIOS.
+ *
+ * XEMELIOS is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * XEMELIOS 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
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XEMELIOS; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+package fr.gouv.finances.cp.xemelios.controls.pesv2.dep;
+
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.dgfip.xemelios.controls.core.AbstractUnitControl;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Anomalie;
+import fr.gouv.finances.dgfip.xemelios.controls.core.IdGenerator;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Node;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+/**
+ * Implémente le contrôle N° DEP27
+ *
+ * Il concerne les contrôles sur la balise opération.
+ *
+ */
+public class DEP27 extends AbstractUnitControl implements ConstantsControlsPESv2 {
+
+ private final static Logger logger = Logger.getLogger(DEP27.class);
+ public static final transient String CTRL_ID = "DEP27";
+ private Vector<Anomalie> anos = new Vector<Anomalie>();
+ private Hashtable<String, Object> hParams;
+ /**
+ * La balise du document général
+ */
+ private String docId = null;
+ private String nodeId = null;
+ /**
+ * La chaine cible
+ */
+ private static final String FIN_PIECE = "/PES_DepenseAller/Bordereau/Piece/";
+ private static final String LIGNEPCE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/";
+ private static final String ON_RETURN_ANOMALIES = FIN_PIECE;
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+ private String bord_IdBord = "";
+ private String bord_ExerBord = "";
+ private String bord_TypBord = "";
+ private String piece_IdPce = "";
+ private String piece_TypPce = "";
+ private String piece_NatPce = "";
+ private String ligne_IdLigne = "";
+ private String ligne_Operation = "";
+ private String ligne_Fonction = "";
+ private String ligne_Operation_NodeId = "";
+ private String ligne_IdLigne_NodeId = "";
+ private String ligne_Fonction_NodeId = "";
+ /**
+ * Variables devant être remplacées dans le message-echec
+ */
+ private static final String MSG_BORD_NUM = "#BORD_NUM#";
+ private static final String MSG_PIECE_ID = "#PIECE_IDPCE#";
+ private static final String MSG_LIGNE_IDLIGNE = "#LIGNE_IDLIGNE#";
+ private static final String MSG_LIGNE_OPE = "#LIGNE_OPE#";
+ private static final String MSG_ERREUR = "#ERREUR#";
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses uniquement
+ */
+ private static final String CHEMIN_BLOCBORDEREAU = "/PES_DepenseAller/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_PIECE = "/PES_DepenseAller/Bordereau/Piece/";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/PES_DepenseAller/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/PES_DepenseAller/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/PES_DepenseAller/Bordereau/BlocBordereau/TypBord/";
+ private static final String CHEMIN_BLOCPIECE_IDPIECE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/InfoPce/IdPce/";
+ private static final String CHEMIN_BLOCPIECE_TYPPIECE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/InfoPce/TypPce/";
+ private static final String CHEMIN_BLOCPIECE_NATPIECE = "/PES_DepenseAller/Bordereau/Piece/BlocPiece/InfoPce/NatPce/";
+ private static final String CHEMIN_BLOCLIGNEPIECE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/";
+ private static final String CHEMIN_INFOLIGNEPIECE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/";
+ private static final String CHEMIN_INFOLIGNEPIECE_IDLIGNE = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/IdLigne/";
+ private static final String CHEMIN_INFOLIGNEPIECE_OPERATION = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/Operation/";
+ private static final String CHEMIN_INFOLIGNEPIECE_FONCTION = "/PES_DepenseAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/Fonction/";
+
+ public void startDocument() throws SAXException {
+ logger.info("In " + CTRL_ID);
+ }
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+ public void startElement(String uri, String localName, String qName, Attributes atts, String xpath) {
+
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ bord_ExerBord = bord_IdBord = bord_TypBord = "";
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_ExerBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_PIECE)) {
+ if (!anos.isEmpty()) {
+ anos = new Vector<Anomalie>();
+ }
+ piece_IdPce = piece_TypPce = piece_NatPce = "";
+ }
+ if (xpath.endsWith(CHEMIN_BLOCPIECE_IDPIECE)) {
+ piece_IdPce = atts.getValue("V");
+ anos.clear();
+ }
+ if (xpath.endsWith(CHEMIN_BLOCPIECE_TYPPIECE)) {
+ piece_TypPce = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCPIECE_NATPIECE)) {
+ piece_NatPce = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE)) {
+ ligne_IdLigne = ligne_Operation = ligne_Fonction = "";
+ ligne_Operation_NodeId = ligne_IdLigne_NodeId = ligne_Fonction_NodeId = "";
+ }
+ if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE_IDLIGNE)) {
+ ligne_IdLigne = atts.getValue("V");
+ ligne_IdLigne_NodeId = atts.getValue("ano:node-id");
+
+ }
+ if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE_OPERATION)) {
+ ligne_Operation = atts.getValue("V");
+ ligne_Operation_NodeId = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE_FONCTION)) {
+ ligne_Fonction = atts.getValue("V");
+ ligne_Fonction_NodeId = atts.getValue("ano:node-id");
+ }
+
+ }
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+ Vector<Node> anonodes = new Vector<Node>();
+ String PAR1 = (String) hParams.get("nomencl");
+ String PAR2 = (String) hParams.get("typnomencl");
+
+// O
+ if("M14".equals(PAR1) && "03".equals(piece_TypPce) && "18".equals(piece_NatPce)) return null;
+ if (xpath.endsWith(LIGNEPCE)
+ && !(PAR1.equals("M14") && piece_TypPce.equals("03") && piece_NatPce.equals("18"))) {
+ boolean err = false;
+//1
+ if (haveToTest(PAR1) && (piece_TypPce.equals("03") || piece_TypPce.equals("04")) && (PAR2.equals("Nature") || PAR2.equals("Nature-ref-fonct"))) {
+// 1.1.1
+ if (piece_NatPce.equals("01") && !ligne_Operation.equals("6") && !ligne_Operation.equals("042") && !ligne_Operation.equals("7") && !ligne_Operation.equals("043")) {
+ err = true;
+ anonodes.add(new Node(ligne_Operation_NodeId));
+ } else if (piece_NatPce.equals("02") && !ligne_Operation.equals("4") && !ligne_Operation.equals("040") && !ligne_Operation.equals("5") && !ligne_Operation.equals("041")) {
+// 1.1.2
+ err = true;
+ anonodes.add(new Node(ligne_Operation_NodeId));
+ }
+ }
+
+ if (haveToTest(PAR1) && (piece_TypPce.equals("03") || piece_TypPce.equals("04")) && PAR2.equals("Fonction")) {
+// 1.2
+ if(piece_NatPce.equals("01") && !(
+ "934".equals(ligne_Fonction) ||
+ "935".equals(ligne_Fonction) ||
+ ligne_Fonction.startsWith("905") ||
+ ligne_Fonction.startsWith("915") ||
+ ligne_Fonction.startsWith("935") )
+ ) {
+// 1.2.1
+ err = true;
+ anonodes.add(new Node(ligne_Fonction_NodeId));
+ }
+ if (piece_NatPce.equals("02") && !(ligne_Fonction.equals("910") || ligne_Fonction.equals("914"))) {
+// 1.2.2
+ err = true;
+ anonodes.add(new Node(ligne_Fonction_NodeId));
+ }
+ }
+//2
+ if (PAR1.equals("M71") && (piece_TypPce.equals("03") || piece_TypPce.equals("04")) && (PAR2.equals("Nature") || PAR2.equals("Nature-ref-fonct"))) {
+
+ if (piece_NatPce.equals("01") && !ligne_Operation.equals("6") && !ligne_Operation.equals("042")) {
+// 2.1.1
+ err = true;
+ anonodes.add(new Node(ligne_Operation_NodeId));
+ } else if (piece_NatPce.equals("02") && !ligne_Operation.equals("4") && !ligne_Operation.equals("040") && !ligne_Operation.equals("5") && !ligne_Operation.equals("041")) {
+// 2.1.2
+ err = true;
+ anonodes.add(new Node(ligne_Operation_NodeId));
+ }
+ }
+
+ if (PAR1.equals("M71") && (piece_TypPce.equals("03") || piece_TypPce.equals("04")) && PAR2.equals("Fonction")) {
+// 2.2
+ if (piece_NatPce.equals("01") && !(ligne_Fonction.equals("934") || ligne_Fonction.startsWith("905") || ligne_Fonction.startsWith("915") || ligne_Fonction.startsWith("935"))) {
+// 2.2.1
+ err = true;
+ anonodes.add(new Node(ligne_Fonction_NodeId));
+ } else if (piece_NatPce.equals("02") && (!(ligne_Fonction.equals("910") || ligne_Fonction.equals("914")))) {
+// 2.2.2
+ err = true;
+ anonodes.add(new Node(ligne_Fonction_NodeId));
+ }
+ }
+//3
+ if (PAR1.equals("M52") && (PAR2.equals("Nature") || PAR2.equals("Nature-ref-fonct"))) {
+
+ if (piece_NatPce.equals("01") &&
+ !ligne_Operation.equals("1") &&
+ !ligne_Operation.equals("010") &&
+ !ligne_Operation.equals("2") &&
+ !ligne_Operation.equals("015") &&
+ !ligne_Operation.equals("3") &&
+ !ligne_Operation.equals("016")) {
+// 3.1.1
+ err = true;
+ anonodes.add(new Node(ligne_Operation_NodeId));
+ }
+ }
+
+ if (PAR1.equals("M52") && PAR2.equals("Fonction")) {
+
+ if (piece_NatPce.equals("01") && (!(
+ ligne_Fonction.equals("905") ||
+ ligne_Fonction.startsWith("905") ||
+ ligne_Fonction.startsWith("91567") ||
+ ligne_Fonction.startsWith("935")))) {
+// 3.2.1
+ err = true;
+ anonodes.add(new Node(ligne_Fonction_NodeId));
+ }
+ }
+
+ if (err) {
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ String erreur = "Une opération de chapitre d'ordre doit être renseignée ou le paramètre vote par opération doit être sélectionné";
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_PIECE_ID, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNE_IDLIGNE, ligne_IdLigne);
+ msg = msg.replaceAll(MSG_LIGNE_OPE, ligne_Operation);
+ msg = msg.replaceAll(MSG_ERREUR, erreur);
+ String path = "@added:primary-key='" + bord_ExerBord + "-" + bord_TypBord + "-" + bord_IdBord + "'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau " + bord_IdBord + " Mandat " + piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "");
+ xslParams.put("mandatId", piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_DEPENSE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+
+ ano.addAll(anonodes);
+ anos.add(ano);
+ }
+
+ return null;
+
+ } else if (xpath.endsWith(ON_RETURN_ANOMALIES)) {
+
+ return anos;
+
+ } else {
+ return null;
+ }
+ }
+
+ public boolean haveToTest(String nomenclature) {
+ return (!nomenclature.equals("M52") && !nomenclature.equals("M71"));
+ }
+
+ public void endDocument() throws SAXException {
+ }
+
+ public void characters(char[] ch, int start, int length, String xpath) {
+ }
+
+ public void ignorableWhitespace(char[] ch, int start, int length, String xpath) {
+ }
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {
+ }
+
+ public void endPrefixMapping(String prefix, String xpath) {
+ }
+
+ public void processingInstruction(String target, String data, String xpath) {
+ }
+
+ public void skippedEntity(String name, String xpath) {
+ }
+
+ public void setParameters(Hashtable<String, Object> params) {
+ this.hParams = params;
+ }
+
+ public void setDocumentLocator(Locator locator) {
+ }
+}
--- /dev/null
+/*
+ * Copyright
+ * 2009 axYus - www.axyus.com
+ * 2009 C ESCOBAR - christel.escobar@axyus.com
+ *
+ * This file is part of XEMELIOS.
+ *
+ * XEMELIOS is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * XEMELIOS 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
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XEMELIOS; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+package fr.gouv.finances.cp.xemelios.controls.pesv2.pj;
+
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.dgfip.xemelios.controls.core.AbstractUnitControl;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Anomalie;
+import fr.gouv.finances.dgfip.xemelios.controls.core.IdGenerator;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Node;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+/**
+ * Implémente le contrôle N° PJ1
+ * Il consiste à vérifier la règle fonctionnelle suivante :
+ *
+ * La version du PES_PJ doit contenir la valeur 1
+ *
+ * Il est fait ainsi :
+ *
+ * La balise /PES_PJ/EnTetePES_PJ/IdVer doit avoir la valeur 1
+ *
+ */
+public class PJ1 extends AbstractUnitControl implements ConstantsControlsPESv2 {
+ private final static Logger logger = Logger.getLogger(PJ1.class);
+ public static final transient String CTRL_ID = "PJ1";
+ private Hashtable<String,Object> hParams;
+
+ /**
+ * La balise du document général
+ */
+ private String docId = null;
+ private String bord_nodeId = null;
+
+
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+
+ private String bord_Exer = "";
+ private String bord_IdBord = "";
+ private String bord_TypBord = "";
+ private String piece_IdPce = "";
+
+ private String PJ_idVer = "";
+ private String PJ_idVer_nodeId = "";
+
+
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses et les Recettes
+ */
+ private static final String CHEMIN_BLOCBORDEREAU = "/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/Bordereau/BlocBordereau/TypBord/";
+
+
+ /**
+ * Selon que l'on est en RECETTE ou DEPENSE, le xpath est différent
+ */
+ private static final String RECETTE = "PES_RecetteAller";
+ private static final String DEPENSE = "PES_DepenseAller";
+ private boolean depense = false;
+
+ private static String CHEMIN_BLOCPIECE = "";
+ private static String CHEMIN_BLOCPIECE_IDPCE = "";
+ private static final String R_CHEMIN_BLOCPIECE = "/Bordereau/Piece/BlocPiece/";
+ private static final String R_CHEMIN_BLOCPIECE_IDPCE = "/Bordereau/Piece/BlocPiece/IdPce/";
+ private static final String D_CHEMIN_BLOCPIECE = "/Bordereau/Piece/BlocPiece/";
+ private static final String D_CHEMIN_BLOCPIECE_IDPCE = "/Bordereau/Piece/BlocPiece/InfoPce/IdPce/";
+
+
+ private static final String CHEMIN_PJ = "/PES_PJ/";
+ private static final String CHEMIN_ENTETEPESPJ_IDVER = "/PES_PJ/EnTetePES_PJ/IdVer/";
+
+
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+ }
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+ public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+
+ // RECETTE ou DEPENSE
+ if (xpath.indexOf(DEPENSE)!=-1) {
+ depense = true;
+ CHEMIN_BLOCPIECE = D_CHEMIN_BLOCPIECE;
+ CHEMIN_BLOCPIECE_IDPCE = D_CHEMIN_BLOCPIECE_IDPCE;
+
+ }
+ if (xpath.indexOf(RECETTE)!=-1) {
+ depense = false;
+ CHEMIN_BLOCPIECE = R_CHEMIN_BLOCPIECE;
+ CHEMIN_BLOCPIECE_IDPCE = R_CHEMIN_BLOCPIECE_IDPCE;
+
+ }
+
+ if (xpath.endsWith(CHEMIN_PJ)) {
+ PJ_idVer = "";
+ PJ_idVer_nodeId = "";
+ }
+ if (xpath.endsWith(CHEMIN_ENTETEPESPJ_IDVER)) {
+ PJ_idVer = atts.getValue("V");
+ PJ_idVer_nodeId = atts.getValue("ano:node-id");
+ }
+
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ bord_Exer = bord_IdBord = bord_TypBord = "";
+ bord_nodeId = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_Exer = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCPIECE)) {
+ piece_IdPce = "";
+ }
+ if (xpath.endsWith(CHEMIN_BLOCPIECE_IDPCE)) {
+ piece_IdPce = atts.getValue("V");
+ }
+ }
+
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+
+ if (xpath.endsWith(CHEMIN_PJ)){
+
+ if (!PJ_idVer.equals("1")) {
+ Vector<Anomalie> ano1 = new Vector<Anomalie>();
+
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "");
+ xslParams.put("mandatId", piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ (depense?BORDEREAU_DEPENSE:BORDEREAU_RECETTE), // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path,
+ xslParams);
+ ano.addNode(new Node(PJ_idVer_nodeId));
+ ano1.add(ano);
+ return ano1;
+ } else {
+ return null;
+ }
+ } else {
+ return null;
+ }
+ }
+
+ public void endDocument() throws SAXException {}
+
+ public void characters(char[] ch, int start, int length, String xpath) {}
+
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ public void skippedEntity(String name, String xpath) {}
+
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) {}
+}
--- /dev/null
+/*
+ * Copyright
+ * 2009 axYus - www.axyus.com
+ * 2009 C ESCOBAR - christel.escobar@axyus.com
+ *
+ * This file is part of XEMELIOS.
+ *
+ * XEMELIOS is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * XEMELIOS 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
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XEMELIOS; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+package fr.gouv.finances.cp.xemelios.controls.pesv2.pj;
+
+import java.util.ArrayList;
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.dgfip.xemelios.controls.core.AbstractUnitControl;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Anomalie;
+import fr.gouv.finances.dgfip.xemelios.controls.core.IdGenerator;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Node;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+/**
+ * Implémente le contrôle N° PJ2
+ * Il consiste à vérifier la règle fonctionnelle suivante :
+ *
+ * Les PJ contenues dans le flux doivent avoir des identifiants différents.
+ *
+ * Il est fait ainsi :
+ *
+ * Les balises /PES_PJ/PJ/IdUnique doivent avoir des valeurs différentes les unes des autres
+ *
+ */
+public class PJ2 extends AbstractUnitControl implements ConstantsControlsPESv2 {
+ private final static Logger logger = Logger.getLogger(PJ2.class);
+ public static final transient String CTRL_ID = "PJ2";
+ private Hashtable<String,Object> hParams;
+
+ /**
+ * La balise du document général
+ */
+ private String docId = null;
+ private String bord_nodeId = null;
+
+
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+
+ private String bord_Exer = "";
+ private String bord_IdBord = "";
+ private String bord_TypBord = "";
+ private String piece_IdPce = "";
+
+ private String PJ_idPJ = "";
+ private String PJ_nodeId = "";
+ private ArrayList<String> valeurs_id = new ArrayList<String>();
+ int compteur = 0;
+
+
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses et les Recettes
+ */
+ private static final String CHEMIN_BLOCBORDEREAU = "/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/Bordereau/BlocBordereau/TypBord/";
+
+
+ /**
+ * Selon que l'on est en RECETTE ou DEPENSE, le xpath est différent
+ */
+ private static final String RECETTE = "PES_RecetteAller";
+ private static final String DEPENSE = "PES_DepenseAller";
+ private boolean depense = false;
+
+ private static String CHEMIN_BLOCPIECE = "";
+ private static String CHEMIN_BLOCPIECE_IDPCE = "";
+ private static final String R_CHEMIN_BLOCPIECE = "/Bordereau/Piece/BlocPiece/";
+ private static final String R_CHEMIN_BLOCPIECE_IDPCE = "/Bordereau/Piece/BlocPiece/IdPce/";
+ private static final String D_CHEMIN_BLOCPIECE = "/Bordereau/Piece/BlocPiece/";
+ private static final String D_CHEMIN_BLOCPIECE_IDPCE = "/Bordereau/Piece/BlocPiece/InfoPce/IdPce/";
+
+ private static final String CHEMIN_PESPJ = "/PES_PJ/";
+ private static final String CHEMIN_PJ = "/PES_PJ/PJ/";
+ private static final String CHEMIN_PJ_IDPJ = "/PES_PJ/PJ/IdUnique/";
+
+
+
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+ }
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+ public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+
+ // RECETTE ou DEPENSE
+ if (xpath.indexOf(DEPENSE)!=-1) {
+ depense = true;
+ CHEMIN_BLOCPIECE = D_CHEMIN_BLOCPIECE;
+ CHEMIN_BLOCPIECE_IDPCE = D_CHEMIN_BLOCPIECE_IDPCE;
+
+
+ }
+ if (xpath.indexOf(RECETTE)!=-1) {
+ depense = false;
+ CHEMIN_BLOCPIECE = R_CHEMIN_BLOCPIECE;
+ CHEMIN_BLOCPIECE_IDPCE = R_CHEMIN_BLOCPIECE_IDPCE;
+
+ }
+
+ if (xpath.endsWith(CHEMIN_PESPJ)) {
+ PJ_nodeId = "";
+ }
+
+ if (xpath.endsWith(CHEMIN_PJ)) {
+ PJ_idPJ = "";
+ PJ_nodeId = atts.getValue("ano:node-id");
+ }
+
+ if (xpath.endsWith(CHEMIN_PJ_IDPJ)) {
+ PJ_idPJ = atts.getValue("V");
+ valeurs_id.add(PJ_idPJ);
+ compteur++;
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ bord_Exer = bord_IdBord = bord_TypBord = "";
+ bord_nodeId = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_Exer = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCPIECE)) {
+ piece_IdPce = "";
+ }
+ if (xpath.endsWith(CHEMIN_BLOCPIECE_IDPCE)) {
+ piece_IdPce = atts.getValue("V");
+ }
+ }
+
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+ boolean err = false;
+ int i, j;
+
+ if (xpath.endsWith(CHEMIN_PESPJ)){
+
+ for (i=0; i<compteur; i++) {
+ for (j=0; j<compteur; j++) {
+ if (j!=i && valeurs_id.get(i).equals(valeurs_id.get(j)))
+ err = true;
+ }
+ }
+
+ if (err) {
+ Vector<Anomalie> ano1 = new Vector<Anomalie>();
+
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "");
+ xslParams.put("mandatId", piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ (depense?BORDEREAU_DEPENSE:BORDEREAU_RECETTE), // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path,
+ xslParams);
+ ano.addNode(new Node(PJ_nodeId));
+ ano1.add(ano);
+ return ano1;
+ } else {
+ return null;
+ }
+ } else {
+ return null;
+ }
+ }
+
+ public void endDocument() throws SAXException {}
+
+ public void characters(char[] ch, int start, int length, String xpath) {}
+
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ public void skippedEntity(String name, String xpath) {}
+
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) {}
+}
--- /dev/null
+/*
+ * Copyright
+ * 2009 axYus - www.axyus.com
+ * 2009 C ESCOBAR - christel.escobar@axyus.com
+ *
+ * This file is part of XEMELIOS.
+ *
+ * XEMELIOS is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * XEMELIOS 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
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XEMELIOS; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+package fr.gouv.finances.cp.xemelios.controls.pesv2.pj;
+
+import java.util.ArrayList;
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.dgfip.xemelios.controls.core.AbstractUnitControl;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Anomalie;
+import fr.gouv.finances.dgfip.xemelios.controls.core.IdGenerator;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Node;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+/**
+ * Implémente le contrôle N° PJ3
+ * Il consiste à vérifier la règle fonctionnelle suivante :
+ *
+ * Les balises RefCompta et PJRef ne peuvent coexister simultanément dans le même flux pour une même pièce.
+ *
+ * Il est fait ainsi :
+ *
+ * Les balises RefCompta et PJRef ne peuvent pas être présentes dans le même flux PESV2.
+ *
+ */
+public class PJ3 extends AbstractUnitControl implements ConstantsControlsPESv2 {
+ private final static Logger logger = Logger.getLogger(PJ3.class);
+ public static final transient String CTRL_ID = "PJ3";
+ private Hashtable<String,Object> hParams;
+
+ /**
+ * La balise du document général
+ */
+ private String docId = null;
+ private String bord_nodeId = null;
+
+
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+
+ private String bord_Exer = "";
+ private String bord_IdBord = "";
+ private String bord_TypBord = "";
+ private String piece_IdPce = "";
+ private String piece_nodeId = "";
+
+ private String PJ_idPJ = "";
+ private String PJ_nomPJ = "";
+ private String PJ_nodeId = "";
+
+ private boolean RefCompta_isPresent = false;
+ private boolean PJRef_isPresent = false;
+
+ /**
+ * Variables devant être remplacées dans le message
+ */
+ private static final String MSG_PJ_ID = "#PJ_IDUNIQUE#";
+ private static final String MSG_PJ_NOM = "#PJ_NOM#";
+
+
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses et les Recettes
+ */
+ private static final String CHEMIN_BLOCBORDEREAU = "/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/Bordereau/BlocBordereau/TypBord/";
+
+
+ /**
+ * Selon que l'on est en RECETTE ou DEPENSE, le xpath est différent
+ */
+ private static final String RECETTE = "PES_RecetteAller";
+ private static final String DEPENSE = "PES_DepenseAller";
+ private boolean depense = false;
+
+ private static String CHEMIN_BLOCPIECE = "";
+ private static String CHEMIN_BLOCPIECE_IDPCE = "";
+ private static String CHEMIN_BLOCPIECE_PJREF = "";
+
+ private static final String R_CHEMIN_BLOCPIECE = "/Bordereau/Piece/BlocPiece/";
+ private static final String R_CHEMIN_BLOCPIECE_IDPCE = "/Bordereau/Piece/BlocPiece/IdPce/";
+ private static final String R_CHEMIN_BLOCPIECE_PJREF = "/Bordereau/Piece/BlocPiece/PJRef/";
+
+ private static final String D_CHEMIN_BLOCPIECE = "/Bordereau/Piece/BlocPiece/";
+ private static final String D_CHEMIN_BLOCPIECE_IDPCE = "/Bordereau/Piece/BlocPiece/InfoPce/IdPce/";
+ private static final String D_CHEMIN_BLOCPIECE_PJREF = "/Bordereau/Piece/BlocPiece/InfoPce/PJRef/";
+
+
+ private static final String CHEMIN_PESPJ = "/PES_PJ/";
+ private static final String CHEMIN_PJ = "/PES_PJ/PJ/";
+ private static final String CHEMIN_PJ_IDPJ = "/PES_PJ/PJ/IdUnique/";
+ private static final String CHEMIN_PJ_NOMPJ = "/PES_PJ/PJ/NomPJ/";
+ private static final String CHEMIN_PJ_REFCOMPTA = "/PES_PJ/PJ/RefCompta/";
+
+
+
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+ }
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+ public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+
+ // RECETTE ou DEPENSE
+ if (xpath.indexOf(DEPENSE)!=-1) {
+ depense = true;
+ CHEMIN_BLOCPIECE = D_CHEMIN_BLOCPIECE;
+ CHEMIN_BLOCPIECE_IDPCE = D_CHEMIN_BLOCPIECE_IDPCE;
+ CHEMIN_BLOCPIECE_PJREF = D_CHEMIN_BLOCPIECE_PJREF;
+ }
+ if (xpath.indexOf(RECETTE)!=-1) {
+ depense = false;
+ CHEMIN_BLOCPIECE = R_CHEMIN_BLOCPIECE;
+ CHEMIN_BLOCPIECE_IDPCE = R_CHEMIN_BLOCPIECE_IDPCE;
+ CHEMIN_BLOCPIECE_PJREF = R_CHEMIN_BLOCPIECE_PJREF;
+ }
+
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ bord_Exer = bord_IdBord = bord_TypBord = "";
+ bord_nodeId = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_Exer = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCPIECE)) {
+ piece_IdPce = "";
+ piece_nodeId = "";
+ }
+ if (xpath.endsWith(CHEMIN_BLOCPIECE_IDPCE)) {
+ piece_IdPce = atts.getValue("V");
+ piece_nodeId = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCPIECE_PJREF)) {
+ PJRef_isPresent = true;
+ }
+
+ if (xpath.endsWith(CHEMIN_PESPJ)) {
+ PJ_nodeId = "";
+ }
+ if (xpath.endsWith(CHEMIN_PJ)) {
+ PJ_idPJ = PJ_nomPJ = "";
+ PJ_nodeId = atts.getValue("ano:node-id");
+ RefCompta_isPresent = false;
+ }
+ if (xpath.endsWith(CHEMIN_PJ_IDPJ)) {
+ PJ_idPJ = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_PJ_NOMPJ)) {
+ PJ_nomPJ = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_PJ_REFCOMPTA)) {
+ RefCompta_isPresent = true;
+ }
+
+
+ }
+
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+
+ if (xpath.endsWith(CHEMIN_PJ)){
+
+ if (RefCompta_isPresent && PJRef_isPresent) {
+
+ Vector<Anomalie> ano1 = new Vector<Anomalie>();
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_PJ_ID, PJ_idPJ);
+ msg = msg.replaceAll(MSG_PJ_NOM, PJ_nomPJ);
+
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "");
+ xslParams.put("mandatId", piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ (depense?BORDEREAU_DEPENSE:BORDEREAU_RECETTE), // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path,
+ xslParams);
+ ano.addNode(new Node(PJ_nodeId));
+ ano1.add(ano);
+ return ano1;
+ } else {
+ return null;
+ }
+ } else {
+ return null;
+ }
+ }
+
+ public void endDocument() throws SAXException {}
+
+ public void characters(char[] ch, int start, int length, String xpath) {}
+
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ public void skippedEntity(String name, String xpath) {}
+
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) {}
+}
--- /dev/null
+/*
+ * Copyright
+ * 2007 axYus - www.axyus.com
+ * 2007 JP.Tessier - jean-philippe.tessier@axyus.com
+ *
+ * This file is part of XEMELIOS.
+ *
+ * XEMELIOS is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * XEMELIOS 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
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XEMELIOS; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+package fr.gouv.finances.cp.xemelios.controls.pesv2.rec;
+
+import fr.gouv.finances.dgfip.utils.Luhn;
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.cp.xemelios.controls.AbstractUnitControl;
+import fr.gouv.finances.cp.xemelios.controls.Anomalie;
+import fr.gouv.finances.cp.xemelios.controls.IdGenerator;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+/*
+ * Implémente le contrôle N° REC24
+ *
+ * Contrôle sur la présence de la balise IdColl
+ *
+ */
+public class REC24 extends AbstractUnitControl implements ConstantsControlsPESv2{
+ private final static Logger logger = Logger.getLogger(REC24.class);
+ public static final transient String CTRL_ID = "REC24";
+ private Vector<Anomalie> anos = new Vector<Anomalie>();
+ private Hashtable<String,Object> hParams;
+
+ /**
+ * La chaine cible
+ */
+ private static final String FIN_BORDEREAU = "/PES_RecetteAller/";
+ private static final String ON_RETURN_ANOMALIES = FIN_BORDEREAU;
+
+
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+
+ private String IdColl = "";
+
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses uniquement
+ */
+ private static final String CHEMIN_PESDEPENSEALLER = "/PES_RecetteAller/";
+ private static final String CHEMIN_IDCOLL = "/EnTetePES/IdColl/";
+
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+ }
+
+ public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+ // 1
+ if (xpath.endsWith(CHEMIN_PESDEPENSEALLER)) {
+ anos = new Vector<Anomalie>();
+ }
+ if (xpath.endsWith(CHEMIN_IDCOLL)) {
+ IdColl = atts.getValue("V");
+ logger.debug(CTRL_ID+" : IdColl="+IdColl);
+ }
+ }
+
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+ if(xpath.endsWith(ON_RETURN_ANOMALIES)){
+ if(!(hParams.get("nomencl").equals("M21")) && !Luhn.testLuhnString(IdColl)) {
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent().replaceAll("#ID_COLL#","n'est pas bon. "+IdColl!=null?"Il ne correspond pas un un SIRET/SIREN valide":"Il n'existe pas dans le flux analysé"+".");
+ String anoId = IdGenerator.nextId();
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ null, // élément importable
+ null, // id élément importable
+ null,
+ null,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ null, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ null); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ anos.add(ano);
+ }
+ return anos;
+ } else {
+ return null;
+ }
+ }
+
+ public void endDocument() throws SAXException {}
+
+ public void characters(char[] ch, int start, int length, String xpath) {}
+
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ public void skippedEntity(String name, String xpath) {}
+
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) {}
+
+}
--- /dev/null
+/*
+ * Copyright
+ * 2010 axYus - www.axyus.com
+ * 2010 C ESCOBAR - christel.escobar@axyus.com
+ *
+ * This file is part of XEMELIOS.
+ *
+ * XEMELIOS is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * XEMELIOS 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
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XEMELIOS; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+
+
+package fr.gouv.finances.cp.xemelios.controls.pesv2.rec;
+
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.cp.xemelios.controls.AbstractUnitControl;
+import fr.gouv.finances.cp.xemelios.controls.Anomalie;
+import fr.gouv.finances.cp.xemelios.controls.IdGenerator;
+import fr.gouv.finances.cp.xemelios.controls.Node;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+
+/**
+ * Implémente le contrôle N° REC30
+ *
+ * Il concerne les contrôles sur la balise opération.
+ *
+ */
+
+
+public class REC30 extends AbstractUnitControl implements ConstantsControlsPESv2{
+ private final static Logger logger = Logger.getLogger(REC30.class);
+ public static final transient String CTRL_ID = "REC30";
+ private Vector<Anomalie> anos = new Vector<Anomalie>();
+ private Hashtable<String,Object> hParams;
+
+ /**
+ * La balise du document général
+ */
+
+ private String docId = null;
+ private String nodeId = null;
+
+ /**
+ * La chaine cible
+ */
+
+ private static final String FIN_PIECE = "/PES_RecetteAller/Bordereau/Piece/";
+ private static final String LIGNEPCE = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/";
+ private static final String ON_RETURN_ANOMALIES = FIN_PIECE;
+
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+
+ private String bord_IdBord = "";
+ private String bord_ExerBord = "";
+ private String bord_TypBord = "";
+ private String piece_IdPce = "";
+ private String piece_TypPce = "";
+ private String piece_NatPce = "";
+ private String ligne_IdLigne = "";
+ private String ligne_Operation = "";
+ private String ligne_Fonction = "";
+
+ private String ligne_Operation_NodeId = "";
+ private String ligne_IdLigne_NodeId = "";
+ private String ligne_Fonction_NodeId = "";
+
+
+ /**
+ * Variables devant être remplacées dans le message-echec
+ */
+
+ private static final String MSG_BORD_NUM = "#BORD_NUM#";
+ private static final String MSG_PIECE_ID = "#PIECE_IDPCE#";
+ private static final String MSG_LIGNE_IDLIGNE = "#LIGNE_IDLIGNE#";
+ private static final String MSG_LIGNE_OPE = "#LIGNE_OPE#";
+ private static final String MSG_ERREUR = "#ERREUR#";
+
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses uniquement
+ */
+
+ private static final String CHEMIN_BLOCBORDEREAU = "/PES_RecetteAller/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_PIECE = "/PES_RecetteAller/Bordereau/Piece";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/PES_RecetteAller/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/PES_RecetteAller/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/PES_RecetteAller/Bordereau/BlocBordereau/TypBord/";
+ private static final String CHEMIN_BLOCPIECE_NATPIECE = "/PES_RecetteAller/Bordereau/Piece/BlocPiece/NatPce/";
+ private static final String CHEMIN_BLOCPIECE_IDPIECE = "/PES_RecetteAller/Bordereau/Piece/BlocPiece/IdPce/";
+ private static final String CHEMIN_BLOCPIECE_TYPPIECE = "/PES_RecetteAller/Bordereau/Piece/BlocPiece/TypPce/";
+ private static final String CHEMIN_BLOCLIGNEPIECE = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/";
+ private static final String CHEMIN_INFOLIGNEPIECE_IDLIGNE = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/IdLigne/";
+ private static final String CHEMIN_INFOLIGNEPIECE_OPERATION = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/Operation/";
+ private static final String CHEMIN_INFOLIGNEPIECE_FONCTION = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/Fonction/";
+
+
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+ }
+
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+
+ public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ bord_ExerBord = bord_IdBord = bord_TypBord = "";
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_ExerBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_PIECE)) {
+ if (anos != null)
+ anos = new Vector<Anomalie>();
+ piece_IdPce = piece_TypPce = piece_NatPce = "";
+ }
+ if(xpath.endsWith(CHEMIN_BLOCPIECE_IDPIECE)){
+ piece_IdPce = atts.getValue("V");
+ anos.clear();
+ }
+ if(xpath.endsWith(CHEMIN_BLOCPIECE_TYPPIECE)){
+ piece_TypPce = atts.getValue("V");
+ }
+ if(xpath.endsWith(CHEMIN_BLOCPIECE_NATPIECE)){
+ piece_NatPce = atts.getValue("V");
+ }
+ if(xpath.endsWith(CHEMIN_BLOCLIGNEPIECE)){
+ ligne_IdLigne = ligne_Operation = ligne_Fonction = "";
+ ligne_Operation_NodeId = ligne_IdLigne_NodeId = ligne_Fonction_NodeId = "";
+ }
+ if(xpath.endsWith(CHEMIN_INFOLIGNEPIECE_IDLIGNE)){
+ ligne_IdLigne = atts.getValue("V");
+ ligne_IdLigne_NodeId = atts.getValue("ano:node-id");
+ }
+ if(xpath.endsWith(CHEMIN_INFOLIGNEPIECE_OPERATION)){
+ ligne_Operation = atts.getValue("V");
+ ligne_Operation_NodeId = atts.getValue("ano:node-id");
+ }
+ if(xpath.endsWith(CHEMIN_INFOLIGNEPIECE_FONCTION)){
+ ligne_Fonction = atts.getValue("V");
+ ligne_Fonction_NodeId = atts.getValue("ano:node-id");
+ }
+
+ }
+
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+ Vector<Node> anonodes = new Vector<Node>();
+ String PAR1 = (String)hParams.get("nomencl");
+ String PAR2 = (String)hParams.get("typnomencl");
+
+ if(xpath.endsWith(LIGNEPCE) &&
+ !(PAR1.equals("M14") && piece_TypPce.equals("03") && piece_NatPce.equals("18"))){
+ boolean err = false;
+//2
+ if ( haveToTest(PAR1) && (piece_TypPce.equals("03") || piece_TypPce.equals("04")) && (PAR2.equals("Nature") || PAR2.equals("Nature-ref-fonct")) ) {
+
+ if (piece_NatPce.equals("01") && !ligne_Operation.equals("6") && !ligne_Operation.equals("042") && !ligne_Operation.equals("7") && !ligne_Operation.equals("043")) {
+ err = true;
+ anonodes.add(new Node (ligne_Operation_NodeId));
+ }
+ if (piece_NatPce.equals("02") && !ligne_Operation.equals("4") && !ligne_Operation.equals("040") && !ligne_Operation.equals("5") && !ligne_Operation.equals("041")) {
+ err = true;
+ anonodes.add(new Node (ligne_Operation_NodeId));
+ }
+ }
+
+ if ( haveToTest(PAR1) && (piece_TypPce.equals("03") || piece_TypPce.equals("04")) && PAR2.equals("Fonction") ) {
+
+ if (piece_NatPce.equals("01") && ( !((ligne_Operation.equals("6") || ligne_Operation.equals("042")) && ligne_Fonction.equals("934"))
+ && !((ligne_Operation.equals("7") || ligne_Operation.equals("043")) && ligne_Fonction.equals("935")) )) {
+ err = true;
+ anonodes.add(new Node (ligne_Operation_NodeId));
+ anonodes.add(new Node (ligne_Fonction_NodeId));
+ }
+ if (piece_NatPce.equals("02") && ( !((ligne_Operation.equals("4") || ligne_Operation.equals("040")) && ligne_Fonction.equals("914"))
+ && !((ligne_Operation.equals("5") || ligne_Operation.equals("041")) && ligne_Fonction.equals("910")) )) {
+ err = true;
+ anonodes.add(new Node (ligne_Operation_NodeId));
+ anonodes.add(new Node (ligne_Fonction_NodeId));
+ }
+ }
+//3
+ if ( PAR1.equals("M71") && (piece_TypPce.equals("03") || piece_TypPce.equals("04")) && (PAR2.equals("Nature") || PAR2.equals("Nature-ref-fonct")) ) {
+
+ if (piece_NatPce.equals("01") && !ligne_Operation.equals("6") && !ligne_Operation.equals("042")) {
+ err = true;
+ anonodes.add(new Node (ligne_Operation_NodeId));
+ }
+ if (piece_NatPce.equals("02") && !ligne_Operation.equals("4") && !ligne_Operation.equals("040") && !ligne_Operation.equals("5") && !ligne_Operation.equals("041")) {
+ err = true;
+ anonodes.add(new Node (ligne_Operation_NodeId));
+ }
+ }
+
+ if ( PAR1.equals("M71") && (piece_TypPce.equals("03") || piece_TypPce.equals("04")) && PAR2.equals("Fonction") ) {
+
+ if (piece_NatPce.equals("01") && !((ligne_Operation.equals("6") || ligne_Operation.equals("042")) && ligne_Fonction.equals("934"))) {
+ err = true;
+ anonodes.add(new Node (ligne_Operation_NodeId));
+ anonodes.add(new Node (ligne_Fonction_NodeId));
+ }
+ if (piece_NatPce.equals("02") && ( !((ligne_Operation.equals("4") || ligne_Operation.equals("040")) && ligne_Fonction.equals("914"))
+ && !((ligne_Operation.equals("5") || ligne_Operation.equals("041")) && ligne_Fonction.equals("910")) )) {
+ err = true;
+ anonodes.add(new Node (ligne_Operation_NodeId));
+ anonodes.add(new Node (ligne_Fonction_NodeId));
+ }
+ }
+//4
+ if ( PAR1.equals("M52") && (PAR2.equals("Nature") || PAR2.equals("Nature-ref-fonct")) ) {
+
+ if (piece_NatPce.equals("01") && !ligne_Operation.equals("1") && !ligne_Operation.equals("010") && !ligne_Operation.equals("2") && !ligne_Operation.equals("015") && !ligne_Operation.equals("3") && !ligne_Operation.equals("016")) {
+ err = true;
+ anonodes.add(new Node (ligne_Operation_NodeId));
+ }
+ }
+
+ if ( PAR1.equals("M52") && PAR2.equals("Fonction") ) {
+
+ if (piece_NatPce.equals("01") && ( !(ligne_Operation.equals("4") && ligne_Fonction.equals("905"))
+ && !(ligne_Operation.equals("4") && ligne_Fonction.equals("935"))
+ && !(ligne_Operation.equals("5") && ligne_Fonction.equals("935")) )) {
+ err = true;
+ anonodes.add(new Node (ligne_Operation_NodeId));
+ anonodes.add(new Node (ligne_Fonction_NodeId));
+ }
+ }
+
+ if (err) {
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ String erreur = "Une opération de chapitre d'ordre doit être renseignée ou le paramètre vote par opération doit être sélectionné";
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_PIECE_ID, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNE_IDLIGNE, ligne_IdLigne);
+ msg = msg.replaceAll(MSG_LIGNE_OPE, ligne_Operation);
+ msg = msg.replaceAll(MSG_ERREUR, erreur);
+ String path="@added:primary-key='"+bord_ExerBord+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Titre "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId","");
+ xslParams.put("mandatId",piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_RECETTE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+
+ ano.addAll(anonodes);
+ anos.add(ano);
+ }
+
+ return null;
+
+ }
+ else if (xpath.endsWith(ON_RETURN_ANOMALIES)){
+
+ return anos;
+
+ } else {
+ return null;
+ }
+ }
+
+
+ public boolean haveToTest(String nomenclature){
+ return (!nomenclature.equals("M52") && !nomenclature.equals("M71"));
+ }
+
+ public void endDocument() throws SAXException {}
+
+ public void characters(char[] ch, int start, int length, String xpath) {}
+
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ public void skippedEntity(String name, String xpath) {}
+
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) {}
+
+}
--- /dev/null
+/*
+ * Copyright
+ * 2005 axYus - www.axyus.com
+ * 2005 N LE CORRE - nicolas.lecorre@axyus.com
+ *
+ * This file is part of XEMELIOS.
+ *
+ * XEMELIOS is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * XEMELIOS 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
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XEMELIOS; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+package fr.gouv.finances.cp.xemelios.controls.pesv2.rec;
+
+import java.util.GregorianCalendar;
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.dgfip.xemelios.controls.core.AbstractUnitControl;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Anomalie;
+import fr.gouv.finances.dgfip.xemelios.controls.core.IdGenerator;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Node;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+/**
+ * Implémente le contrôle N° REC01
+ * Il consiste à vérifier la règle fonctionnelle suivante :
+ * Contrôle de l\92exercice du bordereau.
+ * Il est fait ainsi :
+ * 1- Lorsqu'on lit un élément Pes_RecetteAller/BlocBordereau :
+ * - on vérifie que BlocBordereau/Exer/@V vaut N ou N-1
+ */
+public class REC01 extends AbstractUnitControl implements ConstantsControlsPESv2 {
+ private final static Logger logger = Logger.getLogger(REC01.class);
+ public static final transient String CTRL_ID = "REC01";
+ private Vector<Anomalie> anos = new Vector<Anomalie>();
+ private Hashtable<String,Object> hParams;
+
+ /**
+ * La balise du document général
+ */
+ private String docId = null;
+ private String nodeId = null;
+
+ /**
+ * La chaine cible
+ */
+ private static final String ON_RETURN_ANOMALIES = "/PES_RecetteAller/Bordereau/";
+
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+ private String bord_Exer = "";
+ private String bord_IdBord = "";
+ private String bord_typBord = "";
+
+ /**
+ * Variables devant être remplacées dans le message
+ */
+ private static final String MSG_BORD_NUM = "#BORD_NUM#";
+ private static final String MSG_BORD_EXER = "#BORD_EXER#";
+
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses uniquement
+ */
+ private static final String CHEMIN_BLOCBORDEREAU = "/PES_RecetteAller/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/PES_RecetteAller/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/PES_RecetteAller/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/PES_RecetteAller/Bordereau/BlocBordereau/TypBord/";
+
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+ }
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+ public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+ // 1
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ bord_Exer = bord_IdBord = "";
+ anos = new Vector<Anomalie>();
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_Exer = atts.getValue("V");
+ nodeId = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_typBord = atts.getValue("V");
+ }
+ }
+
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+ if(xpath.endsWith(ON_RETURN_ANOMALIES)){
+ boolean err = false;
+ try {
+ int annee = Integer.parseInt(bord_Exer);
+ GregorianCalendar gc = (GregorianCalendar)GregorianCalendar.getInstance();
+ if (annee == gc.get(GregorianCalendar.YEAR) || annee==(gc.get(GregorianCalendar.YEAR)-1)) err = false;
+ else err = true;
+ } catch (Exception e) { err = true; }
+
+ if (err) {
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_Exer);
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_typBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "Bordereau");
+ xslParams.put("mandatId", "");
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_RECETTE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ ano.addNode(new Node(nodeId));
+ anos.add(ano);
+ }
+ return anos;
+ } else {
+ return null;
+ }
+ }
+
+ public void endDocument() throws SAXException {}
+
+ public void characters(char[] ch, int start, int length, String xpath) {}
+
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ public void skippedEntity(String name, String xpath) {}
+
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) {}
+}
--- /dev/null
+/*
+ * Copyright
+ * 2005 axYus - www.axyus.com
+ * 2005 N LE CORRE - nicolas.lecorre@axyus.com
+ *
+ * This file is part of XEMELIOS.
+ *
+ * XEMELIOS is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * XEMELIOS 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
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XEMELIOS; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+package fr.gouv.finances.cp.xemelios.controls.pesv2.rec;
+
+import java.util.Hashtable;
+import java.util.StringTokenizer;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.dgfip.xemelios.controls.core.AbstractUnitControl;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Anomalie;
+import fr.gouv.finances.dgfip.xemelios.controls.core.IdGenerator;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Node;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+/**
+ * Implémente le contrôle N° REC02
+ *
+ * Contrôle sur l\92absence de doublon sur le numéro de bordereau
+ *
+ * Le numéro de bordereau ne doit pas être déjà attribué à un bordereau de:
+ * - même budget collectivité.
+ * - même type de bordereau (même séquence).
+ *
+ * Tous les BlocBordereau/IdBord[@V] doivent être différents pour un même BlocBordereau/TypBord[@V]
+ *
+ */
+public class REC02 extends AbstractUnitControl implements ConstantsControlsPESv2 {
+ private final static Logger logger = Logger.getLogger(REC02.class);
+ public static final transient String CTRL_ID = "REC02";
+ private Vector<Anomalie> anos = new Vector<Anomalie>();
+ private Hashtable<String,Object> hParams;
+
+ /**
+ * La balise du document général
+ */
+ private String docId = null;
+ private String nodeId = null;
+
+ /**
+ * La chaine cible
+ */
+ private static final String FIN_BORDEREAU = "/PES_RecetteAller/Bordereau/";
+ private static final String ON_RETURN_ANOMALIES = FIN_BORDEREAU;
+
+
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+
+ private String bord_IdBord = "";
+ private String bord_TypBord = "";
+ private String bord_Exer = "";
+ private String bord_NodeIdBord = "";
+ private Hashtable<String,Object> hashIdsBord = new Hashtable<String,Object>();
+
+ /**
+ * Variables devant être remplacées dans le message
+ */
+ private static final String MSG_BORD_NUM = "#BORD_NUM#";
+ private static final String MSG_BORD_EXER = "#BORD_EXER#";
+ private static final String MSG_BORD_TYPBORD = "#BORD_TYPBORD#";
+
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses uniquement
+ */
+ private static final String CHEMIN_BLOCBORDEREAU = "/PES_RecetteAller/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_BORDEREAU = "/PES_RecetteAller/Bordereau/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/PES_RecetteAller/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/PES_RecetteAller/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/PES_RecetteAller/Bordereau/BlocBordereau/TypBord/";
+
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+ }
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+ public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+ // 1
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ anos = new Vector<Anomalie>();
+ }
+ if (xpath.endsWith(CHEMIN_BORDEREAU)) {
+ bord_NodeIdBord = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_Exer = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ }
+ }
+
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+ if(xpath.endsWith(ON_RETURN_ANOMALIES)){
+ boolean err = false;
+ try {
+ for(String idbord:hashIdsBord.keySet()){
+ String tmp = hashIdsBord.get(idbord).toString();
+ StringTokenizer st = new StringTokenizer(tmp, "|");
+ String typbord = st.nextToken();
+ String tmp2 = st.nextToken();
+ if("0".equals(tmp2) && idbord.equals(bord_IdBord) && typbord.equals(bord_TypBord)){
+ err = true;
+ hashIdsBord.remove(idbord);
+ hashIdsBord.put(idbord,typbord+"|1");
+ }
+ }
+ } catch (Exception e) { err = true; }
+
+ if (err) {
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_Exer);
+ msg = msg.replaceAll(MSG_BORD_TYPBORD, bord_TypBord);
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId","Bordereau");
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_RECETTE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ ano.addNode(new Node(bord_NodeIdBord));
+ anos.add(ano);
+ }
+ hashIdsBord.put(bord_IdBord,bord_TypBord+"|0");
+ return anos;
+ } else {
+ return null;
+ }
+ }
+
+ public void endDocument() throws SAXException {}
+
+ public void characters(char[] ch, int start, int length, String xpath) {}
+
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ public void skippedEntity(String name, String xpath) {}
+
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) {}
+}
--- /dev/null
+/*
+ * Copyright
+ * 2005 axYus - www.axyus.com
+ * 2005 N LE CORRE - nicolas.lecorre@axyus.com
+ *
+ * This file is part of XEMELIOS.
+ *
+ * XEMELIOS is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * XEMELIOS 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
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XEMELIOS; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+package fr.gouv.finances.cp.xemelios.controls.pesv2.rec;
+
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.dgfip.xemelios.controls.core.AbstractUnitControl;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Anomalie;
+import fr.gouv.finances.dgfip.xemelios.controls.core.IdGenerator;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Node;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+/**
+ * Implémente le contrôle N° REC03
+ * Il consiste à vérifier la règle fonctionnelle suivante :
+ * Contrôle de l\92existence de la date d\92émission du bordereau
+ * Il est fait ainsi :
+ * 1- Lorsqu'on lit un élément Pes_RecetteAller/BlocBordereau :
+ * - on vérifie que BlocBordereau/DteBordEm/@V est valorisé
+ */
+public class REC03 extends AbstractUnitControl implements ConstantsControlsPESv2 {
+ private final static Logger logger = Logger.getLogger(REC03.class);
+ public static final transient String CTRL_ID = "REC03";
+ private Vector<Anomalie> anos = new Vector<Anomalie>();
+ private Hashtable<String,Object> hParams;
+
+ /**
+ * La balise du document général
+ */
+ private String docId = null;
+ private String bordId = null;
+ private String nodeId = null;
+
+ /**
+ * La chaine cible
+ */
+ private static final String ON_RETURN_ANOMALIES = "/PES_RecetteAller/Bordereau/";
+
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+ private String bord_IdBord = "";
+ private String bord_TypBord = "";
+ private String bord_Exer = "";
+ private String bord_DteBordEm = "";
+
+ /**
+ * Variables devant être remplacées dans le message
+ */
+ private static final String MSG_BORD_NUM = "#BORD_NUM#";
+ private static final String MSG_BORD_EXER = "#BORD_EXER#";
+ private static final String MSG_BORD_TYPBORD = "#BORD_TYPBORD#";
+
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses uniquement
+ */
+ private static final String CHEMIN_BLOCBORDEREAU = "/PES_RecetteAller/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/PES_RecetteAller/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/PES_RecetteAller/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_DTEBORDEM = "/PES_RecetteAller/Bordereau/BlocBordereau/DteBordEm/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/PES_RecetteAller/Bordereau/BlocBordereau/TypBord/";
+
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+ }
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+ public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+ // 1
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ bord_Exer = bord_IdBord = bord_DteBordEm = "";
+ anos = new Vector<Anomalie>();
+ bordId = atts.getValue("ano:node-id");
+ nodeId = "";
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_Exer = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_DTEBORDEM)) {
+ bord_DteBordEm = atts.getValue("V");
+ nodeId = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ }
+ }
+
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+ if(xpath.endsWith(ON_RETURN_ANOMALIES)){
+ boolean err = false;
+
+ err = (bord_DteBordEm == null || "".equals(bord_DteBordEm));
+
+ if (err) {
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_Exer);
+ msg = msg.replaceAll(MSG_BORD_TYPBORD, bord_TypBord);
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "Bordereau");
+ xslParams.put("mandatId", "");
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_RECETTE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ ano.addNode(new Node((nodeId!=null&&!"".equals(nodeId)?nodeId:bordId)));
+ anos.add(ano);
+ }
+ return anos;
+ } else {
+ return null;
+ }
+ }
+
+ public void endDocument() throws SAXException {}
+
+ public void characters(char[] ch, int start, int length, String xpath) {}
+
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ public void skippedEntity(String name, String xpath) {}
+
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) {}
+}
--- /dev/null
+/*
+ * Copyright
+ * 2005 axYus - www.axyus.com
+ * 2005 N LE CORRE - nicolas.lecorre@axyus.com
+ *
+ * This file is part of XEMELIOS.
+ *
+ * XEMELIOS is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * XEMELIOS 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
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XEMELIOS; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+package fr.gouv.finances.cp.xemelios.controls.pesv2.rec;
+
+import java.math.BigDecimal;
+import java.text.DecimalFormat;
+import java.util.ArrayList;
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.dgfip.xemelios.controls.core.AbstractUnitControl;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Anomalie;
+import fr.gouv.finances.dgfip.xemelios.controls.core.IdGenerator;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Node;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+/**
+ * Implémente le contrôle N° REC04
+ *
+ * Contrôle du cumul des montants du bordereau
+ *
+ * Le montant total, HT et TVA, du bordereau de mandats doit être égal à la somme des montants des mandats, HT et TVA.
+ *
+ * Pour chaque bordereau vérifier que BlocBordereau/MtBordHt[@V] = somme des Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/MtHT[@V]
+ *
+ * Pour chaque bordereau vérifier que BlocBordereau/MtBordTVA[@V] = somme des Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/MtTVA[@V]
+ *
+ */
+public class REC04 extends AbstractUnitControl implements ConstantsControlsPESv2 {
+ private final static Logger logger = Logger.getLogger(REC04.class);
+ public static final transient String CTRL_ID = "REC04";
+ private Vector<Anomalie> anos = new Vector<Anomalie>();
+ private Hashtable<String,Object> hParams;
+
+ /**
+ * La balise du document général
+ */
+ private String docId = null;
+ private ArrayList<Node> nodesId = new ArrayList<Node>();
+
+ /**
+ * La chaine cible
+ */
+ private static final String FIN_BORDEREAU = "/PES_RecetteAller/Bordereau/";
+ private static final String ON_RETURN_ANOMALIES = FIN_BORDEREAU;
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+ private String bord_ExerBord = "";
+ private String bord_IdBord = "";
+ private String bord_TypBord = "";
+ private String bord_MtBordHT = "";
+ private String bord_MtBordHT_nodeid = "";
+ private String bord_MtBordTVA = "";
+ private String bord_MtBordTVA_nodeid = "";
+ private String pieces_TotalHT = "";
+ private String pieces_TotalTVA = "";
+ private Vector<String> pieces_TotalHT_nodesid = new Vector<String>();
+ private Vector<String> pieces_TotalTVA_nodesid = new Vector<String>();
+
+ private static DecimalFormat df = new DecimalFormat("############0.##");
+
+ /**
+ * Variables devant être remplacées dans le message
+ */
+ private static final String MSG_BORD_NUM = "#BORD_NUM#";
+ private static final String MSG_BORD_EXER = "#BORD_EXER#";
+ private static final String MSG_BORD_TYPEBORD = "#BORD_TYPBORD#";
+ private static final String MSG_BORD_MNT = "#MT_BORD#";
+ private static final String MSG_PIECE_TOTAL = "#MT_LIGNES#";
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses uniquement
+ */
+ private static final String CHEMIN_BLOCBORDEREAU = "/PES_RecetteAller/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_BORDEREAU = "/PES_RecetteAller/Bordereau/";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/PES_RecetteAller/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/PES_RecetteAller/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/PES_RecetteAller/Bordereau/BlocBordereau/TypBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_MTHTBORD = "/PES_RecetteAller/Bordereau/BlocBordereau/MtBordHt/";
+ private static final String CHEMIN_PIECE_MTHT = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/MtHT/";
+ private static final String CHEMIN_BLOCBORDEREAU_MTTVABORD = "/PES_RecetteAller/Bordereau/BlocBordereau/MtBordTVA/";
+ private static final String CHEMIN_PIECE_MTTVA = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/MtTVA/";
+
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+ }
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+ public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+ // 1
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ bord_ExerBord = bord_IdBord = bord_MtBordHT = bord_MtBordHT_nodeid = bord_MtBordTVA = bord_MtBordTVA_nodeid = bord_TypBord = pieces_TotalHT = pieces_TotalTVA = "";
+ anos = new Vector<Anomalie>();
+ pieces_TotalHT_nodesid = new Vector<String>();
+ pieces_TotalTVA_nodesid = new Vector<String>();
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_ExerBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_MTHTBORD)) {
+ bord_MtBordHT = atts.getValue("V");
+ bord_MtBordHT_nodeid = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_MTTVABORD)) {
+ bord_MtBordTVA = atts.getValue("V");
+ bord_MtBordTVA_nodeid = atts.getValue("ano:node-id");
+ }
+
+ if (xpath.endsWith(CHEMIN_PIECE_MTHT)) {
+ pieces_TotalHT_nodesid.add(atts.getValue("ano:node-id"));
+ try {
+ BigDecimal tmp = new BigDecimal ((pieces_TotalHT.equals("")?"0.0":pieces_TotalHT));
+ tmp = tmp.add(new BigDecimal (atts.getValue("V")));
+ pieces_TotalHT = tmp.toString();
+ } catch (Exception e) {
+
+ }
+ }
+ if (xpath.endsWith(CHEMIN_PIECE_MTTVA)) {
+ pieces_TotalTVA_nodesid.add(atts.getValue("ano:node-id"));
+ try {
+ BigDecimal tmp = new BigDecimal ((pieces_TotalTVA.equals("")?"0.0":pieces_TotalTVA));
+ tmp = tmp.add(new BigDecimal (atts.getValue("V")));
+ pieces_TotalTVA = tmp.toString();
+ } catch (Exception e) {
+
+ }
+ }
+ }
+
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+ if(xpath.endsWith(ON_RETURN_ANOMALIES)){
+ /**
+ * HT
+ */
+ try {
+ if (bord_MtBordHT!=null && !"".equals(bord_MtBordHT)) {
+ BigDecimal totalBordHT = new BigDecimal ((bord_MtBordHT.equals("")?"0.0":bord_MtBordHT));
+ BigDecimal totalPieceHT = new BigDecimal ((pieces_TotalHT.equals("")?"0.0":pieces_TotalHT));
+ if (totalBordHT.compareTo(totalPieceHT)!=0) {
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_ExerBord);
+ msg = msg.replaceAll(MSG_BORD_TYPEBORD, bord_TypBord);
+ msg = msg.replaceAll(MSG_BORD_MNT, " - MtBordHT= "+df.format(totalBordHT));
+ msg = msg.replaceAll(MSG_PIECE_TOTAL, " - MtHT= "+df.format(totalPieceHT));
+ String path="@added:primary-key='"+bord_ExerBord+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "Bordereau");
+ xslParams.put("mandatId", "");
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_RECETTE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ ano.addNode(new Node(bord_MtBordHT_nodeid));
+ for (String node:pieces_TotalHT_nodesid) {
+ ano.addNode(new Node(node));
+ }
+ anos.add(ano);
+ }
+ }
+ } catch (Exception e) {
+
+ }
+ /**
+ * TVA
+ */
+ try {
+ if (bord_MtBordTVA != null && !"".equals(bord_MtBordTVA)) {
+ BigDecimal totalBordTVA = new BigDecimal ((bord_MtBordTVA.equals("")?"0.0":bord_MtBordTVA));
+ BigDecimal totalPieceTVA = new BigDecimal ((pieces_TotalTVA.equals("")?"0.0":pieces_TotalTVA));
+ if (totalBordTVA.compareTo(totalPieceTVA)!=0) {
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_ExerBord);
+ msg = msg.replaceAll(MSG_BORD_TYPEBORD, bord_TypBord);
+ msg = msg.replaceAll(MSG_BORD_MNT, " - MtBordTVA= "+df.format(totalBordTVA));
+ msg = msg.replaceAll(MSG_PIECE_TOTAL, " - MtTVA= "+df.format(totalPieceTVA));
+ String path="@added:primary-key='"+bord_ExerBord+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "Bordereau");
+ xslParams.put("mandatId", "");
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_RECETTE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ ano.addNode(new Node(bord_MtBordTVA_nodeid));
+ for (String node:pieces_TotalTVA_nodesid) {
+ ano.addNode(new Node(node));
+ }
+ anos.add(ano);
+ }
+ }
+ } catch (Exception e) {
+
+ }
+
+
+ return anos;
+ } else {
+ return null;
+ }
+ }
+
+ public void endDocument() throws SAXException {}
+
+ public void characters(char[] ch, int start, int length, String xpath) {}
+
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ public void skippedEntity(String name, String xpath) {}
+
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) {}
+}
--- /dev/null
+/*
+ * Copyright
+ * 2005 axYus - www.axyus.com
+ * 2005 N LE CORRE - nicolas.lecorre@axyus.com
+ *
+ * This file is part of XEMELIOS.
+ *
+ * XEMELIOS is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * XEMELIOS 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
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XEMELIOS; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+package fr.gouv.finances.cp.xemelios.controls.pesv2.rec;
+
+import java.util.Hashtable;
+import java.util.StringTokenizer;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.dgfip.xemelios.controls.core.AbstractUnitControl;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Anomalie;
+import fr.gouv.finances.dgfip.xemelios.controls.core.IdGenerator;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Node;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+/**
+ * Implémente le contrôle N° REC05
+ * Il consiste à vérifier la règle fonctionnelle suivante :
+ * Contrôle des montants.
+ * Il est fait ainsi :
+ * 1- Lorsqu'on lit un élément BlocBordereau :
+ * - on vide BlocBordereau/Exer/@V, BlocBordereau/IdBord/@V, BlocBordereau/Typbord/@V, BlocBordereau/MtBordHT/@V, BlocBordereau/MtBordTVA/@V.
+ * - on stocke BlocBordereau/Exer/@V, BlocBordereau/IdBord/@V, BlocBordereau/Typbord/@V, BlocBordereau/MtBordHT/@V, BlocBordereau/MtBordTVA/@V.
+ * 2- Lorsqu'on lit un élément BlocPiece :
+ * - on vide BlocPiece/IdPce/@V.
+ * - on stocke BlocPiece/IdPce/@V.
+ * 3- Lorsqu'on lit un élément InfoLignePiece :
+ * - on vide InfoLignePiece/IdLigne/@V, InfoLignePiece/MtHT/@V, InfoLignePiece/MtTVA/@V.
+ * - on stocke InfoLignePiece/IdLigne/@V, InfoLignePiece/MtHT/@V, InfoLignePiece/MtTVA/@V.
+ * 4- Lorsqu'on lit une fin d'élément BlocBordereau :
+ * - on vérifie que BlocBordereau/MtBordHT/@V et BlocBordereau/MtBordTVA/@V. est positif.
+ * 5- Lorsqu'on lit une fin d'élément InfoLignePiece :
+ * - on vérifie que InfoLignePiece/MtHT/@V et InfoLignePiece/MtTVA/@V est positif.
+ *
+ *
+ * !!!! Attention !!!!
+ * Le message de ce contrôle est double. Selon le cas, nous avons besoin de deux messages différents.
+ * Ainsi les deux messages sont concaténés et séparés par le caractère '|'
+ */
+public class REC05 extends AbstractUnitControl implements ConstantsControlsPESv2 {
+ private final static Logger logger = Logger.getLogger(REC05.class);
+ public static final transient String CTRL_ID="REC05";
+ private Vector<Anomalie> anosB = new Vector<Anomalie>();
+ private Vector<Anomalie> anosP = new Vector<Anomalie>();
+ private Hashtable<String,Object> hParams;
+
+ /**
+ * La balise du document général
+ */
+ private String docId = null;
+ private String bord_nodeId = null;
+ private String ligne_nodeId = null;
+
+ /**
+ * La chaine cible
+ */
+ private static final String ON_RETURN_ANOMALIES = "/PES_RecetteAller/Bordereau/";
+ private static final String FIN_BORDEREAU = ON_RETURN_ANOMALIES;
+ private static final String FIN_LIGNEPIECE = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/";
+ private static final String FIN_PIECE = "/PES_RecetteAller/Bordereau/Piece/";
+
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+ private String bord_Exer = "";
+ private String bord_IdBord = "";
+ private String bord_TypBord = "";
+ private String bord_Mtht = "";
+ private String bord_Mttva = "";
+ private String bord_Mtht_nodeid = "";
+ private String bord_Mttva_nodeid = "";
+ private String piece_IdPce = "";
+ private String ligne_IdLigne = "";
+ private String ligne_Mtht = "";
+ private String ligne_Mttva = "";
+ private String ligne_Mtht_nodeid = "";
+ private String ligne_Mttva_nodeid = "";
+
+ /**
+ * Variables devant être remplacées dans le message
+ */
+ private static final String MSG_BORD_NUM = "#BORD_NUM#";
+ private static final String MSG_BORD_EXER = "#BORD_EXER#";
+ private static final String MSG_BORD_TYPBORD = "#BORD_TYPBORD#";
+ private static final String MSG_BORD_MTHT = "#BORD_MTHT#";
+ private static final String MSG_BORD_MTTVA = "#BORD_MTTVA#";
+ private static final String MSG_PIECE_IDPCE = "#PIECE_IDPCE#";
+ private static final String MSG_LIGNE_IDLIGNE = "#LIGNE_IDLIGNE#";
+ private static final String MSG_LIGNE_MTHT = "#LIGNE_MTHT#";
+ private static final String MSG_LIGNE_MTTVA = "#LIGNE_MTTVA#";
+
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses uniquement
+ */
+ private static final String CHEMIN_BLOCBORDEREAU = "/PES_RecetteAller/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/PES_RecetteAller/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/PES_RecetteAller/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/PES_RecetteAller/Bordereau/BlocBordereau/TypBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_MTBORDHT = "/PES_RecetteAller/Bordereau/BlocBordereau/MtBordHt/";
+ private static final String CHEMIN_BLOCBORDEREAU_MTBORDTVA = "/PES_RecetteAller/Bordereau/BlocBordereau/MtBordTVA/";
+
+ private static final String CHEMIN_BLOCPIECE = "/PES_RecetteAller/Bordereau/Piece/BlocPiece/";
+ private static final String CHEMIN_BLOCPIECE_IDPCE = "/PES_RecetteAller/Bordereau/Piece/BlocPiece/IdPce/";
+
+ private static final String CHEMIN_INFOLIGNEPIECE = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/";
+ private static final String CHEMIN_INFOLIGNEPIECE_IDLIGNE = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/IdLigne/";
+ private static final String CHEMIN_INFOLIGNEPIECE_MTHT = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/MtHT/";
+ private static final String CHEMIN_INFOLIGNEPIECE_MTTVA = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/MtTVA/";
+
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+ }
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+ public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+ // 1
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ bord_Exer = bord_IdBord = bord_TypBord = bord_Mtht = bord_Mttva = "";
+ bord_nodeId = atts.getValue("ano:node-id");
+ anosB = new Vector<Anomalie>();
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_Exer = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_MTBORDHT)) {
+ bord_Mtht = atts.getValue("V");
+ bord_Mtht_nodeid = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_MTBORDTVA)) {
+ bord_Mttva = atts.getValue("V");
+ bord_Mttva_nodeid = atts.getValue("ano:node-id");
+ }
+
+ // 2
+ if (xpath.endsWith(CHEMIN_BLOCPIECE)) {
+ piece_IdPce = "";
+ anosP = new Vector<Anomalie>();
+ }
+ if (xpath.endsWith(CHEMIN_BLOCPIECE_IDPCE)) {
+ piece_IdPce = atts.getValue("V");
+ }
+
+ // 3
+ if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE)) {
+ ligne_IdLigne = ligne_Mtht = ligne_Mttva = "";
+ ligne_nodeId = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE_IDLIGNE)) {
+ ligne_IdLigne = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE_MTHT)) {
+ ligne_Mtht = atts.getValue("V");
+ ligne_Mtht_nodeid = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE_MTTVA)) {
+ ligne_Mttva = atts.getValue("V");
+ ligne_Mttva_nodeid = atts.getValue("ano:node-id");
+ }
+ }
+
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+ if(xpath.endsWith(ON_RETURN_ANOMALIES)){
+ boolean err = false;
+ Vector<Node> anonodes = new Vector<Node>();
+ try {
+ if (bord_Mtht!=null && !"".equals(bord_Mtht)) {
+ double mtHT = Double.parseDouble(bord_Mtht);
+ if (mtHT <= 0) {err = true; anonodes.add(new Node (bord_Mtht_nodeid)); }
+ }
+// FA 37
+// if (bord_Mttva!=null && !"".equals(bord_Mttva)) {
+// double mtTVA = Double.parseDouble(bord_Mttva);
+// if (mtTVA <= 0) {err = true; anonodes.add(new Node (bord_Mttva_nodeid)); }
+// }
+ } catch (Exception e) { err = true; }
+
+ if (err) {
+ StringTokenizer st = new StringTokenizer (getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent(), "|");
+ String msg = st.nextToken();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_Exer);
+ msg = msg.replaceAll(MSG_BORD_TYPBORD, bord_TypBord);
+ msg = msg.replaceAll(MSG_BORD_MTHT, bord_Mtht);
+ msg = msg.replaceAll(MSG_BORD_MTTVA, bord_Mttva);
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "Bordereau");
+ xslParams.put("mandatId", "");
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_RECETTE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ ano.addAll(anonodes);
+ anosB.add(ano);
+ }
+ return anosB;
+ } else if (xpath.endsWith(FIN_PIECE)){
+ return anosP;
+ } else if (xpath.endsWith(FIN_LIGNEPIECE)){
+ boolean err = false;
+ Vector<Node> anonodes = new Vector<Node>();
+ try {
+ if (ligne_Mtht!=null && !"".equals(ligne_Mtht)) {
+ double mtHT = Double.parseDouble(ligne_Mtht);
+ if (mtHT <= 0) {err = true; anonodes.add(new Node (ligne_Mtht_nodeid)); }
+ }
+// FA 37
+// if (ligne_Mttva!=null && !"".equals(ligne_Mttva)) {
+// double mtTVA = Double.parseDouble(ligne_Mttva);
+// if (mtTVA <= 0) {err = true; anonodes.add(new Node (ligne_Mttva_nodeid)); }
+// }
+ } catch (Exception e) { err = true; }
+
+ if (err) {
+ StringTokenizer st = new StringTokenizer (getDocumentModel().getControlById(CTRL_ID).getMessage().getContent(), "|");
+ st.nextToken();
+ String msg = st.nextToken();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_Exer);
+ msg = msg.replaceAll(MSG_BORD_TYPBORD, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_IDPCE, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNE_IDLIGNE, ligne_IdLigne);
+ msg = msg.replaceAll(MSG_LIGNE_MTHT, ligne_Mtht);
+ msg = msg.replaceAll(MSG_LIGNE_MTTVA, ligne_Mttva);
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "");
+ xslParams.put("mandatId", piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_RECETTE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ ano.addAll(anonodes);
+ anosP.add(ano);
+ }
+ return null;
+ } else {
+ return null;
+ }
+ }
+
+ public void endDocument() throws SAXException {}
+
+ public void characters(char[] ch, int start, int length, String xpath) {}
+
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ public void skippedEntity(String name, String xpath) {}
+
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) {}
+}
--- /dev/null
+/*
+ * Copyright
+ * 2005 axYus - www.axyus.com
+ * 2005 N LE CORRE - nicolas.lecorre@axyus.com
+ *
+ * This file is part of XEMELIOS.
+ *
+ * XEMELIOS is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * XEMELIOS 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
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XEMELIOS; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+package fr.gouv.finances.cp.xemelios.controls.pesv2.rec;
+
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.dgfip.xemelios.controls.core.AbstractUnitControl;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Anomalie;
+import fr.gouv.finances.dgfip.xemelios.controls.core.IdGenerator;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Node;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+/**
+ * Implémente le contrôle N° REC06
+ * Il consiste à vérifier la règle fonctionnelle suivante :
+ * Contrôle de la cohérence du nombre de pièces
+ * Il est fait ainsi :
+ * 1- Lorsqu'on lit un élément BlocBordereau :
+ * - on vide BlocBordereau/Exer/@V, BlocBordereau/IdBord/@V, BlocBordereau/NbrPce/@V.
+ * - on stocke BlocBordereau/Exer/@V, BlocBordereau/IdBord/@V, BlocBordereau/NbrPce/@V.
+ * 2- Lorsqu'on lit un élément Piece :
+ * - on incrémente le compteur de pièces pour ce bordereau.
+ * 3- Lorsqu'on lit une fin d'élément Bordereau :
+ * - on vérifie que BlocBordereau/NbrPce/@V = compteurPiece.
+ */
+public class REC06 extends AbstractUnitControl implements ConstantsControlsPESv2 {
+ private final static Logger logger = Logger.getLogger(REC06.class);
+ public static final transient String CTRL_ID="REC06";
+ private Vector<Anomalie> anos = new Vector<Anomalie>();
+ private Hashtable<String,Object> hParams;
+
+ /**
+ * La balise du document général
+ */
+ private String docId = null;
+ private String bord_nodeId = null;
+ private String ligne_nodeId = null;
+
+ /**
+ * La chaine cible
+ */
+ private static final String ON_RETURN_ANOMALIES = "/PES_RecetteAller/Bordereau/";
+ private static final String FIN_BORDEREAU = ON_RETURN_ANOMALIES;
+
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+ private String bord_Exer = "";
+ private String bord_IdBord = "";
+ private String bord_typBord = "";
+ private String bord_nbrpce = "";
+ private String bord_nbrpce_nodeid = "";
+ private int compteurPiece = 0;
+
+ /**
+ * Variables devant être remplacées dans le message
+ */
+ private static final String MSG_BORD_NUM = "#BORD_NUM#";
+ private static final String MSG_BORD_EXER = "#BORD_EXER#";
+ private static final String MSG_BORD_NBPCE = "#BORD_NBPCE#";
+ private static final String MSG_NB_PIECES = "#NB_PIECES#";
+
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses uniquement
+ */
+ private static final String CHEMIN_BLOCBORDEREAU = "/PES_RecetteAller/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/PES_RecetteAller/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/PES_RecetteAller/Bordereau/BlocBordereau/TypBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/PES_RecetteAller/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_NBRPCE = "/PES_RecetteAller/Bordereau/BlocBordereau/NbrPce/";
+
+ private static final String CHEMIN_PIECE = "/PES_RecetteAller/Bordereau/Piece/";
+
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+ }
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+ public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+ // 1
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ bord_Exer = bord_IdBord = bord_nbrpce = bord_nbrpce_nodeid = "";
+ compteurPiece = 0;
+ bord_nodeId = atts.getValue("ano:node-id");
+ anos = new Vector<Anomalie>();
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_Exer = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_typBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_NBRPCE)) {
+ bord_nbrpce = atts.getValue("V");
+ bord_nbrpce_nodeid = atts.getValue("ano:node-id");
+ }
+
+ // 2
+ if (xpath.endsWith(CHEMIN_PIECE)) {
+ compteurPiece++;
+ }
+ }
+
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+ if(xpath.endsWith(ON_RETURN_ANOMALIES)){
+ boolean err = false;
+ Vector<Node> anonodes = new Vector<Node>();
+ try {
+ if (bord_nbrpce!=null && !"".equals(bord_nbrpce)) {
+ int nbBordPce = Integer.parseInt(bord_nbrpce);
+ err = nbBordPce != compteurPiece;
+ }
+ } catch (Exception e) { err = true; }
+
+ if (err) {
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_Exer);
+ msg = msg.replaceAll(MSG_BORD_NBPCE, bord_nbrpce);
+ msg = msg.replaceAll(MSG_NB_PIECES, String.valueOf(compteurPiece));
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_typBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "Bordereau");
+ xslParams.put("mandatId", "");
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_RECETTE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ ano.addNode(new Node(bord_nbrpce_nodeid));
+ anos.add(ano);
+ }
+ return anos;
+ } else {
+ return null;
+ }
+ }
+
+ public void endDocument() throws SAXException {}
+
+ public void characters(char[] ch, int start, int length, String xpath) {}
+
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ public void skippedEntity(String name, String xpath) {}
+
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) {}
+}
--- /dev/null
+/*
+ * Copyright
+ * 2005 axYus - www.axyus.com
+ * 2005 N LE CORRE - nicolas.lecorre@axyus.com
+ *
+ * This file is part of XEMELIOS.
+ *
+ * XEMELIOS is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * XEMELIOS 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
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XEMELIOS; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+package fr.gouv.finances.cp.xemelios.controls.pesv2.rec;
+
+import java.util.Enumeration;
+import java.util.Hashtable;
+import java.util.StringTokenizer;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.dgfip.xemelios.controls.core.AbstractUnitControl;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Anomalie;
+import fr.gouv.finances.dgfip.xemelios.controls.core.IdGenerator;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Node;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+/**
+ * Implémente le contrôle N° REC07
+ *
+ * Contrôle de l\92absence de doublon sur le numéro de pièce
+ *
+ * Il ne doit pas y avoir de doublons sur le numéro de la pièce.
+ *
+ * Tous les Piece/BlocPiece/InfoPce/IdPce[@V] doivent être différents pour un même BlocBordereau/Exer[@V] et même BlocBordereau/TypBord[@V]
+ *
+ *
+ * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ * On n'utilise pas le paramètre PAR1
+ * (bde le 27/03/2007)
+ * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ */
+public class REC07 extends AbstractUnitControl implements ConstantsControlsPESv2 {
+ private final static Logger logger = Logger.getLogger(REC07.class);
+ public static final transient String CTRL_ID="REC07";
+ private Vector<Anomalie> anos = new Vector<Anomalie>();
+ private Hashtable<String,Object> hParams;
+
+ /**
+ * La balise du document général
+ */
+ private String docId = null;
+ private String nodeId = null;
+
+ /**
+ * La chaine cible
+ */
+ private static final String FIN_BORDEREAU = "/PES_RecetteAller/Bordereau/";
+ private static final String FIN_INFOPCE = "/PES_RecetteAller/Bordereau/Piece/BlocPiece/";
+ private static final String ON_RETURN_ANOMALIES = "/PES_RecetteAller/";
+
+
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+
+ private String bord_IdBord = "";
+ private String bord_ExerBord = "";
+ private String bord_TypBord = "";
+ private String piece_IdPce = "";
+ private String piece_NodeIdPce = "";
+ private Hashtable<String, Vector<String>>pieces = new Hashtable<String, Vector<String>>();
+
+// private Hashtable<String,Pair> hashIdsPiece = new Hashtable<String,Pair>();
+// private Vector<Quadruplet> vIdsPiece= new Vector<Quadruplet>();// stockage des id de piece en defaut
+ private Vector<Node> anonodes = new Vector<Node>();
+ /**
+ * Variables devant être remplacées dans le message
+ */
+ private static final String MSG_BORD_NUM = "#BORD_NUM#";
+ private static final String MSG_BORD_EXER = "#BORD_EXER#";
+ private static final String MSG_BORD_TYPE = "#BORD_TYPBORD#";
+ private static final String MSG_PIECE_ID = "#PIECE_IDPCE#";
+
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses uniquement
+ */
+ private static final String CHEMIN_BLOCBORDEREAU = "/PES_RecetteAller/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_BORDEREAU = "/PES_RecetteAller/Bordereau/";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/PES_RecetteAller/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/PES_RecetteAller/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/PES_RecetteAller/Bordereau/BlocBordereau/TypBord/";
+ private static final String CHEMIN_PIECE = "/PES_RecetteAller/Bordereau/Piece/";
+ private static final String CHEMIN_BLOCPIECE_IDPIECE = "/PES_RecetteAller/Bordereau/Piece/BlocPiece/IdPce/";
+
+
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+ }
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+ public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+ // 1
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ anos = new Vector<Anomalie>();
+ piece_IdPce = piece_NodeIdPce = "";
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_ExerBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ }
+ if(xpath.endsWith(CHEMIN_BLOCPIECE_IDPIECE)){
+ piece_IdPce=atts.getValue("V");
+ piece_NodeIdPce=atts.getValue("ano:node-id");
+ }
+ }
+
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+ if(xpath.endsWith(FIN_INFOPCE)){
+ String clef = bord_ExerBord+"|"+bord_TypBord+"|"+piece_IdPce;
+ Vector<String> tmp = pieces.get(clef);
+ if (tmp==null) {tmp = new Vector<String>(); pieces.put(clef, tmp); }
+ tmp.add(bord_IdBord+"|"+piece_NodeIdPce+"|0");
+
+ return null;
+ }else if(xpath.endsWith(FIN_BORDEREAU)){
+ for (Enumeration<String> e = pieces.keys(); e.hasMoreElements();) {
+ String clef = (String)e.nextElement();
+ Vector<String> v = pieces.get(clef);
+ if (v.size()>1) {
+ StringTokenizer st = new StringTokenizer (clef, "|");
+ String _bord_ExerBord = st.nextToken();
+ String _bord_TypBord = st.nextToken();
+ String _idPce = st.nextToken();
+
+ String msgRef = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ StringBuffer msg = new StringBuffer();
+ msg.append("<ul>");
+ Vector<Node> anonodesid = new Vector<Node>();
+ int i=0;
+ for (String clef2:v) {
+ StringTokenizer st2 = new StringTokenizer(clef2, "|");
+ String _bord_IdBord = st2.nextToken();
+ String _piece_NodeIdPce = st2.nextToken();
+ String anoCree = st2.nextToken();
+ msg.append("<li>").append (msgRef.replaceAll(MSG_BORD_EXER, _bord_ExerBord).replaceAll(MSG_BORD_NUM, _bord_IdBord).replaceAll(MSG_BORD_TYPE, _bord_TypBord).replaceAll(MSG_PIECE_ID, _idPce)).append ("</li>");
+ anonodesid.add (new Node(_piece_NodeIdPce));
+
+ if (i>0 && "0".equals(anoCree)) {
+ msg.append ("</ul>");
+ String path="@added:primary-key='"+_bord_ExerBord+"-"+_bord_TypBord+"-"+_bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+_bord_IdBord+" Mandat "+_idPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId","Bordereau");
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_RECETTE, // élément importable
+ _bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg.toString(),
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ ano.addAll(anonodesid);
+ anos.add(ano);
+
+ // indicateur que l'ano a été créée pour cette pièce
+ String tmp = _bord_IdBord+"|"+_piece_NodeIdPce+"|1";
+ v.remove(clef2);
+ v.add(tmp);
+ }
+ i++;
+ }
+ }
+ }
+ return anos;
+ } else {
+ return null;
+ }
+ }
+
+ public void endDocument() throws SAXException {}
+
+ public void characters(char[] ch, int start, int length, String xpath) {}
+
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ public void skippedEntity(String name, String xpath) {}
+
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+ public void setDocumentLocator(Locator locator) {}
+
+ private class Quadruplet{
+ private String exercice,typbordereau,idbordereau,idPiece;
+ private Quadruplet(String exercice,String typbordereau,String idbordereau,String idPiece){
+ this.exercice=exercice;
+ this.typbordereau=typbordereau;
+ this.idbordereau=idbordereau;
+ this.idPiece=idPiece;
+ }
+ }
+}
--- /dev/null
+/*
+ * Copyright
+ * 2005 axYus - www.axyus.com
+ * 2005 N LE CORRE - nicolas.lecorre@axyus.com
+ *
+ * This file is part of XEMELIOS.
+ *
+ * XEMELIOS is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * XEMELIOS 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
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XEMELIOS; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+package fr.gouv.finances.cp.xemelios.controls.pesv2.rec;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.dgfip.xemelios.controls.core.AbstractUnitControl;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Anomalie;
+import fr.gouv.finances.dgfip.xemelios.controls.core.IdGenerator;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Node;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+/**
+ * Implémente le contrôle N° REC08
+ *
+ * Contrôle de la date d'envoi de l'avis des sommes à payer
+ *
+ * La date d\92envoi des avis de sommes à payer peut être fournie par l\92ordonnateur et peut alors servir pour le recouvrement du titre.
+ *
+ * Piece/ BlocPiece/ DteAsp[@V] doit être valorisé correctement (non null et non égal à "")
+ *
+ */
+public class REC08 extends AbstractUnitControl implements ConstantsControlsPESv2 {
+ private final static Logger logger = Logger.getLogger(REC08.class);
+ public static final transient String CTRL_ID="REC08";
+ private Vector<Anomalie> anos = new Vector<Anomalie>();
+ private Hashtable<String,Object> hParams;
+
+ /**
+ * La balise du document général
+ */
+ private String docId = null;
+ private String nodeId = null;
+
+ /**
+ * La chaine cible
+ */
+ private static final String FIN_PIECE = "/PES_RecetteAller/Bordereau/Piece/";
+ private static final String FIN_INFOPCE = "/PES_RecetteAller/Bordereau/Piece/BlocPiece/";
+ private static final String ON_RETURN_ANOMALIES = FIN_PIECE;
+
+
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+
+ private String bord_IdBord = "";
+ private String bord_ExerBord = "";
+ private String bord_TypBord = "";
+ private String piece_IdPce = "";
+ private String piece_dteAsp = "";
+ private String piece_NodeDteAsp = "";
+ private String piece_NodeIdPce = "";
+
+ /**
+ * Variables devant être remplacées dans le message
+ */
+ private static final String MSG_BORD_NUM = "#BORD_NUM#";
+ private static final String MSG_BORD_EXER = "#BORD_EXER#";
+ private static final String MSG_BORD_TYPE = "#BORD_TYPBORD#";
+ private static final String MSG_PIECE_ID = "#PIECE_IDPCE#";
+
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses uniquement
+ */
+ private static final String CHEMIN_BLOCBORDEREAU = "/PES_RecetteAller/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_BORDEREAU = "/PES_RecetteAller/Bordereau/";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/PES_RecetteAller/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/PES_RecetteAller/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/PES_RecetteAller/Bordereau/BlocBordereau/TypBord/";
+
+ private static final String CHEMIN_PIECE = "/PES_RecetteAller/Bordereau/Piece/";
+ private static final String CHEMIN_BLOCPIECE_IDPIECE = "/PES_RecetteAller/Bordereau/Piece/BlocPiece/IdPce/";
+ private static final String CHEMIN_BLOCPIECE_DTEASP = "/PES_RecetteAller/Bordereau/Piece/BlocPiece/DteAsp/";
+
+
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+ }
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+ public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+ // 1
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ bord_ExerBord = bord_IdBord = bord_TypBord = "";
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_ExerBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ }
+
+ if (xpath.endsWith(CHEMIN_PIECE)) {
+ anos = new Vector<Anomalie>();
+ piece_IdPce = piece_dteAsp = piece_NodeIdPce = "";
+ piece_NodeIdPce = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCPIECE_IDPIECE)) {
+ piece_IdPce = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCPIECE_DTEASP)) {
+ piece_dteAsp = atts.getValue("V");
+ piece_NodeDteAsp = atts.getValue("ano:node-id");
+ }
+ }
+
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+ if(xpath.endsWith(ON_RETURN_ANOMALIES)){
+ Vector<Node> anonodes = new Vector<Node>();
+ boolean err = false;
+ if (piece_dteAsp!=null && !"".equals(piece_dteAsp)) {
+
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+ try {
+ Date d = sdf.parse(piece_dteAsp);
+ if (!sdf.format(d).equals(piece_dteAsp)) {
+ throw new Exception ("Juste pour sauter en dessous !");
+ }
+ }
+ catch (Exception e) {
+ err = true;
+ anonodes.add (new Node (piece_NodeDteAsp));
+ }
+ }
+ if (err) {
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_ExerBord);
+ msg = msg.replaceAll(MSG_BORD_TYPE, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_ID, piece_IdPce);
+ String path="@added:primary-key='"+bord_ExerBord+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId","");
+ xslParams.put("mandatId", piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_RECETTE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ ano.addAll(anonodes);
+ anos.add(ano);
+ }
+ return anos;
+ } else {
+ return null;
+ }
+ }
+
+ public void endDocument() throws SAXException {}
+
+ public void characters(char[] ch, int start, int length, String xpath) {}
+
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ public void skippedEntity(String name, String xpath) {}
+
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) {}
+}
--- /dev/null
+/*
+ * Copyright
+ * 2005 axYus - www.axyus.com
+ * 2005 N LE CORRE - nicolas.lecorre@axyus.com
+ *
+ * This file is part of XEMELIOS.
+ *
+ * XEMELIOS is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * XEMELIOS 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
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XEMELIOS; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+package fr.gouv.finances.cp.xemelios.controls.pesv2.rec;
+
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.dgfip.xemelios.controls.core.AbstractUnitControl;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Anomalie;
+import fr.gouv.finances.dgfip.xemelios.controls.core.IdGenerator;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Node;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+/**
+ * Implémente le contrôle N° REC09
+ *
+ * Contrôle de l'existence de l'objet de la recette
+ *
+ * L'objet de la recette devrait être renseigné
+ *
+ * Piece/ BlocPiece/ ObjPce[@V] doit être valorisé (non null et non égal à "")
+ *
+ */
+public class REC09 extends AbstractUnitControl implements ConstantsControlsPESv2 {
+ private final static Logger logger = Logger.getLogger(REC09.class);
+ public static final transient String CTRL_ID="REC09";
+ private Vector<Anomalie> anos = new Vector<Anomalie>();
+ private Hashtable<String,Object> hParams;
+
+ /**
+ * La balise du document général
+ */
+ private String docId = null;
+ private String nodeId = null;
+
+ /**
+ * La chaine cible
+ */
+ private static final String FIN_PIECE = "/PES_RecetteAller/Bordereau/Piece/";
+ private static final String FIN_INFOPCE = "/PES_RecetteAller/Bordereau/Piece/BlocPiece/";
+ private static final String ON_RETURN_ANOMALIES = FIN_PIECE;
+
+
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+
+ private String bord_IdBord = "";
+ private String bord_ExerBord = "";
+ private String bord_TypBord = "";
+ private String piece_IdPce = "";
+ private String piece_Objet = "";
+ private String piece_NodeIdPce = "";
+ private String obj_nodeId = "";
+
+ /**
+ * Variables devant être remplacées dans le message
+ */
+ private static final String MSG_BORD_NUM = "#BORD_NUM#";
+ private static final String MSG_BORD_EXER = "#BORD_EXER#";
+ private static final String MSG_BORD_TYPE = "#BORD_TYPBORD#";
+ private static final String MSG_PIECE_ID = "#PIECE_IDPCE#";
+
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses uniquement
+ */
+ private static final String CHEMIN_BLOCBORDEREAU = "/PES_RecetteAller/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_BORDEREAU = "/PES_RecetteAller/Bordereau/";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/PES_RecetteAller/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/PES_RecetteAller/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/PES_RecetteAller/Bordereau/BlocBordereau/TypBord/";
+
+ private static final String CHEMIN_PIECE = "/PES_RecetteAller/Bordereau/Piece/";
+ private static final String CHEMIN_BLOCPIECE_IDPIECE = "/PES_RecetteAller/Bordereau/Piece/BlocPiece/IdPce/";
+ private static final String CHEMIN_BLOCPIECE_OBJET = "/PES_RecetteAller/Bordereau/Piece/BlocPiece/ObjPce/";
+
+
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+ }
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+ public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+ // 1
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ bord_ExerBord = bord_IdBord = bord_TypBord = "";
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_ExerBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ }
+
+ if (xpath.endsWith(CHEMIN_PIECE)) {
+ anos = new Vector<Anomalie>();
+ piece_IdPce = piece_Objet = piece_NodeIdPce = "";
+ piece_NodeIdPce = atts.getValue("ano:node-id");
+ obj_nodeId = "";
+ }
+ if (xpath.endsWith(CHEMIN_BLOCPIECE_IDPIECE)) {
+ piece_IdPce = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCPIECE_OBJET)) {
+ piece_Objet = atts.getValue("V");
+ obj_nodeId = atts.getValue("ano:node-id");
+ }
+ }
+
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+ if(xpath.endsWith(ON_RETURN_ANOMALIES)){
+ Vector<Node> anonodes = new Vector<Node>();
+ boolean err = false;
+ if (piece_Objet==null || "".equals(piece_Objet)) {
+ err = true;
+ if (obj_nodeId!=null && !"".equals(obj_nodeId)) {
+ anonodes.add (new Node(obj_nodeId));
+ } else {
+ anonodes.add (new Node(piece_NodeIdPce));
+ }
+ }
+ if (err) {
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_ExerBord);
+ msg = msg.replaceAll(MSG_BORD_TYPE, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_ID, piece_IdPce);
+ String path="@added:primary-key='"+bord_ExerBord+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId","");
+ xslParams.put("mandatId", piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_RECETTE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ ano.addAll(anonodes);
+ anos.add(ano);
+ }
+ return anos;
+ } else {
+ return null;
+ }
+ }
+
+ public void endDocument() throws SAXException {}
+
+ public void characters(char[] ch, int start, int length, String xpath) {}
+
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ public void skippedEntity(String name, String xpath) {}
+
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) {}
+}
--- /dev/null
+/*
+ * Copyright
+ * 2005 axYus - www.axyus.com
+ * 2005 N LE CORRE - nicolas.lecorre@axyus.com
+ * 2008 C ESCOBAR - christel.escobar@axyus.com
+ *
+ * This file is part of XEMELIOS.
+ *
+ * XEMELIOS is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * XEMELIOS 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
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XEMELIOS; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+package fr.gouv.finances.cp.xemelios.controls.pesv2.rec;
+
+import java.util.Hashtable;
+import java.util.StringTokenizer;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.dgfip.xemelios.controls.core.AbstractUnitControl;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Anomalie;
+import fr.gouv.finances.dgfip.xemelios.controls.core.IdGenerator;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Node;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+/**
+ * Implémente le contrôle N° REC10
+ *
+ * Règle de valorisation de la Nature de la pièce
+ *
+ * Pour chaque titre et chaque ligne :
+ * 1) Si typPce=02 alors le bloc RattachPiece est valorisé
+ * 2) Si PAR1 parmi (M4 -M14 -M21 -M52 -M61 - M31 - M71) et TypPce=04 alors CpteTiers valorisé et IdRegie, IdMarche, IdEncaissement et IdRol à vide
+ * 3) Si typPce=05 alors le bloc RattachPiece est valorisé
+ * 4) Si typPce=06 alors Piece/ BlocPiece/ IdRol est valorisé
+ * 5) Si typPce=11 alors le bloc RattachPiece est valorisé
+ * 6) Si NatPce=05 alors Piece/ LigneDePiece/ BlocLignePiece/ LiensIdent/ IdRegie est valorisé
+ * 7) Si NatPce=11 alors Piece/ LigneDePiece/ BlocLignePiece/ LiensIdent/ IdMarche est valorisé
+ * 8) Si NatPce=07 alors Piece/ LigneDePiece/ BlocLignePiece/ RattachPiece est valorisé et ExerRat=Exer.
+ *
+ */
+
+public class REC10 extends AbstractUnitControl implements ConstantsControlsPESv2 {
+ private final static Logger logger = Logger.getLogger(REC10.class);
+ public static final transient String CTRL_ID="REC10";
+ private Vector<Anomalie> anos = new Vector<Anomalie>();
+ private Hashtable<String,Object> hParams;
+
+ private static final String nomenclatureAutorisee = "-M4-M14-M21-M52-M61-M31-M71";
+ /**
+ * La balise du document général
+ */
+ private String docId = null;
+ private String piece_NodeIdPce = null;
+
+ /**
+ * La chaine cible
+ */
+ private static final String FIN_PIECE = "/PES_RecetteAller/Bordereau/Piece/";
+ private static final String ON_RETURN_ANOMALIES = FIN_PIECE;
+
+
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+
+ private String bord_IdBord = "";
+ private String bord_ExerBord = "";
+ private String bord_TypBord = "";
+ private String piece_IdPce = "";
+ private String piece_typPce = "";
+ private String piece_natPce = "";
+ private String piece_idRol = "";
+ private String lignepiece_idLigne = "";
+
+ private String piece_idRol_nodeid = "";
+ private String lignepiece_nodeid = "";
+ private String piece_IdPce_nodeId = "";
+
+// private boolean premiere_ligne = true;
+ private boolean rattachpiece_exists = false;
+
+ private String lienident_idRegie = "";
+ private String lienident_idRegie_nodeid = "";
+ private String lienident_idMarche = "";
+ private String lienident_idMarche_nodeid = "";
+ private String lienident_idEncaissement = "";
+ private String lienident_idEncaissement_nodeid = "";
+
+ private String rattachpiece_exerRat = "";
+ private String rattachpiece_exerRat_nodeid = "";
+
+ private String infolignepiece_cpteTiers = "";
+
+
+
+
+
+ /**
+ * Variables devant être remplacées dans le message
+ */
+ private static final String MSG_BORD_NUM = "#BORD_NUM#";
+ private static final String MSG_BORD_EXER = "#BORD_EXER#";
+ private static final String MSG_BORD_TYPE = "#BORD_TYPBORD#";
+ private static final String MSG_PIECE_ID = "#PIECE_IDPCE#";
+ private static final String MSG_LIGNE_ID = "#PIECE_IDLIGNE#";
+ private static final String MSG_ERREUR = "#ERREUR#";
+
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Recettes uniquement
+ */
+ private static final String CHEMIN_BLOCBORDEREAU = "/PES_RecetteAller/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/PES_RecetteAller/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/PES_RecetteAller/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/PES_RecetteAller/Bordereau/BlocBordereau/TypBord/";
+
+ private static final String CHEMIN_PIECE = "/PES_RecetteAller/Bordereau/Piece/";
+ private static final String CHEMIN_BLOCPIECE_TYPPCE = "/PES_RecetteAller/Bordereau/Piece/BlocPiece/TypPce/";
+ private static final String CHEMIN_BLOCPIECE_IDPIECE = "/PES_RecetteAller/Bordereau/Piece/BlocPiece/IdPce/";
+ private static final String CHEMIN_BLOCPIECE_NATPCE = "/PES_RecetteAller/Bordereau/Piece/BlocPiece/NatPce/";
+ private static final String CHEMIN_BLOCPIECE_IDROL = "/PES_RecetteAller/Bordereau/Piece/BlocPiece/IdRol/";
+
+ private static final String CHEMIN_LIGNE = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/";
+ private static final String CHEMIN_LIGNE_IDLIGNE = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/IdLigne/";
+
+ private static final String CHEMIN_LIENIDENT = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/LiensIdent/";
+ private static final String CHEMIN_LIENIDENT_IDREGIE = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/LiensIdent/IdRegie/";
+ private static final String CHEMIN_LIENIDENT_IDMARCHE = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/LiensIdent/IdMarche/";
+ private static final String CHEMIN_LIENIDENT_IDENCAISSEMENT = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/LiensIdent/IdEncaissement/";
+
+ private static final String CHEMIN_RATTACHPIECE = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/RattachPiece/";
+ private static final String CHEMIN_RATTACHPIECE_EXERRAT = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/RattachPiece/ExerRat/";
+
+ private static final String CHEMIN_INFOLIGNEPIECE = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/";
+ private static final String CHEMIN_INFOLIGNEPIECE_CPTETIERS = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/CpteTiers/";
+
+
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+ }
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+ public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ bord_ExerBord = bord_IdBord = bord_TypBord = "";
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_ExerBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ }
+
+ if (xpath.endsWith(CHEMIN_PIECE)) {
+ anos = new Vector<Anomalie>();
+ piece_IdPce = piece_natPce = piece_idRol = piece_typPce = "";
+ piece_idRol_nodeid = "";
+ piece_NodeIdPce = atts.getValue("ano:node-id");
+// premiere_ligne = true;
+ rattachpiece_exists = false;
+ lienident_idEncaissement = lienident_idMarche = lienident_idRegie = "";
+ lienident_idEncaissement_nodeid = lienident_idMarche_nodeid = lienident_idRegie_nodeid = "";
+ rattachpiece_exerRat = "";
+ rattachpiece_exerRat_nodeid = "";
+ }
+ if (xpath.endsWith(CHEMIN_LIGNE_IDLIGNE)) {
+ lignepiece_idLigne = atts.getValue("V");
+ lignepiece_nodeid = atts.getValue("ano:node-id");
+ rattachpiece_exerRat = "";
+ rattachpiece_exerRat_nodeid = "";
+ rattachpiece_exists = false;
+ }
+ if (xpath.endsWith(CHEMIN_BLOCPIECE_TYPPCE)) {
+ piece_typPce = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCPIECE_IDPIECE)) {
+ piece_IdPce = atts.getValue("V");
+ piece_IdPce_nodeId = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCPIECE_NATPCE)) {
+ piece_natPce = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCPIECE_IDROL)) {
+ piece_idRol = atts.getValue("V");
+ piece_idRol_nodeid = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_LIENIDENT)) {
+ lienident_idEncaissement = lienident_idMarche = lienident_idRegie = "";
+ lienident_idEncaissement_nodeid = lienident_idMarche_nodeid = lienident_idRegie_nodeid = "";
+ }
+ if (xpath.endsWith(CHEMIN_LIENIDENT_IDENCAISSEMENT)) {
+ lienident_idEncaissement = atts.getValue("V");
+ lienident_idEncaissement_nodeid = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_LIENIDENT_IDMARCHE)) {
+ lienident_idMarche = atts.getValue("V");
+ lienident_idMarche_nodeid = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_LIENIDENT_IDREGIE)) {
+ lienident_idRegie = atts.getValue("V");
+ lienident_idRegie_nodeid = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_RATTACHPIECE)) {
+ rattachpiece_exists = true;
+ rattachpiece_exerRat = "";
+ rattachpiece_exerRat_nodeid = "";
+ }
+ if (xpath.endsWith(CHEMIN_RATTACHPIECE_EXERRAT)) {
+ rattachpiece_exerRat = atts.getValue("V");
+ rattachpiece_exerRat_nodeid = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE)){
+ infolignepiece_cpteTiers = "";
+ }
+ if(xpath.endsWith(CHEMIN_INFOLIGNEPIECE_CPTETIERS)){
+ infolignepiece_cpteTiers = atts.getValue("V");
+ }
+ }
+
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+ String severite = getDocumentModel().getControlById(CTRL_ID).getSeverity(); //BLOQUANT
+ Vector<Node> anonodes = new Vector<Node>();
+
+ if (xpath.endsWith(CHEMIN_LIGNE)) {
+// premiere_ligne = false;
+
+ boolean err = false;
+ boolean err2 = false;
+ String erreur = "";
+ String nomencl = (String)hParams.get("nomencl");
+
+
+ // 1) Si typPce=02 alors le bloc RattachPiece est valorisé
+ if ("02".equals(piece_typPce) && !rattachpiece_exists){
+ err = true;
+ anonodes.add(new Node(lignepiece_nodeid));
+ severite = "NON BLOQUANT";
+ erreur = "Pour un titre correctif, on doit indiquer la pièce de rattachement";
+ }
+
+ // 2) Si PAR1 parmi (M4 -M14 -M21 -M52 -M61 - M31 - M71) et TypPce=04 alors CpteTiers valorisé et IdRegie, IdMarche, IdEncaissement et IdRol à vide
+ if (nomenclatureAutorisee.indexOf(nomencl)!=-1 && "04".equals(piece_typPce) &&
+ (("".equals(infolignepiece_cpteTiers)) || !lienident_idEncaissement.equals("") || !lienident_idMarche.equals("") || !lienident_idRegie.equals("") || !piece_idRol.equals(""))) {
+ err = true;
+
+ if ("".equals(infolignepiece_cpteTiers))
+ anonodes.add(new Node(lignepiece_nodeid));
+
+ anonodes.add(new Node(lienident_idEncaissement_nodeid));
+ anonodes.add(new Node(lienident_idMarche_nodeid));
+ anonodes.add(new Node(lienident_idRegie_nodeid));
+ anonodes.add(new Node(piece_idRol_nodeid));
+
+ severite = "NON BLOQUANT";
+ erreur = "Pour les titres d'ordre mixte, le compte de tiers doit être valorisé. Aucun identifiant régie, marché, encaissement ou rôle ne doit être valorisé";
+ }
+
+ // 3) Si typPce=05 alors le bloc RattachPiece est valorisé
+ if ("05".equals(piece_typPce) && !rattachpiece_exists) {
+ err = true;
+ anonodes.add(new Node(lignepiece_nodeid));
+ severite = "NON BLOQUANT";
+
+ if (!lienident_idEncaissement.equals(""))
+ erreur = "Pour les titres émis après encaissement, le bloc de rattachement doit être valorisé et non l'IdEncaissement";
+ else
+ erreur = "Pour les titres émis après encaissement, le bloc de rattachement de pièce doit être valorisé";
+ }
+
+
+ // 5) Si typPce=11 alors le bloc RattachPiece est valorisé
+ if ("11".equals(piece_typPce) && !rattachpiece_exists){
+ err = true;
+ anonodes.add(new Node(lignepiece_nodeid));
+ erreur = "Lorsqu'il s'agit d'un titre de rattachement alors le bloc RattachPiece doit être valorisé";
+ }
+
+ if (err) {
+
+ StringTokenizer st = new StringTokenizer (getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent(), "|");
+ String msg = st.nextToken();msg = st.nextToken();
+
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_ExerBord);
+ msg = msg.replaceAll(MSG_BORD_TYPE, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_ID, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNE_ID, lignepiece_idLigne);
+ msg = msg.replaceAll(MSG_ERREUR, erreur);
+ String path="@added:primary-key='"+bord_ExerBord+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Titre "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId","");
+ xslParams.put("mandatId", piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_RECETTE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ severite,
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ ano.addAll(anonodes);
+ anos.add(ano);
+ anonodes.clear();
+ }
+
+
+ // 6) Si NatPce=05 alors Piece/ LigneDePiece/ BlocLignePiece/ LiensIdent/ IdRegie est valorisé
+ if ("05".equals(piece_natPce) && ("".equals(lienident_idRegie))) {
+ err2 = true;
+ anonodes.add(new Node(lignepiece_nodeid));
+ erreur = "Si la nature de pièce est régie alors la balise IdRegie doit être valorisée";
+ }
+
+
+ // 7) Si NatPce=11 alors Piece/ LigneDePiece/ BlocLignePiece/ LiensIdent/ IdMarche est valorisé
+ if ("11".equals(piece_natPce) && ("".equals(lienident_idMarche))) {
+ err2 = true;
+ anonodes.add(new Node(lignepiece_nodeid));
+ erreur = "Pour les titres sur marché, l'identifiant marché doit être valorisé";
+ }
+
+
+ // 8) Si NatPce=07 alors Piece/ LigneDePiece/ BlocLignePiece/ RattachPiece est valorisé et ExerRat=Exer
+ if ("07".equals(piece_natPce) && (!rattachpiece_exists || !bord_ExerBord.equals(rattachpiece_exerRat))) {
+ err2 = true;
+
+ if (!rattachpiece_exists)
+ anonodes.add(new Node(lignepiece_nodeid));
+ else
+ anonodes.add(new Node(rattachpiece_exerRat_nodeid));
+
+ erreur = "Pour les titres complémentaires, le bloc RattachPiece doit être valorisé et l'exercice de rattachement doit être égal à celui du bordereau";
+ }
+
+ if (err2){
+
+ StringTokenizer st = new StringTokenizer (getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent(), "|");
+ String msg = st.nextToken();msg = st.nextToken();
+
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_ExerBord);
+ msg = msg.replaceAll(MSG_BORD_TYPE, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_ID, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNE_ID, lignepiece_idLigne);
+ msg = msg.replaceAll(MSG_ERREUR, erreur);
+
+ String path="@added:primary-key='"+bord_ExerBord+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Titre "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId","");
+ xslParams.put("mandatId", piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_RECETTE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ ano.addAll(anonodes);
+ anos.add(ano);
+ }
+
+
+ return null;
+ }
+ else if(xpath.endsWith(ON_RETURN_ANOMALIES)){
+
+
+ // 4) Si typPce=06 alors Piece/ BlocPiece/ IdRol est valorisé
+ if ("06".equals(piece_typPce) && ("".equals(piece_idRol))) {
+
+ StringTokenizer st = new StringTokenizer (getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent(), "|");
+ String msg = st.nextToken();
+
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_ExerBord);
+ msg = msg.replaceAll(MSG_BORD_TYPE, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_ID, piece_IdPce);
+ msg = msg.replaceAll(MSG_ERREUR, "Si le titre est un titre récapitulatif avec rôle alors le numéro de rôle doit être renseigné");
+
+ String path="@added:primary-key='"+bord_ExerBord+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Titre "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId","");
+ xslParams.put("mandatId", piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_RECETTE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ ano.addNode(new Node(piece_IdPce_nodeId));
+ anos.add(ano);
+
+ }
+
+ return anos;
+
+ } else {
+ return null;
+ }
+ }
+
+ public void endDocument() throws SAXException {}
+
+ public void characters(char[] ch, int start, int length, String xpath) {}
+
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ public void skippedEntity(String name, String xpath) {}
+
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) {}
+}
--- /dev/null
+/*
+ * Copyright
+ * 2005 axYus - www.axyus.com
+ * 2005 N LE CORRE - nicolas.lecorre@axyus.com
+ *
+ * This file is part of XEMELIOS.
+ *
+ * XEMELIOS is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * XEMELIOS 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
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XEMELIOS; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+package fr.gouv.finances.cp.xemelios.controls.pesv2.rec;
+
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.dgfip.xemelios.controls.core.AbstractUnitControl;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Anomalie;
+import fr.gouv.finances.dgfip.xemelios.controls.core.IdGenerator;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Node;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+/**
+ * Implémente le contrôle N° DEP11
+ *
+ * Contrôle lié au type de nomenclature et vote par opération
+ *
+ * Les comptes Nature, Fonction et Opération doivent être renseignés selon la collectivité.
+ *
+ */
+public class REC11 extends AbstractUnitControl implements ConstantsControlsPESv2 {
+ private final static Logger logger = Logger.getLogger(REC11.class);
+ public static final transient String CTRL_ID = "REC11";
+ private Vector<Anomalie> anos = new Vector<Anomalie>();
+ private Hashtable<String,Object> hParams;
+
+ /**
+ * La balise du document général
+ */
+ private String docId = null;
+ private String nodeId = null;
+
+ /**
+ * La chaine cible
+ */
+ private static final String FIN_BORDEREAU = "/PES_RecetteAller/Bordereau/";
+ private static final String FIN_LIGNEPCE = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/";
+ private static final String ON_RETURN_ANOMALIES = "/PES_RecetteAller/Bordereau/Piece/";
+
+
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+
+ private String bord_IdBord = "";
+ private String bord_ExerBord = "";
+ private String bord_TypBord = "";
+ private String piece_IdPce = "";
+ private String ligneDePiece_Fonction = "";
+ private String ligneDePiece_FonctionNodeId = "";
+ private String ligneDePiece_Nature = "";
+ private String ligneDePiece_NatureNodeId = "";
+ private String ligneDePiece_Operation = "";
+ private String ligneDePiece_OperationNodeId = "";
+ private String ligneDePiece_Id = "";
+ private String ligneDePiece_NodeId = "";
+
+ private static boolean voteOperation;
+ private String typeNomenclature = "";
+
+ /**
+ * Variables devant être remplacées dans le message
+ */
+ private static final String MSG_BORD_NUM = "#BORD_NUM#";
+ private static final String MSG_BORD_EXER = "#BORD_EXER#";
+ private static final String MSG_BORD_TYPE = "#BORD_TYPBORD#";
+ private static final String MSG_PIECE_ID = "#PIECE_IDPCE#";
+ private static final String MSG_LIGNEDEPIECE_ID = "#LIGNEDEPIECE_IDPCE#";
+
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses uniquement
+ */
+
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/PES_RecetteAller/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/PES_RecetteAller/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCPIECE_IDPIECE = "/PES_RecetteAller/Bordereau/Piece/BlocPiece/IdPce/";
+ private static final String CHEMIN_BLOCPIECE_LIGNEPIECE = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/";
+ private static final String CHEMIN_BLOCLIGNEPIECE_IDLIGNE = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/IdLigne/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/PES_RecetteAller/Bordereau/BlocBordereau/TypBord/";
+ private static final String CHEMIN_LIGNEDEPIECE_FONCTION = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/Fonction/";
+ private static final String CHEMIN_LIGNEDEPIECE_NATURE = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/Nature/";
+ private static final String CHEMIN_LIGNEDEPIECE_OPERATION = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/Operation/";
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+ voteOperation=Boolean.parseBoolean(hParams.get("votop").toString());
+ typeNomenclature=hParams.get("typnomencl").toString();
+ }
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+ public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+ // 1
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_ExerBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCPIECE_IDPIECE)) {
+ anos.clear();
+ piece_IdPce = atts.getValue("V");
+ }
+ if(xpath.endsWith(CHEMIN_LIGNEDEPIECE_FONCTION)){
+ ligneDePiece_Fonction=atts.getValue("V");
+ ligneDePiece_FonctionNodeId=atts.getValue("ano:node-id");
+ }
+ if(xpath.endsWith(CHEMIN_LIGNEDEPIECE_NATURE)){
+ ligneDePiece_Nature=atts.getValue("V");
+ ligneDePiece_NatureNodeId=atts.getValue("ano:node-id");
+ }
+ if(xpath.endsWith(CHEMIN_LIGNEDEPIECE_OPERATION)){
+ ligneDePiece_Operation=atts.getValue("V");
+ ligneDePiece_OperationNodeId=atts.getValue("ano:node-id");
+ }
+ if(xpath.endsWith(CHEMIN_BLOCLIGNEPIECE_IDLIGNE)){
+ ligneDePiece_Id=atts.getValue("V");
+ ligneDePiece_NodeId = atts.getValue("ano:node-id");
+ }
+ }
+
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+ if(xpath.endsWith(FIN_LIGNEPCE)){
+ if(ligneDePiece_Fonction.equals("") && typeNomenclature.equals("Fonction")){
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_ExerBord);
+ msg = msg.replaceAll(MSG_BORD_TYPE, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_ID, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNEDEPIECE_ID, ligneDePiece_Id);
+ String path="@added:primary-key='"+bord_ExerBord+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId","");
+ xslParams.put("mandatId",piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_RECETTE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ ano.addNode(new Node(ligneDePiece_NodeId));
+ anos.add(ano);
+ }
+ if(ligneDePiece_Nature.equals("") && typeNomenclature.equals("Nature")){
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_ExerBord);
+ msg = msg.replaceAll(MSG_BORD_TYPE, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_ID, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNEDEPIECE_ID, ligneDePiece_Id);
+ String path="@added:primary-key='"+bord_ExerBord+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId","");
+ xslParams.put("mandatId",piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_RECETTE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ ano.addNode(new Node(ligneDePiece_NodeId));
+ anos.add(ano);
+ }
+ if((ligneDePiece_Nature.equals("") || ligneDePiece_Fonction.equals("")) && typeNomenclature.matches("Nature-ref-fonct")){
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_ExerBord);
+ msg = msg.replaceAll(MSG_BORD_TYPE, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_ID, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNEDEPIECE_ID, ligneDePiece_Id);
+ String path="@added:primary-key='"+bord_ExerBord+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId","");
+ xslParams.put("mandatId",piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_RECETTE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ ano.addNode(new Node(ligneDePiece_NodeId));
+ anos.add(ano);
+ }
+ if(!ligneDePiece_Operation.equals("") && !voteOperation){
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_ExerBord);
+ msg = msg.replaceAll(MSG_BORD_TYPE, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_ID, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNEDEPIECE_ID, ligneDePiece_Id);
+ String path="@added:primary-key='"+bord_ExerBord+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId","");
+ xslParams.put("mandatId",piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_RECETTE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ ano.addNode(new Node(ligneDePiece_OperationNodeId));
+ anos.add(ano);
+ }
+ ligneDePiece_Fonction = ligneDePiece_FonctionNodeId = ligneDePiece_Nature = ligneDePiece_NatureNodeId = ligneDePiece_Operation = "";
+ return null;
+ }else if(xpath.endsWith(ON_RETURN_ANOMALIES)){
+ return anos;
+ } else {
+ return null;
+ }
+ }
+
+ public void endDocument() throws SAXException {}
+
+ public void characters(char[] ch, int start, int length, String xpath) {}
+
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ public void skippedEntity(String name, String xpath) {}
+
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) {}
+}
--- /dev/null
+/*
+ * Copyright
+ * 2005 axYus - www.axyus.com
+ * 2005 N LE CORRE - nicolas.lecorre@axyus.com
+ *
+ * This file is part of XEMELIOS.
+ *
+ * XEMELIOS is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * XEMELIOS 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
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XEMELIOS; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+package fr.gouv.finances.cp.xemelios.controls.pesv2.rec;
+
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.dgfip.xemelios.controls.core.AbstractUnitControl;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Anomalie;
+import fr.gouv.finances.dgfip.xemelios.controls.core.IdGenerator;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Node;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+/**
+ * Implémente le contrôle N° REC12
+ *
+ * Contrôle de cohérence entre le type de bordereau et les couples (type, nature)
+ *
+ * Le triplet Type de bordereau / Nature du mandat / Type du mandat doit être cohérent
+ *
+ */
+public class REC12 extends AbstractUnitControl implements ConstantsControlsPESv2 {
+ private final static Logger logger = Logger.getLogger(REC12.class);
+ public static final transient String CTRL_ID = "REC12";
+ private Vector<Anomalie> anos = new Vector<Anomalie>();
+ private Hashtable<String,Object> hParams;
+
+ /**
+ * La balise du document général
+ */
+ private String docId = null;
+ private String nodeId = null;
+
+ /**
+ * La chaine cible
+ */
+ private static final String FIN_BORDEREAU = "/PES_RecetteAller/Bordereau/";
+ private static final String FIN_INFOPCE = "/PES_RecetteAller/Bordereau/Piece/BlocPiece/";
+ private static final String ON_RETURN_ANOMALIES = FIN_BORDEREAU;
+
+
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+
+ private String bord_IdBord = "";
+ private String bord_ExerBord = "";
+ private String bord_TypBord = "";
+ private String piece_IdPce = "";
+ private String piece_NatPce = "";
+ private String piece_TypPce = "";
+ private String piece_NodeIdPce = "";
+
+ private String piece_NodeIdNatPce = "";
+ private String piece_NodeIdTypPce = "";
+ private String bord_NodeIdTypBord = "";
+
+ private Vector<Node> vNodeId = new Vector<Node>();
+
+ private Vector<String> listePossible = new Vector<String>();
+
+ /**
+ * Variables devant être remplacées dans le message
+ */
+ private static final String MSG_BORD_NUM = "#BORD_NUM#";
+ private static final String MSG_BORD_EXER = "#BORD_EXER#";
+ private static final String MSG_BORD_TYPE = "#BORD_TYPBORD#";
+ private static final String MSG_PIECE_ID = "#PIECE_IDPCE#";
+ private static final String MSG_PIECE_TYP = "#PIECE_TYPPCE#";
+ private static final String MSG_PIECE_NAT = "#PIECE_NATPCE#";
+
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses uniquement
+ */
+ private static final String CHEMIN_BLOCBORDEREAU = "/PES_RecetteAller/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/PES_RecetteAller/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/PES_RecetteAller/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCPIECE_IDPIECE = "/PES_RecetteAller/Bordereau/Piece/BlocPiece/IdPce/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/PES_RecetteAller/Bordereau/BlocBordereau/TypBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPPCE = "/PES_RecetteAller/Bordereau/Piece/BlocPiece/TypPce/";
+ private static final String CHEMIN_BLOCBORDEREAU_NATPCE = "/PES_RecetteAller/Bordereau/Piece/BlocPiece/NatPce/";
+
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+
+ //listePossible.add( NaturePce , TypePce , TypeBoredereau );
+ // 01
+ listePossible.add("01/01/01");listePossible.add("01/03/01");listePossible.add("01/04/01");listePossible.add("01/05/01");
+ listePossible.add("01/06/01");listePossible.add("01/07/01");listePossible.add("01/08/01");listePossible.add("01/09/01");
+ listePossible.add("01/10/01");listePossible.add("01/11/01");listePossible.add("01/12/03");listePossible.add("01/14/01");
+ // 02
+ listePossible.add("02/01/01");listePossible.add("02/03/01");listePossible.add("02/04/01");listePossible.add("02/05/01");
+ listePossible.add("02/10/01");listePossible.add("02/11/01");listePossible.add("02/12/03");
+ // 03
+ listePossible.add("03/01/01");listePossible.add("03/03/01");listePossible.add("03/04/01");listePossible.add("03/05/01");
+ // 04
+ listePossible.add("04/01/01");listePossible.add("01/03/01");listePossible.add("04/04/01");listePossible.add("04/05/01");
+ listePossible.add("04/11/01");
+ // 05
+ listePossible.add("05/01/01");listePossible.add("05/05/01");
+ // 06
+ listePossible.add("06/02/02");listePossible.add("06/04/02");listePossible.add("06/12/02");listePossible.add("06/14/02");
+ // 07
+ listePossible.add("07/02/01");
+ // 08
+ listePossible.add("08/02/01");
+ // 09
+ listePossible.add("09/02/01");
+ // 10
+ listePossible.add("10/02/02");
+ // 11
+ listePossible.add("11/01/01");listePossible.add("11/12/03");
+ // 12
+// FA 68 - on supprime les combinaisons NatPce=12
+// listePossible.add("12/01/01");listePossible.add("12/03/01");listePossible.add("12/04/01");listePossible.add("12/05/01");
+// listePossible.add("12/06/01");listePossible.add("12/07/01");listePossible.add("12/08/01");listePossible.add("12/09/01");
+// listePossible.add("12/10/01");listePossible.add("12/11/03");listePossible.add("12/12/03");
+ // 18
+ listePossible.add("18/01/01");listePossible.add("18/03/01");
+ }
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+ public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+ // 1
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ //anos = new Vector<Anomalie>();
+ anos.clear();
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_ExerBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ bord_NodeIdTypBord = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCPIECE_IDPIECE)) {
+ piece_IdPce = atts.getValue("V");
+ piece_NodeIdPce = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPPCE)) {
+ piece_TypPce = atts.getValue("V");
+ piece_NodeIdTypPce = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_NATPCE)) {
+ piece_NatPce = atts.getValue("V");
+ piece_NodeIdNatPce = atts.getValue("ano:node-id");
+ }
+ }
+
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+ if(xpath.endsWith(FIN_INFOPCE)){
+ if(!(listePossible.contains(piece_NatPce+"/"+piece_TypPce+"/"+bord_TypBord))){
+
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_ExerBord);
+ msg = msg.replaceAll(MSG_BORD_TYPE, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_ID, piece_IdPce);
+ msg = msg.replaceAll(MSG_PIECE_TYP, piece_TypPce);
+ msg = msg.replaceAll(MSG_PIECE_NAT, piece_NatPce);
+ String path="@added:primary-key='"+bord_ExerBord+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId","Bordereau");
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_RECETTE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ ano.addNode(new Node(piece_NodeIdNatPce));
+ ano.addNode(new Node(piece_NodeIdTypPce));
+ ano.addNode(new Node(bord_NodeIdTypBord));
+ anos.add(ano);
+ }
+ return null;
+ }else if(xpath.endsWith(ON_RETURN_ANOMALIES)){
+ return anos;
+ } else {
+ return null;
+ }
+ }
+
+ public void endDocument() throws SAXException {}
+
+ public void characters(char[] ch, int start, int length, String xpath) {}
+
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ public void skippedEntity(String name, String xpath) {}
+
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) {}
+}
--- /dev/null
+/*
+ * Copyright
+ * 2005 axYus - www.axyus.com
+ * 2005 N LE CORRE - nicolas.lecorre@axyus.com
+ * 2008 C ESCOBAR - christel.escobar@axyus.com
+ *
+ * This file is part of XEMELIOS.
+ *
+ * XEMELIOS is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * XEMELIOS 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
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XEMELIOS; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+package fr.gouv.finances.cp.xemelios.controls.pesv2.rec;
+
+import java.util.Enumeration;
+import java.util.Hashtable;
+import java.util.StringTokenizer;
+import java.util.Vector;
+
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.dgfip.xemelios.controls.core.AbstractUnitControl;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Anomalie;
+import fr.gouv.finances.dgfip.xemelios.controls.core.IdGenerator;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Node;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+/**
+ * Implémente le contrôle N° REC13
+ *
+ * Contrôle de l'unicité du compte de tiers pour les titres se rattachant au même code produit
+ *
+ * Pour les nomenclatures autres que la M21,
+ * pour les titres typés « Titre récapitulatif avec rôle » (TypPce=06),
+ * toutes les lignes ayant le même code produit BlocLignePiece/ InfoLignePiece/ CodProdLoc[@V] (sauf 0000)
+ * doivent avoir le même compte de tiers (BlocLignePiece/ InfoLignePiece/ CpteTiers[@V])
+ *
+ * Pour la M21,
+ * toutes les lignes doivent avoir le même compte de tiers (BlocLignePiece/ InfoLignePiece/ CpteTiers[@V])
+ *
+ */
+
+public class REC13 extends AbstractUnitControl implements ConstantsControlsPESv2 {
+ private final static Logger logger = Logger.getLogger(REC13.class);
+ public static final transient String CTRL_ID = "REC13";
+ private Vector<Anomalie> anos = new Vector<Anomalie>();
+ private Hashtable<String,Object> hParams;
+
+ /**
+ * La balise du document général
+ */
+ private String docId = null;
+ private String nodeId = null;
+
+ /**
+ * La chaine cible
+ */
+ private static final String FIN_PIECE = "/PES_RecetteAller/Bordereau/Piece/";
+ private static final String FIN_INFO_LIGNEPIECE = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/";
+ private static final String ON_RETURN_ANOMALIES = FIN_PIECE;
+
+
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+
+ private String bord_IdBord = "";
+ private String bord_ExerBord = "";
+ private String bord_TypBord = "";
+
+ private String piece_IdPce = "";
+ private String piece_TypPce = "";
+ private String line_Id = "";
+
+ private String ligne_CodProdLoc = "";
+ private String ligne_CpteTiers = "";
+ private String ligne_NodeIdCodProdLoc = "";
+ private String ligne_NodeIdCpteTiers = "";
+
+ private Hashtable<String, Hashtable<String,Vector<String>>> codProdCpteTiers = new Hashtable<String, Hashtable<String,Vector<String>>>();
+ private Hashtable<String,Vector<String>> cpteTiers = new Hashtable<String,Vector<String>>();
+ Vector<Node> anonodes = new Vector<Node>();
+
+ /**
+ * Variables devant être remplacées dans le message
+ */
+ private static final String MSG_BORD_NUM = "#BORD_NUM#";
+ private static final String MSG_BORD_EXER = "#BORD_EXER#";
+ private static final String MSG_BORD_TYPE = "#BORD_TYPBORD#";
+ private static final String MSG_PIECE_ID = "#PIECE_IDPCE#";
+ private static final String MSG_DETAIL = "#DETAIL_MSG#";
+
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses uniquement
+ */
+ private static final String CHEMIN_BLOCBORDEREAU = "/PES_RecetteAller/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/PES_RecetteAller/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/PES_RecetteAller/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/PES_RecetteAller/Bordereau/BlocBordereau/TypBord/";
+
+ private static final String CHEMIN_PIECE = "/PES_RecetteAller/Bordereau/Piece/";
+ private static final String CHEMIN_BLOCPIECE = "/PES_RecetteAller/Bordereau/Piece/BlocPiece/";
+ private static final String CHEMIN_BLOCPIECE_IDPIECE = "/PES_RecetteAller/Bordereau/Piece/BlocPiece/IdPce/";
+ private static final String CHEMIN_BLOCPIECE_TYPPIECE = "/PES_RecetteAller/Bordereau/Piece/BlocPiece/TypPce/";
+
+ private static final String CHEMIN_LIGNE = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/";
+ private static final String CHEMIN_INFOLIGNEPIECE_IDLIGNE = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/IdLigne/";
+ private static final String CHEMIN_LIGNE_CODPRODLOC = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/CodProdLoc/";
+ private static final String CHEMIN_LIGNE_CPTETIERS = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/CpteTiers/";
+
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+ }
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+ public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_ExerBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ }
+
+ if (xpath.endsWith(CHEMIN_PIECE)) {
+ anos.clear();
+ }
+ if (xpath.endsWith(CHEMIN_BLOCPIECE)) {
+ piece_IdPce = piece_TypPce = "";
+ if (!codProdCpteTiers.isEmpty())
+ codProdCpteTiers = new Hashtable<String, Hashtable<String,Vector<String>>>();
+ if(!cpteTiers.isEmpty())
+ cpteTiers = new Hashtable<String,Vector<String>>();
+ if (!anonodes.isEmpty())
+ anonodes = new Vector<Node>();
+ }
+ if (xpath.endsWith(CHEMIN_BLOCPIECE_IDPIECE)) {
+ piece_IdPce = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCPIECE_TYPPIECE)) {
+ piece_TypPce = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_LIGNE)) {
+ ligne_CodProdLoc = ligne_CpteTiers = "";
+ ligne_NodeIdCodProdLoc = ligne_NodeIdCpteTiers = "";
+ }
+ if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE_IDLIGNE)) {
+ line_Id = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_LIGNE_CODPRODLOC)) {
+ ligne_CodProdLoc = atts.getValue("V");
+ ligne_NodeIdCodProdLoc = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_LIGNE_CPTETIERS)) {
+ ligne_CpteTiers = atts.getValue("V");
+ ligne_NodeIdCpteTiers = atts.getValue("ano:node-id");
+ }
+ }
+
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+ boolean param = "M21".equals((String)hParams.get("nomencl"));
+
+ if (xpath.endsWith(FIN_INFO_LIGNEPIECE)) {
+
+ //L'élèment CpteTiers n'étant pas obligatoire, il faut tester sa valeur
+ if (ligne_CpteTiers.equals("") || ligne_CpteTiers == null)
+ ligne_CpteTiers = "manquant";
+
+
+ if (!param){
+
+ if ("06".equals(piece_TypPce) && !"0000".equals(ligne_CodProdLoc)) {
+ Hashtable<String,Vector<String>> h = codProdCpteTiers.get(ligne_CodProdLoc);
+ if (h==null) {
+ h = new Hashtable<String,Vector<String>>();
+ codProdCpteTiers.put(ligne_CodProdLoc, h);
+ }
+
+ Vector<String> v = h.get(ligne_CpteTiers);
+ if (v==null) {
+ v = new Vector<String>();
+ h.put(ligne_CpteTiers, v);
+ }
+ //L'élèment CpteTiers n'étant pas obligatoire, il faut tester la valeur de ligne_NodeIdCpteTiers
+ if (ligne_NodeIdCpteTiers.equals("")) ligne_NodeIdCpteTiers = " ";
+ v.add(ligne_NodeIdCodProdLoc+"|"+ligne_NodeIdCpteTiers+"|"+line_Id);
+ }
+ }
+
+ else {
+ Vector<String> v2 = cpteTiers.get(ligne_CpteTiers);
+ if (v2==null) {
+ v2 = new Vector<String>();
+ cpteTiers.put(ligne_CpteTiers,v2);
+ }
+ //L'élèment CpteTiers n'étant pas obligatoire, il faut tester la valeur de ligne_NodeIdCpteTiers
+ if (ligne_NodeIdCpteTiers.equals("")) ligne_NodeIdCpteTiers = " ";
+ v2.add(ligne_NodeIdCpteTiers+"|"+line_Id);
+ }
+
+ return null;
+ }
+
+ else if(xpath.endsWith(ON_RETURN_ANOMALIES)){
+ if (!param){
+
+ for (Enumeration<String> e=codProdCpteTiers.keys(); e.hasMoreElements();) {
+ String keyCodProdLoc = e.nextElement();
+ Hashtable<String,Vector<String>> h = codProdCpteTiers.get(keyCodProdLoc);
+ if (h.keySet().size()>1) {
+ StringBuffer msgListe = new StringBuffer();
+ Vector<Node> anonodes = new Vector<Node>();
+ for (Enumeration<String> e1=h.keys(); e1.hasMoreElements();) {
+ String keyCpteTiers = e1.nextElement();
+ for (String s:h.get(keyCpteTiers)) {
+ String _ligne_CodProdLoc = keyCodProdLoc;
+ String _ligne_CpteTiers = keyCpteTiers;
+ StringTokenizer st = new StringTokenizer(s, "|");
+ String _ligne_NodeIdCodProdLoc = st.nextToken();
+ String _ligne_NodeIdCpteTiers = st.nextToken();
+ String _line_Id = st.nextToken();
+
+ msgListe.append("<li>Ligne N° ").append (_line_Id).append (" Code Produit Loc N° ").append(_ligne_CodProdLoc).append(" Compte de Tiers N° ").append(_ligne_CpteTiers).append("</li>");
+ anonodes.add (new Node(_ligne_NodeIdCodProdLoc));
+ }
+ }
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_ExerBord);
+ msg = msg.replaceAll(MSG_BORD_TYPE, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_ID, piece_IdPce);
+ msg = msg.replaceAll(MSG_DETAIL, msgListe.toString());
+ String path="@added:primary-key='"+bord_ExerBord+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Titre "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId","");
+ xslParams.put("mandatId",piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_RECETTE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ ano.addAll(anonodes);
+ anos.add(ano);
+ }
+ }
+ }
+
+ else {
+ if (cpteTiers.keySet().size()>1) {
+ StringBuffer msgListe = new StringBuffer();
+ Vector<Node> anonodes = new Vector<Node>();
+ for (Enumeration<String> e=cpteTiers.keys(); e.hasMoreElements();) {
+ String keyCpteTiers = e.nextElement();
+ for (String s:cpteTiers.get(keyCpteTiers)) {
+ String _ligne_CpteTiers = keyCpteTiers;
+ StringTokenizer st = new StringTokenizer(s, "|");
+ String _ligne_NodeIdCpteTiers = st.nextToken();
+ String _line_Id = st.nextToken();
+
+
+ msgListe.append("<li>Ligne N° ").append (_line_Id).append(" Compte de Tiers N° ").append(_ligne_CpteTiers).append("</li>");
+ anonodes.add (new Node(_ligne_NodeIdCpteTiers));
+ }
+ }
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_ExerBord);
+ msg = msg.replaceAll(MSG_BORD_TYPE, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_ID, piece_IdPce);
+ msg = msg.replaceAll(MSG_DETAIL, msgListe.toString());
+ String path="@added:primary-key='"+bord_ExerBord+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Titre "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId","");
+ xslParams.put("mandatId",piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_RECETTE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ ano.addAll(anonodes);
+ anos.add(ano);
+ }
+
+ } return anos;
+ }
+ else {
+ return null;
+ }
+ }
+
+ public void endDocument() throws SAXException {}
+
+ public void characters(char[] ch, int start, int length, String xpath) {}
+
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ public void skippedEntity(String name, String xpath) {}
+
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) {}
+}
--- /dev/null
+/*
+ * Copyright
+ * 2005 axYus - www.axyus.com
+ * 2005 N LE CORRE - nicolas.lecorre@axyus.com
+ *
+ * This file is part of XEMELIOS.
+ *
+ * XEMELIOS is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * XEMELIOS 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
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XEMELIOS; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+package fr.gouv.finances.cp.xemelios.controls.pesv2.rec;
+
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.dgfip.xemelios.controls.core.AbstractUnitControl;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Anomalie;
+import fr.gouv.finances.dgfip.xemelios.controls.core.IdGenerator;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Node;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+/**
+ * Implémente le contrôle N° REC14
+ *
+ * Principe de séquentialité des numéros de ligne
+ *
+ * Le numéro de ligne ne doit pas être déjà attribué à l\92intérieur du mandat.
+ *
+ * Les lignes d\92un mandat doivent avoir des numéros d\92ordre séquentiels.
+ *
+ */
+public class REC14 extends AbstractUnitControl implements ConstantsControlsPESv2 {
+ private final static Logger logger = Logger.getLogger(REC14.class);
+ public static final transient String CTRL_ID = "REC14";
+ private Vector<Anomalie> anos = new Vector<Anomalie>();
+ private Hashtable<String,Object> hParams;
+
+ /**
+ * La balise du document général
+ */
+ private String docId = null;
+ private String nodeId = null;
+
+ /**
+ * La chaine cible
+ */
+ private static final String FIN_PIECE = "/PES_RecetteAller/Bordereau/Piece/";
+ private static final String FIN_INFOLIGNEPCE = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/";
+ private static final String ON_RETURN_ANOMALIES = FIN_PIECE;
+
+
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+
+ private String bord_IdBord = "";
+ private String bord_ExerBord = "";
+ private String bord_TypBord = "";
+ private String piece_IdPce = "";
+ private String piece_NodeIdPce = "";
+ private String lignepiece_Id = "";
+ private String lignepiece_Id_last = "";
+ private boolean err = false;
+ private Vector<Node> ligne_nodeids = new Vector<Node>();
+ private String ligne_nodeid = "";
+
+ /**
+ * Variables devant être remplacées dans le message
+ */
+ private static final String MSG_BORD_NUM = "#BORD_NUM#";
+ private static final String MSG_BORD_EXER = "#BORD_EXER#";
+ private static final String MSG_BORD_TYPE = "#BORD_TYPBORD#";
+ private static final String MSG_PIECE_ID = "#PIECE_IDPCE#";
+ private static final String MSG_LIGNEPIECE_ID = "#LIGNE_PIECE_ID#";
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses uniquement
+ */
+ private static final String CHEMIN_BLOCBORDEREAU = "/PES_RecetteAller/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_PIECE = "/PES_RecetteAller/Bordereau/Piece/";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/PES_RecetteAller/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/PES_RecetteAller/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/PES_RecetteAller/Bordereau/BlocBordereau/TypBord/";
+ private static final String CHEMIN_BLOCPIECE_IDPIECE = "/PES_RecetteAller/Bordereau/Piece/BlocPiece/IdPce/";
+ private static final String CHEMIN_BLOCLIGNEPIECE_IDLIGNEPIECE = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/IdLigne/";
+
+
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+ }
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+ public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+ // 1
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ anos = new Vector<Anomalie>();
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_ExerBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_PIECE)) {
+ lignepiece_Id = lignepiece_Id_last = "";
+ err = false;
+ anos.clear();
+ piece_NodeIdPce = atts.getValue("ano:node-id");
+ ligne_nodeid = "";
+ ligne_nodeids = new Vector<Node>();
+ }
+ if(xpath.endsWith(CHEMIN_BLOCPIECE_IDPIECE)){
+ piece_IdPce=atts.getValue("V");
+ }
+ if(xpath.endsWith(CHEMIN_BLOCLIGNEPIECE_IDLIGNEPIECE)){
+ lignepiece_Id=atts.getValue("V");
+ ligne_nodeid = atts.getValue("ano:node-id");
+ }
+ }
+
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+ if(xpath.endsWith(FIN_INFOLIGNEPCE)) {
+ try {
+ if ("".equals(lignepiece_Id_last) && Integer.parseInt(lignepiece_Id)!=1) {
+ err = true;
+ } else if (!"".equals(lignepiece_Id_last) && (Integer.parseInt(lignepiece_Id_last) != (Integer.parseInt(lignepiece_Id)-1))) {
+ err = true;
+ }
+ if(err) {
+ // TODO : add le numero de ligne dans la liste dess noeuds pourris
+ ligne_nodeids.add(new Node(ligne_nodeid));
+ }
+ } catch (Exception e) {
+ err = true;
+ }
+ lignepiece_Id_last = lignepiece_Id;
+ return null;
+ }
+ else if (xpath.endsWith(FIN_PIECE)) {
+ if(err){
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_ExerBord);
+ msg = msg.replaceAll(MSG_BORD_TYPE, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_ID, piece_IdPce);
+ String path="@added:primary-key='"+bord_ExerBord+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId","");
+ xslParams.put("mandatId",piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_RECETTE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ ano.addAll(ligne_nodeids);
+ anos.add(ano);
+ return anos;
+ } else {
+ return null;
+ }
+ } else {
+ return null;
+ }
+ }
+
+ public void endDocument() throws SAXException {}
+
+ public void characters(char[] ch, int start, int length, String xpath) {}
+
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ public void skippedEntity(String name, String xpath) {}
+
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) {}
+}
--- /dev/null
+/*
+ * Copyright
+ * 2005 axYus - www.axyus.com
+ * 2005 N LE CORRE - nicolas.lecorre@axyus.com
+ * 2008 C ESCOBAR - christel.escobar@axyus.com
+ *
+ * This file is part of XEMELIOS.
+ *
+ * XEMELIOS is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * XEMELIOS 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
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XEMELIOS; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+package fr.gouv.finances.cp.xemelios.controls.pesv2.rec;
+
+import java.math.BigDecimal;
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.dgfip.xemelios.controls.core.AbstractUnitControl;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Anomalie;
+import fr.gouv.finances.dgfip.xemelios.controls.core.IdGenerator;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Node;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+/**
+ * Implémente le contrôle N° REC15
+ *
+ * Contrôle du seuil d'émission des titres
+ *
+ * Les montants des titres doivent avoir un montant supérieur au seuil de mise en recouvrement.
+ * Il n'y a pas de contrôle sur le seuil de recouvrement lorsqu'il s'agit d'une annulation de titre.
+ * Pour toutes les lignes de titre, BlocLignePiece/ InfoLignePiece/ MtHT[@V] > PAR1
+ *
+ */
+public class REC15 extends AbstractUnitControl implements ConstantsControlsPESv2 {
+ private final static Logger logger = Logger.getLogger(REC15.class);
+ public static final transient String CTRL_ID = "REC15";
+ private Vector<Anomalie> anos = new Vector<Anomalie>();
+ private Hashtable<String,Object> hParams;
+
+
+
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+
+ private String bord_IdBord = "";
+ private String bord_ExerBord = "";
+ private String bord_TypBord = "";
+ private String piece_IdPce = "";
+ private String lignepiece_MTHT = "";
+ private String lignepiece_NodeIdMTHT = "";
+ private String piece_TypPiece = "";
+ private String piece_NatPiece = "";
+
+
+ /**
+ * Variables devant être remplacées dans le message
+ */
+ private static final String MSG_BORD_NUM = "#BORD_NUM#";
+ private static final String MSG_BORD_EXER = "#BORD_EXER#";
+ private static final String MSG_BORD_TYPE = "#BORD_TYPBORD#";
+ private static final String MSG_PIECE_ID = "#PIECE_IDPCE#";
+ private static final String MSG_LIGNEPIECE_MTHT = "#LIGNE_PIECE_MTHT#";
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses uniquement
+ */
+ private static final String CHEMIN_BLOCBORDEREAU = "/PES_RecetteAller/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_PIECE = "/PES_RecetteAller/Bordereau/Piece/";
+ private static final String CHEMIN_PIECE_TYPPIECE = "/PES_RecetteAller/Bordereau/Piece/BlocPiece/TypPiece";
+ private static final String CHEMIN_PIECE_NATPIECE = "/PES_RecetteAller/Bordereau/Piece/BlocPiece/NatPiece";
+ private static final String CHEMIN_LIGNE = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/PES_RecetteAller/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/PES_RecetteAller/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/PES_RecetteAller/Bordereau/BlocBordereau/TypBord/";
+ private static final String CHEMIN_BLOCPIECE_IDPIECE = "/PES_RecetteAller/Bordereau/Piece/BlocPiece/IdPce/";
+ private static final String CHEMIN_INFOLIGNEPIECE = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/";
+ private static final String CHEMIN_BLOCLIGNEPIECE_MTHT = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/MtHT/";
+
+
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+ }
+
+
+ public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+ // 1
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_ExerBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_PIECE)) {
+ piece_IdPce = "";
+ piece_TypPiece = piece_NatPiece = "";
+
+ if (anos.isEmpty())
+ anos = new Vector<Anomalie>();
+ }
+ if(xpath.endsWith(CHEMIN_BLOCPIECE_IDPIECE)){
+ piece_IdPce=atts.getValue("V");
+ }
+ if(xpath.endsWith(CHEMIN_PIECE_TYPPIECE)){
+ piece_TypPiece=atts.getValue("V");
+ }
+ if(xpath.endsWith(CHEMIN_PIECE_NATPIECE)){
+ piece_NatPiece=atts.getValue("V");
+ }
+ if(xpath.endsWith(CHEMIN_INFOLIGNEPIECE)){
+ lignepiece_MTHT = "";
+ lignepiece_NodeIdMTHT = "";
+ }
+ if(xpath.endsWith(CHEMIN_BLOCLIGNEPIECE_MTHT)){
+ lignepiece_MTHT=atts.getValue("V");
+ lignepiece_NodeIdMTHT=atts.getValue("ano:node-id");
+ }
+ }
+
+
+
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+ if(xpath.endsWith(CHEMIN_LIGNE)){
+ boolean err = false;
+ // MODIF CHM
+ BigDecimal par1 = (BigDecimal)hParams.get("seuilEmission");
+ try {
+ BigDecimal tmp = new BigDecimal (lignepiece_MTHT);
+ err = (!isAnnulation() && tmp.compareTo(par1)<0);
+ } catch (Exception e) {
+ err = false;
+ }
+
+
+ if (err){
+
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_ExerBord);
+ msg = msg.replaceAll(MSG_BORD_TYPE, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_ID, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNEPIECE_MTHT, lignepiece_MTHT);
+ String path="@added:primary-key='"+bord_ExerBord+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId","");
+ xslParams.put("mandatId",piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_RECETTE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+
+ ano.addNode(new Node (lignepiece_NodeIdMTHT));
+ anos.add(ano);
+
+ }
+ return null;
+
+ }
+ else if (xpath.endsWith(CHEMIN_PIECE)) {
+ return anos;
+ }
+ else return null;
+
+ }
+
+
+
+ public void endDocument() throws SAXException {}
+
+ public void characters(char[] ch, int start, int length, String xpath) {}
+
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ public void skippedEntity(String name, String xpath) {}
+
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) {}
+
+ public boolean isAnnulation (){
+ if ( ( bord_TypBord.equals("02") && piece_TypPiece.equals("02") && piece_NatPiece.equals("06") )
+ || ( bord_TypBord.equals("01") && piece_TypPiece.equals("02") && piece_NatPiece.equals("09") ) ){
+ return true;
+ }
+ else return false;
+ }
+}
--- /dev/null
+/*
+ * Copyright
+ * 2005 axYus - www.axyus.com
+ * 2005 N LE CORRE - nicolas.lecorre@axyus.com
+ * 2008 C ESCOBAR - christel.escobar@axyus.com
+ *
+ * This file is part of XEMELIOS.
+ *
+ * XEMELIOS is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * XEMELIOS 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
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XEMELIOS; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+package fr.gouv.finances.cp.xemelios.controls.pesv2.rec;
+
+import java.util.Hashtable;
+import java.util.StringTokenizer;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.dgfip.xemelios.controls.core.AbstractUnitControl;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Anomalie;
+import fr.gouv.finances.dgfip.xemelios.controls.core.IdGenerator;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Node;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+/**
+ * Implémente le contrôle N° REC16
+ *
+ * Contrôle sur l'existence du code produit
+ *
+ * Les produits sont paramétrés aussi bien au niveau national qu'au niveau local et peuvent être fournis par l'ordonnateur.
+ * Il existe une table de correspondance entre les codes produits locaux et les codes produits nationaux.
+ *
+ * Pour toutes les lignes, vérifier que le BlocLignePiece/ InfoLignePiece/ CodProdLoc[@V] appartienne à PAR1.
+ * Pour la M21, la Balise piece/ CodProd[@V] doit avoir une valeur comprise entre 0 et 9 inclu. (Comme pour Htitre).
+ *
+ */
+public class REC16 extends AbstractUnitControl implements ConstantsControlsPESv2 {
+ private final static Logger logger = Logger.getLogger(REC16.class);
+ public static final transient String CTRL_ID = "REC16";
+ private Vector<Anomalie> anos = new Vector<Anomalie>();
+ private Hashtable<String,Object> hParams;
+
+ /**
+ * La balise du document général
+ */
+ private String docId = null;
+ private String nodeId = null;
+
+
+ /**
+ * La chaine cible
+ */
+ private static final String FIN_PIECE = "/PES_RecetteAller/Bordereau/Piece/";
+ private static final String FIN_INFOLIGNEPCE = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/";
+ private static final String ON_RETURN_ANOMALIES = FIN_PIECE;
+
+
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+
+ private String bord_IdBord = "";
+ private String bord_ExerBord = "";
+ private String bord_TypBord = "";
+ private String piece_IdPce = "";
+ private String piece_CodProd = "";
+ private String lignepiece_id = "";
+ private String piece_IdPce_NodeId = "";
+ private String piece_CodProd_NodeId = "";
+ private String lignepiece_CodProdLoc = "";
+ private String lignepiece_NodeIdCodProdLoc = "";
+ private String lignepiece_id_NodeId = "";
+
+ /**
+ * Variables devant être remplacées dans le message
+ */
+ private static final String MSG_BORD_NUM = "#BORD_NUM#";
+ private static final String MSG_BORD_EXER = "#BORD_EXER#";
+ private static final String MSG_BORD_TYPE = "#BORD_TYPBORD#";
+ private static final String MSG_PIECE_ID = "#PIECE_IDPCE#";
+ private static final String MSG_LIGNE_NUM = "#LIGNE_NUM#";
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses uniquement
+ */
+ private static final String CHEMIN_BLOCBORDEREAU = "/PES_RecetteAller/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_PIECE = "/PES_RecetteAller/Bordereau/Piece/";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/PES_RecetteAller/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/PES_RecetteAller/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/PES_RecetteAller/Bordereau/BlocBordereau/TypBord/";
+ private static final String CHEMIN_BLOCPIECE_CODPROD = "/PES_RecetteAller/Bordereau/Piece/BlocPiece/CodProd/";
+ private static final String CHEMIN_BLOCPIECE_IDPIECE = "/PES_RecetteAller/Bordereau/Piece/BlocPiece/IdPce/";
+ private static final String CHEMIN_BLOCLIGNEPIECE = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/";
+ private static final String CHEMIN_BLOCLIGNEPIECE_IDLIGNE = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/IdLigne/";
+ private static final String CHEMIN_BLOCLIGNEPIECE_CODPRODLOC = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/CodProdLoc/";
+
+
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+ }
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+ public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_ExerBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_PIECE)) {
+ piece_IdPce = lignepiece_CodProdLoc = piece_CodProd = piece_CodProd_NodeId = "";
+ lignepiece_NodeIdCodProdLoc = piece_IdPce_NodeId = "";
+ anos = new Vector<Anomalie>();
+ }
+ if(xpath.endsWith(CHEMIN_BLOCPIECE_CODPROD)){
+ piece_CodProd = atts.getValue("V");
+ piece_CodProd_NodeId = atts.getValue("ano:node-id");
+ }
+ if(xpath.endsWith(CHEMIN_BLOCPIECE_IDPIECE)){
+ piece_IdPce=atts.getValue("V");
+ piece_IdPce_NodeId = atts.getValue("ano:node-id");
+ }
+ if(xpath.endsWith(CHEMIN_BLOCLIGNEPIECE)){
+ lignepiece_id = lignepiece_CodProdLoc = "";
+ lignepiece_NodeIdCodProdLoc = lignepiece_id_NodeId = "";
+ }
+ if(xpath.endsWith(CHEMIN_BLOCLIGNEPIECE_CODPRODLOC)){
+ lignepiece_CodProdLoc=atts.getValue("V");
+ lignepiece_NodeIdCodProdLoc=atts.getValue("ano:node-id");
+ }
+ if(xpath.endsWith(CHEMIN_BLOCLIGNEPIECE_IDLIGNE)){
+ lignepiece_id=atts.getValue("V");
+ lignepiece_id_NodeId = atts.getValue("ano:node-id");
+ }
+ }
+
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+ if(xpath.endsWith(FIN_INFOLIGNEPCE)){
+ boolean err = false;
+ String[] par1 = (String[])hParams.get("codProd");
+ try {
+ err = true;
+ if (par1!=null && par1.length>0) {
+ for (String s:par1) {
+ if (s.equals(lignepiece_CodProdLoc)) err = false;
+ }
+ }
+ } catch (Exception e) {
+ err = true;
+ }
+ if (err){
+
+ StringTokenizer st = new StringTokenizer (getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent(), "|");
+ String msg = st.nextToken(); msg = st.nextToken();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_ExerBord);
+ msg = msg.replaceAll(MSG_BORD_TYPE, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_ID, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNE_NUM, lignepiece_id);
+ String path="@added:primary-key='"+bord_ExerBord+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId","");
+ xslParams.put("mandatId",piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_RECETTE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+
+ if (lignepiece_CodProdLoc.equals(""))
+ ano.addNode(new Node (lignepiece_id_NodeId));
+ else ano.addNode(new Node (lignepiece_NodeIdCodProdLoc));
+ anos.add(ano);
+
+ } return null;
+
+
+ } else if (xpath.endsWith(ON_RETURN_ANOMALIES)) {
+ boolean err = false;
+
+ if ( ("M21".equals((String)hParams.get("nomencl"))) && piece_CodProd.equals("") )
+ err = true;
+
+ else if ( ("M21".equals((String)hParams.get("nomencl"))) && ((Integer.parseInt(piece_CodProd)<0) || (Integer.parseInt(piece_CodProd)>9)) )
+ err = true;
+
+ if (err){
+ StringTokenizer st = new StringTokenizer (getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent(), "|");
+ String msg = st.nextToken();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_ExerBord);
+ msg = msg.replaceAll(MSG_BORD_TYPE, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_ID, piece_IdPce);
+ String path="@added:primary-key='"+bord_ExerBord+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId","");
+ xslParams.put("mandatId",piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_RECETTE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+
+ if (piece_CodProd.equals(""))
+ ano.addNode(new Node (piece_IdPce_NodeId));
+ else ano.addNode(new Node (piece_CodProd_NodeId));
+ anos.add(ano);
+ }
+ return anos;
+ } else {
+ return null;
+ }
+ }
+
+ public void endDocument() throws SAXException {}
+
+ public void characters(char[] ch, int start, int length, String xpath) {}
+
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ public void skippedEntity(String name, String xpath) {}
+
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) {}
+}
--- /dev/null
+/*
+ * Copyright
+ * 2005 axYus - www.axyus.com
+ * 2005 N LE CORRE - nicolas.lecorre@axyus.com
+ *
+ * This file is part of XEMELIOS.
+ *
+ * XEMELIOS is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * XEMELIOS 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
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XEMELIOS; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+package fr.gouv.finances.cp.xemelios.controls.pesv2.rec;
+
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.dgfip.xemelios.controls.core.AbstractUnitControl;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Anomalie;
+import fr.gouv.finances.dgfip.xemelios.controls.core.IdGenerator;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Node;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+/**
+ * Implémente le contrôle N° REC17
+ *
+ * Contrôle de la collectivité sur la TVA
+ *
+ * Le montant de la TVA ne doit être indiqué que si le budget collectivité et / ou le service gèrent la TVA.
+ * Si la TVA est mentionnée alors que la TVA est gérée par un service, le service doit être indiqué.
+ *
+ * Pour chaque titre tel que TypPce est différent de 03, 04 et 14, et NatPce différent de 04 :
+ * Si Piece/BlocPiece/CodServ est renseigné :
+ * 1) Si PAR2 contient CodServ, il faut que les MtTVA de toutes ses lignes soient renseignés.
+ * 2) Si PAR2 ne contient pas CodServ, il faut que les MtTVA de toutes ses lignes ne soient pas renseignés.
+ * Si Piece/BlocPiece/CodServ n'est pas renseigné :
+ * Erreur NON BLOQUANT.
+ * 3) Si PAR1=oui (collectivité assujettie à TVA), il faut que les MtTVA de toutes ses lignes soient renseignés.
+ * 4) Si PAR1=non (collectivité assujettie à TVA), il faut que les MtTVA de toutes ses lignes ne soient pas renseignés.
+ *
+ */
+public class REC17 extends AbstractUnitControl implements ConstantsControlsPESv2 {
+ private final static Logger logger = Logger.getLogger(REC17.class);
+ public static final transient String CTRL_ID="REC17";
+ private Vector<Anomalie> anos = new Vector<Anomalie>();
+ private Hashtable<String,Object> hParams;
+
+ /**
+ * Liste des nodes des lignes ayant une TVA
+ */
+ private Vector<Node> nodesHasTVA = new Vector<Node>();
+ /**
+ * Liste des nodes des lignes n'ayant pas de TVA
+ */
+ private Vector<Node> nodesHasNoTVA = new Vector<Node>();
+
+ /**
+ * La balise du document général
+ */
+ private String docId = null;
+ private String bord_nodeId = null;
+ private String piece_nodeId = null;
+
+ /**
+ * Severité
+ */
+ private static final String BLOQUANT = "BLOQUANT";
+ private static final String NON_BLOQUANT = "NON BLOQUANT";
+
+ /**
+ * La chaine cible
+ */
+ private static final String FIN_BORDEREAU = "/PES_RecetteAller/Bordereau/";
+ private static final String ON_RETURN_ANOMALIES = FIN_BORDEREAU;
+ private static final String FIN_PIECE = "/PES_RecetteAller/Bordereau/Piece/";
+ private static final String FIN_LIGNEPIECE = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/";
+ private static final String FIN_INFO_LIGNE_PIECE = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/";
+
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+ private String bord_Exer = "";
+ private String bord_IdBord = "";
+ private String bord_TypBord = "";
+ private String piece_IdPce = "";
+ private String ligne_IdLigne = "";
+ private String piece_CodServ = "";
+ private String piece_typPce = "";
+ private String piece_natPce = "";
+ private boolean allLinesHasTVAFilled = true;
+ private boolean lineHasTVA = false;
+
+ /**
+ * Variables devant être remplacées dans le message
+ */
+ private static final String MSG_BORD_NUM = "#BORD_NUM#";
+ private static final String MSG_BORD_EXER = "#BORD_EXER#";
+ private static final String MSG_BORD_TYPBORD = "#BORD_TYPBORD#";
+ private static final String MSG_PIECE_IDPCE = "#PIECE_IDPCE#";
+ private static final String MSG_LIGNE_IDLIGNE = "#LIGNE_IDLIGNE#";
+
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses uniquement
+ */
+ private static final String CHEMIN_BLOCBORDEREAU = "/PES_RecetteAller/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/PES_RecetteAller/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/PES_RecetteAller/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/PES_RecetteAller/Bordereau/BlocBordereau/TypBord/";
+
+ private static final String CHEMIN_BLOCPIECE = "/PES_RecetteAller/Bordereau/Piece/BlocPiece/";
+ private static final String CHEMIN_BLOCPIECE_IDPCE = "/PES_RecetteAller/Bordereau/Piece/BlocPiece/IdPce/";
+ private static final String CHEMIN_BLOCPIECE_CODSERV = "/PES_RecetteAller/Bordereau/Piece/BlocPiece/CodServ/";
+ private static final String CHEMIN_BLOCPIECE_TYPPCE = "/PES_RecetteAller/Bordereau/Piece/BlocPiece/TypPce/";
+ private static final String CHEMIN_BLOCPIECE_NATPCE = "/PES_RecetteAller/Bordereau/Piece/BlocPiece/NatPce/";
+
+ private static final String CHEMIN_INFOLIGNEPIECE = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/";
+ private static final String CHEMIN_INFOLIGNEPIECE_IDLIGNE = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/IdLigne/";
+ private static final String CHEMIN_INFOLIGNEPIECE_MTTVA = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/MtTVA/";
+
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+ }
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+ public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+ // 1
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ bord_Exer = bord_IdBord = bord_TypBord = "";
+ bord_nodeId = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_Exer = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ }
+
+ // 2
+ if (xpath.endsWith(CHEMIN_BLOCPIECE)) {
+ piece_IdPce = piece_CodServ = piece_natPce = piece_typPce = "";
+ lineHasTVA = false;
+ allLinesHasTVAFilled = true;
+ nodesHasNoTVA.clear();
+ nodesHasTVA.clear();
+ piece_nodeId = atts.getValue("ano:node-id");
+ anos.clear();
+ }
+ if (xpath.endsWith(CHEMIN_BLOCPIECE_IDPCE)) {
+ piece_IdPce = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCPIECE_CODSERV)) {
+ piece_CodServ = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCPIECE_NATPCE)) {
+ piece_natPce = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCPIECE_TYPPCE)) {
+ piece_typPce = atts.getValue("V");
+ }
+
+ // 3
+ if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE)) {
+ ligne_IdLigne = "";
+ }
+ if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE_IDLIGNE)) {
+ ligne_IdLigne = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE_MTTVA)) {
+ String ligne_Mttva = atts.getValue("V");
+ if (ligne_Mttva != null && !"".equals(ligne_Mttva)) {
+ {
+ lineHasTVA = true;
+ nodesHasTVA.add(new Node(atts.getValue("ano:node-id")));
+ }
+ } else {
+ lineHasTVA = false;
+ nodesHasNoTVA.add(new Node(atts.getValue("ano:node-id")));
+ }
+ }
+ }
+
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+ if (xpath.endsWith(FIN_INFO_LIGNE_PIECE)){
+ allLinesHasTVAFilled &= lineHasTVA;
+ return null;
+ } else if (xpath.endsWith(FIN_PIECE)){
+
+ if ("03".equals(piece_typPce) || "04".equals(piece_typPce) || "14".equals(piece_typPce) || "04".equals(piece_natPce)) {
+ return null;
+ }
+
+ String severity = BLOQUANT;
+ boolean err = false;
+ Vector<Node> anonodes = new Vector<Node>();
+ try {
+ String[]servTVA = (String[])hParams.get("servTVA");
+ boolean coltva = ((Boolean)hParams.get("coltva")).booleanValue();
+ if (piece_CodServ!=null && !"".equals(piece_CodServ)) {
+ severity = BLOQUANT;
+ if (contains (servTVA, piece_CodServ)) {
+ err = !allLinesHasTVAFilled;
+ anonodes = nodesHasNoTVA;
+ }
+ else {
+ err = allLinesHasTVAFilled;
+ anonodes = nodesHasTVA;
+ }
+ } else {
+ severity = NON_BLOQUANT;
+ if (coltva) {
+ err = !allLinesHasTVAFilled;
+ anonodes = nodesHasNoTVA;
+ }
+ else {
+ err = allLinesHasTVAFilled;
+ anonodes = nodesHasTVA;
+ }
+ }
+ } catch (Exception e) { err = true; }
+
+ if (err) {
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_Exer);
+ msg = msg.replaceAll(MSG_BORD_TYPBORD, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_IDPCE, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNE_IDLIGNE, ligne_IdLigne);
+
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "");
+ xslParams.put("mandatId", piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_RECETTE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ severity,
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ ano.addAll(anonodes);
+ anos.add(ano);
+ return anos;
+ } else {
+ return null;
+ }
+ } else {
+ return null;
+ }
+ }
+
+ private boolean contains (String[]tab, String val) {
+ for (String el:tab) {
+ if (el.equals(val)) return true;
+ }
+ return false;
+ }
+
+ public void endDocument() throws SAXException {}
+
+ public void characters(char[] ch, int start, int length, String xpath) {}
+
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ public void skippedEntity(String name, String xpath) {}
+
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) {}
+}
--- /dev/null
+/*
+ * Copyright
+ * 2005 axYus - www.axyus.com
+ * 2005 N LE CORRE - nicolas.lecorre@axyus.com
+ *
+ * This file is part of XEMELIOS.
+ *
+ * XEMELIOS is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * XEMELIOS 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
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XEMELIOS; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+package fr.gouv.finances.cp.xemelios.controls.pesv2.rec;
+
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.dgfip.xemelios.controls.core.AbstractUnitControl;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Anomalie;
+import fr.gouv.finances.dgfip.xemelios.controls.core.IdGenerator;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Node;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+/**
+ * Implémente le contrôle N° REC18
+ *
+ * Contrôle de l'existence du compte d'imputation de la TVA
+ *
+ * Les montants de la TVA sont imputés sur un compte spécifique de la TVA.
+ *
+ * Pour toutes les lignes de titre, vérifier que si un MtTVA est renseigné,
+ * alors le compte de TVA est renseigné (BlocLignePiece/ InfoLignePiece/ CpteTva)
+ * et il appartient à la liste des comptes de TVA (PAR1).
+ *
+ */
+public class REC18 extends AbstractUnitControl implements ConstantsControlsPESv2 {
+ private final static Logger logger = Logger.getLogger(REC18.class);
+ public static final transient String CTRL_ID="REC18";
+ private Vector<Anomalie> anos = new Vector<Anomalie>();
+ private Hashtable<String,Object> hParams;
+
+
+ /**
+ * La balise du document général
+ */
+ private String docId = null;
+ private String bord_nodeId = null;
+
+ private Vector<Node> anonodes = new Vector<Node>();
+
+ /**
+ * La chaine cible
+ */
+ private static final String FIN_PIECE = "/PES_RecetteAller/Bordereau/Piece/";
+ private static final String ON_RETURN_ANOMALIES = FIN_PIECE;
+ private static final String FIN_INFO_LIGNE_PIECE = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/";
+
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+ private String bord_Exer = "";
+ private String bord_IdBord = "";
+ private String bord_TypBord = "";
+ private String piece_IdPce = "";
+ private String ligne_IdLigne = "";
+ private String ligne_CpteTVA = "";
+ private String ligne_CpteTVANodeid = "";
+ private String ligne_MtTVANodeid = "";
+ private boolean ligne_MtTVAExists = false;
+ private StringBuffer idLignesError = null;
+
+ /**
+ * Variables devant être remplacées dans le message
+ */
+ private static final String MSG_BORD_NUM = "#BORD_NUM#";
+ private static final String MSG_BORD_EXER = "#BORD_EXER#";
+ private static final String MSG_BORD_TYPBORD = "#BORD_TYPBORD#";
+ private static final String MSG_PIECE_IDPCE = "#PIECE_IDPCE#";
+ private static final String MSG_LIGNE_IDLIGNE = "#LIGNE_IDLIGNE#";
+
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses uniquement
+ */
+ private static final String CHEMIN_BLOCBORDEREAU = "/PES_RecetteAller/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/PES_RecetteAller/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/PES_RecetteAller/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/PES_RecetteAller/Bordereau/BlocBordereau/TypBord/";
+
+ private static final String CHEMIN_BLOCPIECE = "/PES_RecetteAller/Bordereau/Piece/BlocPiece/";
+ private static final String CHEMIN_BLOCPIECE_IDPCE = "/PES_RecetteAller/Bordereau/Piece/BlocPiece/IdPce/";
+
+ private static final String CHEMIN_INFOLIGNEPIECE = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/";
+ private static final String CHEMIN_INFOLIGNEPIECE_IDLIGNE = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/IdLigne/";
+ private static final String CHEMIN_INFOLIGNEPIECE_MTTVA = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/MtTVA/";
+ private static final String CHEMIN_INFOLIGNEPIECE_CPTETVA = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/CpteTva/";
+
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+ }
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+ public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+ // 1
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ bord_Exer = bord_IdBord = bord_TypBord = "";
+ bord_nodeId = atts.getValue("ano:node-id");
+ anos = new Vector<Anomalie>();
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_Exer = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ }
+
+ // 2
+ if (xpath.endsWith(CHEMIN_BLOCPIECE)) {
+ anonodes = new Vector<Node>();
+ piece_IdPce = "";
+ idLignesError = new StringBuffer();
+ }
+ if (xpath.endsWith(CHEMIN_BLOCPIECE_IDPCE)) {
+ piece_IdPce = atts.getValue("V");
+ }
+
+ // 3
+ if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE)) {
+ ligne_IdLigne = ligne_CpteTVA = "";
+ ligne_MtTVANodeid = ligne_CpteTVANodeid = "";
+ ligne_MtTVAExists = false;
+ anos.clear();
+ }
+ if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE_IDLIGNE)) {
+ ligne_IdLigne = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE_CPTETVA)) {
+ ligne_CpteTVA = atts.getValue("V");
+ ligne_CpteTVANodeid = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE_MTTVA)) {
+ if (atts.getValue("V")!=null && !"".equals(atts.getValue("V"))) {
+ ligne_MtTVAExists = true;
+ ligne_MtTVANodeid = atts.getValue("ano:node-id");
+ }
+ }
+ }
+
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+ if (xpath.endsWith(FIN_INFO_LIGNE_PIECE)){
+ String [] par1 = (String[])hParams.get("compteTVA");
+ if (ligne_MtTVAExists && !contains (par1, ligne_CpteTVA)) {
+ anonodes.add(new Node(ligne_CpteTVANodeid));
+ anonodes.add(new Node(ligne_MtTVANodeid));
+ idLignesError.append("<li> Ligne n° ").append (ligne_IdLigne).append("</li>");
+ }
+
+ return null;
+ } else if (xpath.endsWith(ON_RETURN_ANOMALIES)){
+ if (anonodes.size()>0) {
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_Exer);
+ msg = msg.replaceAll(MSG_BORD_TYPBORD, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_IDPCE, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNE_IDLIGNE,"<ul>"+idLignesError.toString()+"</ul>");
+
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "");
+ xslParams.put("mandatId", piece_IdPce);
+// xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_RECETTE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ ano.addAll(anonodes);
+ anos.add(ano);
+ return anos;
+ } else {
+ return null;
+ }
+ } else {
+ return null;
+ }
+ }
+
+ private boolean contains (String[]tab, String val) {
+ if(val==null || val.length()==0) return true;
+ if (tab==null || tab.length==0) return false;
+ for (String el:tab) {
+ if (el.equals(val)) return true;
+ }
+ return false;
+ }
+
+ public void endDocument() throws SAXException {}
+
+ public void characters(char[] ch, int start, int length, String xpath) {}
+
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ public void skippedEntity(String name, String xpath) {}
+
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) {}
+}
--- /dev/null
+/*
+ * Copyright
+ * 2005 axYus - www.axyus.com
+ * 2005 N LE CORRE - nicolas.lecorre@axyus.com
+ *
+ * This file is part of XEMELIOS.
+ *
+ * XEMELIOS is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * XEMELIOS 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
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XEMELIOS; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+package fr.gouv.finances.cp.xemelios.controls.pesv2.rec;
+
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.dgfip.xemelios.controls.core.AbstractUnitControl;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Anomalie;
+import fr.gouv.finances.dgfip.xemelios.controls.core.IdGenerator;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Node;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+/**
+ * Implémente le contrôle N° REC19
+ *
+ * Contrôle sur le montant la TVA
+ *
+ * Pour les collectivités ou services assujettis à la TVA, le montant du titre doit être égal au montant budgétaire augmenté de la TVA.
+ * Le montant de la TVA est créditée au compte de la TVA et le montant hors taxe est créditée au compte budgétaire.
+ *
+ * Pour toutes les lignes ayant un MtTVA :
+ * Si TxTVA est renseigné vérifier que :
+ * - 1) TxTVA est contenu dans PAR1
+ * - 2) MtTVA/MtHT = TxTVA
+ * Si TxTVA n'est pas renseigné vérifier que :
+ * - 3) Le rapport MtTVA/MtHT appartienne à PAR1.
+ */
+public class REC19 extends AbstractUnitControl implements ConstantsControlsPESv2 {
+ private final static Logger logger = Logger.getLogger(REC19.class);
+ public static final transient String CTRL_ID="REC19";
+ private Vector<Anomalie> anos = new Vector<Anomalie>();
+ private Hashtable<String,Object> hParams;
+
+ /**
+ * La balise du document général
+ */
+ private String docId = null;
+ private String bord_nodeId = null;
+ private String ligne_nodeId = null;
+
+ private Vector<Node> anonodes = new Vector<Node>();
+
+ /**
+ * La chaine cible
+ */
+ private static final String FIN_PIECE = "/PES_RecetteAller/Bordereau/Piece/";
+ private static final String ON_RETURN_ANOMALIES = FIN_PIECE;
+ private static final String FIN_LIGNEPIECE = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/";
+
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+ private String bord_Exer = "";
+ private String bord_IdBord = "";
+ private String bord_TypBord = "";
+ private String piece_IdPce = "";
+ private String ligne_IdLigne = "";
+ private String ligne_Mtht = "";
+ private String ligne_Mttva = "";
+ private String ligne_Txtva = "";
+ private String ligne_Mtht_nodeid = "";
+ private String ligne_Mttva_nodeid = "";
+ private String ligne_Txtva_nodeid = "";
+ private StringBuffer buff = null;
+ private boolean bloquant = false;
+
+ /**
+ * Variables devant être remplacées dans le message
+ */
+ private static final String MSG_BORD_NUM = "#BORD_NUM#";
+ private static final String MSG_BORD_EXER = "#BORD_EXER#";
+ private static final String MSG_BORD_TYPBORD = "#BORD_TYPBORD#";
+ private static final String MSG_PIECE_IDPCE = "#PIECE_IDPCE#";
+// private static final String MSG_LIGNE_IDLIGNE = "#LIGNE_IDLIGNE#";
+// private static final String MSG_LIGNE_MTHT = "#LIGNE_MTHT#";
+// private static final String MSG_LIGNE_MTTVA = "#LIGNE_MTTVA#";
+// private static final String MSG_LIGNE_TXTVA = "#LIGNE_TXTVA#";
+ private static final String MSG_PIECE_DETAIL = "##DETAIL_MSG##";
+
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses uniquement
+ */
+ private static final String CHEMIN_BLOCBORDEREAU = "/PES_RecetteAller/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/PES_RecetteAller/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/PES_RecetteAller/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/PES_RecetteAller/Bordereau/BlocBordereau/TypBord/";
+
+ private static final String CHEMIN_BLOCPIECE = "/PES_RecetteAller/Bordereau/Piece/BlocPiece/";
+ private static final String CHEMIN_BLOCPIECE_IDPCE = "/PES_RecetteAller/Bordereau/Piece/BlocPiece/IdPce/";
+
+ private static final String CHEMIN_INFOLIGNEPIECE = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/";
+ private static final String CHEMIN_INFOLIGNEPIECE_IDLIGNE = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/IdLigne/";
+ private static final String CHEMIN_INFOLIGNEPIECE_MTHT = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/MtHT/";
+ private static final String CHEMIN_INFOLIGNEPIECE_MTTVA = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/MtTVA/";
+ private static final String CHEMIN_INFOLIGNEPIECE_TXTVA = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/TxTva/";
+
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+ }
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+ public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+ // 1
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ bord_Exer = bord_IdBord = bord_TypBord = "";
+ bord_nodeId = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_Exer = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ }
+
+ // 2
+ if (xpath.endsWith(CHEMIN_BLOCPIECE)) {
+ anos = new Vector<Anomalie>();
+ anonodes = new Vector<Node>();
+ piece_IdPce = "";
+ buff = new StringBuffer();
+ bloquant = false;
+ }
+ if (xpath.endsWith(CHEMIN_BLOCPIECE_IDPCE)) {
+ piece_IdPce = atts.getValue("V");
+ }
+
+ // 3
+ if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE)) {
+ ligne_IdLigne = ligne_Mtht = ligne_Mttva = ligne_Txtva = "";
+ ligne_nodeId = atts.getValue("ano:node-id");
+ ligne_Mtht_nodeid = ligne_Mttva_nodeid = ligne_Txtva_nodeid = "";
+ }
+ if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE_IDLIGNE)) {
+ ligne_IdLigne = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE_MTHT)) {
+ ligne_Mtht = atts.getValue("V");
+ ligne_Mtht_nodeid = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE_MTTVA)) {
+ ligne_Mttva = atts.getValue("V");
+ ligne_Mttva_nodeid = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE_TXTVA)) {
+ ligne_Txtva = atts.getValue("V");
+ ligne_Txtva_nodeid = atts.getValue("ano:node-id");
+ }
+ }
+
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+ if (xpath.endsWith(FIN_LIGNEPIECE)){
+ String[] les_taux = (String[])hParams.get("tauxTVA");
+ double mtHT = -1, mtTVA = -1, txTVA = -1;
+ if (ligne_Mtht!=null && !"".equals(ligne_Mtht)) {
+ try {mtHT = Double.parseDouble(ligne_Mtht);} catch (Exception e) {mtHT = -1;}
+ }
+ if (ligne_Mttva!=null && !"".equals(ligne_Mttva)) {
+ try {mtTVA = Double.parseDouble(ligne_Mttva);} catch (Exception e) {mtTVA = -1;}
+ }
+ if (ligne_Txtva!=null && !"".equals(ligne_Txtva)) {
+ try {txTVA = Double.parseDouble(ligne_Txtva)/100.0;} catch (Exception e) {txTVA = -1;}
+ }
+
+ if (txTVA != -1) {
+ if (!contains(les_taux, ligne_Txtva)) {
+ anonodes.add(new Node(ligne_Txtva_nodeid));
+ buff.append("<li>ligne n°").append(ligne_IdLigne).append(" - MtHT=").append(ligne_Mtht).append(" - MtTVA=").append(ligne_Mttva).append(" - TxTVA=").append(ligne_Txtva).append("</li>");
+ if (mtTVA!=0 && txTVA!=0) bloquant = true;
+ }
+ else if (mtHT != -1 && mtTVA != -1) {
+ //double mtTTC = mtHT+mtTVA;
+ //double taux = (Math.round(10000*mtTVA/mtTTC)/100.0);
+ double taux = mtTVA / mtHT;
+ //double taux = mtTVA / mtHT;
+ //if (taux != txTVA) {
+ if (taux < txMinor(txTVA) || taux > txMajor(txTVA)) {
+ anonodes.add (new Node(ligne_Mtht_nodeid));
+ anonodes.add (new Node(ligne_Mttva_nodeid));
+ anonodes.add (new Node(ligne_Txtva_nodeid));
+ buff.append("<li>ligne n°").append(ligne_IdLigne).append(" - MtHT=").append(ligne_Mtht).append(" - MtTVA=").append(ligne_Mttva).append(" - TxTVA=").append(ligne_Txtva).append("</li>");
+ if (mtTVA!=0 && txTVA!=0) bloquant = true;
+ }
+ }
+ } else {
+ if (mtHT != -1 && mtTVA != -1) {
+ //double mtTTC = mtHT+mtTVA;
+ //double taux = (Math.round(10000*mtTVA/mtTTC)/100.0);
+ //double taux = mtTVA / mtHT;
+ double taux = mtTVA / mtHT;
+ String strTx = Double.toString(taux);
+ if (!containsMajoMino(les_taux, strTx)) {
+ anonodes.add (new Node(ligne_Mtht_nodeid));
+ anonodes.add (new Node(ligne_Mttva_nodeid));
+ buff.append("<li>ligne n°").append(ligne_IdLigne).append(" - MtHT=").append(ligne_Mtht).append(" - MtTVA=").append(ligne_Mttva).append(" - TxTVA=").append(ligne_Txtva).append("</li>");
+ if (mtTVA!=0 && txTVA!=0) bloquant = true;
+ }
+ }
+ }
+ return null;
+ } else if (xpath.endsWith(ON_RETURN_ANOMALIES)) {
+ if (anonodes.size()>0) {
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_Exer);
+ msg = msg.replaceAll(MSG_BORD_TYPBORD, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_IDPCE, piece_IdPce);
+// msg = msg.replaceAll(MSG_LIGNE_IDLIGNE, ligne_IdLigne);
+// msg = msg.replaceAll(MSG_LIGNE_MTHT, ligne_Mtht);
+// msg = msg.replaceAll(MSG_LIGNE_MTTVA, ligne_Mttva);
+// msg = msg.replaceAll(MSG_LIGNE_TXTVA, ligne_Txtva);
+ msg = msg.replaceAll(MSG_PIECE_DETAIL,buff.toString());
+
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "");
+ xslParams.put("mandatId", piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_RECETTE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ (bloquant?"BLOQUANT":"NON BLOQUANT"),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+// ano.addNode(new Node(ligne_Mtht_nodeid));
+// ano.addNode(new Node(ligne_Mttva_nodeid));
+ ano.addAll(anonodes);
+ anos.add(ano);
+ }
+ return anos;
+ } else {
+ return null;
+ }
+ }
+
+ private boolean contains (String[] tab, String val) {
+ if(val==null || val.length()==0) return true;
+ if(tab==null || tab.length==0) return false;
+ double dVal = Double.parseDouble(val);
+ for (String el:tab) {
+ /**
+ * Il faut que si l'on compare 19.6 et 19.60, l'égalité soit vraie.
+ */
+ // la comparaison de chaines n'est pas adaptée
+ //if(el.equals(val)) return true;
+ double dEl = Double.parseDouble(el);
+ if (dEl == dVal) return true;
+ }
+ return false;
+ }
+
+ private boolean containsMajoMino (String[] tab, String val) {
+ if(val==null || val.length()==0) return true;
+ if(tab==null || tab.length==0) return false;
+ double dVal = Double.valueOf(val);
+ for (String el:tab) {
+ try {
+ double tx = Double.valueOf(el)/100.0;
+ double marge_erreur = tx/100.0; // divisé par 100 pour l'avoir en pourcentage et par 100 pour ne prendre qu'1 % de marge
+ if ((dVal >= (tx-marge_erreur)) && (dVal <= (tx+marge_erreur))) return true;
+ } catch (Exception e) {
+
+ }
+ }
+ return false;
+ }
+
+ private double txMinor (double tx) {
+ double marge_erreur = tx/100.0; // divisé par 100 pour ne prendre qu'1 % de marge
+ return (tx-marge_erreur);
+ }
+ private double txMajor (double tx) {
+ double marge_erreur = tx/100.0; // divisé par 100 pour ne prendre qu'1 % de marge
+ return (tx+marge_erreur);
+ }
+
+ public void endDocument() throws SAXException {}
+
+ public void characters(char[] ch, int start, int length, String xpath) {}
+
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ public void skippedEntity(String name, String xpath) {}
+
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) {}
+}
--- /dev/null
+/*
+ * Copyright
+ * 2005 axYus - www.axyus.com
+ * 2005 N LE CORRE - nicolas.lecorre@axyus.com
+ *
+ * This file is part of XEMELIOS.
+ *
+ * XEMELIOS is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * XEMELIOS 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
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XEMELIOS; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+package fr.gouv.finances.cp.xemelios.controls.pesv2.rec;
+
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.dgfip.xemelios.controls.core.AbstractUnitControl;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Anomalie;
+import fr.gouv.finances.dgfip.xemelios.controls.core.IdGenerator;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Node;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+/**
+ * Implémente le contrôle N° REC20
+ *
+ * Contrôle sur l'existence du Type de tiers
+ *
+ * Chaque débiteur doit avoir un type qui permettra de déterminer si c'est une personne de droit public ou privé.
+ * Le type du débiteur est essentiel pour le recouvrement des titres.
+ *
+ * Pour chaque ligne de titre, vérifier qu'il y a au moins un tiers débiteur principal ( Tiers/ InfoTiers/ TypTiers[@V]=01)
+ * ou un assuré (Tiers/ InfoTiers/ TypTiers[@V]=07 et LigneDePiece/ BlocLignePiece/ InfoAssure/ CodAssDeb[@V]=1)
+ *
+ */
+public class REC20 extends AbstractUnitControl implements ConstantsControlsPESv2 {
+ private final static Logger logger = Logger.getLogger(REC20.class);
+ public static final transient String CTRL_ID="REC20";
+ private Vector<Anomalie> anos = new Vector<Anomalie>();
+ private Hashtable<String,Object> hParams;
+
+ /**
+ * La balise du document général
+ */
+ private String docId = null;
+ private String bord_nodeId = null;
+ private String ligne_nodeId = null;
+
+ private Vector<Node> anonodes = new Vector<Node>();
+
+ /**
+ * La chaine cible
+ */
+ private static final String FIN_PIECE = "/PES_RecetteAller/Bordereau/Piece/";
+ private static final String ON_RETURN_ANOMALIES = FIN_PIECE;
+ private static final String FIN_LIGNE = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/";
+
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+ private String bord_Exer = "";
+ private String bord_IdBord = "";
+ private String bord_TypBord = "";
+ private String piece_IdPce = "";
+ private String ligne_IdLigne = "";
+ private String typTiers_nodeid = "";
+ private Vector<Couple> typTiers = new Vector<Couple>();
+ private String codAssDeb = "";
+
+ /**
+ * Variables devant être remplacées dans le message
+ */
+ private static final String MSG_BORD_NUM = "#BORD_NUM#";
+ private static final String MSG_BORD_EXER = "#BORD_EXER#";
+ private static final String MSG_BORD_TYPBORD = "#BORD_TYPBORD#";
+ private static final String MSG_PIECE_IDPCE = "#PIECE_IDPCE#";
+ private static final String MSG_LIGNE_IDLIGNE = "#LIGNE_IDLIGNE#";
+
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses uniquement
+ */
+ private static final String CHEMIN_BLOCBORDEREAU = "/PES_RecetteAller/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/PES_RecetteAller/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/PES_RecetteAller/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/PES_RecetteAller/Bordereau/BlocBordereau/TypBord/";
+
+ private static final String CHEMIN_BLOCPIECE = "/PES_RecetteAller/Bordereau/Piece/BlocPiece/";
+ private static final String CHEMIN_BLOCPIECE_IDPCE = "/PES_RecetteAller/Bordereau/Piece/BlocPiece/IdPce/";
+
+ private static final String CHEMIN_INFOLIGNEPIECE = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/";
+ private static final String CHEMIN_INFOLIGNEPIECE_IDLIGNE = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/IdLigne/";
+
+ private static final String CHEMIN_TIERS = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/Tiers/InfoTiers/";
+ private static final String CHEMIN_TIERS_TYPTIERS = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/Tiers/InfoTiers/TypTiers/";
+
+ private static final String CHEMIN_INFOASSURE_CODASSDEB = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoAssure/CodAssDeb/";
+
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+ }
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+ public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+ // 1
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ bord_Exer = bord_IdBord = bord_TypBord = "";
+ bord_nodeId = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_Exer = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ }
+
+ // 2
+ if (xpath.endsWith(CHEMIN_BLOCPIECE)) {
+ anos = new Vector<Anomalie>();
+ anonodes = new Vector<Node>();
+ piece_IdPce = "";
+ }
+ if (xpath.endsWith(CHEMIN_BLOCPIECE_IDPCE)) {
+ piece_IdPce = atts.getValue("V");
+ }
+
+ // 3
+ if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE)) {
+ ligne_IdLigne = codAssDeb = "";
+ typTiers = new Vector<Couple>();
+ ligne_nodeId = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE_IDLIGNE)) {
+ ligne_IdLigne = atts.getValue("V");
+ }
+
+ if (xpath.endsWith(CHEMIN_TIERS)) {
+ typTiers_nodeid = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_TIERS_TYPTIERS)) {
+ typTiers.add (new Couple (atts.getValue("V"), typTiers_nodeid));
+ }
+ if (xpath.endsWith(CHEMIN_INFOASSURE_CODASSDEB)) {
+ codAssDeb = atts.getValue("V");
+ }
+ }
+
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+ if (xpath.endsWith(FIN_LIGNE)){
+ Vector<Node>tmp = new Vector<Node>();
+ boolean err = true;
+ for (Couple c:typTiers) {
+ if ("01".equals(c.getTypTiers()) || ("07".equals(c.getTypTiers()) && "1".equals(codAssDeb))) {
+ err = false;
+ } else {
+ tmp.add(new Node(c.getTypTiers_nodeid()));
+ }
+ }
+ if (err)
+ anonodes.addAll(tmp);
+ return null;
+ } else if (xpath.endsWith(ON_RETURN_ANOMALIES)) {
+ if (anonodes.size()>0) {
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_Exer);
+ msg = msg.replaceAll(MSG_BORD_TYPBORD, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_IDPCE, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNE_IDLIGNE, ligne_IdLigne);
+
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "");
+ xslParams.put("mandatId", piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_RECETTE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ ano.addAll(anonodes);
+ anos.add(ano);
+ }
+ return anos;
+ } else {
+ return null;
+ }
+ }
+
+ public void endDocument() throws SAXException {}
+
+ public void characters(char[] ch, int start, int length, String xpath) {}
+
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ public void skippedEntity(String name, String xpath) {}
+
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) {}
+
+ private class Couple {
+ String typTiers = "";
+ String typTiers_nodeid = "";
+
+ public Couple (String tt, String ttni) {
+ typTiers = tt;
+ typTiers_nodeid = ttni;
+ }
+
+ public String getTypTiers() {
+ return typTiers;
+ }
+
+ public void setTypTiers(
+ String typTiers) {
+ this.typTiers = typTiers;
+ }
+
+ public String getTypTiers_nodeid() {
+ return typTiers_nodeid;
+ }
+
+ public void setTypTiers_nodeid(
+ String typTiers_nodeid) {
+ this.typTiers_nodeid = typTiers_nodeid;
+ }
+ }
+}
--- /dev/null
+/*
+ * Copyright
+ * 2005 axYus - www.axyus.com
+ * 2005 N LE CORRE - nicolas.lecorre@axyus.com
+ * 2008 C ESCOBAR - christel.escobar@axyus.com
+ *
+ * This file is part of XEMELIOS.
+ *
+ * XEMELIOS is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * XEMELIOS 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
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XEMELIOS; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+package fr.gouv.finances.cp.xemelios.controls.pesv2.rec;
+
+import java.util.Hashtable;
+import java.util.StringTokenizer;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.dgfip.xemelios.controls.core.AbstractUnitControl;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Anomalie;
+import fr.gouv.finances.dgfip.xemelios.controls.core.IdGenerator;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Node;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+/**
+ * Implémente le contrôle N° REC21
+ *
+ * Contrôles spécifiques aux Hôpitaux
+ *
+ * Le Finess juridique, les compte de TVA, les Codes Produits et les Informations Assurés peuvent être renseignés.
+ *
+ * Si PAR1=M21, alors vérifier que
+ * - 1) dans l'entête l'information EnTetePES/ FinJur est présente
+ * - 2) pour toutes les pièces Piece/ BlocPiece/ CodProd[@V] est valorisé et doit avoir une valeur comprise entre 0 et 9 inclus
+ * - 3) pour toutes les lignes LigneDePiece / BlocLignePiece/ InfoLignePce/ CpteTva[@V] est renseigné
+ * - 4) pour toutes les lignes si le bloc InfoAssure est renseigné
+ * et la balise Piece/ LigneDePiece/ BlocLignePiece/ InfoAssure/ CodAssDeb[@V] est valorisée à 2
+ * alors il existe un bloc Tiers tel que Tiers/ InfoTiers/ TypTiers[@V] = 01
+ * ET un bloc Tiers tel que Tiers/ InfoTiers/ TypTiers[@V] = 07
+ * 5) pour toutes les lignes si la balise Piece/ LigneDePiece/ BlocLignePiece/ InfoAssure/ CodAssDeb[@V] est valorisée à 1
+ * alors il ne peut exister de bloc Tiers tel que Tiers/ InfoTiers/ TypTiers[@V] = 07
+ * 6) pour toutes les lignes si il existe un bloc Tiers tel que Tiers/ InfoTiers/ TypTiers[@V] = 06
+ * alors la balise Tiers/ InfoTiers/ DteMalade[@V] est de préférence renseignée
+ * 7) pour toutes les lignes si il existe un bloc Tiers tel que Tiers/ InfoTiers/ TypTiers[@V] = 06 ou 07
+ * et si la balise Tiers/ InfoTiers/ IdTiers[@V] est valorisée
+ * alors Tiers/ InfoTiers/ NatIdTiers[@V] doit être valorisé à 04
+ * 8) pour toutes les lignes il doit exister un bloc Tiers tel que Tiers/ InfoTiers/ TypTiers[@V] = 06
+ * 9) pour chaque pièce si la balise Piece/CodProd[@V] est valorisée
+ * alors la balise LigneDePiece / BlocLignePiece/ InfoLignePce/ CodProdLoc[@V] doit être valorisée à 300
+ * 10) pour toutes les lignes la balise Piece/ LigneDePiece/ BlocLignePiece/ InfoAssure/ CodAssDeb[@V] doit être valorisée
+ * 11) pour toutes les lignes il doit exister un bloc Tiers tel que Tiers/ InfoTiers/ TypTiers[@V] = 01
+ * 12) pour toutes les lignes il doit exister un bloc Tiers tel que Tiers/ InfoTiers/ TypTiers[@V] = 07
+ * SINON la balise Piece/ LigneDePiece/ BlocLignePiece/ InfoAssure/ CodAssDeb[@V] doit être valorisée à 3.
+ *
+ */
+public class REC21 extends AbstractUnitControl implements ConstantsControlsPESv2 {
+ private final static Logger logger = Logger.getLogger(REC21.class);
+ public static final transient String CTRL_ID="REC21";
+ private Vector<Anomalie> anos = new Vector<Anomalie>();
+ private Vector<String> vTypTiers = new Vector<String>();
+ private Hashtable<String,Object> hParams;
+
+ /**
+ * La balise du document général
+ */
+ private String docId = null;
+ private String bord_nodeId = null;
+ private String ligne_nodeId = null;
+
+ /**
+ * La chaine cible
+ */
+ private static final String FIN_BORDEREAU = "/PES_RecetteAller/Bordereau/";
+ private static final String FIN_PIECE = "/PES_RecetteAller/Bordereau/Piece/";
+ private static final String FIN_LIGNE = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/";
+
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+ private String bord_Exer = "";
+ private String bord_IdBord = "";
+ private String bord_TypBord = "";
+ private String piece_IdPce = "";
+ private String ligne_IdLigne = "";
+ private String piece_CodProd = "";
+ private String ligne_CodProdLoc = "";
+ private String ligne_CodProdLoc_nodeid = "";
+
+ private String entetepes_nodeid = "";
+ private String piece_nodeid = "";
+
+ private String infoAss_CodAssDeb = "";
+ private String infoTiers_TypTiers_nodeid = "";
+ private String infoTiers_DteMalade = "";
+ private String infoTiers_IdTiers = "";
+ private String infoTiers_NatIdTiers = "";
+ private String infoTiers_NatIdTiers_nodeid = "";
+
+ private boolean finJur_present = false;
+ private boolean codProd_present = false;
+ private boolean cpteTva_present = false;
+ private boolean infoAss_present = false;
+ private boolean blocTiers_present = false;
+ private boolean param = false;
+
+
+
+ /**
+ * Variables devant être remplacées dans le message
+ */
+ private static final String MSG_BORD_NUM = "#BORD_NUM#";
+ private static final String MSG_BORD_EXER = "#BORD_EXER#";
+ private static final String MSG_BORD_TYPBORD = "#BORD_TYPBORD#";
+ private static final String MSG_PIECE_IDPCE = "#PIECE_IDPCE#";
+ private static final String MSG_LIGNE_IDLIGNE = "#LIGNE_IDLIGNE#";
+
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses uniquement
+ */
+ private static final String CHEMIN_ENTETEPES = "/EnTetePES/";
+ private static final String CHEMIN_ENTETEPES_FINJUR = "/EnTetePES/FinJur/";
+
+ private static final String CHEMIN_BLOCBORDEREAU = "/PES_RecetteAller/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/PES_RecetteAller/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/PES_RecetteAller/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/PES_RecetteAller/Bordereau/BlocBordereau/TypBord/";
+
+ private static final String CHEMIN_BLOCPIECE = "/PES_RecetteAller/Bordereau/Piece/BlocPiece/";
+ private static final String CHEMIN_BLOCPIECE_IDPCE = "/PES_RecetteAller/Bordereau/Piece/BlocPiece/IdPce/";
+ private static final String CHEMIN_BLOCPIECE_CODPROD = "/PES_RecetteAller/Bordereau/Piece/BlocPiece/CodProd/";
+
+ private static final String CHEMIN_LIGNE = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/";
+ private static final String CHEMIN_LIGNE_TIERS = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/Tiers/";
+ private static final String CHEMIN_INFOTIERS = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/Tiers/InfoTiers/";
+ private static final String CHEMIN_INFOTIERS_TYPTIERS = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/Tiers/InfoTiers/TypTiers/";
+ private static final String CHEMIN_INFOTIERS_DTEMALADE = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/Tiers/InfoTiers/DteMalade/";
+ private static final String CHEMIN_INFOTIERS_IDTIERS = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/Tiers/InfoTiers/IdTiers/";
+ private static final String CHEMIN_INFOTIERS_NATIDTIERS = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/Tiers/InfoTiers/NatIdTiers/";
+ private static final String CHEMIN_INFOLIGNEPIECE = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/";
+ private static final String CHEMIN_INFOLIGNEPIECE_IDLIGNE = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/IdLigne/";
+ private static final String CHEMIN_INFOLIGNEPIECE_CPTETVA = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/CpteTva/";
+ private static final String CHEMIN_INFOLIGNEPIECE_CODPRODLOC = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/CodProdLoc/";
+
+ private static final String CHEMIN_INFOASSURE = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoAssure/";
+ private static final String CHEMIN_INFOASSURE_CODASSDEB = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoAssure/CodAssDeb/";
+
+
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+ }
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+ public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+ if (xpath.endsWith(CHEMIN_ENTETEPES)) {
+ finJur_present = false;
+ entetepes_nodeid = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_ENTETEPES_FINJUR)) {
+ finJur_present = true;
+ }
+
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ bord_Exer = bord_IdBord = bord_TypBord = "";
+ bord_nodeId = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_Exer = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ }
+
+ // 2
+ if (xpath.endsWith(CHEMIN_BLOCPIECE)) {
+ piece_IdPce = "";
+ codProd_present = false;
+ piece_CodProd = "";
+ infoAss_CodAssDeb = "";
+ piece_nodeid = atts.getValue("ano:node-id");
+ if(anos!=null)
+ anos = new Vector<Anomalie>();
+ if(anos.size()>0)
+ anos.clear(); // vidage des anos de la piece précédente
+ }
+ if (xpath.endsWith(CHEMIN_BLOCPIECE_IDPCE)) {
+ piece_IdPce = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCPIECE_CODPROD)) {
+ codProd_present = true;
+ piece_CodProd = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_LIGNE)) {
+ infoAss_CodAssDeb = "";
+ blocTiers_present = false;
+ if (!vTypTiers.isEmpty())
+ vTypTiers.clear();
+ }
+
+ // 3
+ if (xpath.endsWith(CHEMIN_LIGNE_TIERS)) {
+ blocTiers_present = true;
+ }
+ if (xpath.endsWith(CHEMIN_INFOTIERS)) {
+ infoTiers_TypTiers_nodeid = "";
+ infoTiers_DteMalade = "";
+ infoTiers_IdTiers = "";
+ infoTiers_NatIdTiers = infoTiers_NatIdTiers_nodeid = "";
+ }
+ if (xpath.endsWith(CHEMIN_INFOTIERS_TYPTIERS)) {
+ vTypTiers.add(atts.getValue("V"));
+ infoTiers_TypTiers_nodeid = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_INFOTIERS_DTEMALADE)) {
+ infoTiers_DteMalade = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_INFOTIERS_IDTIERS)) {
+ infoTiers_IdTiers = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_INFOTIERS_NATIDTIERS)) {
+ infoTiers_NatIdTiers = atts.getValue("V");
+ infoTiers_NatIdTiers_nodeid = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE)) {
+ ligne_IdLigne = "";
+ ligne_CodProdLoc = ligne_CodProdLoc_nodeid = "";
+ cpteTva_present = infoAss_present = false;
+ ligne_nodeId = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE_IDLIGNE)) {
+ ligne_IdLigne = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE_CPTETVA)) {
+ cpteTva_present = true;
+ }
+ if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE_CODPRODLOC)) {
+ ligne_CodProdLoc = atts.getValue("V");
+ ligne_CodProdLoc_nodeid = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_INFOASSURE)) {
+ infoAss_present = true;
+ }
+ if (xpath.endsWith(CHEMIN_INFOASSURE_CODASSDEB)) {
+ infoAss_CodAssDeb = atts.getValue("V");
+ }
+
+ }
+
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+ param = "M21".equals((String)hParams.get("nomencl"));
+
+ if (param && xpath.endsWith(FIN_BORDEREAU)){
+ //1
+ if (!finJur_present) {
+ Vector<Anomalie> ano1 = new Vector<Anomalie>();
+ StringTokenizer st = new StringTokenizer (getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent(), "|");
+ String msg = st.nextToken();
+
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "Bordereau");
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_RECETTE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ ano.addNode(new Node(bord_IdBord));
+ ano1.add(ano);
+ return ano1;
+ } else {
+ return null;
+ }
+ } else if (param && xpath.endsWith(FIN_PIECE)) {
+ //2
+ int [] valeur_codProd = {0,1,2,3,4,5,6,7,8,9};
+ boolean isCorrect = false;
+ for(int i=0;i<=9;i++){
+ if (codProd_present){
+ if (valeur_codProd[i]==Integer.parseInt(piece_CodProd))
+ isCorrect=true;
+ }
+ }
+ if (!codProd_present || piece_CodProd.equals("") || isCorrect == false) {
+ StringTokenizer st = new StringTokenizer (getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent(), "|");
+ String msg = st.nextToken();msg = st.nextToken();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_Exer);
+ msg = msg.replaceAll(MSG_BORD_TYPBORD, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_IDPCE, piece_IdPce);
+
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "");
+ xslParams.put("mandatId", piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_RECETTE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg + " - Le code produit doit être renseigné et valide.",
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ ano.addNode(new Node(piece_nodeid));
+ anos.add(ano);
+ }
+
+ return anos;
+ } else if (param && xpath.endsWith(FIN_LIGNE)) {
+ //3
+ if (!cpteTva_present) {
+ StringTokenizer st = new StringTokenizer (getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent(), "|");
+ String msg = st.nextToken();msg = st.nextToken();msg = st.nextToken();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_Exer);
+ msg = msg.replaceAll(MSG_BORD_TYPBORD, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_IDPCE, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNE_IDLIGNE, ligne_IdLigne);
+
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "");
+ xslParams.put("mandatId", piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_RECETTE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg + " - CpteTva doit être renseigné.",
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ ano.addNode(new Node(piece_nodeid));
+ anos.add(ano);
+ }
+ //4
+ if (infoAss_present && infoAss_CodAssDeb.equals("2") && (!vTypTiers.contains("01") || !vTypTiers.contains("07"))) {
+ StringTokenizer st = new StringTokenizer (getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent(), "|");
+ String msg = st.nextToken();msg = st.nextToken();msg = st.nextToken();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_Exer);
+ msg = msg.replaceAll(MSG_BORD_TYPBORD, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_IDPCE, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNE_IDLIGNE, ligne_IdLigne);
+
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "");
+ xslParams.put("mandatId", piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_RECETTE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg + " - Le débiteur et l'assuré doivent être indiqués.",
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ ano.addNode(new Node(piece_nodeid));
+ anos.add(ano);
+ }
+ //5
+ if (infoAss_present && infoAss_CodAssDeb.equals("1") && vTypTiers.contains("07")) {
+ StringTokenizer st = new StringTokenizer (getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent(), "|");
+ String msg = st.nextToken();msg = st.nextToken();msg = st.nextToken();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_Exer);
+ msg = msg.replaceAll(MSG_BORD_TYPBORD, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_IDPCE, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNE_IDLIGNE, ligne_IdLigne);
+
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "");
+ xslParams.put("mandatId", piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_RECETTE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg + " - L'assuré et le débiteur sont la même personne.",
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ ano.addNode(new Node(infoTiers_TypTiers_nodeid));
+ anos.add(ano);
+ }
+ //6
+ if (blocTiers_present && vTypTiers.contains("06") && infoTiers_DteMalade.equals("")) {
+ StringTokenizer st = new StringTokenizer (getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent(), "|");
+ String msg = st.nextToken();msg = st.nextToken();msg = st.nextToken();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_Exer);
+ msg = msg.replaceAll(MSG_BORD_TYPBORD, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_IDPCE, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNE_IDLIGNE, ligne_IdLigne);
+
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "");
+ xslParams.put("mandatId", piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_RECETTE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg + " - La date de naissance du malde doit être de préférence valorisée (NON BLOQUANT)",
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ ano.addNode(new Node(piece_nodeid));
+ anos.add(ano);
+ }
+ //7
+ if ( (vTypTiers.contains("06") || vTypTiers.contains("07")) && !infoTiers_IdTiers.equals("") && !infoTiers_NatIdTiers.equals("04") ) {
+ StringTokenizer st = new StringTokenizer (getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent(), "|");
+ String msg = st.nextToken();msg = st.nextToken();msg = st.nextToken();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_Exer);
+ msg = msg.replaceAll(MSG_BORD_TYPBORD, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_IDPCE, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNE_IDLIGNE, ligne_IdLigne);
+
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "");
+ xslParams.put("mandatId", piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_RECETTE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg + " - Seul le numéro de sécurité sociale doit être indiqué.",
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ //ano.addNode(new Node(infoTiers_NatIdTiers_nodeid));
+ anos.add(ano);
+ }
+ //8
+ if (blocTiers_present && !vTypTiers.contains("06")) {
+ StringTokenizer st = new StringTokenizer (getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent(), "|");
+ String msg = st.nextToken();msg = st.nextToken();msg = st.nextToken();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_Exer);
+ msg = msg.replaceAll(MSG_BORD_TYPBORD, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_IDPCE, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNE_IDLIGNE, ligne_IdLigne);
+
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "");
+ xslParams.put("mandatId", piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_RECETTE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg + " - Un malade est de préférence renseigné (NON BLOQUANT)",
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ ano.addNode(new Node(piece_nodeid));
+ anos.add(ano);
+ }
+ //9
+ if (codProd_present && !piece_CodProd.equals("") && !ligne_CodProdLoc.equals("300")) {
+ StringTokenizer st = new StringTokenizer (getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent(), "|");
+ String msg = st.nextToken();msg = st.nextToken();msg = st.nextToken();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_Exer);
+ msg = msg.replaceAll(MSG_BORD_TYPBORD, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_IDPCE, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNE_IDLIGNE, ligne_IdLigne);
+
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "");
+ xslParams.put("mandatId", piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_RECETTE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ ano.addNode(new Node(piece_nodeid));
+ ano.addNode(new Node(ligne_CodProdLoc_nodeid));
+ anos.add(ano);
+ }
+ //10
+ if (infoAss_CodAssDeb.equals("")){
+ StringTokenizer st = new StringTokenizer (getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent(), "|");
+ String msg = st.nextToken();msg = st.nextToken();msg = st.nextToken();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_Exer);
+ msg = msg.replaceAll(MSG_BORD_TYPBORD, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_IDPCE, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNE_IDLIGNE, ligne_IdLigne);
+
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "");
+ xslParams.put("mandatId", piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_RECETTE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg + " - La balise CodAssDeb doit être valorisée",
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ ano.addNode(new Node(piece_nodeid));
+ anos.add(ano);
+ }
+ //11
+ if (blocTiers_present && !vTypTiers.contains("01")){
+ StringTokenizer st = new StringTokenizer (getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent(), "|");
+ String msg = st.nextToken();msg = st.nextToken();msg = st.nextToken();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_Exer);
+ msg = msg.replaceAll(MSG_BORD_TYPBORD, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_IDPCE, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNE_IDLIGNE, ligne_IdLigne);
+
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "");
+ xslParams.put("mandatId", piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_RECETTE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg + " - Un débiteur doit être renseigné.",
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ ano.addNode(new Node(piece_nodeid));
+ anos.add(ano);
+ }
+ //12
+ if (blocTiers_present && !vTypTiers.contains("07") && !infoAss_CodAssDeb.equals("3")){
+ StringTokenizer st = new StringTokenizer (getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent(), "|");
+ String msg = st.nextToken();msg = st.nextToken();msg = st.nextToken();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_Exer);
+ msg = msg.replaceAll(MSG_BORD_TYPBORD, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_IDPCE, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNE_IDLIGNE, ligne_IdLigne);
+
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "");
+ xslParams.put("mandatId", piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_RECETTE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg + " - Si aucun assuré n'est renseigné, la balise CodAsDeb doit être valorisé à 3.",
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ ano.addNode(new Node(piece_nodeid));
+ anos.add(ano);
+ }
+ }
+ return null;
+ }
+
+// private boolean haveToTest () {
+// String tmp = (String)hParams.get("nomencl");
+// return ("M21".equals(tmp) || "M22".equals(tmp));
+// }
+
+
+ public void endDocument() throws SAXException {}
+
+ public void characters(char[] ch, int start, int length, String xpath) {}
+
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ public void skippedEntity(String name, String xpath) {}
+
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) {}
+}
--- /dev/null
+/*
+ * Copyright
+ * 2005 axYus - www.axyus.com
+ * 2005 N LE CORRE - nicolas.lecorre@axyus.com
+ * 2008 C ESCOBAR - christel.escobar@axyus.com
+ *
+ * This file is part of XEMELIOS.
+ *
+ * XEMELIOS is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * XEMELIOS 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
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XEMELIOS; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+package fr.gouv.finances.cp.xemelios.controls.pesv2.rec;
+
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.dgfip.xemelios.controls.core.AbstractUnitControl;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Anomalie;
+import fr.gouv.finances.dgfip.xemelios.controls.core.IdGenerator;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Node;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+/**
+ * Implémente le contrôle N° REC22
+ *
+ * Contrôles spécifiques aux Collectivités
+ *
+ * Les Codes Produits Locaux doivent être renseignés et ils ne peuvent être libellés à "Divers".
+ *
+ * Si PAR1=M14, M52, M61 ou M71,
+ * pour toutes les balises,
+ * 1) LigneDePiece / BlocLignePiece/ InfoLignePce/ CodProdLoc[@V] doit être renseigné et non nul (SEVERITE BLOQUANTE)
+ * 2) LigneDePiece / BlocLignePiece/ InfoLignePce/ CodProdLoc[@V] doit être différent de 300 (SEVERITE NON BLOQUANTE)
+ *
+ * Si PAR1=M21,
+ * Auncune balise CodProdLoc ne doit être présente (SEVERITE BLOQUANTE)
+ */
+public class REC22 extends AbstractUnitControl implements ConstantsControlsPESv2 {
+ private final static Logger logger = Logger.getLogger(REC22.class);
+ public static final transient String CTRL_ID="REC22";
+ private Vector<Anomalie> anos = new Vector<Anomalie>();
+ private Hashtable<String,Object> hParams;
+
+ /**
+ * La balise du document général
+ */
+ private String docId = null;
+ private String bord_nodeId = null;
+
+ /**
+ * La chaine cible
+ */
+ private static final String FIN_PIECE = "/PES_RecetteAller/Bordereau/Piece/";
+ private static final String FIN_LIGNE = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/";
+
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+ private String bord_Exer = "";
+ private String bord_IdBord = "";
+ private String bord_TypBord = "";
+ private String piece_IdPce = "";
+ private String ligne_IdLigne = "";
+ private String ligne_CodProdLoc = "";
+ private String ligne_CodProdLoc_NodeId = "";
+ private String ligne_IdLigne_NodeId = "";
+ private boolean codProdLoc_isPresent = false;
+
+ /**
+ * Variables devant être remplacées dans le message
+ */
+ private static final String MSG_BORD_NUM = "#BORD_NUM#";
+ private static final String MSG_BORD_EXER = "#BORD_EXER#";
+ private static final String MSG_BORD_TYPBORD = "#BORD_TYPBORD#";
+ private static final String MSG_PIECE_IDPCE = "#PIECE_IDPCE#";
+ private static final String MSG_LIGNE_IDLIGNE = "#LIGNE_IDLIGNE#";
+ private static final String MSG_ERREUR = "#MSG_ERREUR#";
+
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses uniquement
+ */
+ private static final String CHEMIN_BLOCBORDEREAU = "/PES_RecetteAller/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/PES_RecetteAller/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/PES_RecetteAller/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/PES_RecetteAller/Bordereau/BlocBordereau/TypBord/";
+
+ private static final String CHEMIN_BLOCPIECE = "/PES_RecetteAller/Bordereau/Piece/BlocPiece/";
+ private static final String CHEMIN_BLOCPIECE_IDPCE = "/PES_RecetteAller/Bordereau/Piece/BlocPiece/IdPce/";
+
+ private static final String CHEMIN_INFOLIGNEPIECE = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/";
+ private static final String CHEMIN_INFOLIGNEPIECE_IDLIGNE = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/IdLigne/";
+ private static final String CHEMIN_INFOLIGNEPIECE_CODPRODLOC = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/CodProdLoc/";
+
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+ }
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+ public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ bord_Exer = bord_IdBord = bord_TypBord = "";
+ bord_nodeId = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_Exer = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCPIECE)) {
+ piece_IdPce = "";
+ if (!anos.isEmpty())
+ anos = new Vector<Anomalie>();
+ }
+ if (xpath.endsWith(CHEMIN_BLOCPIECE_IDPCE)) {
+ piece_IdPce = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE)) {
+ codProdLoc_isPresent = false;
+ ligne_IdLigne = ligne_CodProdLoc = "";
+ ligne_CodProdLoc_NodeId = ligne_IdLigne_NodeId = "";
+ }
+ if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE_IDLIGNE)) {
+ ligne_IdLigne = atts.getValue("V");
+ ligne_IdLigne_NodeId = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE_CODPRODLOC)) {
+ codProdLoc_isPresent = true;
+ ligne_CodProdLoc = atts.getValue("V");
+ ligne_CodProdLoc_NodeId = atts.getValue("ano:node-id");
+ }
+ }
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+
+ if (xpath.endsWith(FIN_LIGNE)) {
+ if (haveToTest() && (ligne_CodProdLoc.equals("") || ligne_CodProdLoc.equals("300") || ligne_CodProdLoc.equals("0") || ligne_CodProdLoc.equals("00") || ligne_CodProdLoc.equals("000") || ligne_CodProdLoc.equals("0000"))) {
+
+ String severity = getDocumentModel().getControlById(CTRL_ID).getSeverity();
+ if (ligne_CodProdLoc.equals("300"))
+ severity = "NON BLOQUANT";
+
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_Exer);
+ msg = msg.replaceAll(MSG_BORD_TYPBORD, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_IDPCE, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNE_IDLIGNE, ligne_IdLigne);
+ msg = msg.replaceAll(MSG_ERREUR, "Code produit : [NON RENSEIGNE] ou renseigné à Divers");
+
+ String message = msg;
+ if (ligne_CodProdLoc.equals("300"))
+ message = msg + " (NON BLOQUANT)";
+
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "");
+ xslParams.put("mandatId", piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_RECETTE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ message,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ severity,
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+
+ if (ligne_CodProdLoc.equals(""))
+ ano.addNode(new Node (ligne_IdLigne_NodeId));
+ else ano.addNode(new Node (ligne_CodProdLoc_NodeId));
+
+ anos.add(ano);
+ }
+ if ("M21".equals((String)hParams.get("nomencl")) && codProdLoc_isPresent == true) {
+
+ String severity = getDocumentModel().getControlById(CTRL_ID).getSeverity();
+
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_Exer);
+ msg = msg.replaceAll(MSG_BORD_TYPBORD, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_IDPCE, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNE_IDLIGNE, ligne_IdLigne);
+ msg = msg.replaceAll(MSG_ERREUR, "En M21, les codes produits hospitaliers ne sont pas valorisés au niveau des Tiers mais au niveau des pièces comptables");
+
+
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "");
+ xslParams.put("mandatId", piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_RECETTE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ severity,
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+
+ if (ligne_CodProdLoc.equals(""))
+ ano.addNode(new Node (ligne_IdLigne_NodeId));
+ else ano.addNode(new Node (ligne_CodProdLoc_NodeId));
+
+ anos.add(ano);
+ }
+
+ return null;
+ } else if (xpath.endsWith(FIN_PIECE))
+ return anos;
+
+ else return null;
+
+ }
+
+ private boolean haveToTest () {
+ String tmp = (String)hParams.get("nomencl");
+ return ("M4".equals(tmp) || "M14".equals(tmp) || "M52".equals(tmp) || "M61".equals(tmp) || "M71".equals(tmp));
+ }
+
+ public void endDocument() throws SAXException {}
+
+ public void characters(char[] ch, int start, int length, String xpath) {}
+
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ public void skippedEntity(String name, String xpath) {}
+
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) {}
+}
--- /dev/null
+/*
+ * Copyright
+ * 2005 axYus - www.axyus.com
+ * 2005 N LE CORRE - nicolas.lecorre@axyus.com
+ *
+ * This file is part of XEMELIOS.
+ *
+ * XEMELIOS is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * XEMELIOS 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
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XEMELIOS; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+package fr.gouv.finances.cp.xemelios.controls.pesv2.rec;
+
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.dgfip.xemelios.controls.core.AbstractUnitControl;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Anomalie;
+import fr.gouv.finances.dgfip.xemelios.controls.core.IdGenerator;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Node;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+/**
+ * Implémente le contrôle N° REC23
+ *
+ * Si un tiers est renseigné, son adresse doit exister elle aussi
+ *
+ */
+public class REC23 extends AbstractUnitControl implements ConstantsControlsPESv2 {
+ private final static Logger logger = Logger.getLogger(REC23.class);
+ public static final transient String CTRL_ID = "REC23";
+ private Vector<Anomalie> anos = new Vector<Anomalie>();
+ private Hashtable<String,Object> hParams;
+
+ /**
+ * La balise du document général
+ */
+ private String docId = null;
+ private String nodeId = null;
+
+ private Vector<Node> anonodes = new Vector<Node>();
+
+ /**
+ * La chaine cible
+ */
+ private static final String FIN_PIECE = "/PES_RecetteAller/Bordereau/Piece/";
+ private static final String FIN_INFOLIGNEPCE = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/";
+ private static final String ON_RETURN_ANOMALIES = FIN_PIECE;
+
+
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+
+ private String bord_IdBord = "";
+ private String bord_ExerBord = "";
+ private String bord_TypBord = "";
+ private String piece_IdPce = "";
+ private boolean lineHasTiersButNoAdresse = true;
+ private String line_Id = "";
+ private StringBuffer lineIds = new StringBuffer();
+ private boolean firstTiersTraite = false;
+ private String nom_nodeid = "";
+ private String prenom_nodeid = "";
+ /**
+ * Variables devant être remplacées dans le message
+ */
+ private static final String MSG_BORD_NUM = "#BORD_NUM#";
+ private static final String MSG_BORD_EXER = "#BORD_EXER#";
+ private static final String MSG_BORD_TYPE = "#BORD_TYPBORD#";
+ private static final String MSG_PIECE_ID = "#PIECE_IDPCE#";
+ private static final String MSG_LIGNE_ID = "#LIGNE_ID#";
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses uniquement
+ */
+ private static final String CHEMIN_BLOCBORDEREAU = "/PES_RecetteAller/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_PIECE = "/PES_RecetteAller/Bordereau/Piece/";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/PES_RecetteAller/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/PES_RecetteAller/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/PES_RecetteAller/Bordereau/BlocBordereau/TypBord/";
+ private static final String CHEMIN_BLOCPIECE_IDPIECE = "/PES_RecetteAller/Bordereau/Piece/BlocPiece/IdPce/";
+ private static final String CHEMIN_LIGNEPIECE = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/";
+ private static final String CHEMIN_INFOLIGNEPIECE_IDLIGNE = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/IdLigne/";
+ private static final String CHEMIN_LIGNEPIECE_ADRESSE = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/Tiers/Adresse/";
+ private static final String CHEMIN_LIGNEPIECE_TIERS = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/Tiers/";
+ private static final String CHEMIN_LIGNEPIECE_TIERS_NOM = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/Tiers/InfoTiers/Nom/";
+ private static final String CHEMIN_LIGNEPIECE_TIERS_PRENOM = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/Tiers/InfoTiers/Prenom/";
+
+
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+ }
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+ public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+ // 1
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_ExerBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_PIECE)) {
+ piece_IdPce = "";
+ anos = new Vector<Anomalie>();
+ anonodes = new Vector<Node>();
+ lineIds = new StringBuffer();
+ prenom_nodeid = nom_nodeid = "";
+ }
+ if(xpath.endsWith(CHEMIN_BLOCPIECE_IDPIECE)){
+ piece_IdPce=atts.getValue("V");
+ }
+ if(xpath.endsWith(CHEMIN_LIGNEPIECE)){
+ firstTiersTraite = false;
+ lineHasTiersButNoAdresse = false;
+ }
+ if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE_IDLIGNE)) {
+ line_Id = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_LIGNEPIECE_TIERS)) {
+ if (!firstTiersTraite)
+ lineHasTiersButNoAdresse = true;
+ }
+ if (xpath.endsWith(CHEMIN_LIGNEPIECE_ADRESSE)) {
+ if (!firstTiersTraite)
+ lineHasTiersButNoAdresse = false;
+ }
+ if (xpath.endsWith(CHEMIN_LIGNEPIECE_TIERS_NOM)) {
+ if (!firstTiersTraite)
+ nom_nodeid=atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_LIGNEPIECE_TIERS_PRENOM)) {
+ if (!firstTiersTraite)
+ prenom_nodeid=atts.getValue("ano:node-id");
+ }
+ }
+
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+ if (xpath.endsWith(CHEMIN_LIGNEPIECE_TIERS)) {
+ firstTiersTraite = true;
+ return null;
+ }
+ else if(xpath.endsWith(FIN_INFOLIGNEPCE)){
+ if (lineHasTiersButNoAdresse) {
+ lineIds.append("<li>Ligne N° ").append (line_Id).append ("</li>");
+ if (!anonodes.contains(new Node(nom_nodeid)))
+ anonodes.add(new Node(nom_nodeid));
+ if (!anonodes.contains(new Node(prenom_nodeid)))
+ anonodes.add(new Node(prenom_nodeid));
+ }
+ return null;
+ } else if (xpath.endsWith(FIN_PIECE)) {
+ if(anonodes.size()>0){
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_ExerBord);
+ msg = msg.replaceAll(MSG_BORD_TYPE, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_ID, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNE_ID, "<ul>"+lineIds.toString()+"</ul>");
+ String path="@added:primary-key='"+bord_ExerBord+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId","");
+ xslParams.put("mandatId",piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_RECETTE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ ano.addAll(anonodes);
+ anos.add(ano);
+ }
+ return anos;
+ } else {
+ return null;
+ }
+ }
+
+ public void endDocument() throws SAXException {}
+
+ public void characters(char[] ch, int start, int length, String xpath) {}
+
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ public void skippedEntity(String name, String xpath) {}
+
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) {}
+}
--- /dev/null
+/*
+ * Copyright
+ * 2007 axYus - www.axyus.com
+ * 2007 JP.Tessier - jean-philippe.tessier@axyus.com
+ *
+ * This file is part of XEMELIOS.
+ *
+ * XEMELIOS is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * XEMELIOS 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
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XEMELIOS; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+package fr.gouv.finances.cp.xemelios.controls.pesv2.rec;
+
+import fr.gouv.finances.dgfip.utils.Luhn;
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.dgfip.xemelios.controls.core.AbstractUnitControl;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Anomalie;
+import fr.gouv.finances.dgfip.xemelios.controls.core.IdGenerator;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+/*
+ * Implémente le contrôle N° REC24
+ *
+ * Contrôle sur la présence de la balise IdColl
+ *
+ */
+public class REC24 extends AbstractUnitControl implements ConstantsControlsPESv2{
+ private final static Logger logger = Logger.getLogger(REC24.class);
+ public static final transient String CTRL_ID = "REC24";
+ private Vector<Anomalie> anos = new Vector<Anomalie>();
+ private Hashtable<String,Object> hParams;
+
+ /**
+ * La chaine cible
+ */
+ private static final String FIN_BORDEREAU = "/PES_RecetteAller/";
+ private static final String ON_RETURN_ANOMALIES = FIN_BORDEREAU;
+
+
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+
+ private String IdColl = "";
+
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses uniquement
+ */
+ private static final String CHEMIN_PESDEPENSEALLER = "/PES_RecetteAller/";
+ private static final String CHEMIN_IDCOLL = "/EnTetePES/IdColl/";
+
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+ }
+
+ public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+ // 1
+ if (xpath.endsWith(CHEMIN_PESDEPENSEALLER)) {
+ anos = new Vector<Anomalie>();
+ }
+ if (xpath.endsWith(CHEMIN_IDCOLL)) {
+ IdColl = atts.getValue("V");
+ logger.debug(CTRL_ID+" : IdColl="+IdColl);
+ }
+ }
+
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+ if(xpath.endsWith(ON_RETURN_ANOMALIES)){
+ if(!(hParams.get("nomencl").equals("M21")) && !Luhn.testLuhnSiren(IdColl) && !Luhn.testLuhnSiret(IdColl)) {
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent().replaceAll("#ID_COLL#","n'est pas bon. "+IdColl!=null?"Il ne correspond pas un un SIRET/SIREN valide":"Il n'existe pas dans le flux analysé"+".");
+ String anoId = IdGenerator.nextId();
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ null, // élément importable
+ null, // id élément importable
+ null,
+ null,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ null, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ null); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ anos.add(ano);
+ }
+ return anos;
+ } else {
+ return null;
+ }
+ }
+
+ public void endDocument() throws SAXException {}
+
+ public void characters(char[] ch, int start, int length, String xpath) {}
+
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ public void skippedEntity(String name, String xpath) {}
+
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) {}
+
+}
--- /dev/null
+/*
+ * Copyright
+ * 2008 axYus - www.axyus.com
+ * 2008 C ESCOBAR - christel.escobar@axyus.com
+ *
+ * This file is part of XEMELIOS.
+ *
+ * XEMELIOS is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * XEMELIOS 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
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XEMELIOS; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+package fr.gouv.finances.cp.xemelios.controls.pesv2.rec;
+
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.dgfip.xemelios.controls.core.AbstractUnitControl;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Anomalie;
+import fr.gouv.finances.dgfip.xemelios.controls.core.IdGenerator;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Node;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+
+/**
+ * Implémente le contrôle N° REC25
+ *
+ * Contrôles liés aux titres d'ordre
+ *
+ */
+
+public class REC25 extends AbstractUnitControl implements ConstantsControlsPESv2{
+ private final static Logger logger = Logger.getLogger(REC25.class);
+ public static final transient String CTRL_ID = "REC25";
+ private Vector<Anomalie> anos = new Vector<Anomalie>();
+ private Hashtable<String,Object> hParams;
+
+ /**
+ * La chaine cible
+ */
+ private static final String FIN_PIECE = "/PES_RecetteAller/Bordereau/Piece/";
+ private static final String LIGNEPCE = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/";
+ private static final String ON_RETURN_ANOMALIES = FIN_PIECE;
+
+
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+
+ private String bord_IdBord = "";
+ private String bord_ExerBord = "";
+ private String bord_TypBord = "";
+ private String piece_IdPce = "";
+ private String piece_TypPce = "";
+ private String lignepiece_Id = "";
+ private String lignepiece_CatTiers = "";
+ private String lignepiece_NatJur = "";
+ private String lignepiece_Tiers_Nom = "";
+
+ private String lignepiece_CpteBancaire_NodeId = "";
+ private String lignepiece_NodeId = "";
+
+ private Vector<String> vCatTiersNatJur = new Vector<String>();
+
+ private boolean cpteBancaireExist = false;
+
+ int compteurTiers = 0;
+
+ /**
+ * Variables devant être remplacées dans le message
+ */
+
+ private static final String MSG_BORD_NUM = "#BORD_NUM#";
+ private static final String MSG_BORD_EXER = "#BORD_EXER#";
+ private static final String MSG_BORD_TYPE = "#BORD_TYPBORD#";
+ private static final String MSG_PIECE_ID = "#PIECE_IDPCE#";
+ private static final String MSG_LIGNEPIECE_ID = "#LIGNE_IDLIGNE#";
+
+
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses uniquement
+ */
+
+ private static final String CHEMIN_BLOCBORDEREAU = "/PES_RecetteAller/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_PIECE = "/PES_RecetteAller/Bordereau/Piece/";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/PES_RecetteAller/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/PES_RecetteAller/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/PES_RecetteAller/Bordereau/BlocBordereau/TypBord/";
+ private static final String CHEMIN_BLOCPIECE_IDPIECE = "/PES_RecetteAller/Bordereau/Piece/BlocPiece/IdPce/";
+ private static final String CHEMIN_BLOCPIECE_TYPPIECE = "/PES_RecetteAller/Bordereau/Piece/BlocPiece/TypPce/";
+ private static final String CHEMIN_LIGNEPIECE = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/";
+ private static final String CHEMIN_LIGNEPIECE_ID = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/IdLigne/";
+ private static final String CHEMIN_LIGNEPIECE_TIERS = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/Tiers/";
+ private static final String CHEMIN_TIERS_CPTEBANCAIRE = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/Tiers/CpteBancaire/";
+ private static final String CHEMIN_TIERS_CATTIERS = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/Tiers/InfoTiers/CatTiers/";
+ private static final String CHEMIN_TIERS_NATJUR = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/Tiers/InfoTiers/NatJur/";
+ private static final String CHEMIN_TIERS_TYPTIERS = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/Tiers/InfoTiers/TypTiers/";
+ private static final String CHEMIN_TIERS_NOM = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/Tiers/InfoTiers/Nom/";
+
+
+
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+ }
+
+ public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ if (!anos.isEmpty())
+ anos = new Vector<Anomalie>();
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_ExerBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_PIECE)) {
+ anos.clear();
+ piece_IdPce = piece_TypPce = "";
+ }
+ if (xpath.endsWith(CHEMIN_BLOCPIECE_IDPIECE)) {
+ piece_IdPce = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCPIECE_TYPPIECE)) {
+ piece_TypPce = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_LIGNEPIECE)) {
+ vCatTiersNatJur.clear();
+ lignepiece_Id = "";
+ lignepiece_NodeId = "";
+ compteurTiers = 0;
+ }
+ if (xpath.endsWith(CHEMIN_LIGNEPIECE_ID)) {
+ lignepiece_Id = atts.getValue("V");
+ lignepiece_NodeId = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_LIGNEPIECE_TIERS)) {
+ compteurTiers++;
+ cpteBancaireExist = false;
+ lignepiece_CatTiers = lignepiece_NatJur = lignepiece_Tiers_Nom = "";
+ lignepiece_CpteBancaire_NodeId = "";
+ }
+ if (xpath.endsWith(CHEMIN_TIERS_CPTEBANCAIRE)) {
+ cpteBancaireExist = true;
+ lignepiece_CpteBancaire_NodeId = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_TIERS_CATTIERS)) {
+ lignepiece_CatTiers = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_TIERS_NATJUR)) {
+ lignepiece_NatJur = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_TIERS_TYPTIERS)) {
+ vCatTiersNatJur.add(lignepiece_CatTiers + lignepiece_NatJur);
+ }
+ if (xpath.endsWith(CHEMIN_TIERS_NOM)) {
+ lignepiece_Tiers_Nom = atts.getValue("V");
+ }
+ }
+
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+
+ String severity = getDocumentModel().getControlById(CTRL_ID).getSeverity();
+
+ if(xpath.endsWith(CHEMIN_LIGNEPIECE_TIERS)){
+
+ if(piece_TypPce.equals("03") || piece_TypPce.equals("04")){
+
+ if(cpteBancaireExist){
+ severity="BLOQUANT";
+
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_ExerBord);
+ msg = msg.replaceAll(MSG_BORD_TYPE, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_ID, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNEPIECE_ID, lignepiece_Id);
+ String path="@added:primary-key='"+bord_ExerBord+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Titre "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId","");
+ xslParams.put("mandatId",piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_RECETTE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg + " - Tiers : " + lignepiece_Tiers_Nom,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ severity,
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+
+ if(compteurTiers==1)
+ ano.addNode(new Node(lignepiece_CpteBancaire_NodeId));
+ else
+ ano.addNode(new Node(lignepiece_NodeId));
+
+ anos.add(ano);
+
+ }
+
+ } return null;
+
+ } else if(xpath.endsWith(LIGNEPCE)){
+
+ if(piece_TypPce.equals("03") || piece_TypPce.equals("04")){
+
+ if(!vCatTiersNatJur.contains("2007")){
+
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_ExerBord);
+ msg = msg.replaceAll(MSG_BORD_TYPE, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_ID, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNEPIECE_ID, lignepiece_Id);
+ String path="@added:primary-key='"+bord_ExerBord+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Titre "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId","");
+ xslParams.put("mandatId",piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_RECETTE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg + " (NON BLOQUANT)",
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ severity,
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+
+ ano.addNode(new Node(lignepiece_NodeId));
+ anos.add(ano);
+
+ }
+ } return null;
+
+ } else if(xpath.endsWith(ON_RETURN_ANOMALIES)){
+
+ return anos;
+
+ } else {
+ return null;
+ }
+ }
+
+ public void endDocument() throws SAXException {}
+
+ public void characters(char[] ch, int start, int length, String xpath) {}
+
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ public void skippedEntity(String name, String xpath) {}
+
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) {}
+
+}
--- /dev/null
+/*
+ * Copyright
+ * 2008 axYus - www.axyus.com
+ * 2008 C ESCOBAR - christel.escobar@axyus.com
+ *
+ * This file is part of XEMELIOS.
+ *
+ * XEMELIOS is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * XEMELIOS 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
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XEMELIOS; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+
+package fr.gouv.finances.cp.xemelios.controls.pesv2.rec;
+
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.dgfip.xemelios.controls.core.AbstractUnitControl;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Anomalie;
+import fr.gouv.finances.dgfip.xemelios.controls.core.IdGenerator;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+
+/**
+ * Implémente le contrôle N° REC26
+ *
+ * Il consiste à vérifier la règle fonctionnelle suivante :
+ * Lorsque la pièce est un titre sur plusieurs années, il faut vérifier que le numéro de convention est alimenté.
+ *
+ */
+
+
+public class REC26 extends AbstractUnitControl implements ConstantsControlsPESv2{
+ private final static Logger logger = Logger.getLogger(REC26.class);
+ public static final transient String CTRL_ID = "REC26";
+ private Vector<Anomalie> anos = new Vector<Anomalie>();
+ private Hashtable<String,Object> hParams;
+
+ /**
+ * La balise du document général
+ */
+
+ private String docId = null;
+ private String nodeId = null;
+
+ /**
+ * La chaine cible
+ */
+
+ private static final String FIN_PIECE = "/PES_RecetteAller/Bordereau/Piece/";
+ private static final String LIGNEPCE = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/";
+ private static final String ON_RETURN_ANOMALIES = FIN_PIECE;
+
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+
+ private String bord_IdBord = "";
+ private String bord_ExerBord = "";
+ private String bord_TypBord = "";
+ private String piece_IdPce = "";
+ private String piece_TypPce = "";
+ private String lienident_IdConv = "";
+ private String ligne_IdLigne = "";
+
+ /**
+ * Variables devant être remplacées dans le message-echec
+ */
+
+ private static final String MSG_BORD_NUM = "#BORD_NUM#";
+ private static final String MSG_BORD_EXER = "#BORD_EXER#";
+ private static final String MSG_BORD_TYPBORD = "#BORD_TYPBORD#";
+ private static final String MSG_PIECE_TYPPCE = "#PIECE_TYPPCE#";
+ private static final String MSG_PIECE_ID = "#PIECE_IDPCE#";
+ private static final String MSG_LIGNE_IDLIGNE = "#LIGNE_IDLIGNE#";
+
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses uniquement
+ */
+
+ private static final String CHEMIN_BLOCBORDEREAU = "/PES_RecetteAller/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_PIECE = "/PES_RecetteAller/Bordereau/Piece";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/PES_RecetteAller/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/PES_RecetteAller/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/PES_RecetteAller/Bordereau/BlocBordereau/TypBord/";
+ private static final String CHEMIN_BLOCPIECE_IDPIECE = "/PES_RecetteAller/Bordereau/Piece/BlocPiece/IdPce/";
+ private static final String CHEMIN_BLOCPIECE_TYPPIECE = "/PES_RecetteAller/Bordereau/Piece/BlocPiece/TypPce/";
+ private static final String CHEMIN_INFOLIGNEPIECE = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/";
+ private static final String CHEMIN_INFOLIGNEPIECE_IDLIGNE = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/IdLigne/";
+ private static final String CHEMIN_LIENIDENT = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/LiensIdent/";
+ private static final String CHEMIN_LIENIDENT_IDCONV = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/LiensIdent/IdConv/";
+
+
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+ }
+
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+
+ public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ bord_ExerBord = bord_IdBord = bord_TypBord = "";
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_ExerBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_PIECE)) {
+ if (anos != null)
+ anos = new Vector<Anomalie>();
+ piece_IdPce = piece_TypPce = "";
+ lienident_IdConv = "";
+ }
+ if(xpath.endsWith(CHEMIN_BLOCPIECE_IDPIECE)){
+ piece_IdPce = atts.getValue("V");
+ anos.clear();
+ }
+ if(xpath.endsWith(CHEMIN_BLOCPIECE_TYPPIECE)){
+ piece_TypPce = atts.getValue("V");
+ }
+ if(xpath.endsWith(CHEMIN_INFOLIGNEPIECE)){
+ ligne_IdLigne = "";
+ }
+ if(xpath.endsWith(CHEMIN_INFOLIGNEPIECE_IDLIGNE)){
+ ligne_IdLigne = atts.getValue("V");
+ }
+ if(xpath.endsWith(CHEMIN_LIENIDENT)){
+ lienident_IdConv = "";
+ }
+ if(xpath.endsWith(CHEMIN_LIENIDENT_IDCONV)){
+ lienident_IdConv = atts.getValue("V");
+ }
+
+
+ }
+
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+
+ if(xpath.endsWith(LIGNEPCE)){
+
+ if (piece_TypPce.equals("10") && lienident_IdConv.equals("")){
+
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_ExerBord);
+ msg = msg.replaceAll(MSG_BORD_TYPBORD, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_TYPPCE, piece_TypPce);
+ msg = msg.replaceAll(MSG_PIECE_ID, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNE_IDLIGNE, ligne_IdLigne);
+ String path="@added:primary-key='"+bord_ExerBord+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Titre "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId","");
+ xslParams.put("mandatId",piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_RECETTE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ anos.add(ano);
+ }
+ return null;
+ }
+ else if (xpath.endsWith(ON_RETURN_ANOMALIES)){
+
+ return anos;
+
+ } else {
+ return null;
+ }
+ }
+
+ public void endDocument() throws SAXException {}
+
+ public void characters(char[] ch, int start, int length, String xpath) {}
+
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ public void skippedEntity(String name, String xpath) {}
+
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) {}
+
+}
--- /dev/null
+/*
+ * Copyright
+ * 2008 axYus - www.axyus.com
+ * 2008 C ESCOBAR - christel.escobar@axyus.com
+ *
+ * This file is part of XEMELIOS.
+ *
+ * XEMELIOS is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * XEMELIOS 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
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XEMELIOS; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+
+
+package fr.gouv.finances.cp.xemelios.controls.pesv2.rec;
+
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.dgfip.xemelios.controls.core.AbstractUnitControl;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Anomalie;
+import fr.gouv.finances.dgfip.xemelios.controls.core.IdGenerator;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Node;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+
+/**
+ * Implémente le contrôle N° REC27
+ *
+ * Il consiste à vérifier la règle fonctionnelle suivante :
+ * Lorsque la pièce est un titre d'ordre budgétaire de nature cession, le compte budgétaire est de type 2x (sortie du bien de l'actif),
+ * 192 (plus-value) ou 776 (moins-value) et le numéro d'opération doit faire apparaître le chapitre 040 ou 4 (sortie du bien de l'actif) [vote par nature]
+ * ou bien le chapitre 914 (sortie du bien de l'actif) ou 934 [vote par fonction].
+ * Le titre doit faire référence à un mandat d'ordre budgétaire.
+ *
+ */
+
+
+public class REC27 extends AbstractUnitControl implements ConstantsControlsPESv2{
+ private final static Logger logger = Logger.getLogger(REC27.class);
+ public static final transient String CTRL_ID = "REC27";
+ private Vector<Anomalie> anos = new Vector<Anomalie>();
+ private Hashtable<String,Object> hParams;
+
+ /**
+ * La balise du document général
+ */
+
+ private String docId = null;
+ private String nodeId = null;
+
+ /**
+ * La chaine cible
+ */
+
+ private static final String FIN_PIECE = "/PES_RecetteAller/Bordereau/Piece/";
+ private static final String LIGNEPCE = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/";
+ private static final String ON_RETURN_ANOMALIES = FIN_PIECE;
+
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+
+ private String bord_IdBord = "";
+ private String bord_ExerBord = "";
+ private String bord_TypBord = "";
+ private String piece_IdPce = "";
+ private String piece_TypPce = "";
+ private String piece_NatPce = "";
+ private String ligne_IdLigne = "";
+ private String ligne_Nature = "";
+ private String ligne_Operation = "";
+
+ private String ligne_Nature_NodeId = "";
+ private String ligne_Operation_NodeId = "";
+ private String ligne_IdLigne_NodeId = "";
+
+ private boolean rattachPiece_exist = false;
+
+
+ /**
+ * Variables devant être remplacées dans le message-echec
+ */
+
+ private static final String MSG_BORD_NUM = "#BORD_NUM#";
+ private static final String MSG_BORD_EXER = "#BORD_EXER#";
+ private static final String MSG_BORD_TYPBORD = "#BORD_TYPBORD#";
+ private static final String MSG_PIECE_TYPPCE = "#PIECE_TYPPCE#";
+ private static final String MSG_PIECE_ID = "#PIECE_IDPCE#";
+ private static final String MSG_LIGNE_IDLIGNE = "#LIGNE_IDLIGNE#";
+
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses uniquement
+ */
+
+ private static final String CHEMIN_BLOCBORDEREAU = "/PES_RecetteAller/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_PIECE = "/PES_RecetteAller/Bordereau/Piece";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/PES_RecetteAller/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/PES_RecetteAller/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/PES_RecetteAller/Bordereau/BlocBordereau/TypBord/";
+ private static final String CHEMIN_BLOCPIECE_NATPIECE = "/PES_RecetteAller/Bordereau/Piece/BlocPiece/NatPce/";
+ private static final String CHEMIN_BLOCPIECE_IDPIECE = "/PES_RecetteAller/Bordereau/Piece/BlocPiece/IdPce/";
+ private static final String CHEMIN_BLOCPIECE_TYPPIECE = "/PES_RecetteAller/Bordereau/Piece/BlocPiece/TypPce/";
+ private static final String CHEMIN_BLOCLIGNEPIECE = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/";
+ private static final String CHEMIN_RATTACHPIECE = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/RattachPiece/";
+ private static final String CHEMIN_INFOLIGNEPIECE_IDLIGNE = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/IdLigne/";
+ private static final String CHEMIN_INFOLIGNEPIECE_NATURE = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/Nature/";
+ private static final String CHEMIN_INFOLIGNEPIECE_OPERATION = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/Operation/";
+
+
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+ }
+
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+
+ public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ bord_ExerBord = bord_IdBord = bord_TypBord = "";
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_ExerBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_PIECE)) {
+ if (anos != null)
+ anos = new Vector<Anomalie>();
+ piece_IdPce = piece_TypPce = piece_NatPce = "";
+ }
+ if(xpath.endsWith(CHEMIN_BLOCPIECE_IDPIECE)){
+ piece_IdPce = atts.getValue("V");
+ anos.clear();
+ }
+ if(xpath.endsWith(CHEMIN_BLOCPIECE_TYPPIECE)){
+ piece_TypPce = atts.getValue("V");
+ }
+ if(xpath.endsWith(CHEMIN_BLOCPIECE_NATPIECE)){
+ piece_NatPce = atts.getValue("V");
+ }
+ if(xpath.endsWith(CHEMIN_BLOCLIGNEPIECE)){
+ ligne_IdLigne = ligne_Nature = ligne_Operation = "";
+ ligne_Nature_NodeId = ligne_Operation_NodeId = ligne_IdLigne_NodeId = "";
+ rattachPiece_exist = false;
+ }
+ if(xpath.endsWith(CHEMIN_RATTACHPIECE)){
+ rattachPiece_exist = true;
+ }
+ if(xpath.endsWith(CHEMIN_INFOLIGNEPIECE_IDLIGNE)){
+ ligne_IdLigne = atts.getValue("V");
+ ligne_IdLigne_NodeId = atts.getValue("ano:node-id");
+ }
+ if(xpath.endsWith(CHEMIN_INFOLIGNEPIECE_NATURE)){
+ ligne_Nature = atts.getValue("V");
+ ligne_Nature_NodeId = atts.getValue("ano:node-id");
+ }
+ if(xpath.endsWith(CHEMIN_INFOLIGNEPIECE_OPERATION)){
+ ligne_Operation = atts.getValue("V");
+ ligne_Operation_NodeId = atts.getValue("ano:node-id");
+ }
+
+ }
+
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+ Vector<Node> anonodes = new Vector<Node>();
+ String PAR1 = (String)hParams.get("nomencl");
+ String PAR2 = (String)hParams.get("typnomencl");
+
+ if(xpath.endsWith(LIGNEPCE)){
+
+ if ( ("M4".equals(PAR1) || "M14".equals(PAR1)) && ("Nature".equals(PAR2) || "Nature-ref-fonct".equals(PAR2)) ) {
+
+ if (piece_TypPce.equals("03") && piece_NatPce.equals("18") &&
+ ( (!haveToTest(ligne_Nature) && !ligne_Nature.equals("192") && !ligne_Nature.equals("776")) ||
+ (!ligne_Operation.equals("040") && !ligne_Operation.equals("4")) || !rattachPiece_exist )) {
+
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_ExerBord);
+ msg = msg.replaceAll(MSG_BORD_TYPBORD, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_TYPPCE, piece_TypPce);
+ msg = msg.replaceAll(MSG_PIECE_ID, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNE_IDLIGNE, ligne_IdLigne);
+ String path="@added:primary-key='"+bord_ExerBord+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Titre "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId","");
+ xslParams.put("mandatId",piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_RECETTE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+
+ if (!haveToTest(ligne_Nature) && !ligne_Nature.equals("192") && !ligne_Nature.equals("776"))
+ anonodes.add(new Node (ligne_Nature_NodeId));
+ if (!ligne_Operation.equals("040") && !ligne_Operation.equals("4"))
+ anonodes.add(new Node (ligne_Operation_NodeId));
+ if (!rattachPiece_exist || ligne_Nature.equals("") || ligne_Operation.equals(""))
+ anonodes.add(new Node (ligne_IdLigne_NodeId));
+
+ ano.addAll(anonodes);
+ anos.add(ano);
+ }
+ }
+
+ if ( ("M4".equals(PAR1) || "M14".equals(PAR1)) && "Fonction".equals(PAR2) ) {
+ if (piece_TypPce.equals("03") && piece_NatPce.equals("18") &&
+ ( (!haveToTest(ligne_Nature) && !ligne_Nature.equals("192") && !ligne_Nature.equals("776")) ||
+ (!ligne_Operation.equals("914") && !ligne_Operation.equals("934")) || !rattachPiece_exist )) {
+
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_ExerBord);
+ msg = msg.replaceAll(MSG_BORD_TYPBORD, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_TYPPCE, piece_TypPce);
+ msg = msg.replaceAll(MSG_PIECE_ID, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNE_IDLIGNE, ligne_IdLigne);
+ String path="@added:primary-key='"+bord_ExerBord+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Titre "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId","");
+ xslParams.put("mandatId",piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_RECETTE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+
+ if (!haveToTest(ligne_Nature) && !ligne_Nature.equals("192") && !ligne_Nature.equals("776"))
+ anonodes.add(new Node (ligne_Nature_NodeId));
+ if (!ligne_Operation.equals("914") && !ligne_Operation.equals("934"))
+ anonodes.add(new Node (ligne_Operation_NodeId));
+ if (!rattachPiece_exist || ligne_Nature.equals("") || ligne_Operation.equals(""))
+ anonodes.add(new Node (ligne_IdLigne_NodeId));
+
+ ano.addAll(anonodes);
+ anos.add(ano);
+ }
+ }
+
+ return null;
+ }
+ else if (xpath.endsWith(ON_RETURN_ANOMALIES)){
+
+ return anos;
+
+ } else {
+ return null;
+ }
+ }
+
+
+ public boolean haveToTest(String nature){
+ return (Integer.parseInt(nature)>=20 && Integer.parseInt(nature)<=29);
+ }
+
+ public void endDocument() throws SAXException {}
+
+ public void characters(char[] ch, int start, int length, String xpath) {}
+
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ public void skippedEntity(String name, String xpath) {}
+
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) {}
+
+}
--- /dev/null
+/*
+ * Copyright
+ * 2008 axYus - www.axyus.com
+ * 2008 C ESCOBAR - christel.escobar@axyus.com
+ *
+ * This file is part of XEMELIOS.
+ *
+ * XEMELIOS is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * XEMELIOS 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
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XEMELIOS; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+
+package fr.gouv.finances.cp.xemelios.controls.pesv2.rec;
+
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.dgfip.xemelios.controls.core.AbstractUnitControl;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Anomalie;
+import fr.gouv.finances.dgfip.xemelios.controls.core.IdGenerator;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Node;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+
+/**
+ * Implémente le contrôle N° REC28
+ *
+ * Il consiste à vérifier la règle fonctionnelle suivante :
+ * Les Codes Régie, Numéros d'Emprunts ou d'Inventaire doivent être renseignés.
+ *
+ */
+
+
+public class REC28 extends AbstractUnitControl implements ConstantsControlsPESv2{
+ private final static Logger logger = Logger.getLogger(REC28.class);
+ public static final transient String CTRL_ID = "REC28";
+ private Vector<Anomalie> anos = new Vector<Anomalie>();
+ private Hashtable<String,Object> hParams;
+
+ /**
+ * La balise du document général
+ */
+
+ private String docId = null;
+ private String nodeId = null;
+
+ /**
+ * La chaine cible
+ */
+
+ private static final String FIN_PIECE = "/PES_RecetteAller/Bordereau/Piece/";
+ private static final String LIGNEPCE = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/";
+ private static final String ON_RETURN_ANOMALIES = FIN_PIECE;
+
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+
+ private String bord_IdBord = "";
+ private String bord_ExerBord = "";
+ private String bord_TypBord = "";
+ private String piece_IdPce = "";
+ private String piece_TypPce = "";
+ private String piece_NatPce = "";
+ private String ligne_IdLigne = "";
+ private String ligne_IdActif = "";
+ private String ligne_IdEmpruntOrdo = "";
+ private String ligne_IdRegie = "";
+
+ private String ligne_IdLigne_NodeId = "";
+
+
+ /**
+ * Variables devant être remplacées dans le message-echec
+ */
+
+ private static final String MSG_BORD_NUM = "#BORD_NUM#";
+ private static final String MSG_BORD_EXER = "#BORD_EXER#";
+ private static final String MSG_BORD_TYPBORD = "#BORD_TYPBORD#";
+ private static final String MSG_PIECE_TYPPCE = "#PIECE_TYPPCE#";
+ private static final String MSG_PIECE_ID = "#PIECE_IDPCE#";
+ private static final String MSG_LIGNE_IDLIGNE = "#LIGNE_IDLIGNE#";
+ private static final String MSG_ERREUR = "#ERREUR#";
+
+
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses uniquement
+ */
+
+ private static final String CHEMIN_BLOCBORDEREAU = "/PES_RecetteAller/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_PIECE = "/PES_RecetteAller/Bordereau/Piece/";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/PES_RecetteAller/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/PES_RecetteAller/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/PES_RecetteAller/Bordereau/BlocBordereau/TypBord/";
+ private static final String CHEMIN_BLOCPIECE_NATPIECE = "/PES_RecetteAller/Bordereau/Piece/BlocPiece/NatPce/";
+ private static final String CHEMIN_BLOCPIECE_IDPIECE = "/PES_RecetteAller/Bordereau/Piece/BlocPiece/IdPce/";
+ private static final String CHEMIN_BLOCPIECE_TYPPIECE = "/PES_RecetteAller/Bordereau/Piece/BlocPiece/TypPce/";
+ private static final String CHEMIN_LIENSIDENT_IDACTIF = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/LiensIdent/IdActif/";
+ private static final String CHEMIN_LIENSIDENT_IDEMPRUNTORDO = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/LiensIdent/IdEmpruntOrdo/";
+ private static final String CHEMIN_LIENSIDENT_IDREGIE = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/LiensIdent/IdRegie/";
+ private static final String CHEMIN_BLOCLIGNEPIECE = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/";
+ private static final String CHEMIN_INFOLIGNEPIECE_IDLIGNE = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/IdLigne/";
+
+
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+ }
+
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+
+ public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ bord_ExerBord = bord_IdBord = bord_TypBord = "";
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_ExerBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_PIECE)) {
+ if (anos != null)
+ anos = new Vector<Anomalie>();
+ piece_IdPce = piece_TypPce = piece_NatPce = "";
+ }
+ if(xpath.endsWith(CHEMIN_BLOCPIECE_IDPIECE)){
+ piece_IdPce = atts.getValue("V");
+ anos.clear();
+ }
+ if(xpath.endsWith(CHEMIN_BLOCPIECE_TYPPIECE)){
+ piece_TypPce = atts.getValue("V");
+ }
+ if(xpath.endsWith(CHEMIN_BLOCPIECE_NATPIECE)){
+ piece_NatPce = atts.getValue("V");
+ }
+ if(xpath.endsWith(CHEMIN_BLOCLIGNEPIECE)){
+ ligne_IdLigne = "";
+ ligne_IdLigne_NodeId = "";
+ ligne_IdActif = ligne_IdEmpruntOrdo = ligne_IdRegie = "";
+ }
+ if(xpath.endsWith(CHEMIN_LIENSIDENT_IDACTIF)){
+ ligne_IdActif = atts.getValue("V");
+ }
+ if(xpath.endsWith(CHEMIN_LIENSIDENT_IDEMPRUNTORDO)){
+ ligne_IdEmpruntOrdo = atts.getValue("V");
+ }
+ if(xpath.endsWith(CHEMIN_LIENSIDENT_IDREGIE)){
+ ligne_IdRegie = atts.getValue("V");
+ }
+ if(xpath.endsWith(CHEMIN_INFOLIGNEPIECE_IDLIGNE)){
+ ligne_IdLigne = atts.getValue("V");
+ ligne_IdLigne_NodeId = atts.getValue("ano:node-id");
+ }
+
+ }
+
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+
+ if(xpath.endsWith(LIGNEPCE)){
+
+ boolean err = false;
+
+ if ( piece_NatPce.equals("03") && ligne_IdActif.equals(""))
+ err = true;
+ if ( piece_NatPce.equals("04") && ligne_IdEmpruntOrdo.equals(""))
+ err = true;
+ if ( piece_NatPce.equals("05") && ligne_IdRegie.equals(""))
+ err = true;
+
+ if(err) {
+
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_ExerBord);
+ msg = msg.replaceAll(MSG_BORD_TYPBORD, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_TYPPCE, piece_TypPce);
+ msg = msg.replaceAll(MSG_PIECE_ID, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNE_IDLIGNE, ligne_IdLigne);
+
+ if (piece_NatPce.equals("03") && ligne_IdActif.equals(""))
+ msg = msg.replaceAll(MSG_ERREUR, "Numéro d'inventaire non renseigné.");
+ if (piece_NatPce.equals("04") && ligne_IdEmpruntOrdo.equals(""))
+ msg = msg.replaceAll(MSG_ERREUR, "Numéro d'emprunt non renseigné.");
+ if (piece_NatPce.equals("05") && ligne_IdRegie.equals(""))
+ msg = msg.replaceAll(MSG_ERREUR, "Numéro de régie non renseigné.");
+
+
+ String path="@added:primary-key='"+bord_ExerBord+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Titre "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId","");
+ xslParams.put("mandatId",piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_RECETTE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+
+
+ ano.addNode(new Node (ligne_IdLigne_NodeId));
+ anos.add(ano);
+
+ }
+
+ return null;
+ }
+ else if (xpath.endsWith(ON_RETURN_ANOMALIES)){
+
+ return anos;
+
+ } else {
+ return null;
+ }
+ }
+
+
+ public void endDocument() throws SAXException {}
+
+ public void characters(char[] ch, int start, int length, String xpath) {}
+
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ public void skippedEntity(String name, String xpath) {}
+
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) {}
+
+}
--- /dev/null
+/*
+ * Copyright
+ * 2008 axYus - www.axyus.com
+ * 2008 C ESCOBAR - christel.escobar@axyus.com
+ *
+ * This file is part of XEMELIOS.
+ *
+ * XEMELIOS is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * XEMELIOS 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
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XEMELIOS; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+
+
+package fr.gouv.finances.cp.xemelios.controls.pesv2.rec;
+
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.dgfip.xemelios.controls.core.AbstractUnitControl;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Anomalie;
+import fr.gouv.finances.dgfip.xemelios.controls.core.IdGenerator;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Node;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+
+/**
+ * Implémente le contrôle N° REC29
+ *
+ * Il consiste à vérifier la règle fonctionnelle suivante :
+ * La référence à la pièce initiale doit être alimentée dans le cas des charges à répartir, des produits constatés d'avance et des produits à rattacher.
+ *
+ */
+
+
+public class REC29 extends AbstractUnitControl implements ConstantsControlsPESv2{
+ private final static Logger logger = Logger.getLogger(REC29.class);
+ public static final transient String CTRL_ID = "REC29";
+ private Vector<Anomalie> anos = new Vector<Anomalie>();
+ private Hashtable<String,Object> hParams;
+
+ /**
+ * La balise du document général
+ */
+
+ private String docId = null;
+ private String nodeId = null;
+
+ /**
+ * La chaine cible
+ */
+
+ private static final String FIN_PIECE = "/PES_RecetteAller/Bordereau/Piece/";
+ private static final String LIGNEPCE = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/";
+ private static final String ON_RETURN_ANOMALIES = FIN_PIECE;
+
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+
+ private String bord_IdBord = "";
+ private String bord_ExerBord = "";
+ private String bord_TypBord = "";
+ private String piece_IdPce = "";
+ private String piece_TypPce = "";
+ private String piece_NatPce = "";
+ private String ligne_IdLigne = "";
+ private String ligne_Nature = "";
+ private String rattachPiece_NatPceOrig = "";
+ private String rattachPiece_ExerRat = "";
+
+
+ private String ligne_IdLigne_NodeId = "";
+ private String rattachPiece_NatPceOrig_nodeId = "";
+ private String rattachPiece_ExerRat_nodeId = "";
+
+ private boolean rattachPiece_exist = false;
+
+
+
+ /**
+ * Variables devant être remplacées dans le message-echec
+ */
+
+ private static final String MSG_BORD_NUM = "#BORD_NUM#";
+ private static final String MSG_PIECE_ID = "#PIECE_IDPCE#";
+ private static final String MSG_LIGNE_IDLIGNE = "#LIGNE_IDLIGNE#";
+ private static final String MSG_ERREUR = "#ERREUR#";
+
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses uniquement
+ */
+
+ private static final String CHEMIN_BLOCBORDEREAU = "/PES_RecetteAller/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_PIECE = "/PES_RecetteAller/Bordereau/Piece/";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/PES_RecetteAller/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/PES_RecetteAller/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/PES_RecetteAller/Bordereau/BlocBordereau/TypBord/";
+ private static final String CHEMIN_BLOCPIECE_NATPIECE = "/PES_RecetteAller/Bordereau/Piece/BlocPiece/NatPce/";
+ private static final String CHEMIN_BLOCPIECE_IDPIECE = "/PES_RecetteAller/Bordereau/Piece/BlocPiece/IdPce/";
+ private static final String CHEMIN_BLOCPIECE_TYPPIECE = "/PES_RecetteAller/Bordereau/Piece/BlocPiece/TypPce/";
+ private static final String CHEMIN_BLOCLIGNEPIECE = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/";
+ private static final String CHEMIN_BLOCLIGNEPIECE_RATTACHPIECE = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/RattachPiece/";
+ private static final String CHEMIN_RATTACHPIECE_NATPCEORIG = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/RattachPiece/NatPceOrig/";
+ private static final String CHEMIN_RATTACHPIECE_EXERRAT = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/RattachPiece/ExerRat/";
+ private static final String CHEMIN_INFOLIGNEPIECE_IDLIGNE = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/IdLigne/";
+ private static final String CHEMIN_INFOLIGNEPIECE_NATURE = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/Nature/";
+
+
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+ }
+
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+
+ public void startElement(String uri, String localName, String qName, Attributes atts, String xpath) {
+
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ bord_ExerBord = bord_IdBord = bord_TypBord = "";
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_ExerBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_PIECE)) {
+ if (anos != null)
+ anos = new Vector<Anomalie>();
+ piece_IdPce = piece_TypPce = piece_NatPce = "";
+ }
+ if(xpath.endsWith(CHEMIN_BLOCPIECE_IDPIECE)){
+ piece_IdPce = atts.getValue("V");
+ anos.clear();
+ }
+ if(xpath.endsWith(CHEMIN_BLOCPIECE_TYPPIECE)){
+ piece_TypPce = atts.getValue("V");
+ }
+ if(xpath.endsWith(CHEMIN_BLOCPIECE_NATPIECE)){
+ piece_NatPce = atts.getValue("V");
+ }
+ if(xpath.endsWith(CHEMIN_BLOCLIGNEPIECE)){
+ ligne_IdLigne = ligne_Nature = "";
+ ligne_IdLigne_NodeId = "";
+ rattachPiece_exist = false;
+ rattachPiece_ExerRat = rattachPiece_NatPceOrig = "";
+ rattachPiece_ExerRat_nodeId = rattachPiece_NatPceOrig_nodeId = "";
+ }
+ if(xpath.endsWith(CHEMIN_BLOCLIGNEPIECE_RATTACHPIECE)){
+ rattachPiece_exist = true;
+ }
+ if(xpath.endsWith(CHEMIN_RATTACHPIECE_NATPCEORIG)){
+ rattachPiece_NatPceOrig = atts.getValue("V");
+ rattachPiece_NatPceOrig_nodeId = atts.getValue("ano:node-id");
+ }
+ if(xpath.endsWith(CHEMIN_RATTACHPIECE_EXERRAT)){
+ rattachPiece_ExerRat = atts.getValue("V");
+ rattachPiece_ExerRat_nodeId = atts.getValue("ano:node-id");
+ }
+ if(xpath.endsWith(CHEMIN_INFOLIGNEPIECE_IDLIGNE)){
+ ligne_IdLigne = atts.getValue("V");
+ ligne_IdLigne_NodeId = atts.getValue("ano:node-id");
+ }
+ if(xpath.endsWith(CHEMIN_INFOLIGNEPIECE_NATURE)){
+ ligne_Nature = atts.getValue("V");
+ }
+
+ }
+
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+ Vector<Node> anonodes = new Vector<Node>();
+ boolean err = false;
+ String erreur = "";
+
+ if(xpath.endsWith(LIGNEPCE)){
+
+ if ( haveToTest() ){
+
+ if ( ((piece_TypPce.equals("03") && piece_NatPce.equals("01") && ligne_Nature.startsWith("79")) || (piece_TypPce.equals("03") && piece_NatPce.equals("02") && ligne_Nature.startsWith("481"))) &&
+ ( !rattachPiece_exist || !rattachPiece_NatPceOrig.equals("02") || ( Integer.parseInt(bord_ExerBord) != Integer.parseInt(rattachPiece_ExerRat) ) )){
+
+ err = true;
+ erreur = "L'exercice de la pièce de rattachement doit être égal à l'exercice du bordereau et la pièce de rattachement est un mandat";
+
+ if (!rattachPiece_exist){
+ anonodes.add(new Node (ligne_IdLigne_NodeId));
+ }
+ else {
+ if (!rattachPiece_NatPceOrig.equals("02")){
+ anonodes.add(new Node (rattachPiece_NatPceOrig_nodeId));
+ }
+ if (Integer.parseInt(bord_ExerBord) != Integer.parseInt(rattachPiece_ExerRat)){
+ anonodes.add(new Node (rattachPiece_ExerRat_nodeId));
+ }
+
+ }
+ }
+
+ if ( ((piece_TypPce.equals("14") && piece_NatPce.equals("01")) || (piece_TypPce.equals("02") && piece_NatPce.equals("10"))) &&
+ ( !rattachPiece_exist || !rattachPiece_NatPceOrig.equals("01") || ((Integer.parseInt(bord_ExerBord)-1) != Integer.parseInt(rattachPiece_ExerRat)) )){
+
+ err = true;
+ erreur = "L'exercice de la pièce de rattachement doit être égal à l'exercice précédent celui du bordereau et la pièce de rattachement est un titre";
+
+ if (!rattachPiece_exist){
+ anonodes.add(new Node (ligne_IdLigne_NodeId));
+ }
+ else {
+ if (!rattachPiece_NatPceOrig.equals("01")){
+ anonodes.add(new Node (rattachPiece_NatPceOrig_nodeId));
+ }
+ if ((Integer.parseInt(bord_ExerBord)-1) != Integer.parseInt(rattachPiece_ExerRat)){
+ anonodes.add(new Node (rattachPiece_ExerRat_nodeId));
+ }
+ }
+ }
+ }
+
+
+ if (err){
+
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_PIECE_ID, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNE_IDLIGNE, ligne_IdLigne);
+ msg = msg.replaceAll(MSG_ERREUR, erreur);
+ String path="@added:primary-key='"+bord_ExerBord+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Titre "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId","");
+ xslParams.put("mandatId",piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_RECETTE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+
+
+ ano.addAll(anonodes);
+ anos.add(ano);
+
+ }
+
+ return null;
+ }
+ else if (xpath.endsWith(ON_RETURN_ANOMALIES)){
+
+ return anos;
+
+ } else {
+ return null;
+ }
+ }
+
+
+
+ public boolean haveToTest(){
+ String PAR1 = (String)hParams.get("nomencl");
+ return (PAR1.equals("M4") || PAR1.equals("M14") || PAR1.equals("M52") || PAR1.equals("M61") || PAR1.equals("M71"));
+ }
+
+ public void endDocument() throws SAXException {}
+
+ public void characters(char[] ch, int start, int length, String xpath) {}
+
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ public void skippedEntity(String name, String xpath) {}
+
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) {}
+
+}
--- /dev/null
+/*
+ * Copyright
+ * 2010 axYus - www.axyus.com
+ * 2010 C ESCOBAR - christel.escobar@axyus.com
+ *
+ * This file is part of XEMELIOS.
+ *
+ * XEMELIOS is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * XEMELIOS 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
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XEMELIOS; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+package fr.gouv.finances.cp.xemelios.controls.pesv2.rec;
+
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.dgfip.xemelios.controls.core.AbstractUnitControl;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Anomalie;
+import fr.gouv.finances.dgfip.xemelios.controls.core.IdGenerator;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Node;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+/**
+ * Implémente le contrôle N° REC30
+ *
+ * Il concerne les contrôles sur la balise opération.
+ *
+ */
+public class REC30 extends AbstractUnitControl implements ConstantsControlsPESv2 {
+
+ private final static Logger logger = Logger.getLogger(REC30.class);
+ public static final transient String CTRL_ID = "REC30";
+ private Vector<Anomalie> anos = new Vector<Anomalie>();
+ private Hashtable<String, Object> hParams;
+ /**
+ * La balise du document général
+ */
+ private String docId = null;
+ private String nodeId = null;
+ /**
+ * La chaine cible
+ */
+ private static final String FIN_PIECE = "/PES_RecetteAller/Bordereau/Piece/";
+ private static final String LIGNEPCE = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/";
+ private static final String ON_RETURN_ANOMALIES = FIN_PIECE;
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+ private String bord_IdBord = "";
+ private String bord_ExerBord = "";
+ private String bord_TypBord = "";
+ private String piece_IdPce = "";
+ private String piece_TypPce = "";
+ private String piece_NatPce = "";
+ private String ligne_IdLigne = "";
+ private String ligne_Operation = "";
+ private String ligne_Fonction = "";
+ private String ligne_Operation_NodeId = "";
+ private String ligne_IdLigne_NodeId = "";
+ private String ligne_Fonction_NodeId = "";
+ /**
+ * Variables devant être remplacées dans le message-echec
+ */
+ private static final String MSG_BORD_NUM = "#BORD_NUM#";
+ private static final String MSG_PIECE_ID = "#PIECE_IDPCE#";
+ private static final String MSG_LIGNE_IDLIGNE = "#LIGNE_IDLIGNE#";
+ private static final String MSG_LIGNE_OPE = "#LIGNE_OPE#";
+ private static final String MSG_ERREUR = "#ERREUR#";
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses uniquement
+ */
+ private static final String CHEMIN_BLOCBORDEREAU = "/PES_RecetteAller/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_PIECE = "/PES_RecetteAller/Bordereau/Piece";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/PES_RecetteAller/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/PES_RecetteAller/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/PES_RecetteAller/Bordereau/BlocBordereau/TypBord/";
+ private static final String CHEMIN_BLOCPIECE_NATPIECE = "/PES_RecetteAller/Bordereau/Piece/BlocPiece/NatPce/";
+ private static final String CHEMIN_BLOCPIECE_IDPIECE = "/PES_RecetteAller/Bordereau/Piece/BlocPiece/IdPce/";
+ private static final String CHEMIN_BLOCPIECE_TYPPIECE = "/PES_RecetteAller/Bordereau/Piece/BlocPiece/TypPce/";
+ private static final String CHEMIN_BLOCLIGNEPIECE = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/";
+ private static final String CHEMIN_INFOLIGNEPIECE_IDLIGNE = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/IdLigne/";
+ private static final String CHEMIN_INFOLIGNEPIECE_OPERATION = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/Operation/";
+ private static final String CHEMIN_INFOLIGNEPIECE_FONCTION = "/PES_RecetteAller/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/Fonction/";
+
+ public void startDocument() throws SAXException {
+ logger.info("In " + CTRL_ID);
+ }
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+ public void startElement(String uri, String localName, String qName, Attributes atts, String xpath) {
+
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ bord_ExerBord = bord_IdBord = bord_TypBord = "";
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_ExerBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_PIECE)) {
+ if (anos != null) {
+ anos = new Vector<Anomalie>();
+ }
+ piece_IdPce = piece_TypPce = piece_NatPce = "";
+ }
+ if (xpath.endsWith(CHEMIN_BLOCPIECE_IDPIECE)) {
+ piece_IdPce = atts.getValue("V");
+ anos.clear();
+ }
+ if (xpath.endsWith(CHEMIN_BLOCPIECE_TYPPIECE)) {
+ piece_TypPce = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCPIECE_NATPIECE)) {
+ piece_NatPce = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCLIGNEPIECE)) {
+ ligne_IdLigne = ligne_Operation = ligne_Fonction = "";
+ ligne_Operation_NodeId = ligne_IdLigne_NodeId = ligne_Fonction_NodeId = "";
+ }
+ if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE_IDLIGNE)) {
+ ligne_IdLigne = atts.getValue("V");
+ ligne_IdLigne_NodeId = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE_OPERATION)) {
+ ligne_Operation = atts.getValue("V");
+ ligne_Operation_NodeId = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE_FONCTION)) {
+ ligne_Fonction = atts.getValue("V");
+ ligne_Fonction_NodeId = atts.getValue("ano:node-id");
+ }
+
+ }
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+ Vector<Node> anonodes = new Vector<Node>();
+ String PAR1 = (String) hParams.get("nomencl");
+ String PAR2 = (String) hParams.get("typnomencl");
+
+ if (xpath.endsWith(LIGNEPCE)
+ && !(PAR1.equals("M14") && piece_TypPce.equals("03") && piece_NatPce.equals("18"))) {
+ boolean err = false;
+//2
+ if (haveToTest(PAR1) && (piece_TypPce.equals("03") || piece_TypPce.equals("04")) && (PAR2.equals("Nature") || PAR2.equals("Nature-ref-fonct"))) {
+
+ if (piece_NatPce.equals("01") && !ligne_Operation.equals("6") && !ligne_Operation.equals("042") && !ligne_Operation.equals("7") && !ligne_Operation.equals("043")) {
+// 2.1.1
+ err = true;
+ anonodes.add(new Node(ligne_Operation_NodeId));
+ } else if (piece_NatPce.equals("02") && !ligne_Operation.equals("4") && !ligne_Operation.equals("040") && !ligne_Operation.equals("5") && !ligne_Operation.equals("041")) {
+// 2.1.2
+ err = true;
+ anonodes.add(new Node(ligne_Operation_NodeId));
+ }
+ }
+// 2.2
+ if (haveToTest(PAR1) && (piece_TypPce.equals("03") || piece_TypPce.equals("04")) && PAR2.equals("Fonction")) {
+
+ if (piece_NatPce.equals("01") && !(
+ ligne_Fonction.equals("934") ||
+ ligne_Fonction.startsWith("905") ||
+ ligne_Fonction.startsWith("915") ||
+ ligne_Fonction.startsWith("935")
+ )) {
+// 2.2.1
+ err = true;
+ anonodes.add(new Node(ligne_Fonction_NodeId));
+ }
+ if (piece_NatPce.equals("02") && !(ligne_Fonction.equals("914") ||ligne_Fonction.equals("910"))) {
+// 2.2.2
+ err = true;
+ anonodes.add(new Node(ligne_Fonction_NodeId));
+ }
+ }
+//3
+ if (PAR1.equals("M71") && (piece_TypPce.equals("03") || piece_TypPce.equals("04")) && (PAR2.equals("Nature") || PAR2.equals("Nature-ref-fonct"))) {
+// 3.1
+ if (piece_NatPce.equals("01") && !ligne_Operation.equals("6") && !ligne_Operation.equals("042")) {
+ err = true;
+ anonodes.add(new Node(ligne_Operation_NodeId));
+ }
+ if (piece_NatPce.equals("02") && !ligne_Operation.equals("4") && !ligne_Operation.equals("040") && !ligne_Operation.equals("5") && !ligne_Operation.equals("041")) {
+ err = true;
+ anonodes.add(new Node(ligne_Operation_NodeId));
+ }
+ }
+// 3.2
+ if (PAR1.equals("M71") && (piece_TypPce.equals("03") || piece_TypPce.equals("04")) && PAR2.equals("Fonction")) {
+
+ if (piece_NatPce.equals("01") && !(
+ ligne_Fonction.equals("934") ||
+ ligne_Fonction.startsWith("905") ||
+ ligne_Fonction.startsWith("915") ||
+ ligne_Fonction.startsWith("935")
+ )) {
+// 3.2.1
+ err = true;
+ anonodes.add(new Node(ligne_Fonction_NodeId));
+ } else if (piece_NatPce.equals("02") && !(
+ ligne_Fonction.equals("914") || ligne_Fonction.equals("910"))) {
+// 3.2.2
+ err = true;
+ anonodes.add(new Node(ligne_Operation_NodeId));
+ anonodes.add(new Node(ligne_Fonction_NodeId));
+ }
+ }
+//4
+ if (PAR1.equals("M52") && (PAR2.equals("Nature") || PAR2.equals("Nature-ref-fonct"))) {
+// 4.1
+ if (piece_NatPce.equals("01") && !ligne_Operation.equals("1") && !ligne_Operation.equals("010") && !ligne_Operation.equals("2") && !ligne_Operation.equals("015") && !ligne_Operation.equals("3") && !ligne_Operation.equals("016")) {
+ err = true;
+ anonodes.add(new Node(ligne_Operation_NodeId));
+ }
+ }
+
+ if (PAR1.equals("M52") && PAR2.equals("Fonction")) {
+ if (piece_NatPce.equals("01") && !(
+ ligne_Fonction.startsWith("905") ||
+ ligne_Fonction.startsWith("915") ||
+ ligne_Fonction.startsWith("935"))) {
+// 4.2
+ err = true;
+ anonodes.add(new Node(ligne_Fonction_NodeId));
+ }
+ }
+
+ if (err) {
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ String erreur = "Une opération de chapitre d'ordre doit être renseignée ou le paramètre vote par opération doit être sélectionné";
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_PIECE_ID, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNE_IDLIGNE, ligne_IdLigne);
+ msg = msg.replaceAll(MSG_LIGNE_OPE, ligne_Operation);
+ msg = msg.replaceAll(MSG_ERREUR, erreur);
+ String path = "@added:primary-key='" + bord_ExerBord + "-" + bord_TypBord + "-" + bord_IdBord + "'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau " + bord_IdBord + " Titre " + piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "");
+ xslParams.put("mandatId", piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ BORDEREAU_RECETTE, // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+
+ ano.addAll(anonodes);
+ anos.add(ano);
+ }
+
+ return null;
+
+ } else if (xpath.endsWith(ON_RETURN_ANOMALIES)) {
+
+ return anos;
+
+ } else {
+ return null;
+ }
+ }
+
+ public boolean haveToTest(String nomenclature) {
+ return (!nomenclature.equals("M52") && !nomenclature.equals("M71"));
+ }
+
+ public void endDocument() throws SAXException {
+ }
+
+ public void characters(char[] ch, int start, int length, String xpath) {
+ }
+
+ public void ignorableWhitespace(char[] ch, int start, int length, String xpath) {
+ }
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {
+ }
+
+ public void endPrefixMapping(String prefix, String xpath) {
+ }
+
+ public void processingInstruction(String target, String data, String xpath) {
+ }
+
+ public void skippedEntity(String name, String xpath) {
+ }
+
+ public void setParameters(Hashtable<String, Object> params) {
+ this.hParams = params;
+ }
+
+ public void setDocumentLocator(Locator locator) {
+ }
+}
--- /dev/null
+/*
+ * Copyright
+ * 2009 axYus - www.axyus.com
+ * 2009 C ESCOBAR - christel.escobar@axyus.com
+ *
+ * This file is part of XEMELIOS.
+ *
+ * XEMELIOS is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * XEMELIOS 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
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XEMELIOS; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+package fr.gouv.finances.cp.xemelios.controls.pesv2.sig;
+
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.cp.xemelios.controls.AbstractUnitControl;
+import fr.gouv.finances.cp.xemelios.controls.Anomalie;
+import fr.gouv.finances.cp.xemelios.controls.IdGenerator;
+import fr.gouv.finances.cp.xemelios.controls.Node;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+/**
+ * Implémente le contrôle N° SIG1
+ * Il consiste à vérifier la règle fonctionnelle suivante :
+ *
+ * En cas de dématérialisation complète avec présence de signature électronique, le flux doit contenir la présence du caractère dématérialisé de l'information.
+ *
+ * Il est fait ainsi :
+ *
+ * - Si la balise InfoDematarialisee est égale à 1 ou true, vérifier que la balise <ds:Signature> (niveau signature globale ou bordereau) est présente
+ * - Si la balise InfoDematarialisee est égale à 0 ou false, vérifier que la balise <ds:Signature> (niveau signature globale ou bordereau) est absente
+ *
+ */
+public class SIG1 extends AbstractUnitControl implements ConstantsControlsPESv2 {
+ private final static Logger logger = Logger.getLogger(SIG1.class);
+ public static final transient String CTRL_ID = "SIG1";
+ private Hashtable<String,Object> hParams;
+
+ /**
+ * La balise du document général
+ */
+ private String docId = null;
+ private String bord_nodeId = null;
+
+
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+
+ private String bord_Exer = "";
+ private String bord_IdBord = "";
+ private String bord_TypBord = "";
+ private String piece_IdPce = "";
+
+ private String enTete_infodemat = "";
+ private String enTete_infodemat_nodeId = "";
+ private boolean signature_isPresent = false;
+
+
+ /**
+ * Variables devant être remplacées dans le message
+ */
+ private static final String MSG_ERREUR = "#MSG_ERREUR#";
+
+
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses et les Recettes
+ */
+ private static final String CHEMIN_BLOCBORDEREAU = "/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/Bordereau/BlocBordereau/TypBord/";
+ private static final String CHEMIN_SIGNATURE = "/Signature/";
+ private static final String CHEMIN_FIN = "PES_Aller/";
+
+ /**
+ * Selon que l'on est en RECETTE ou DEPENSE, le xpath est différent
+ */
+ private static final String RECETTE = "PES_RecetteAller";
+ private static final String DEPENSE = "PES_DepenseAller";
+ private boolean depense = false;
+
+ private static String CHEMIN_BLOCPIECE = "";
+ private static String CHEMIN_BLOCPIECE_IDPCE = "";
+ private static String CHEMIN_ENTETE = "";
+ private static String CHEMIN_ENTETE_INFODEMATERIALISEE = "";
+ private static final String R_CHEMIN_BLOCPIECE = "/Bordereau/Piece/BlocPiece/";
+ private static final String R_CHEMIN_BLOCPIECE_IDPCE = "/Bordereau/Piece/BlocPiece/IdPce/";
+ private static final String R_CHEMIN_ENTETE = "/EnTeteRecette/";
+ private static final String R_CHEMIN_ENTETE_INFODEMATERIALISEE = "/EnTeteRecette/InfoDematerialisee/";
+ private static final String D_CHEMIN_BLOCPIECE = "/Bordereau/Piece/BlocPiece/";
+ private static final String D_CHEMIN_BLOCPIECE_IDPCE = "/Bordereau/Piece/BlocPiece/InfoPce/IdPce/";
+ private static final String D_CHEMIN_ENTETE = "/EnTeteDepense/";
+ private static final String D_CHEMIN_ENTETE_INFODEMATERIALISEE = "/EnTeteDepense/InfoDematerialisee/";
+
+
+
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+ }
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+ public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+
+ // RECETTE ou DEPENSE
+ if (xpath.indexOf(DEPENSE)!=-1) {
+ depense = true;
+ CHEMIN_BLOCPIECE = D_CHEMIN_BLOCPIECE;
+ CHEMIN_BLOCPIECE_IDPCE = D_CHEMIN_BLOCPIECE_IDPCE;
+ CHEMIN_ENTETE = D_CHEMIN_ENTETE;
+ CHEMIN_ENTETE_INFODEMATERIALISEE = D_CHEMIN_ENTETE_INFODEMATERIALISEE;
+ }
+ if (xpath.indexOf(RECETTE)!=-1) {
+ depense = false;
+ CHEMIN_BLOCPIECE = R_CHEMIN_BLOCPIECE;
+ CHEMIN_BLOCPIECE_IDPCE = R_CHEMIN_BLOCPIECE_IDPCE;
+ CHEMIN_ENTETE = R_CHEMIN_ENTETE;
+ CHEMIN_ENTETE_INFODEMATERIALISEE = R_CHEMIN_ENTETE_INFODEMATERIALISEE;
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ bord_Exer = bord_IdBord = bord_TypBord = "";
+ bord_nodeId = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_Exer = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCPIECE)) {
+ piece_IdPce = "";
+ }
+ if (xpath.endsWith(CHEMIN_BLOCPIECE_IDPCE)) {
+ piece_IdPce = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_ENTETE)) {
+ enTete_infodemat = enTete_infodemat_nodeId = "";
+ }
+ if (xpath.endsWith(CHEMIN_ENTETE_INFODEMATERIALISEE)) {
+ enTete_infodemat = atts.getValue("V");
+ enTete_infodemat_nodeId = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_SIGNATURE)) {
+ signature_isPresent = true;
+ }
+ }
+
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+ boolean err = false;
+ String erreur = "";
+ if (xpath.endsWith(CHEMIN_FIN)){
+
+ if ((enTete_infodemat.equals("1") || enTete_infodemat.equals("true")) && signature_isPresent == false) {
+ err = true;
+ erreur = "La balise InfoDematerialisee est valorisée de telle façon que vous attestez la présence d'une signature électronique, hors elle est absente (signature globale ou individuelle)";
+ }
+ if ((enTete_infodemat.equals("0") || enTete_infodemat.equals("false")) && signature_isPresent == true) {
+ err = true;
+ erreur = "Le flux est signé électroniquement mais la balise InfoDematerialisee n'est pas correctement valorisée";
+ }
+ if (err){
+ Vector<Anomalie> ano1 = new Vector<Anomalie>();
+
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_ERREUR, erreur);
+
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "");
+ xslParams.put("mandatId", piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[0],
+ (depense?BORDEREAU_DEPENSE:BORDEREAU_RECETTE), // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path,
+ xslParams);
+ ano.addNode(new Node(enTete_infodemat_nodeId));
+ ano1.add(ano);
+ return ano1;
+ } else {
+ return null;
+ }
+ } else {
+ return null;
+ }
+ }
+
+ public void endDocument() throws SAXException {}
+
+ public void characters(char[] ch, int start, int length, String xpath) {}
+
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ public void skippedEntity(String name, String xpath) {}
+
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) {}
+}
--- /dev/null
+/*
+ * Copyright
+ * 2009 axYus - www.axyus.com
+ * 2009 C ESCOBAR - christel.escobar@axyus.com
+ *
+ * This file is part of XEMELIOS.
+ *
+ * XEMELIOS is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * XEMELIOS 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
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XEMELIOS; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+package fr.gouv.finances.cp.xemelios.controls.pesv2.sig;
+
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.dgfip.xemelios.controls.core.AbstractUnitControl;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Anomalie;
+import fr.gouv.finances.dgfip.xemelios.controls.core.IdGenerator;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Node;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+/**
+ * Implémente le contrôle N° SIG1
+ * Il consiste à vérifier la règle fonctionnelle suivante :
+ *
+ * En cas de dématérialisation complète avec présence de signature électronique, le flux doit contenir la présence du caractère dématérialisé de l'information.
+ *
+ * Il est fait ainsi :
+ *
+ * - Si la balise InfoDematarialisee est égale à 1 ou true, vérifier que la balise <ds:Signature> (niveau signature globale ou bordereau) est présente
+ * - Si la balise InfoDematarialisee est égale à 0 ou false, vérifier que la balise <ds:Signature> (niveau signature globale ou bordereau) est absente
+ *
+ */
+public class SIG1 extends AbstractUnitControl implements ConstantsControlsPESv2 {
+ private final static Logger logger = Logger.getLogger(SIG1.class);
+ public static final transient String CTRL_ID = "SIG1";
+ private Hashtable<String,Object> hParams;
+
+ /**
+ * La balise du document général
+ */
+ private String docId = null;
+ private String bord_nodeId = null;
+
+
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+
+ private String bord_Exer = "";
+ private String bord_IdBord = "";
+ private String bord_TypBord = "";
+ private String piece_IdPce = "";
+
+ private String enTete_infodemat = null;
+ private String enTete_infodemat_nodeId = "";
+ private boolean signature_isPresent = false;
+
+
+ /**
+ * Variables devant être remplacées dans le message
+ */
+ private static final String MSG_ERREUR = "#MSG_ERREUR#";
+
+
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses et les Recettes
+ */
+ private static final String CHEMIN_BLOCBORDEREAU = "/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/Bordereau/BlocBordereau/TypBord/";
+ private static final String CHEMIN_SIGNATURE = "/Signature/";
+ private static final String CHEMIN_FIN = "PES_Aller/";
+
+ /**
+ * Selon que l'on est en RECETTE ou DEPENSE, le xpath est différent
+ */
+ private static final String RECETTE = "PES_RecetteAller";
+ private static final String DEPENSE = "PES_DepenseAller";
+ private boolean depense = false;
+
+ private static String CHEMIN_BLOCPIECE = "";
+ private static String CHEMIN_BLOCPIECE_IDPCE = "";
+ private static String CHEMIN_ENTETE = "";
+ private static String CHEMIN_ENTETE_INFODEMATERIALISEE = "";
+ private static final String R_CHEMIN_BLOCPIECE = "/Bordereau/Piece/BlocPiece/";
+ private static final String R_CHEMIN_BLOCPIECE_IDPCE = "/Bordereau/Piece/BlocPiece/IdPce/";
+ private static final String R_CHEMIN_ENTETE = "/EnTeteRecette/";
+ private static final String R_CHEMIN_ENTETE_INFODEMATERIALISEE = "/EnTeteRecette/InfoDematerialisee/";
+ private static final String D_CHEMIN_BLOCPIECE = "/Bordereau/Piece/BlocPiece/";
+ private static final String D_CHEMIN_BLOCPIECE_IDPCE = "/Bordereau/Piece/BlocPiece/InfoPce/IdPce/";
+ private static final String D_CHEMIN_ENTETE = "/EnTeteDepense/";
+ private static final String D_CHEMIN_ENTETE_INFODEMATERIALISEE = "/EnTeteDepense/InfoDematerialisee/";
+
+
+
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+ }
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+ public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+
+ // RECETTE ou DEPENSE
+ if (xpath.indexOf(DEPENSE)!=-1) {
+ depense = true;
+ CHEMIN_BLOCPIECE = D_CHEMIN_BLOCPIECE;
+ CHEMIN_BLOCPIECE_IDPCE = D_CHEMIN_BLOCPIECE_IDPCE;
+ CHEMIN_ENTETE = D_CHEMIN_ENTETE;
+ CHEMIN_ENTETE_INFODEMATERIALISEE = D_CHEMIN_ENTETE_INFODEMATERIALISEE;
+ }
+ if (xpath.indexOf(RECETTE)!=-1) {
+ depense = false;
+ CHEMIN_BLOCPIECE = R_CHEMIN_BLOCPIECE;
+ CHEMIN_BLOCPIECE_IDPCE = R_CHEMIN_BLOCPIECE_IDPCE;
+ CHEMIN_ENTETE = R_CHEMIN_ENTETE;
+ CHEMIN_ENTETE_INFODEMATERIALISEE = R_CHEMIN_ENTETE_INFODEMATERIALISEE;
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ bord_Exer = bord_IdBord = bord_TypBord = "";
+ bord_nodeId = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_Exer = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCPIECE)) {
+ piece_IdPce = "";
+ }
+ if (xpath.endsWith(CHEMIN_BLOCPIECE_IDPCE)) {
+ piece_IdPce = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_ENTETE)) {
+ enTete_infodemat = enTete_infodemat_nodeId = null;
+ }
+ if (xpath.endsWith(CHEMIN_ENTETE_INFODEMATERIALISEE)) {
+ enTete_infodemat = atts.getValue("V");
+ enTete_infodemat_nodeId = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_SIGNATURE)) {
+ signature_isPresent = true;
+ }
+ }
+
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+ boolean err = false;
+ String erreur = "";
+ if (xpath.endsWith(CHEMIN_FIN)){
+
+ if (("1".equals(enTete_infodemat) || "true".equals(enTete_infodemat) || "yes".equals(enTete_infodemat)) && signature_isPresent == false) {
+ err = true;
+ erreur = "La balise InfoDematerialisee est valorisée de telle façon que vous attestez la présence d'une signature électronique, hors elle est absente (signature globale ou individuelle)";
+ } else if (("0".equals(enTete_infodemat) || "false".equals(enTete_infodemat) || "no".equals(enTete_infodemat)) && signature_isPresent == true) {
+ err = true;
+ erreur = "Le flux est signé électroniquement mais la balise InfoDematerialisee n'est pas correctement valorisée";
+ } else if(signature_isPresent && enTete_infodemat==null) {
+ err = true;
+ erreur = "Le flux est signé électroniquement mais la balise InfoDematerialisee n?est pas présente";
+ }
+ if (err){
+ Vector<Anomalie> ano1 = new Vector<Anomalie>();
+
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_ERREUR, erreur);
+
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "");
+ xslParams.put("mandatId", piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[0],
+ (depense?BORDEREAU_DEPENSE:BORDEREAU_RECETTE), // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path,
+ xslParams);
+ if(enTete_infodemat_nodeId!=null)
+ ano.addNode(new Node(enTete_infodemat_nodeId));
+ ano1.add(ano);
+ return ano1;
+ } else {
+ return null;
+ }
+ } else {
+ return null;
+ }
+ }
+
+ public void endDocument() throws SAXException {}
+
+ public void characters(char[] ch, int start, int length, String xpath) {}
+
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ public void skippedEntity(String name, String xpath) {}
+
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) {}
+}
--- /dev/null
+/*
+ * Copyright
+ * 2009 axYus - www.axyus.com
+ * 2009 C ESCOBAR - christel.escobar@axyus.com
+ *
+ * This file is part of XEMELIOS.
+ *
+ * XEMELIOS is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * XEMELIOS 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
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XEMELIOS; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+package fr.gouv.finances.cp.xemelios.controls.pesv2.sig;
+
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.dgfip.xemelios.controls.core.AbstractUnitControl;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Anomalie;
+import fr.gouv.finances.dgfip.xemelios.controls.core.IdGenerator;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Node;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+/**
+ * Implémente le contrôle N° SIG2
+ * Il consiste à vérifier la règle fonctionnelle suivante :
+ *
+ * Le montant du cumul annuel est obligatoire en cas de dématérialisation complète (avec signature électronique).
+ *
+ * Il est fait ainsi :
+ *
+ * - Si la balise InfoDematarialisee est égale à 1 ou true, vérifier que la balise BlocBordereau/MtCumulAnnuel est présente
+ *
+ */
+public class SIG2 extends AbstractUnitControl implements ConstantsControlsPESv2 {
+ private final static Logger logger = Logger.getLogger(SIG2.class);
+ public static final transient String CTRL_ID = "SIG2";
+ private Hashtable<String,Object> hParams;
+
+ /**
+ * La balise du document général
+ */
+ private String docId = null;
+ private String bord_nodeId = null;
+
+ /**
+ * Variables devant être remplacées dans le message
+ */
+ private static final String MSG_BORD_NUM = "#BORD_NUM#";
+ private static final String MSG_BORD_EXER = "#BORD_EXER#";
+ private static final String MSG_BORD_TYPBORD = "#BORD_TYPBORD#";
+
+
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+
+ private String bord_Exer = "";
+ private String bord_IdBord = "";
+ private String bord_TypBord = "";
+ private String piece_IdPce = "";
+
+ private String enTete_infodemat = "";
+ private boolean mtCumul_isPresent = false;
+
+ private static final String ON_RETURN_ANOMALIES = "/Bordereau/";
+
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses et les Recettes
+ */
+ private static final String CHEMIN_BLOCBORDEREAU = "/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/Bordereau/BlocBordereau/TypBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_MTCUMUL = "/Bordereau/BlocBordereau/MtCumulAnnuel/";
+
+
+ /**
+ * Selon que l'on est en RECETTE ou DEPENSE, le xpath est différent
+ */
+ private static final String RECETTE = "PES_RecetteAller";
+ private static final String DEPENSE = "PES_DepenseAller";
+ private boolean depense = false;
+
+ private static String CHEMIN_BLOCPIECE = "";
+ private static String CHEMIN_BLOCPIECE_IDPCE = "";
+ private static String CHEMIN_ENTETE = "";
+ private static String CHEMIN_ENTETE_INFODEMATERIALISEE = "";
+ private static final String R_CHEMIN_BLOCPIECE = "/Bordereau/Piece/BlocPiece/";
+ private static final String R_CHEMIN_BLOCPIECE_IDPCE = "/Bordereau/Piece/BlocPiece/IdPce/";
+ private static final String R_CHEMIN_ENTETE = "/EnTeteRecette/";
+ private static final String R_CHEMIN_ENTETE_INFODEMATERIALISEE = "/EnTeteRecette/InfoDematerialisee/";
+ private static final String D_CHEMIN_BLOCPIECE = "/Bordereau/Piece/BlocPiece/";
+ private static final String D_CHEMIN_BLOCPIECE_IDPCE = "/Bordereau/Piece/BlocPiece/InfoPce/IdPce/";
+ private static final String D_CHEMIN_ENTETE = "/EnTeteDepense/";
+ private static final String D_CHEMIN_ENTETE_INFODEMATERIALISEE = "/EnTeteDepense/InfoDematerialisee/";
+
+
+
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+ }
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+ public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+
+ // RECETTE ou DEPENSE
+ if (xpath.indexOf(DEPENSE)!=-1) {
+ depense = true;
+ CHEMIN_BLOCPIECE = D_CHEMIN_BLOCPIECE;
+ CHEMIN_BLOCPIECE_IDPCE = D_CHEMIN_BLOCPIECE_IDPCE;
+ CHEMIN_ENTETE = D_CHEMIN_ENTETE;
+ CHEMIN_ENTETE_INFODEMATERIALISEE = D_CHEMIN_ENTETE_INFODEMATERIALISEE;
+ }
+ if (xpath.indexOf(RECETTE)!=-1) {
+ depense = false;
+ CHEMIN_BLOCPIECE = R_CHEMIN_BLOCPIECE;
+ CHEMIN_BLOCPIECE_IDPCE = R_CHEMIN_BLOCPIECE_IDPCE;
+ CHEMIN_ENTETE = R_CHEMIN_ENTETE;
+ CHEMIN_ENTETE_INFODEMATERIALISEE = R_CHEMIN_ENTETE_INFODEMATERIALISEE;
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ bord_Exer = bord_IdBord = bord_TypBord = "";
+ mtCumul_isPresent = false;
+ bord_nodeId = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_Exer = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_MTCUMUL)) {
+ mtCumul_isPresent = true;
+ }
+ if (xpath.endsWith(CHEMIN_BLOCPIECE)) {
+ piece_IdPce = "";
+ }
+ if (xpath.endsWith(CHEMIN_BLOCPIECE_IDPCE)) {
+ piece_IdPce = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_ENTETE)) {
+ enTete_infodemat = "";
+ }
+ if (xpath.endsWith(CHEMIN_ENTETE_INFODEMATERIALISEE)) {
+ enTete_infodemat = atts.getValue("V");
+ }
+
+ }
+
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+
+ if (xpath.endsWith(ON_RETURN_ANOMALIES)){
+
+ if ((enTete_infodemat.equals("true") || enTete_infodemat.equals("1")) && mtCumul_isPresent == false){
+
+ Vector<Anomalie> ano1 = new Vector<Anomalie>();
+
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_Exer);
+ msg = msg.replaceAll(MSG_BORD_TYPBORD, bord_TypBord);
+
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "Bordereau");
+ //xslParams.put("mandatId", piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ (depense?BORDEREAU_DEPENSE:BORDEREAU_RECETTE), // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path,
+ xslParams);
+ ano.addNode(new Node(bord_nodeId));
+ ano1.add(ano);
+ return ano1;
+ } else {
+ return null;
+ }
+ } else {
+ return null;
+ }
+ }
+
+ public void endDocument() throws SAXException {}
+
+ public void characters(char[] ch, int start, int length, String xpath) {}
+
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ public void skippedEntity(String name, String xpath) {}
+
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) {}
+}
--- /dev/null
+/*
+ * Copyright
+ * 2009 axYus - www.axyus.com
+ * 2009 C ESCOBAR - christel.escobar@axyus.com
+ *
+ * This file is part of XEMELIOS.
+ *
+ * XEMELIOS is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * XEMELIOS 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
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XEMELIOS; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+package fr.gouv.finances.cp.xemelios.controls.pesv2.sig;
+
+import java.util.Hashtable;
+import java.util.StringTokenizer;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.dgfip.xemelios.controls.core.AbstractUnitControl;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Anomalie;
+import fr.gouv.finances.dgfip.xemelios.controls.core.IdGenerator;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Node;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+import fr.gouv.finances.dgfip.utils.xml.certs.Certificate509;
+
+/**
+ * Implémente le contrôle N° SIG3
+ *
+ * Il consiste à vérifier la règle fonctionnelle suivante :
+ *
+ * Les éléments de la signature électronique suivants sont obligatoires en cas de signature électronique (niveau global ou bordereau) et doivent être valorisés correctement :
+ * - Nom du signataire
+ * - Qualité (Rôle) du signataire
+ * - Date de la signature
+ * - Cumul des montants annuels
+ * (Sévérité Bloquant)
+ *
+ * Les éléments de la signature électronique suivants sont souhaitables en cas de signature électronique (niveau global ou bordereau) et doivent être valorisés correctement :
+ * - Adresse du signataire
+ * (Sévérité Non Bloquant)
+ *
+ *
+ *
+ * Il est fait ainsi :
+ *
+ * Si présence d\92une balise <ds :Signature> (niveau global ou bordereau), vérifier la présence des éléments obligatoires de signature électronique suivants :
+ * - <Nom du signataire> (encrypté dans ds:Signature/ds:KeyInfo/ds:X509Data/ds:X509Certificate)
+ * - /ds:Signature/ds:Object/xad:QualifyingProperties/xad:SignedProperties/xad:SignedSignatureProperties/xad:SignerRole/xad:ClaimedRoles/xad:ClaimedRole
+ * - /ds:Signature/ds:Object/xad:QualifyingProperties/xad:SignedProperties /xad:SigningTime>
+ * - < Bordereau /BlocBordereau/MtCumulAnnuel >
+ * (Sévérité Bloquante)
+ *
+ * Si présence d\92une balise <ds :Signature> (niveau global ou bordereau), vérifier la présence des éléments facultatifs suivants :
+ * - Adresse signature ds:Signature/ds:Object/xad:QualifyingProperties/xad:SignedProperties/xad:SignedSignatureProperties/xad:SignatureProductionPlace
+ * (Sévérité Non Bloquant)
+ *
+ */
+
+public class SIG3 extends AbstractUnitControl implements ConstantsControlsPESv2 {
+ private final static Logger logger = Logger.getLogger(SIG3.class);
+ public static final transient String CTRL_ID = "SIG3";
+ private Hashtable<String,Object> hParams;
+
+ /**
+ * La balise du document général
+ */
+ private String docId = null;
+ private String bord_nodeId = null;
+
+ /**
+ * Variables devant être remplacées dans le message
+ */
+ private static final String MSG_ERREUR = "#MSG_ERREUR#";
+
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+
+ private String bord_Exer = "";
+ private String bord_IdBord = "";
+ private String bord_TypBord = "";
+ private String piece_IdPce = "";
+
+ private String sign_nom = "";
+ private String sign_qualite = "";
+ private String sign_date = "";
+ private String bord_mtCumul = "";
+ private Vector<String> montantsCumul = new Vector<String>();
+ private String sign_adresse = "";
+ private boolean sign_isPresent = false;
+ private boolean sign_nom_isPresent = false;
+ private boolean sign_date_isPresent = false;
+ private boolean sign_adresse_isPresent = false;
+ private boolean sign_qualite_isPresent = false;
+
+ StringBuffer nom;
+ StringBuffer qualite;
+ StringBuffer date;
+ StringBuffer adresse;
+
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses et les Recettes
+ */
+ private static final String CHEMIN_BLOCBORDEREAU = "/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/Bordereau/BlocBordereau/TypBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_MTCUMUL = "/Bordereau/BlocBordereau/MtCumulAnnuel/";
+ private static final String CHEMIN_SIGNATURE = "/Signature/";
+ private static final String CHEMIN_SIGNATURE_NOM = "/Signature/KeyInfo/X509Data/X509Certificate/";
+ private static final String CHEMIN_SIGNATURE_QUALITE = "/Signature/Object/QualifyingProperties/SignedProperties/SignedSignatureProperties/SignerRole/ClaimedRoles/ClaimedRole/";
+ private static final String CHEMIN_SIGNATURE_DATE = "/Signature/Object/QualifyingProperties/SignedProperties/SignedSignatureProperties/SigningTime/";
+ private static final String CHEMIN_SIGNATURE_ADRESSE = "/Signature/Object/QualifyingProperties/SignedProperties/SignedSignatureProperties/SignatureProductionPlace/City/";
+
+ private static final String CHEMIN_SIGNATURE_BORD = "/Bordereau/Signature/";
+ private static final String CHEMIN_SIGNATURE_GLOBALE = "PES_Aller/Signature/";
+
+ /**
+ * Selon que l'on est en RECETTE ou DEPENSE, le xpath est différent
+ */
+ private static final String RECETTE = "PES_RecetteAller";
+ private static final String DEPENSE = "PES_DepenseAller";
+ private boolean depense = false;
+
+ private static String CHEMIN_BLOCPIECE = "";
+ private static String CHEMIN_BLOCPIECE_IDPCE = "";
+ private static final String R_CHEMIN_BLOCPIECE = "/Bordereau/Piece/BlocPiece/";
+ private static final String R_CHEMIN_BLOCPIECE_IDPCE = "/Bordereau/Piece/BlocPiece/IdPce/";
+ private static final String D_CHEMIN_BLOCPIECE = "/Bordereau/Piece/BlocPiece/";
+ private static final String D_CHEMIN_BLOCPIECE_IDPCE = "/Bordereau/Piece/BlocPiece/InfoPce/IdPce/";
+
+
+
+
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+ }
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+ public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+
+ // RECETTE ou DEPENSE
+ if (xpath.indexOf(DEPENSE)!=-1) {
+ depense = true;
+ CHEMIN_BLOCPIECE = D_CHEMIN_BLOCPIECE;
+ CHEMIN_BLOCPIECE_IDPCE = D_CHEMIN_BLOCPIECE_IDPCE;
+
+ }
+ if (xpath.indexOf(RECETTE)!=-1) {
+ depense = false;
+ CHEMIN_BLOCPIECE = R_CHEMIN_BLOCPIECE;
+ CHEMIN_BLOCPIECE_IDPCE = R_CHEMIN_BLOCPIECE_IDPCE;
+
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ bord_Exer = bord_IdBord = bord_TypBord = bord_mtCumul = "";
+ bord_nodeId = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_Exer = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_MTCUMUL)) {
+ bord_mtCumul = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCPIECE)) {
+ piece_IdPce = "";
+ }
+ if (xpath.endsWith(CHEMIN_BLOCPIECE_IDPCE)) {
+ piece_IdPce = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_SIGNATURE)) {
+ sign_isPresent = true;
+ sign_adresse = sign_date = sign_nom = sign_qualite = "";
+ nom = new StringBuffer();
+ qualite = new StringBuffer();
+ date = new StringBuffer();
+ adresse = new StringBuffer();
+ }
+ if (xpath.endsWith(CHEMIN_SIGNATURE_NOM)) {
+ sign_nom_isPresent = true;
+ }
+ if (xpath.endsWith(CHEMIN_SIGNATURE_QUALITE)) {
+ sign_qualite_isPresent = true;
+ }
+ if (xpath.endsWith(CHEMIN_SIGNATURE_DATE)) {
+ sign_date_isPresent = true;
+ }
+ if (xpath.endsWith(CHEMIN_SIGNATURE_ADRESSE)) {
+ sign_adresse_isPresent = true;
+ }
+
+ }
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+
+ String erreur = "";
+ Vector<Anomalie> ano1 = new Vector<Anomalie>();
+ String message = "";
+
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ montantsCumul.add(bord_mtCumul);
+ }
+ if (xpath.endsWith(CHEMIN_SIGNATURE_NOM)) {
+ sign_nom_isPresent = false;
+ }
+ if (xpath.endsWith(CHEMIN_SIGNATURE_QUALITE)) {
+ sign_qualite_isPresent = false;
+ }
+ if (xpath.endsWith(CHEMIN_SIGNATURE_DATE)) {
+ sign_date_isPresent = false;
+ }
+ if (xpath.endsWith(CHEMIN_SIGNATURE_ADRESSE)) {
+ sign_adresse_isPresent = false;
+ }
+
+
+ // signature niveau bordereau
+ if (sign_isPresent && xpath.endsWith(CHEMIN_SIGNATURE_BORD)){
+ String nomSansEspaces = nom.toString().replace(" ", "").replace("\n", "").replace("\t", "");
+
+ if (nomSansEspaces.length()>0)
+ sign_nom = Certificate509.extractCN(nomSansEspaces);
+ if (qualite.length()>0)
+ sign_qualite = qualite.toString();
+ if (date.length()>0)
+ sign_date = date.toString();
+ if (adresse.length()>0)
+ sign_adresse = adresse.toString();
+
+
+ if (sign_nom.equals("") || sign_nom.equals(" ") || sign_nom.equals("0")
+ || sign_qualite.equals("") || sign_qualite.equals(" ") || sign_qualite.equals("0")
+ || sign_date.equals("") || sign_date.equals(" ") || sign_date.equals("0")
+ || bord_mtCumul.equals("") || bord_mtCumul.equals(" ") || bord_mtCumul.equals("0")){
+
+ erreur = "Absence des éléments obligatoires relatifs à la signature électronique : Nom du signataire, Qualité du signataire, date de la signature, cumul des montants annuels (BLOQUANT)";
+
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_ERREUR, erreur);
+ message = "Bordereau n° " + bord_IdBord;
+
+
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "Bordereau");
+ xslParams.put("mandatId", piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ (depense?BORDEREAU_DEPENSE:BORDEREAU_RECETTE), // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ message + " - " + msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path,
+ xslParams);
+ ano.addNode(new Node(bord_nodeId));
+ ano1.add(ano);
+
+ }
+
+ if (sign_adresse.equals("") || sign_adresse.equals(" ") || sign_adresse.equals("0")){
+
+ erreur = "Absence de l'élément relatif suivant : Lieu de la signature électronique (NON BLOQUANT)";
+
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_ERREUR, erreur);
+ message = "Bordereau n° " + bord_IdBord;
+
+
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "Bordereau");
+ xslParams.put("mandatId", piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ (depense?BORDEREAU_DEPENSE:BORDEREAU_RECETTE), // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ message + " - " + msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ "NON BLOQUANT",
+ path,
+ xslParams);
+ ano.addNode(new Node(bord_nodeId));
+ ano1.add(ano);
+ }
+ return ano1;
+
+ }
+
+
+ // signature globale
+ if (sign_isPresent && xpath.endsWith(CHEMIN_SIGNATURE_GLOBALE)){
+ String nomSansEspaces = nom.toString().replace(" ", "").replace("\n", "").replace("\t", "");
+ boolean err = false;
+
+ if (nomSansEspaces.length()>0)
+ sign_nom = Certificate509.extractCN(nomSansEspaces);
+ if (qualite.length()>0)
+ sign_qualite = qualite.toString();
+ if (date.length()>0)
+ sign_date = date.toString();
+ if (adresse.length()>0)
+ sign_adresse = adresse.toString();
+
+
+ for (int i = 0; i < montantsCumul.size(); i++){
+ if (montantsCumul.get(i).equals("") || montantsCumul.get(i).equals(" ") || montantsCumul.get(i).equals("0"))
+ err = true;
+ }
+
+
+ if (sign_nom.equals("") || sign_nom.equals(" ") || sign_nom.equals("0")
+ || sign_qualite.equals("") || sign_qualite.equals(" ") || sign_qualite.equals("0")
+ || sign_date.equals("") || sign_date.equals(" ") || sign_date.equals("0") || err){
+
+ erreur = "Absence des éléments obligatoires relatifs à la signature électronique : Nom du signataire, Qualité du signataire, date de la signature, cumul des montants annuels (BLOQUANT)";
+
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_ERREUR, erreur);
+ message = "Signature globale";
+
+
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "Bordereau");
+ xslParams.put("mandatId", piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ (depense?BORDEREAU_DEPENSE:BORDEREAU_RECETTE), // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ message + " - " + msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path,
+ xslParams);
+ ano.addNode(new Node(bord_nodeId));
+ ano1.add(ano);
+
+ }
+
+ if (sign_adresse.equals("") || sign_adresse.equals(" ") || sign_adresse.equals("0")){
+
+ erreur = "Absence de l'élément relatif suivant : Lieu de la signature électronique (NON BLOQUANT)";
+
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_ERREUR, erreur);
+ message = "Signature globale";
+
+
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "Bordereau");
+ xslParams.put("mandatId", piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ (depense?BORDEREAU_DEPENSE:BORDEREAU_RECETTE), // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ message + " - " + msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ "NON BLOQUANT",
+ path,
+ xslParams);
+ ano.addNode(new Node(bord_nodeId));
+ ano1.add(ano);
+ }
+ return ano1;
+
+ } else {
+ return null;
+ }
+ }
+
+ public void endDocument() throws SAXException {}
+
+ public void characters(char[] ch, int start, int length, String xpath) {
+ if (sign_nom_isPresent)
+ nom.append(new String(ch,start,length));
+ if (sign_qualite_isPresent)
+ qualite.append(new String(ch,start,length));
+ if (sign_date_isPresent)
+ date.append(new String(ch,start,length));
+ if (sign_adresse_isPresent)
+ adresse.append(new String(ch,start,length));
+ }
+
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ public void skippedEntity(String name, String xpath) {}
+
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) {}
+}
--- /dev/null
+/*
+ * Copyright
+ * 2005 axYus - www.axyus.com
+ * 2005 N LE CORRE - nicolas.lecorre@axyus.com
+ * 2009 C ESCOBAR - christel.escobar@axyus.com
+ *
+ * This file is part of XEMELIOS.
+ *
+ * XEMELIOS is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * XEMELIOS 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
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XEMELIOS; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+package fr.gouv.finances.cp.xemelios.controls.pesv2.tie;
+
+import fr.gouv.finances.dgfip.utils.Luhn;
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.cp.xemelios.controls.AbstractUnitControl;
+import fr.gouv.finances.cp.xemelios.controls.Anomalie;
+import fr.gouv.finances.cp.xemelios.controls.IdGenerator;
+import fr.gouv.finances.cp.xemelios.controls.Node;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+/**
+ * Implémente le contrôle N° TIE03
+ * Il consiste à vérifier la règle fonctionnelle suivante :
+ * L\92identifiant national du tiers doit être valide (contrôle de clé).
+ * Le type d\92identifiant (NatIdTiers) ne doit pas être indiqué si l\92identifiant (IdTiers) n\92est pas valorisé.
+ *
+ * Il est fait ainsi :
+ * 1- Lorsqu'on lit un élément BlocBordereau :
+ * - on vide BlocBordereau/Exer/@V, BlocBordereau/IdBord/@V, BlocBordereau/Typbord/@V.
+ * - on stocke BlocBordereau/Exer/@V, BlocBordereau/IdBord/@V, BlocBordereau/Typbord/@V.
+ * 2- Lorsqu'on lit un élément BlocPiece :
+ * - on vide BlocPiece/IdPce/@V.
+ * - on stocke BlocPiece/IdPce/@V.
+ * 3- Lorsqu'on lit un élément InfoLignePiece :
+ * - on vide InfoLignePiece/IdLigne/@V.
+ * - on stocke InfoLignePiece/IdLigne/@V.
+ * 4- Lorsqu'on lit un élément InfoTiers/ :
+ * - on vide InfoTiers/NatIdTiers/@V, InfoTiers/IdTiers/@V
+ * - on stocke InfoTiers/NatIdTiers/@V, InfoTiers/IdTiers/@V
+ * 5- Lorsqu'on lit la fin de l'élement InfoTiers/ :
+ * - on vérifie que NatIdTiers n'est rempli que si IdTiers l'est.
+ * - on vérifie que si NatIdTiers vaut 01 ou 02, IdTiers est bien un N° de SIRET ou SIREN valide en suivant l'algorithme de Luhn.
+ * - si NatIdTiers vaut 02, anomalie non bloquante
+ * - si NatIdTiers vaut 01 et idTiers n'est pas un SIRET, anomalie non bloquante
+ */
+public class TIE03 extends AbstractUnitControl implements ConstantsControlsPESv2 {
+ private final static Logger logger = Logger.getLogger(TIE03.class);
+ public static final transient String CTRL_ID = "TIE03";
+ private Vector<Anomalie> anos = null;
+ private Hashtable<String,Object> hParams;
+
+ /**
+ * La balise du document général
+ */
+ private String docId = null;
+
+ private String nodeId = null;
+
+ private static final String ON_RETURN_ANOMALIES = "/Bordereau/Piece/";
+
+ /**
+ * SIREN - SIRET
+ */
+ private static final String SIRET = "01";
+ private static final String SIREN = "02";
+
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+ private String bord_Exer = "";
+ private String bord_IdBord = "";
+ private String bord_TypBord = "";
+ private String piece_IdPce = "";
+ private String ligne_IdLigne = "";
+ private String natIdTiers = "";
+ private String idTiers = "";
+ private String natIdTiers_nodeId = "";
+ private String idTiers_nodeId = "";
+
+ /**
+ * Variables devant être remplacées dans le message
+ */
+ private static final String MSG_BORD_NUM = "#BORD_NUM#";
+ private static final String MSG_BORD_EXER = "#BORD_EXER#";
+ private static final String MSG_BORD_TYPBORD = "#BORD_TYPBORD#";
+ private static final String MSG_PIECE_IDPCE = "#PIECE_IDPCE#";
+ private static final String MSG_LIGNE_IDLIGNE = "#LIGNE_IDLIGNE#";
+ private static final String MSG_TIERS_IDTIERS = "#TIERS_ID_TIERS#";
+ private static final String MSG_TIERS_NATIDTIERS = "#TIERS_NAT_ID_TIERS#";
+
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses et les Recettes
+ */
+ private static final String CHEMIN_BLOCBORDEREAU = "/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/Bordereau/BlocBordereau/TypBord/";
+
+ /**
+ * Selon que l'on est en RECETTE ou DEPENSE, le xpath est différent
+ */
+ private static final String RECETTE = "PES_RecetteAller";
+ private static final String DEPENSE = "PES_DepenseAller";
+ private boolean depense = false;
+
+ private static String CHEMIN_BLOCPIECE = "";
+ private static String CHEMIN_BLOCPIECE_IDPCE = "";
+ private static final String R_CHEMIN_BLOCPIECE = "/Bordereau/Piece/BlocPiece/";
+ private static final String R_CHEMIN_BLOCPIECE_IDPCE = "/Bordereau/Piece/BlocPiece/IdPce/";
+ private static final String D_CHEMIN_BLOCPIECE = "/Bordereau/Piece/BlocPiece/";
+ private static final String D_CHEMIN_BLOCPIECE_IDPCE = "/Bordereau/Piece/BlocPiece/InfoPce/IdPce/";
+
+ private static String CHEMIN_INFOLIGNEPIECE = "";
+ private static String CHEMIN_INFOLIGNEPIECE_IDLIGNE = "";
+ private static final String R_CHEMIN_INFOLIGNEPIECE = "/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/";
+ private static final String R_CHEMIN_INFOLIGNEPIECE_IDLIGNE = "/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/IdLigne/";
+ private static final String D_CHEMIN_INFOLIGNEPIECE = "/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/";
+ private static final String D_CHEMIN_INFOLIGNEPIECE_IDLIGNE = "/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/IdLigne/";
+
+
+ private static final String CHEMIN_INFOTIERS = "/Bordereau/Piece/LigneDePiece/Tiers/InfoTiers/";
+ private static final String CHEMIN_INFOTIERS_IDTIERS = "/Bordereau/Piece/LigneDePiece/Tiers/InfoTiers/IdTiers/";
+ private static final String CHEMIN_INFOTIERS_NATIDTIERS = "/Bordereau/Piece/LigneDePiece/Tiers/InfoTiers/NatIdTiers/";
+
+ /**
+ * La fin de l'élément TIERS
+ */
+ private static final String FIN_TIERS = "Tiers";
+
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+ }
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+ public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+ // 0
+ // RECETTE ou DEPENSE
+ if (xpath.indexOf(DEPENSE)!=-1) {
+ depense = true;
+ CHEMIN_BLOCPIECE = D_CHEMIN_BLOCPIECE;
+ CHEMIN_BLOCPIECE_IDPCE = D_CHEMIN_BLOCPIECE_IDPCE;
+ CHEMIN_INFOLIGNEPIECE = D_CHEMIN_INFOLIGNEPIECE;
+ CHEMIN_INFOLIGNEPIECE_IDLIGNE = D_CHEMIN_INFOLIGNEPIECE_IDLIGNE;
+ }
+ if (xpath.indexOf(RECETTE)!=-1) {
+ depense = false;
+ CHEMIN_BLOCPIECE = R_CHEMIN_BLOCPIECE;
+ CHEMIN_BLOCPIECE_IDPCE = R_CHEMIN_BLOCPIECE_IDPCE;
+ CHEMIN_INFOLIGNEPIECE = R_CHEMIN_INFOLIGNEPIECE;
+ CHEMIN_INFOLIGNEPIECE_IDLIGNE = R_CHEMIN_INFOLIGNEPIECE_IDLIGNE;
+ }
+ // 1
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ bord_Exer = bord_IdBord = bord_TypBord = "";
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_Exer = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ }
+
+ // 2
+ if (xpath.endsWith(CHEMIN_BLOCPIECE)) {
+ piece_IdPce = "";
+ anos = new Vector<Anomalie>();
+ }
+ if (xpath.endsWith(CHEMIN_BLOCPIECE_IDPCE)) {
+ piece_IdPce = atts.getValue("V");
+ }
+
+ // 3
+ if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE)) {
+ ligne_IdLigne = "";
+ }
+ if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE_IDLIGNE)) {
+ ligne_IdLigne = atts.getValue("V");
+ }
+
+ // 4
+ if (xpath.endsWith(CHEMIN_INFOTIERS)) {
+ idTiers = natIdTiers = "";
+ idTiers_nodeId = natIdTiers_nodeId = "";
+ nodeId = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_INFOTIERS_IDTIERS)) {
+ idTiers = atts.getValue("V");
+ idTiers_nodeId = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_INFOTIERS_NATIDTIERS)) {
+ natIdTiers = atts.getValue("V");
+ natIdTiers_nodeId = atts.getValue("ano:node-id");
+ }
+ }
+
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+ if(xpath.endsWith(ON_RETURN_ANOMALIES)){
+ return anos;
+ } else if (xpath.endsWith(CHEMIN_INFOTIERS)) {
+ // 5
+ boolean err = false;
+ if ((idTiers!=null && !"".equals(idTiers)) && (natIdTiers==null || "".equals(natIdTiers))) {
+ err = true;
+ }
+ if ((idTiers==null || "".equals(idTiers)) && (natIdTiers!=null && !"".equals(natIdTiers))) {
+ err = true;
+ }
+ if (natIdTiers!=null && (SIREN.equals(natIdTiers) || SIRET.equals(natIdTiers))) {
+ err |= (!Luhn.testLuhnString(idTiers));
+ }
+// erreur bloquante
+ if (err) {
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_Exer);
+ msg = msg.replaceAll(MSG_BORD_TYPBORD, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_IDPCE, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNE_IDLIGNE, ligne_IdLigne);
+ msg = msg.replaceAll(MSG_TIERS_IDTIERS, idTiers);
+ msg = msg.replaceAll(MSG_TIERS_NATIDTIERS, natIdTiers);
+ if (depense) {
+ msg = msg.replaceAll("#MT#", "Mandat");
+ } else {
+ msg = msg.replaceAll("#MT#", "Titre");
+ }
+
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "");
+ xslParams.put("mandatId", piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ (depense?BORDEREAU_DEPENSE:BORDEREAU_RECETTE), // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path,
+ xslParams);
+ ano.addNode(new Node(nodeId));
+ ano.addNode(new Node(idTiers_nodeId));
+ ano.addNode(new Node(natIdTiers_nodeId));
+ anos.add(ano);
+ }
+
+// erreur non bloquante
+ if (SIREN.equals(natIdTiers)) {
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ String severity = "NON BLOQUANT";
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_Exer);
+ msg = msg.replaceAll(MSG_BORD_TYPBORD, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_IDPCE, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNE_IDLIGNE, ligne_IdLigne);
+ msg = msg.replaceAll(MSG_TIERS_IDTIERS, idTiers);
+ msg = msg.replaceAll(MSG_TIERS_NATIDTIERS, natIdTiers);
+ if (depense) {
+ msg = msg.replaceAll("#MT#", "Mandat");
+ } else {
+ msg = msg.replaceAll("#MT#", "Titre");
+ }
+
+ msg += " : HELIOS ne gère pas les n° SIREN pour le rapprochement des tiers (NON BLOQUANT)";
+
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "");
+ xslParams.put("mandatId", piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ (depense?BORDEREAU_DEPENSE:BORDEREAU_RECETTE), // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ severity,
+ path,
+ xslParams);
+ ano.addNode(new Node(nodeId));
+ ano.addNode(new Node(natIdTiers_nodeId));
+ anos.add(ano);
+ }
+
+// erreur non bloquante
+ if (SIRET.equals(natIdTiers) && (idTiers.length()!=9 || !Luhn.testLuhnString(idTiers))) {
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ String severity = "NON BLOQUANT";
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_Exer);
+ msg = msg.replaceAll(MSG_BORD_TYPBORD, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_IDPCE, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNE_IDLIGNE, ligne_IdLigne);
+ msg = msg.replaceAll(MSG_TIERS_IDTIERS, idTiers);
+ msg = msg.replaceAll(MSG_TIERS_NATIDTIERS, natIdTiers);
+ if (depense) {
+ msg = msg.replaceAll("#MT#", "Mandat");
+ } else {
+ msg = msg.replaceAll("#MT#", "Titre");
+ }
+
+ msg += " : L'identifiant national proposé n'est pas un SIRET (NON BLOQUANT)";
+
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "");
+ xslParams.put("mandatId", piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ (depense?BORDEREAU_DEPENSE:BORDEREAU_RECETTE), // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ severity,
+ path,
+ xslParams);
+ ano.addNode(new Node(nodeId));
+ ano.addNode(new Node(idTiers_nodeId));
+ ano.addNode(new Node(natIdTiers_nodeId));
+ anos.add(ano);
+ }
+
+ return null;
+ } else {
+ return null;
+ }
+ }
+
+
+ public void endDocument() throws SAXException {}
+
+ public void characters(char[] ch, int start, int length, String xpath) {}
+
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ public void skippedEntity(String name, String xpath) {}
+
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) {}
+}
--- /dev/null
+/*
+ * Copyright
+ * 2005 axYus - www.axyus.com
+ * 2005 N LE CORRE - nicolas.lecorre@axyus.com
+ *
+ * This file is part of XEMELIOS.
+ *
+ * XEMELIOS is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * XEMELIOS 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
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XEMELIOS; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+package fr.gouv.finances.cp.xemelios.controls.pesv2.tie;
+
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.dgfip.xemelios.controls.core.AbstractUnitControl;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Anomalie;
+import fr.gouv.finances.dgfip.xemelios.controls.core.IdGenerator;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Node;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+/**
+ * Implémente le contrôle N° TIE01
+ * Il consiste à vérifier la règle fonctionnelle suivante :
+ * A chaque ligne de pièce doit correspondre au moins un tiers.
+ * Les informations nécessaires sont les suivantes :
+ * - Le type d'adresse (TypAdr doit être valorisé à 01 ou 02),
+ * - Nom,
+ * - Adresse (Adr2 est obligatoire, Adre1 et Adr3 sont facultatives), le code postal, la ville et le code pays (dans le cas d\92une adresse à l\92étranger),
+ * - De plus s'il s\92agit d\92une personne physique, la civilité et le prénom doivent être obligatoirement indiqués,
+ * - S\92il s\92agit d\92une personne morale, la civilité et le prénom ne doivent pas être indiqués.
+ * Il est fait ainsi :
+ * 1- Lorsqu'on lit un élément BlocBordereau :
+ * - on vide BlocBordereau/Exer/@V, BlocBordereau/IdBord/@V, BlocBordereau/Typbord/@V.
+ * - on stocke BlocBordereau/Exer/@V, BlocBordereau/IdBord/@V, BlocBordereau/Typbord/@V.
+ * 2- Lorsqu'on lit un élément BlocPiece :
+ * - on vide BlocPiece/IdPce/@V, BlocPiece/TypPce/@V.
+ * - on stocke BlocPiece/IdPce/@V, BlocPiece/TypPce/@V.
+ * 3- Lorsqu'on lit un élément InfoLignePiece :
+ * - on valorise à false le booleen infoTiersExists et addresseExists.
+ * - on vide InfoLignePiece/IdLigne/@V.
+ * - on stocke InfoLignePiece/IdLigne/@V.
+ * 4- Lorsqu'on lit un élément InfoTiers/ :
+ * - on valorise à vrai le booleen InfoTiersExists.
+ * - on stocke InfoTiers/Nom/@V, InfoTiers/Prenom/@V, InfoTiers/Civilite/@V et InfoTiers/CatTiers/@V.
+ * 5- Lorsqu'on lit un élément Adresse/ :
+ * - on valorise à vrai le booleen adresseExists.
+ * - on stocke Adresse/TypAdr/@V, Adresse/Adr2/@V, Adresse/CP/@V et Adresse/Ville/@V.
+ * 6- Lorsqu'on lit une fin de LigneDePiece :
+ * - Si domaine DEPENSE ou (RECETTE et TypPce vaut 06, 07 ou 14) :
+ * - InfoTiers/ doit exister
+ * - Adresse/TypAdr/@V vaut 1 ou 2
+ * - InfoTiers/Nom/@V doit exister et ne pas valoir ""
+ * - Adresse/ doit exister
+ * - Adresse/Adr2/@V, Adresse/CP/@V et Adresse/Ville/@V sont obligatoires
+ * - Si InfoTiers/CatTiers/@V = 01
+ * InfoTiers/Prenom/@V, InfoTiers/Civilite/@V sont obligatoires
+ * Sinon
+ * InfoTiers/Prenom/@V, InfoTiers/Civilite/@V ne doivent pas être renseignés
+ */
+public class TIE01 extends AbstractUnitControl implements ConstantsControlsPESv2 {
+ private final static Logger logger = Logger.getLogger(TIE01.class);
+ public static final transient String CTRL_ID = "TIE01";
+ private Vector<Anomalie> anos = null;
+ private Hashtable<String,Object> hParams;
+
+ /**
+ * La balise du document général
+ */
+ private String docId = null;
+ private String ligne_nodeId = null;
+ private String tiers_nodeId = null;
+
+ /**
+ * La chaine cible
+ */
+ private static final String ON_RETURN_ANOMALIES = "Piece";
+ private static final String FIN_LIGNE_PIECE = "LigneDePiece";
+
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+ private boolean depense = false;
+ private String bord_Exer = "";
+ private String bord_IdBord = "";
+ private String bord_TypBord = "";
+ private String piece_IdPce = "";
+ private String piece_typPce = "";
+ private String ligne_IdLigne = "";
+ private String tiers_nom = "";
+ private String tiers_prenom = "";
+ private String tiers_civilite = "";
+ private String tiers_catTiers = "";
+ private String addr_typAdr = "";
+ private String addr_adr2 = "";
+ private String addr_CP = "";
+ private String addr_ville = "";
+ private boolean infoTiersExists = false;
+ private boolean adresseExists = false;
+
+ /**
+ * Variables devant être remplacées dans le message
+ */
+ private static final String MSG_BORD_NUM = "#BORD_NUM#";
+ private static final String MSG_BORD_EXER = "#BORD_EXER#";
+ private static final String MSG_BORD_TYPBORD = "#BORD_TYPBORD#";
+ private static final String MSG_PIECE_IDPCE = "#PIECE_IDPCE#";
+ private static final String MSG_LIGNE_IDLIGNE = "#LIGNE_IDLIGNE#";
+
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses et les Recettes
+ */
+ private static final String CHEMIN_BLOCBORDEREAU = "/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/Bordereau/BlocBordereau/TypBord/";
+
+ /**
+ * Selon que l'on est en RECETTE ou DEPENSE, le xpath est différent
+ */
+ private static final String RECETTE = "PES_RecetteAller";
+ private static final String DEPENSE = "PES_DepenseAller";
+
+ private static final String CHEMIN_PIECE = "/Bordereau/Piece/";
+ private static String CHEMIN_BLOCPIECE = "";
+ private static String CHEMIN_BLOCPIECE_IDPCE = "";
+ private static String CHEMIN_BLOCPIECE_TYPPCE = "";
+ private static final String R_CHEMIN_BLOCPIECE = "/Bordereau/Piece/BlocPiece/";
+ private static final String R_CHEMIN_BLOCPIECE_IDPCE = "/Bordereau/Piece/BlocPiece/IdPce/";
+ private static final String R_CHEMIN_BLOCPIECE_TYPPCE = "/Bordereau/Piece/BlocPiece/TypPce/";
+ private static final String D_CHEMIN_BLOCPIECE = "/Bordereau/Piece/BlocPiece/";
+ private static final String D_CHEMIN_BLOCPIECE_IDPCE = "/Bordereau/Piece/BlocPiece/InfoPce/IdPce/";
+ private static final String D_CHEMIN_BLOCPIECE_TYPPCE = "/Bordereau/Piece/BlocPiece/InfoPce/TypPce/";
+
+ private static String CHEMIN_INFOLIGNEPIECE = "";
+ private static String CHEMIN_INFOLIGNEPIECE_IDLIGNE = "";
+ private static final String R_CHEMIN_INFOLIGNEPIECE = "/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/";
+ private static final String R_CHEMIN_INFOLIGNEPIECE_IDLIGNE = "/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/IdLigne/";
+ private static final String D_CHEMIN_INFOLIGNEPIECE = "/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/";
+ private static final String D_CHEMIN_INFOLIGNEPIECE_IDLIGNE = "/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/IdLigne/";
+
+ private static final String CHEMIN_INFOTIERS = "/Bordereau/Piece/LigneDePiece/Tiers/InfoTiers/";
+ private static final String CHEMIN_INFOTIERS_NOM = "/Bordereau/Piece/LigneDePiece/Tiers/InfoTiers/Nom/";
+ private static final String CHEMIN_INFOTIERS_PRENOM = "/Bordereau/Piece/LigneDePiece/Tiers/InfoTiers/Prenom/";
+ private static final String CHEMIN_INFOTIERS_CIVILITE = "/Bordereau/Piece/LigneDePiece/Tiers/InfoTiers/Civilite/";
+ private static final String CHEMIN_INFOTIERS_CATTIERS = "/Bordereau/Piece/LigneDePiece/Tiers/InfoTiers/CatTiers/";
+
+ private static final String CHEMIN_ADRESSE = "/Bordereau/Piece/LigneDePiece/Tiers/Adresse/";
+ private static final String CHEMIN_ADRESSE_TYPADR = "/Bordereau/Piece/LigneDePiece/Tiers/Adresse/TypAdr/";
+ private static final String CHEMIN_ADRESSE_ADR2 = "/Bordereau/Piece/LigneDePiece/Tiers/Adresse/Adr2/";
+ private static final String CHEMIN_ADRESSE_CP = "/Bordereau/Piece/LigneDePiece/Tiers/Adresse/CP/";
+ private static final String CHEMIN_ADRESSE_VILLE = "/Bordereau/Piece/LigneDePiece/Tiers/Adresse/Ville/";
+
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+ }
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+ public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+ // 0
+ // RECETTE ou DEPENSE
+ if (xpath.indexOf(DEPENSE)!=-1) {
+ depense = true;
+ CHEMIN_BLOCPIECE = D_CHEMIN_BLOCPIECE;
+ CHEMIN_BLOCPIECE_IDPCE = D_CHEMIN_BLOCPIECE_IDPCE;
+ CHEMIN_BLOCPIECE_TYPPCE = D_CHEMIN_BLOCPIECE_TYPPCE;
+ CHEMIN_INFOLIGNEPIECE = D_CHEMIN_INFOLIGNEPIECE;
+ CHEMIN_INFOLIGNEPIECE_IDLIGNE = D_CHEMIN_INFOLIGNEPIECE_IDLIGNE;
+ }
+ if (xpath.indexOf(RECETTE)!=-1) {
+ depense = false;
+ CHEMIN_BLOCPIECE = R_CHEMIN_BLOCPIECE;
+ CHEMIN_BLOCPIECE_IDPCE = R_CHEMIN_BLOCPIECE_IDPCE;
+ CHEMIN_BLOCPIECE_TYPPCE = R_CHEMIN_BLOCPIECE_TYPPCE;
+ CHEMIN_INFOLIGNEPIECE = R_CHEMIN_INFOLIGNEPIECE;
+ CHEMIN_INFOLIGNEPIECE_IDLIGNE = R_CHEMIN_INFOLIGNEPIECE_IDLIGNE;
+ }
+ // 1
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ bord_Exer = bord_IdBord = bord_TypBord = "";
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_Exer = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ }
+
+ // 2
+ if (xpath.endsWith(CHEMIN_BLOCPIECE)) {
+ piece_IdPce = ligne_nodeId = "";
+ anos = new Vector<Anomalie>();
+ }
+ if (xpath.endsWith(CHEMIN_BLOCPIECE_IDPCE)) {
+ piece_IdPce = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCPIECE_TYPPCE)) {
+ piece_typPce = atts.getValue("V");
+ }
+
+ // 3
+ if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE)) {
+ ligne_IdLigne = "";
+ ligne_nodeId = atts.getValue("ano:node-id");
+ tiers_nodeId = null;
+ infoTiersExists = adresseExists = false;
+ }
+ if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE_IDLIGNE)) {
+ ligne_IdLigne = atts.getValue("V");
+ }
+
+ // 4
+ if (xpath.endsWith(CHEMIN_INFOTIERS)) {
+ infoTiersExists = true;
+ tiers_nom = tiers_prenom = tiers_civilite = tiers_catTiers = "";
+ tiers_nodeId = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_INFOTIERS_NOM)) {
+ tiers_nom = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_INFOTIERS_PRENOM)) {
+ tiers_prenom = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_INFOTIERS_CIVILITE)) {
+ tiers_civilite = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_INFOTIERS_CATTIERS)) {
+ tiers_catTiers = atts.getValue("V");
+ }
+
+ // 5
+ if (xpath.endsWith(CHEMIN_ADRESSE)) {
+ adresseExists = true;
+ addr_typAdr = addr_adr2 = addr_CP = addr_ville = "";
+ }
+ if (xpath.endsWith(CHEMIN_ADRESSE_TYPADR)) {
+ addr_typAdr = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_ADRESSE_ADR2)) {
+ addr_adr2 = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_ADRESSE_CP)) {
+ addr_CP = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_ADRESSE_VILLE)) {
+ addr_ville = atts.getValue("V");
+ }
+ }
+
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+ if(ON_RETURN_ANOMALIES.equals(localName)){
+ return anos;
+ // 6
+ } else if (FIN_LIGNE_PIECE.equals(localName)) {
+ boolean err = false;
+ if (depense || (!depense && (!"06".equals(piece_typPce)&&!"07".equals(piece_typPce)&&!"14".equals(piece_typPce)))) {
+ if (!infoTiersExists) {
+ err = true;
+ } else if (!"1".equals(addr_typAdr) && !"2".equals(addr_typAdr)) {
+ err = true;
+ } else if ("".equals(tiers_nom)) {
+ err = true;
+ } else if (!adresseExists) {
+ err = true;
+ } else if ("".equals(addr_adr2) || "".equals(addr_CP) || "".equals(addr_ville)) {
+ err = true;
+ } else if ("01".equals(tiers_catTiers) && ("".equals(tiers_prenom) || "".equals(tiers_civilite))) {
+ err = true;
+ } else if (!"01".equals(tiers_catTiers) && (!"".equals(tiers_prenom) || !"".equals(tiers_civilite))) {
+ err = true;
+ }
+ }
+
+ if (err) {
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_Exer);
+ msg = msg.replaceAll(MSG_BORD_TYPBORD, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_IDPCE, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNE_IDLIGNE, ligne_IdLigne);
+ if (depense) {
+ msg = msg.replaceAll("#MT#", "Mandat");
+ } else {
+ msg = msg.replaceAll("#MT#", "Titre");
+ }
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "");
+ xslParams.put("mandatId", piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ (depense?BORDEREAU_DEPENSE:BORDEREAU_RECETTE), // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path,
+ xslParams);
+ ano.addNode(new Node((tiers_nodeId!=null?tiers_nodeId:ligne_nodeId)));
+ anos.add(ano);
+ }
+ return null;
+ } else {
+ return null;
+ }
+ }
+
+ public void endDocument() throws SAXException {}
+
+ public void characters(char[] ch, int start, int length, String xpath) {}
+
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ public void skippedEntity(String name, String xpath) {}
+
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) {}
+}
--- /dev/null
+/*
+ * Copyright
+ * 2005 axYus - www.axyus.com
+ * 2005 N LE CORRE - nicolas.lecorre@axyus.com
+ *
+ * This file is part of XEMELIOS.
+ *
+ * XEMELIOS is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * XEMELIOS 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
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XEMELIOS; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+package fr.gouv.finances.cp.xemelios.controls.pesv2.tie;
+
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.dgfip.xemelios.controls.core.AbstractUnitControl;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Anomalie;
+import fr.gouv.finances.dgfip.xemelios.controls.core.IdGenerator;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Node;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+/**
+ * Implémente le contrôle N° TIE02
+ * Il consiste à vérifier la règle fonctionnelle suivante :
+ * Le Tiers/Nom[@V] en majuscule ne doit pas commencer par "DIVERS".
+ * Il est fait ainsi :
+ * 1- Lorsqu'on lit un élément BlocBordereau :
+ * - on vide BlocBordereau/Exer/@V, BlocBordereau/IdBord/@V, BlocBordereau/Typbord/@V.
+ * - on stocke BlocBordereau/Exer/@V, BlocBordereau/IdBord/@V, BlocBordereau/Typbord/@V.
+ * 2- Lorsqu'on lit un élément BlocPiece :
+ * - on vide BlocPiece/IdPce/@V.
+ * - on stocke BlocPiece/IdPce/@V.
+ * 3- Lorsqu'on lit un élément InfoLignePiece :
+ * - on vide InfoLignePiece/IdLigne/@V.
+ * - on stocke InfoLignePiece/IdLigne/@V.
+ * 4- Lorsqu'on lit un élément InfoTiers/Nom/ :
+ * - on lit InfoTiers/Nom/@V et on le compare à "DIVERS"
+ */
+public class TIE02 extends AbstractUnitControl implements ConstantsControlsPESv2 {
+ private final static Logger logger = Logger.getLogger(TIE02.class);
+ public static final transient String CTRL_ID = "TIE02";
+ private Vector<Anomalie> anos = null;
+ private Hashtable<String,Object> hParams;
+
+ /**
+ * La balise du document général
+ */
+ private String docId = null;
+
+ /**
+ * La chaine cible
+ */
+ private static final String ON_RETURN_ANOMALIES = "Piece";
+ private static final String DIVERS = "DIVERS";
+
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+ private String bord_Exer = "";
+ private String bord_IdBord = "";
+ private String bord_TypBord = "";
+ private String piece_IdPce = "";
+ private String ligne_IdLigne = "";
+
+ /**
+ * Variables devant être remplacées dans le message
+ */
+ private static final String MSG_BORD_NUM = "#BORD_NUM#";
+ private static final String MSG_BORD_EXER = "#BORD_EXER#";
+ private static final String MSG_BORD_TYPBORD = "#BORD_TYPBORD#";
+ private static final String MSG_PIECE_IDPCE = "#PIECE_IDPCE#";
+ private static final String MSG_LIGNE_IDLIGNE = "#LIGNE_IDLIGNE#";
+
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses et les Recettes
+ */
+ private static final String CHEMIN_BLOCBORDEREAU = "/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/Bordereau/BlocBordereau/TypBord/";
+
+ /**
+ * Selon que l'on est en RECETTE ou DEPENSE, le xpath est différent
+ */
+ private static final String RECETTE = "PES_RecetteAller";
+ private static final String DEPENSE = "PES_DepenseAller";
+ private boolean depense = false;
+
+ private static final String CHEMIN_PIECE = "/Bordereau/Piece/";
+ private static String CHEMIN_BLOCPIECE = "";
+ private static String CHEMIN_BLOCPIECE_IDPCE = "";
+ private static final String R_CHEMIN_BLOCPIECE = "/Bordereau/Piece/BlocPiece/";
+ private static final String R_CHEMIN_BLOCPIECE_IDPCE = "/Bordereau/Piece/BlocPiece/IdPce/";
+ private static final String D_CHEMIN_BLOCPIECE = "/Bordereau/Piece/BlocPiece/";
+ private static final String D_CHEMIN_BLOCPIECE_IDPCE = "/Bordereau/Piece/BlocPiece/InfoPce/IdPce/";
+
+ private static String CHEMIN_INFOLIGNEPIECE = "";
+ private static String CHEMIN_INFOLIGNEPIECE_IDLIGNE = "";
+ private static final String R_CHEMIN_INFOLIGNEPIECE = "/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/";
+ private static final String R_CHEMIN_INFOLIGNEPIECE_IDLIGNE = "/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/IdLigne/";
+ private static final String D_CHEMIN_INFOLIGNEPIECE = "/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/";
+ private static final String D_CHEMIN_INFOLIGNEPIECE_IDLIGNE = "/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/IdLigne/";
+
+ private static final String CHEMIN_INFOTIERS = "/Bordereau/Piece/LigneDePiece/Tiers/InfoTiers/";
+ private static final String CHEMIN_INFOTIERS_NOM = "/Bordereau/Piece/LigneDePiece/Tiers/InfoTiers/Nom/";
+
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+ }
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+ public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+ // 0
+ // RECETTE ou DEPENSE
+ if (xpath.indexOf(DEPENSE)!=-1) {
+ depense = true;
+ CHEMIN_BLOCPIECE = D_CHEMIN_BLOCPIECE;
+ CHEMIN_BLOCPIECE_IDPCE = D_CHEMIN_BLOCPIECE_IDPCE;
+ CHEMIN_INFOLIGNEPIECE = D_CHEMIN_INFOLIGNEPIECE;
+ CHEMIN_INFOLIGNEPIECE_IDLIGNE = D_CHEMIN_INFOLIGNEPIECE_IDLIGNE;
+ }
+ if (xpath.indexOf(RECETTE)!=-1) {
+ depense = false;
+ CHEMIN_BLOCPIECE = R_CHEMIN_BLOCPIECE;
+ CHEMIN_BLOCPIECE_IDPCE = R_CHEMIN_BLOCPIECE_IDPCE;
+ CHEMIN_INFOLIGNEPIECE = R_CHEMIN_INFOLIGNEPIECE;
+ CHEMIN_INFOLIGNEPIECE_IDLIGNE = R_CHEMIN_INFOLIGNEPIECE_IDLIGNE;
+ }
+ // 1
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ bord_Exer = bord_IdBord = bord_TypBord = "";
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_Exer = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ }
+
+ // 2
+ if (xpath.endsWith(CHEMIN_BLOCPIECE)) {
+ piece_IdPce = "";
+ anos = new Vector<Anomalie>();
+ }
+ if (xpath.endsWith(CHEMIN_BLOCPIECE_IDPCE)) {
+ piece_IdPce = atts.getValue("V");
+ }
+
+ // 3
+ if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE)) {
+ ligne_IdLigne = "";
+ }
+ if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE_IDLIGNE)) {
+ ligne_IdLigne = atts.getValue("V");
+ }
+
+ // 4
+ if (xpath.endsWith(CHEMIN_INFOTIERS_NOM)) {
+ String tmp = atts.getValue("V");
+ if (tmp!=null) {
+ if (tmp.toUpperCase().startsWith(DIVERS)) {
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_Exer);
+ msg = msg.replaceAll(MSG_BORD_TYPBORD, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_IDPCE, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNE_IDLIGNE, ligne_IdLigne);
+ if (depense) {
+ msg = msg.replaceAll("#MT#", "Mandat");
+ } else {
+ msg = msg.replaceAll("#MT#", "Titre");
+ }
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "");
+ xslParams.put("mandatId", piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ (depense?BORDEREAU_DEPENSE:BORDEREAU_RECETTE), // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path, // xpath vers le bordereau sous lequel se trouve l'anomalie
+ xslParams); // paramètres supplémentaires pour accéder à l'élément en anomalie
+ ano.addNode(new Node(atts.getValue("ano:node-id")));
+ anos.add(ano);
+ }
+ }
+ }
+ }
+
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+ if(ON_RETURN_ANOMALIES.equals(localName)){
+ return anos;
+ } else {
+ return null;
+ }
+ }
+
+ public void endDocument() throws SAXException {}
+
+ public void characters(char[] ch, int start, int length, String xpath) {}
+
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ public void skippedEntity(String name, String xpath) {}
+
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) {}
+}
--- /dev/null
+/*
+ * Copyright
+ * 2005 axYus - www.axyus.com
+ * 2005 N LE CORRE - nicolas.lecorre@axyus.com
+ * 2009 C ESCOBAR - christel.escobar@axyus.com
+ *
+ * This file is part of XEMELIOS.
+ *
+ * XEMELIOS is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * XEMELIOS 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
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XEMELIOS; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+package fr.gouv.finances.cp.xemelios.controls.pesv2.tie;
+
+import fr.gouv.finances.dgfip.utils.Luhn;
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.dgfip.xemelios.controls.core.AbstractUnitControl;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Anomalie;
+import fr.gouv.finances.dgfip.xemelios.controls.core.IdGenerator;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Node;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+/**
+ * Implémente le contrôle N° TIE03
+ * Il consiste à vérifier la règle fonctionnelle suivante :
+ * L\92identifiant national du tiers doit être valide (contrôle de clé).
+ * Le type d\92identifiant (NatIdTiers) ne doit pas être indiqué si l\92identifiant (IdTiers) n\92est pas valorisé.
+ *
+ * Il est fait ainsi :
+ * 1- Lorsqu'on lit un élément BlocBordereau :
+ * - on vide BlocBordereau/Exer/@V, BlocBordereau/IdBord/@V, BlocBordereau/Typbord/@V.
+ * - on stocke BlocBordereau/Exer/@V, BlocBordereau/IdBord/@V, BlocBordereau/Typbord/@V.
+ * 2- Lorsqu'on lit un élément BlocPiece :
+ * - on vide BlocPiece/IdPce/@V.
+ * - on stocke BlocPiece/IdPce/@V.
+ * 3- Lorsqu'on lit un élément InfoLignePiece :
+ * - on vide InfoLignePiece/IdLigne/@V.
+ * - on stocke InfoLignePiece/IdLigne/@V.
+ * 4- Lorsqu'on lit un élément InfoTiers/ :
+ * - on vide InfoTiers/NatIdTiers/@V, InfoTiers/IdTiers/@V
+ * - on stocke InfoTiers/NatIdTiers/@V, InfoTiers/IdTiers/@V
+ * 5- Lorsqu'on lit la fin de l'élement InfoTiers/ :
+ * - on vérifie que NatIdTiers n'est rempli que si IdTiers l'est.
+ * - on vérifie que si NatIdTiers vaut 01 ou 02, IdTiers est bien un N° de SIRET ou SIREN valide en suivant l'algorithme de Luhn.
+ * - si NatIdTiers vaut 02, anomalie non bloquante
+ * - si NatIdTiers vaut 01 et idTiers n'est pas un SIRET, anomalie non bloquante
+ */
+public class TIE03 extends AbstractUnitControl implements ConstantsControlsPESv2 {
+ private final static Logger logger = Logger.getLogger(TIE03.class);
+ public static final transient String CTRL_ID = "TIE03";
+ private Vector<Anomalie> anos = null;
+ private Hashtable<String,Object> hParams;
+
+ /**
+ * La balise du document général
+ */
+ private String docId = null;
+
+ private String nodeId = null;
+
+ private static final String ON_RETURN_ANOMALIES = "/Bordereau/Piece/";
+
+ /**
+ * SIREN - SIRET
+ */
+ private static final String SIRET = "01";
+ private static final String SIREN = "02";
+
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+ private String bord_Exer = "";
+ private String bord_IdBord = "";
+ private String bord_TypBord = "";
+ private String piece_IdPce = "";
+ private String ligne_IdLigne = "";
+ private String natIdTiers = "";
+ private String idTiers = "";
+ private String natIdTiers_nodeId = "";
+ private String idTiers_nodeId = "";
+
+ /**
+ * Variables devant être remplacées dans le message
+ */
+ private static final String MSG_BORD_NUM = "#BORD_NUM#";
+ private static final String MSG_BORD_EXER = "#BORD_EXER#";
+ private static final String MSG_BORD_TYPBORD = "#BORD_TYPBORD#";
+ private static final String MSG_PIECE_IDPCE = "#PIECE_IDPCE#";
+ private static final String MSG_LIGNE_IDLIGNE = "#LIGNE_IDLIGNE#";
+ private static final String MSG_TIERS_IDTIERS = "#TIERS_ID_TIERS#";
+ private static final String MSG_TIERS_NATIDTIERS = "#TIERS_NAT_ID_TIERS#";
+
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses et les Recettes
+ */
+ private static final String CHEMIN_BLOCBORDEREAU = "/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/Bordereau/BlocBordereau/TypBord/";
+
+ /**
+ * Selon que l'on est en RECETTE ou DEPENSE, le xpath est différent
+ */
+ private static final String RECETTE = "PES_RecetteAller";
+ private static final String DEPENSE = "PES_DepenseAller";
+ private boolean depense = false;
+
+ private static String CHEMIN_BLOCPIECE = "";
+ private static String CHEMIN_BLOCPIECE_IDPCE = "";
+ private static final String R_CHEMIN_BLOCPIECE = "/Bordereau/Piece/BlocPiece/";
+ private static final String R_CHEMIN_BLOCPIECE_IDPCE = "/Bordereau/Piece/BlocPiece/IdPce/";
+ private static final String D_CHEMIN_BLOCPIECE = "/Bordereau/Piece/BlocPiece/";
+ private static final String D_CHEMIN_BLOCPIECE_IDPCE = "/Bordereau/Piece/BlocPiece/InfoPce/IdPce/";
+
+ private static String CHEMIN_INFOLIGNEPIECE = "";
+ private static String CHEMIN_INFOLIGNEPIECE_IDLIGNE = "";
+ private static final String R_CHEMIN_INFOLIGNEPIECE = "/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/";
+ private static final String R_CHEMIN_INFOLIGNEPIECE_IDLIGNE = "/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/IdLigne/";
+ private static final String D_CHEMIN_INFOLIGNEPIECE = "/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/";
+ private static final String D_CHEMIN_INFOLIGNEPIECE_IDLIGNE = "/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/IdLigne/";
+
+
+ private static final String CHEMIN_INFOTIERS = "/Bordereau/Piece/LigneDePiece/Tiers/InfoTiers/";
+ private static final String CHEMIN_INFOTIERS_IDTIERS = "/Bordereau/Piece/LigneDePiece/Tiers/InfoTiers/IdTiers/";
+ private static final String CHEMIN_INFOTIERS_NATIDTIERS = "/Bordereau/Piece/LigneDePiece/Tiers/InfoTiers/NatIdTiers/";
+
+ /**
+ * La fin de l'élément TIERS
+ */
+ private static final String FIN_TIERS = "Tiers";
+
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+ }
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+ public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+ // 0
+ // RECETTE ou DEPENSE
+ if (xpath.indexOf(DEPENSE)!=-1) {
+ depense = true;
+ CHEMIN_BLOCPIECE = D_CHEMIN_BLOCPIECE;
+ CHEMIN_BLOCPIECE_IDPCE = D_CHEMIN_BLOCPIECE_IDPCE;
+ CHEMIN_INFOLIGNEPIECE = D_CHEMIN_INFOLIGNEPIECE;
+ CHEMIN_INFOLIGNEPIECE_IDLIGNE = D_CHEMIN_INFOLIGNEPIECE_IDLIGNE;
+ }
+ if (xpath.indexOf(RECETTE)!=-1) {
+ depense = false;
+ CHEMIN_BLOCPIECE = R_CHEMIN_BLOCPIECE;
+ CHEMIN_BLOCPIECE_IDPCE = R_CHEMIN_BLOCPIECE_IDPCE;
+ CHEMIN_INFOLIGNEPIECE = R_CHEMIN_INFOLIGNEPIECE;
+ CHEMIN_INFOLIGNEPIECE_IDLIGNE = R_CHEMIN_INFOLIGNEPIECE_IDLIGNE;
+ }
+ // 1
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ bord_Exer = bord_IdBord = bord_TypBord = "";
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_Exer = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ }
+
+ // 2
+ if (xpath.endsWith(CHEMIN_BLOCPIECE)) {
+ piece_IdPce = "";
+ anos = new Vector<Anomalie>();
+ }
+ if (xpath.endsWith(CHEMIN_BLOCPIECE_IDPCE)) {
+ piece_IdPce = atts.getValue("V");
+ }
+
+ // 3
+ if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE)) {
+ ligne_IdLigne = "";
+ }
+ if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE_IDLIGNE)) {
+ ligne_IdLigne = atts.getValue("V");
+ }
+
+ // 4
+ if (xpath.endsWith(CHEMIN_INFOTIERS)) {
+ idTiers = natIdTiers = "";
+ idTiers_nodeId = natIdTiers_nodeId = "";
+ nodeId = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_INFOTIERS_IDTIERS)) {
+ idTiers = atts.getValue("V");
+ idTiers_nodeId = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_INFOTIERS_NATIDTIERS)) {
+ natIdTiers = atts.getValue("V");
+ natIdTiers_nodeId = atts.getValue("ano:node-id");
+ }
+ }
+
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+ if(xpath.endsWith(ON_RETURN_ANOMALIES)){
+ return anos;
+ } else if (xpath.endsWith(CHEMIN_INFOTIERS)) {
+ // 5
+ boolean err = false;
+ if ((idTiers!=null && !"".equals(idTiers)) && (natIdTiers==null || "".equals(natIdTiers))) {
+ err = true;
+ }
+ if ((idTiers==null || "".equals(idTiers)) && (natIdTiers!=null && !"".equals(natIdTiers))) {
+ err = true;
+ }
+ if (natIdTiers!=null && (SIREN.equals(natIdTiers) || SIRET.equals(natIdTiers))) {
+ err = !(Luhn.testLuhnSiren(idTiers) || Luhn.testLuhnSiret(idTiers));
+ }
+// erreur bloquante
+ if (err) {
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_Exer);
+ msg = msg.replaceAll(MSG_BORD_TYPBORD, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_IDPCE, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNE_IDLIGNE, ligne_IdLigne);
+ msg = msg.replaceAll(MSG_TIERS_IDTIERS, idTiers);
+ msg = msg.replaceAll(MSG_TIERS_NATIDTIERS, natIdTiers);
+ if (depense) {
+ msg = msg.replaceAll("#MT#", "Mandat");
+ } else {
+ msg = msg.replaceAll("#MT#", "Titre");
+ }
+
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "");
+ xslParams.put("mandatId", piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ (depense?BORDEREAU_DEPENSE:BORDEREAU_RECETTE), // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path,
+ xslParams);
+ ano.addNode(new Node(nodeId));
+ ano.addNode(new Node(idTiers_nodeId));
+ ano.addNode(new Node(natIdTiers_nodeId));
+ anos.add(ano);
+ }
+
+// erreur non bloquante
+ if (SIREN.equals(natIdTiers)) {
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ String severity = "NON BLOQUANT";
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_Exer);
+ msg = msg.replaceAll(MSG_BORD_TYPBORD, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_IDPCE, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNE_IDLIGNE, ligne_IdLigne);
+ msg = msg.replaceAll(MSG_TIERS_IDTIERS, idTiers);
+ msg = msg.replaceAll(MSG_TIERS_NATIDTIERS, natIdTiers);
+ if (depense) {
+ msg = msg.replaceAll("#MT#", "Mandat");
+ } else {
+ msg = msg.replaceAll("#MT#", "Titre");
+ }
+
+ msg += " : HELIOS ne gère pas les n° SIREN pour le rapprochement des tiers (NON BLOQUANT)";
+
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "");
+ xslParams.put("mandatId", piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ (depense?BORDEREAU_DEPENSE:BORDEREAU_RECETTE), // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ severity,
+ path,
+ xslParams);
+ ano.addNode(new Node(nodeId));
+ ano.addNode(new Node(natIdTiers_nodeId));
+ anos.add(ano);
+ }
+
+// erreur non bloquante
+ if (SIRET.equals(natIdTiers) && !Luhn.testLuhnSiret(idTiers)) {
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ String severity = "NON BLOQUANT";
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_Exer);
+ msg = msg.replaceAll(MSG_BORD_TYPBORD, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_IDPCE, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNE_IDLIGNE, ligne_IdLigne);
+ msg = msg.replaceAll(MSG_TIERS_IDTIERS, idTiers);
+ msg = msg.replaceAll(MSG_TIERS_NATIDTIERS, natIdTiers);
+ if (depense) {
+ msg = msg.replaceAll("#MT#", "Mandat");
+ } else {
+ msg = msg.replaceAll("#MT#", "Titre");
+ }
+
+ msg += " : L'identifiant national proposé n'est pas un SIRET (NON BLOQUANT)";
+
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "");
+ xslParams.put("mandatId", piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ (depense?BORDEREAU_DEPENSE:BORDEREAU_RECETTE), // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ severity,
+ path,
+ xslParams);
+ ano.addNode(new Node(nodeId));
+ ano.addNode(new Node(idTiers_nodeId));
+ ano.addNode(new Node(natIdTiers_nodeId));
+ anos.add(ano);
+ }
+
+ return null;
+ } else {
+ return null;
+ }
+ }
+
+
+ public void endDocument() throws SAXException {}
+
+ public void characters(char[] ch, int start, int length, String xpath) {}
+
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ public void skippedEntity(String name, String xpath) {}
+
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) {}
+}
--- /dev/null
+/*
+ * Copyright
+ * 2005 axYus - www.axyus.com
+ * 2005 N LE CORRE - nicolas.lecorre@axyus.com
+ *
+ * This file is part of XEMELIOS.
+ *
+ * XEMELIOS is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * XEMELIOS 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
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XEMELIOS; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+package fr.gouv.finances.cp.xemelios.controls.pesv2.tie;
+
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.dgfip.xemelios.controls.core.AbstractUnitControl;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Anomalie;
+import fr.gouv.finances.dgfip.xemelios.controls.core.IdGenerator;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Node;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+/**
+ * Implémente le contrôle N° TIE04
+ * Il consiste à vérifier la règle fonctionnelle suivante :
+ * La catégorie juridique du tiers, doit être cohérente avec la nature juridique du tiers.
+ * Il est fait ainsi :
+ * 1- Lorsqu'on lit un élément BlocBordereau :
+ * - on vide BlocBordereau/Exer/@V, BlocBordereau/IdBord/@V, BlocBordereau/Typbord/@V.
+ * - on stocke BlocBordereau/Exer/@V, BlocBordereau/IdBord/@V, BlocBordereau/Typbord/@V.
+ * 2- Lorsqu'on lit un élément BlocPiece :
+ * - on vide BlocPiece/IdPce/@V.
+ * - on stocke BlocPiece/IdPce/@V.
+ * 3- Lorsqu'on lit un élément InfoLignePiece :
+ * - on vide InfoLignePiece/IdLigne/@V.
+ * - on stocke InfoLignePiece/IdLigne/@V.
+ * 4- Lorsqu'on lit un élément InfoTiers/ :
+ * - on lit InfoTiers/CatTiers/@V et InfoTiers/NatJur/@V.
+ * 5- Lorsqu'on lit une fin d'élement InfoTiers :
+ * - on vérifie la cohérence CatTiers / NatJur parmis la liste des couples autorisés.
+ */
+public class TIE04 extends AbstractUnitControl implements ConstantsControlsPESv2 {
+ private final static Logger logger = Logger.getLogger(TIE04.class);
+ public static final transient String CTRL_ID = "TIE04";
+ private Vector<Anomalie> anos = null;
+ private Hashtable<String,Object> hParams;
+
+ /**
+ * la liste des couple CatTiers/NatJur valides
+ */
+ private static Vector<String> listeValide = new Vector<String>();
+
+ /**
+ * La balise du document général
+ */
+ private String docId = null;
+ private String nodeId = null;
+
+ /**
+ * La chaine cible
+ */
+ private static final String ON_RETURN_ANOMALIES = "Piece";
+ private static final String INFO_TIERS = "InfoTiers";
+
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+ private String bord_Exer = "";
+ private String bord_IdBord = "";
+ private String bord_TypBord = "";
+ private String piece_IdPce = "";
+ private String ligne_IdLigne = "";
+ private String tiers_cattiers = "";
+ private String tiers_natjur = "";
+ private String node_id_tiers_cattiers = "";
+ private String node_id_tiers_natjur = "";
+
+ /**
+ * Variables devant être remplacées dans le message
+ */
+ private static final String MSG_BORD_NUM = "#BORD_NUM#";
+ private static final String MSG_BORD_EXER = "#BORD_EXER#";
+ private static final String MSG_BORD_TYPBORD = "#BORD_TYPBORD#";
+ private static final String MSG_PIECE_IDPCE = "#PIECE_IDPCE#";
+ private static final String MSG_LIGNE_IDLIGNE = "#LIGNE_IDLIGNE#";
+ private static final String MSG_TIERS_CATTIERS = "#TIERS_CATTIERS#";
+ private static final String MSG_TIERS_NATJUR = "#TIERS_NATJUR#";
+
+
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses et les Recettes
+ */
+ private static final String CHEMIN_BLOCBORDEREAU = "/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/Bordereau/BlocBordereau/TypBord/";
+
+ /**
+ * Selon que l'on est en RECETTE ou DEPENSE, le xpath est différent
+ */
+ private static final String RECETTE = "PES_RecetteAller";
+ private static final String DEPENSE = "PES_DepenseAller";
+ private boolean depense = false;
+
+ private static final String CHEMIN_PIECE = "/Bordereau/Piece/";
+ private static String CHEMIN_BLOCPIECE = "";
+ private static String CHEMIN_BLOCPIECE_IDPCE = "";
+ private static final String R_CHEMIN_BLOCPIECE = "/Bordereau/Piece/BlocPiece/";
+ private static final String R_CHEMIN_BLOCPIECE_IDPCE = "/Bordereau/Piece/BlocPiece/IdPce/";
+ private static final String D_CHEMIN_BLOCPIECE = "/Bordereau/Piece/BlocPiece/";
+ private static final String D_CHEMIN_BLOCPIECE_IDPCE = "/Bordereau/Piece/BlocPiece/InfoPce/IdPce/";
+
+ private static String CHEMIN_INFOLIGNEPIECE = "";
+ private static String CHEMIN_INFOLIGNEPIECE_IDLIGNE = "";
+ private static final String R_CHEMIN_INFOLIGNEPIECE = "/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/";
+ private static final String R_CHEMIN_INFOLIGNEPIECE_IDLIGNE = "/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/IdLigne/";
+ private static final String D_CHEMIN_INFOLIGNEPIECE = "/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/";
+ private static final String D_CHEMIN_INFOLIGNEPIECE_IDLIGNE = "/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/IdLigne/";
+
+ private static final String CHEMIN_INFOTIERS = "/Bordereau/Piece/LigneDePiece/Tiers/InfoTiers/";
+ private static final String CHEMIN_INFOTIERS_CATTIERS = "/Bordereau/Piece/LigneDePiece/Tiers/InfoTiers/CatTiers/";
+ private static final String CHEMIN_INFOTIERS_NATJUR = "/Bordereau/Piece/LigneDePiece/Tiers/InfoTiers/NatJur/";
+
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+
+ // constitution de la liste des couples CatTiers/NatJur valides
+ listeValide.add(new String("01/01"));listeValide.add(new String("01/02"));
+ listeValide.add(new String("20/07"));listeValide.add(new String("20/08"));
+ listeValide.add(new String("21/09"));
+ listeValide.add(new String("22/09"));
+ listeValide.add(new String("23/09"));
+ listeValide.add(new String("24/09"));
+ listeValide.add(new String("25/09"));
+ listeValide.add(new String("26/09"));
+ listeValide.add(new String("27/09"));
+ listeValide.add(new String("28/08"));
+ listeValide.add(new String("29/10"));
+ listeValide.add(new String("74/04"));
+ listeValide.add(new String("50/03"));listeValide.add(new String("50/06"));
+ listeValide.add(new String("60/04"));
+ listeValide.add(new String("61/04"));
+ listeValide.add(new String("62/04"));
+ listeValide.add(new String("63/04"));listeValide.add(new String("63/11"));
+ listeValide.add(new String("64/04"));
+ listeValide.add(new String("65/04"));listeValide.add(new String("65/05"));
+ listeValide.add(new String("70/05"));
+ listeValide.add(new String("71/05"));
+ listeValide.add(new String("72/04"));
+ listeValide.add(new String("73/05"));
+ }
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+ public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+ // 0
+ // RECETTE ou DEPENSE
+ if (xpath.indexOf(DEPENSE)!=-1) {
+ depense = true;
+ CHEMIN_BLOCPIECE = D_CHEMIN_BLOCPIECE;
+ CHEMIN_BLOCPIECE_IDPCE = D_CHEMIN_BLOCPIECE_IDPCE;
+ CHEMIN_INFOLIGNEPIECE = D_CHEMIN_INFOLIGNEPIECE;
+ CHEMIN_INFOLIGNEPIECE_IDLIGNE = D_CHEMIN_INFOLIGNEPIECE_IDLIGNE;
+ }
+ if (xpath.indexOf(RECETTE)!=-1) {
+ depense = false;
+ CHEMIN_BLOCPIECE = R_CHEMIN_BLOCPIECE;
+ CHEMIN_BLOCPIECE_IDPCE = R_CHEMIN_BLOCPIECE_IDPCE;
+ CHEMIN_INFOLIGNEPIECE = R_CHEMIN_INFOLIGNEPIECE;
+ CHEMIN_INFOLIGNEPIECE_IDLIGNE = R_CHEMIN_INFOLIGNEPIECE_IDLIGNE;
+ }
+ // 1
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ bord_Exer = bord_IdBord = bord_TypBord = "";
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_Exer = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ }
+
+ // 2
+ if (xpath.endsWith(CHEMIN_BLOCPIECE)) {
+ piece_IdPce = "";
+ anos = new Vector<Anomalie>();
+ }
+ if (xpath.endsWith(CHEMIN_BLOCPIECE_IDPCE)) {
+ piece_IdPce = atts.getValue("V");
+ }
+
+ // 3
+ if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE)) {
+ ligne_IdLigne = "";
+ }
+ if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE_IDLIGNE)) {
+ ligne_IdLigne = atts.getValue("V");
+ }
+
+ // 4
+ if (xpath.endsWith(CHEMIN_INFOTIERS)) {
+ tiers_cattiers = tiers_natjur = "";
+ nodeId = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_INFOTIERS_CATTIERS)) {
+ tiers_cattiers = atts.getValue("V");
+ node_id_tiers_cattiers = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_INFOTIERS_NATJUR)) {
+ tiers_natjur = atts.getValue("V");
+ node_id_tiers_natjur = atts.getValue("ano:node-id");
+ }
+ }
+
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+ if(ON_RETURN_ANOMALIES.equals(localName)){
+ return anos;
+ } else if (INFO_TIERS.equals(localName)) {
+ // 5
+ boolean err = !listeValide.contains(tiers_cattiers+"/"+tiers_natjur);
+
+ if (err) {
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_Exer);
+ msg = msg.replaceAll(MSG_BORD_TYPBORD, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_IDPCE, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNE_IDLIGNE, ligne_IdLigne);
+ msg = msg.replaceAll(MSG_TIERS_NATJUR, tiers_natjur);
+ msg = msg.replaceAll(MSG_TIERS_CATTIERS, tiers_cattiers);
+ if (depense) {
+ msg = msg.replaceAll("#MT#", "Mandat");
+ } else {
+ msg = msg.replaceAll("#MT#", "Titre");
+ }
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "");
+ xslParams.put("mandatId", piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ (depense?BORDEREAU_DEPENSE:BORDEREAU_RECETTE), // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path,
+ xslParams);
+ ano.addNode(new Node(node_id_tiers_cattiers));
+ ano.addNode(new Node(node_id_tiers_natjur));
+ anos.add(ano);
+ }
+ return null;
+ } else {
+ return null;
+ }
+ }
+
+ public void endDocument() throws SAXException {}
+
+ public void characters(char[] ch, int start, int length, String xpath) {}
+
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ public void skippedEntity(String name, String xpath) {}
+
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) {}
+}
--- /dev/null
+/*
+ * Copyright
+ * 2005 axYus - www.axyus.com
+ * 2005 N LE CORRE - nicolas.lecorre@axyus.com
+ * 2009 C ESCOBAR - christel.escobar@axyus.com
+ *
+ * This file is part of XEMELIOS.
+ *
+ * XEMELIOS is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * XEMELIOS 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
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XEMELIOS; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+package fr.gouv.finances.cp.xemelios.controls.pesv2.tie;
+
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.dgfip.xemelios.controls.core.AbstractUnitControl;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Anomalie;
+import fr.gouv.finances.dgfip.xemelios.controls.core.IdGenerator;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Node;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+/**
+ * Implémente le contrôle N° TIE05
+ * Il consiste à vérifier la règle fonctionnelle suivante :
+ * La catégorie juridique du tiers, doit être cohérente avec la nature juridique du tiers.
+ * Il est fait ainsi :
+ * 1- Lorsqu'on lit un élément BlocBordereau :
+ * - on vide BlocBordereau/Exer/@V, BlocBordereau/IdBord/@V, BlocBordereau/Typbord/@V.
+ * - on stocke BlocBordereau/Exer/@V, BlocBordereau/IdBord/@V, BlocBordereau/Typbord/@V.
+ * 2- Lorsqu'on lit un élément BlocPiece :
+ * - on vide BlocPiece/IdPce/@V.
+ * - on stocke BlocPiece/IdPce/@V.
+ * 3- Lorsqu'on lit un élément InfoLignePiece :
+ * - on vide InfoLignePiece/IdLigne/@V.
+ * - on stocke InfoLignePiece/IdLigne/@V.
+ * 4- Lorsqu'on lit un élément InfoTiers/ :
+ * - on lit InfoTiers/CatTiers/@V, InfoTiers/NatIdTiers/@V et InfoTiers/IdTiers/@V.
+ * 5- Lorsqu'on lit une fin d'élement InfoTiers :
+ * - on vérifie la cohérence CatTiers / NatJur / IdTiers parmis la liste autorisé.
+ */
+public class TIE05 extends AbstractUnitControl implements ConstantsControlsPESv2 {
+ private final static Logger logger = Logger.getLogger(TIE05.class);
+ public static final transient String CTRL_ID = "TIE05";
+ private Vector<Anomalie> anos = null;
+ private Hashtable<String,Object> hParams;
+
+ /**
+ * La balise du document général
+ */
+ private String docId = null;
+ private String nodeId = null;
+
+ /**
+ * La chaine cible
+ */
+ private static final String ON_RETURN_ANOMALIES = "Piece";
+ private static final String INFO_TIERS = "InfoTiers";
+
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+ private String bord_Exer = "";
+ private String bord_IdBord = "";
+ private String bord_TypBord = "";
+ private String piece_IdPce = "";
+ private String ligne_IdLigne = "";
+ private String tiers_cattiers = "";
+ private String tiers_natidtiers = "";
+ private String tiers_idtiers = "";
+ private String tiers_natjur = "";
+ private String tiers_cattiers_nodeId = "";
+ private String tiers_natidtiers_nodeId = "";
+ private String tiers_idtiers_nodeId = "";
+ private String tiers_natjur_nodeId = "";
+
+ /**
+ * Variables devant être remplacées dans le message
+ */
+ private static final String MSG_BORD_NUM = "#BORD_NUM#";
+ private static final String MSG_BORD_EXER = "#BORD_EXER#";
+ private static final String MSG_BORD_TYPBORD = "#BORD_TYPBORD#";
+ private static final String MSG_PIECE_IDPCE = "#PIECE_IDPCE#";
+ private static final String MSG_LIGNE_IDLIGNE = "#LIGNE_IDLIGNE#";
+ private static final String MSG_TIERS_CATTIERS = "#TIERS_CATTIERS#";
+ private static final String MSG_TIERS_NATIDTIERS = "#TIERS_NATIDTIERS#";
+ private static final String MSG_TIERS_IDTIERS = "#TIERS_IDTIERS#";
+
+
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses et les Recettes
+ */
+ private static final String CHEMIN_BLOCBORDEREAU = "/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/Bordereau/BlocBordereau/TypBord/";
+
+ /**
+ * Selon que l'on est en RECETTE ou DEPENSE, le xpath est différent
+ */
+ private static final String RECETTE = "PES_RecetteAller";
+ private static final String DEPENSE = "PES_DepenseAller";
+ private boolean depense = false;
+
+ private static final String CHEMIN_PIECE = "/Bordereau/Piece/";
+ private static String CHEMIN_BLOCPIECE = "";
+ private static String CHEMIN_BLOCPIECE_IDPCE = "";
+ private static final String R_CHEMIN_BLOCPIECE = "/Bordereau/Piece/BlocPiece/";
+ private static final String R_CHEMIN_BLOCPIECE_IDPCE = "/Bordereau/Piece/BlocPiece/IdPce/";
+ private static final String D_CHEMIN_BLOCPIECE = "/Bordereau/Piece/BlocPiece/";
+ private static final String D_CHEMIN_BLOCPIECE_IDPCE = "/Bordereau/Piece/BlocPiece/InfoPce/IdPce/";
+
+ private static String CHEMIN_INFOLIGNEPIECE = "";
+ private static String CHEMIN_INFOLIGNEPIECE_IDLIGNE = "";
+ private static final String R_CHEMIN_INFOLIGNEPIECE = "/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/";
+ private static final String R_CHEMIN_INFOLIGNEPIECE_IDLIGNE = "/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/IdLigne/";
+ private static final String D_CHEMIN_INFOLIGNEPIECE = "/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/";
+ private static final String D_CHEMIN_INFOLIGNEPIECE_IDLIGNE = "/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/IdLigne/";
+
+ private static final String CHEMIN_INFOTIERS = "/Bordereau/Piece/LigneDePiece/Tiers/InfoTiers/";
+ private static final String CHEMIN_INFOTIERS_CATTIERS = "/Bordereau/Piece/LigneDePiece/Tiers/InfoTiers/CatTiers/";
+ private static final String CHEMIN_INFOTIERS_NATIDTIERS = "/Bordereau/Piece/LigneDePiece/Tiers/InfoTiers/NatIdTiers/";
+ private static final String CHEMIN_INFOTIERS_IDTIERS = "/Bordereau/Piece/LigneDePiece/Tiers/InfoTiers/IdTiers/";
+ private static final String CHEMIN_INFOTIERS_NATJUR = "/Bordereau/Piece/LigneDePiece/Tiers/InfoTiers/NatJur/";
+
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+ }
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+ public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+ // 0
+ // RECETTE ou DEPENSE
+ if (xpath.indexOf(DEPENSE)!=-1) {
+ depense = true;
+ CHEMIN_BLOCPIECE = D_CHEMIN_BLOCPIECE;
+ CHEMIN_BLOCPIECE_IDPCE = D_CHEMIN_BLOCPIECE_IDPCE;
+ CHEMIN_INFOLIGNEPIECE = D_CHEMIN_INFOLIGNEPIECE;
+ CHEMIN_INFOLIGNEPIECE_IDLIGNE = D_CHEMIN_INFOLIGNEPIECE_IDLIGNE;
+ }
+ if (xpath.indexOf(RECETTE)!=-1) {
+ depense = false;
+ CHEMIN_BLOCPIECE = R_CHEMIN_BLOCPIECE;
+ CHEMIN_BLOCPIECE_IDPCE = R_CHEMIN_BLOCPIECE_IDPCE;
+ CHEMIN_INFOLIGNEPIECE = R_CHEMIN_INFOLIGNEPIECE;
+ CHEMIN_INFOLIGNEPIECE_IDLIGNE = R_CHEMIN_INFOLIGNEPIECE_IDLIGNE;
+ }
+ // 1
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ bord_Exer = bord_IdBord = bord_TypBord = "";
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_Exer = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ }
+
+ // 2
+ if (xpath.endsWith(CHEMIN_BLOCPIECE)) {
+ piece_IdPce = "";
+ anos = new Vector<Anomalie>();
+ }
+ if (xpath.endsWith(CHEMIN_BLOCPIECE_IDPCE)) {
+ piece_IdPce = atts.getValue("V");
+ }
+
+ // 3
+ if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE)) {
+ ligne_IdLigne = "";
+ }
+ if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE_IDLIGNE)) {
+ ligne_IdLigne = atts.getValue("V");
+ }
+
+ // 4
+ if (xpath.endsWith(CHEMIN_INFOTIERS)) {
+ tiers_cattiers = tiers_natidtiers = tiers_idtiers = tiers_natjur = "";
+ tiers_cattiers_nodeId = tiers_idtiers_nodeId = tiers_natidtiers_nodeId = tiers_natjur_nodeId = "";
+ nodeId = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_INFOTIERS_IDTIERS)) {
+ tiers_idtiers = atts.getValue("V");
+ tiers_idtiers_nodeId = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_INFOTIERS_CATTIERS)) {
+ tiers_cattiers = atts.getValue("V");
+ tiers_cattiers_nodeId = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_INFOTIERS_NATIDTIERS)) {
+ tiers_natidtiers = atts.getValue("V");
+ tiers_natidtiers_nodeId = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_INFOTIERS_NATJUR)) {
+ tiers_natjur = atts.getValue("V");
+ tiers_natjur_nodeId = atts.getValue("ano:node-id");
+ }
+ }
+
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+ if(ON_RETURN_ANOMALIES.equals(localName)){
+ return anos;
+ } else if (INFO_TIERS.equals(localName)) {
+ // 5
+ boolean err = false;
+
+ if ( !(tiers_cattiers.equals("70") && tiers_natjur.equals("05")) && !(tiers_cattiers.equals("71") && tiers_natjur.equals("05")) ) {
+ if ("01".equals(tiers_natidtiers) || "02".equals(tiers_natidtiers)) {
+ if (tiers_idtiers.startsWith("1") || tiers_idtiers.startsWith("2")) {
+ err = ( (!"20".equals(tiers_cattiers))
+ && (!"21".equals(tiers_cattiers))
+ && (!"22".equals(tiers_cattiers))
+ && (!"23".equals(tiers_cattiers))
+ && (!"24".equals(tiers_cattiers))
+ && (!"25".equals(tiers_cattiers))
+ && (!"26".equals(tiers_cattiers))
+ && (!"27".equals(tiers_cattiers))
+ && (!"28".equals(tiers_cattiers))
+ && (!"29".equals(tiers_cattiers))
+ && (!"74".equals(tiers_cattiers)));
+ }
+ }
+ if ("01".equals(tiers_cattiers)) {
+ err = (!"".equals(tiers_natidtiers) || !"".equals(tiers_idtiers));
+ }
+ }
+
+ if (err) {
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_Exer);
+ msg = msg.replaceAll(MSG_BORD_TYPBORD, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_IDPCE, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNE_IDLIGNE, ligne_IdLigne);
+ msg = msg.replaceAll(MSG_TIERS_NATIDTIERS, tiers_natidtiers);
+ msg = msg.replaceAll(MSG_TIERS_CATTIERS, tiers_cattiers);
+ msg = msg.replaceAll(MSG_TIERS_IDTIERS, tiers_idtiers);
+ if (depense) {
+ msg = msg.replaceAll("#MT#", "Mandat");
+ } else {
+ msg = msg.replaceAll("#MT#", "Titre");
+ }
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "");
+ xslParams.put("mandatId", piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ (depense?BORDEREAU_DEPENSE:BORDEREAU_RECETTE), // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path,
+ xslParams);
+ ano.addNode(new Node(tiers_cattiers_nodeId));
+ ano.addNode(new Node(tiers_natidtiers_nodeId));
+
+ anos.add(ano);
+ }
+ return null;
+ } else {
+ return null;
+ }
+ }
+
+ public void endDocument() throws SAXException {}
+
+ public void characters(char[] ch, int start, int length, String xpath) {}
+
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ public void skippedEntity(String name, String xpath) {}
+
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) {}
+}
--- /dev/null
+/*
+ * Copyright
+ * 2005 axYus - www.axyus.com
+ * 2005 N LE CORRE - nicolas.lecorre@axyus.com
+ *
+ * This file is part of XEMELIOS.
+ *
+ * XEMELIOS is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * XEMELIOS 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
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XEMELIOS; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+package fr.gouv.finances.cp.xemelios.controls.pesv2.tie;
+
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.dgfip.xemelios.controls.core.AbstractUnitControl;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Anomalie;
+import fr.gouv.finances.dgfip.xemelios.controls.core.IdGenerator;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Node;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+/**
+ * Implémente le contrôle N° TIE06
+ * Il consiste à vérifier la règle fonctionnelle suivante :
+ * Les références bancaires : clé RIB, code banque, code guichet et cadrage du numéro de compte
+ * doivent être cohérents et valides. (Pas valorisés à " 0 ").
+ *
+ * Il est fait ainsi :
+ * 1- Lorsqu'on lit un élément BlocBordereau :
+ * - on vide BlocBordereau/Exer/@V, BlocBordereau/IdBord/@V, BlocBordereau/Typbord/@V.
+ * - on stocke BlocBordereau/Exer/@V, BlocBordereau/IdBord/@V, BlocBordereau/Typbord/@V.
+ * 2- Lorsqu'on lit un élément BlocPiece :
+ * - on vide BlocPiece/IdPce/@V.
+ * - on stocke BlocPiece/IdPce/@V.
+ * 3- Lorsqu'on lit un élément InfoLignePiece :
+ * - on vide InfoLignePiece/IdLigne/@V.
+ * - on stocke InfoLignePiece/IdLigne/@V.
+ * 4- Lorsqu'on lit un élément CpteBancaire/ :
+ * - on vide CpteBancaire/CleRib/@V, CpteBancaire/CodeGuic/@V, CpteBancaire/CodeEtab/@V, CpteBancaire/IdCpte/@V, CpteBancaire/IdBancInt/@V
+ * - on stocke CpteBancaire/CleRib/@V, CpteBancaire/CodeGuic/@V, CpteBancaire/CodeEtab/@V, CpteBancaire/IdCpte/@V, CpteBancaire/IdBancInt/@V
+ * 5- Lorsqu'on lit la fin de l'élement CpteBancaire/ :
+ * - on vérifie que CodeGuic, CodeEtab, IdCpte et IdBancInt sont renseignés et ne valent pas que des 0 ou des 9.
+ * - on vérifie que la CleRib est correcte.
+ */
+public class TIE06 extends AbstractUnitControl implements ConstantsControlsPESv2 {
+ private final static Logger logger = Logger.getLogger(TIE06.class);
+ public static final transient String CTRL_ID = "TIE06";
+ private Vector<Anomalie> anos = null;
+ private Hashtable<String,Object> hParams;
+
+ /**
+ * La balise du document général
+ */
+ private String docId = null;
+
+ private String nodeId = null;
+
+ private static final String ON_RETURN_ANOMALIES = "Piece";
+
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+ private String bord_Exer = "";
+ private String bord_IdBord = "";
+ private String bord_TypBord = "";
+ private String piece_IdPce = "";
+ private String ligne_IdLigne = "";
+ private String idBancInt = "";
+ private String idCpte = "";
+ private String codeEtab = "";
+ private String codeGuic = "";
+ private String cleRib = "";
+
+ /**
+ * Variables devant être remplacées dans le message
+ */
+ private static final String MSG_BORD_NUM = "#BORD_NUM#";
+ private static final String MSG_BORD_EXER = "#BORD_EXER#";
+ private static final String MSG_BORD_TYPBORD = "#BORD_TYPBORD#";
+ private static final String MSG_PIECE_IDPCE = "#PIECE_IDPCE#";
+ private static final String MSG_LIGNE_IDLIGNE = "#LIGNE_IDLIGNE#";
+ private static final String MSG_CPTE_IDBANCINT = "#CPTE_IDBANCINT#";
+ private static final String MSG_CPTE_IDCPTE = "#CPTE_IDCPTE#";
+ private static final String MSG_CPTE_CODEETAB = "#CPTE_CODEETAB#";
+ private static final String MSG_CPTE_CODEGUIC = "#CPTE_CODEGUIC#";
+ private static final String MSG_CPTE_CLERIB = "#CPTE_CLERIB#";
+
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses et les Recettes
+ */
+ private static final String CHEMIN_BLOCBORDEREAU = "/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/Bordereau/BlocBordereau/TypBord/";
+
+ /**
+ * Selon que l'on est en RECETTE ou DEPENSE, le xpath est différent
+ */
+ private static final String RECETTE = "PES_RecetteAller";
+ private static final String DEPENSE = "PES_DepenseAller";
+ private boolean depense = false;
+
+ private static String CHEMIN_BLOCPIECE = "";
+ private static String CHEMIN_BLOCPIECE_IDPCE = "";
+ private static final String R_CHEMIN_BLOCPIECE = "/Bordereau/Piece/BlocPiece/";
+ private static final String R_CHEMIN_BLOCPIECE_IDPCE = "/Bordereau/Piece/BlocPiece/IdPce/";
+ private static final String D_CHEMIN_BLOCPIECE = "/Bordereau/Piece/BlocPiece/";
+ private static final String D_CHEMIN_BLOCPIECE_IDPCE = "/Bordereau/Piece/BlocPiece/InfoPce/IdPce/";
+
+ private static String CHEMIN_INFOLIGNEPIECE = "";
+ private static String CHEMIN_INFOLIGNEPIECE_IDLIGNE = "";
+ private static final String R_CHEMIN_INFOLIGNEPIECE = "/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/";
+ private static final String R_CHEMIN_INFOLIGNEPIECE_IDLIGNE = "/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/IdLigne/";
+ private static final String D_CHEMIN_INFOLIGNEPIECE = "/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/";
+ private static final String D_CHEMIN_INFOLIGNEPIECE_IDLIGNE = "/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/IdLigne/";
+
+ private static final String CHEMIN_COMPTE = "/Bordereau/Piece/LigneDePiece/Tiers/CpteBancaire/";
+ private static final String CHEMIN_COMPTE_IDBANCINT = "/Bordereau/Piece/LigneDePiece/Tiers/CpteBancaire/IdBancInt/";
+ private static final String CHEMIN_COMPTE_IDCPTE = "/Bordereau/Piece/LigneDePiece/Tiers/CpteBancaire/IdCpte/";
+ private static final String CHEMIN_COMPTE_CODEETAB = "/Bordereau/Piece/LigneDePiece/Tiers/CpteBancaire/CodeEtab/";
+ private static final String CHEMIN_COMPTE_CODEGUIC = "/Bordereau/Piece/LigneDePiece/Tiers/CpteBancaire/CodeGuic/";
+ private static final String CHEMIN_COMPTE_CLERIB = "/Bordereau/Piece/LigneDePiece/Tiers/CpteBancaire/CleRib/";
+
+ /**
+ * La fin de l'élément COMPTEBANCAIRE
+ */
+ private static final String FIN_CPTE = "CpteBancaire";
+
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+ }
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+ public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+ // 0
+ // RECETTE ou DEPENSE
+ if (xpath.indexOf(DEPENSE)!=-1) {
+ depense = true;
+ CHEMIN_BLOCPIECE = D_CHEMIN_BLOCPIECE;
+ CHEMIN_BLOCPIECE_IDPCE = D_CHEMIN_BLOCPIECE_IDPCE;
+ CHEMIN_INFOLIGNEPIECE = D_CHEMIN_INFOLIGNEPIECE;
+ CHEMIN_INFOLIGNEPIECE_IDLIGNE = D_CHEMIN_INFOLIGNEPIECE_IDLIGNE;
+ }
+ if (xpath.indexOf(RECETTE)!=-1) {
+ depense = false;
+ CHEMIN_BLOCPIECE = R_CHEMIN_BLOCPIECE;
+ CHEMIN_BLOCPIECE_IDPCE = R_CHEMIN_BLOCPIECE_IDPCE;
+ CHEMIN_INFOLIGNEPIECE = R_CHEMIN_INFOLIGNEPIECE;
+ CHEMIN_INFOLIGNEPIECE_IDLIGNE = R_CHEMIN_INFOLIGNEPIECE_IDLIGNE;
+ }
+ // 1
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ bord_Exer = bord_IdBord = bord_TypBord = "";
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_Exer = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ }
+
+ // 2
+ if (xpath.endsWith(CHEMIN_BLOCPIECE)) {
+ piece_IdPce = "";
+ anos = new Vector<Anomalie>();
+ }
+ if (xpath.endsWith(CHEMIN_BLOCPIECE_IDPCE)) {
+ piece_IdPce = atts.getValue("V");
+ }
+
+ // 3
+ if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE)) {
+ ligne_IdLigne = "";
+ }
+ if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE_IDLIGNE)) {
+ ligne_IdLigne = atts.getValue("V");
+ }
+
+ // 4
+ if (xpath.endsWith(CHEMIN_COMPTE)) {
+ idBancInt = idCpte = codeEtab = codeGuic = cleRib = "";
+ nodeId = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_COMPTE_IDBANCINT)) {
+ idBancInt = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_COMPTE_IDCPTE)) {
+ idCpte = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_COMPTE_CODEETAB)) {
+ codeEtab = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_COMPTE_CODEGUIC)) {
+ codeGuic = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_COMPTE_CLERIB)) {
+ cleRib = atts.getValue("V");
+ }
+ }
+
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+ if(ON_RETURN_ANOMALIES.equals(localName)){
+ return anos;
+ } else if (FIN_CPTE.equals(localName)) {
+ // 5
+ boolean err = false;
+ String search0 = "^[0][0]*$";
+ String search9 = "^[9][9]*$";
+ StringBuffer sb = new StringBuffer();
+
+ if (idBancInt!=null) {
+ sb.append (idBancInt);
+ }
+ if (idCpte!=null) {
+ sb.append (idCpte);
+ }
+ if (codeEtab!=null) {
+ sb.append (codeEtab);
+ }
+ if (codeGuic!=null) {
+ sb.append (codeGuic);
+ }
+ if (/*sb.toString().matches(search0) ||*/ sb.toString().matches(search9)) {
+ err = true;
+ }
+ // vérification de la cohérence de la cle rib
+ if (!err) {
+ try { err = !validateRib (codeEtab, codeGuic, idCpte, cleRib); }
+ catch (Exception e) {err = true; }
+ }
+
+ if (err) {
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_Exer);
+ msg = msg.replaceAll(MSG_BORD_TYPBORD, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_IDPCE, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNE_IDLIGNE, ligne_IdLigne);
+ msg = msg.replaceAll(MSG_CPTE_IDBANCINT, idBancInt);
+ msg = msg.replaceAll(MSG_CPTE_IDCPTE, idCpte);
+ msg = msg.replaceAll(MSG_CPTE_CODEETAB, codeEtab);
+ msg = msg.replaceAll(MSG_CPTE_CODEGUIC, codeGuic);
+ msg = msg.replaceAll(MSG_CPTE_CLERIB, cleRib);
+ if (depense) {
+ msg = msg.replaceAll("#MT#", "Mandat");
+ } else {
+ msg = msg.replaceAll("#MT#", "Titre");
+ }
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "");
+ xslParams.put("mandatId", piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ (depense?BORDEREAU_DEPENSE:BORDEREAU_RECETTE), // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path,
+ xslParams);
+ ano.addNode(new Node(nodeId));
+ anos.add(ano);
+ }
+ return null;
+ } else {
+ return null;
+ }
+ }
+
+ public boolean validateRib (String codeEtab, String codeGuich, String idCpte, String cleRib) {
+ boolean ret = false;
+
+ // conversion du numéro de compte en chiffres
+ String tabPossibles = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
+ char []tabTranscrit = "123456789123456789234567890123456789".toCharArray();
+
+ String compte = "";
+ idCpte = idCpte.toUpperCase();
+ for (int i=0; i<idCpte.length(); i++) {
+ compte += tabTranscrit[tabPossibles.indexOf(idCpte.charAt(i))];
+ }
+
+ // calcul de la celf rib du compte
+ double bqe = Double.parseDouble(codeEtab);
+ double gui = Double.parseDouble(codeGuich);
+ double cp = Double.parseDouble(compte);
+ double a=bqe%97;
+ a=a*100000+gui;
+ a=a%97;
+ a=a*Math.pow(10, 11) + cp;
+ a=a%97;
+ a=a*100;
+ a=a%97;
+ a=97-a;
+
+ // la clef est elle la même que celle passée ?
+ double cr = Double.parseDouble(cleRib);
+ ret = (cr == a);
+
+ return ret;
+ }
+
+ public void endDocument() throws SAXException {}
+
+ public void characters(char[] ch, int start, int length, String xpath) {}
+
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ public void skippedEntity(String name, String xpath) {}
+
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) {}
+
+/* public static void main (String[] args) {
+ TIE06 t = new TIE06();
+ boolean ret = t.validateRib("20041", "01012", "4742224G033", "35");
+ }
+*/
+}
--- /dev/null
+/*
+ * Copyright
+ * 2005 axYus - www.axyus.com
+ * 2005 N LE CORRE - nicolas.lecorre@axyus.com
+ * 2008 C ESCOBAR - christel.escobar@axyus.com
+ *
+ * This file is part of XEMELIOS.
+ *
+ * XEMELIOS is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * XEMELIOS 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
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XEMELIOS; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+package fr.gouv.finances.cp.xemelios.controls.pesv2.tie;
+
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+import fr.gouv.finances.dgfip.xemelios.controls.core.AbstractUnitControl;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Anomalie;
+import fr.gouv.finances.dgfip.xemelios.controls.core.IdGenerator;
+import fr.gouv.finances.dgfip.xemelios.controls.core.Node;
+import fr.gouv.finances.cp.xemelios.controls.pesv2.ConstantsControlsPESv2;
+
+/**
+ * Implémente le contrôle N° TIE07
+ * Il consiste à vérifier la règle fonctionnelle suivante :
+ * La catégorie juridique du tiers, doit être cohérente avec la nature juridique du tiers.
+ * Il est fait ainsi :
+ * 1- Lorsqu'on lit un élément BlocBordereau :
+ * - on vide BlocBordereau/Exer/@V, BlocBordereau/IdBord/@V, BlocBordereau/Typbord/@V.
+ * - on stocke BlocBordereau/Exer/@V, BlocBordereau/IdBord/@V, BlocBordereau/Typbord/@V.
+ * 2- Lorsqu'on lit un élément BlocPiece :
+ * - on vide BlocPiece/IdPce/@V.
+ * - on stocke BlocPiece/IdPce/@V.
+ * 3- Lorsqu'on lit un élément InfoLignePiece :
+ * - on vide InfoLignePiece/IdLigne/@V.
+ * - on stocke InfoLignePiece/IdLigne/@V.
+ * 4- Lorsqu'on lit un élément Adresse/ :
+ * - on lit Adresse/CP/@V, Adresse/CodRes/@V et Adresse/CodPays/@V.
+ * 5- Lorsqu'on lit une fin d'élement Adresse :
+ * - on vérifie que si CodRes = 0
+ * si CP commence par "02A" ou "02B"
+ * alors erreur --> CP doit être valorisé à 99999
+ * sinon CP a une longueur de 5 caractères.
+ * - on vérifie que si CodRes = 1
+ * CodPays comporte 3 chiffres.
+ * CP est valorisé à 99999 et le véritable code postal est renseigné dans la balise Tiers/Adresse/Ville[@V]
+ */
+
+public class TIE07 extends AbstractUnitControl implements ConstantsControlsPESv2 {
+ private final static Logger logger = Logger.getLogger(TIE07.class);
+ public static final transient String CTRL_ID = "TIE07";
+ private Vector<Anomalie> anos = null;
+ private Hashtable<String,Object> hParams;
+
+ /**
+ * La balise du document général
+ */
+ private String docId = null;
+ private String ligne_nodeId = null;
+
+ /**
+ * La chaine cible
+ */
+ private static final String ON_RETURN_ANOMALIES = "Piece";
+ private static final String ADRESSE = "Adresse";
+
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+ private String bord_Exer = "";
+ private String bord_IdBord = "";
+ private String bord_TypBord = "";
+ private String piece_IdPce = "";
+ private String ligne_IdLigne = "";
+ private String tiers_CP = "";
+ private String tiers_codRes = "";
+ private String tiers_codPays = "";
+ private String tiers_ville = "";
+ private String tiers_CP_NodeId = "";
+ private String tiers_ville_NodeId = "";
+ private String tiers_nom = "";
+
+ /**
+ * Variables devant être remplacées dans le message
+ */
+ private static final String MSG_BORD_NUM = "#BORD_NUM#";
+ private static final String MSG_BORD_EXER = "#BORD_EXER#";
+ private static final String MSG_BORD_TYPBORD = "#BORD_TYPBORD#";
+ private static final String MSG_PIECE_IDPCE = "#PIECE_IDPCE#";
+ private static final String MSG_LIGNE_IDLIGNE = "#LIGNE_IDLIGNE#";
+ private static final String MSG_TIERS_NOM = "#TIERS_NOM#";
+ private static final String MSG_ERREUR = "#ERREUR#";
+
+ /**
+ * Chemins incomplet vers les divers éléments que l'on veux lire. Ils sont incomplets dans la mesure
+ * où on n'a pas le début du chemin, vu que ce contrôle est utilisé pour les Dépenses et les Recettes
+ */
+ private static final String CHEMIN_BLOCBORDEREAU = "/Bordereau/BlocBordereau/";
+ private static final String CHEMIN_BLOCBORDEREAU_EXER = "/Bordereau/BlocBordereau/Exer/";
+ private static final String CHEMIN_BLOCBORDEREAU_IDBORD = "/Bordereau/BlocBordereau/IdBord/";
+ private static final String CHEMIN_BLOCBORDEREAU_TYPBORD = "/Bordereau/BlocBordereau/TypBord/";
+
+ /**
+ * Selon que l'on est en RECETTE ou DEPENSE, le xpath est différent
+ */
+ private static final String RECETTE = "PES_RecetteAller";
+ private static final String DEPENSE = "PES_DepenseAller";
+ private boolean depense = false;
+
+ private static String CHEMIN_BLOCPIECE = "";
+ private static String CHEMIN_BLOCPIECE_IDPCE = "";
+ private static final String R_CHEMIN_BLOCPIECE = "/Bordereau/Piece/BlocPiece/";
+ private static final String R_CHEMIN_BLOCPIECE_IDPCE = "/Bordereau/Piece/BlocPiece/IdPce/";
+ private static final String D_CHEMIN_BLOCPIECE = "/Bordereau/Piece/BlocPiece/";
+ private static final String D_CHEMIN_BLOCPIECE_IDPCE = "/Bordereau/Piece/BlocPiece/InfoPce/IdPce/";
+
+ private static String CHEMIN_INFOLIGNEPIECE = "";
+ private static String CHEMIN_INFOLIGNEPIECE_IDLIGNE = "";
+ private static final String R_CHEMIN_INFOLIGNEPIECE = "/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/";
+ private static final String R_CHEMIN_INFOLIGNEPIECE_IDLIGNE = "/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePiece/IdLigne/";
+ private static final String D_CHEMIN_INFOLIGNEPIECE = "/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/";
+ private static final String D_CHEMIN_INFOLIGNEPIECE_IDLIGNE = "/Bordereau/Piece/LigneDePiece/BlocLignePiece/InfoLignePce/IdLigne/";
+
+ private static final String CHEMIN_TIERS_NOM = "/Bordereau/Piece/LigneDePiece/Tiers/InfoTiers/Nom/";
+ private static final String CHEMIN_ADRESSE = "/Bordereau/Piece/LigneDePiece/Tiers/Adresse/";
+ private static final String CHEMIN_ADRESSE_CP = "/Bordereau/Piece/LigneDePiece/Tiers/Adresse/CP/";
+ private static final String CHEMIN_ADRESSE_CODRES = "/Bordereau/Piece/LigneDePiece/Tiers/Adresse/CodRes/";
+ private static final String CHEMIN_ADRESSE_CODPAYS = "/Bordereau/Piece/LigneDePiece/Tiers/Adresse/CodPays/";
+ private static final String CHEMIN_ADRESSE_VILLE = "/Bordereau/Piece/LigneDePiece/Tiers/Adresse/Ville/";
+
+ public void startDocument() throws SAXException {
+ logger.info("In "+CTRL_ID);
+ }
+
+ public void setDocId(String docID) {
+ this.docId = docID;
+ }
+
+ public void startElement(String uri, String localName, String qName,Attributes atts, String xpath) {
+ // 0
+ // RECETTE ou DEPENSE
+ if (xpath.indexOf(DEPENSE)!=-1) {
+ depense = true;
+ CHEMIN_BLOCPIECE = D_CHEMIN_BLOCPIECE;
+ CHEMIN_BLOCPIECE_IDPCE = D_CHEMIN_BLOCPIECE_IDPCE;
+ CHEMIN_INFOLIGNEPIECE = D_CHEMIN_INFOLIGNEPIECE;
+ CHEMIN_INFOLIGNEPIECE_IDLIGNE = D_CHEMIN_INFOLIGNEPIECE_IDLIGNE;
+ }
+ if (xpath.indexOf(RECETTE)!=-1) {
+ depense = false;
+ CHEMIN_BLOCPIECE = R_CHEMIN_BLOCPIECE;
+ CHEMIN_BLOCPIECE_IDPCE = R_CHEMIN_BLOCPIECE_IDPCE;
+ CHEMIN_INFOLIGNEPIECE = R_CHEMIN_INFOLIGNEPIECE;
+ CHEMIN_INFOLIGNEPIECE_IDLIGNE = R_CHEMIN_INFOLIGNEPIECE_IDLIGNE;
+ }
+ // 1
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU)) {
+ bord_Exer = bord_IdBord = bord_TypBord = "";
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_EXER)) {
+ bord_Exer = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_IDBORD)) {
+ bord_IdBord = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_BLOCBORDEREAU_TYPBORD)) {
+ bord_TypBord = atts.getValue("V");
+ }
+
+ // 2
+ if (xpath.endsWith(CHEMIN_BLOCPIECE)) {
+ piece_IdPce = "";
+ anos = new Vector<Anomalie>();
+ }
+ if (xpath.endsWith(CHEMIN_BLOCPIECE_IDPCE)) {
+ piece_IdPce = atts.getValue("V");
+ }
+
+ // 3
+ if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE)) {
+ ligne_IdLigne = "";
+ ligne_nodeId = "";
+ }
+ if (xpath.endsWith(CHEMIN_INFOLIGNEPIECE_IDLIGNE)) {
+ ligne_IdLigne = atts.getValue("V");
+ ligne_nodeId = atts.getValue("ano:node-id");
+
+ }
+
+ // 4
+ if (xpath.endsWith(CHEMIN_TIERS_NOM)) {
+ tiers_nom = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_ADRESSE)) {
+ tiers_CP = tiers_codPays = tiers_codRes = tiers_ville = "";
+ tiers_CP_NodeId = "";
+ }
+ if (xpath.endsWith(CHEMIN_ADRESSE_CP)) {
+ tiers_CP = atts.getValue("V");
+ tiers_CP_NodeId = atts.getValue("ano:node-id");
+ }
+ if (xpath.endsWith(CHEMIN_ADRESSE_CODPAYS)) {
+ tiers_codPays = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_ADRESSE_CODRES)) {
+ tiers_codRes = atts.getValue("V");
+ }
+ if (xpath.endsWith(CHEMIN_ADRESSE_VILLE)) {
+ tiers_ville = atts.getValue("V");
+ tiers_ville_NodeId = atts.getValue("ano:node-id");
+ }
+ }
+
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+ if(ON_RETURN_ANOMALIES.equals(localName)){
+ return anos;
+
+ } else if (ADRESSE.equals(localName)) {
+ // 5
+ boolean err = false;
+
+ if ("0".equals(tiers_codRes)) {
+ if (tiers_CP.startsWith("02A") || tiers_CP.startsWith("02B"))
+ err = true;
+ else err = tiers_CP.length()!=5;
+ }else if ("1".equals(tiers_codRes)) {
+ err = (tiers_codPays.equals("") || !tiers_codPays.matches("^[0-9]{3}$") || !tiers_CP.equals("99999") || tiers_ville.equals("")) ;
+ }
+
+
+ if (err) {
+ String msg = getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_BORD_NUM, bord_IdBord);
+ msg = msg.replaceAll(MSG_BORD_EXER, bord_Exer);
+ msg = msg.replaceAll(MSG_BORD_TYPBORD, bord_TypBord);
+ msg = msg.replaceAll(MSG_PIECE_IDPCE, piece_IdPce);
+ msg = msg.replaceAll(MSG_LIGNE_IDLIGNE, ligne_IdLigne);
+ msg = msg.replaceAll(MSG_TIERS_NOM, tiers_nom);
+
+ // RECETTE OU DEPENSE
+ if (depense)
+ msg = msg.replaceAll("#MT#", "Mandat");
+ else
+ msg = msg.replaceAll("#MT#", "Titre");
+
+ // MESSAGE D ERREUR
+ if ("0".equals(tiers_codRes)){
+ if (tiers_CP.startsWith("02A") || tiers_CP.startsWith("02B"))
+ msg = msg.replaceAll(MSG_ERREUR, "Le code postal réel 02AXX ou 02BXX doit être renseigné dans le champs Ville et le code postal doit être valorisé à 99999");
+ else
+ msg = msg.replaceAll(MSG_ERREUR, "Code postal invalide");
+ }
+ else if ("1".equals(tiers_codRes)){
+ if (tiers_codPays.equals("") || !tiers_codPays.matches("^[0-9]{3}$"))
+ msg = msg.replaceAll(MSG_ERREUR, "Code pays [NON RENSEIGNE] ou invalide");
+ else
+ msg = msg.replaceAll(MSG_ERREUR, "Il faut valoriser le code postal à 99999 et renseigner le véritable code postal (de format étranger) dans le champs Ville");
+ }
+
+
+ String path="@added:primary-key='"+bord_Exer+"-"+bord_TypBord+"-"+bord_IdBord+"'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Bordereau "+bord_IdBord+" Mandat "+piece_IdPce;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("elementId", "");
+ xslParams.put("mandatId", piece_IdPce);
+ xslParams.put("browser-destination", "internal");
+ xslParams.put("anoId", anoId);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ xpath.split("/")[1],
+ (depense?BORDEREAU_DEPENSE:BORDEREAU_RECETTE), // élément importable
+ bord_IdBord, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path,
+ xslParams);
+ if ("0".equals(tiers_codRes))
+ ano.addNode(new Node(tiers_CP_NodeId));
+ else {
+ if (tiers_codPays.equals("") || tiers_ville.equals("") || !tiers_codPays.matches("^[0-9]{3}$"))
+ ano.addNode(new Node (ligne_nodeId));
+ if (!tiers_CP.equals("99999")){
+ ano.addNode(new Node(tiers_CP_NodeId));
+ ano.addNode(new Node(tiers_ville_NodeId));
+ }
+ }
+
+ anos.add(ano);
+
+ }
+ tiers_CP = tiers_codPays = tiers_codRes = tiers_ville = tiers_nom = "";
+ tiers_CP_NodeId = tiers_ville_NodeId = "";
+
+ return null;
+
+ } else {
+ return null;
+ }
+ }
+
+ public void endDocument() throws SAXException {}
+
+ public void characters(char[] ch, int start, int length, String xpath) {}
+
+ public void ignorableWhitespace(char[] ch, int start, int length,String xpath) {}
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) {}
+
+ public void endPrefixMapping(String prefix, String xpath) {}
+
+ public void processingInstruction(String target, String data, String xpath) {}
+
+ public void skippedEntity(String name, String xpath) {}
+
+ public void setParameters(Hashtable<String,Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) {}
+}
--- /dev/null
+/*
+ * Copyright
+ * 2005 axYus - www.axyus.com
+ * 2005 C.Marchand - christophe.marchand@axyus.com
+ *
+ * This file is part of XEMELIOS.
+ *
+ * XEMELIOS is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * XEMELIOS 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
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XEMELIOS; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+package fr.gouv.finances.cp.xemelios.pesv2;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.util.HashMap;
+import java.util.zip.GZIPInputStream;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import org.apache.log4j.Logger;
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+import fr.gouv.finances.dgfip.utils.Base64;
+import fr.gouv.finances.dgfip.utils.Pair;
+import fr.gouv.finances.dgfip.utils.xml.FactoryProvider;
+import fr.gouv.finances.dgfip.utils.xml.transform.CustomURIResolver;
+import fr.gouv.finances.dgfip.xemelios.auth.XemeliosUser;
+import fr.gouv.finances.dgfip.xemelios.common.PJRef;
+import fr.gouv.finances.dgfip.xemelios.data.DataLayerManager;
+import fr.gouv.finances.dgfip.xemelios.importers.transformers.EtatTransformeur;
+import java.io.FileInputStream;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.stream.StreamResult;
+import javax.xml.transform.stream.StreamSource;
+
+public class PesFacturePiXslHrefTransformer implements EtatTransformeur {
+
+ private static Logger logger = Logger.getLogger(PesFacturePiXslHrefTransformer.class);
+ private int return_code;
+ private String xsl_PJPESFACTURE_TO_XMLPESFACTURE = "PES_V2/PES-PJ_PESFACTURE.xsl";
+ private String archiveName;
+
+ @Override
+ public void transform(Pair collectivite, String fileEncoding, String xmlVersion, String baseDirectory, String buff,XemeliosUser user) {
+
+ try {
+ PJRef pjref = new PJRef();
+
+ DocumentBuilderFactory dbf = FactoryProvider.getDocumentBuilderFactory();
+ dbf.setNamespaceAware(true);
+ DocumentBuilder db = dbf.newDocumentBuilder();
+ Document doc = db.parse(new ByteArrayInputStream(buff.getBytes(fileEncoding)));
+
+ // la collectivit�
+ pjref.setCollectivite(collectivite.key);
+
+ // PJ_NAME : IdUnique
+ NodeList tmpNL = doc.getElementsByTagName("IdUnique");
+ if (tmpNL.getLength() == 1) {
+ Node n = tmpNL.item(0);
+ pjref.setPjName(n.getAttributes().item(0).getNodeValue());
+ }
+
+ // FILe_NAME : NomPJ
+ tmpNL = doc.getElementsByTagName("NomPJ");
+ if (tmpNL.getLength() == 1) {
+ Node n = tmpNL.item(0);
+ pjref.setFileName(n.getAttributes().item(0).getNodeValue());
+ }
+ byte[] data = null;
+ // PES/Contenu/Fichier ou PES/Contenu/PES_Facture
+ boolean isFICHIER = (doc.getElementsByTagName("Fichier").getLength() > 0);
+
+ if (isFICHIER) {
+ // lecture en base64 puis d�compression GZip
+ tmpNL = doc.getElementsByTagName("Fichier");
+ if (tmpNL.getLength() == 1) {
+ Node n = tmpNL.item(0);
+ String encoded = n.getTextContent();
+
+ GZIPInputStream gzi = new GZIPInputStream(new ByteArrayInputStream(Base64.decode(encoded)));
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+
+ byte[] bTmp = new byte[2048];
+ int read = 0;
+ do {
+ read = gzi.read(bTmp);
+ if (read > 0) {
+ baos.write(bTmp, 0, read);
+ }
+ } while (read > 0);
+
+ baos.flush();
+ baos.close();
+ gzi.close();
+
+ data = baos.toByteArray();
+ }
+ } else {
+ // application d'une xsl sur le PES_FACTURE pour référencer la XSL d'affichage qui va bien
+ File xslFile = new File(new File(baseDirectory), xsl_PJPESFACTURE_TO_XMLPESFACTURE);
+ HashMap<String, Object> parameters = new HashMap<String, Object>();
+ TransformerFactory tFactory = FactoryProvider.getTransformerFactory();
+ tFactory.setURIResolver(new CustomURIResolver(tFactory.getURIResolver(), xslFile.toURI().toURL().toExternalForm()));
+ Transformer t = tFactory.newTransformer(new StreamSource(new FileInputStream(xslFile)));
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ t.transform(new StreamSource(new ByteArrayInputStream(buff.getBytes(fileEncoding))), new StreamResult(baos));
+ ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
+ StringBuffer newText = new StringBuffer();
+ int len = 0;
+ byte[] b = new byte[1024];
+ do {
+ len = bais.read(b);
+ if (len > 0) {
+ newText.append(new String(b, 0, len));
+ }
+ } while (len > 0);
+
+ data = newText.toString().getBytes();
+ }
+ pjref.setData(data);
+ pjref.setUncompressedSize(data.length);
+
+ DataLayerManager.getImplementation().importPj(pjref,getArchiveName(), user);
+ return_code = RETURN_CODE_OK;
+ } catch (Exception e) {
+ logger.error("import PJ", e);
+ return_code = RETURN_CODE_ERR;
+ } catch (OutOfMemoryError oome) {
+ logger.error("import PJ", oome);
+ return_code = RETURN_CODE_ERR;
+ }
+ }
+
+ @Override
+ public int getReturnCode() {
+ return return_code;
+ }
+
+ @Override
+ public void setArchiveName(String archiveName) {
+ this.archiveName = archiveName;
+ }
+
+ @Override
+ public String getArchiveName() {
+ return archiveName;
+ }
+}
--- /dev/null
+/*
+ * Copyright
+ * 2007 axYus - www.axyus.com
+ * 2007 C.Marchand - christophe.marchand@axyus.com
+ *
+ * This file is part of XEMELIOS.
+ *
+ * XEMELIOS is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * XEMELIOS 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
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XEMELIOS; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+
+
+package fr.gouv.finances.cp.xemelios.pesv2;
+
+import fr.gouv.finances.dgfip.xemelios.utils.AbstractUriTransformer;
+import java.util.Hashtable;
+
+/**
+ *
+ * @author chm
+ */
+public class UriTransformer extends AbstractUriTransformer {
+
+ /** Creates a new instance of UriTransformer */
+ public UriTransformer() {
+ }
+
+ public void transformUriParam(String paramName, String paramValue, Hashtable<String, Object> xslParams) {
+ if("path".equals(paramName)) {
+ // path is [@added:primary-key='2006-01-1000']
+ String sTmp = paramValue.substring(1,paramValue.length()-2);
+ String[] vals = sTmp.split("=");
+ if("@added:primary-key".equals(vals[0])) {
+ if(vals.length > 1) {
+ String pk = vals[1].substring(1,vals[1].length());
+ xslParams.put("primaryKey",pk);
+ }
+ return;
+ }
+ System.err.println("error processing "+paramName+"="+paramValue);
+ }
+ }
+
+}
--- /dev/null
+Manifest-version: 1.0
+Jar-Version: @version@
+Jar-Content: @name@
+