--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<project name="XEMELIOS-demande-achat" default="usage" basedir=".">
+ <import file="../../common-tasks.xml"/>
+ <description>Builds, tests, and runs the project XEMELIOS demande-achat</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">
+ <javac srcdir="java" destdir="build/classes" debug="${compile.debug}" encoding="ISO-8859-1">
+ <classpath>
+ <pathelement path="../starter/build/jars"/>
+ <pathelement path="../xml-marshall/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="**/*.class"/>
+ <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/demande-achat.jar" basedir="build/classes" manifest="build/manifest.txt"/>
+ </target>
+
+ <target name="config" depends="get-configuration">
+ <property file="component.properties"/>
+ <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/*"/>
+ </fileset>
+ <fileset dir="build/jars">
+ <include name="*.jar"/>
+ </fileset>
+ </copy>
+ <propertyfile file="${component.dir}/component.properties">
+ <entry key="description" value="Configuration pour demande-achat"/>
+ <entry key="type" value="config-updates"/>
+ <entry key="base.dest" value="${xemelios.prg}/root/documents-def/"/>
+ <entry key="requires" value="${component.requires}"/>
+ <entry key="demande-achat.jar.dest" value="${xemelios.prg}/root/lib/"/>
+ </propertyfile>
+ <antcall target="generate-update"/>
+ </target>
+
+ <target name="clean">
+ <delete dir="build"/>
+ <delete file="check-result.txt"/>
+ </target>
+
+ <target name="setup">
+ <copy todir="../../build/setup/root/lib">
+ <fileset dir="build/jars" includes="*.jar"/>
+ </copy>
+ <copy todir="../../build/setup/root/documents-def">
+ <fileset dir="conf" includes="**/*" excludes="**/CVS"/>
+ </copy>
+ </target>
+
+ <target name="mk-output-dirs">
+ <mkdir dir="build/config"/>
+ <mkdir dir="build/classes"/>
+ <mkdir dir="build/jars"/>
+ </target>
+
+ <!-- target name="check-config">
+ <xslt style="../../utils/persistence-verifier.xsl" in="conf/fen0067a/fen0067a-persistence.xml" out="check-result.txt" force="true">
+ <param name="fileName" expression="conf/fen0067a/fen0067a-persistence.xml"/>
+ </xslt>
+ <exec executable="more">
+ <arg value="check-result.txt"/>
+ </exec>
+ <delete file="check-result.txt"/>
+ </target -->
+
+</project>
+
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<component>
+ <name>demande-achat</name>
+ <description>Configuration Demande d'achat</description>
+ <url>http://xemelios.org/updatesV5/demande-achat</url>
+ <release>5.0.0.0</release>
+ <requires>
+ <component-ref url="http://xemelios.org/updatesV5/core" release="5.0.0.0"/>
+ </requires>
+</component>
--- /dev/null
+# configuration de demande-achat
+component.name=demande-achat
+component.release=5.0.0.0
+component.requires=http://xemelios.org/updatesV5/core,5.0.0.0
+component.description=Configuration Demande d'achat
+component.url=http://xemelios.org/updatesV5/demande-achat
--- /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="DocDemandeAchat"
+ extension="xml"
+ id="demande-achat"
+ import-class="fr.gouv.finances.dgfip.xemelios.demandeachat.DemandeAchatImporter"
+ referentiel="not-available-tag"
+ titre="Demande d'achat FEN0067"
+ persistence-config="fen0067a/demande-achat-persistence.xml"
+ control-config-file="fen0067a/demande-achat-controls.xml"
+ isControlable="true"
+ ordre-presentation="8"
+ natIdColl="VARIABLE"
+ textToXmlTransformer="fr.gouv.finances.dgfip.xemelios.demandeachat.DemandeAchatTxt2Xml">
+ <namespaces>
+ <ns prefix="n" uri="http://www.xemelios.org/namespaces#FEN0067A"/>
+ <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="txt2xml" uri="http://www.xemelios.org/namespaces#txt2xml"/>
+ </namespaces>
+ <default-budget value="00">LFI</default-budget>
+ <collectivite-path id="c1">
+ <path>/DocDemandeAchat/Collectivite</path>
+ <code-path>/DocDemandeAchat/Collectivite/@code</code-path>
+ <libelle-path>/DocDemandeAchat/Collectivite/@libelle</libelle-path>
+ </collectivite-path>
+ <budget-path id="b1">
+ <path>/DocDemandeAchat/Budget</path>
+ <code-path>/DocDemandeAchat/Budget/@code</code-path>
+ <libelle-path>/DocDemandeAchat/Budget/@libelle</libelle-path>
+ </budget-path>
+ <entete id="e">entete_fen</entete>
+ <!--entete id="anos1">Anomalie</entete>
+ <entete id="anos2">ano:Anomalie</entete-->
+
+<etat balise="FEN0067A" balise-namespace="http://www.xemelios.org/namespaces#FEN0067A" id="FEN0067A" titre="FEN0067A" use-external-browser="false" importable-element="DA" xslt-file="fen0067a/etatFen0067a.xsl">
+<element balise="DA" id="DA" max-display="500" titre="DA">
+ <path>/n:DocDemandeAchat/n:FEN0067A/n:DA</path>
+<liste-resultat ordre="ASC" tri-defaut="lr1">
+ <champ id="lr1" libelle="LineTxt">
+ <valeur>n:ENTETE/@LineTxt</valeur>
+ </champ>
+ <champ id="lr2" libelle="ID_AE">
+ <valeur>n:ENTETE/n:ID_AE/text()</valeur>
+ </champ>
+ <champ id="lr3" libelle="DESCRIPTION">
+ <valeur>n:ENTETE/n:DESCRIPTION/text()</valeur>
+ </champ>
+ <champ id="lr4" libelle="DOC_DATE">
+ <valeur>n:ENTETE/n:DOC_DATE/text()</valeur>
+ </champ>
+ <champ id="lr5" libelle="INITIATEUR">
+ <valeur>n:ENTETE/n:INITIATEUR/text()</valeur>
+ </champ>
+ <champ id="lr6" libelle="CODE_APPLI">
+ <valeur>n:ENTETE/n:CODE_APPLI/text()</valeur>
+ </champ>
+ <champ id="lr7" libelle="CURRENCY">
+ <valeur>n:ENTETE/n:CURRENCY/text()</valeur>
+ </champ>
+</liste-resultat>
+ <critere id="CRI_FEN0067A_DA_LINETXT" libelle="LineTxt">
+ <path>{##OPERATEUR:LineTxt##(n:ENTETE/@LineTxt,"##VALEUR:LineTxt##")}</path>
+ <input id="LineTxt" datatype="string"/>
+ </critere>
+ <critere id="CRI_FEN0067A_DA_ID_AE" libelle="ID_AE">
+ <path>{##OPERATEUR:ID_AE##(n:ENTETE/n:ID_AE/text(),"##VALEUR:ID_AE##")}</path>
+ <input id="ID_AE" datatype="string"/>
+ </critere>
+ <critere id="CRI_FEN0067A_DA_DESCRIPTION" libelle="DESCRIPTION">
+ <path>{##OPERATEUR:DESCRIPTION##(n:ENTETE/n:DESCRIPTION/text(),"##VALEUR:DESCRIPTION##")}</path>
+ <input id="DESCRIPTION" datatype="string"/>
+ </critere>
+ <critere id="CRI_FEN0067A_DA_DOC_DATE" libelle="DOC_DATE">
+ <path>{##OPERATEUR:DOC_DATE##(n:ENTETE/n:DOC_DATE/text(),"##VALEUR:DOC_DATE##")}</path>
+ <input id="DOC_DATE" datatype="string"/>
+ </critere>
+ <critere id="CRI_FEN0067A_DA_INITIATEUR" libelle="INITIATEUR">
+ <path>{##OPERATEUR:INITIATEUR##(n:ENTETE/n:INITIATEUR/text(),"##VALEUR:INITIATEUR##")}</path>
+ <input id="INITIATEUR" datatype="string"/>
+ </critere>
+ <critere id="CRI_FEN0067A_DA_CODE_APPLI" libelle="CODE_APPLI">
+ <path>{##OPERATEUR:CODE_APPLI##(n:ENTETE/n:CODE_APPLI/text(),"##VALEUR:CODE_APPLI##")}</path>
+ <input id="CODE_APPLI" datatype="string"/>
+ </critere>
+ <critere id="CRI_FEN0067A_DA_CURRENCY" libelle="CURRENCY">
+ <path>{##OPERATEUR:CURRENCY##(n:ENTETE/n:CURRENCY/text(),"##VALEUR:CURRENCY##")}</path>
+ <input id="CURRENCY" datatype="string"/>
+ </critere>
+</element>
+<element balise="POSTE" id="POSTE" max-display="500" titre="POSTE">
+ <path>/n:DocDemandeAchat/n:FEN0067A/n:DA/n:POSTE</path>
+<liste-resultat ordre="ASC" tri-defaut="lr8">
+ <champ id="lr8" libelle="BE_PUR_GROUP">
+ <valeur>n:BE_PUR_GROUP/text()</valeur>
+ </champ>
+ <champ id="lr9" libelle="LineTxt">
+ <valeur>@LineTxt</valeur>
+ </champ>
+ <champ id="lr10" libelle="ID_LIG">
+ <valeur>n:ID_LIG/text()</valeur>
+ </champ>
+ <champ id="lr11" libelle="STGE_LOC">
+ <valeur>n:STGE_LOC/text()</valeur>
+ </champ>
+ <champ id="lr12" libelle="PRICE">
+ <valeur>n:PRICE/text()</valeur>
+ </champ>
+ <champ id="lr13" libelle="CTR_ITEM_NUMBER">
+ <valeur>n:CTR_ITEM_NUMBER/text()</valeur>
+ </champ>
+ <champ id="lr14" libelle="ID_AE">
+ <valeur>n:ID_AE/text()</valeur>
+ </champ>
+ <champ id="lr15" libelle="ID_FONC_PROD">
+ <valeur>n:ID_FONC_PROD/text()</valeur>
+ </champ>
+ <champ id="lr16" libelle="PARTNER_PROD">
+ <valeur>n:PARTNER_PROD/text()</valeur>
+ </champ>
+ <champ id="lr17" libelle="TYPE_ID_FONC">
+ <valeur>n:TYPE_ID_FONC/text()</valeur>
+ </champ>
+ <champ id="lr18" libelle="BE_PLANT">
+ <valeur>n:BE_PLANT/text()</valeur>
+ </champ>
+ <champ id="lr19" libelle="CATEGORY_ID">
+ <valeur>n:CATEGORY_ID/text()</valeur>
+ </champ>
+ <champ id="lr20" libelle="DESCRIPTION">
+ <valeur>n:DESCRIPTION/text()</valeur>
+ </champ>
+ <champ id="lr21" libelle="DELIV_DATE">
+ <valeur>n:DELIV_DATE/text()</valeur>
+ </champ>
+ <champ id="lr22" libelle="ID_CHORUS_PROD">
+ <valeur>n:ID_CHORUS_PROD/text()</valeur>
+ </champ>
+ <champ id="lr23" libelle="CTR_NUMBER">
+ <valeur>n:CTR_NUMBER/text()</valeur>
+ </champ>
+ <champ id="lr24" libelle="UNIT_PRICE">
+ <valeur>n:UNIT_PRICE/text()</valeur>
+ </champ>
+ <champ id="lr25" libelle="UNIT">
+ <valeur>n:UNIT/text()</valeur>
+ </champ>
+ <champ id="lr26" libelle="TAX_CODE">
+ <valeur>n:TAX_CODE/text()</valeur>
+ </champ>
+ <champ id="lr27" libelle="QUANTITY">
+ <valeur>n:QUANTITY/text()</valeur>
+ </champ>
+ <champ id="lr28" libelle="GROSS_PRICE">
+ <valeur>n:GROSS_PRICE/text()</valeur>
+ </champ>
+</liste-resultat>
+ <critere id="CRI_FEN0067A_DA_POSTE_BE_PUR_GROUP" libelle="BE_PUR_GROUP">
+ <path>{##OPERATEUR:BE_PUR_GROUP##(n:BE_PUR_GROUP/text(),"##VALEUR:BE_PUR_GROUP##")}</path>
+ <input id="BE_PUR_GROUP" datatype="string"/>
+ </critere>
+ <critere id="CRI_FEN0067A_DA_POSTE_LINETXT" libelle="LineTxt">
+ <path>{##OPERATEUR:LineTxt##(@LineTxt,"##VALEUR:LineTxt##")}</path>
+ <input id="LineTxt" datatype="string"/>
+ </critere>
+ <critere id="CRI_FEN0067A_DA_POSTE_ID_LIG" libelle="ID_LIG">
+ <path>{##OPERATEUR:ID_LIG##(n:ID_LIG/text(),"##VALEUR:ID_LIG##")}</path>
+ <input id="ID_LIG" datatype="string"/>
+ </critere>
+ <critere id="CRI_FEN0067A_DA_POSTE_STGE_LOC" libelle="STGE_LOC">
+ <path>{##OPERATEUR:STGE_LOC##(n:STGE_LOC/text(),"##VALEUR:STGE_LOC##")}</path>
+ <input id="STGE_LOC" datatype="string"/>
+ </critere>
+ <critere id="CRI_FEN0067A_DA_POSTE_PRICE" libelle="PRICE">
+ <path>{##OPERATEUR:PRICE##(n:PRICE/text(),"##VALEUR:PRICE##")}</path>
+ <input id="PRICE" datatype="string"/>
+ </critere>
+ <critere id="CRI_FEN0067A_DA_POSTE_CTR_ITEM_NUMBER" libelle="CTR_ITEM_NUMBER">
+ <path>{##OPERATEUR:CTR_ITEM_NUMBER##(n:CTR_ITEM_NUMBER/text(),"##VALEUR:CTR_ITEM_NUMBER##")}</path>
+ <input id="CTR_ITEM_NUMBER" datatype="string"/>
+ </critere>
+ <critere id="CRI_FEN0067A_DA_POSTE_ID_AE" libelle="ID_AE">
+ <path>{##OPERATEUR:ID_AE##(n:ID_AE/text(),"##VALEUR:ID_AE##")}</path>
+ <input id="ID_AE" datatype="string"/>
+ </critere>
+ <critere id="CRI_FEN0067A_DA_POSTE_ID_FONC_PROD" libelle="ID_FONC_PROD">
+ <path>{##OPERATEUR:ID_FONC_PROD##(n:ID_FONC_PROD/text(),"##VALEUR:ID_FONC_PROD##")}</path>
+ <input id="ID_FONC_PROD" datatype="string"/>
+ </critere>
+ <critere id="CRI_FEN0067A_DA_POSTE_PARTNER_PROD" libelle="PARTNER_PROD">
+ <path>{##OPERATEUR:PARTNER_PROD##(n:PARTNER_PROD/text(),"##VALEUR:PARTNER_PROD##")}</path>
+ <input id="PARTNER_PROD" datatype="string"/>
+ </critere>
+ <critere id="CRI_FEN0067A_DA_POSTE_TYPE_ID_FONC" libelle="TYPE_ID_FONC">
+ <path>{##OPERATEUR:TYPE_ID_FONC##(n:TYPE_ID_FONC/text(),"##VALEUR:TYPE_ID_FONC##")}</path>
+ <input id="TYPE_ID_FONC" datatype="string"/>
+ </critere>
+ <critere id="CRI_FEN0067A_DA_POSTE_BE_PLANT" libelle="BE_PLANT">
+ <path>{##OPERATEUR:BE_PLANT##(n:BE_PLANT/text(),"##VALEUR:BE_PLANT##")}</path>
+ <input id="BE_PLANT" datatype="string"/>
+ </critere>
+ <critere id="CRI_FEN0067A_DA_POSTE_CATEGORY_ID" libelle="CATEGORY_ID">
+ <path>{##OPERATEUR:CATEGORY_ID##(n:CATEGORY_ID/text(),"##VALEUR:CATEGORY_ID##")}</path>
+ <input id="CATEGORY_ID" datatype="string"/>
+ </critere>
+ <critere id="CRI_FEN0067A_DA_POSTE_DESCRIPTION" libelle="DESCRIPTION">
+ <path>{##OPERATEUR:DESCRIPTION##(n:DESCRIPTION/text(),"##VALEUR:DESCRIPTION##")}</path>
+ <input id="DESCRIPTION" datatype="string"/>
+ </critere>
+ <critere id="CRI_FEN0067A_DA_POSTE_DELIV_DATE" libelle="DELIV_DATE">
+ <path>{##OPERATEUR:DELIV_DATE##(n:DELIV_DATE/text(),"##VALEUR:DELIV_DATE##")}</path>
+ <input id="DELIV_DATE" datatype="string"/>
+ </critere>
+ <critere id="CRI_FEN0067A_DA_POSTE_ID_CHORUS_PROD" libelle="ID_CHORUS_PROD">
+ <path>{##OPERATEUR:ID_CHORUS_PROD##(n:ID_CHORUS_PROD/text(),"##VALEUR:ID_CHORUS_PROD##")}</path>
+ <input id="ID_CHORUS_PROD" datatype="string"/>
+ </critere>
+ <critere id="CRI_FEN0067A_DA_POSTE_CTR_NUMBER" libelle="CTR_NUMBER">
+ <path>{##OPERATEUR:CTR_NUMBER##(n:CTR_NUMBER/text(),"##VALEUR:CTR_NUMBER##")}</path>
+ <input id="CTR_NUMBER" datatype="string"/>
+ </critere>
+ <critere id="CRI_FEN0067A_DA_POSTE_UNIT_PRICE" libelle="UNIT_PRICE">
+ <path>{##OPERATEUR:UNIT_PRICE##(n:UNIT_PRICE/text(),"##VALEUR:UNIT_PRICE##")}</path>
+ <input id="UNIT_PRICE" datatype="string"/>
+ </critere>
+ <critere id="CRI_FEN0067A_DA_POSTE_UNIT" libelle="UNIT">
+ <path>{##OPERATEUR:UNIT##(n:UNIT/text(),"##VALEUR:UNIT##")}</path>
+ <input id="UNIT" datatype="string"/>
+ </critere>
+ <critere id="CRI_FEN0067A_DA_POSTE_TAX_CODE" libelle="TAX_CODE">
+ <path>{##OPERATEUR:TAX_CODE##(n:TAX_CODE/text(),"##VALEUR:TAX_CODE##")}</path>
+ <input id="TAX_CODE" datatype="string"/>
+ </critere>
+ <critere id="CRI_FEN0067A_DA_POSTE_QUANTITY" libelle="QUANTITY">
+ <path>{##OPERATEUR:QUANTITY##(n:QUANTITY/text(),"##VALEUR:QUANTITY##")}</path>
+ <input id="QUANTITY" datatype="string"/>
+ </critere>
+ <critere id="CRI_FEN0067A_DA_POSTE_GROSS_PRICE" libelle="GROSS_PRICE">
+ <path>{##OPERATEUR:GROSS_PRICE##(n:GROSS_PRICE/text(),"##VALEUR:GROSS_PRICE##")}</path>
+ <input id="GROSS_PRICE" datatype="string"/>
+ </critere>
+</element>
+<element balise="IMPUTATION" id="IMPUTATION" max-display="500" titre="IMPUTATION">
+ <path>/n:DocDemandeAchat/n:FEN0067A/n:DA/n:IMPUTATION</path>
+<liste-resultat ordre="ASC" tri-defaut="lr29">
+ <champ id="lr29" libelle="TRC_FONC">
+ <valeur>n:TRC_FONC/text()</valeur>
+ </champ>
+ <champ id="lr30" libelle="LineTxt">
+ <valeur>@LineTxt</valeur>
+ </champ>
+ <champ id="lr31" libelle="ID_LIG">
+ <valeur>n:ID_LIG/text()</valeur>
+ </champ>
+ <champ id="lr32" libelle="SUB_NUMBER">
+ <valeur>n:SUB_NUMBER/text()</valeur>
+ </champ>
+ <champ id="lr33" libelle="ANA_MIN">
+ <valeur>n:ANA_MIN/text()</valeur>
+ </champ>
+ <champ id="lr34" libelle="COST_CTR">
+ <valeur>n:COST_CTR/text()</valeur>
+ </champ>
+ <champ id="lr35" libelle="BUS_AREA">
+ <valeur>n:BUS_AREA/text()</valeur>
+ </champ>
+ <champ id="lr36" libelle="FUNC_AREA">
+ <valeur>n:FUNC_AREA/text()</valeur>
+ </champ>
+ <champ id="lr37" libelle="ID_AE">
+ <valeur>n:ID_AE/text()</valeur>
+ </champ>
+ <champ id="lr38" libelle="LOC_MIN">
+ <valeur>n:LOC_MIN/text()</valeur>
+ </champ>
+ <champ id="lr39" libelle="GL_ACCT">
+ <valeur>n:GL_ACCT/text()</valeur>
+ </champ>
+ <champ id="lr40" libelle="NAT_MIN">
+ <valeur>n:NAT_MIN/text()</valeur>
+ </champ>
+ <champ id="lr41" libelle="WBS_ELEM">
+ <valeur>n:WBS_ELEM/text()</valeur>
+ </champ>
+ <champ id="lr42" libelle="FUND">
+ <valeur>n:FUND/text()</valeur>
+ </champ>
+ <champ id="lr43" libelle="ASSET_NO">
+ <valeur>n:ASSET_NO/text()</valeur>
+ </champ>
+ <champ id="lr44" libelle="CMMT_ITEM">
+ <valeur>n:CMMT_ITEM/text()</valeur>
+ </champ>
+ <champ id="lr45" libelle="ACC_CAT">
+ <valeur>n:ACC_CAT/text()</valeur>
+ </champ>
+ <champ id="lr46" libelle="ACTIVITY">
+ <valeur>n:ACTIVITY/text()</valeur>
+ </champ>
+ <champ id="lr47" libelle="LOC_INT">
+ <valeur>n:LOC_INT/text()</valeur>
+ </champ>
+ <champ id="lr48" libelle="RES_ITEM">
+ <valeur>n:RES_ITEM/text()</valeur>
+ </champ>
+ <champ id="lr49" libelle="PRESAGE">
+ <valeur>n:PRESAGE/text()</valeur>
+ </champ>
+ <champ id="lr50" libelle="AXMIN2">
+ <valeur>n:AXMIN2/text()</valeur>
+ </champ>
+ <champ id="lr51" libelle="RES_DOC">
+ <valeur>n:RES_DOC/text()</valeur>
+ </champ>
+ <champ id="lr52" libelle="AXMIN1">
+ <valeur>n:AXMIN1/text()</valeur>
+ </champ>
+ <champ id="lr53" libelle="CPER">
+ <valeur>n:CPER/text()</valeur>
+ </champ>
+ <champ id="lr54" libelle="FUNDS_CTR">
+ <valeur>n:FUNDS_CTR/text()</valeur>
+ </champ>
+</liste-resultat>
+ <critere id="CRI_FEN0067A_DA_IMPUTATION_TRC_FONC" libelle="TRC_FONC">
+ <path>{##OPERATEUR:TRC_FONC##(n:TRC_FONC/text(),"##VALEUR:TRC_FONC##")}</path>
+ <input id="TRC_FONC" datatype="string"/>
+ </critere>
+ <critere id="CRI_FEN0067A_DA_IMPUTATION_LINETXT" libelle="LineTxt">
+ <path>{##OPERATEUR:LineTxt##(@LineTxt,"##VALEUR:LineTxt##")}</path>
+ <input id="LineTxt" datatype="string"/>
+ </critere>
+ <critere id="CRI_FEN0067A_DA_IMPUTATION_ID_LIG" libelle="ID_LIG">
+ <path>{##OPERATEUR:ID_LIG##(n:ID_LIG/text(),"##VALEUR:ID_LIG##")}</path>
+ <input id="ID_LIG" datatype="string"/>
+ </critere>
+ <critere id="CRI_FEN0067A_DA_IMPUTATION_SUB_NUMBER" libelle="SUB_NUMBER">
+ <path>{##OPERATEUR:SUB_NUMBER##(n:SUB_NUMBER/text(),"##VALEUR:SUB_NUMBER##")}</path>
+ <input id="SUB_NUMBER" datatype="string"/>
+ </critere>
+ <critere id="CRI_FEN0067A_DA_IMPUTATION_ANA_MIN" libelle="ANA_MIN">
+ <path>{##OPERATEUR:ANA_MIN##(n:ANA_MIN/text(),"##VALEUR:ANA_MIN##")}</path>
+ <input id="ANA_MIN" datatype="string"/>
+ </critere>
+ <critere id="CRI_FEN0067A_DA_IMPUTATION_COST_CTR" libelle="COST_CTR">
+ <path>{##OPERATEUR:COST_CTR##(n:COST_CTR/text(),"##VALEUR:COST_CTR##")}</path>
+ <input id="COST_CTR" datatype="string"/>
+ </critere>
+ <critere id="CRI_FEN0067A_DA_IMPUTATION_BUS_AREA" libelle="BUS_AREA">
+ <path>{##OPERATEUR:BUS_AREA##(n:BUS_AREA/text(),"##VALEUR:BUS_AREA##")}</path>
+ <input id="BUS_AREA" datatype="string"/>
+ </critere>
+ <critere id="CRI_FEN0067A_DA_IMPUTATION_FUNC_AREA" libelle="FUNC_AREA">
+ <path>{##OPERATEUR:FUNC_AREA##(n:FUNC_AREA/text(),"##VALEUR:FUNC_AREA##")}</path>
+ <input id="FUNC_AREA" datatype="string"/>
+ </critere>
+ <critere id="CRI_FEN0067A_DA_IMPUTATION_ID_AE" libelle="ID_AE">
+ <path>{##OPERATEUR:ID_AE##(n:ID_AE/text(),"##VALEUR:ID_AE##")}</path>
+ <input id="ID_AE" datatype="string"/>
+ </critere>
+ <critere id="CRI_FEN0067A_DA_IMPUTATION_LOC_MIN" libelle="LOC_MIN">
+ <path>{##OPERATEUR:LOC_MIN##(n:LOC_MIN/text(),"##VALEUR:LOC_MIN##")}</path>
+ <input id="LOC_MIN" datatype="string"/>
+ </critere>
+ <critere id="CRI_FEN0067A_DA_IMPUTATION_GL_ACCT" libelle="GL_ACCT">
+ <path>{##OPERATEUR:GL_ACCT##(n:GL_ACCT/text(),"##VALEUR:GL_ACCT##")}</path>
+ <input id="GL_ACCT" datatype="string"/>
+ </critere>
+ <critere id="CRI_FEN0067A_DA_IMPUTATION_NAT_MIN" libelle="NAT_MIN">
+ <path>{##OPERATEUR:NAT_MIN##(n:NAT_MIN/text(),"##VALEUR:NAT_MIN##")}</path>
+ <input id="NAT_MIN" datatype="string"/>
+ </critere>
+ <critere id="CRI_FEN0067A_DA_IMPUTATION_WBS_ELEM" libelle="WBS_ELEM">
+ <path>{##OPERATEUR:WBS_ELEM##(n:WBS_ELEM/text(),"##VALEUR:WBS_ELEM##")}</path>
+ <input id="WBS_ELEM" datatype="string"/>
+ </critere>
+ <critere id="CRI_FEN0067A_DA_IMPUTATION_FUND" libelle="FUND">
+ <path>{##OPERATEUR:FUND##(n:FUND/text(),"##VALEUR:FUND##")}</path>
+ <input id="FUND" datatype="string"/>
+ </critere>
+ <critere id="CRI_FEN0067A_DA_IMPUTATION_ASSET_NO" libelle="ASSET_NO">
+ <path>{##OPERATEUR:ASSET_NO##(n:ASSET_NO/text(),"##VALEUR:ASSET_NO##")}</path>
+ <input id="ASSET_NO" datatype="string"/>
+ </critere>
+ <critere id="CRI_FEN0067A_DA_IMPUTATION_CMMT_ITEM" libelle="CMMT_ITEM">
+ <path>{##OPERATEUR:CMMT_ITEM##(n:CMMT_ITEM/text(),"##VALEUR:CMMT_ITEM##")}</path>
+ <input id="CMMT_ITEM" datatype="string"/>
+ </critere>
+ <critere id="CRI_FEN0067A_DA_IMPUTATION_ACC_CAT" libelle="ACC_CAT">
+ <path>{##OPERATEUR:ACC_CAT##(n:ACC_CAT/text(),"##VALEUR:ACC_CAT##")}</path>
+ <input id="ACC_CAT" datatype="string"/>
+ </critere>
+ <critere id="CRI_FEN0067A_DA_IMPUTATION_ACTIVITY" libelle="ACTIVITY">
+ <path>{##OPERATEUR:ACTIVITY##(n:ACTIVITY/text(),"##VALEUR:ACTIVITY##")}</path>
+ <input id="ACTIVITY" datatype="string"/>
+ </critere>
+ <critere id="CRI_FEN0067A_DA_IMPUTATION_LOC_INT" libelle="LOC_INT">
+ <path>{##OPERATEUR:LOC_INT##(n:LOC_INT/text(),"##VALEUR:LOC_INT##")}</path>
+ <input id="LOC_INT" datatype="string"/>
+ </critere>
+ <critere id="CRI_FEN0067A_DA_IMPUTATION_RES_ITEM" libelle="RES_ITEM">
+ <path>{##OPERATEUR:RES_ITEM##(n:RES_ITEM/text(),"##VALEUR:RES_ITEM##")}</path>
+ <input id="RES_ITEM" datatype="string"/>
+ </critere>
+ <critere id="CRI_FEN0067A_DA_IMPUTATION_PRESAGE" libelle="PRESAGE">
+ <path>{##OPERATEUR:PRESAGE##(n:PRESAGE/text(),"##VALEUR:PRESAGE##")}</path>
+ <input id="PRESAGE" datatype="string"/>
+ </critere>
+ <critere id="CRI_FEN0067A_DA_IMPUTATION_AXMIN2" libelle="AXMIN2">
+ <path>{##OPERATEUR:AXMIN2##(n:AXMIN2/text(),"##VALEUR:AXMIN2##")}</path>
+ <input id="AXMIN2" datatype="string"/>
+ </critere>
+ <critere id="CRI_FEN0067A_DA_IMPUTATION_RES_DOC" libelle="RES_DOC">
+ <path>{##OPERATEUR:RES_DOC##(n:RES_DOC/text(),"##VALEUR:RES_DOC##")}</path>
+ <input id="RES_DOC" datatype="string"/>
+ </critere>
+ <critere id="CRI_FEN0067A_DA_IMPUTATION_AXMIN1" libelle="AXMIN1">
+ <path>{##OPERATEUR:AXMIN1##(n:AXMIN1/text(),"##VALEUR:AXMIN1##")}</path>
+ <input id="AXMIN1" datatype="string"/>
+ </critere>
+ <critere id="CRI_FEN0067A_DA_IMPUTATION_CPER" libelle="CPER">
+ <path>{##OPERATEUR:CPER##(n:CPER/text(),"##VALEUR:CPER##")}</path>
+ <input id="CPER" datatype="string"/>
+ </critere>
+ <critere id="CRI_FEN0067A_DA_IMPUTATION_FUNDS_CTR" libelle="FUNDS_CTR">
+ <path>{##OPERATEUR:FUNDS_CTR##(n:FUNDS_CTR/text(),"##VALEUR:FUNDS_CTR##")}</path>
+ <input id="FUNDS_CTR" datatype="string"/>
+ </critere>
+</element>
+<element balise="PARTENAIRE" id="PARTENAIRE" max-display="500" titre="PARTENAIRE">
+ <path>/n:DocDemandeAchat/n:FEN0067A/n:DA/n:PARTENAIRE</path>
+<liste-resultat ordre="ASC" tri-defaut="lr55">
+ <champ id="lr55" libelle="CITY">
+ <valeur>CITY/text()</valeur>
+ </champ>
+ <champ id="lr56" libelle="E_MAIL">
+ <valeur>n:E_MAIL/text()</valeur>
+ </champ>
+ <champ id="lr57" libelle="ADDR_ORIGIN">
+ <valeur>n:ADDR_ORIGIN/text()</valeur>
+ </champ>
+ <champ id="lr58" libelle="LineTxt">
+ <valeur>@LineTxt</valeur>
+ </champ>
+ <champ id="lr59" libelle="ID_LIG">
+ <valeur>n:ID_LIG/text()</valeur>
+ </champ>
+ <champ id="lr60" libelle="COUNTRY">
+ <valeur>n:COUNTRY/text()</valeur>
+ </champ>
+ <champ id="lr61" libelle="POSTL_COD">
+ <valeur>n:POSTL_COD/text()</valeur>
+ </champ>
+ <champ id="lr62" libelle="FAX_NUMBER">
+ <valeur>n:FAX_NUMBER/text()</valeur>
+ </champ>
+ <champ id="lr63" libelle="NAME">
+ <valeur>n:NAME/text()</valeur>
+ </champ>
+ <champ id="lr64" libelle="PARTNER_FCT">
+ <valeur>n:PARTNER_FCT/text()</valeur>
+ </champ>
+ <champ id="lr65" libelle="FLOOR">
+ <valeur>n:FLOOR/text()</valeur>
+ </champ>
+ <champ id="lr66" libelle="ID_AE">
+ <valeur>n:ID_AE/text()</valeur>
+ </champ>
+ <champ id="lr67" libelle="ADDR_TYPE">
+ <valeur>n:ADDR_TYPE/text()</valeur>
+ </champ>
+ <champ id="lr68" libelle="ROOM_NO">
+ <valeur>n:ROOM_NO/text()</valeur>
+ </champ>
+ <champ id="lr69" libelle="HOUSE_NO">
+ <valeur>n:HOUSE_NO/text()</valeur>
+ </champ>
+ <champ id="lr70" libelle="ID_FONC_PARTNER">
+ <valeur>n:ID_FONC_PARTNER/text()</valeur>
+ </champ>
+ <champ id="lr71" libelle="TEL_NUMBR">
+ <valeur>n:TEL_NUMBR/text()</valeur>
+ </champ>
+ <champ id="lr72" libelle="PARTNER_TYP">
+ <valeur>n:PARTNER_TYP/text()</valeur>
+ </champ>
+ <champ id="lr73" libelle="ID_CHORUS_PARTNER">
+ <valeur>n:ID_CHORUS_PARTNER/text()</valeur>
+ </champ>
+ <champ id="lr74" libelle="BUILDING">
+ <valeur>n:BUILDING/text()</valeur>
+ </champ>
+ <champ id="lr75" libelle="STREET">
+ <valeur>n:STREET/text()</valeur>
+ </champ>
+</liste-resultat>
+ <critere id="CRI_FEN0067A_DA_PARTENAIRE_CITY" libelle="CITY">
+ <path>{##OPERATEUR:CITY##(n:CITY/text(),"##VALEUR:CITY##")}</path>
+ <input id="CITY" datatype="string"/>
+ </critere>
+ <critere id="CRI_FEN0067A_DA_PARTENAIRE_E_MAIL" libelle="E_MAIL">
+ <path>{##OPERATEUR:E_MAIL##(n:E_MAIL/text(),"##VALEUR:E_MAIL##")}</path>
+ <input id="E_MAIL" datatype="string"/>
+ </critere>
+ <critere id="CRI_FEN0067A_DA_PARTENAIRE_ADDR_ORIGIN" libelle="ADDR_ORIGIN">
+ <path>{##OPERATEUR:ADDR_ORIGIN##(n:ADDR_ORIGIN/text(),"##VALEUR:ADDR_ORIGIN##")}</path>
+ <input id="ADDR_ORIGIN" datatype="string"/>
+ </critere>
+ <critere id="CRI_FEN0067A_DA_PARTENAIRE_LINETXT" libelle="LineTxt">
+ <path>{##OPERATEUR:LineTxt##(@LineTxt,"##VALEUR:LineTxt##")}</path>
+ <input id="LineTxt" datatype="string"/>
+ </critere>
+ <critere id="CRI_FEN0067A_DA_PARTENAIRE_ID_LIG" libelle="ID_LIG">
+ <path>{##OPERATEUR:ID_LIG##(n:ID_LIG/text(),"##VALEUR:ID_LIG##")}</path>
+ <input id="ID_LIG" datatype="string"/>
+ </critere>
+ <critere id="CRI_FEN0067A_DA_PARTENAIRE_COUNTRY" libelle="COUNTRY">
+ <path>{##OPERATEUR:COUNTRY##(n:COUNTRY/text(),"##VALEUR:COUNTRY##")}</path>
+ <input id="COUNTRY" datatype="string"/>
+ </critere>
+ <critere id="CRI_FEN0067A_DA_PARTENAIRE_POSTL_COD" libelle="POSTL_COD">
+ <path>{##OPERATEUR:POSTL_COD##(n:POSTL_COD/text(),"##VALEUR:POSTL_COD##")}</path>
+ <input id="POSTL_COD" datatype="string"/>
+ </critere>
+ <critere id="CRI_FEN0067A_DA_PARTENAIRE_FAX_NUMBER" libelle="FAX_NUMBER">
+ <path>{##OPERATEUR:FAX_NUMBER##(n:FAX_NUMBER/text(),"##VALEUR:FAX_NUMBER##")}</path>
+ <input id="FAX_NUMBER" datatype="string"/>
+ </critere>
+ <critere id="CRI_FEN0067A_DA_PARTENAIRE_NAME" libelle="NAME">
+ <path>{##OPERATEUR:NAME##(n:NAME/text(),"##VALEUR:NAME##")}</path>
+ <input id="NAME" datatype="string"/>
+ </critere>
+ <critere id="CRI_FEN0067A_DA_PARTENAIRE_PARTNER_FCT" libelle="PARTNER_FCT">
+ <path>{##OPERATEUR:PARTNER_FCT##(n:PARTNER_FCT/text(),"##VALEUR:PARTNER_FCT##")}</path>
+ <input id="PARTNER_FCT" datatype="string"/>
+ </critere>
+ <critere id="CRI_FEN0067A_DA_PARTENAIRE_FLOOR" libelle="FLOOR">
+ <path>{##OPERATEUR:FLOOR##(n:FLOOR/text(),"##VALEUR:FLOOR##")}</path>
+ <input id="FLOOR" datatype="string"/>
+ </critere>
+ <critere id="CRI_FEN0067A_DA_PARTENAIRE_ID_AE" libelle="ID_AE">
+ <path>{##OPERATEUR:ID_AE##(n:ID_AE/text(),"##VALEUR:ID_AE##")}</path>
+ <input id="ID_AE" datatype="string"/>
+ </critere>
+ <critere id="CRI_FEN0067A_DA_PARTENAIRE_ADDR_TYPE" libelle="ADDR_TYPE">
+ <path>{##OPERATEUR:ADDR_TYPE##(n:ADDR_TYPE/text(),"##VALEUR:ADDR_TYPE##")}</path>
+ <input id="ADDR_TYPE" datatype="string"/>
+ </critere>
+ <critere id="CRI_FEN0067A_DA_PARTENAIRE_ROOM_NO" libelle="ROOM_NO">
+ <path>{##OPERATEUR:ROOM_NO##(n:ROOM_NO/text(),"##VALEUR:ROOM_NO##")}</path>
+ <input id="ROOM_NO" datatype="string"/>
+ </critere>
+ <critere id="CRI_FEN0067A_DA_PARTENAIRE_HOUSE_NO" libelle="HOUSE_NO">
+ <path>{##OPERATEUR:HOUSE_NO##(n:HOUSE_NO/text(),"##VALEUR:HOUSE_NO##")}</path>
+ <input id="HOUSE_NO" datatype="string"/>
+ </critere>
+ <critere id="CRI_FEN0067A_DA_PARTENAIRE_ID_FONC_PARTNER" libelle="ID_FONC_PARTNER">
+ <path>{##OPERATEUR:ID_FONC_PARTNER##(n:ID_FONC_PARTNER/text(),"##VALEUR:ID_FONC_PARTNER##")}</path>
+ <input id="ID_FONC_PARTNER" datatype="string"/>
+ </critere>
+ <critere id="CRI_FEN0067A_DA_PARTENAIRE_TEL_NUMBR" libelle="TEL_NUMBR">
+ <path>{##OPERATEUR:TEL_NUMBR##(n:TEL_NUMBR/text(),"##VALEUR:TEL_NUMBR##")}</path>
+ <input id="TEL_NUMBR" datatype="string"/>
+ </critere>
+ <critere id="CRI_FEN0067A_DA_PARTENAIRE_PARTNER_TYP" libelle="PARTNER_TYP">
+ <path>{##OPERATEUR:PARTNER_TYP##(n:PARTNER_TYP/text(),"##VALEUR:PARTNER_TYP##")}</path>
+ <input id="PARTNER_TYP" datatype="string"/>
+ </critere>
+ <critere id="CRI_FEN0067A_DA_PARTENAIRE_ID_CHORUS_PARTNER" libelle="ID_CHORUS_PARTNER">
+ <path>{##OPERATEUR:ID_CHORUS_PARTNER##(n:ID_CHORUS_PARTNER/text(),"##VALEUR:ID_CHORUS_PARTNER##")}</path>
+ <input id="ID_CHORUS_PARTNER" datatype="string"/>
+ </critere>
+ <critere id="CRI_FEN0067A_DA_PARTENAIRE_BUILDING" libelle="BUILDING">
+ <path>{##OPERATEUR:BUILDING##(n:BUILDING/text(),"##VALEUR:BUILDING##")}</path>
+ <input id="BUILDING" datatype="string"/>
+ </critere>
+ <critere id="CRI_FEN0067A_DA_PARTENAIRE_STREET" libelle="STREET">
+ <path>{##OPERATEUR:STREET##(n:STREET/text(),"##VALEUR:STREET##")}</path>
+ <input id="STREET" datatype="string"/>
+ </critere>
+</element>
+<element balise="TEXTE" id="TEXTE" max-display="500" titre="TEXTE">
+ <path>/n:DocDemandeAchat/n:FEN0067A/n:DA/n:TEXTE</path>
+<liste-resultat ordre="ASC" tri-defaut="lr76">
+ <champ id="lr76" libelle="ID_AE">
+ <valeur>n:ID_AE/text()</valeur>
+ </champ>
+ <champ id="lr77" libelle="LineTxt">
+ <valeur>@LineTxt</valeur>
+ </champ>
+ <champ id="lr78" libelle="TEXT_LINE">
+ <valeur>n:TEXT_LINE/text()</valeur>
+ </champ>
+ <champ id="lr79" libelle="ID_LIG">
+ <valeur>n:ID_LIG/text()</valeur>
+ </champ>
+ <champ id="lr80" libelle="TEXT_ID">
+ <valeur>n:TEXT_ID/text()</valeur>
+ </champ>
+</liste-resultat>
+ <critere id="CRI_FEN0067A_DA_TEXTE_ID_AE" libelle="ID_AE">
+ <path>{##OPERATEUR:ID_AE##(n:ID_AE/text(),"##VALEUR:ID_AE##")}</path>
+ <input id="ID_AE" datatype="string"/>
+ </critere>
+ <critere id="CRI_FEN0067A_DA_TEXTE_LINETXT" libelle="LineTxt">
+ <path>{##OPERATEUR:LineTxt##(@LineTxt,"##VALEUR:LineTxt##")}</path>
+ <input id="LineTxt" datatype="string"/>
+ </critere>
+ <critere id="CRI_FEN0067A_DA_TEXTE_TEXT_LINE" libelle="TEXT_LINE">
+ <path>{##OPERATEUR:TEXT_LINE##(n:TEXT_LINE/text(),"##VALEUR:TEXT_LINE##")}</path>
+ <input id="TEXT_LINE" datatype="string"/>
+ </critere>
+ <critere id="CRI_FEN0067A_DA_TEXTE_ID_LIG" libelle="ID_LIG">
+ <path>{##OPERATEUR:ID_LIG##(n:ID_LIG/text(),"##VALEUR:ID_LIG##")}</path>
+ <input id="ID_LIG" datatype="string"/>
+ </critere>
+ <critere id="CRI_FEN0067A_DA_TEXTE_TEXT_ID" libelle="TEXT_ID">
+ <path>{##OPERATEUR:TEXT_ID##(n:TEXT_ID/text(),"##VALEUR:TEXT_ID##")}</path>
+ <input id="TEXT_ID" datatype="string"/>
+ </critere>
+</element>
+</etat>
+
+ </document>
+</documents>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<controls>
+ <document id="DocDemandeAchat">
+ <collectivite-path sort="2">
+ <code-path>/FEN0067A/@added:collectivite</code-path>
+ <libelle-path>/FEN0067A/@added:collectivite</libelle-path>
+ </collectivite-path>
+ <engine xmlns="">
+ <add-on name="unique.id.generator">
+ <param id="element.name" name="element.name" datatype="string" value="DA"/>
+ <param id="generated.attribute" name="generated.attribute" datatype="string" value="ano:unique-id"/>
+ <param id="processor" name="processor" datatype="string" value="fr.gouv.finances.cp.xemelios.controls.processors.IdGeneratorProcessor"/>
+ <param id="event" name="event" datatype="string" value="start.element"/>
+ <param id="generator" name="generator" datatype="string" value="fr.gouv.finances.cp.xemelios.controls.processors.impl.TstampIPUniqueId"/></add-on>
+ <add-on name="collectivite.generator">
+ <param id="element.name" name="element.name" datatype="string" value="FEN0067A"/>
+ <param id="processor" name="processor" datatype="string" value="fr.gouv.finances.dgfip.xemelios.demandeachat.CollectiviteGenerator"/>
+ <param id="event" name="event" datatype="string" value="start.element"/></add-on>
+ </engine>
+ <controlTech id="TECH02" libelle="Contrôle de l'encoding du fichier." severity="BLOQUANT">
+ <paramTech id="encoding1" name="encoding" value="ISO-8859-15"/>
+ <paramTech id="failOnError" name="failOnError" value="false"/></controlTech>
+ <controlTech id="TECH03" libelle="Contrôle de la conformance au schéma." severity="NON BLOQUANT">
+ <paramTech id="schemaLocation" name="schemaLocation" value="fen0067a/schema/AX-FEN0067A_V3.xsd"/>
+ <paramTech id="failOnError" name="failOnError" value="false"/>
+ <ignore-regexp>.*txt2xml[:]LineTxt.*</ignore-regexp>
+ <ignore-regexp>.*txt2xml[:]TxtValue.*</ignore-regexp>
+ </controlTech>
+ <control id="CTL-M105" libelle="Contrôle de la valeur du champ type d'imputation et du caractère obligatoire des champs correspondants" severity="BLOQUANT" class="fr.gouv.finances.dgfip.xemelios.controls.demandeachat.M105">
+ <regle-fonctionnelle><![CDATA[ <ul> Si type d'imputation = 'U':
+ <li> aucun champ obligatoire </li>
+ Si type d'imputation = 'S', 'W' ou 'Z' :
+ <li> 5 champs oligatoires, sauf si RES_DOC est renseigné, cf RG07 Format AE.</li> </ul>]]></regle-fonctionnelle>
+ <message-echec>DA =#DA_ID#_ID-IDIMPUTATION= #IDIMPUTATION#_ID-LIG=#ID_LIG# : Type d'imputation
+ non autorisé ou champs obligatoires non renseignés sur la ligne d'imputation.
+ </message-echec>
+ </control>
+ <control id="CTL-M015" libelle="Contrôle sur le type de partenaire" severity="BLOQUANT" class="fr.gouv.finances.dgfip.xemelios.controls.demandeachat.M015">
+ <regle-fonctionnelle><![CDATA[ La zone AE PARTNER_FCT peut prendre les valeurs suivantes : <br/>
+ <ul><li> '00000075' </li>
+ <li>'00000016'</li>
+ <li>'00000027'</li>
+ <li>'00000039'</li>
+ </ul>]]></regle-fonctionnelle>
+ <message-echec>DA=#ID_AE#_ID-PARTENAIRE=#IDPARTENAIRE#_ID-LIG=#ID_LIG#_PARTNER-FCT=#PARTNER_FCT#:
+ Les valeurs autorisees de la zone AE PARTNER_FCT ne sont pas respectees.
+ </message-echec>
+ </control>
+ <control id="CTL-M018" libelle="Contrôle sur le type de texte descriptif de la commande" severity="BLOQUANT" class="fr.gouv.finances.dgfip.xemelios.controls.demandeachat.M018">
+ <regle-fonctionnelle><![CDATA[ Les types de texte utilisables sont : <br/>
+ <ul><li> « ZFOU » : Fournisseur </li>
+ <li>« ZGEN » : Générique</li>
+ <li>« ZGEN » : Générique</li>
+ <li>« ZNOT » : Note fournisseur poste</li>
+ <li>« ZTXT » : Note interne poste.</li>
+ </ul>]]></regle-fonctionnelle>
+ <message-echec>DA =#DA_ID#_TEXTE-IDAE =#TEXTE_IDAE#_ID-LIG=#ID_LIG#_ TEXTE-ID= #TEXTE_ID# : Ce
+ type de texte n'est pas autorisé ou apparait plusieurs fois par dossier ou par ligne de
+ dossier.
+ </message-echec>
+ </control>
+ <control id="CTL-M167" libelle="Contrôle de la valorisation des champs 'réservation de crédit'" severity="BLOQUANT" class="fr.gouv.finances.dgfip.xemelios.controls.demandeachat.M167">
+ <regle-fonctionnelle><![CDATA[ RES_ITEM doit être valorisé si RES_DOC est renseigné. <br/>]]></regle-fonctionnelle>
+ <message-echec>DA=#DA_ID#_ID-IMPUTATION= #IDIMPUTATION#_ID-LIG=#ID_LIG#: RES_ITEM doit etre
+ valorise si RES_DOC est renseigne.
+ </message-echec>
+ </control>
+ <control id="CTL-M168" libelle="Contrôle de l'origine de l'adresse partenaire" severity="BLOQUANT" class="fr.gouv.finances.dgfip.xemelios.controls.demandeachat.M168">
+ <regle-fonctionnelle><![CDATA[ Le champ ADDR_ORIGIN ne peut être valorisé que par A ou B. <br/>]]></regle-fonctionnelle>
+ <message-echec>DA #DA_ID#_ID-PARTENAIRE #IDPARTENAIRE#_ID-LIG=#ID_LIG#_ADDR-ORIGIN #ADDR_ORIGIN#:
+ Les valeurs autorisees de la zone AE PARTNER_FCT ne sont pas respectees.
+ </message-echec>
+ </control>
+ <control id="CTL-M215" libelle="Contrôle sur l'identifiant du demandeur et de l'adresse de livraison" severity="BLOQUANT" class="fr.gouv.finances.dgfip.xemelios.controls.demandeachat.M215">
+ <regle-fonctionnelle><![CDATA[<br/>
+ <ul> Si le partenaire est de stype « demandeur » (PARTNER_FCT = '00000016') ou de type « adresse de livraison » (PARTNER_FCT = '00000027') alors la valeur de la zone ID_FONC_PARTNER doit être d'une longueur maximale de 12 caractères.
+ </ul>]]></regle-fonctionnelle>
+ <message-echec>DA= #DA_ID#_ID-PARTENAIRE = #IDPARTENAIRE# _ID-LIG=#ID_LIG# _ID-FONC-PARTNER=#ID_FONC_PARTNER# : Le format de la donnee dans la zone Identifiant fonctionnel n'est pas correct. </message-echec>
+ </control>
+ <control id="CTL-M216" libelle="Contrôle sur l'identifiant du partenaire" severity="BLOQUANT" class="fr.gouv.finances.dgfip.xemelios.controls.demandeachat.M216">
+ <regle-fonctionnelle><![CDATA[ En fonction du type de partenaire : <br/>
+ <ul><li> Si PARTNER_FCT = '00000039' et type de tiers different 'ZGEN' alors soit ID_FONC_PARTNER soit ID_CHORUS_PARTNER doit être valorisé.</li>
+ <li> Sinon, si PARTNER_FCT parmi '00000016', '00000027' alors ID_FONC_PARTNER doit être renseigné. </li>
+ <li> Sinon, ID_CHORUS_PARTNER doit être valorisé. </li></ul>]]></regle-fonctionnelle>
+ <message-echec>DA= #DA_ID#_ID-PARTENAIRE = #IDPARTENAIRE# _ID-LIG=#ID_LIG# : Soit le champ ID_FONCT_PARTNER soit le champ ID_CHORUS_PARTNER doit etre valorise.</message-echec>
+ </control>
+ <control id="CTL-M219" libelle="Contrôle de la saisie d'un article ou d'un groupe de marchandise" severity="BLOQUANT" class="fr.gouv.finances.dgfip.xemelios.controls.demandeachat.M219">
+ <regle-fonctionnelle><![CDATA[ L'identifiant chorus de l'article (ID_CHORUS_PROD) ou le groupe de marchandise (CATEGORY_ID) doivent être renseignés. <br/>]]></regle-fonctionnelle>
+ <message-echec>DA= #DA_ID#_ID-POSTE = #IDPOSTE# _ID-LIG=#ID_LIG# : Soit le champ CATEGORY_ID soit le champ ID_CHORUS_PROD doivent êtres valorisés. </message-echec>
+ </control>
+ <control id="CTL-M001" libelle="Contrôle sur les valeurs de la zone AE TYPE_ENR" severity="BLOQUANT" class="fr.gouv.finances.dgfip.xemelios.controls.demandeachat.M001">
+ <regle-fonctionnelle><![CDATA[La zone AE TYPE_ENR ne peut prendre que les valeurs : 'E', 'L','I','T' et 'P'.<br/>]]></regle-fonctionnelle>
+ <message-echec>DA N° #NOMBRE_DA#_TYPE_ENR= #LIGNE_INCONNUE# :La zone AE TYPE_ENR est incorrecte.</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">
+ <!-- persistence-model defines the way informations are defined -->
+ <!-- only xemelios-sql is defined at this moment -->
+ <document id="DocDemandeAchat" repository-import-xslt-file="">
+ <table type="repository" base-name="FEN0067A_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="FEN0067A_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, LIB1 VARCHAR(200), LIB2 VARCHAR(200), key1 VARCHAR(100), LIB3 VARCHAR(200), INDEX IX_${base-name}_BC (COLLECTIVITE,BUDGET) ) ENGINE MYISAM </table>
+ <table type="list-bc" base-name="FEN0067A_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) ) ENGINE MYISAM </table>
+
+ <etat id="FEN0067A" import-xslt-file="fen0067a/etatFen0067a-import-mysql.xsl" >
+
+ <key1>
+ <path>/n:DocDemandeAchat/n:FEN0067A/n:DA/n:POSTE/@added:generated-id</path>
+ </key1>
+ <key2>
+ <path>/n:DocDemandeAchat/n:FEN0067A/n:DA/n:IMPUTATION/@added:generated-id</path>
+ </key2>
+ <key3>
+ <path>/n:DocDemandeAchat/n:FEN0067A/n:DA/n:PARTENAIRE/@added:generated-id</path>
+ </key3>
+ <key4>
+ <path>/n:DocDemandeAchat/n:FEN0067A/n:DA/n:TEXTE/@added:generated-id</path>
+ </key4>
+
+<table type="document" base-name="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)
+ ) ENGINE MYISAM
+</table>
+<table type="index" id="FEN0067A_DA_IX" base-name="FEN0067A_DA_IX" version="2" 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,
+ NODE_ID VARCHAR(50) NOT NULL,
+ LINETXT VARCHAR(255) ,
+ ID_UNIQUE VARCHAR(75),
+ ID_AE VARCHAR(255) ,
+ DESCRIPTION VARCHAR(255) ,
+ DOC_DATE VARCHAR(255) ,
+ INITIATEUR VARCHAR(255) ,
+ CODE_APPLI VARCHAR(255) ,
+ CURRENCY VARCHAR(255) ,
+ INDEX IX_${base-name}_BC (COLLECTIVITE,BUDGET,DOC_ID),
+ INDEX IX_${base-name}_DC (DOC_ID)
+ ) ENGINE MYISAM
+ <patch from-version="1">
+ <sql failonerror="false">ALTER TABLE ${base-name} ADD ID_UNIQUE VARCHAR(75)</sql>
+ </patch>
+</table>
+ <table type="index" id="FEN0067A_DA_POSTE_IX" base-name="FEN0067A_DA_POSTE_IX" version="1" main="false" 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,
+ BE_PUR_GROUP VARCHAR(255) ,
+ LINETXT VARCHAR(255) ,
+ ID_LIG VARCHAR(255) ,
+ STGE_LOC VARCHAR(255) ,
+ PRICE VARCHAR(255) ,
+ CTR_ITEM_NUMBER VARCHAR(255) ,
+ ID_AE VARCHAR(255) ,
+ ID_FONC_PROD VARCHAR(255) ,
+ PARTNER_PROD VARCHAR(255) ,
+ TYPE_ID_FONC VARCHAR(255) ,
+ BE_PLANT VARCHAR(255) ,
+ CATEGORY_ID VARCHAR(255) ,
+ DESCRIPTION VARCHAR(255) ,
+ DELIV_DATE VARCHAR(255) ,
+ ID_CHORUS_PROD VARCHAR(255) ,
+ CTR_NUMBER VARCHAR(255) ,
+ UNIT_PRICE VARCHAR(255) ,
+ UNIT VARCHAR(255) ,
+ TAX_CODE VARCHAR(255) ,
+ QUANTITY VARCHAR(255) ,
+ GROSS_PRICE VARCHAR(255) ,
+ INDEX IX_${base-name}_BC (COLLECTIVITE,BUDGET,DOC_ID),
+ INDEX IX_${base-name}_DC (DOC_ID)
+ ) ENGINE MYISAM
+</table>
+<table type="index" id="FEN0067A_DA_IMPUTATION_IX" base-name="FEN0067A_DA_IMPUTATION_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,
+ TRC_FONC VARCHAR(255) ,
+ LINETXT VARCHAR(255) ,
+ ID_LIG VARCHAR(255) ,
+ SUB_NUMBER VARCHAR(255) ,
+ ANA_MIN VARCHAR(255) ,
+ COST_CTR VARCHAR(255) ,
+ BUS_AREA VARCHAR(255) ,
+ FUNC_AREA VARCHAR(255) ,
+ ID_AE VARCHAR(255) ,
+ LOC_MIN VARCHAR(255) ,
+ GL_ACCT VARCHAR(255) ,
+ NAT_MIN VARCHAR(255) ,
+ WBS_ELEM VARCHAR(255) ,
+ FUND VARCHAR(255) ,
+ ASSET_NO VARCHAR(255) ,
+ CMMT_ITEM VARCHAR(255) ,
+ ACC_CAT VARCHAR(255) ,
+ ACTIVITY VARCHAR(255) ,
+ LOC_INT VARCHAR(255) ,
+ RES_ITEM VARCHAR(255) ,
+ PRESAGE VARCHAR(255) ,
+ AXMIN2 VARCHAR(255) ,
+ RES_DOC VARCHAR(255) ,
+ AXMIN1 VARCHAR(255) ,
+ CPER VARCHAR(255) ,
+ FUNDS_CTR VARCHAR(255) ,
+ INDEX IX_${base-name}_BC (COLLECTIVITE,BUDGET,DOC_ID),
+ INDEX IX_${base-name}_DC (DOC_ID)
+ ) ENGINE MYISAM
+</table>
+<table type="index" id="FEN0067A_DA_PARTENAIRE_IX" base-name="FEN0067A_DA_PARTENAIRE_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,
+ CITY VARCHAR(255) ,
+ E_MAIL VARCHAR(255) ,
+ ADDR_ORIGIN VARCHAR(255) ,
+ LINETXT VARCHAR(255) ,
+ ID_LIG VARCHAR(255) ,
+ COUNTRY VARCHAR(255) ,
+ POSTL_COD VARCHAR(255) ,
+ FAX_NUMBER VARCHAR(255) ,
+ NAME VARCHAR(255) ,
+ PARTNER_FCT VARCHAR(255) ,
+ FLOOR VARCHAR(255) ,
+ ID_AE VARCHAR(255) ,
+ ADDR_TYPE VARCHAR(255) ,
+ ROOM_NO VARCHAR(255) ,
+ HOUSE_NO VARCHAR(255) ,
+ ID_FONC_PARTNER VARCHAR(255) ,
+ TEL_NUMBR VARCHAR(255) ,
+ PARTNER_TYP VARCHAR(255) ,
+ ID_CHORUS_PARTNER VARCHAR(255) ,
+ BUILDING VARCHAR(255) ,
+ STREET VARCHAR(255) ,
+ INDEX IX_${base-name}_BC (COLLECTIVITE,BUDGET,DOC_ID),
+ INDEX IX_${base-name}_DC (DOC_ID)
+ ) ENGINE MYISAM
+</table>
+<table type="index" id="FEN0067A_DA_TEXTE_IX" base-name="FEN0067A_DA_TEXTE_IX" version="1" main="false" based-on="key4">
+ 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_AE VARCHAR(255) ,
+ LINETXT VARCHAR(255) ,
+ TEXT_LINE VARCHAR(255) ,
+ ID_LIG VARCHAR(255) ,
+ TEXT_ID VARCHAR(255) ,
+ INDEX IX_${base-name}_BC (COLLECTIVITE,BUDGET,DOC_ID),
+ INDEX IX_${base-name}_DC (DOC_ID)
+ ) ENGINE MYISAM
+</table>
+
+
+<!-- CRITERIA /FEN0067A -->
+
+<!-- CRITERIA /FEN0067A/DA -->
+<criteria id="CRI_FEN0067A_DA_LINETXT" type="1" sql-index-id="SQI_FEN0067A_DA_LINETXT">
+ <where-clause>fn:string-compare(${table}.${column},LineTxt)</where-clause>
+</criteria>
+<criteria id="CRI_FEN0067A_DA_ID_AE" type="1" sql-index-id="SQI_FEN0067A_DA_ID_AE">
+ <where-clause>fn:string-compare(${table}.${column},ID_AE)</where-clause>
+</criteria>
+<criteria id="CRI_FEN0067A_DA_DESCRIPTION" type="1" sql-index-id="SQI_FEN0067A_DA_DESCRIPTION">
+ <where-clause>fn:string-compare(${table}.${column},DESCRIPTION)</where-clause>
+</criteria>
+<criteria id="CRI_FEN0067A_DA_DOC_DATE" type="1" sql-index-id="SQI_FEN0067A_DA_DOC_DATE">
+ <where-clause>fn:string-compare(${table}.${column},DOC_DATE)</where-clause>
+</criteria>
+<criteria id="CRI_FEN0067A_DA_INITIATEUR" type="1" sql-index-id="SQI_FEN0067A_DA_INITIATEUR">
+ <where-clause>fn:string-compare(${table}.${column},INITIATEUR)</where-clause>
+</criteria>
+<criteria id="CRI_FEN0067A_DA_CODE_APPLI" type="1" sql-index-id="SQI_FEN0067A_DA_CODE_APPLI">
+ <where-clause>fn:string-compare(${table}.${column},CODE_APPLI)</where-clause>
+</criteria>
+<criteria id="CRI_FEN0067A_DA_CURRENCY" type="1" sql-index-id="SQI_FEN0067A_DA_CURRENCY">
+ <where-clause>fn:string-compare(${table}.${column},CURRENCY)</where-clause>
+</criteria>
+
+<!-- CRITERIA /FEN0067A/DA/POSTE -->
+<criteria id="CRI_FEN0067A_DA_POSTE_BE_PUR_GROUP" type="1" sql-index-id="SQI_FEN0067A_DA_POSTE_BE_PUR_GROUP">
+ <where-clause>fn:string-compare(${table}.${column},BE_PUR_GROUP)</where-clause>
+</criteria>
+<criteria id="CRI_FEN0067A_DA_POSTE_LINETXT" type="1" sql-index-id="SQI_FEN0067A_DA_POSTE_LINETXT">
+ <where-clause>fn:string-compare(${table}.${column},LineTxt)</where-clause>
+</criteria>
+<criteria id="CRI_FEN0067A_DA_POSTE_ID_LIG" type="1" sql-index-id="SQI_FEN0067A_DA_POSTE_ID_LIG">
+ <where-clause>fn:string-compare(${table}.${column},ID_LIG)</where-clause>
+</criteria>
+<criteria id="CRI_FEN0067A_DA_POSTE_STGE_LOC" type="1" sql-index-id="SQI_FEN0067A_DA_POSTE_STGE_LOC">
+ <where-clause>fn:string-compare(${table}.${column},STGE_LOC)</where-clause>
+</criteria>
+<criteria id="CRI_FEN0067A_DA_POSTE_PRICE" type="1" sql-index-id="SQI_FEN0067A_DA_POSTE_PRICE">
+ <where-clause>fn:string-compare(${table}.${column},PRICE)</where-clause>
+</criteria>
+<criteria id="CRI_FEN0067A_DA_POSTE_CTR_ITEM_NUMBER" type="1" sql-index-id="SQI_FEN0067A_DA_POSTE_CTR_ITEM_NUMBER">
+ <where-clause>fn:string-compare(${table}.${column},CTR_ITEM_NUMBER)</where-clause>
+</criteria>
+<criteria id="CRI_FEN0067A_DA_POSTE_ID_AE" type="1" sql-index-id="SQI_FEN0067A_DA_POSTE_ID_AE">
+ <where-clause>fn:string-compare(${table}.${column},ID_AE)</where-clause>
+</criteria>
+<criteria id="CRI_FEN0067A_DA_POSTE_ID_FONC_PROD" type="1" sql-index-id="SQI_FEN0067A_DA_POSTE_ID_FONC_PROD">
+ <where-clause>fn:string-compare(${table}.${column},ID_FONC_PROD)</where-clause>
+</criteria>
+<criteria id="CRI_FEN0067A_DA_POSTE_PARTNER_PROD" type="1" sql-index-id="SQI_FEN0067A_DA_POSTE_PARTNER_PROD">
+ <where-clause>fn:string-compare(${table}.${column},PARTNER_PROD)</where-clause>
+</criteria>
+<criteria id="CRI_FEN0067A_DA_POSTE_TYPE_ID_FONC" type="1" sql-index-id="SQI_FEN0067A_DA_POSTE_TYPE_ID_FONC">
+ <where-clause>fn:string-compare(${table}.${column},TYPE_ID_FONC)</where-clause>
+</criteria>
+<criteria id="CRI_FEN0067A_DA_POSTE_BE_PLANT" type="1" sql-index-id="SQI_FEN0067A_DA_POSTE_BE_PLANT">
+ <where-clause>fn:string-compare(${table}.${column},BE_PLANT)</where-clause>
+</criteria>
+<criteria id="CRI_FEN0067A_DA_POSTE_CATEGORY_ID" type="1" sql-index-id="SQI_FEN0067A_DA_POSTE_CATEGORY_ID">
+ <where-clause>fn:string-compare(${table}.${column},CATEGORY_ID)</where-clause>
+</criteria>
+<criteria id="CRI_FEN0067A_DA_POSTE_DESCRIPTION" type="1" sql-index-id="SQI_FEN0067A_DA_POSTE_DESCRIPTION">
+ <where-clause>fn:string-compare(${table}.${column},DESCRIPTION)</where-clause>
+</criteria>
+<criteria id="CRI_FEN0067A_DA_POSTE_DELIV_DATE" type="1" sql-index-id="SQI_FEN0067A_DA_POSTE_DELIV_DATE">
+ <where-clause>fn:string-compare(${table}.${column},DELIV_DATE)</where-clause>
+</criteria>
+<criteria id="CRI_FEN0067A_DA_POSTE_ID_CHORUS_PROD" type="1" sql-index-id="SQI_FEN0067A_DA_POSTE_ID_CHORUS_PROD">
+ <where-clause>fn:string-compare(${table}.${column},ID_CHORUS_PROD)</where-clause>
+</criteria>
+<criteria id="CRI_FEN0067A_DA_POSTE_CTR_NUMBER" type="1" sql-index-id="SQI_FEN0067A_DA_POSTE_CTR_NUMBER">
+ <where-clause>fn:string-compare(${table}.${column},CTR_NUMBER)</where-clause>
+</criteria>
+<criteria id="CRI_FEN0067A_DA_POSTE_UNIT_PRICE" type="1" sql-index-id="SQI_FEN0067A_DA_POSTE_UNIT_PRICE">
+ <where-clause>fn:string-compare(${table}.${column},UNIT_PRICE)</where-clause>
+</criteria>
+<criteria id="CRI_FEN0067A_DA_POSTE_UNIT" type="1" sql-index-id="SQI_FEN0067A_DA_POSTE_UNIT">
+ <where-clause>fn:string-compare(${table}.${column},UNIT)</where-clause>
+</criteria>
+<criteria id="CRI_FEN0067A_DA_POSTE_TAX_CODE" type="1" sql-index-id="SQI_FEN0067A_DA_POSTE_TAX_CODE">
+ <where-clause>fn:string-compare(${table}.${column},TAX_CODE)</where-clause>
+</criteria>
+<criteria id="CRI_FEN0067A_DA_POSTE_QUANTITY" type="1" sql-index-id="SQI_FEN0067A_DA_POSTE_QUANTITY">
+ <where-clause>fn:string-compare(${table}.${column},QUANTITY)</where-clause>
+</criteria>
+<criteria id="CRI_FEN0067A_DA_POSTE_GROSS_PRICE" type="1" sql-index-id="SQI_FEN0067A_DA_POSTE_GROSS_PRICE">
+ <where-clause>fn:string-compare(${table}.${column},GROSS_PRICE)</where-clause>
+</criteria>
+
+<!-- CRITERIA /FEN0067A/DA/n:IMPUTATION -->
+<criteria id="CRI_FEN0067A_DA_IMPUTATION_TRC_FONC" type="1" sql-index-id="SQI_FEN0067A_DA_IMPUTATION_TRC_FONC">
+ <where-clause>fn:string-compare(${table}.${column},TRC_FONC)</where-clause>
+</criteria>
+<criteria id="CRI_FEN0067A_DA_IMPUTATION_LINETXT" type="1" sql-index-id="SQI_FEN0067A_DA_IMPUTATION_LINETXT">
+ <where-clause>fn:string-compare(${table}.${column},LineTxt)</where-clause>
+</criteria>
+<criteria id="CRI_FEN0067A_DA_IMPUTATION_ID_LIG" type="1" sql-index-id="SQI_FEN0067A_DA_IMPUTATION_ID_LIG">
+ <where-clause>fn:string-compare(${table}.${column},ID_LIG)</where-clause>
+</criteria>
+<criteria id="CRI_FEN0067A_DA_IMPUTATION_SUB_NUMBER" type="1" sql-index-id="SQI_FEN0067A_DA_IMPUTATION_SUB_NUMBER">
+ <where-clause>fn:string-compare(${table}.${column},SUB_NUMBER)</where-clause>
+</criteria>
+<criteria id="CRI_FEN0067A_DA_IMPUTATION_ANA_MIN" type="1" sql-index-id="SQI_FEN0067A_DA_IMPUTATION_ANA_MIN">
+ <where-clause>fn:string-compare(${table}.${column},ANA_MIN)</where-clause>
+</criteria>
+<criteria id="CRI_FEN0067A_DA_IMPUTATION_COST_CTR" type="1" sql-index-id="SQI_FEN0067A_DA_IMPUTATION_COST_CTR">
+ <where-clause>fn:string-compare(${table}.${column},COST_CTR)</where-clause>
+</criteria>
+<criteria id="CRI_FEN0067A_DA_IMPUTATION_BUS_AREA" type="1" sql-index-id="SQI_FEN0067A_DA_IMPUTATION_BUS_AREA">
+ <where-clause>fn:string-compare(${table}.${column},BUS_AREA)</where-clause>
+</criteria>
+<criteria id="CRI_FEN0067A_DA_IMPUTATION_FUNC_AREA" type="1" sql-index-id="SQI_FEN0067A_DA_IMPUTATION_FUNC_AREA">
+ <where-clause>fn:string-compare(${table}.${column},FUNC_AREA)</where-clause>
+</criteria>
+<criteria id="CRI_FEN0067A_DA_IMPUTATION_ID_AE" type="1" sql-index-id="SQI_FEN0067A_DA_IMPUTATION_ID_AE">
+ <where-clause>fn:string-compare(${table}.${column},ID_AE)</where-clause>
+</criteria>
+<criteria id="CRI_FEN0067A_DA_IMPUTATION_LOC_MIN" type="1" sql-index-id="SQI_FEN0067A_DA_IMPUTATION_LOC_MIN">
+ <where-clause>fn:string-compare(${table}.${column},LOC_MIN)</where-clause>
+</criteria>
+<criteria id="CRI_FEN0067A_DA_IMPUTATION_GL_ACCT" type="1" sql-index-id="SQI_FEN0067A_DA_IMPUTATION_GL_ACCT">
+ <where-clause>fn:string-compare(${table}.${column},GL_ACCT)</where-clause>
+</criteria>
+<criteria id="CRI_FEN0067A_DA_IMPUTATION_NAT_MIN" type="1" sql-index-id="SQI_FEN0067A_DA_IMPUTATION_NAT_MIN">
+ <where-clause>fn:string-compare(${table}.${column},NAT_MIN)</where-clause>
+</criteria>
+<criteria id="CRI_FEN0067A_DA_IMPUTATION_WBS_ELEM" type="1" sql-index-id="SQI_FEN0067A_DA_IMPUTATION_WBS_ELEM">
+ <where-clause>fn:string-compare(${table}.${column},WBS_ELEM)</where-clause>
+</criteria>
+<criteria id="CRI_FEN0067A_DA_IMPUTATION_FUND" type="1" sql-index-id="SQI_FEN0067A_DA_IMPUTATION_FUND">
+ <where-clause>fn:string-compare(${table}.${column},FUND)</where-clause>
+</criteria>
+<criteria id="CRI_FEN0067A_DA_IMPUTATION_ASSET_NO" type="1" sql-index-id="SQI_FEN0067A_DA_IMPUTATION_ASSET_NO">
+ <where-clause>fn:string-compare(${table}.${column},ASSET_NO)</where-clause>
+</criteria>
+<criteria id="CRI_FEN0067A_DA_IMPUTATION_CMMT_ITEM" type="1" sql-index-id="SQI_FEN0067A_DA_IMPUTATION_CMMT_ITEM">
+ <where-clause>fn:string-compare(${table}.${column},CMMT_ITEM)</where-clause>
+</criteria>
+<criteria id="CRI_FEN0067A_DA_IMPUTATION_ACC_CAT" type="1" sql-index-id="SQI_FEN0067A_DA_IMPUTATION_ACC_CAT">
+ <where-clause>fn:string-compare(${table}.${column},ACC_CAT)</where-clause>
+</criteria>
+<criteria id="CRI_FEN0067A_DA_IMPUTATION_ACTIVITY" type="1" sql-index-id="SQI_FEN0067A_DA_IMPUTATION_ACTIVITY">
+ <where-clause>fn:string-compare(${table}.${column},ACTIVITY)</where-clause>
+</criteria>
+<criteria id="CRI_FEN0067A_DA_IMPUTATION_LOC_INT" type="1" sql-index-id="SQI_FEN0067A_DA_IMPUTATION_LOC_INT">
+ <where-clause>fn:string-compare(${table}.${column},LOC_INT)</where-clause>
+</criteria>
+<criteria id="CRI_FEN0067A_DA_IMPUTATION_RES_ITEM" type="1" sql-index-id="SQI_FEN0067A_DA_IMPUTATION_RES_ITEM">
+ <where-clause>fn:string-compare(${table}.${column},RES_ITEM)</where-clause>
+</criteria>
+<criteria id="CRI_FEN0067A_DA_IMPUTATION_PRESAGE" type="1" sql-index-id="SQI_FEN0067A_DA_IMPUTATION_PRESAGE">
+ <where-clause>fn:string-compare(${table}.${column},PRESAGE)</where-clause>
+</criteria>
+<criteria id="CRI_FEN0067A_DA_IMPUTATION_AXMIN2" type="1" sql-index-id="SQI_FEN0067A_DA_IMPUTATION_AXMIN2">
+ <where-clause>fn:string-compare(${table}.${column},AXMIN2)</where-clause>
+</criteria>
+<criteria id="CRI_FEN0067A_DA_IMPUTATION_RES_DOC" type="1" sql-index-id="SQI_FEN0067A_DA_IMPUTATION_RES_DOC">
+ <where-clause>fn:string-compare(${table}.${column},RES_DOC)</where-clause>
+</criteria>
+<criteria id="CRI_FEN0067A_DA_IMPUTATION_AXMIN1" type="1" sql-index-id="SQI_FEN0067A_DA_IMPUTATION_AXMIN1">
+ <where-clause>fn:string-compare(${table}.${column},AXMIN1)</where-clause>
+</criteria>
+<criteria id="CRI_FEN0067A_DA_IMPUTATION_CPER" type="1" sql-index-id="SQI_FEN0067A_DA_IMPUTATION_CPER">
+ <where-clause>fn:string-compare(${table}.${column},CPER)</where-clause>
+</criteria>
+<criteria id="CRI_FEN0067A_DA_IMPUTATION_FUNDS_CTR" type="1" sql-index-id="SQI_FEN0067A_DA_IMPUTATION_FUNDS_CTR">
+ <where-clause>fn:string-compare(${table}.${column},FUNDS_CTR)</where-clause>
+</criteria>
+
+<!-- CRITERIA /FEN0067A/DA/PARTENAIRE -->
+<criteria id="CRI_FEN0067A_DA_PARTENAIRE_CITY" type="1" sql-index-id="SQI_FEN0067A_DA_PARTENAIRE_CITY">
+ <where-clause>fn:string-compare(${table}.${column},CITY)</where-clause>
+</criteria>
+<criteria id="CRI_FEN0067A_DA_PARTENAIRE_E_MAIL" type="1" sql-index-id="SQI_FEN0067A_DA_PARTENAIRE_E_MAIL">
+ <where-clause>fn:string-compare(${table}.${column},E_MAIL)</where-clause>
+</criteria>
+<criteria id="CRI_FEN0067A_DA_PARTENAIRE_ADDR_ORIGIN" type="1" sql-index-id="SQI_FEN0067A_DA_PARTENAIRE_ADDR_ORIGIN">
+ <where-clause>fn:string-compare(${table}.${column},ADDR_ORIGIN)</where-clause>
+</criteria>
+<criteria id="CRI_FEN0067A_DA_PARTENAIRE_LINETXT" type="1" sql-index-id="SQI_FEN0067A_DA_PARTENAIRE_LINETXT">
+ <where-clause>fn:string-compare(${table}.${column},LineTxt)</where-clause>
+</criteria>
+<criteria id="CRI_FEN0067A_DA_PARTENAIRE_ID_LIG" type="1" sql-index-id="SQI_FEN0067A_DA_PARTENAIRE_ID_LIG">
+ <where-clause>fn:string-compare(${table}.${column},ID_LIG)</where-clause>
+</criteria>
+<criteria id="CRI_FEN0067A_DA_PARTENAIRE_COUNTRY" type="1" sql-index-id="SQI_FEN0067A_DA_PARTENAIRE_COUNTRY">
+ <where-clause>fn:string-compare(${table}.${column},COUNTRY)</where-clause>
+</criteria>
+<criteria id="CRI_FEN0067A_DA_PARTENAIRE_POSTL_COD" type="1" sql-index-id="SQI_FEN0067A_DA_PARTENAIRE_POSTL_COD">
+ <where-clause>fn:string-compare(${table}.${column},POSTL_COD)</where-clause>
+</criteria>
+<criteria id="CRI_FEN0067A_DA_PARTENAIRE_FAX_NUMBER" type="1" sql-index-id="SQI_FEN0067A_DA_PARTENAIRE_FAX_NUMBER">
+ <where-clause>fn:string-compare(${table}.${column},FAX_NUMBER)</where-clause>
+</criteria>
+<criteria id="CRI_FEN0067A_DA_PARTENAIRE_NAME" type="1" sql-index-id="SQI_FEN0067A_DA_PARTENAIRE_NAME">
+ <where-clause>fn:string-compare(${table}.${column},NAME)</where-clause>
+</criteria>
+<criteria id="CRI_FEN0067A_DA_PARTENAIRE_PARTNER_FCT" type="1" sql-index-id="SQI_FEN0067A_DA_PARTENAIRE_PARTNER_FCT">
+ <where-clause>fn:string-compare(${table}.${column},PARTNER_FCT)</where-clause>
+</criteria>
+<criteria id="CRI_FEN0067A_DA_PARTENAIRE_FLOOR" type="1" sql-index-id="SQI_FEN0067A_DA_PARTENAIRE_FLOOR">
+ <where-clause>fn:string-compare(${table}.${column},FLOOR)</where-clause>
+</criteria>
+<criteria id="CRI_FEN0067A_DA_PARTENAIRE_ID_AE" type="1" sql-index-id="SQI_FEN0067A_DA_PARTENAIRE_ID_AE">
+ <where-clause>fn:string-compare(${table}.${column},ID_AE)</where-clause>
+</criteria>
+<criteria id="CRI_FEN0067A_DA_PARTENAIRE_ADDR_TYPE" type="1" sql-index-id="SQI_FEN0067A_DA_PARTENAIRE_ADDR_TYPE">
+ <where-clause>fn:string-compare(${table}.${column},ADDR_TYPE)</where-clause>
+</criteria>
+<criteria id="CRI_FEN0067A_DA_PARTENAIRE_ROOM_NO" type="1" sql-index-id="SQI_FEN0067A_DA_PARTENAIRE_ROOM_NO">
+ <where-clause>fn:string-compare(${table}.${column},ROOM_NO)</where-clause>
+</criteria>
+<criteria id="CRI_FEN0067A_DA_PARTENAIRE_HOUSE_NO" type="1" sql-index-id="SQI_FEN0067A_DA_PARTENAIRE_HOUSE_NO">
+ <where-clause>fn:string-compare(${table}.${column},HOUSE_NO)</where-clause>
+</criteria>
+<criteria id="CRI_FEN0067A_DA_PARTENAIRE_ID_FONC_PARTNER" type="1" sql-index-id="SQI_FEN0067A_DA_PARTENAIRE_ID_FONC_PARTNER">
+ <where-clause>fn:string-compare(${table}.${column},ID_FONC_PARTNER)</where-clause>
+</criteria>
+<criteria id="CRI_FEN0067A_DA_PARTENAIRE_TEL_NUMBR" type="1" sql-index-id="SQI_FEN0067A_DA_PARTENAIRE_TEL_NUMBR">
+ <where-clause>fn:string-compare(${table}.${column},TEL_NUMBR)</where-clause>
+</criteria>
+<criteria id="CRI_FEN0067A_DA_PARTENAIRE_PARTNER_TYP" type="1" sql-index-id="SQI_FEN0067A_DA_PARTENAIRE_PARTNER_TYP">
+ <where-clause>fn:string-compare(${table}.${column},PARTNER_TYP)</where-clause>
+</criteria>
+<criteria id="CRI_FEN0067A_DA_PARTENAIRE_ID_CHORUS_PARTNER" type="1" sql-index-id="SQI_FEN0067A_DA_PARTENAIRE_ID_CHORUS_PARTNER">
+ <where-clause>fn:string-compare(${table}.${column},ID_CHORUS_PARTNER)</where-clause>
+</criteria>
+<criteria id="CRI_FEN0067A_DA_PARTENAIRE_BUILDING" type="1" sql-index-id="SQI_FEN0067A_DA_PARTENAIRE_BUILDING">
+ <where-clause>fn:string-compare(${table}.${column},BUILDING)</where-clause>
+</criteria>
+<criteria id="CRI_FEN0067A_DA_PARTENAIRE_STREET" type="1" sql-index-id="SQI_FEN0067A_DA_PARTENAIRE_STREET">
+ <where-clause>fn:string-compare(${table}.${column},STREET)</where-clause>
+</criteria>
+
+<!-- CRITERIA /FEN0067A/DA/TEXTE -->
+<criteria id="CRI_FEN0067A_DA_TEXTE_ID_AE" type="1" sql-index-id="SQI_FEN0067A_DA_TEXTE_ID_AE">
+ <where-clause>fn:string-compare(${table}.${column},ID_AE)</where-clause>
+</criteria>
+<criteria id="CRI_FEN0067A_DA_TEXTE_LINETXT" type="1" sql-index-id="SQI_FEN0067A_DA_TEXTE_LINETXT">
+ <where-clause>fn:string-compare(${table}.${column},LineTxt)</where-clause>
+</criteria>
+<criteria id="CRI_FEN0067A_DA_TEXTE_TEXT_LINE" type="1" sql-index-id="SQI_FEN0067A_DA_TEXTE_TEXT_LINE">
+ <where-clause>fn:string-compare(${table}.${column},TEXT_LINE)</where-clause>
+</criteria>
+<criteria id="CRI_FEN0067A_DA_TEXTE_ID_LIG" type="1" sql-index-id="SQI_FEN0067A_DA_TEXTE_ID_LIG">
+ <where-clause>fn:string-compare(${table}.${column},ID_LIG)</where-clause>
+</criteria>
+<criteria id="CRI_FEN0067A_DA_TEXTE_TEXT_ID" type="1" sql-index-id="SQI_FEN0067A_DA_TEXTE_TEXT_ID">
+ <where-clause>fn:string-compare(${table}.${column},TEXT_ID)</where-clause>
+</criteria>
+
+
+<!-- SQL-INDEX /FEN0067A -->
+
+<!-- SQL-INDEX /FEN0067A/DA -->
+ <sql-index id="EF_UNIQUE_ID_IX" table="FEN0067A_DA_IX" column="ID_UNIQUE" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/@ano:unique-id" datatype="string"/>
+<sql-index id="SQI_FEN0067A_DA__NODE_ID" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/@added:generated-id" column="NODE_ID" datatype="string" table="FEN0067A_DA_IX"/>
+<sql-index id="SQI_FEN0067A_DA_LINETXT" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/n:ENTETE/@LineTxt" datatype="string" column="LINETXT" table="FEN0067A_DA_IX" />
+<sql-index id="SQI_FEN0067A_DA_ID_AE" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/n:ENTETE/n:ID_AE/text()" datatype="string" column="ID_AE" table="FEN0067A_DA_IX" />
+<sql-index id="SQI_FEN0067A_DA_DESCRIPTION" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/n:ENTETE/n:DESCRIPTION/text()" datatype="string" column="DESCRIPTION" table="FEN0067A_DA_IX" />
+<sql-index id="SQI_FEN0067A_DA_DOC_DATE" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/n:ENTETE/n:DOC_DATE/text()" datatype="string" column="DOC_DATE" table="FEN0067A_DA_IX" />
+<sql-index id="SQI_FEN0067A_DA_INITIATEUR" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/n:ENTETE/n:INITIATEUR/text()" datatype="string" column="INITIATEUR" table="FEN0067A_DA_IX" />
+<sql-index id="SQI_FEN0067A_DA_CODE_APPLI" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/n:ENTETE/n:CODE_APPLI/text()" datatype="string" column="CODE_APPLI" table="FEN0067A_DA_IX" />
+<sql-index id="SQI_FEN0067A_DA_CURRENCY" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/n:ENTETE/n:CURRENCY/text()" datatype="string" column="CURRENCY" table="FEN0067A_DA_IX" />
+
+<!-- SQL-INDEX /FEN0067A/DA/POSTE -->
+<sql-index id="SQI_FEN0067A_DA_POSTE__NODE_ID" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/n:POSTE/@added:generated-id" column="NODE_ID" datatype="string" table="FEN0067A_DA_POSTE_IX"/>
+ <sql-index id="SQI_FEN0067A_DA_POSTE_BE_PUR_GROUP" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/n:POSTE/n:BE_PUR_GROUP/text()" datatype="string" column="BE_PUR_GROUP" table="FEN0067A_DA_POSTE_IX" />
+<sql-index id="SQI_FEN0067A_DA_POSTE_LINETXT" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/n:POSTE/@LineTxt" datatype="string" column="LINETXT" table="FEN0067A_DA_POSTE_IX" />
+<sql-index id="SQI_FEN0067A_DA_POSTE_ID_LIG" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/n:POSTE/n:ID_LIG/text()" datatype="string" column="ID_LIG" table="FEN0067A_DA_POSTE_IX" />
+<sql-index id="SQI_FEN0067A_DA_POSTE_STGE_LOC" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/n:POSTE/n:STGE_LOC/text()" datatype="string" column="STGE_LOC" table="FEN0067A_DA_POSTE_IX" />
+<sql-index id="SQI_FEN0067A_DA_POSTE_PRICE" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/n:POSTE/n:PRICE/text()" datatype="string" column="PRICE" table="FEN0067A_DA_POSTE_IX" />
+<sql-index id="SQI_FEN0067A_DA_POSTE_CTR_ITEM_NUMBER" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/n:POSTE/n:CTR_ITEM_NUMBER/text()" datatype="string" column="CTR_ITEM_NUMBER" table="FEN0067A_DA_POSTE_IX" />
+<sql-index id="SQI_FEN0067A_DA_POSTE_ID_AE" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/n:POSTE/n:ID_AE/text()" datatype="string" column="ID_AE" table="FEN0067A_DA_POSTE_IX" />
+ <sql-index id="SQI_FEN0067A_DA_POSTE_ID_FONC_PROD" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/n:POSTE/n:ID_FONC_PROD/text()" datatype="string" column="ID_FONC_PROD" table="FEN0067A_DA_POSTE_IX" />
+<sql-index id="SQI_FEN0067A_DA_POSTE_PARTNER_PROD" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/n:POSTE/n:PARTNER_PROD/text()" datatype="string" column="PARTNER_PROD" table="FEN0067A_DA_POSTE_IX" />
+<sql-index id="SQI_FEN0067A_DA_POSTE_TYPE_ID_FONC" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/n:POSTE/n:TYPE_ID_FONC/text()" datatype="string" column="TYPE_ID_FONC" table="FEN0067A_DA_POSTE_IX" />
+<sql-index id="SQI_FEN0067A_DA_POSTE_BE_PLANT" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/n:POSTE/n:BE_PLANT/text()" datatype="string" column="BE_PLANT" table="FEN0067A_DA_POSTE_IX" />
+<sql-index id="SQI_FEN0067A_DA_POSTE_CATEGORY_ID" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/n:POSTE/n:CATEGORY_ID/text()" datatype="string" column="CATEGORY_ID" table="FEN0067A_DA_POSTE_IX" />
+<sql-index id="SQI_FEN0067A_DA_POSTE_DESCRIPTION" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/n:POSTE/n:DESCRIPTION/text()" datatype="string" column="DESCRIPTION" table="FEN0067A_DA_POSTE_IX" />
+<sql-index id="SQI_FEN0067A_DA_POSTE_DELIV_DATE" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/n:POSTE/n:DELIV_DATE/text()" datatype="string" column="DELIV_DATE" table="FEN0067A_DA_POSTE_IX" />
+<sql-index id="SQI_FEN0067A_DA_POSTE_ID_CHORUS_PROD" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/n:POSTE/n:ID_CHORUS_PROD/text()" datatype="string" column="ID_CHORUS_PROD" table="FEN0067A_DA_POSTE_IX" />
+<sql-index id="SQI_FEN0067A_DA_POSTE_CTR_NUMBER" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/n:POSTE/n:CTR_NUMBER/text()" datatype="string" column="CTR_NUMBER" table="FEN0067A_DA_POSTE_IX" />
+<sql-index id="SQI_FEN0067A_DA_POSTE_UNIT_PRICE" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/n:POSTE/n:UNIT_PRICE/text()" datatype="string" column="UNIT_PRICE" table="FEN0067A_DA_POSTE_IX" />
+<sql-index id="SQI_FEN0067A_DA_POSTE_UNIT" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/n:POSTE/n:UNIT/text()" datatype="string" column="UNIT" table="FEN0067A_DA_POSTE_IX" />
+<sql-index id="SQI_FEN0067A_DA_POSTE_TAX_CODE" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/n:POSTE/n:TAX_CODE/text()" datatype="string" column="TAX_CODE" table="FEN0067A_DA_POSTE_IX" />
+<sql-index id="SQI_FEN0067A_DA_POSTE_QUANTITY" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/n:POSTE/n:QUANTITY/text()" datatype="string" column="QUANTITY" table="FEN0067A_DA_POSTE_IX" />
+ <sql-index id="SQI_FEN0067A_DA_POSTE_GROSS_PRICE" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/n:POSTE/n:GROSS_PRICE/text()" datatype="string" column="GROSS_PRICE" table="FEN0067A_DA_POSTE_IX" />
+
+<!-- SQL-INDEX /n:FEN0067A/DA/n:IMPUTATION -->
+<sql-index id="SQI_FEN0067A_DA_IMPUTATION__NODE_ID" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/n:IMPUTATION/@added:generated-id" column="NODE_ID" datatype="string" table="FEN0067A_DA_IMPUTATION_IX"/>
+<sql-index id="SQI_FEN0067A_DA_IMPUTATION_TRC_FONC" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/n:IMPUTATION/n:TRC_FONC/text()" datatype="string" column="TRC_FONC" table="FEN0067A_DA_IMPUTATION_IX" />
+<sql-index id="SQI_FEN0067A_DA_IMPUTATION_LINETXT" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/n:IMPUTATION/@LineTxt" datatype="string" column="LINETXT" table="FEN0067A_DA_IMPUTATION_IX" />
+<sql-index id="SQI_FEN0067A_DA_IMPUTATION_ID_LIG" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/n:IMPUTATION/n:ID_LIG/text()" datatype="string" column="ID_LIG" table="FEN0067A_DA_IMPUTATION_IX" />
+<sql-index id="SQI_FEN0067A_DA_IMPUTATION_SUB_NUMBER" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/n:IMPUTATION/n:SUB_NUMBER/text()" datatype="string" column="SUB_NUMBER" table="FEN0067A_DA_IMPUTATION_IX" />
+<sql-index id="SQI_FEN0067A_DA_IMPUTATION_ANA_MIN" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/n:IMPUTATION/n:ANA_MIN/text()" datatype="string" column="ANA_MIN" table="FEN0067A_DA_IMPUTATION_IX" />
+<sql-index id="SQI_FEN0067A_DA_IMPUTATION_COST_CTR" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/n:IMPUTATION/n:COST_CTR/text()" datatype="string" column="COST_CTR" table="FEN0067A_DA_IMPUTATION_IX" />
+<sql-index id="SQI_FEN0067A_DA_IMPUTATION_BUS_AREA" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/n:IMPUTATION/n:BUS_AREA/text()" datatype="string" column="BUS_AREA" table="FEN0067A_DA_IMPUTATION_IX" />
+<sql-index id="SQI_FEN0067A_DA_IMPUTATION_FUNC_AREA" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/n:IMPUTATION/n:FUNC_AREA/text()" datatype="string" column="FUNC_AREA" table="FEN0067A_DA_IMPUTATION_IX" />
+<sql-index id="SQI_FEN0067A_DA_IMPUTATION_ID_AE" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/n:IMPUTATION/n:ID_AE/text()" datatype="string" column="ID_AE" table="FEN0067A_DA_IMPUTATION_IX" />
+<sql-index id="SQI_FEN0067A_DA_IMPUTATION_LOC_MIN" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/n:IMPUTATION/n:LOC_MIN/text()" datatype="string" column="LOC_MIN" table="FEN0067A_DA_IMPUTATION_IX" />
+<sql-index id="SQI_FEN0067A_DA_IMPUTATION_GL_ACCT" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/n:IMPUTATION/n:GL_ACCT/text()" datatype="string" column="GL_ACCT" table="FEN0067A_DA_IMPUTATION_IX" />
+<sql-index id="SQI_FEN0067A_DA_IMPUTATION_NAT_MIN" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/n:IMPUTATION/n:NAT_MIN/text()" datatype="string" column="NAT_MIN" table="FEN0067A_DA_IMPUTATION_IX" />
+<sql-index id="SQI_FEN0067A_DA_IMPUTATION_WBS_ELEM" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/n:IMPUTATION/n:WBS_ELEM/text()" datatype="string" column="WBS_ELEM" table="FEN0067A_DA_IMPUTATION_IX" />
+<sql-index id="SQI_FEN0067A_DA_IMPUTATION_FUND" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/n:IMPUTATION/n:FUND/text()" datatype="string" column="FUND" table="FEN0067A_DA_IMPUTATION_IX" />
+<sql-index id="SQI_FEN0067A_DA_IMPUTATION_ASSET_NO" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/n:IMPUTATION/n:ASSET_NO/text()" datatype="string" column="ASSET_NO" table="FEN0067A_DA_IMPUTATION_IX" />
+<sql-index id="SQI_FEN0067A_DA_IMPUTATION_CMMT_ITEM" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/n:IMPUTATION/n:CMMT_ITEM/text()" datatype="string" column="CMMT_ITEM" table="FEN0067A_DA_IMPUTATION_IX" />
+<sql-index id="SQI_FEN0067A_DA_IMPUTATION_ACC_CAT" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/n:IMPUTATION/n:ACC_CAT/text()" datatype="string" column="ACC_CAT" table="FEN0067A_DA_IMPUTATION_IX" />
+<sql-index id="SQI_FEN0067A_DA_IMPUTATION_ACTIVITY" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/n:IMPUTATION/n:ACTIVITY/text()" datatype="string" column="ACTIVITY" table="FEN0067A_DA_IMPUTATION_IX" />
+<sql-index id="SQI_FEN0067A_DA_IMPUTATION_LOC_INT" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/n:IMPUTATION/n:LOC_INT/text()" datatype="string" column="LOC_INT" table="FEN0067A_DA_IMPUTATION_IX" />
+<sql-index id="SQI_FEN0067A_DA_IMPUTATION_RES_ITEM" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/n:IMPUTATION/n:RES_ITEM/text()" datatype="string" column="RES_ITEM" table="FEN0067A_DA_IMPUTATION_IX" />
+<sql-index id="SQI_FEN0067A_DA_IMPUTATION_PRESAGE" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/n:IMPUTATION/n:PRESAGE/text()" datatype="string" column="PRESAGE" table="FEN0067A_DA_IMPUTATION_IX" />
+<sql-index id="SQI_FEN0067A_DA_IMPUTATION_AXMIN2" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/n:IMPUTATION/n:AXMIN2/text()" datatype="string" column="AXMIN2" table="FEN0067A_DA_IMPUTATION_IX" />
+<sql-index id="SQI_FEN0067A_DA_IMPUTATION_RES_DOC" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/n:IMPUTATION/n:RES_DOC/text()" datatype="string" column="RES_DOC" table="FEN0067A_DA_IMPUTATION_IX" />
+<sql-index id="SQI_FEN0067A_DA_IMPUTATION_AXMIN1" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/n:IMPUTATION/n:AXMIN1/text()" datatype="string" column="AXMIN1" table="FEN0067A_DA_IMPUTATION_IX" />
+<sql-index id="SQI_FEN0067A_DA_IMPUTATION_CPER" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/n:IMPUTATION/n:CPER/text()" datatype="string" column="CPER" table="FEN0067A_DA_IMPUTATION_IX" />
+<sql-index id="SQI_FEN0067A_DA_IMPUTATION_FUNDS_CTR" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/n:IMPUTATION/n:FUNDS_CTR/text()" datatype="string" column="FUNDS_CTR" table="FEN0067A_DA_IMPUTATION_IX" />
+
+<!-- SQL-INDEX /n:FEN0067A/n:DA/PARTENAIRE -->
+<sql-index id="SQI_FEN0067A_DA_PARTENAIRE__NODE_ID" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/PARTENAIRE/@added:generated-id" column="NODE_ID" datatype="string" table="FEN0067A_DA_PARTENAIRE_IX"/>
+<sql-index id="SQI_FEN0067A_DA_PARTENAIRE_CITY" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/PARTENAIRE/CITY/text()" datatype="string" column="CITY" table="FEN0067A_DA_PARTENAIRE_IX" />
+<sql-index id="SQI_FEN0067A_DA_PARTENAIRE_E_MAIL" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/PARTENAIRE/E_MAIL/text()" datatype="string" column="E_MAIL" table="FEN0067A_DA_PARTENAIRE_IX" />
+<sql-index id="SQI_FEN0067A_DA_PARTENAIRE_ADDR_ORIGIN" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/PARTENAIRE/ADDR_ORIGIN/text()" datatype="string" column="ADDR_ORIGIN" table="FEN0067A_DA_PARTENAIRE_IX" />
+<sql-index id="SQI_FEN0067A_DA_PARTENAIRE_LINETXT" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/PARTENAIRE/@LineTxt" datatype="string" column="LINETXT" table="FEN0067A_DA_PARTENAIRE_IX" />
+<sql-index id="SQI_FEN0067A_DA_PARTENAIRE_ID_LIG" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/PARTENAIRE/ID_LIG/text()" datatype="string" column="ID_LIG" table="FEN0067A_DA_PARTENAIRE_IX" />
+<sql-index id="SQI_FEN0067A_DA_PARTENAIRE_COUNTRY" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/PARTENAIRE/COUNTRY/text()" datatype="string" column="COUNTRY" table="FEN0067A_DA_PARTENAIRE_IX" />
+<sql-index id="SQI_FEN0067A_DA_PARTENAIRE_POSTL_COD" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/PARTENAIRE/POSTL_COD/text()" datatype="string" column="POSTL_COD" table="FEN0067A_DA_PARTENAIRE_IX" />
+<sql-index id="SQI_FEN0067A_DA_PARTENAIRE_FAX_NUMBER" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/PARTENAIRE/FAX_NUMBER/text()" datatype="string" column="FAX_NUMBER" table="FEN0067A_DA_PARTENAIRE_IX" />
+<sql-index id="SQI_FEN0067A_DA_PARTENAIRE_NAME" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/PARTENAIRE/NAME/text()" datatype="string" column="NAME" table="FEN0067A_DA_PARTENAIRE_IX" />
+<sql-index id="SQI_FEN0067A_DA_PARTENAIRE_PARTNER_FCT" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/PARTENAIRE/PARTNER_FCT/text()" datatype="string" column="PARTNER_FCT" table="FEN0067A_DA_PARTENAIRE_IX" />
+<sql-index id="SQI_FEN0067A_DA_PARTENAIRE_FLOOR" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/PARTENAIRE/FLOOR/text()" datatype="string" column="FLOOR" table="FEN0067A_DA_PARTENAIRE_IX" />
+<sql-index id="SQI_FEN0067A_DA_PARTENAIRE_ID_AE" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/PARTENAIRE/ID_AE/text()" datatype="string" column="ID_AE" table="FEN0067A_DA_PARTENAIRE_IX" />
+<sql-index id="SQI_FEN0067A_DA_PARTENAIRE_ADDR_TYPE" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/PARTENAIRE/ADDR_TYPE/text()" datatype="string" column="ADDR_TYPE" table="FEN0067A_DA_PARTENAIRE_IX" />
+<sql-index id="SQI_FEN0067A_DA_PARTENAIRE_ROOM_NO" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/PARTENAIRE/ROOM_NO/text()" datatype="string" column="ROOM_NO" table="FEN0067A_DA_PARTENAIRE_IX" />
+<sql-index id="SQI_FEN0067A_DA_PARTENAIRE_HOUSE_NO" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/PARTENAIRE/HOUSE_NO/text()" datatype="string" column="HOUSE_NO" table="FEN0067A_DA_PARTENAIRE_IX" />
+<sql-index id="SQI_FEN0067A_DA_PARTENAIRE_ID_FONC_PARTNER" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/PARTENAIRE/ID_FONC_PARTNER/text()" datatype="string" column="ID_FONC_PARTNER" table="FEN0067A_DA_PARTENAIRE_IX" />
+<sql-index id="SQI_FEN0067A_DA_PARTENAIRE_TEL_NUMBR" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/PARTENAIRE/TEL_NUMBR/text()" datatype="string" column="TEL_NUMBR" table="FEN0067A_DA_PARTENAIRE_IX" />
+<sql-index id="SQI_FEN0067A_DA_PARTENAIRE_PARTNER_TYP" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/PARTENAIRE/PARTNER_TYP/text()" datatype="string" column="PARTNER_TYP" table="FEN0067A_DA_PARTENAIRE_IX" />
+<sql-index id="SQI_FEN0067A_DA_PARTENAIRE_ID_CHORUS_PARTNER" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/PARTENAIRE/ID_CHORUS_PARTNER/text()" datatype="string" column="ID_CHORUS_PARTNER" table="FEN0067A_DA_PARTENAIRE_IX" />
+<sql-index id="SQI_FEN0067A_DA_PARTENAIRE_BUILDING" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/PARTENAIRE/BUILDING/text()" datatype="string" column="BUILDING" table="FEN0067A_DA_PARTENAIRE_IX" />
+<sql-index id="SQI_FEN0067A_DA_PARTENAIRE_STREET" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/PARTENAIRE/STREET/text()" datatype="string" column="STREET" table="FEN0067A_DA_PARTENAIRE_IX" />
+
+<!-- SQL-INDEX /n:FEN0067A/DA/TEXTE -->
+<sql-index id="SQI_FEN0067A_DA_TEXTE__NODE_ID" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/TEXTE/@added:generated-id" column="NODE_ID" datatype="string" table="FEN0067A_DA_TEXTE_IX"/>
+<sql-index id="SQI_FEN0067A_DA_TEXTE_ID_AE" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/TEXTE/ID_AE/text()" datatype="string" column="ID_AE" table="FEN0067A_DA_TEXTE_IX" />
+<sql-index id="SQI_FEN0067A_DA_TEXTE_LINETXT" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/TEXTE/@LineTxt" datatype="string" column="LINETXT" table="FEN0067A_DA_TEXTE_IX" />
+<sql-index id="SQI_FEN0067A_DA_TEXTE_TEXT_LINE" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/TEXTE/TEXT_LINE/text()" datatype="string" column="TEXT_LINE" table="FEN0067A_DA_TEXTE_IX" />
+<sql-index id="SQI_FEN0067A_DA_TEXTE_ID_LIG" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/TEXTE/ID_LIG/text()" datatype="string" column="ID_LIG" table="FEN0067A_DA_TEXTE_IX" />
+<sql-index id="SQI_FEN0067A_DA_TEXTE_TEXT_ID" path="/n:DocDemandeAchat/n:FEN0067A/n:DA/TEXTE/TEXT_ID/text()" datatype="string" column="TEXT_ID" table="FEN0067A_DA_TEXTE_IX" />
+
+<element id="FEN0067A_DA_POSTE_IX">
+<sql-count>COUNT(DISTINCT(CONCAT(FEN0067A_DA_IX.DOC_ID,FEN0067A_DA_POSTE_IX.NODE_ID)))</sql-count>
+<special-cond>FEN0067A_DA_POSTE_IX.NODE_ID IS NOT NULL</special-cond>
+</element>
+<element id="FEN0067A_DA_IMPUTATION_IX">
+<sql-count>COUNT(DISTINCT(CONCAT(FEN0067A_DA_IX.DOC_ID,FEN0067A_DA_IMPUTATION_IX.NODE_ID)))</sql-count>
+<special-cond>FEN0067A_DA_IMPUTATION_IX.NODE_ID IS NOT NULL</special-cond>
+</element>
+<element id="FEN0067A_DA_PARTENAIRE_IX">
+<sql-count>COUNT(DISTINCT(CONCAT(FEN0067A_DA_IX.DOC_ID,FEN0067A_DA_PARTENAIRE_IX.NODE_ID)))</sql-count>
+<special-cond>FEN0067A_DA_PARTENAIRE_IX.NODE_ID IS NOT NULL</special-cond>
+</element>
+<element id="FEN0067A_DA_TEXTE_IX">
+<sql-count>COUNT(DISTINCT(CONCAT(FEN0067A_DA_IX.DOC_ID,FEN0067A_DA_TEXTE_IX.NODE_ID)))</sql-count>
+<special-cond>FEN0067A_DA_TEXTE_IX.NODE_ID IS NOT NULL</special-cond>
+</element>
+
+</etat>
+
+ </document>
+ </layer>
+</persistence-config>
--- /dev/null
+<?xml version="1.1" encoding="ISO-8859-1"?>
+<!DOCTYPE xsl:stylesheet [
+<!ENTITY nbsp " ">
+]>
+
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:java="xalan://xml.apache.org/xalan/java"
+ xmlns="http://www.xemelios.org/namespaces#FEN0067A"
+ xmlns:n="http://www.xemelios.org/namespaces#FEN0067A"
+ xmlns:added="http://projets.admisource.gouv.fr/xemelios/namespaces#added"
+ xmlns:ano="http://projets.admisource.gouv.fr/xemelios/namespaces#anomally"
+ xmlns:txt2xml="http://www.xemelios.org/namespaces#txt2xml" exclude-result-prefixes="java"
+ version="2.0">
+
+ <xsl:output standalone="yes" method="xml" indent="yes"/>
+
+ <!--xsl:output encoding="##output-encoding##"/-->
+ <!--xsl:output version="##xml-version##"/-->
+ <xsl:output version="1.0"/>
+
+ <xsl:param name="language" select="'fr'"/>
+
+ <xsl:param name="CodeBudget"/>
+ <xsl:param name="LibelleBudget"/>
+ <xsl:param name="CodeCollectivite"/>
+ <xsl:param name="LibelleCollectivite"/>
+
+ <xsl:template match="/*[position()=1]">
+ <xsl:choose>
+ <xsl:when test="local-name(.) = 'DocDemandeAchat'">
+ <DocDemandeAchat xmlns="http://www.xemelios.org/namespaces#FEN0067A"
+ xmlns:n="http://www.xemelios.org/namespaces#FEN0067A"
+ xmlns:added="http://projets.admisource.gouv.fr/xemelios/namespaces#added"
+ xmlns:ano="http://projets.admisource.gouv.fr/xemelios/namespaces#anomally"
+ xmlns:txt2xml="http://www.xemelios.org/namespaces#txt2xml">
+ <!--xsl:element name="Collectivite" namespace="http://www.xemelios.org/namespaces#FEN0029A">
+ <xsl:element name="Siret" namespace="http://www.xemelios.org/namespaces#FEN0029A">
+ <xsl:attribute name="V" select="$CodeCollectivite"/>
+ </xsl:element>
+ <xsl:element name="Libelle" namespace="http://www.xemelios.org/namespaces#FEN0029A">
+ <xsl:attribute name="V" select="$LibelleCollectivite"/>
+ </xsl:element>
+ </xsl:element>
+ <xsl:element name="Budget" namespace="http://www.xemelios.org/namespaces#FEN0029A">
+ <xsl:element name="Code" namespace="http://www.xemelios.org/namespaces#FEN0029A">
+ <xsl:attribute name="V" select="$CodeBudget"/>
+ </xsl:element>
+ <xsl:element name="Libelle" namespace="http://www.xemelios.org/namespaces#FEN0029A">
+ <xsl:attribute name="V" select="$LibelleBudget"/>
+ </xsl:element>
+ </xsl:element-->
+ <xsl:for-each select="./*">
+ <xsl:call-template name="writeElement">
+ <xsl:with-param name="el" select="."/>
+ </xsl:call-template>
+ </xsl:for-each>
+ </DocDemandeAchat>
+ </xsl:when>
+ </xsl:choose>
+ </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)}">
+ <!--xsl:if test="$el/text() and name($el/parent::node()/parent::node())='DP_DIRECTE'">
+ <xsl:attribute name="V" select="$el/text()"/>
+ </xsl:if-->
+ <xsl:for-each select="$el/@*">
+ <xsl:attribute name="{name(.)}">
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+ </xsl:for-each>
+ <!-- ajouts Attributs -->
+ <xsl:choose>
+ <xsl:when
+ test="contains('|DA|POSTE|IMPUTATION|PARTENAIRE|TEXTE|',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:when>
+ </xsl:choose>
+ <!-- recursion -->
+ <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()"/>
+ </xsl:element>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+</xsl:stylesheet>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE xsl:stylesheet [
+<!ENTITY nbsp " ">
+<!ENTITY lt "<">
+<!ENTITY gt ">">
+]>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:n="http://www.xemelios.org/namespaces#FEN0067A" xmlns:added="http://projets.admisource.gouv.fr/xemelios/namespaces#added" xmlns:ano="http://projets.admisource.gouv.fr/xemelios/namespaces#anomally" xmlns:txt2xml="http://www.xemelios.org/namespaces#txt2xml" version="2.0">
+
+ <xsl:output encoding="ISO-8859-1" method="xml" indent="yes"/>
+
+ <xsl:param name="anoId"/>
+ <!-- id de l'anomalie a mettre en surbrillance -->
+
+ <xsl:param name="collectivite"/>
+ <xsl:param name="budget"/>
+
+ <xsl:param name="presentation" select="'src'"/>
+ <!-- valid values are 'normal' and 'src' -->
+
+ <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:template match="/n:DocDemandeAchat">
+ <xsl:choose>
+ <!--xsl:when test="$presentation = 'normal'">
+ <html>
+ <head>
+ <title>Demande d'achat</title>
+ <style type="text/css" media="print">
+ .invoiceDiv {
+ width: 100%;
+ }
+ tr {
+ page-break-inside: avoid;
+ }
+ table {
+ -fs-table-paginate: paginate;
+ }
+ .anomalie {
+ display: none;
+ }</style>
+ <style type="text/css" media="screen">
+ .invoiceDiv {
+ width: 75%;
+ }
+ th {
+ color: white;
+ background-color: #999999;
+ }
+ .highlighted {
+ background-color: #FFFF66;
+ }</style>
+ <style type="text/css" media="all">
+ body, p, th, td {
+ font-size: 12;
+ font-family: Verdana, Arial, Helvetica, sans-serif;
+ }
+ table {
+ border-collapse: collapse;
+ }
+ anomalie {
+ background-color: #FFFF66;
+
+ }
+ .titre0 {
+ font-weight: bold;
+ font-family: Verdana, Arial, Helvetica, sans-serif;
+ font-size: 24;
+ }
+ .center {
+ text-align: center;
+ }
+ .top {
+ vertical-align: top;
+ }
+ .gras {
+ font-weight: bold;
+ }
+ .right {
+ text-align: right;
+ }
+ .left {
+ text-align: left;
+ }
+ .bordered {
+ border-style: solid;
+ border-width: 1px;
+ border-color: black;
+ v
+ padding: 10px;
+ }
+ .collapsed {
+ border-collapse: collapse;
+ border-spacing: 0px;
+ }
+ .titre1 {
+ margin-top: 12px;
+ margin-bottom: 0px;
+ font-wieght: bold;
+ font-size: 16;
+ }
+ .nosign {
+ list-style-type: none;
+ }
+ td {
+ background-color: inherited;
+ }</style>
+ </head>
+ <body>
+ <center>
+ <xsl:apply-templates/>
+ </center>
+ </body>
+ </html>
+ </xsl:when-->
+ <xsl:when test="$presentation = 'src' and count(//@txt2xml:*) eq 0">
+ <html>
+ <head>
+ <title>Source XML de FEN0067A</title>
+ <style type="text/css">
+ span {
+ font-family: monospace;
+ font-size: 12px;
+
+ }
+ .expander-content {
+ padding-left: 1em;
+ }
+ .text {
+ color: black;
+
+ }
+ .expander {
+ text-align: center;
+ vertical-align: top;
+ width: 1em;
+ display: inline-block;
+ margin-left: -1em;
+ }
+ body {
+ font-family: monospace;
+ font-size: 12px;
+ }
+ #top > .expander-open, #top > .expander-closed {
+ margin-left: 1em;
+ }
+ .expander-closed > .expander-content {
+ display: none;
+ }
+ .comment {
+ font-family: monospace;
+ font-size: 12px;
+ white-space: pre;
+ }
+ #top > .expander-open {
+ font-family: monospace;
+ font-size: 12px;
+ white-space: pre;
+ }
+ *|*:root {
+ background-color: white;
+ }
+ #viewsource {
+ font-family: monospace;
+ font-size: 12px;
+ font-weight: normal;
+ color: black;
+ white-space: pre;
+ }
+ #viewsource.wrap {
+ white-space: pre-wrap;
+ }
+ pre {
+ font: inherit;
+ color: inherit;
+ white-space: inherit;
+ margin: 0;
+ }
+ .start-tag {
+ color: purple;
+ font-weight: bold;
+ font-size: 12px;
+ }
+ .end-tag {
+ color: purple;
+ font-weight: bold;
+ font-size: 12px;
+ }
+ .comment {
+ color: green;
+ font-style: italic;
+ }
+ .cdata {
+ color: #CC0066;
+ }
+ .doctype {
+ color: steelblue;
+ font-style: italic;
+ }
+ .pi {
+ color: orchid;
+ font-style: italic;
+ }
+ .entity {
+ color:#FF4500;
+ font-weight: normal;
+ }
+ .text {
+ font-weight: normal;
+ }
+ .attribute-name {
+ color: black;
+ font-weight: bold;
+ }
+ .attribute-value {
+ color: blue;
+ font-weight: normal;
+ }
+ .summary {
+ display: block;
+ background-color: #FFFFCC;
+ width: 90%;
+ border: solid;
+ border-width: 1pt;
+ font-family: sans-serif;
+ }
+ .popup {
+ font-weight: normal;
+ }
+ .markupdeclaration {
+ color: steelblue;
+ font-style: italic;
+ }
+ .error, .error > .start-tag, .error > .end-tag,
+ .error > .comment, .error > .cdata, .error > .doctype,
+ .error > .pi, .error > .entity, .error > .attribute-name,
+ .error > .attribute-value {
+ color: red;
+ font-weight: bold;
+ }</style>
+ </head>
+ <body>
+ <!--p>Paramètres<br/>
+ collectivite: <xsl:value-of select="$collectivite"/><br/>
+ collectivite-lib: <xsl:value-of select="$collectivite-lib"/><br/>
+ budget: <xsl:value-of select="$budg"/><br/>
+ budget-lib: <xsl:value-of select="$budget-lib"/>
+ </p-->
+ <xsl:for-each select="./n:FEN0067A">
+ <xsl:call-template name="displaySrc">
+ <xsl:with-param name="el" select="."/>
+ </xsl:call-template>
+ </xsl:for-each>
+ <xsl:if test="count(//ano:Anomalie) > 0">
+ <hr/>
+ <xsl:for-each select="//ano:Anomalie">
+ <xsl:call-template name="anomalie">
+ <xsl:with-param name="ano" select="."/>
+ <xsl:with-param name="demandeachatID" select="../@ano:unique-id"/>
+ </xsl:call-template>
+ </xsl:for-each>
+ </xsl:if>
+ </body>
+ </html>
+ </xsl:when>
+ <xsl:when test="$presentation = 'src' and count(//@txt2xml:*) > 0">
+ <html>
+ <head>
+ <title>Source Texte de FEN0067A</title>
+ <style type="text/css">
+ span {
+ font-family: monospace;
+ font-size: 12px;
+
+ }
+ .expander-content {
+ padding-left: 1em;
+ }
+ .text {
+ color: black;
+
+ }
+ .expander {
+ text-align: center;
+ vertical-align: top;
+ width: 1em;
+ display: inline-block;
+ margin-left: -1em;
+ }
+ body {
+ font-family: monospace;
+ font-size: 12px;
+ }
+ #top > .expander-open, #top > .expander-closed {
+ margin-left: 1em;
+ }
+ .expander-closed > .expander-content {
+ display: none;
+ }
+ .comment {
+ font-family: monospace;
+ font-size: 12px;
+ white-space: pre;
+ }
+ #top > .expander-open {
+ font-family: monospace;
+ font-size: 12px;
+ white-space: pre;
+ }
+ *|*:root {
+ background-color: white;
+ }
+ #viewsource {
+ font-family: monospace;
+ font-size: 12px;
+ font-weight: normal;
+ color: black;
+ white-space: pre;
+ }
+ #viewsource.wrap {
+ white-space: pre-wrap;
+ }
+ pre {
+ font: inherit;
+ color: inherit;
+ white-space: inherit;
+ margin: 0;
+ }
+ .start-tag {
+ color: purple;
+ font-weight: bold;
+ font-size: 12px;
+ }
+ .end-tag {
+ color: purple;
+ font-weight: bold;
+ font-size: 12px;
+ }
+ .comment {
+ color: green;
+ font-style: italic;
+ }
+ .cdata {
+ color: #CC0066;
+ }
+ .doctype {
+ color: steelblue;
+ font-style: italic;
+ }
+ .pi {
+ color: orchid;
+ font-style: italic;
+ }
+ .entity {
+ color:#FF4500;
+ font-weight: normal;
+ }
+ .text {
+ font-weight: normal;
+ }
+ .attribute-name {
+ color: black;
+ font-weight: bold;
+ }
+ .attribute-value {
+ color: blue;
+ font-weight: normal;
+ }
+ .summary {
+ display: block;
+ background-color: #FFFFCC;
+ width: 90%;
+ border: solid;
+ border-width: 1pt;
+ font-family: sans-serif;
+ }
+ .popup {
+ font-weight: normal;
+ }
+ .markupdeclaration {
+ color: steelblue;
+ font-style: italic;
+ }
+ .error, .error > .start-tag, .error > .end-tag,
+ .error > .comment, .error > .cdata, .error > .doctype,
+ .error > .pi, .error > .entity, .error > .attribute-name,
+ .error > .attribute-value {
+ color: red;
+ font-weight: bold;
+ }</style>
+ </head>
+ <body>
+ <xsl:for-each select="n:FEN0067A">
+ <xsl:call-template name="displayText">
+ <xsl:with-param name="el" select="."/>
+ </xsl:call-template>
+ </xsl:for-each>
+ <xsl:if test="count(//ano:Anomalie) > 0">
+ <hr/>
+ <xsl:variable name="allAnos" select="//ano:Anomalie"/>
+ <xsl:for-each select="$allAnos">
+ <xsl:call-template name="anomalie">
+ <xsl:with-param name="ano" select="."/>
+ <xsl:with-param name="demandeachatID" select="../@ano:unique-id"/>
+ </xsl:call-template>
+ </xsl:for-each>
+ </xsl:if>
+ </body>
+ </html>
+ </xsl:when>
+ <xsl:otherwise>
+ <html>
+ <body>
+ <xsl:value-of select="$presentation"/>
+ <xsl:value-of select="$anoId"/>
+ </body>
+ </html>
+ </xsl:otherwise> </xsl:choose>
+ </xsl:template>
+
+ <xsl:template name="anomalie">
+ <xsl:param name="ano"/>
+ <xsl:param name="demandeachatID"/>
+ <xsl:element name="div">
+ <xsl:attribute name="class">anomalie left</xsl:attribute>
+ <xsl:attribute name="width">75%</xsl:attribute>
+ <xsl:if test="$anoId = ./@ano:anoId">
+ <xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute>
+ </xsl:if>
+ <h3 style="text-align: left;">
+ <xsl:element name="a">
+ <xsl:attribute name="name">AnoId_<xsl:value-of select="$ano/@ano:anoId"/></xsl:attribute>
+ <xsl:attribute name="href">xemelios:/query?docId=DocDemandeAchat&etatId=FEN0067A&elementId=DA&collectivite=<xsl:value-of select="$collectivite"/>&budget=<xsl:value-of select="$budget"/>&path=[@ano:unique-id='<xsl:value-of select="$demandeachatID"/>']&xsl:param=(anoId,<xsl:value-of select="$ano/@ano:anoId"/>)&xsl:param=(presentation,<xsl:value-of select="$presentation"/>)</xsl:attribute>
+ Anomalie
+ </xsl:element>
+ </h3>
+ <span class="gras">Contrôle :</span><xsl:value-of select="./@ano:ctrlLibelle"/> (<xsl:value-of select="./@ano:ctrlId"/>)<br/>
+ <span class="gras">Règle fonctionnelle : </span><xsl:value-of select="./ano:ctrlRegleFonct/text()" disable-output-escaping="yes"/><br/>
+ <span class="gras">Message : </span><xsl:value-of select="./ano:message/text()" disable-output-escaping="yes"/>
+ </xsl:element>
+
+ </xsl:template>
+
+ <xsl:template name="displaySrc">
+ <xsl:param name="el"/>
+ <xsl:choose>
+ <xsl:when test="namespace-uri(.) = 'http://projets.admisource.gouv.fr/xemelios/namespaces#anomally' and local-name(.)='Anomalie'"/>
+ <xsl:when
+ test="$el[* or processing-instruction() or comment() or string-length(.) > 0]">
+ <div class="expander-open">
+ <xsl:variable name="currentNode" select="$el/@ano:node-id"/>
+ <xsl:if test="count($tags-ano/node[@id = $currentNode]) > 0">
+ <xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute>
+ </xsl:if>
+ <xsl:text><</xsl:text>
+ <span class="start-tag">
+ <xsl:value-of select="name(.)"/>
+ </span>
+ <xsl:apply-templates select="@*"/>
+ <xsl:text>></xsl:text>
+ <xsl:choose>
+ <xsl:when test="count(./*) > 0">
+ <div class="expander-content">
+ <xsl:for-each select="./*">
+ <xsl:call-template name="displaySrc">
+ <xsl:with-param name="el" select="."/>
+ </xsl:call-template>
+ <!--xsl:if test="not(position() = last())"><br/></xsl:if-->
+ </xsl:for-each>
+ <span class="text">
+ <xsl:value-of select="./text()"/>
+ </span>
+ </div>
+ </xsl:when>
+ <xsl:otherwise>
+ <span class="text">
+ <xsl:value-of select="./text()"/>
+ </span>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text></</xsl:text>
+ <span class="end-tag">
+ <xsl:value-of select="name(.)"/>
+ </span>
+ <xsl:text>></xsl:text>
+ </div>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text><</xsl:text>
+ <span class="start-tag">
+ <xsl:variable name="currentNode" select="$el/@ano:node-id"/>
+ <xsl:if test="count($tags-ano/node[@id = $currentNode]) > 0">
+ <xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute>
+ </xsl:if>
+ <xsl:value-of select="name(.)"/>
+ </span>
+ <xsl:apply-templates select="@*"/>
+ <xsl:text>/></xsl:text>
+ <br/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template name="displayText">
+ <xsl:param name="el"/>
+ <xsl:choose>
+ <xsl:when test="namespace-uri(.) = 'http://projets.admisource.gouv.fr/xemelios/namespaces#anomally' and local-name(.)='Anomalie'"/>
+ <xsl:otherwise>
+ <xsl:for-each select="$el/n:DA">
+ <xsl:variable name="currentNode" select="n:ENTETE/@ano:node-id"/>
+ <span><xsl:if test="count($tags-ano/node[@id = $currentNode]) > 0"><xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute></xsl:if>E
+ <xsl:for-each select="n:ENTETE/*/@txt2xml:TxtValue">
+ <span>
+ <xsl:variable name="currentNode" select="../@ano:node-id"/>
+ <xsl:if test="count($tags-ano/node[@id = $currentNode]) > 0">
+ <xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute>
+ </xsl:if>
+ <xsl:value-of select="."/>
+ </span>
+ </xsl:for-each>
+ </span>
+ <br/>
+
+
+ <xsl:for-each select="n:POSTE">
+ <xsl:variable name="currentNode" select="@ano:node-id"/>
+ <span><xsl:if test="count($tags-ano/node[@id = $currentNode]) > 0"><xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute></xsl:if>L
+ <xsl:for-each select="child::node()/@txt2xml:TxtValue">
+ <span>
+ <xsl:variable name="currentNode" select="../@ano:node-id"/>
+ <xsl:if test="count($tags-ano/node[@id = $currentNode]) > 0">
+ <xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute>
+ </xsl:if>
+ <xsl:value-of select="."/>
+ </span>
+ </xsl:for-each>
+ </span>
+
+ <br/>
+ </xsl:for-each>
+
+
+ <xsl:for-each select="n:PARTENAIRE">
+ <xsl:variable name="currentNode" select="@ano:node-id"/>
+ <span><xsl:if test="count($tags-ano/node[@id = $currentNode]) > 0"><xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute></xsl:if>P
+ <xsl:for-each select="child::node()/@txt2xml:TxtValue">
+ <span>
+ <xsl:variable name="currentNode" select="../@ano:node-id"/>
+ <xsl:if test="count($tags-ano/node[@id = $currentNode]) > 0">
+ <xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute>
+ </xsl:if>
+ <xsl:value-of select="."/>
+ </span>
+ </xsl:for-each>
+
+ </span>
+
+ <br/>
+ </xsl:for-each>
+ <xsl:for-each select="n:IMPUTATION">
+ <xsl:variable name="currentNode" select="@ano:node-id"/>
+ <span><xsl:if test="count($tags-ano/node[@id = $currentNode]) > 0"><xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute></xsl:if>I
+ <xsl:for-each select="child::node()/@txt2xml:TxtValue">
+ <span>
+ <xsl:variable name="currentNode" select="../@ano:node-id"/>
+ <xsl:if test="count($tags-ano/node[@id = $currentNode]) > 0">
+ <xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute>
+ </xsl:if>
+ <xsl:value-of select="."/>
+ </span>
+ </xsl:for-each>
+ </span>
+
+ <br/>
+ </xsl:for-each>
+ <xsl:for-each select="n:TEXTE">
+ <xsl:variable name="currentNode" select="@ano:node-id"/>
+ <span><xsl:if test="count($tags-ano/node[@id = $currentNode]) > 0"><xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute></xsl:if>T
+ <xsl:for-each select="child::node()/@txt2xml:TxtValue">
+ <span>
+ <xsl:variable name="currentNode" select="../@ano:node-id"/>
+ <xsl:if test="count($tags-ano/node[@id = $currentNode]) > 0">
+ <xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute>
+ </xsl:if>
+ <xsl:value-of select="."/>
+ </span>
+ </xsl:for-each>
+ </span>
+
+ <br/>
+ </xsl:for-each>
+
+ <xsl:for-each select="n:LIGNE_INCONNUE">
+ <xsl:variable name="currentNode" select="@ano:node-id"/>
+ <span><xsl:if test="count($tags-ano/node[@id = $currentNode]) > 0"><xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute></xsl:if>
+ <xsl:for-each select="child::node()/@txt2xml:TxtValue">
+ <span>
+ <xsl:variable name="currentNode" select="../@ano:node-id"/>
+ <xsl:if test="count($tags-ano/node[@id = $currentNode]) > 0">
+ <xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute>
+ </xsl:if>
+ <xsl:value-of select="."/>
+ </span>
+ </xsl:for-each>
+ </span>
+
+ <br/>
+ </xsl:for-each>
+
+
+
+ </xsl:for-each>
+ <!--span class="start-tag">
+ <xsl:variable name="currentNode" select="$el/@ano:node-id"/>
+ <xsl:if test="count($tags-ano/node[@id = $currentNode]) > 0">
+ <xsl:attribute name="style">background-color: #FFFF66;</xsl:attribute>
+ </xsl:if>
+ <xsl:value-of select="name(.)"/>
+ </span>
+ <xsl:apply-templates select="@*"/-->
+ <br/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match="@*">
+ <xsl:choose>
+ <xsl:when test="namespace-uri(.) = 'http://projets.admisource.gouv.fr/xemelios/namespaces#anomally' and (local-name(.) = 'node-id' or local-name(.) = 'unique-id')"/>
+ <xsl:when test="namespace-uri(.) = 'http://www.xemelios.org/namespaces#txt2xml' and (local-name(.) = 'LineTxt' or local-name(.) = 'TxtValue')"/>
+ <xsl:when
+ test="namespace-uri(.) = 'http://projets.admisource.gouv.fr/xemelios/namespaces#added'"/>
+ <xsl:otherwise> <span class="attribute-name"><xsl:value-of select="name(.)"/></span><xsl:text>=</xsl:text><span class="attribute-value">"<xsl:value-of select="."/>"</span></xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+
+ <xsl:template name="format-date">
+ <xsl:param name="datebrute"/>
+ <xsl:param name="formataffichage" select="'date'"/>
+ <!-- valeurs attendues : date / heure / dateheure -->
+ <xsl:if test="($formataffichage = 'date') or ($formataffichage = 'dateheure')">
+ <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)"/>
+ </xsl:if>
+ <xsl:if test="($formataffichage = 'heure') or ($formataffichage = 'dateheure')">
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="substring($datebrute, 12, 2)"/>
+ <xsl:text>:</xsl:text>
+ <xsl:value-of select="substring($datebrute, 15, 2)"/>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template name="number">
+ <xsl:param name="num"/>
+ <xsl:choose>
+ <xsl:when test="string-length($num) = 0"/>
+ <xsl:when test="number($num) = 0"/>
+ <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>
+
+</xsl:stylesheet>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>\r
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"\r
+ xmlns="FEN0067A"\r
+ xmlns:n="FEN0067A"\r
+ xmlns:txt2xml="http://www.xemelios.org/namespaces#txt2xml"\r
+ targetNamespace="FEN0067A">\r
+\r
+\r
+ <xs:element name="ID_AE" nillable="false">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:maxLength value="12"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:element>\r
+ \r
+ <xs:element name="SUB_NUMBER" nillable="true">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:token">\r
+ <xs:maxLength value="4"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:element>\r
+ <xs:element name="TEXT_ID" nillable="false">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:token">\r
+ <xs:maxLength value="4"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:element>\r
+ <xs:element name="TEXT_LINE" nillable="true">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:token">\r
+ <xs:maxLength value="132"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:element>\r
+ <xs:element name="WBS_ELEM" nillable="true">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:token">\r
+ <xs:maxLength value="24"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:element>\r
+ \r
+ <xs:element name="BUS_AREA" nillable="true">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:token">\r
+ <xs:maxLength value="4"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:element>\r
+ \r
+ <xs:element name="CMMT_ITEM" nillable="true">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:token">\r
+ <xs:maxLength value="14"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:element>\r
+ <xs:element name="FUNDS_CTR" nillable="true">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:token">\r
+ <xs:maxLength value="14"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:element>\r
+ <xs:element name="FUND" nillable="true">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:token">\r
+ <xs:maxLength value="10"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:element>\r
+ <xs:element name="FUNC_AREA" nillable="true">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:token">\r
+ <xs:maxLength value="10"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:element>\r
+ <xs:element name="ACTIVITY" nillable="true">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:token">\r
+ <xs:maxLength value="24"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:element>\r
+ <xs:element name="LOC_INT" nillable="true">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:token">\r
+ <xs:maxLength value="8"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:element>\r
+ <xs:element name="ANA_MIN" nillable="true">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:token">\r
+ <xs:maxLength value="22"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:element>\r
+ <xs:element name="LOC_MIN" nillable="true">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:token">\r
+ <xs:maxLength value="22"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:element>\r
+ <xs:element name="TRC_FONC" nillable="true">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:token">\r
+ <xs:maxLength value="24"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:element>\r
+ <xs:element name="NAT_MIN" nillable="true">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:token">\r
+ <xs:maxLength value="11"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:element>\r
+ <xs:element name="CPER" nillable="true">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:token">\r
+ <xs:maxLength value="15"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:element>\r
+ \r
+ <xs:element name="PRESAGE" nillable="true">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:token">\r
+ <xs:maxLength value="15"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:element>\r
+ <xs:element name="AXMIN1" nillable="true">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:token">\r
+ <xs:maxLength value="22"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:element>\r
+ <xs:element name="AXMIN2" nillable="true">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:token">\r
+ <xs:maxLength value="22"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:element>\r
+ <xs:element name="RES_DOC" nillable="true">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:token">\r
+ <xs:maxLength value="10"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:element>\r
+ <xs:element name="RES_ITEM" nillable="true">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:token">\r
+ <xs:maxLength value="3"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:element>\r
+ \r
+ <xs:element name="ACC_CAT" nillable="false">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:token">\r
+ <xs:maxLength value="5"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:element>\r
+ <xs:element name="DESCRIPTION" nillable="true">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:maxLength value="40"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:element>\r
+ <xs:element name="DOC_DATE" nillable="false">\r
+ <xs:simpleType>\r
+ <xs:annotation>\r
+ <xs:documentation>Date au format AAAAMMJJ</xs:documentation>\r
+ </xs:annotation>\r
+ <xs:restriction base="xs:string">\r
+ <xs:pattern value="(\d\d\d\d)(0[1-9]|1[012])(0[1-9]|1[0-9]|2[0-9]|3[01])"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:element>\r
+ \r
+ <xs:element name="CURRENCY" nillable="true">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:maxLength value="5"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:element>\r
+ \r
+ <xs:element name="INITIATEUR" nillable="false">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:maxLength value="12"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:element>\r
+ <xs:element name="CTR_NUMBER" nillable="false">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:maxLength value="10"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:element>\r
+ <xs:element name="CTR_ITEM_NUMBER" nillable="false">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:maxLength value="10"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:element>\r
+ <xs:element name="STGE_LOC" nillable="false">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:maxLength value="4"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:element>\r
+ <xs:element name="BE_PLANT" nillable="false">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:maxLength value="4"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:element>\r
+ <xs:element name="BE_PUR_GROUP" nillable="false">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:maxLength value="3"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:element>\r
+ <xs:element name="CODE_APPLI" nillable="false">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:string">\r
+ <xs:maxLength value="6"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:element>\r
+\r
+ <xs:element name="COST_CTR" nillable="true">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:token">\r
+ <xs:maxLength value="10"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:element>\r
+\r
+ <xs:element name="GL_ACCT" nillable="true">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:token">\r
+ <xs:maxLength value="10"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:element>\r
+ <xs:element name="PARTNER_FCT" nillable="false">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:token">\r
+ <xs:maxLength value="8"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:element>\r
+ <xs:element name="PARTNER_TYP" nillable="true">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:token">\r
+ <xs:maxLength value="4"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:element>\r
+ <xs:element name="ID_CHORUS_PARTNER" nillable="true">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:token">\r
+ <xs:maxLength value="10"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:element>\r
+ <xs:element name="CITY" nillable="true">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:token">\r
+ <xs:maxLength value="35"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:element>\r
+ <xs:element name="PARTNER_PROD" nillable="true">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:token">\r
+ <xs:maxLength value="40"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:element>\r
+ <xs:element name="CATEGORY_ID" nillable="true">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:token">\r
+ <xs:maxLength value="20"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:element>\r
+ <xs:element name="TYPE_ID_FONC" nillable="true">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:token">\r
+ <xs:maxLength value="30"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:element>\r
+ <xs:element name="ID_FONC_PROD" nillable="true">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:token">\r
+ <xs:maxLength value="30"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:element>\r
+ <xs:element name="ID_CHORUS_PROD" nillable="true">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:token">\r
+ <xs:maxLength value="18"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:element>\r
+ <xs:element name="UNIT" nillable="true">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:token">\r
+ <xs:maxLength value="3"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:element>\r
+ <xs:element name="TAX_CODE" nillable="true">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:token">\r
+ <xs:maxLength value="12"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:element>\r
+ <xs:element name="ADDR_TYPE" nillable="false">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:token">\r
+ <xs:maxLength value="1"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:element>\r
+ <xs:element name="ADDR_ORIGIN" nillable="false">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:token">\r
+ <xs:maxLength value="1"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:element>\r
+ <xs:element name="BUILDING" nillable="true">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:token">\r
+ <xs:maxLength value="10"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:element>\r
+ <xs:element name="FLOOR" nillable="true">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:token">\r
+ <xs:maxLength value="10"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:element>\r
+ <xs:element name="ROOM_NO" nillable="true">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:token">\r
+ <xs:maxLength value="10"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:element>\r
+ <xs:element name="NAME" nillable="true">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:token">\r
+ <xs:maxLength value="35"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:element>\r
+ <xs:element name="E_MAIL" nillable="true">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:token">\r
+ <xs:maxLength value="30"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:element>\r
+ <xs:element name="FAX_NUMBER" nillable="true">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:token">\r
+ <xs:maxLength value="30"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:element>\r
+ <xs:element name="POSTL_COD" nillable="true">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:token">\r
+ <xs:maxLength value="10"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:element>\r
+ <xs:element name="STREET" nillable="true">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:token">\r
+ <xs:maxLength value="35"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:element>\r
+ <xs:element name="HOUSE_NO" nillable="true">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:token">\r
+ <xs:maxLength value="10"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:element>\r
+ <xs:element name="COUNTRY" nillable="true">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:token">\r
+ <xs:maxLength value="3"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:element>\r
+ <xs:element name="TEL_NUMBR" nillable="true">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:token">\r
+ <xs:maxLength value="30"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:element>\r
+ <xs:element name="ID_FONC_PARTNER" nillable="true">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:token">\r
+ <xs:maxLength value="80"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:element>\r
+ \r
+ <xs:element name="ASSET_NO" nillable="true">\r
+ <xs:simpleType >\r
+ <xs:restriction base="xs:token">\r
+ <xs:maxLength value="12"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:element>\r
+ \r
+ <xs:element name="ID_LIG" nillable="false">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:token">\r
+ <xs:maxLength value="5"/>\r
+ <xs:pattern value="[0-9]{1,5}"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:element>\r
+\r
+ <xs:element name="QUANTITY" nillable="false">\r
+ <xs:simpleType>\r
+ <xs:restriction base="xs:token">\r
+ <xs:maxLength value="15"/>\r
+ <xs:pattern value="(\+|-)?[0-9]{1,10}([.][0-9]{1,3})?"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:element>\r
+ \r
+ <xs:element name="GROSS_PRICE" nillable="false">\r
+ <xs:simpleType >\r
+ <xs:restriction base="xs:token">\r
+ <xs:maxLength value="25"/>\r
+ <xs:pattern value="(\+|-)?[0-9]{1,19}([.][0-9]{1,4})?"/>\r
+ </xs:restriction> \r
+ </xs:simpleType>\r
+ </xs:element>\r
+ \r
+ <xs:element name="UNIT_PRICE" nillable="true">\r
+ <xs:simpleType >\r
+ <xs:restriction base="xs:token">\r
+ <xs:maxLength value="5"/>\r
+ <xs:pattern value="[0-9]{1,5}"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:element>\r
+ <xs:element name="DELIV_DATE" nillable="false">\r
+ <xs:simpleType >\r
+ <xs:restriction base="xs:token">\r
+ <xs:maxLength value="8"/>\r
+ <xs:pattern value="(\d\d\d\d)(0[1-9]|1[012])(0[1-9]|1[0-9]|2[0-9]|3[01])"/>\r
+ </xs:restriction> \r
+ </xs:simpleType>\r
+ </xs:element>\r
+ <xs:element name="PRICE" nillable="true">\r
+ <xs:simpleType >\r
+ <xs:restriction base="xs:token">\r
+ <xs:maxLength value="15"/>\r
+ <xs:pattern value="(\+|-)?[0-9]{1,11}([.][0-9]{1,2})?"/>\r
+ </xs:restriction>\r
+ </xs:simpleType>\r
+ </xs:element>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>\r
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"\r
+ xmlns="FEN0067A"\r
+ xmlns:n="FEN0067A"\r
+ xmlns:txt2xml="http://www.xemelios.org/namespaces#txt2xml"\r
+ targetNamespace="FEN0067A">\r
+ <xs:include schemaLocation="AX-ENTETE_V3.1.xsd"/>\r
+ <xs:include schemaLocation="AX-POSTE_V3.1.xsd"/>\r
+ <xs:include schemaLocation=" AX-IMPUTATION_V3.1.xsd"/>\r
+ <xs:include schemaLocation="AX-PARTENER_V3.1.xsd"/>\r
+ <xs:include schemaLocation="AX-TEXTE_V3.1.xsd"/>\r
+ <xs:element name="DA">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="ENTETE"/>\r
+ <xs:element ref="POSTE" maxOccurs="unbounded"/>\r
+ <xs:element ref="IMPUTATION" maxOccurs="unbounded"/>\r
+ <xs:element ref="PARTENAIRE" maxOccurs="unbounded"/>\r
+ <xs:element ref="TEXTE" minOccurs="0" maxOccurs="unbounded"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>\r
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"\r
+ xmlns="FEN0067A"\r
+ xmlns:n="FEN0067A"\r
+ xmlns:txt2xml="http://www.xemelios.org/namespaces#txt2xml"\r
+ targetNamespace="FEN0067A">\r
+ <xs:include schemaLocation="AX-Commun_V3.1.xsd"/>\r
+\r
+\r
+ <xs:element name="ENTETE">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="ID_AE"/>\r
+ <xs:element ref="CODE_APPLI"/>\r
+ <xs:element ref="DESCRIPTION" minOccurs="0"/>\r
+ <xs:element ref="DOC_DATE"/>\r
+ <xs:element ref="INITIATEUR"/>\r
+ <xs:element ref="CURRENCY" minOccurs="0"/>\r
+ </xs:sequence>\r
+ <xs:attribute name="LineTxt"/>\r
+ </xs:complexType>\r
+ </xs:element>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>\r
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"\r
+ xmlns="FEN0067A"\r
+ xmlns:n="FEN0067A"\r
+ xmlns:txt2xml="http://www.xemelios.org/namespaces#txt2xml"\r
+ targetNamespace="FEN0067A">\r
+ <xs:include schemaLocation="AX-DA_V3.1.xsd"/>\r
+\r
+ <xs:element name="FEN0067A">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="DA" maxOccurs="unbounded"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ </xs:element>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>\r
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"\r
+ xmlns="FEN0067A"\r
+ xmlns:n="FEN0067A"\r
+ xmlns:txt2xml="http://www.xemelios.org/namespaces#txt2xml"\r
+ targetNamespace="FEN0067A">\r
+ <xs:include schemaLocation="AX-Commun_V3.1.xsd"/>\r
+\r
+ <xs:element name="IMPUTATION">\r
+ <xs:complexType>\r
+\r
+ <xs:sequence>\r
+ <xs:element ref="ID_AE"/>\r
+ <xs:element ref="ID_LIG"/>\r
+ <xs:element ref="ACC_CAT"/>\r
+ <xs:element ref="GL_ACCT" minOccurs="0"/>\r
+ <xs:element ref="BUS_AREA" minOccurs="0"/>\r
+ <xs:element ref="COST_CTR" minOccurs="0"/>\r
+ <xs:element ref="ASSET_NO" minOccurs="0"/>\r
+ <xs:element ref="SUB_NUMBER" minOccurs="0"/>\r
+ <xs:element ref="WBS_ELEM" minOccurs="0"/>\r
+ <xs:element ref="CMMT_ITEM" minOccurs="0"/>\r
+ <xs:element ref="FUNDS_CTR" minOccurs="0"/>\r
+ <xs:element ref="FUND" minOccurs="0"/>\r
+ <xs:element ref="FUNC_AREA" minOccurs="0"/>\r
+ <xs:element ref="ACTIVITY" minOccurs="0"/>\r
+ <xs:element ref="TRC_FONC" minOccurs="0"/>\r
+ <xs:element ref="LOC_INT" minOccurs="0"/>\r
+ <xs:element ref="ANA_MIN" minOccurs="0"/>\r
+ <xs:element ref="LOC_MIN" minOccurs="0"/>\r
+ <xs:element ref="NAT_MIN" minOccurs="0"/>\r
+ <xs:element ref="CPER" minOccurs="0"/>\r
+ <xs:element ref="PRESAGE" minOccurs="0"/>\r
+ <xs:element ref="AXMIN1" minOccurs="0"/>\r
+ <xs:element ref="AXMIN2" minOccurs="0"/>\r
+ <xs:element ref="RES_DOC" minOccurs="0"/>\r
+ <xs:element ref="RES_ITEM" minOccurs="0"/>\r
+ </xs:sequence>\r
+ <xs:attribute name="LineTxt"/>\r
+ </xs:complexType>\r
+ </xs:element>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>\r
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"\r
+ xmlns="FEN0067A"\r
+ xmlns:n="FEN0067A"\r
+ xmlns:txt2xml="http://www.xemelios.org/namespaces#txt2xml"\r
+ targetNamespace="FEN0067A">\r
+ <xs:include schemaLocation="AX-Commun_V3.1.xsd"/>\r
+\r
+ <xs:element name="PARTENAIRE">\r
+ <xs:complexType>\r
+\r
+ <xs:sequence>\r
+ <xs:element ref="ID_AE"/>\r
+ <xs:element ref="ID_LIG" minOccurs="0"/>\r
+ <xs:element ref="PARTNER_FCT"/>\r
+ <xs:element ref="PARTNER_TYP" minOccurs="0"/>\r
+ <xs:element ref="ID_FONC_PARTNER" minOccurs="0"/>\r
+ <xs:element ref="ID_CHORUS_PARTNER" minOccurs="0"/>\r
+ <xs:element ref="ADDR_TYPE"/>\r
+ <xs:element ref="ADDR_ORIGIN"/>\r
+ <xs:element ref="BUILDING" minOccurs="0"/>\r
+ <xs:element ref="FLOOR" minOccurs="0"/>\r
+ <xs:element ref="ROOM_NO" minOccurs="0"/>\r
+ <xs:element ref="NAME" minOccurs="0"/>\r
+ <xs:element ref="CITY" minOccurs="0"/>\r
+ <xs:element ref="POSTL_COD" minOccurs="0"/>\r
+ <xs:element ref="STREET" minOccurs="0"/>\r
+ <xs:element ref="HOUSE_NO" minOccurs="0"/>\r
+ <xs:element ref="COUNTRY" minOccurs="0"/>\r
+ <xs:element ref="TEL_NUMBR" minOccurs="0"/>\r
+ <xs:element ref="FAX_NUMBER" minOccurs="0"/>\r
+ <xs:element ref="E_MAIL" minOccurs="0"/>\r
+ </xs:sequence>\r
+ <xs:attribute name="LineTxt"/>\r
+ </xs:complexType>\r
+ </xs:element>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>\r
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"\r
+ xmlns="FEN0067A"\r
+ xmlns:n="FEN0067A"\r
+ xmlns:txt2xml="http://www.xemelios.org/namespaces#txt2xml"\r
+ targetNamespace="FEN0067A">\r
+ <xs:include schemaLocation="AX-Commun_V3.1.xsd"/>\r
+\r
+ <xs:element name="POSTE">\r
+ <xs:complexType>\r
+ <xs:sequence>\r
+ <xs:element ref="ID_AE"/>\r
+ <xs:element ref="ID_LIG"/>\r
+ <xs:element ref="DESCRIPTION" minOccurs="0"/>\r
+ <xs:element ref="PARTNER_PROD" minOccurs="0"/>\r
+ <xs:element ref="CATEGORY_ID" minOccurs="0"/>\r
+ <xs:element ref="TYPE_ID_FONC" minOccurs="0"/>\r
+ <xs:element ref="ID_FONC_PROD" minOccurs="0"/>\r
+ <xs:element ref="ID_CHORUS_PROD" minOccurs="0"/>\r
+ <xs:element ref="QUANTITY"/>\r
+ <xs:element ref="UNIT" minOccurs="0"/>\r
+ <xs:element ref="GROSS_PRICE" minOccurs="0"/>\r
+ <xs:element ref="UNIT_PRICE" minOccurs="0"/>\r
+ <xs:element ref="TAX_CODE" minOccurs="0"/>\r
+ <xs:element ref="DELIV_DATE"/>\r
+ <xs:element ref="CTR_NUMBER" minOccurs="0"/>\r
+ <xs:element ref="CTR_ITEM_NUMBER" minOccurs="0"/>\r
+ <xs:element ref="STGE_LOC" minOccurs="0"/>\r
+ <xs:element ref="BE_PLANT"/>\r
+ <xs:element ref="BE_PUR_GROUP"/>\r
+ <xs:element ref="PRICE" minOccurs="0"/>\r
+ </xs:sequence>\r
+ <xs:attribute name="LineTxt"/>\r
+ </xs:complexType>\r
+ </xs:element>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>\r
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="FEN0067A" xmlns:n="FEN0067A"\r
+ xmlns:txt2xml="http://www.xemelios.org/namespaces#txt2xml" targetNamespace="FEN0067A">\r
+ <xs:include schemaLocation="AX-Commun_V3.1.xsd"/>\r
+\r
+ <xs:element name="TEXTE">\r
+ <xs:complexType>\r
+\r
+ <xs:sequence>\r
+ <xs:element ref="ID_AE"/>\r
+ <xs:element ref="ID_LIG"/>\r
+ <xs:element ref="TEXT_ID"/>\r
+ <xs:element ref="TEXT_LINE" minOccurs="0"/>\r
+ </xs:sequence>\r
+ <xs:attribute name="LineTxt"/>\r
+ </xs:complexType>\r
+ </xs:element>\r
+</xs:schema>\r
--- /dev/null
+<?xml version="1.0"?>\r
+<xs:schema xmlns="FEN0067A" targetNamespace="FEN0067A" xmlns:xs="http://www.w3.org/2001/XMLSchema"\r
+ elementFormDefault="qualified" attributeFormDefault="unqualified">\r
+ <xs:element name="FEN0067A" type="FEN0067AType"/>\r
+ <xs:annotation>\r
+ <xs:documentation>Schema XML de l'interface FEN0067A v1.4 du 15/10/2009</xs:documentation>\r
+ </xs:annotation>\r
+ <xs:annotation>\r
+ <xs:documentation>Creation des types simples i.e. des formats des champs</xs:documentation>\r
+ </xs:annotation>\r
+ <xs:simpleType name="Char1Type"> <xs:restriction base="xs:token"> <xs:maxLength value="1"/> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Char2Type"> <xs:restriction base="xs:token"> <xs:maxLength value="2"/> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Char3Type"> <xs:restriction base="xs:token"> <xs:maxLength value="3"/> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Char4Type"> <xs:restriction base="xs:token"> <xs:maxLength value="4"/> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Char5Type"> <xs:restriction base="xs:token"> <xs:maxLength value="5"/> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Char6Type"> <xs:restriction base="xs:token"> <xs:maxLength value="6"/> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Char8Type"> <xs:restriction base="xs:token"> <xs:maxLength value="8"/> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Char10Type"> <xs:restriction base="xs:token"> <xs:maxLength value="10"/> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Char11Type"> <xs:restriction base="xs:token"> <xs:maxLength value="11"/> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Char12Type"> <xs:restriction base="xs:token"> <xs:maxLength value="12"/> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Char14Type"> <xs:restriction base="xs:token"> <xs:maxLength value="14"/> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Char15Type"> <xs:restriction base="xs:token"> <xs:maxLength value="15"/> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Char16Type"> <xs:restriction base="xs:token"> <xs:maxLength value="16"/> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Char18Type"> <xs:restriction base="xs:token"> <xs:maxLength value="18"/> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Char20Type"> <xs:restriction base="xs:token"> <xs:maxLength value="20"/> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Char22Type"> <xs:restriction base="xs:token"> <xs:maxLength value="22"/> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Char24Type"> <xs:restriction base="xs:token"> <xs:maxLength value="24"/> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Char30Type"> <xs:restriction base="xs:token"> <xs:maxLength value="30"/> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Char35Type"> <xs:restriction base="xs:token"> <xs:maxLength value="35"/> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Char40Type"> <xs:restriction base="xs:token"> <xs:maxLength value="40"/> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Char80Type"> <xs:restriction base="xs:token"> <xs:maxLength value="80"/> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Char132Type"> <xs:restriction base="xs:token"> <xs:maxLength value="132"/> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Char250Type"> <xs:restriction base="xs:token"> <xs:maxLength value="250"/> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Char500Type"> <xs:restriction base="xs:token"> <xs:maxLength value="500"/> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Date15Type"> <xs:restriction base="xs:token"> <xs:maxLength value="15"/> <xs:pattern value="(\d\d\d\d)(0[1-9]|1[012])(0[1-9]|1[0-9]|2[0-9]|3[01]) (\d\d\d\d\d\d)"/> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Date8Type"> <xs:restriction base="xs:token"> <xs:maxLength value="8"/> <xs:pattern value="(\d\d\d\d)(0[1-9]|1[012])(0[1-9]|1[0-9]|2[0-9]|3[01])"/> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Heure6Type"> <xs:restriction base="xs:token"> <xs:maxLength value="6"/> <xs:pattern value="(\d\d\d\d\d\d)"/> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Num3.2Type"> <xs:restriction base="xs:token"> <xs:maxLength value="6"/> <xs:pattern value= "[0-9]{1,3}([.][0-9]{1,2})?" /> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Num4Type"> <xs:restriction base="xs:token"> <xs:maxLength value="4"/> <xs:pattern value= "[0-9]{1,4}" /> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Num4.5Type"> <xs:restriction base="xs:token"> <xs:maxLength value="10"/> <xs:pattern value= "[0-9]{1,4}([.][0-9]{1,5})?" /> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Num5Type"> <xs:restriction base="xs:token"> <xs:maxLength value="5"/> <xs:pattern value= "[0-9]{1,5}" /> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Num9.2Type"> <xs:restriction base="xs:token"> <xs:maxLength value="13"/> <xs:pattern value= "[0-9]{1,9}([.][0-9]{1,2})?" /> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Num10Type"> <xs:restriction base="xs:token"> <xs:maxLength value="10"/> <xs:pattern value= "[0-9]{1,10}" /> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Num10.3sType"><xs:restriction base="xs:token"> <xs:maxLength value="15"/> <xs:pattern value="(\+|-)?[0-9]{1,10}([.][0-9]{1,3})?"/> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Num11.2sType"><xs:restriction base="xs:token"> <xs:maxLength value="15"/> <xs:pattern value="(\+|-)?[0-9]{1,11}([.][0-9]{1,2})?"/> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Num13.2Type"> <xs:restriction base="xs:token"> <xs:maxLength value="17"/> <xs:pattern value= "[0-9]{1,13}([.][0-9]{1,2})?" /> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Num13.2sType"><xs:restriction base="xs:token"> <xs:maxLength value="17"/> <xs:pattern value="(\+|-)?[0-9]{1,13}([.][0-9]{1,2})?"/> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Num14Type"> <xs:restriction base="xs:token"> <xs:maxLength value="14"/> <xs:pattern value= "[0-9]{1,14}" /> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Num15Type"> <xs:restriction base="xs:token"> <xs:maxLength value="15"/> <xs:pattern value= "[0-9]{1,15}" /> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Num19.4sType"><xs:restriction base="xs:token"> <xs:maxLength value="25"/> <xs:pattern value="(\+|-)?[0-9]{1,19}([.][0-9]{1,4})?"/> </xs:restriction> </xs:simpleType>\r
+ <xs:complexType name="EnteteType">\r
+ <xs:sequence>\r
+ <xs:element name="ID_AE" type="Char12Type" nillable="false"/>\r
+ <xs:element name="CODE_APPLI" type="Char6Type" nillable="false"/>\r
+ <xs:element name="DESCRIPTION" type="Char40Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="DOC_DATE" type="Date8Type" nillable="false"/>\r
+ <xs:element name="INITIATEUR" type="Char12Type" nillable="false"/>\r
+ <xs:element name="CURRENCY" type="Char5Type" minOccurs="0" nillable="true"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="PosteType">\r
+ <xs:sequence>\r
+ <xs:element name="ID_AE" type="Char12Type" nillable="false"/>\r
+ <xs:element name="ID_LIG" type="Num5Type" nillable="false"/>\r
+ <xs:element name="DESCRIPTION" type="Char40Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="PARTNER_PROD" type="Char40Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="CATEGORY_ID" type="Char20Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="TYPE_ID_FONC" type="Char30Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="ID_FONC_PROD" type="Char30Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="ID_CHORUS_PROD" type="Char18Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="QUANTITY" type="Num10.3sType" nillable="false"/>\r
+ <xs:element name="UNIT" type="Char3Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="GROSS_PRICE" type="Num19.4sType" minOccurs="0" nillable="true"/>\r
+ <xs:element name="UNIT_PRICE" type="Num5Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="TAX_CODE" type="Char2Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="DELIV_DATE" type="Date8Type" nillable="false"/>\r
+ <xs:element name="CTR_NUMBER" type="Char10Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="CTR_ITEM_NUMBER" type="Num10Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="STGE_LOC" type="Char4Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="BE_PLANT" type="Char4Type" nillable="false"/>\r
+ <xs:element name="BE_PUR_GROUP" type="Char3Type" nillable="false"/>\r
+ <xs:element name="PRICE" type="Num11.2sType" minOccurs="0" nillable="true"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="ImputationType">\r
+ <xs:sequence>\r
+ <xs:element name="ID_AE" type="Char12Type" nillable="false"/>\r
+ <xs:element name="ID_LIG" type="Num5Type" nillable="false"/>\r
+ <xs:element name="ACC_CAT" type="Char5Type" nillable="false"/>\r
+ <xs:element name="GL_ACCT" type="Char10Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="BUS_AREA" type="Char4Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="COST_CTR" type="Char10Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="ASSET_NO" type="Char12Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="SUB_NUMBER" type="Char4Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="WBS_ELEM" type="Char24Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="CMMT_ITEM" type="Char14Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="FUNDS_CTR" type="Char16Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="FUND" type="Char10Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="FUNC_AREA" type="Char16Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="ACTIVITY" type="Char24Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="TRC_FONC" type="Char24Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="LOC_INT" type="Char8Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="ANA_MIN" type="Char22Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="LOC_MIN" type="Char22Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="NAT_MIN" type="Char11Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="CPER" type="Char15Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="PRESAGE" type="Char15Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="AXMIN1" type="Char22Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="AXMIN2" type="Char22Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="RES_DOC" type="Char10Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="RES_ITEM" type="Char3Type" minOccurs="0" nillable="true"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="PartenaireType">\r
+ <xs:sequence>\r
+ <xs:element name="ID_AE" type="Char12Type" nillable="false"/>\r
+ <xs:element name="ID_LIG" type="Num5Type" minOccurs="0" nillable="false"/>\r
+ <xs:element name="PARTNER_FCT" type="Char8Type" nillable="false"/>\r
+ <xs:element name="PARTNER_TYP" type="Char4Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="ID_FONC_PARTNER" type="Char80Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="ID_CHORUS_PARTNER" type="Char10Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="ADDR_TYPE" type="Char1Type" nillable="false"/>\r
+ <xs:element name="ADDR_ORIGIN" type="Char1Type" nillable="false"/>\r
+ <xs:element name="BUILDING" type="Char10Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="FLOOR" type="Char10Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="ROOM_NO" type="Char10Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="NAME" type="Char35Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="CITY" type="Char35Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="POSTL_COD" type="Char10Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="STREET" type="Char35Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="HOUSE_NO" type="Char10Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="COUNTRY" type="Char3Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="TEL_NUMBR" type="Char30Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="FAX_NUMBER" type="Char30Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="E_MAIL" type="Char30Type" minOccurs="0" nillable="true"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TexteType">\r
+ <xs:sequence>\r
+ <xs:element name="ID_AE" type="Char12Type" nillable="false"/>\r
+ <xs:element name="ID_LIG" type="Num5Type" nillable="false"/>\r
+ <xs:element name="TEXT_ID" type="Char4Type" nillable="false"/>\r
+ <xs:element name="TEXT_LINE" type="Char132Type" minOccurs="0" nillable="true"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="DossierType">\r
+ <xs:sequence>\r
+ <xs:element name="ENTETE" type="EnteteType"/>\r
+ <xs:element name="POSTE" type="PosteType" maxOccurs="unbounded"/>\r
+ <xs:element name="IMPUTATION" type="ImputationType" maxOccurs="unbounded"/>\r
+ <xs:element name="PARTENAIRE" type="PartenaireType" maxOccurs="unbounded"/>\r
+ <xs:element name="TEXTE" type="TexteType" minOccurs="0" maxOccurs="unbounded"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="FEN0067AType">\r
+ <xs:sequence>\r
+ <xs:element name="DA" type="DossierType" maxOccurs="unbounded"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+</xs:schema>\r
+\r
+\r
+\r
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-15"?>\r
+<xs:schema xmlns="FEN0067A" targetNamespace="FEN0067A" xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified" attributeFormDefault="unqualified">\r
+ <xs:element name="FEN0067A" type="FEN0067AType"/>\r
+ <xs:annotation>\r
+ <xs:documentation>Schema XML de l'interface FEN0067A v1.4 du 15/10/2009</xs:documentation>\r
+ </xs:annotation>\r
+ <xs:annotation>\r
+ <xs:documentation>Creation des types simples i.e. des formats des champs</xs:documentation>\r
+ </xs:annotation>\r
+ <xs:simpleType name="Char1Type"> <xs:restriction base="xs:token"> <xs:maxLength value="1"/> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Char2Type"> <xs:restriction base="xs:token"> <xs:maxLength value="2"/> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Char3Type"> <xs:restriction base="xs:token"> <xs:maxLength value="3"/> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Char4Type"> <xs:restriction base="xs:token"> <xs:maxLength value="4"/> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Char5Type"> <xs:restriction base="xs:token"> <xs:maxLength value="5"/> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Char6Type"> <xs:restriction base="xs:token"> <xs:maxLength value="6"/> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Char8Type"> <xs:restriction base="xs:token"> <xs:maxLength value="8"/> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Char10Type"> <xs:restriction base="xs:token"> <xs:maxLength value="10"/> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Char11Type"> <xs:restriction base="xs:token"> <xs:maxLength value="11"/> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Char12Type"> <xs:restriction base="xs:token"> <xs:maxLength value="12"/> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Char14Type"> <xs:restriction base="xs:token"> <xs:maxLength value="14"/> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Char15Type"> <xs:restriction base="xs:token"> <xs:maxLength value="15"/> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Char16Type"> <xs:restriction base="xs:token"> <xs:maxLength value="16"/> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Char18Type"> <xs:restriction base="xs:token"> <xs:maxLength value="18"/> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Char20Type"> <xs:restriction base="xs:token"> <xs:maxLength value="20"/> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Char22Type"> <xs:restriction base="xs:token"> <xs:maxLength value="22"/> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Char24Type"> <xs:restriction base="xs:token"> <xs:maxLength value="24"/> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Char30Type"> <xs:restriction base="xs:token"> <xs:maxLength value="30"/> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Char35Type"> <xs:restriction base="xs:token"> <xs:maxLength value="35"/> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Char40Type"> <xs:restriction base="xs:token"> <xs:maxLength value="40"/> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Char80Type"> <xs:restriction base="xs:token"> <xs:maxLength value="80"/> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Char132Type"> <xs:restriction base="xs:token"> <xs:maxLength value="132"/> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Char250Type"> <xs:restriction base="xs:token"> <xs:maxLength value="250"/> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Char500Type"> <xs:restriction base="xs:token"> <xs:maxLength value="500"/> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Date15Type"> <xs:restriction base="xs:token"> <xs:maxLength value="15"/> <xs:pattern value="(\d\d\d\d)(0[1-9]|1[012])(0[1-9]|1[0-9]|2[0-9]|3[01]) (\d\d\d\d\d\d)"/> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Date8Type"> <xs:restriction base="xs:token"> <xs:maxLength value="8"/> <xs:pattern value="(\d\d\d\d)(0[1-9]|1[012])(0[1-9]|1[0-9]|2[0-9]|3[01])"/> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Heure6Type"> <xs:restriction base="xs:token"> <xs:maxLength value="6"/> <xs:pattern value="(\d\d\d\d\d\d)"/> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Num3.2Type"> <xs:restriction base="xs:token"> <xs:maxLength value="6"/> <xs:pattern value= "[0-9]{1,3}([.][0-9]{1,2})?" /> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Num4Type"> <xs:restriction base="xs:token"> <xs:maxLength value="4"/> <xs:pattern value= "[0-9]{1,4}" /> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Num4.5Type"> <xs:restriction base="xs:token"> <xs:maxLength value="10"/> <xs:pattern value= "[0-9]{1,4}([.][0-9]{1,5})?" /> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Num5Type"> <xs:restriction base="xs:token"> <xs:maxLength value="5"/> <xs:pattern value= "[0-9]{1,5}" /> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Num9.2Type"> <xs:restriction base="xs:token"> <xs:maxLength value="13"/> <xs:pattern value= "[0-9]{1,9}([.][0-9]{1,2})?" /> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Num10Type"> <xs:restriction base="xs:token"> <xs:maxLength value="10"/> <xs:pattern value= "[0-9]{1,10}" /> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Num10.3sType"><xs:restriction base="xs:token"> <xs:maxLength value="15"/> <xs:pattern value="(\+|-)?[0-9]{1,10}([.][0-9]{1,3})?"/> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Num11.2sType"><xs:restriction base="xs:token"> <xs:maxLength value="15"/> <xs:pattern value="(\+|-)?[0-9]{1,11}([.][0-9]{1,2})?"/> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Num13.2Type"> <xs:restriction base="xs:token"> <xs:maxLength value="17"/> <xs:pattern value= "[0-9]{1,13}([.][0-9]{1,2})?" /> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Num13.2sType"><xs:restriction base="xs:token"> <xs:maxLength value="17"/> <xs:pattern value="(\+|-)?[0-9]{1,13}([.][0-9]{1,2})?"/> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Num14Type"> <xs:restriction base="xs:token"> <xs:maxLength value="14"/> <xs:pattern value= "[0-9]{1,14}" /> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Num15Type"> <xs:restriction base="xs:token"> <xs:maxLength value="15"/> <xs:pattern value= "[0-9]{1,15}" /> </xs:restriction> </xs:simpleType>\r
+ <xs:simpleType name="Num19.4sType"><xs:restriction base="xs:token"> <xs:maxLength value="25"/> <xs:pattern value="(\+|-)?[0-9]{1,19}([.][0-9]{1,4})?"/> </xs:restriction> </xs:simpleType>\r
+ <xs:complexType name="EnteteType">\r
+ <xs:sequence>\r
+ <xs:element name="ID_AE" type="Char12Type" nillable="false"/>\r
+ <xs:element name="CODE_APPLI" type="Char6Type" nillable="false"/>\r
+ <xs:element name="DESCRIPTION" type="Char40Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="DOC_DATE" type="Date8Type" nillable="false"/>\r
+ <xs:element name="INITIATEUR" type="Char12Type" nillable="false"/>\r
+ <xs:element name="CURRENCY" type="Char5Type" minOccurs="0" nillable="true"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="PosteType">\r
+ <xs:sequence>\r
+ <xs:element name="ID_AE" type="Char12Type" nillable="false"/>\r
+ <xs:element name="ID_LIG" type="Num5Type" nillable="false"/>\r
+ <xs:element name="DESCRIPTION" type="Char40Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="PARTNER_PROD" type="Char40Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="CATEGORY_ID" type="Char20Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="TYPE_ID_FONC" type="Char30Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="ID_FONC_PROD" type="Char30Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="ID_CHORUS_PROD" type="Char18Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="QUANTITY" type="Num10.3sType" nillable="false"/>\r
+ <xs:element name="UNIT" type="Char3Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="GROSS_PRICE" type="Num19.4sType" minOccurs="0" nillable="true"/>\r
+ <xs:element name="UNIT_PRICE" type="Num5Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="TAX_CODE" type="Char2Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="DELIV_DATE" type="Date8Type" nillable="false"/>\r
+ <xs:element name="CTR_NUMBER" type="Char10Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="CTR_ITEM_NUMBER" type="Num10Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="STGE_LOC" type="Char4Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="BE_PLANT" type="Char4Type" nillable="false"/>\r
+ <xs:element name="BE_PUR_GROUP" type="Char3Type" nillable="false"/>\r
+ <xs:element name="PRICE" type="Num11.2sType" minOccurs="0" nillable="true"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="ImputationType">\r
+ <xs:sequence>\r
+ <xs:element name="ID_AE" type="Char12Type" nillable="false"/>\r
+ <xs:element name="ID_LIG" type="Num5Type" nillable="false"/>\r
+ <xs:element name="ACC_CAT" type="Char5Type" nillable="false"/>\r
+ <xs:element name="GL_ACCT" type="Char10Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="BUS_AREA" type="Char4Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="COST_CTR" type="Char10Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="ASSET_NO" type="Char12Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="SUB_NUMBER" type="Char4Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="WBS_ELEM" type="Char24Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="CMMT_ITEM" type="Char14Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="FUNDS_CTR" type="Char16Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="FUND" type="Char10Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="FUNC_AREA" type="Char16Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="ACTIVITY" type="Char24Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="TRC_FONC" type="Char24Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="LOC_INT" type="Char8Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="ANA_MIN" type="Char22Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="LOC_MIN" type="Char22Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="NAT_MIN" type="Char11Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="CPER" type="Char15Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="PRESAGE" type="Char15Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="AXMIN1" type="Char22Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="AXMIN2" type="Char22Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="RES_DOC" type="Char10Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="RES_ITEM" type="Char3Type" minOccurs="0" nillable="true"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="PartenaireType">\r
+ <xs:sequence>\r
+ <xs:element name="ID_AE" type="Char12Type" nillable="false"/>\r
+ <xs:element name="ID_LIG" type="Num5Type" minOccurs="0" nillable="false"/>\r
+ <xs:element name="PARTNER_FCT" type="Char8Type" nillable="false"/>\r
+ <xs:element name="PARTNER_TYP" type="Char4Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="ID_FONC_PARTNER" type="Char80Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="ID_CHORUS_PARTNER" type="Char10Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="ADDR_TYPE" type="Char1Type" nillable="false"/>\r
+ <xs:element name="ADDR_ORIGIN" type="Char1Type" nillable="false"/>\r
+ <xs:element name="BUILDING" type="Char10Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="FLOOR" type="Char10Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="ROOM_NO" type="Char10Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="NAME" type="Char35Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="CITY" type="Char35Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="POSTL_COD" type="Char10Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="STREET" type="Char35Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="HOUSE_NO" type="Char10Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="COUNTRY" type="Char3Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="TEL_NUMBR" type="Char30Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="FAX_NUMBER" type="Char30Type" minOccurs="0" nillable="true"/>\r
+ <xs:element name="E_MAIL" type="Char30Type" minOccurs="0" nillable="true"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="TexteType">\r
+ <xs:sequence>\r
+ <xs:element name="ID_AE" type="Char12Type" nillable="false"/>\r
+ <xs:element name="ID_LIG" type="Num5Type" nillable="false"/>\r
+ <xs:element name="TEXT_ID" type="Char4Type" nillable="false"/>\r
+ <xs:element name="TEXT_LINE" type="Char132Type" minOccurs="0" nillable="true"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="DossierType">\r
+ <xs:sequence>\r
+ <xs:element name="ENTETE" type="EnteteType"/>\r
+ <xs:element name="POSTE" type="PosteType" maxOccurs="unbounded"/>\r
+ <xs:element name="IMPUTATION" type="ImputationType" maxOccurs="unbounded"/>\r
+ <xs:element name="PARTENAIRE" type="PartenaireType" maxOccurs="unbounded"/>\r
+ <xs:element name="TEXTE" type="TexteType" minOccurs="0" maxOccurs="unbounded"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+ <xs:complexType name="FEN0067AType">\r
+ <xs:sequence>\r
+ <xs:element name="DA" type="DossierType" maxOccurs="unbounded"/>\r
+ </xs:sequence>\r
+ </xs:complexType>\r
+</xs:schema>\r
+\r
+\r
+\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<ns1:TEXTE xmlns:ns1="http://www.xemelios.org/namespaces#FEN0067A"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.xemelios.org/namespaces#FEN0067A file:/C:/devel/XEMELIOS/src/demande-achat/conf/fen0067a/schema/AX-FEN0067A_V3.xsd">
+ <ID_AE>ID_AE0</ID_AE>
+ <ID_LIG>0</ID_LIG>
+ <TEXT_ID>TEXT</TEXT_ID>
+</ns1:TEXTE>
--- /dev/null
+package fr.gouv.finances.dgfip.xemelios.controls.demandeachat;
+
+/*
+ * Copyright
+ * 2010 axYus - www.axyus.com
+ * 2010 C ARIOUAT - assia.ariouat@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
+ */
+
+
+import java.util.Hashtable;
+import java.util.Stack;
+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;
+
+/*"Implémente le contrôle N° M001
+ * La zone AE TYPE_ENR ne peut prendre que les valeurs : 'E', 'L','I','T' et 'P'.
+ */
+
+public class M001 extends AbstractUnitControl {
+
+ private final static Logger logger = Logger.getLogger(M001.class);
+ public static final transient String CTRL_ID = "CTL-M001";
+ private Hashtable<String,Object> hParams;
+ Vector<Anomalie> anomalies = new Vector<Anomalie>();
+
+ /**
+ * Variables devant être remplacées dans le message
+ */
+ private static final String MSG_COMPTEUR = "#NOMBRE_DA#";
+ private static final String MSG_ENTETE_IDAE = "#ENTETE_IDAE#";
+ private static final String MSG_ENTETE_TYPE_ENR = "#LIGNE_INCONNUE#";
+ private static final String MSG_ERREUR = "#ERREUR#";
+
+ /**
+ * Variables contenant les valeurs nécessaires à ce contrôle
+ */
+
+ private String LIGNE_INCONNUE = "";
+ private String LIGNE_INCONNUE_NodeId = "";
+ private String entete_IdAE = "";
+ private String ID_DA_Unique = "";
+ private String generatedId = "";
+ private Stack<StringBuffer> chars = new Stack<StringBuffer>();
+ private int compteur = 0;
+ private String numLigneTexte = "";
+ private String TYPE_ENR="";
+
+ /**
+ * Chemins vers les divers éléments que l'on veux lire
+ */
+ private static final String CHEMIN_DA ="/DA/";
+ private static final String CHEMIN_ENTETE = "/ENTETE/";
+ private static final String CHEMIN_ENTETE_IDAE = "/ENTETE/ID_AE/";
+ private static final String CHEMIN_LIGNE_INCONNUE_CONTENUE = "/DA/LIGNE_INCONNUE/LIGNE_INCONNUE/";
+ private static final String CHEMIN_LIGNE_INCONNUE = "/DA/LIGNE_INCONNUE/";
+ private static final String RETURN_ANOMALIES_PATH = "/DA/";
+
+ 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_DA)){
+ anomalies.clear();
+ generatedId = atts.getValue("added:generated-id");
+ ID_DA_Unique = atts.getValue("ano:unique-id");
+ compteur++;
+
+ }
+ if (xpath.endsWith(CHEMIN_ENTETE)){
+ entete_IdAE = "";
+ if(atts.getValue("txt2xml:LineTxt")!=null){
+ numLigneTexte = atts.getValue("txt2xml:LineTxt");
+ } else {
+ numLigneTexte = "";
+ }
+ }
+ if (xpath.endsWith(CHEMIN_LIGNE_INCONNUE))
+ {
+
+ LIGNE_INCONNUE_NodeId = atts.getValue("ano:node-id");
+ LIGNE_INCONNUE="";
+ }
+ // A chaque nouvel élément, on vide la Stack
+ chars.push(new StringBuffer());
+ }
+
+
+public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+
+ String erreur = "";
+
+ if (xpath.endsWith(CHEMIN_ENTETE_IDAE)) {
+ entete_IdAE = chars.peek().toString();
+ }
+
+ if (xpath.endsWith(CHEMIN_LIGNE_INCONNUE_CONTENUE)){
+
+ LIGNE_INCONNUE= chars.peek().toString();
+ TYPE_ENR=LIGNE_INCONNUE.toString().substring(0,1);
+
+ String msg = (numLigneTexte.length()>0?"Ligne n°"+numLigneTexte+" : ":"");
+ msg += getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replaceAll(MSG_COMPTEUR, String.valueOf(compteur));
+ msg = msg.replaceAll(MSG_ENTETE_TYPE_ENR,TYPE_ENR);
+
+ String path = "@ano:unique-id='" + ID_DA_Unique + "'";
+ String anoId = IdGenerator.nextId();
+ String libelleLien = "Entete "+entete_IdAE;
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("anoId", anoId);
+ xslParams.put("presentation", "src");
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID).getId(),
+ getDocumentModel().getControlById(CTRL_ID).getLibelle(),
+ getDocumentModel().getDocumentId(),
+ "FEN0067A",
+ "DA", // élément importable
+ entete_IdAE, // id élément importable
+ localName,
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path,
+ xslParams);
+ ano.addNode(new Node(LIGNE_INCONNUE_NodeId));
+ anomalies.add(ano);
+
+ chars.pop();
+ return null;
+
+ } else if (xpath.endsWith(RETURN_ANOMALIES_PATH)){
+ chars.pop();
+ return anomalies;
+ } else {
+ chars.pop();
+ return null;
+ }
+}
+
+public void endDocument() throws SAXException {}
+
+public void characters(char[] ch, int start, int length, String xpath) {
+ // on stocke les caractères lus
+ chars.peek().append(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
+ * 2010 axYus - www.axyus.com
+ * 2010 C ARIOUAT - assia.ariouat@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.dgfip.xemelios.controls.demandeachat;
+
+import java.util.Hashtable;
+import java.util.Stack;
+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;
+
+/**
+ * Verifier que La zone AE PARTNER_FCT peut prendre les valeurs suivantes : '00000075', '00000016', '00000027', \9100000039\92
+
+ * @author Assia ARIOUAT
+ */
+public class M015 extends AbstractUnitControl {
+ public static final String CTRL_ID = "CTL-M015" ;
+ public static final transient String RESET_COUNTER_PATH = "FEN0067A/DA/";
+ public static final transient String CHEMIN_ENTETE_IDAE = "FEN0067A/DA/ENTETE/ID_AE/";
+ public static final transient String CHEMIN_PARTNER_FCT = "FEN0067A/DA/PARTENAIRE/PARTNER_FCT/";
+ public static final transient String CHEMIN_IDPARTENAIRE = "FEN0067A/DA/PARTENAIRE/ID_AE/";
+ public static final transient String CHEMIN_PARTENAIRE = "FEN0067A/DA/PARTENAIRE/";
+ public static final transient String CHEMIN_ID_LIG= "FEN0067A/DA/PARTENAIRE/ID_LIG/";
+
+ public static final transient String RETURN_ANOMALIES_PATH = RESET_COUNTER_PATH;
+
+ private static final Logger logger = Logger.getLogger(M015.class);
+
+ // pour stocker tous les paramètres d'execution des controles
+ private Hashtable<String,Object> hParams;
+
+ private String ID_DA = null;
+ private String ID_DA_Unique = "";
+ private String partner_fonc = "";
+ private String partnaire_foc_Nod = "";
+ private String idIDPARTENAIRE = "";
+ private String numLigneTexte = "";
+ private String id_lig = "";
+
+
+ //pour le message d'erreurs
+ private static final String MSG_IDPARTENAIRE = "#IDPARTENAIRE#";
+ private static final String MSG_PARTNER_FCT = "#PARTNER_FCT#";
+ private static final String MSG_ID_AE = "#ID_AE#";
+ private static final String MSG_ID_LIG = "#ID_LIG#";
+
+ // pour récupérer le texte des balises
+ private Stack<StringBuffer> chars = new Stack<StringBuffer>();
+
+ // pour stocker les anomalies que l'on génère
+ Vector<Anomalie> anomalies = null;
+
+ public void endDocument() throws SAXException { }
+
+ public void startElement(String uri, String localName, String qName, Attributes atts, String xpath) throws SAXException {
+ if(xpath.equals(RESET_COUNTER_PATH)) {
+ anomalies = new Vector<Anomalie>();
+ ID_DA = "";
+ ID_DA_Unique = atts.getValue("ano:unique-id");
+ } else if(xpath.equals(CHEMIN_PARTENAIRE)) {
+ partner_fonc =id_lig= "";
+ idIDPARTENAIRE="";
+ partnaire_foc_Nod = "";
+ } else if(xpath.equals(CHEMIN_PARTNER_FCT)) {
+ partnaire_foc_Nod = atts.getValue("ano:node-id");
+ }
+
+ chars.push(new StringBuffer());
+ }
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+
+ if(xpath.equals(CHEMIN_ENTETE_IDAE)) {
+ ID_DA = chars.peek().toString();}
+ else if (xpath.equals(CHEMIN_IDPARTENAIRE)){
+ idIDPARTENAIRE=chars.peek().toString();
+ }
+ else if(xpath.equals(CHEMIN_ID_LIG)) {
+ id_lig = chars.peek().toString();
+ }
+ else if(xpath.equals(CHEMIN_PARTNER_FCT)) {
+ partner_fonc = chars.peek().toString();
+
+ if(!partner_fonc.equals("00000075") && !partner_fonc.equals("00000016")&& !partner_fonc.equals("00000027") && !partner_fonc.equals("00000039")) {
+
+ String anoId = IdGenerator.nextId();
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("anoId", anoId);
+ xslParams.put("presentation","src");
+ String libelleLien = "DA_ID "+ID_DA;
+ String path = "@ano:unique-id='" + ID_DA_Unique + "'";
+ // on reconstitue le message
+ String msg = (numLigneTexte.length()>0?"Ligne n°"+numLigneTexte+" : ":"");
+ msg += getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replace(MSG_ID_AE, ID_DA);
+ msg = msg.replaceAll(MSG_IDPARTENAIRE,idIDPARTENAIRE);
+ msg = msg.replaceAll(MSG_PARTNER_FCT, partner_fonc);
+ msg = msg.replaceAll(MSG_ID_LIG, id_lig);
+
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID),
+ getDocumentModel().getDocumentId(),
+ "FEN0067A",
+ "DA",
+ ID_DA,
+ localName, // l'élément en anomalie est bien DA
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path,
+ xslParams);
+ ano.addNode(new Node(partnaire_foc_Nod));
+ anomalies.add(ano);
+ }
+ chars.pop();
+ return null;
+ } else if(xpath.equals(RETURN_ANOMALIES_PATH)){
+ chars.pop();
+ return anomalies;
+ }
+ chars.pop();
+ return null;
+ }
+
+ public void characters(char[] ch, int start, int length, String xpath) throws SAXException {
+ // on met les caractères lus dans la pile
+ chars.peek().append(ch, start, length);
+ }
+
+ public void ignorableWhitespace(char[] ch, int start, int length, String xpath) throws SAXException { }
+
+ public void processingInstruction(String target, String data, String xpath) throws SAXException { }
+
+ public void skippedEntity(String name, String xpath) throws SAXException { }
+
+ public void setParameters(Hashtable<String, Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) { }
+
+ public void startDocument() throws SAXException { }
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) throws SAXException { }
+
+ public void endPrefixMapping(String prefix, String xpath) throws SAXException { }
+}
--- /dev/null
+
+/*
+ * Copyright
+ * 2010 axYus - www.axyus.com
+ * 2010 C ARIOUAT - assia.ariouat@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.dgfip.xemelios.controls.demandeachat;
+
+import java.util.Hashtable;
+import java.util.Stack;
+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;
+
+/**
+ * "Les types de texte (TEXT_ID) utilisables sont :
+- «ZFOU » : Fournisseur
+- « ZGEN » : Générique
+- « ZNOT » : Note fournisseur poste
+- « ZTXT » : Note interne poste
+
+
+ * @author Assia ARIOUAT
+ */
+public class M018 extends AbstractUnitControl {
+ public static final String CTRL_ID = "CTL-M018" ;
+ public static final transient String RESET_COUNTER_PATH = "FEN0067A/DA/";
+ public static final transient String CHEMIN_ENTETE_IDAE = "FEN0067A/DA/ENTETE/ID_AE/";
+ public static final transient String CHEMIN_TEXT_IDAE = "FEN0067A/DA/TEXTE/TEXT_ID/";
+ public static final transient String CHEMIN_IDTEXTE = "FEN0067A/DA/TEXTE/ID_AE/";
+ public static final transient String CHEMIN_TEXTE = "FEN0067A/DA/TEXTE/";
+ public static final transient String CHEMIN_ID_LIG= "FEN0067A/DA/TEXTE/ID_LIG/";
+
+ public static final transient String RETURN_ANOMALIES_PATH = RESET_COUNTER_PATH;
+
+ private static final Logger logger = Logger.getLogger(M018.class);
+
+ // pour stocker tous les paramètres d'execution des controles
+ private Hashtable<String,Object> hParams;
+
+ private String ID_DA = null;
+ private String ID_DA_Unique = "";
+ private String texte_id = "";
+ private String texte_id_Nod = "";
+ private String texte_idAE = "";
+ private String numLigneTexte = "";
+ private String id_lig = "";
+ //pour le message d'erreurs
+ private static final String MSG_TEXTE_IDAE= "#TEXTE_IDAE#";
+ private static final String MSG_TEXTE_ID = "#TEXTE_ID#";
+ private static final String MSG_ID_LIG = "#ID_LIG#";
+
+
+ // pour récupérer le texte des balises
+ private Stack<StringBuffer> chars = new Stack<StringBuffer>();
+
+ // pour stocker les anomalies que l'on génère
+ Vector<Anomalie> anomalies = null;
+
+ public void endDocument() throws SAXException { }
+
+ public void startElement(String uri, String localName, String qName, Attributes atts, String xpath) throws SAXException {
+ if(xpath.equals(RESET_COUNTER_PATH)) {
+ anomalies = new Vector<Anomalie>();
+ ID_DA = "";
+ ID_DA_Unique = atts.getValue("ano:unique-id");
+ } else if(xpath.equals(CHEMIN_TEXTE)) {
+ texte_id = "";
+ texte_idAE="";
+ texte_id_Nod = id_lig="";
+ } else if(xpath.equals(CHEMIN_TEXT_IDAE)) {
+ texte_id_Nod = atts.getValue("ano:node-id");
+ }
+
+ chars.push(new StringBuffer());
+ }
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+
+ if(xpath.equals(CHEMIN_ENTETE_IDAE)) {
+ ID_DA = chars.peek().toString();}
+ else if(xpath.equals(CHEMIN_ID_LIG)) {
+ id_lig = chars.peek().toString();
+ }
+ else if (xpath.equals(CHEMIN_IDTEXTE)){
+ texte_idAE=chars.peek().toString();
+ }
+ else if(xpath.equals(CHEMIN_TEXT_IDAE)) {
+ texte_id = chars.peek().toString();
+
+ if(!texte_id.equals("ZFOU") && !texte_id.equals("ZGEN")&& !texte_id.equals("ZNOT") && !texte_id.equals("ZTXT")) {
+
+ String anoId = IdGenerator.nextId();
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("anoId", anoId);
+ xslParams.put("presentation","src");
+ String libelleLien = "DA_ID "+ID_DA;
+ String path = "@ano:unique-id='" + ID_DA_Unique + "'";
+ // on reconstitue le message
+ String msg = (numLigneTexte.length()>0?"Ligne n°"+numLigneTexte+" : ":"");
+ msg += getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replace("#DA_ID#", ID_DA);
+ msg = msg.replaceAll(MSG_TEXTE_IDAE, texte_idAE);
+ msg = msg.replaceAll(MSG_TEXTE_ID, texte_id);
+ msg = msg.replaceAll(MSG_ID_LIG, id_lig);
+
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID),
+ getDocumentModel().getDocumentId(),
+ "FEN0067A",
+ "DA",
+ ID_DA,
+ localName, // l'élément en anomalie est bien DA
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path,
+ xslParams);
+ ano.addNode(new Node(texte_id_Nod));
+ anomalies.add(ano);
+ }
+ chars.pop();
+ return null;
+ } else if(xpath.equals(RETURN_ANOMALIES_PATH)){
+ chars.pop();
+ return anomalies;
+ }
+ chars.pop();
+ return null;
+ }
+
+ public void characters(char[] ch, int start, int length, String xpath) throws SAXException {
+ // on met les caractères lus dans la pile
+ chars.peek().append(ch, start, length);
+ }
+
+ public void ignorableWhitespace(char[] ch, int start, int length, String xpath) throws SAXException { }
+
+ public void processingInstruction(String target, String data, String xpath) throws SAXException { }
+
+ public void skippedEntity(String name, String xpath) throws SAXException { }
+
+ public void setParameters(Hashtable<String, Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) { }
+
+ public void startDocument() throws SAXException { }
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) throws SAXException { }
+
+ public void endPrefixMapping(String prefix, String xpath) throws SAXException { }
+}
--- /dev/null
+/*
+ * Copyright
+ * 2010 axYus - www.axyus.com
+ * 2010 C ARIOUAT - assia.ariouat@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.dgfip.xemelios.controls.demandeachat;
+
+import java.util.Hashtable;
+import java.util.Stack;
+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;
+
+/**
+ * En fonction de PARTNER_FCT :
+- si PARTNER_FCT=\9100000039\92 et PARTNER_TYPE <> \91ZGEN\92 alors soit ID_FONC_PARTNER soit ID_CHORUS_PARTNER doit être valorisé
+sinon, ID_CHORUS_PARTNER doit être valorisé
+
+
+ * @author Assia ARIOUAT
+ */
+public class M027 extends AbstractUnitControl {
+ public static final String CTRL_ID = "CTL-M027" ;
+ public static final transient String RESET_COUNTER_PATH = "FEN0067A/DA/";
+ public static final transient String CHEMIN_ENTETE_IDAE = "FEN0067A/DA/ENTETE/ID_AE/";
+ public static final transient String CHEMIN_PARTNER_TYP= "FEN0067A/DA/PARTENAIRE/PARTNER_TYP/";
+ public static final transient String CHEMIN_ID_FONC_PARTNER= "FEN0067A/DA/PARTENAIRE/ID_FONC_PARTNER/";
+ public static final transient String CHEMIN_ID_CHORUS_PARTNER= "FEN0067A/DA/PARTENAIRE/ID_CHORUS_PARTNER/";
+ public static final transient String CHEMIN_PARTNER_FCT= "FEN0067A/DA/PARTENAIRE/PARTNER_FCT/";
+ public static final transient String CHEMIN_IDPARTENAIRE="FEN0067A/DA/PARTENAIRE/ID_AE/";
+ public static final transient String CHEMIN_PARTENAIRE= "FEN0067A/DA/PARTENAIRE/";
+ public static final transient String CHEMIN_ID_LIG= "FEN0067A/DA/PARTENAIRE/ID_LIG/";
+ public static final transient String RETURN_ANOMALIES_PATH = RESET_COUNTER_PATH;
+
+ private static final Logger logger = Logger.getLogger(M027.class);
+
+ // pour stocker tous les paramètres d'execution des controles
+ private Hashtable<String,Object> hParams;
+
+ private String ID_DA = null;
+ private String ID_DA_Unique = "";
+ private String id_fonc_partner = "";
+ private String partner_fonc = "";
+ private String idPARTENAIRE = "";
+ private String numLigneTexte = "";
+ private String partner_Nod = "";
+ private String id_chourus_partner = "";
+ private String patner_type = "";
+ private String id_lig = "";
+ private Boolean creer_ano = false;
+ private Boolean patner_type_exist = false;
+
+ //pour le message d'erreurs
+ private static final String MSG_IDPARTENAIRE = "#IDPARTENAIRE#";
+ private static final String MSG_ID_LIG = "#ID_LIG#";
+
+ // pour récupérer le texte des balises
+ private Stack<StringBuffer> chars = new Stack<StringBuffer>();
+
+ // pour stocker les anomalies que l'on génère
+ Vector<Anomalie> anomalies = null;
+
+ public void endDocument() throws SAXException { }
+
+ public void startElement(String uri, String localName, String qName, Attributes atts, String xpath) throws SAXException {
+ if(xpath.equals(RESET_COUNTER_PATH)) {
+ anomalies = new Vector<Anomalie>();
+ ID_DA = id_lig="";
+ ID_DA_Unique = atts.getValue("ano:unique-id");
+ } else if(xpath.equals(CHEMIN_PARTENAIRE)) {
+ id_fonc_partner = partner_fonc= id_chourus_partner=patner_type="";
+ idPARTENAIRE="";
+ partner_Nod = atts.getValue("ano:node-id");
+ creer_ano = false;
+ patner_type_exist=false;
+
+ }
+ chars.push(new StringBuffer());
+ }
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+
+ if(xpath.equals(CHEMIN_ENTETE_IDAE)) {
+ ID_DA = chars.peek().toString();
+ }
+ else if(xpath.equals(CHEMIN_ID_LIG)) {
+ id_lig = chars.peek().toString();
+ }
+ else if (xpath.equals(CHEMIN_IDPARTENAIRE)){
+ idPARTENAIRE=chars.peek().toString();
+ }
+ else if(xpath.equals(CHEMIN_ID_FONC_PARTNER)) {
+
+ id_fonc_partner=chars.peek().toString();
+ }
+
+ else if(xpath.equals(CHEMIN_PARTNER_TYP)){
+ patner_type= chars.peek().toString();
+ patner_type_exist=true;
+ }
+ else if(xpath.equals(CHEMIN_ID_CHORUS_PARTNER)){
+ id_chourus_partner= chars.peek().toString();
+ }
+
+ else if(xpath.equals(CHEMIN_PARTNER_FCT)){
+ partner_fonc= chars.peek().toString();
+ }
+
+ else if(xpath.equals(CHEMIN_PARTENAIRE)){
+
+ if(partner_fonc.equals("00000039")&& !(patner_type.equals("ZGEN"))){
+
+ if(id_fonc_partner.length()==0 && id_chourus_partner.length()==0)
+ {
+ creer_ano=true;
+ }}
+ else
+ if (id_chourus_partner.length()==0)
+ {
+ creer_ano=true;
+ }
+
+ if(creer_ano) {
+
+ String anoId = IdGenerator.nextId();
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("anoId", anoId);
+ xslParams.put("presentation","src");
+ String libelleLien = "DA_ID "+ID_DA;
+ String path = "@ano:unique-id='" + ID_DA_Unique + "'";
+ // on reconstitue le message
+ String msg = (numLigneTexte.length()>0?"Ligne n°"+numLigneTexte+" : ":"");
+ msg += getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replace("#DA_ID#", ID_DA);
+ msg = msg.replaceAll(MSG_IDPARTENAIRE, idPARTENAIRE);
+ msg = msg.replaceAll(MSG_ID_LIG, id_lig);
+
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID),
+ getDocumentModel().getDocumentId(),
+ "FEN0067A",
+ "DA",
+ ID_DA,
+ localName, // l'élément en anomalie est bien DA
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path,
+ xslParams);
+ ano.addNode(new Node(partner_Nod));
+ anomalies.add(ano);
+ }
+ chars.pop();
+ return null;
+ }
+ else if(xpath.equals(RETURN_ANOMALIES_PATH)){
+ chars.pop();
+ return anomalies;
+ }
+ chars.pop();
+ return null;
+ }
+
+ public void characters(char[] ch, int start, int length, String xpath) throws SAXException {
+ // on met les caractères lus dans la pile
+ chars.peek().append(ch, start, length);
+ }
+
+ public void ignorableWhitespace(char[] ch, int start, int length, String xpath) throws SAXException { }
+
+ public void processingInstruction(String target, String data, String xpath) throws SAXException { }
+
+ public void skippedEntity(String name, String xpath) throws SAXException { }
+
+ public void setParameters(Hashtable<String, Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) { }
+
+ public void startDocument() throws SAXException { }
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) throws SAXException { }
+
+ public void endPrefixMapping(String prefix, String xpath) throws SAXException { }
+}
--- /dev/null
+/*
+ * Copyright
+ * 2010 axYus - www.axyus.com
+ * 2010 C ARIOUAT - assia.ariouat@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.dgfip.xemelios.controls.demandeachat;
+
+import java.util.Hashtable;
+import java.util.Stack;
+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;
+
+/**
+ * "Si TYPE_ID_FONC est valorisé alors ID_FONC_PROD doit être renseigné.
+ Sinon, ID_CHORUS_PROD doit être valorisé"
+
+ * @author Assia ARIOUAT
+ */
+public class M104 extends AbstractUnitControl {
+ public static final String CTRL_ID = "CTL-M104" ;
+ public static final transient String RESET_COUNTER_PATH = "FEN0067A/DA/";
+ public static final transient String CHEMIN_ENTETE_IDAE = "FEN0067A/DA/ENTETE/ID_AE/";
+ public static final transient String CHEMIN_TYPE_ID_FONC= "FEN0067A/DA/POSTE/TYPE_ID_FONC/";
+ public static final transient String CHEMIN_ID_FONC_PROD= "FEN0067A/DA/POSTE/ID_FONC_PROD/";
+ public static final transient String CHEMIN_ID_CHORUS_PROD= "FEN0067A/DA/POSTE/ID_CHORUS_PROD/";
+ public static final transient String CHEMIN_ID_LIG= "FEN0067A/DA/POSTE/ID_LIG/";
+ public static final transient String CHEMIN_IDPOSTE= "FEN0067A/DA/POSTE/ID_AE/";
+ public static final transient String CHEMIN_POSTE= "FEN0067A/DA/POSTE/";
+ public static final transient String RETURN_ANOMALIES_PATH = RESET_COUNTER_PATH;
+
+ private static final Logger logger = Logger.getLogger(M104.class);
+
+ // pour stocker tous les paramètres d'execution des controles
+ private Hashtable<String,Object> hParams;
+
+ private String ID_DA = null;
+ private String ID_DA_Unique = "";
+ private String type_id_fonc = "";
+ private String idPOSTE = "";
+ private String numLigneTexte = "";
+ private String poste_Nod = "";
+ private String id_fonc_prod = "";
+ private String id_chourus_prod = "";
+ private String id_lig = "";
+
+ //pour le message d'erreurs
+ private static final String MSG_IDPOSTE = "#IDPOSTE#";
+ private static final String MSG_ID_LIG = "#ID_LIG#";
+
+
+
+ // pour récupérer le texte des balises
+ private Stack<StringBuffer> chars = new Stack<StringBuffer>();
+
+ // pour stocker les anomalies que l'on génère
+ Vector<Anomalie> anomalies = null;
+
+ public void endDocument() throws SAXException { }
+
+ public void startElement(String uri, String localName, String qName, Attributes atts, String xpath) throws SAXException {
+ if(xpath.equals(RESET_COUNTER_PATH)) {
+ anomalies = new Vector<Anomalie>();
+ ID_DA = "";
+ ID_DA_Unique = atts.getValue("ano:unique-id");
+ } else if(xpath.equals(CHEMIN_POSTE)) {
+ type_id_fonc = id_fonc_prod= id_chourus_prod="";
+ idPOSTE=id_lig="";
+
+
+ poste_Nod = atts.getValue("ano:node-id");}
+
+ chars.push(new StringBuffer());
+ }
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+
+ if(xpath.equals(CHEMIN_ENTETE_IDAE)) {
+ ID_DA = chars.peek().toString();
+ }
+ if(xpath.equals(CHEMIN_ID_LIG)) {
+ id_lig = chars.peek().toString();
+ }
+ else if (xpath.equals(CHEMIN_IDPOSTE)){
+ idPOSTE=chars.peek().toString();
+ }
+ else if(xpath.equals(CHEMIN_TYPE_ID_FONC)) {
+
+ type_id_fonc=chars.peek().toString();
+
+ }
+
+ else if(xpath.equals(CHEMIN_ID_FONC_PROD)){
+ id_fonc_prod= chars.peek().toString();
+
+ }
+ else if(xpath.equals(CHEMIN_ID_CHORUS_PROD)){
+ id_chourus_prod= chars.peek().toString();
+
+
+ }
+
+ else if(xpath.equals(CHEMIN_POSTE)){
+
+ if((!(type_id_fonc.length()==0) && (id_fonc_prod.length()==0 ))||((type_id_fonc.length()==0)&&(id_chourus_prod.length()==0 ))){
+
+ String anoId = IdGenerator.nextId();
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("anoId", anoId);
+ xslParams.put("presentation","src");
+ String libelleLien = "DA_ID "+ID_DA;
+ String path = "@ano:unique-id='" + ID_DA_Unique + "'";
+ // on reconstitue le message
+ String msg = (numLigneTexte.length()>0?"Ligne n°"+numLigneTexte+" : ":"");
+ msg += getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replace("#DA_ID#", ID_DA);
+ msg = msg.replaceAll(MSG_IDPOSTE, idPOSTE);
+ msg = msg.replaceAll(MSG_ID_LIG, id_lig);
+
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID),
+ getDocumentModel().getDocumentId(),
+ "FEN0067A",
+ "DA",
+ ID_DA,
+ localName, // l'élément en anomalie est bien DA
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path,
+ xslParams);
+ ano.addNode(new Node(poste_Nod));
+ anomalies.add(ano);
+ }
+ chars.pop();
+ return null;
+ }
+ else if(xpath.equals(RETURN_ANOMALIES_PATH)){
+ chars.pop();
+ return anomalies;
+ }
+ chars.pop();
+ return null;
+ }
+
+ public void characters(char[] ch, int start, int length, String xpath) throws SAXException {
+ // on met les caractères lus dans la pile
+ chars.peek().append(ch, start, length);
+ }
+
+ public void ignorableWhitespace(char[] ch, int start, int length, String xpath) throws SAXException { }
+
+ public void processingInstruction(String target, String data, String xpath) throws SAXException { }
+
+ public void skippedEntity(String name, String xpath) throws SAXException { }
+
+ public void setParameters(Hashtable<String, Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) { }
+
+ public void startDocument() throws SAXException { }
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) throws SAXException { }
+
+ public void endPrefixMapping(String prefix, String xpath) throws SAXException { }
+}
--- /dev/null
+
+/*
+ * Copyright
+ * 2010 axYus - www.axyus.com
+ * 2010 C ARIOUAT - assia.ariouat@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.dgfip.xemelios.controls.demandeachat;
+
+import java.util.Hashtable;
+import java.util.Stack;
+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;
+
+/**
+ * Si
+\95 ACC_CAT = \91U
+o aucun champ obligatoire
+\95 sinon si ACC_CAT = \91S\92, \91W\92 ou \91Z\92 et RES_DOC est non renseigné
+o 5 champs obligatoires (COST_CTR, FUNDS_CTR,FUNC_AREA,ZZ_ACTIVIT ,LOC_INT) cf RG07 Format AE.
+
+ * @author Assia ARIOUAT
+ */
+
+public class M105 extends AbstractUnitControl {
+ public static final String CTRL_ID = "CTL-M105" ;
+ public static final transient String RESET_COUNTER_PATH = "FEN0067A/DA/";
+ public static final transient String CHEMIN_ENTETE_IDAE = "FEN0067A/DA/ENTETE/ID_AE/";
+ public static final transient String CHEMIN_COST_CTR= "FEN0067A/DA/IMPUTATION/COST_CTR/";
+ public static final transient String CHEMIN_RES_DOC= "FEN0067A/DA/IMPUTATION/RES_DOC/";
+ public static final transient String CHEMIN_IDIMPUTATION = "FEN0067A/DA/IMPUTATION/ID_AE/";
+ public static final transient String CHEMIN_FUNDS_CTR = "FEN0067A/DA/IMPUTATION/FUNDS_CTR/";
+ public static final transient String CHEMIN_FUNC_AREA = "FEN0067A/DA/IMPUTATION/FUNC_AREA/";
+ public static final transient String CHEMIN_ACTIVITY= "FEN0067A/DA/IMPUTATION/ACTIVITY/";
+ public static final transient String CHEMIN_LOC_INT= "FEN0067A/DA/IMPUTATION/LOC_INT/";
+ public static final transient String CHEMIN_ACC_CAT= "FEN0067A/DA/IMPUTATION/ACC_CAT/";
+ public static final transient String CHEMIN_IMPUTATION = "FEN0067A/DA/IMPUTATION/";
+ public static final transient String CHEMIN_ID_LIG= "FEN0067A/DA/IMPUTATION/ID_LIG/";
+ public static final transient String RETURN_ANOMALIES_PATH = RESET_COUNTER_PATH;
+
+ private static final Logger logger = Logger.getLogger(M105.class);
+
+ // pour stocker tous les paramètres d'execution des controles
+ private Hashtable<String,Object> hParams;
+
+ private String ID_DA = null;
+ private String ID_DA_Unique = "";
+ private String res_doc = "";
+ private String cost_ctr = "";
+ private String idIMPUTATION = "";
+ private String numLigneTexte = "";
+ private String imputation_Nod = "";
+ private String runds_ctr = "";
+ private String func_area = "";
+ private String activity = "";
+ private String loc_int = "";
+ private String acc_cat = "";
+ private String id_lig = "";
+
+
+
+
+ //pour le message d'erreurs
+ private static final String MSG_IDIMPUTATION = "#IDIMPUTATION#";
+ private static final String MSG_ID_LIG = "#ID_LIG#";
+
+ // pour récupérer le texte des balises
+ private Stack<StringBuffer> chars = new Stack<StringBuffer>();
+
+ // pour stocker les anomalies que l'on génère
+ Vector<Anomalie> anomalies = null;
+
+ public void endDocument() throws SAXException { }
+
+ public void startElement(String uri, String localName, String qName, Attributes atts, String xpath) throws SAXException {
+ if(xpath.equals(RESET_COUNTER_PATH)) {
+ anomalies = new Vector<Anomalie>();
+ ID_DA = "";
+ ID_DA_Unique = atts.getValue("ano:unique-id");
+ } else if(xpath.equals(CHEMIN_IMPUTATION)) {
+ res_doc = cost_ctr= runds_ctr=func_area=activity=loc_int=acc_cat="";
+ idIMPUTATION= id_lig="";
+ imputation_Nod = atts.getValue("ano:node-id");
+
+ }
+
+
+ chars.push(new StringBuffer());
+ }
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+
+ if(xpath.equals(CHEMIN_ENTETE_IDAE)) {
+ ID_DA = chars.peek().toString();
+ }
+ else if (xpath.equals(CHEMIN_IDIMPUTATION)){
+ idIMPUTATION=chars.peek().toString();
+ }
+ else if(xpath.equals(CHEMIN_ID_LIG)) {
+ id_lig = chars.peek().toString();
+ }
+ else if(xpath.equals(CHEMIN_RES_DOC)) {
+
+ res_doc=chars.peek().toString();
+
+ }
+
+ else if(xpath.equals(CHEMIN_COST_CTR)){
+ cost_ctr= chars.peek().toString();
+ }
+
+ else if(xpath.equals(CHEMIN_FUNDS_CTR)){
+ runds_ctr= chars.peek().toString();
+ }
+
+ else if(xpath.equals(CHEMIN_FUNC_AREA)){
+ func_area= chars.peek().toString();
+ }
+ else if(xpath.equals(CHEMIN_ACTIVITY)){
+ activity= chars.peek().toString();
+ }
+ else if(xpath.equals(CHEMIN_LOC_INT)){
+ loc_int= chars.peek().toString();
+ }
+
+ else if(xpath.equals(CHEMIN_ACC_CAT)){
+ acc_cat= chars.peek().toString();
+ }
+
+
+
+ else if(xpath.equals(CHEMIN_IMPUTATION)){
+ if (acc_cat.equals("S")||acc_cat.equals("W")||acc_cat.equals("Z"))
+ {
+ if(res_doc.length()==0) {
+
+ if ((cost_ctr.length()==0)|| (runds_ctr.length()==0)|| (func_area.length()==0)|| (activity.length()==0)|| (loc_int.length()==0))
+ {
+
+ String anoId = IdGenerator.nextId();
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("anoId", anoId);
+ xslParams.put("presentation","src");
+ String libelleLien = "DA_ID "+ID_DA;
+ String path = "@ano:unique-id='" + ID_DA_Unique + "'";
+ // on reconstitue le message
+ String msg = (numLigneTexte.length()>0?"Ligne n°"+numLigneTexte+" : ":"");
+ msg += getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replace("#DA_ID#", ID_DA);
+ msg = msg.replaceAll(MSG_IDIMPUTATION, idIMPUTATION);
+ msg = msg.replaceAll(MSG_ID_LIG, id_lig);
+
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID),
+ getDocumentModel().getDocumentId(),
+ "FEN0067A",
+ "DA",
+ ID_DA,
+ localName, // l'élément en anomalie est bien DA
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path,
+ xslParams);
+ ano.addNode(new Node(imputation_Nod));
+ anomalies.add(ano);
+ }}}
+ chars.pop();
+ return null;
+ }
+ else if(xpath.equals(RETURN_ANOMALIES_PATH)){
+ chars.pop();
+ return anomalies;
+ }
+ chars.pop();
+ return null;
+ }
+
+ public void characters(char[] ch, int start, int length, String xpath) throws SAXException {
+ // on met les caractères lus dans la pile
+ chars.peek().append(ch, start, length);
+ }
+
+ public void ignorableWhitespace(char[] ch, int start, int length, String xpath) throws SAXException { }
+
+ public void processingInstruction(String target, String data, String xpath) throws SAXException { }
+
+ public void skippedEntity(String name, String xpath) throws SAXException { }
+
+ public void setParameters(Hashtable<String, Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) { }
+
+ public void startDocument() throws SAXException { }
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) throws SAXException { }
+
+ public void endPrefixMapping(String prefix, String xpath) throws SAXException { }
+}
--- /dev/null
+
+/*
+ * Copyright
+ * 2010 axYus - www.axyus.com
+ * 2010 C ARIOUAT - assia.ariouat@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.dgfip.xemelios.controls.demandeachat;
+
+import java.util.Hashtable;
+import java.util.Stack;
+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;
+
+/**
+ * RES_ITEM doit être valorisé si RES_DOC est renseigné Â
+ * @author Assia ARIOUAT
+ */
+public class M167 extends AbstractUnitControl {
+ public static final String CTRL_ID = "CTL-M167" ;
+ public static final transient String RESET_COUNTER_PATH = "FEN0067A/DA/";
+ public static final transient String CHEMIN_ENTETE_IDAE = "FEN0067A/DA/ENTETE/ID_AE/";
+ public static final transient String CHEMIN_RES_ITEM= "FEN0067A/DA/IMPUTATION/RES_ITEM/";
+ public static final transient String CHEMIN_RES_DOC= "FEN0067A/DA/IMPUTATION/RES_DOC/";
+ public static final transient String CHEMIN_IDIMPUTATION = "FEN0067A/DA/IMPUTATION/ID_AE/";
+ public static final transient String CHEMIN_IMPUTATION = "FEN0067A/DA/IMPUTATION/";
+ public static final transient String CHEMIN_ID_LIG= "FEN0067A/DA/IMPUTATION/ID_LIG/";
+
+ public static final transient String RETURN_ANOMALIES_PATH = RESET_COUNTER_PATH;
+
+ private static final Logger logger = Logger.getLogger(M167.class);
+
+ // pour stocker tous les paramètres d'execution des controles
+ private Hashtable<String,Object> hParams;
+
+ private String ID_DA = null;
+ private String ID_DA_Unique = "";
+ private String res_doc = "";
+ private String res_item = "";
+ private String idIMPUTATION = "";
+ private String numLigneTexte = "";
+ private String imputation_Nod = "";
+ private String id_lig = "";
+
+ //pour le message d'erreurs
+ private static final String MSG_IDIMPUTATION = "#IDIMPUTATION#";
+ private static final String MSG_ID_LIG = "#ID_LIG#";
+
+ // pour récupérer le texte des balises
+ private Stack<StringBuffer> chars = new Stack<StringBuffer>();
+
+ // pour stocker les anomalies que l'on génère
+ Vector<Anomalie> anomalies = null;
+
+ public void endDocument() throws SAXException { }
+
+ public void startElement(String uri, String localName, String qName, Attributes atts, String xpath) throws SAXException {
+ if(xpath.equals(RESET_COUNTER_PATH)) {
+ anomalies = new Vector<Anomalie>();
+ ID_DA = "";
+ ID_DA_Unique = atts.getValue("ano:unique-id");
+ } else if(xpath.equals(CHEMIN_IMPUTATION)) {
+ res_doc = res_item="";
+ idIMPUTATION=id_lig="";
+ imputation_Nod = atts.getValue("ano:node-id");}
+
+ chars.push(new StringBuffer());
+ }
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+
+ if(xpath.equals(CHEMIN_ENTETE_IDAE)) {
+ ID_DA = chars.peek().toString();
+ }
+ else if (xpath.equals(CHEMIN_IDIMPUTATION)){
+ idIMPUTATION=chars.peek().toString();
+ }
+ else if(xpath.equals(CHEMIN_ID_LIG)) {
+ id_lig = chars.peek().toString();
+ }
+ else if(xpath.equals(CHEMIN_RES_DOC)) {
+
+ res_doc=chars.peek().toString();
+ }
+
+ else if(xpath.equals(CHEMIN_RES_ITEM)){
+ res_item= chars.peek().toString();
+
+ }
+ else if(xpath.equals(CHEMIN_IMPUTATION)){
+
+ if(!(res_doc.length()==0) && (res_item.length()==0 )){
+
+ String anoId = IdGenerator.nextId();
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("anoId", anoId);
+ xslParams.put("presentation","src");
+ String libelleLien = "DA_ID "+ID_DA;
+ String path = "@ano:unique-id='" + ID_DA_Unique + "'";
+ // on reconstitue le message
+ String msg = (numLigneTexte.length()>0?"Ligne n°"+numLigneTexte+" : ":"");
+ msg += getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replace("#DA_ID#", ID_DA);
+ msg = msg.replaceAll(MSG_IDIMPUTATION, idIMPUTATION);
+ msg = msg.replaceAll(MSG_ID_LIG, id_lig);
+
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID),
+ getDocumentModel().getDocumentId(),
+ "FEN0067A",
+ "DA",
+ ID_DA,
+ localName, // l'élément en anomalie est bien DA
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path,
+ xslParams);
+ ano.addNode(new Node(imputation_Nod));
+ anomalies.add(ano);
+ }
+ chars.pop();
+ return null;
+ }
+ else if(xpath.equals(RETURN_ANOMALIES_PATH)){
+ chars.pop();
+ return anomalies;
+ }
+ chars.pop();
+ return null;
+ }
+
+ public void characters(char[] ch, int start, int length, String xpath) throws SAXException {
+ // on met les caractères lus dans la pile
+ chars.peek().append(ch, start, length);
+ }
+
+ public void ignorableWhitespace(char[] ch, int start, int length, String xpath) throws SAXException { }
+
+ public void processingInstruction(String target, String data, String xpath) throws SAXException { }
+
+ public void skippedEntity(String name, String xpath) throws SAXException { }
+
+ public void setParameters(Hashtable<String, Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) { }
+
+ public void startDocument() throws SAXException { }
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) throws SAXException { }
+
+ public void endPrefixMapping(String prefix, String xpath) throws SAXException { }
+}
--- /dev/null
+
+
+/*
+ * Copyright
+ * 2010 axYus - www.axyus.com
+ * 2010 C ARIOUAT - assia.ariouat@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.dgfip.xemelios.controls.demandeachat;
+
+import java.util.Hashtable;
+import java.util.Stack;
+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;
+
+/**
+ * Le champ ADDR_ORIGIN ne peut être valorisé que par A ou B
+ * @author Assia ARIOUAT
+ */
+public class M168 extends AbstractUnitControl {
+ public static final String CTRL_ID = "CTL-M168" ;
+ public static final transient String RESET_COUNTER_PATH = "FEN0067A/DA/";
+ public static final transient String CHEMIN_ENTETE_IDAE = "FEN0067A/DA/ENTETE/ID_AE/";
+ public static final transient String CHEMIN_ADDR_ORIGIN = "FEN0067A/DA/PARTENAIRE/ADDR_ORIGIN/";
+ public static final transient String CHEMIN_IDPARTENAIRE = "FEN0067A/DA/PARTENAIRE/ID_AE/";
+ public static final transient String CHEMIN_PARTENAIRE = "FEN0067A/DA/PARTENAIRE/";
+ public static final transient String CHEMIN_ID_LIG= "FEN0067A/DA/PARTENAIRE/ID_LIG/";
+ public static final transient String RETURN_ANOMALIES_PATH = RESET_COUNTER_PATH;
+ private static final Logger logger = Logger.getLogger(M168.class);
+
+ // pour stocker tous les paramètres d'execution des controles
+ private Hashtable<String,Object> hParams;
+
+ private String ID_DA = null;
+ private String ID_DA_Unique = "";
+ private String addr_origin = "";
+ private String addr_origin_Nod = "";
+ private String idIDPARTENAIRE = "";
+ private String numLigneTexte = "";
+ private String id_lig = "";
+
+
+ //pour le message d'erreurs
+ private static final String MSG_IDPARTENAIRE = "#IDPARTENAIRE#";
+ private static final String MSG_ADDR_ORIGIN = "#ADDR_ORIGIN#";
+ private static final String MSG_ID_LIG = "#ID_LIG#";
+
+
+ // pour récupérer le texte des balises
+ private Stack<StringBuffer> chars = new Stack<StringBuffer>();
+
+ // pour stocker les anomalies que l'on génère
+ Vector<Anomalie> anomalies = null;
+
+ public void endDocument() throws SAXException { }
+
+ public void startElement(String uri, String localName, String qName, Attributes atts, String xpath) throws SAXException {
+ if(xpath.equals(RESET_COUNTER_PATH)) {
+ anomalies = new Vector<Anomalie>();
+ ID_DA = "";
+ ID_DA_Unique = atts.getValue("ano:unique-id");
+ } else if(xpath.equals(CHEMIN_PARTENAIRE)) {
+ addr_origin = "";
+ idIDPARTENAIRE=id_lig="";
+ addr_origin_Nod = "";
+ } else if(xpath.equals(CHEMIN_ADDR_ORIGIN)) {
+ addr_origin_Nod = atts.getValue("ano:node-id");
+ }
+
+ chars.push(new StringBuffer());
+ }
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+
+ if(xpath.equals(CHEMIN_ENTETE_IDAE)) {
+ ID_DA = chars.peek().toString();}
+ else if (xpath.equals(CHEMIN_IDPARTENAIRE)){
+ idIDPARTENAIRE=chars.peek().toString();
+ }
+ else if(xpath.equals(CHEMIN_ID_LIG)) {
+ id_lig = chars.peek().toString();
+ }
+ else if(xpath.equals(CHEMIN_ADDR_ORIGIN)) {
+ addr_origin = chars.peek().toString();
+
+ if(!addr_origin.equals("A") && !addr_origin.equals("B")) {
+
+ String anoId = IdGenerator.nextId();
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("anoId", anoId);
+ xslParams.put("presentation","src");
+ String libelleLien = "DA_ID "+ID_DA;
+ String path = "@ano:unique-id='" + ID_DA_Unique + "'";
+ // on reconstitue le message
+ String msg = (numLigneTexte.length()>0?"Ligne n°"+numLigneTexte+" : ":"");
+ msg += getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replace("#DA_ID#", ID_DA);
+ msg = msg.replaceAll(MSG_IDPARTENAIRE, idIDPARTENAIRE);
+ msg = msg.replaceAll(MSG_ADDR_ORIGIN, addr_origin);
+ msg = msg.replaceAll(MSG_ID_LIG, id_lig);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID),
+ getDocumentModel().getDocumentId(),
+ "FEN0067A",
+ "DA",
+ ID_DA,
+ localName, // l'élément en anomalie est bien DA
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path,
+ xslParams);
+ ano.addNode(new Node(addr_origin_Nod));
+ anomalies.add(ano);
+ }
+ chars.pop();
+ return null;
+ } else if(xpath.equals(RETURN_ANOMALIES_PATH)){
+ chars.pop();
+ return anomalies;
+ }
+ chars.pop();
+ return null;
+ }
+
+ public void characters(char[] ch, int start, int length, String xpath) throws SAXException {
+ // on met les caractères lus dans la pile
+ chars.peek().append(ch, start, length);
+ }
+
+ public void ignorableWhitespace(char[] ch, int start, int length, String xpath) throws SAXException { }
+
+ public void processingInstruction(String target, String data, String xpath) throws SAXException { }
+
+ public void skippedEntity(String name, String xpath) throws SAXException { }
+
+ public void setParameters(Hashtable<String, Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) { }
+
+ public void startDocument() throws SAXException { }
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) throws SAXException { }
+
+ public void endPrefixMapping(String prefix, String xpath) throws SAXException { }
+}
--- /dev/null
+/*
+ * Copyright
+ * 2010 axYus - www.axyus.com
+ * 2010 C ARIOUAT - assia.ariouat@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.dgfip.xemelios.controls.demandeachat;
+
+import java.util.Hashtable;
+import java.util.Stack;
+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;
+
+/**
+ Si le partenaire est de type « demandeur » (PARTNER_FCT = \9100000016\92) ou de type « adresse de livraison » (PARTNER_FCT = \9100000027\92) alors la valeur de la zone ID_FONC_PARTNER doit être d\92une longueur maximale de 12 caractères
+
+ * @author Assia ARIOUAT
+ */
+public class M215 extends AbstractUnitControl {
+ public static final String CTRL_ID = "CTL-M215" ;
+ public static final transient String RESET_COUNTER_PATH = "FEN0067A/DA/";
+ public static final transient String CHEMIN_ENTETE_IDAE = "FEN0067A/DA/ENTETE/ID_AE/";
+ public static final transient String CHEMIN_PARTNER_TYP= "FEN0067A/DA/PARTENAIRE/PARTNER_TYP/";
+ public static final transient String CHEMIN_ID_FONC_PARTNER= "FEN0067A/DA/PARTENAIRE/ID_FONC_PARTNER/";
+ public static final transient String CHEMIN_ID_CHORUS_PARTNER= "FEN0067A/DA/PARTENAIRE/ID_CHORUS_PARTNER/";
+ public static final transient String CHEMIN_PARTNER_FCT= "FEN0067A/DA/PARTENAIRE/PARTNER_FCT/";
+ public static final transient String CHEMIN_IDPARTENAIRE="FEN0067A/DA/PARTENAIRE/ID_AE/";
+ public static final transient String CHEMIN_PARTENAIRE= "FEN0067A/DA/PARTENAIRE/";
+ public static final transient String CHEMIN_ID_LIG= "FEN0067A/DA/PARTENAIRE/ID_LIG/";
+ public static final transient String RETURN_ANOMALIES_PATH = RESET_COUNTER_PATH;
+
+ private static final Logger logger = Logger.getLogger(M215.class);
+
+ // pour stocker tous les paramètres d'execution des controles
+ private Hashtable<String,Object> hParams;
+
+ private String ID_DA = null;
+ private String ID_DA_Unique = "";
+ private String id_fonc_partner = "";
+ private String partner_fonc = "";
+ private String idPARTENAIRE = "";
+ private String numLigneTexte = "";
+ private String id_fonc_partner_Nod = "";
+ private String id_lig = "";
+
+
+ //pour le message d'erreurs
+ private static final String MSG_IDPARTENAIRE = "#IDPARTENAIRE#";
+ private static final String MSG_ID_LIG = "#ID_LIG#";
+ private static final String MSG_ID_FONC_PARTNER = "#ID_FONC_PARTNER#";
+
+
+ // pour récupérer le texte des balises
+ private Stack<StringBuffer> chars = new Stack<StringBuffer>();
+
+ // pour stocker les anomalies que l'on génère
+ Vector<Anomalie> anomalies = null;
+
+ public void endDocument() throws SAXException { }
+
+ public void startElement(String uri, String localName, String qName, Attributes atts, String xpath) throws SAXException {
+ if(xpath.equals(RESET_COUNTER_PATH)) {
+ anomalies = new Vector<Anomalie>();
+ ID_DA = id_lig="";
+ ID_DA_Unique = atts.getValue("ano:unique-id");
+ } else if(xpath.equals(CHEMIN_PARTENAIRE)) {
+ id_fonc_partner = partner_fonc="";
+ idPARTENAIRE="";
+
+ }
+
+ else if(xpath.equals(CHEMIN_ID_FONC_PARTNER))
+
+ {
+ id_fonc_partner_Nod = atts.getValue("ano:node-id");
+ }
+ chars.push(new StringBuffer());
+ }
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+
+ if(xpath.equals(CHEMIN_ENTETE_IDAE)) {
+ ID_DA = chars.peek().toString();
+ }
+ else if(xpath.equals(CHEMIN_ID_LIG)) {
+ id_lig = chars.peek().toString();
+ }
+ else if (xpath.equals(CHEMIN_IDPARTENAIRE)){
+ idPARTENAIRE=chars.peek().toString();
+ }
+ else if(xpath.equals(CHEMIN_ID_FONC_PARTNER)) {
+
+ id_fonc_partner=chars.peek().toString();
+ }
+
+ else if(xpath.equals(CHEMIN_PARTNER_FCT)){
+ partner_fonc= chars.peek().toString();
+ }
+
+ else if(xpath.equals(CHEMIN_PARTENAIRE)){
+
+ if ((partner_fonc.equals("00000016"))||(partner_fonc.equals("00000027"))){
+
+ if (id_fonc_partner.length()>12)
+ {
+
+ String anoId = IdGenerator.nextId();
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("anoId", anoId);
+ xslParams.put("presentation","src");
+ String libelleLien = "DA_ID "+ID_DA;
+ String path = "@ano:unique-id='" + ID_DA_Unique + "'";
+ // on reconstitue le message
+ String msg = (numLigneTexte.length()>0?"Ligne n°"+numLigneTexte+" : ":"");
+ msg += getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replace("#DA_ID#", ID_DA);
+ msg = msg.replaceAll(MSG_IDPARTENAIRE, idPARTENAIRE);
+ msg = msg.replaceAll(MSG_ID_LIG, id_lig);
+ msg = msg.replaceAll(MSG_ID_FONC_PARTNER, id_fonc_partner);
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID),
+ getDocumentModel().getDocumentId(),
+ "FEN0067A",
+ "DA",
+ ID_DA,
+ localName, // l'élément en anomalie est bien DA
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path,
+ xslParams);
+ ano.addNode(new Node(id_fonc_partner_Nod));
+ anomalies.add(ano);
+ }
+ chars.pop();
+ return null;
+ }}
+ else if(xpath.equals(RETURN_ANOMALIES_PATH)){
+ chars.pop();
+ return anomalies;
+ }
+ chars.pop();
+ return null;
+ }
+
+ public void characters(char[] ch, int start, int length, String xpath) throws SAXException {
+ // on met les caractères lus dans la pile
+ chars.peek().append(ch, start, length);
+ }
+
+ public void ignorableWhitespace(char[] ch, int start, int length, String xpath) throws SAXException { }
+
+ public void processingInstruction(String target, String data, String xpath) throws SAXException { }
+
+ public void skippedEntity(String name, String xpath) throws SAXException { }
+
+ public void setParameters(Hashtable<String, Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) { }
+
+ public void startDocument() throws SAXException { }
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) throws SAXException { }
+
+ public void endPrefixMapping(String prefix, String xpath) throws SAXException { }
+}
--- /dev/null
+/*
+ * Copyright
+ * 2010 axYus - www.axyus.com
+ * 2010 C ARIOUAT - assia.ariouat@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.dgfip.xemelios.controls.demandeachat;
+
+import java.util.Hashtable;
+import java.util.Stack;
+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;
+
+/**
+ * En fonction du type de partenaire :
+_Si PARTNER_FCT = \9100000039\92 et type de tiers <> \91ZGEN\92 alors soit ID_FONC_PARTNER soit ID_CHORUS_PARTNER doit être valorisé
+_Sinon, si PARTNER_FCT parmi \9200000016\92, \9100000027\92 alors ID_FONC_PARTNER doit être renseigné.
+_ Sinon, ID_CHORUS_PARTNER doit être valorisé
+
+
+
+ * @author Assia ARIOUAT
+ */
+public class M216 extends AbstractUnitControl {
+ public static final String CTRL_ID = "CTL-M216" ;
+ public static final transient String RESET_COUNTER_PATH = "FEN0067A/DA/";
+ public static final transient String CHEMIN_ENTETE_IDAE = "FEN0067A/DA/ENTETE/ID_AE/";
+ public static final transient String CHEMIN_PARTNER_TYP= "FEN0067A/DA/PARTENAIRE/PARTNER_TYP/";
+ public static final transient String CHEMIN_ID_FONC_PARTNER= "FEN0067A/DA/PARTENAIRE/ID_FONC_PARTNER/";
+ public static final transient String CHEMIN_ID_CHORUS_PARTNER= "FEN0067A/DA/PARTENAIRE/ID_CHORUS_PARTNER/";
+ public static final transient String CHEMIN_PARTNER_FCT= "FEN0067A/DA/PARTENAIRE/PARTNER_FCT/";
+ public static final transient String CHEMIN_IDPARTENAIRE="FEN0067A/DA/PARTENAIRE/ID_AE/";
+ public static final transient String CHEMIN_PARTENAIRE= "FEN0067A/DA/PARTENAIRE/";
+ public static final transient String CHEMIN_ID_LIG= "FEN0067A/DA/PARTENAIRE/ID_LIG/";
+ public static final transient String RETURN_ANOMALIES_PATH = RESET_COUNTER_PATH;
+
+ private static final Logger logger = Logger.getLogger(M216.class);
+
+ // pour stocker tous les paramètres d'execution des controles
+ private Hashtable<String,Object> hParams;
+
+ private String ID_DA = null;
+ private String ID_DA_Unique = "";
+ private String id_fonc_partner = "";
+ private String partner_fonc = "";
+ private String idPARTENAIRE = "";
+ private String numLigneTexte = "";
+ private String partner_Nod = "";
+ private String id_chourus_partner = "";
+ private String patner_type = "";
+ private String id_lig = "";
+ private Boolean creer_ano = false;
+ private Boolean patner_type_exist = false;
+
+ //pour le message d'erreurs
+ private static final String MSG_IDPARTENAIRE = "#IDPARTENAIRE#";
+ private static final String MSG_ID_LIG = "#ID_LIG#";
+
+ // pour récupérer le texte des balises
+ private Stack<StringBuffer> chars = new Stack<StringBuffer>();
+
+ // pour stocker les anomalies que l'on génère
+ Vector<Anomalie> anomalies = null;
+
+ public void endDocument() throws SAXException { }
+
+ public void startElement(String uri, String localName, String qName, Attributes atts, String xpath) throws SAXException {
+ if(xpath.equals(RESET_COUNTER_PATH)) {
+ anomalies = new Vector<Anomalie>();
+ ID_DA = id_lig="";
+ ID_DA_Unique = atts.getValue("ano:unique-id");
+ } else if(xpath.equals(CHEMIN_PARTENAIRE)) {
+ id_fonc_partner = partner_fonc= id_chourus_partner=patner_type="";
+ idPARTENAIRE="";
+ partner_Nod = atts.getValue("ano:node-id");
+ creer_ano = false;
+ patner_type_exist=false;
+
+ }
+ chars.push(new StringBuffer());
+ }
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+
+ if(xpath.equals(CHEMIN_ENTETE_IDAE)) {
+ ID_DA = chars.peek().toString();
+ }
+ else if(xpath.equals(CHEMIN_ID_LIG)) {
+ id_lig = chars.peek().toString();
+ }
+ else if (xpath.equals(CHEMIN_IDPARTENAIRE)){
+ idPARTENAIRE=chars.peek().toString();
+ }
+ else if(xpath.equals(CHEMIN_ID_FONC_PARTNER)) {
+
+ id_fonc_partner=chars.peek().toString();
+ }
+
+ else if(xpath.equals(CHEMIN_PARTNER_TYP)){
+ patner_type= chars.peek().toString();
+ patner_type_exist=true;
+ }
+ else if(xpath.equals(CHEMIN_ID_CHORUS_PARTNER)){
+ id_chourus_partner= chars.peek().toString();
+ }
+
+ else if(xpath.equals(CHEMIN_PARTNER_FCT)){
+ partner_fonc= chars.peek().toString();
+ }
+
+ else if(xpath.equals(CHEMIN_PARTENAIRE)){
+
+ if(partner_fonc.equals("00000039")&&!(patner_type.equals("ZGEN"))){
+
+ if((id_fonc_partner.length()==0 || id_fonc_partner.equals(" "))&& (id_chourus_partner.length()==0)||id_chourus_partner.equals(" "))
+ {
+ creer_ano=true;
+ }}
+
+ else if ((partner_fonc.equals("00000016"))|| (partner_fonc.equals("00000027"))){
+
+ if ((id_fonc_partner.length()==0)|| (id_fonc_partner.equals(" ")))
+ {
+ creer_ano=true;
+
+ }
+ }
+
+ else if ((id_chourus_partner.length()==0)||id_chourus_partner.equals(" "))
+ {
+ creer_ano=true;
+ }
+
+ if(creer_ano) {
+
+ String anoId = IdGenerator.nextId();
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("anoId", anoId);
+ xslParams.put("presentation","src");
+ String libelleLien = "DA_ID "+ID_DA;
+ String path = "@ano:unique-id='" + ID_DA_Unique + "'";
+ // on reconstitue le message
+ String msg = (numLigneTexte.length()>0?"Ligne n°"+numLigneTexte+" : ":"");
+ msg += getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replace("#DA_ID#", ID_DA);
+ msg = msg.replaceAll(MSG_IDPARTENAIRE, idPARTENAIRE);
+ msg = msg.replaceAll(MSG_ID_LIG, id_lig);
+
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID),
+ getDocumentModel().getDocumentId(),
+ "FEN0067A",
+ "DA",
+ ID_DA,
+ localName, // l'élément en anomalie est bien DA
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path,
+ xslParams);
+ ano.addNode(new Node(partner_Nod));
+ anomalies.add(ano);
+ }
+ chars.pop();
+ return null;
+ }
+ else if(xpath.equals(RETURN_ANOMALIES_PATH)){
+ chars.pop();
+ return anomalies;
+ }
+ chars.pop();
+ return null;
+ }
+
+ public void characters(char[] ch, int start, int length, String xpath) throws SAXException {
+ // on met les caractères lus dans la pile
+ chars.peek().append(ch, start, length);
+ }
+
+ public void ignorableWhitespace(char[] ch, int start, int length, String xpath) throws SAXException { }
+
+ public void processingInstruction(String target, String data, String xpath) throws SAXException { }
+
+ public void skippedEntity(String name, String xpath) throws SAXException { }
+
+ public void setParameters(Hashtable<String, Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) { }
+
+ public void startDocument() throws SAXException { }
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) throws SAXException { }
+
+ public void endPrefixMapping(String prefix, String xpath) throws SAXException { }
+}
--- /dev/null
+/*
+ * Copyright
+ * 2010 axYus - www.axyus.com
+ * 2010 C ARIOUAT - assia.ariouat@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.dgfip.xemelios.controls.demandeachat;
+
+import java.util.Hashtable;
+import java.util.Stack;
+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;
+
+/**
+ * L'identifiant chorus de l'article (ID_CHORUS_PROD) ou le groupe de marchandise (CATEGORY_ID) doivent être renseignés.
+
+ * @author Assia ARIOUAT
+ */
+public class M219 extends AbstractUnitControl {
+ public static final String CTRL_ID = "CTL-M219" ;
+ public static final transient String RESET_COUNTER_PATH = "FEN0067A/DA/";
+ public static final transient String CHEMIN_ENTETE_IDAE = "FEN0067A/DA/ENTETE/ID_AE/";
+ public static final transient String CHEMIN_CATEGORY_ID= "FEN0067A/DA/POSTE/CATEGORY_ID/";
+ public static final transient String CHEMIN_ID_CHORUS_PROD= "FEN0067A/DA/POSTE/ID_CHORUS_PROD/";
+ public static final transient String CHEMIN_ID_LIG= "FEN0067A/DA/POSTE/ID_LIG/";
+ public static final transient String CHEMIN_IDPOSTE= "FEN0067A/DA/POSTE/ID_AE/";
+ public static final transient String CHEMIN_POSTE= "FEN0067A/DA/POSTE/";
+ public static final transient String RETURN_ANOMALIES_PATH = RESET_COUNTER_PATH;
+
+ private static final Logger logger = Logger.getLogger(M219.class);
+
+ // pour stocker tous les paramètres d'execution des controles
+ private Hashtable<String,Object> hParams;
+
+ private String ID_DA = null;
+ private String ID_DA_Unique = "";
+ private String category_id = "";
+ private String idPOSTE = "";
+ private String numLigneTexte = "";
+ private String poste_Nod = "";
+ private String id_chourus_prod = "";
+ private String id_lig = "";
+
+ //pour le message d'erreurs
+ private static final String MSG_IDPOSTE = "#IDPOSTE#";
+ private static final String MSG_ID_LIG = "#ID_LIG#";
+
+
+
+ // pour récupérer le texte des balises
+ private Stack<StringBuffer> chars = new Stack<StringBuffer>();
+
+ // pour stocker les anomalies que l'on génère
+ Vector<Anomalie> anomalies = null;
+
+ public void endDocument() throws SAXException { }
+
+ public void startElement(String uri, String localName, String qName, Attributes atts, String xpath) throws SAXException {
+ if(xpath.equals(RESET_COUNTER_PATH)) {
+ anomalies = new Vector<Anomalie>();
+ ID_DA = "";
+ ID_DA_Unique = atts.getValue("ano:unique-id");
+ } else if(xpath.equals(CHEMIN_POSTE)) {
+ category_id = id_chourus_prod="";
+ idPOSTE=id_lig="";
+
+
+ poste_Nod = atts.getValue("ano:node-id");}
+
+ chars.push(new StringBuffer());
+ }
+
+ public Vector<Anomalie> endElement(String uri, String localName, String qName, String xpath) throws SAXException {
+
+ if(xpath.equals(CHEMIN_ENTETE_IDAE)) {
+ ID_DA = chars.peek().toString();
+ }
+ if(xpath.equals(CHEMIN_ID_LIG)) {
+ id_lig = chars.peek().toString();
+ }
+ else if (xpath.equals(CHEMIN_IDPOSTE)){
+ idPOSTE=chars.peek().toString();
+ }
+ else if(xpath.equals(CHEMIN_CATEGORY_ID)) {
+
+ category_id=chars.peek().toString();
+ }
+
+ else if(xpath.equals(CHEMIN_ID_CHORUS_PROD)){
+ id_chourus_prod= chars.peek().toString();
+
+ }
+
+ else if(xpath.equals(CHEMIN_POSTE)){
+
+ if(((category_id.length()==0) && (id_chourus_prod.length()==0 ))){
+
+ String anoId = IdGenerator.nextId();
+ Hashtable<String, Object> xslParams = new Hashtable<String, Object>();
+ xslParams.put("anoId", anoId);
+ xslParams.put("presentation","src");
+ String libelleLien = "DA_ID "+ID_DA;
+ String path = "@ano:unique-id='" + ID_DA_Unique + "'";
+ // on reconstitue le message
+ String msg = (numLigneTexte.length()>0?"Ligne n°"+numLigneTexte+" : ":"");
+ msg += getDocumentModel().getControlById(CTRL_ID).getMessage().getHtmlContent();
+ msg = msg.replace("#DA_ID#", ID_DA);
+ msg = msg.replaceAll(MSG_IDPOSTE, idPOSTE);
+ msg = msg.replaceAll(MSG_ID_LIG, id_lig);
+
+ Anomalie ano = new Anomalie(anoId,
+ getDocumentModel().getControlById(CTRL_ID),
+ getDocumentModel().getDocumentId(),
+ "FEN0067A",
+ "DA",
+ ID_DA,
+ localName, // l'élément en anomalie est bien DA
+ libelleLien,
+ msg,
+ getDocumentModel().getControlById(CTRL_ID).getRegle().getHtmlContent(),
+ getDocumentModel().getControlById(CTRL_ID).getSeverity(),
+ path,
+ xslParams);
+ ano.addNode(new Node(poste_Nod));
+ anomalies.add(ano);
+ }
+ chars.pop();
+ return null;
+ }
+ else if(xpath.equals(RETURN_ANOMALIES_PATH)){
+ chars.pop();
+ return anomalies;
+ }
+ chars.pop();
+ return null;
+ }
+
+ public void characters(char[] ch, int start, int length, String xpath) throws SAXException {
+ // on met les caractères lus dans la pile
+ chars.peek().append(ch, start, length);
+ }
+
+ public void ignorableWhitespace(char[] ch, int start, int length, String xpath) throws SAXException { }
+
+ public void processingInstruction(String target, String data, String xpath) throws SAXException { }
+
+ public void skippedEntity(String name, String xpath) throws SAXException { }
+
+ public void setParameters(Hashtable<String, Object> params) {
+ this.hParams=params;
+ }
+
+ public void setDocumentLocator(Locator locator) { }
+
+ public void startDocument() throws SAXException { }
+
+ public void startPrefixMapping(String prefix, String uri, String xpath) throws SAXException { }
+
+ public void endPrefixMapping(String prefix, String xpath) throws SAXException { }
+}
--- /dev/null
+/*
+ * Copyright
+ * 2010 axYus - www.axyus.com
+ * 2010 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.dgfip.xemelios.demandeachat;
+
+import fr.gouv.finances.dgfip.xemelios.controls.core.processors.AbstractProcessor;
+import fr.gouv.finances.dgfip.utils.xml.XmlAttributesImpl;
+import fr.gouv.finances.dgfip.xemelios.common.Constants;
+
+public class CollectiviteGenerator extends AbstractProcessor {
+
+ @Override
+ public void process(EVENT evt, String uri, String localName, String qName, XmlAttributesImpl atts) {
+ super.process(evt, uri, localName, qName, atts);
+ atts.addAttribute(Constants.ADDED_NS_URI, "collectivite", "added:collectivite", "CDATA", "Etat");
+ }
+
+}
\ No newline at end of file
--- /dev/null
+/*
+ *
+ * Copyright
+ * 2009 axYus - www.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.dgfip.xemelios.demandeachat;
+
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.util.Stack;
+
+import javax.xml.namespace.NamespaceContext;
+import javax.xml.namespace.QName;
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
+
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+import org.xml.sax.helpers.AttributesImpl;
+import org.xml.sax.helpers.DefaultHandler;
+
+import fr.gouv.finances.dgfip.utils.xml.SAXWriter;
+import fr.gouv.finances.dgfip.xemelios.auth.XemeliosUser;
+import fr.gouv.finances.dgfip.xemelios.common.Constants;
+import fr.gouv.finances.dgfip.xemelios.common.FileInfo;
+import fr.gouv.finances.dgfip.xemelios.importers.DefaultImporter;
+import fr.gouv.finances.dgfip.xemelios.utils.XmlUtils;
+
+/**
+ *
+ * @author Christophe Marchand <christophe.marchand@axyus.com>
+ */
+public class DemandeAchatImporter extends DefaultImporter {
+ private static final org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger(DemandeAchatImporter.class);
+
+ public static final String COLLECTIVITE_PATH = "/FEN0067A/DA/ENTETE/SIRET_CPD/";
+ private static final String EXPECTED_ERROR = "EXPECTED_ERROR";
+ private File outputTmpFile;
+
+ public DemandeAchatImporter(XemeliosUser user) {
+ super(user);
+ }
+
+ @Override
+ protected FileInfo importFile(File f) throws Exception {
+ getImpSvcProvider().startLongWait();
+ File newFile = wrapFile(f);
+//logger.debug("Wrapped File: "+newFile.getAbsolutePath());
+ return super.importFile(newFile);
+ }
+
+ @Override
+ public void done() {
+ super.done();
+ outputTmpFile.delete();
+ }
+
+
+
+ protected File wrapFile(File f) {
+ SAXParserFactory fact = SAXParserFactory.newInstance();
+ fact.setNamespaceAware(true);
+ outputTmpFile = new File(getTmpDir(),f.getName());
+ while(outputTmpFile.exists()) {
+ if(outputTmpFile.equals(f)) {
+ File tmpDir = outputTmpFile.getParentFile();
+ tmpDir = new File(tmpDir,"TMP-DIR");
+ tmpDir.mkdirs();
+ outputTmpFile = new File(tmpDir,f.getName());
+ } else {
+ outputTmpFile.delete();
+ }
+ }
+ FileOutputStream fos = null;
+ try {
+ SAXParser collParser = fact.newSAXParser();
+ CollHandler handler = new CollHandler(getDocumentModel().getNamespaces());
+ String collectivite="";
+ try {
+ collParser.parse(f, handler);
+ } catch(SAXException saxEx) {
+ if(EXPECTED_ERROR.equals(saxEx.getMessage())) {
+ collectivite = handler.getCollectivite();
+ } else {
+ throw saxEx;
+ }
+ }
+ fos = new FileOutputStream(outputTmpFile);
+ String encoding = getFileEncoding(f);
+ final String passedColl = collectivite;
+ SAXWriter writer = new SAXWriter(fos, encoding) {
+ @Override
+ public void startDocument() throws SAXException {
+ super.startDocument();
+ startPrefixMapping("added", Constants.ADDED_NS_URI);
+ startElement(Constants.ADDED_NS_URI, "DocDemandeAchat", new QName(Constants.ADDED_NS_URI, "DocDemandeAchat", "added").toString(),new AttributesImpl());
+ AttributesImpl attrsColl = new AttributesImpl();
+ attrsColl.addAttribute("", "code", "", "xs:string", "000000");
+ attrsColl.addAttribute("", "libelle", "", "xs:string", "ETAT");
+ startElement(Constants.ADDED_NS_URI, "Collectivite", new QName(Constants.ADDED_NS_URI, "Collectivite", "added").toString(),attrsColl);
+ //characters(passedColl.toCharArray(), 0, passedColl.length());
+ endElement(Constants.ADDED_NS_URI, "Collectivite", new QName(Constants.ADDED_NS_URI, "Collectivite", "added").toString());
+ AttributesImpl attrs = new AttributesImpl();
+ attrs.addAttribute("", "code", "", "xs:string", "00");
+ attrs.addAttribute("", "libelle", "", "xs:string", "LFI");
+ startElement(Constants.ADDED_NS_URI, "Budget", new QName(Constants.ADDED_NS_URI, "Budget", "added").toString(),attrs);
+ endElement(Constants.ADDED_NS_URI, "Budget", new QName(Constants.ADDED_NS_URI, "Budget", "added").toString());
+ }
+ @Override
+ public void endDocument() throws SAXException {
+ endElement(Constants.ADDED_NS_URI, "DocDemandeAchat", new QName(Constants.ADDED_NS_URI, "DocDemandeAchat", "added").toString());
+ endPrefixMapping("added");
+ super.endDocument();
+ }
+
+ @Override
+ public void processingInstruction(String target, String data) throws SAXException {
+ //super.processingInstruction(target, data);
+ // a l'import, on vire la reference à la feuille de style
+ }
+
+ };
+ SAXParser parser = fact.newSAXParser();
+ parser.parse(f, writer);
+
+ } catch(Exception ex) {
+ logger.error("wrapFile(File):",ex);
+ } finally {
+ try {
+ fos.flush();
+ fos.close();
+ } catch(Throwable t) {}
+ }
+ return outputTmpFile;
+ }
+
+ private class CollHandler extends DefaultHandler {
+ Stack<QName> stack;
+ NamespaceContext nsCtx;
+ Stack<StringBuffer> textContent;
+ private String collectivite;
+
+ public String getCollectivite() { return collectivite; }
+
+ public CollHandler(NamespaceContext nsCtx) {
+ super();
+ this.nsCtx=nsCtx;
+ stack = new Stack<QName>();
+ textContent = new Stack<StringBuffer>();
+ }
+
+ @Override
+ public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
+ super.startElement(uri, localName, qName, attributes);
+ QName qname = XmlUtils.getQName(uri, localName, qName);
+ stack.push(qname);
+ textContent.push(new StringBuffer());
+ }
+
+ @Override
+ public void endElement(String uri, String localName, String qName) throws SAXException {
+ super.endElement(uri, localName, qName);
+ String pathTag = XmlUtils.getPath(stack, nsCtx);
+ if(COLLECTIVITE_PATH.equals(pathTag)) {
+ collectivite = textContent.peek().toString();
+ throw new SAXException(EXPECTED_ERROR);
+ }
+ stack.pop();
+ }
+
+ @Override
+ public void characters(char[] ch, int start, int length) throws SAXException {
+ super.characters(ch, start, length);
+ String s = new String(ch,start,length).trim();
+ textContent.peek().append(s);
+ }
+
+
+
+ }
+
+}
--- /dev/null
+package fr.gouv.finances.dgfip.xemelios.demandeachat;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.UnsupportedEncodingException;
+
+import fr.gouv.finances.dgfip.utils.StringUtilities;
+import fr.gouv.finances.dgfip.xemelios.txt2xml.AbstractTxt2Xml;
+import fr.gouv.finances.dgfip.xemelios.txt2xml.Txt2Xml;
+import fr.gouv.finances.dgfip.xemelios.utils.FileUtils;
+
+public class DemandeAchatTxt2Xml extends AbstractTxt2Xml implements Txt2Xml {
+
+ private static final org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger(DemandeAchatTxt2Xml.class);
+ private final static String ENCODING_TXT = "UTF-8";
+ private final static String ENCODING_XML = "ISO-8859-15";
+ private final static int LENGTH_ENTETE = 335;
+ private final static int LENGTH_LINE = 536;
+ private final static int LENGTH_PARTENAIRE = 621;
+ private final static int LENGTH_IMPUTATION = 592;
+ private final static int LENGTH_TEXTE = 405;
+ private final static int LENGTH_LINE_INCONNUE = 592;
+ private final static String TAG_FEN = "FEN0067A";
+ private final static String TAG_ETAT = "DA";
+ private final static String TAG_LIGNE_INCONNUE = "LIGNE_INCONNUE";
+ private final static String TAG_ENTETE = "ENTETE";
+ private final static String TAG_LIGNE = "POSTE";
+ private final static String TAG_PARTENAIRE = "PARTENAIRE";
+ private final static String TAG_IMPUTATION = "IMPUTATION";
+ private final static String TAG_TEXTE = "TEXTE";
+ private final static String NAMESPACE = "FEN0067A";
+
+ public DemandeAchatTxt2Xml() {
+ super();
+ }
+
+ @Override
+ public File transform(File f) {
+ File ret = null;
+ try {
+ if (FileUtils.isXmlFile(f, ENCODING_TXT)) {
+ ret = f;
+ } else {
+ ret = makeTransformDA(f);
+ }
+ } catch (Exception e) {
+ logger.debug("Problème de transformation du flux !", e);
+ }
+ return ret;
+ }
+
+ /**
+ * @param f
+ * @return
+ * @throws IOException
+ */
+ private File makeTransformDA(File f) throws IOException {
+
+ File outputFile = new File(FileUtils.getTempDir(), f.getName());
+ outputFile.createNewFile();
+
+ FileOutputStream fos = null;
+ FileInputStream fis = null;
+ try {
+ fos = new FileOutputStream(outputFile);
+ fos.write(("<?xml version=\"1.0\" encoding=\"" + ENCODING_XML + "\"?>\n<" + TAG_FEN + " xmlns=\"" + NAMESPACE + "\" xmlns:txt2xml=\"http://www.xemelios.org/namespaces#txt2xml\">\n").getBytes(ENCODING_XML));
+ fis = new FileInputStream(f);
+ BufferedReader br = new BufferedReader(new InputStreamReader(fis, ENCODING_TXT));
+ String line = br.readLine();
+ int nbLignesParcourues = 0;
+ while (line != null) {
+ nbLignesParcourues++;
+ if (line.trim().length() > 0) {
+ if (line.substring(0, 1).equals("E")) {
+ fos.write(makeTranformEntete(line, nbLignesParcourues));
+ } else if (line.substring(0, 1).equals("L")) {
+ fos.write(makeTranformLine(line, nbLignesParcourues));
+ } else if (line.substring(0, 1).equals("I")) {
+ fos.write(makeTranformImputation(line, nbLignesParcourues));
+ } else if (line.substring(0, 1).equals("T")) {
+ fos.write(makeTranformTexte(line, nbLignesParcourues));
+ } else if (line.substring(0, 1).equals("P")) {
+ fos.write(makeTranformPartenaire(line, nbLignesParcourues));
+ } else if ((!line.substring(0, 1).equals("L")) && (!line.substring(0, 1).equals("E")) && (!line.substring(0, 1).equals("I")) && (!line.substring(0, 1).equals("T")) && (!line.substring(0, 1).equals("P"))) {
+ fos.write(makeTranformLineInconnue(line, nbLignesParcourues));
+ }
+
+ }
+
+ line = br.readLine();
+ }
+ fos.write(("\t</" + TAG_ETAT + ">\n</" + TAG_FEN + ">").getBytes(ENCODING_XML));
+ fos.flush();
+ } catch (UnsupportedEncodingException uee) {
+ logger.debug("Problème d'écriture avec encoding !");
+ } catch (Exception e) {
+ e.printStackTrace();
+ } finally {
+ if (fos != null) {
+ fos.close();
+ }
+ if (fis != null) {
+ fis.close();
+ }
+ }
+ logger.info("Le fichier de sortie de transformation se trouve ici : " + outputFile.getAbsolutePath());
+ return outputFile;
+ }
+
+ private byte[] makeTranformEntete(String line, int nbLignesParcourues) throws UnsupportedEncodingException {
+ StringBuffer sb = null;
+ if (nbLignesParcourues > 1) {
+ sb = new StringBuffer("\t</" + TAG_ETAT + ">\n\t<" + TAG_ETAT + ">\n\t\t<" + TAG_ENTETE + " txt2xml:LineTxt=\"" + nbLignesParcourues + "\">\n");
+ } else {
+ sb = new StringBuffer("\t<" + TAG_ETAT + ">\n\t\t<" + TAG_ENTETE + " txt2xml:LineTxt=\"" + nbLignesParcourues + "\">\n");
+ }
+ /* Compris entre LENGTH_ENTETE-2 && LENGTH_ENTETE */
+ if (line.length() >= LENGTH_ENTETE - 1) {
+ /* Variables à récupérer
+ * Lot3 - Format pivot AE FEN0067A - Réception des demandes de paiement directes V2.2.doc
+ */
+ try {
+
+ String idAe = StringUtilities.escapeSpecialsCharactersAndAccentsToDecimal(line.substring(1, 13));
+ String codeAppli =StringUtilities.escapeSpecialsCharactersAndAccentsToDecimal( line.substring(13, 19));
+ String description = StringUtilities.escapeSpecialsCharactersAndAccentsToDecimal(line.substring(19, 59));
+ String docDate = StringUtilities.escapeSpecialsCharactersAndAccentsToDecimal(line.substring(59, 67));
+ String initiateur = StringUtilities.escapeSpecialsCharactersAndAccentsToDecimal(line.substring(67, 79));
+ String currency = StringUtilities.escapeSpecialsCharactersAndAccentsToDecimal(line.substring(79, 84));
+
+
+ sb.append("\t\t\t<ID_AE txt2xml:TxtValue=\"").append(idAe).append("\">").append(idAe.trim()).append("</ID_AE>\n");
+ sb.append("\t\t\t<CODE_APPLI txt2xml:TxtValue=\"").append(codeAppli).append("\">").append(codeAppli.trim()).append("</CODE_APPLI>\n");
+ if (description.trim().length() > 0) {
+ sb.append("\t\t\t<DESCRIPTION txt2xml:TxtValue=\"").append(description).append("\">").append(description.trim()).append("</DESCRIPTION>\n");
+ }
+ sb.append("\t\t\t<DOC_DATE txt2xml:TxtValue=\"").append(docDate).append("\">").append(docDate.trim()).append("</DOC_DATE>\n");
+ sb.append("\t\t\t<INITIATEUR txt2xml:TxtValue=\"").append(initiateur).append("\">").append(initiateur.trim()).append("</INITIATEUR>\n");
+ if (currency.trim().length() > 0) {
+ sb.append("\t\t\t<CURRENCY txt2xml:TxtValue=\"").append(currency).append("\">").append(currency.trim()).append("</CURRENCY>\n");
+ }
+ } catch (Exception e) {
+ System.out.println("ENTETE : Erreur de transfmormation : " + line);
+ }
+ } else {
+ logger.debug("Pb makeTranformEntete()");
+ }
+ sb.append("\t\t</" + TAG_ENTETE + ">\n");
+ return sb.toString().getBytes(ENCODING_XML);
+ }
+
+ private byte[] makeTranformLine(String line, int nbLignesParcourues) throws UnsupportedEncodingException {
+ StringBuffer sb = new StringBuffer("\t\t<" + TAG_LIGNE + " txt2xml:LineTxt=\"" + nbLignesParcourues + "\">\n");
+ if (line.length() >= LENGTH_LINE - 1) {
+
+ String idAE = StringUtilities.escapeSpecialsCharactersAndAccentsToDecimal(line.substring(1, 13));
+ String idLig = StringUtilities.escapeSpecialsCharactersAndAccentsToDecimal(line.substring(13, 18));
+ String description = StringUtilities.escapeSpecialsCharactersAndAccentsToDecimal(line.substring(18, 58));
+ String partnerProd = StringUtilities.escapeSpecialsCharactersAndAccentsToDecimal(line.substring(58, 89));
+ String categoryId = StringUtilities.escapeSpecialsCharactersAndAccentsToDecimal(line.substring(98, 118));
+ String typeIdFonc = StringUtilities.escapeSpecialsCharactersAndAccentsToDecimal(line.substring(118, 148));
+ String idFoncProd = StringUtilities.escapeSpecialsCharactersAndAccentsToDecimal(line.substring(148, 178));
+ String idChourusProd = StringUtilities.escapeSpecialsCharactersAndAccentsToDecimal(line.substring(178, 196));
+ String quantity = StringUtilities.escapeSpecialsCharactersAndAccentsToDecimal(line.substring(196, 211));
+ String unit = StringUtilities.escapeSpecialsCharactersAndAccentsToDecimal(line.substring(211, 214));
+ String grossPrice = StringUtilities.escapeSpecialsCharactersAndAccentsToDecimal(line.substring(214, 239));
+ String unitPrice = StringUtilities.escapeSpecialsCharactersAndAccentsToDecimal(line.substring(239, 244));
+ String taxCode = StringUtilities.escapeSpecialsCharactersAndAccentsToDecimal(line.substring(244, 246));
+ String delivDate = StringUtilities.escapeSpecialsCharactersAndAccentsToDecimal(line.substring(246, 254));
+ String crtNumber = StringUtilities.escapeSpecialsCharactersAndAccentsToDecimal(line.substring(254, 264));
+ String ctrItemNumber = StringUtilities.escapeSpecialsCharactersAndAccentsToDecimal(line.substring(264, 274));
+ String atgeLog = StringUtilities.escapeSpecialsCharactersAndAccentsToDecimal(line.substring(274, 278));
+ String bePlant = StringUtilities.escapeSpecialsCharactersAndAccentsToDecimal(line.substring(278, 282));
+ String bePurGroup = StringUtilities.escapeSpecialsCharactersAndAccentsToDecimal(line.substring(282, 285));
+ String price = StringUtilities.escapeSpecialsCharactersAndAccentsToDecimal(line.substring(285, 300));
+
+ sb.append("\t\t\t<ID_AE txt2xml:TxtValue=\"").append(idAE).append("\">").append(idAE.trim()).append("</ID_AE>\n");
+ sb.append("\t\t\t<ID_LIG txt2xml:TxtValue=\"").append(idLig).append("\">").append(idLig.trim()).append("</ID_LIG>\n");
+
+ if (description.trim().length() > 0) {
+ sb.append("\t\t\t<DESCRIPTION txt2xml:TxtValue=\"").append(description).append("\">").append(description.trim()).append("</DESCRIPTION>\n");
+ }
+ if (partnerProd.trim().length() > 0) {
+ sb.append("\t\t\t<PARTNER_PROD txt2xml:TxtValue=\"").append(partnerProd).append("\">").append(partnerProd.trim()).append("</PARTNER_PROD>\n");
+ }
+ if (categoryId.trim().length() > 0) {
+ sb.append("\t\t\t<CATEGORY_ID txt2xml:TxtValue=\"").append(categoryId).append("\">").append(categoryId.trim()).append("</CATEGORY_ID>\n");
+ }
+ if (typeIdFonc.trim().length() > 0) {
+ sb.append("\t\t\t<TYPE_ID_FONC txt2xml:TxtValue=\"").append(typeIdFonc).append("\">").append(typeIdFonc.trim()).append("</TYPE_ID_FONC>\n");
+ }
+ if (idFoncProd.trim().length() > 0) {
+ sb.append("\t\t\t<ID_FONC_PROD txt2xml:TxtValue=\"").append(idFoncProd).append("\">").append(idFoncProd.trim()).append("</ID_FONC_PROD>\n");
+ }
+ if (idChourusProd.trim().length() > 0) {
+ sb.append("\t\t\t<ID_CHORUS_PROD txt2xml:TxtValue=\"").append(idChourusProd).append("\">").append(idChourusProd.trim()).append("</ID_CHORUS_PROD>\n");
+ }
+ sb.append("\t\t\t<QUANTITY txt2xml:TxtValue=\"").append(quantity).append("\">").append(quantity.trim()).append("</QUANTITY>\n");
+ if (unit.trim().length() > 0) {
+ sb.append("\t\t\t<UNIT txt2xml:TxtValue=\"").append(unit).append("\">").append(unit.trim()).append("</UNIT>\n");
+ }
+ if (grossPrice.trim().length() > 0) {
+ sb.append("\t\t\t<GROSS_PRICE txt2xml:TxtValue=\"").append(grossPrice).append("\">").append(grossPrice.trim()).append("</GROSS_PRICE>\n");
+ }
+ if (unitPrice.trim().length() > 0) {
+ sb.append("\t\t\t<UNIT_PRICE txt2xml:TxtValue=\"").append(unitPrice).append("\">").append(unitPrice.trim()).append("</UNIT_PRICE>\n");
+ }
+ if (taxCode.trim().length() > 0) {
+ sb.append("\t\t\t<TAX_CODE txt2xml:TxtValue=\"").append(taxCode).append("\">").append(taxCode.trim()).append("</TAX_CODE>\n");
+ }
+ sb.append("\t\t\t<DELIV_DATE txt2xml:TxtValue=\"").append(delivDate).append("\">").append(delivDate.trim()).append("</DELIV_DATE>\n");
+ if (crtNumber.trim().length() > 0) {
+ sb.append("\t\t\t<CTR_NUMBER txt2xml:TxtValue=\"").append(crtNumber).append("\">").append(crtNumber.trim()).append("</CTR_NUMBER>\n");
+ }
+ if (ctrItemNumber.trim().length() > 0) {
+ sb.append("\t\t\t<CTR_ITEM_NUMBER txt2xml:TxtValue=\"").append(ctrItemNumber).append("\">").append(ctrItemNumber.trim()).append("</CTR_ITEM_NUMBER>\n");
+ }
+ if (atgeLog.trim().length() > 0) {
+ sb.append("\t\t\t<STGE_LOC txt2xml:TxtValue=\"").append(atgeLog).append("\">").append(atgeLog.trim()).append("</STGE_LOC>\n");
+ }
+ sb.append("\t\t\t<BE_PLANT txt2xml:TxtValue=\"").append(bePlant).append("\">").append(bePlant.trim()).append("</BE_PLANT>\n");
+ sb.append("\t\t\t<BE_PUR_GROUP txt2xml:TxtValue=\"").append(bePurGroup).append("\">").append(bePurGroup.trim()).append("</BE_PUR_GROUP>\n");
+ if (price.trim().length() > 0) {
+ sb.append("\t\t\t<PRICE txt2xml:TxtValue=\"").append(price).append("\">").append(price.trim()).append("</PRICE>\n");
+ }
+ } else {
+ logger.debug("Pb makeTranformLine()");
+ }
+ sb.append("\t\t</" + TAG_LIGNE + ">\n");
+ return sb.toString().getBytes(ENCODING_XML);
+ }
+
+ private byte[] makeTranformImputation(String line, int nbLignesParcourues) throws UnsupportedEncodingException {
+ StringBuffer sb = new StringBuffer("\t\t<" + TAG_IMPUTATION + " txt2xml:LineTxt=\"" + nbLignesParcourues + "\">\n");
+ if (line.length() >= LENGTH_IMPUTATION - 1) {
+
+ String idAe = StringUtilities.escapeSpecialsCharactersAndAccentsToDecimal(line.substring(1, 13));
+ String idLig = StringUtilities.escapeSpecialsCharactersAndAccentsToDecimal(line.substring(13, 18));
+ String accCat = StringUtilities.escapeSpecialsCharactersAndAccentsToDecimal(line.substring(18, 23));
+ String glCct = StringUtilities.escapeSpecialsCharactersAndAccentsToDecimal(line.substring(23, 33));
+ String busArea = StringUtilities.escapeSpecialsCharactersAndAccentsToDecimal(line.substring(33, 37));
+ String costCtr = StringUtilities.escapeSpecialsCharactersAndAccentsToDecimal(line.substring(37, 47));
+ String assetNo = StringUtilities.escapeSpecialsCharactersAndAccentsToDecimal(line.substring(47, 59));
+ String subNumber = StringUtilities.escapeSpecialsCharactersAndAccentsToDecimal(line.substring(59, 63));
+ String wbsElem = StringUtilities.escapeSpecialsCharactersAndAccentsToDecimal(line.substring(63, 87));
+ String cmmtItem = StringUtilities.escapeSpecialsCharactersAndAccentsToDecimal(line.substring(87, 101));
+ String foncdCtr = StringUtilities.escapeSpecialsCharactersAndAccentsToDecimal(line.substring(101, 117));
+ String fund = StringUtilities.escapeSpecialsCharactersAndAccentsToDecimal(line.substring(117, 127));
+ String funcArea = StringUtilities.escapeSpecialsCharactersAndAccentsToDecimal(line.substring(127, 143));
+ String activity = StringUtilities.escapeSpecialsCharactersAndAccentsToDecimal(line.substring(143, 167));
+ String trcFonc = StringUtilities.escapeSpecialsCharactersAndAccentsToDecimal(line.substring(167, 191));
+ String logInt = StringUtilities.escapeSpecialsCharactersAndAccentsToDecimal(line.substring(191, 199));
+ String anaMin = StringUtilities.escapeSpecialsCharactersAndAccentsToDecimal(line.substring(199, 211));
+ String locMin = StringUtilities.escapeSpecialsCharactersAndAccentsToDecimal(line.substring(211, 243));
+ String natMin = StringUtilities.escapeSpecialsCharactersAndAccentsToDecimal(line.substring(243, 254));
+ String cper = StringUtilities.escapeSpecialsCharactersAndAccentsToDecimal(line.substring(254, 269));
+ String presage = StringUtilities.escapeSpecialsCharactersAndAccentsToDecimal(line.substring(269, 284));
+ String axmin1 = StringUtilities.escapeSpecialsCharactersAndAccentsToDecimal(line.substring(284, 306));
+ String axmin2 = StringUtilities.escapeSpecialsCharactersAndAccentsToDecimal(line.substring(306, 328));
+ String resDoc = StringUtilities.escapeSpecialsCharactersAndAccentsToDecimal(line.substring(328, 338));
+ String resItem = StringUtilities.escapeSpecialsCharactersAndAccentsToDecimal(line.substring(338, 341));
+
+ sb.append("\t\t\t<ID_AE txt2xml:TxtValue=\"").append(idAe).append("\">").append(idAe.trim()).append("</ID_AE>\n");
+ sb.append("\t\t\t<ID_LIG txt2xml:TxtValue=\"").append(idLig).append("\">").append(idLig.trim()).append("</ID_LIG>\n");
+ sb.append("\t\t\t<ACC_CAT txt2xml:TxtValue=\"").append(accCat).append("\">").append(accCat.trim()).append("</ACC_CAT>\n");
+
+ if (glCct.trim().length() > 0) {
+ sb.append("\t\t\t<GL_ACCT txt2xml:TxtValue=\"").append(glCct).append("\">").append(glCct.trim()).append("</GL_ACCT>\n");
+ }
+ if (busArea.trim().length() > 0) {
+ sb.append("\t\t\t<BUS_AREA txt2xml:TxtValue=\"").append(busArea).append("\">").append(busArea.trim()).append("</BUS_AREA>\n");
+ }
+ if (costCtr.trim().length() > 0) {
+ sb.append("\t\t\t<COST_CTR txt2xml:TxtValue=\"").append(costCtr).append("\">").append(costCtr.trim()).append("</COST_CTR>\n");
+ }
+ if (assetNo.trim().length() > 0) {
+ sb.append("\t\t\t<ASSET_NO txt2xml:TxtValue=\"").append(assetNo).append("\">").append(assetNo.trim()).append("</ASSET_NO>\n");
+ }
+ if (subNumber.trim().length() > 0) {
+ sb.append("\t\t\t<SUB_NUMBER txt2xml:TxtValue=\"").append(subNumber).append("\">").append(subNumber.trim()).append("</SUB_NUMBER>\n");
+ }
+ if (wbsElem.trim().length() > 0) {
+ sb.append("\t\t\t<WBS_ELEM txt2xml:TxtValue=\"").append(wbsElem).append("\">").append(wbsElem.trim()).append("</WBS_ELEM>\n");
+ }
+ if (cmmtItem.trim().length() > 0) {
+ sb.append("\t\t\t<CMMT_ITEM txt2xml:TxtValue=\"").append(cmmtItem).append("\">").append(cmmtItem.trim()).append("</CMMT_ITEM>\n");
+ }
+ if (foncdCtr.trim().length() > 0) {
+ sb.append("\t\t\t<FUNDS_CTR txt2xml:TxtValue=\"").append(foncdCtr).append("\">").append(foncdCtr.trim()).append("</FUNDS_CTR>\n");
+ }
+ if (fund.trim().length() > 0) {
+ sb.append("\t\t\t<FUND txt2xml:TxtValue=\"").append(fund).append("\">").append(fund.trim()).append("</FUND>\n");
+ }
+ if (funcArea.trim().length() > 0) {
+ sb.append("\t\t\t<FUNC_AREA txt2xml:TxtValue=\"").append(funcArea).append("\">").append(funcArea.trim()).append("</FUNC_AREA>\n");
+ }
+ if (activity.trim().length() > 0) {
+ sb.append("\t\t\t<ACTIVITY txt2xml:TxtValue=\"").append(activity).append("\">").append(activity.trim()).append("</ACTIVITY>\n");
+ }
+ if (trcFonc.trim().length() > 0) {
+ sb.append("\t\t\t<TRC_FONC txt2xml:TxtValue=\"").append(trcFonc).append("\">").append(trcFonc.trim()).append("</TRC_FONC>\n");
+ }
+ if (logInt.trim().length() > 0) {
+ sb.append("\t\t\t<LOC_INT txt2xml:TxtValue=\"").append(logInt).append("\">").append(logInt.trim()).append("</LOC_INT>\n");
+ }
+ if (anaMin.trim().length() > 0) {
+ sb.append("\t\t\t<ANA_MIN txt2xml:TxtValue=\"").append(anaMin).append("\">").append(anaMin.trim()).append("</ANA_MIN>\n");
+ }
+ if (locMin.trim().length() > 0) {
+ sb.append("\t\t\t<LOC_MIN txt2xml:TxtValue=\"").append(locMin).append("\">").append(locMin.trim()).append("</LOC_MIN>\n");
+ }
+ if (natMin.trim().length() > 0) {
+ sb.append("\t\t\t<NAT_MIN txt2xml:TxtValue=\"").append(natMin).append("\">").append(natMin.trim()).append("</NAT_MIN>\n");
+ }
+ if (cper.trim().length() > 0) {
+ sb.append("\t\t\t<CPER txt2xml:TxtValue=\"").append(cper).append("\">").append(cper.trim()).append("</CPER>\n");
+ }
+ if (presage.trim().length() > 0) {
+ sb.append("\t\t\t<PRESAGE txt2xml:TxtValue=\"").append(presage).append("\">").append(presage.trim()).append("</PRESAGE>\n");
+ }
+ if (axmin1.trim().length() > 0) {
+ sb.append("\t\t\t<AXMIN1 txt2xml:TxtValue=\"").append(axmin1).append("\">").append(axmin1.trim()).append("</AXMIN1>\n");
+ }
+ if (axmin2.trim().length() > 0) {
+ sb.append("\t\t\t<AXMIN2 txt2xml:TxtValue=\"").append(axmin2).append("\">").append(axmin2.trim()).append("</AXMIN2>\n");
+ }
+ if (resDoc.trim().length() > 0) {
+ sb.append("\t\t\t<RES_DOC txt2xml:TxtValue=\"").append(resDoc).append("\">").append(resDoc.trim()).append("</RES_DOC>\n");
+ }
+ if (resItem.trim().length() > 0) {
+ sb.append("\t\t\t<RES_ITEM txt2xml:TxtValue=\"").append(resItem).append("\">").append(resItem.trim()).append("</RES_ITEM>\n");
+ }
+ } else {
+ logger.debug("Pb makeTranformImputation()");
+ }
+ sb.append("\t\t</" + TAG_IMPUTATION + ">\n");
+ return sb.toString().getBytes(ENCODING_XML);
+ }
+
+ private byte[] makeTranformTexte(String line, int nbLignesParcourues) throws UnsupportedEncodingException {
+ StringBuffer sb = new StringBuffer("\t\t<" + TAG_TEXTE + " txt2xml:LineTxt=\"" + nbLignesParcourues + "\">\n");
+ if (line.length() >= LENGTH_TEXTE - 1) {
+
+ String idAe = StringUtilities.escapeSpecialsCharactersAndAccentsToDecimal(line.substring(1, 13));
+ String idLig = StringUtilities.escapeSpecialsCharactersAndAccentsToDecimal(line.substring(13, 18));
+ String textId = StringUtilities.escapeSpecialsCharactersAndAccentsToDecimal(line.substring(18, 22));
+ String texteLigne = StringUtilities.escapeSpecialsCharactersAndAccentsToDecimal(line.substring(22, 154));
+
+ sb.append("\t\t\t<ID_AE txt2xml:TxtValue=\"").append(idAe).append("\">").append(idAe.trim()).append("</ID_AE>\n");
+ sb.append("\t\t\t<ID_LIG txt2xml:TxtValue=\"").append(idLig).append("\">").append(idLig.trim()).append("</ID_LIG>\n");
+ sb.append("\t\t\t<TEXT_ID txt2xml:TxtValue=\"").append(textId).append("\">").append(textId.trim()).append("</TEXT_ID>\n");
+ sb.append("\t\t\t<TEXT_LINE txt2xml:TxtValue=\"").append(texteLigne).append("\">").append(texteLigne.trim()).append("</TEXT_LINE>\n");
+ } else {
+ logger.debug("Pb makeTranformTexte()");
+ }
+ sb.append("\t\t</" + TAG_TEXTE + ">\n");
+ return sb.toString().getBytes(ENCODING_XML);
+ }
+
+ private byte[] makeTranformPartenaire(String line, int nbLignesParcourues) throws UnsupportedEncodingException {
+ StringBuffer sb = new StringBuffer("\t\t<" + TAG_PARTENAIRE + " txt2xml:LineTxt=\"" + nbLignesParcourues + "\">\n");
+
+ if (line.length() >= LENGTH_PARTENAIRE - 1) {
+
+ String idAe = StringUtilities.escapeSpecialsCharactersAndAccentsToDecimal(line.substring(1, 13));
+ String idLig = StringUtilities.escapeSpecialsCharactersAndAccentsToDecimal(line.substring(13, 18));
+ String partnairFct = StringUtilities.escapeSpecialsCharactersAndAccentsToDecimal(line.substring(18, 26));
+ String partnairTyp = StringUtilities.escapeSpecialsCharactersAndAccentsToDecimal(line.substring(26, 30));
+ String idFoncPartner = StringUtilities.escapeSpecialsCharactersAndAccentsToDecimal(line.substring(30, 110));
+ String idChourusPartner = StringUtilities.escapeSpecialsCharactersAndAccentsToDecimal(line.substring(110, 120));
+ String addrType = StringUtilities.escapeSpecialsCharactersAndAccentsToDecimal(line.substring(120, 121));
+ String addrOrigin = StringUtilities.escapeSpecialsCharactersAndAccentsToDecimal(line.substring(121, 122));
+ String bulding = StringUtilities.escapeSpecialsCharactersAndAccentsToDecimal(line.substring(122, 132));
+ String floor = StringUtilities.escapeSpecialsCharactersAndAccentsToDecimal(line.substring(132, 142));
+ String roomNo = StringUtilities.escapeSpecialsCharactersAndAccentsToDecimal(line.substring(142, 152));
+ String name = StringUtilities.escapeSpecialsCharactersAndAccentsToDecimal(line.substring(152, 187));
+ String city = StringUtilities.escapeSpecialsCharactersAndAccentsToDecimal(line.substring(187, 222));
+ String postlCod = StringUtilities.escapeSpecialsCharactersAndAccentsToDecimal(line.substring(222, 232));
+ String street = StringUtilities.escapeSpecialsCharactersAndAccentsToDecimal(line.substring(232, 267));
+ String houseNo = StringUtilities.escapeSpecialsCharactersAndAccentsToDecimal(line.substring(267, 277));
+ String country = StringUtilities.escapeSpecialsCharactersAndAccentsToDecimal(line.substring(277, 280));
+ String telNumber = StringUtilities.escapeSpecialsCharactersAndAccentsToDecimal(line.substring(280, 310));
+ String faxNumber = StringUtilities.escapeSpecialsCharactersAndAccentsToDecimal(line.substring(310, 340));
+ String email = StringUtilities.escapeSpecialsCharactersAndAccentsToDecimal(line.substring(340, 370));
+
+
+ sb.append("\t\t\t<ID_AE txt2xml:TxtValue=\"").append(idAe).append("\">").append(idAe.trim()).append("</ID_AE>\n");
+ if (idLig.trim().length() > 0) {
+ sb.append("\t\t\t<ID_LIG txt2xml:TxtValue=\"").append(idLig).append("\">").append(idLig.trim()).append("</ID_LIG>\n");
+ }
+ sb.append("\t\t\t<PARTNER_FCT txt2xml:TxtValue=\"").append(partnairFct).append("\">").append(partnairFct.trim()).append("</PARTNER_FCT>\n");
+
+ if (partnairTyp.trim().length() > 0) {
+ sb.append("\t\t\t<PARTNER_TYP txt2xml:TxtValue=\"").append(partnairTyp).append("\">").append(partnairTyp.trim()).append("</PARTNER_TYP>\n");
+ }
+ if (idFoncPartner.trim().length() > 0) {
+ sb.append("\t\t\t<ID_FONC_PARTNER txt2xml:TxtValue=\"").append(idFoncPartner).append("\">").append(idFoncPartner.trim()).append("</ID_FONC_PARTNER>\n");
+ }
+ if (idChourusPartner.trim().length() > 0) {
+ sb.append("\t\t\t<ID_CHORUS_PARTNER txt2xml:TxtValue=\"").append(idChourusPartner).append("\">").append(idChourusPartner.trim()).append("</ID_CHORUS_PARTNER>\n");
+ }
+
+ sb.append("\t\t\t<ADDR_TYPE txt2xml:TxtValue=\"").append(addrType).append("\">").append(addrType.trim()).append("</ADDR_TYPE>\n");
+ sb.append("\t\t\t<ADDR_ORIGIN txt2xml:TxtValue=\"").append(addrOrigin).append("\">").append(addrOrigin.trim()).append("</ADDR_ORIGIN>\n");
+
+ if (bulding.trim().length() > 0) {
+ sb.append("\t\t\t<BUILDING txt2xml:TxtValue=\"").append(bulding).append("\">").append(bulding.trim()).append("</BUILDING>\n");
+ }
+ if (floor.trim().length() > 0) {
+ sb.append("\t\t\t<FLOOR txt2xml:TxtValue=\"").append(floor).append("\">").append(floor.trim()).append("</FLOOR>\n");
+ }
+ if (roomNo.trim().length() > 0) {
+ sb.append("\t\t\t<ROOM_NO txt2xml:TxtValue=\"").append(roomNo).append("\">").append(roomNo.trim()).append("</ROOM_NO>\n");
+ }
+ if (name.trim().length() > 0) {
+ sb.append("\t\t\t<NAME txt2xml:TxtValue=\"").append(name).append("\">").append(name.trim()).append("</NAME>\n");
+ }
+ if (city.trim().length() > 0) {
+ sb.append("\t\t\t<CITY txt2xml:TxtValue=\"").append(city).append("\">").append(city.trim()).append("</CITY>\n");
+ }
+ if (postlCod.trim().length() > 0) {
+ sb.append("\t\t\t<POSTL_COD txt2xml:TxtValue=\"").append(postlCod).append("\">").append(postlCod.trim()).append("</POSTL_COD>\n");
+ }
+ if (street.trim().length() > 0) {
+ sb.append("\t\t\t<STREET txt2xml:TxtValue=\"").append(street).append("\">").append(street.trim()).append("</STREET>\n");
+ }
+ if (houseNo.trim().length() > 0) {
+ sb.append("\t\t\t<HOUSE_NO txt2xml:TxtValue=\"").append(houseNo).append("\">").append(houseNo.trim()).append("</HOUSE_NO>\n");
+ }
+ if (country.trim().length() > 0) {
+ sb.append("\t\t\t<COUNTRY txt2xml:TxtValue=\"").append(country).append("\">").append(country.trim()).append("</COUNTRY>\n");
+ }
+ if (telNumber.trim().length() > 0) {
+ sb.append("\t\t\t<TEL_NUMBR txt2xml:TxtValue=\"").append(telNumber).append("\">").append(telNumber.trim()).append("</TEL_NUMBR>\n");
+ }
+ if (faxNumber.trim().length() > 0) {
+ sb.append("\t\t\t<FAX_NUMBER txt2xml:TxtValue=\"").append(faxNumber).append("\">").append(faxNumber.trim()).append("</FAX_NUMBER>\n");
+ }
+ if (email.trim().length() > 0) {
+ sb.append("\t\t\t<E_MAIL txt2xml:TxtValue=\"").append(email).append("\">").append(email.trim()).append("</E_MAIL>\n");
+ }
+
+ } else {
+ logger.debug("Pb makeTranformPartenaire()");
+ }
+ sb.append("\t\t</" + TAG_PARTENAIRE + ">\n");
+ return sb.toString().getBytes(ENCODING_XML);
+ }
+
+ private byte[] makeTranformLineInconnue(String line, int nbLignesParcourues) throws UnsupportedEncodingException {
+ System.out.println("makeTranformLine : " + line);
+ StringBuffer sb = new StringBuffer("\t\t<" + TAG_LIGNE_INCONNUE + " txt2xml:LineTxt=\"" + nbLignesParcourues + "\">\n");
+ if (line.trim().length() != 0) {
+ sb.append("\t\t\t<LIGNE_INCONNUE txt2xml:TxtValue=\"").append(line).append("\">").append(line.trim()).append("</LIGNE_INCONNUE>\n");
+ }
+ sb.append("\t\t</" + TAG_LIGNE_INCONNUE + ">\n");
+ return sb.toString().getBytes(ENCODING_XML);
+ }
+}
--- /dev/null
+Manifest-version: 1.0
+Jar-Version: @version@
+Jar-Content: @name@
+