xquery version "1.0-ml"; declare default element namespace "http://schemas.assemblee-nationale.fr/referentiel"; (: Permet de bien formatter les nombres affichés dans les amendements de crédit :) declare function local:formatNumberCredit($number, $isPLFR) { let $formattedInteger := xs:integer($number) let $numberFormatted := fn:replace(fn:format-number($formattedInteger, "#,##0"), ",", " ") return if ($isPLFR and $formattedInteger > 0) then fn:concat('+', $numberFormatted) (: Cas particulier des plfr positif +1 000 000 :) else $numberFormatted }; (: Récupération du HTML des amendements de crédit :) declare function local:getAmendementCreditHtml($amdt) { let $amdtCredit := if ($amdt/corps/contenuAuteur/dispositifAmdtCreditPLF) then ($amdt/corps/contenuAuteur/dispositifAmdtCreditPLF) else ($amdt/corps/contenuAuteur/dispositifAmdtCreditPLFR) let $CPEgalAE := $amdtCredit/cpEgalAe let $html := if ($amdt//supplementaire) (: PLFR :) then ( let $xml :=

Modifier ainsi les autorisations d'engagement et les crédits de paiement :

{for $programme in $amdtCredit/listeProgrammes/programme return (, for $ligneCredit in $programme/lignesCredits/ligneCredit return ) }
(en euros)
Programmes Autorisations d’engagement suppl. ouvertes Autorisations d’engagement annulées Crédits de paiement suppl. ouverts Crédits de paiement annulés
{ fn:normalize-space($programme/libelle/fn:string()), switch ($programme/action) case 'suppression' return (ligne supprimée) case 'création' (: Création :) return (ligne nouvelle) default return () } {local:formatNumberCredit($programme/autorisationEngagementSupplementaire/fn:string(), fn:true())} {local:formatNumberCredit($programme/autorisationEngagementAnnule/fn:string(), fn:true())} {local:formatNumberCredit($programme/creditPaiementSupplementaire/fn:string(), fn:true())} {local:formatNumberCredit($programme/creditPaiementAnnule/fn:string(), fn:true())}
{ fn:normalize-space($ligneCredit/libelle/fn:string()), switch ($ligneCredit/action) case 'suppression' return (ligne supprimée) case 'création' (: Création :) return (ligne nouvelle) default return () } {local:formatNumberCredit($ligneCredit/autorisationEngagementSupplementaire/fn:string(), fn:true())} {local:formatNumberCredit($ligneCredit/autorisationEngagementAnnule/fn:string(), fn:true())} {local:formatNumberCredit($ligneCredit/creditPaiementSupplementaire/fn:string(), fn:true())} {local:formatNumberCredit($ligneCredit/creditPaiementAnnule/fn:string(), fn:true())}
TOTAUX {local:formatNumberCredit($amdtCredit/totalAE/supplementaire/fn:string(), fn:true())} {local:formatNumberCredit($amdtCredit/totalAE/annule/fn:string(), fn:true())} {local:formatNumberCredit($amdtCredit/totalCP/supplementaire/fn:string(), fn:true())} {local:formatNumberCredit($amdtCredit/totalCP/annule/fn:string(), fn:true())}
SOLDE {local:formatNumberCredit($amdtCredit/totalAE/solde/fn:string(), fn:true())} {local:formatNumberCredit($amdtCredit/totalCP/solde/fn:string(), fn:true())}
(: On renvoie le html sous format texte et non xml :) return xdmp:quote($xml) ) (: PLF :) else ( (: Le total doit être calculé pour les PLF :) let $totalAEPositif := fn:sum(for $prog in $amdtCredit/listeProgrammes/programme return if ($prog/autorisationEngagement > 0) then ($prog/autorisationEngagement) else (0)) let $totalAENegatif := fn:sum(for $prog in $amdtCredit/listeProgrammes/programme return if ($prog/autorisationEngagement < 0) then (fn:abs($prog/autorisationEngagement)) else (0)) let $totalCPPositif := fn:sum(for $prog in $amdtCredit/listeProgrammes/programme return if ($prog/creditPaiement > 0) then ($prog/creditPaiement) else (0)) let $totalCPNegatif := fn:sum(for $prog in $amdtCredit/listeProgrammes/programme return if ($prog/creditPaiement < 0) then (fn:abs($prog/creditPaiement)) else (0)) let $AEHtmlPLF := (: Autorisation d'engagement :) if ($totalAEPositif != 0 or $totalAENegatif != 0 or ($totalCPPositif = 0 and $totalCPNegatif = 0)) then (

{if ($CPEgalAE eq fn:false()) then ( if ($totalCPPositif != 0 or $totalCPNegatif != 0) then ("I. Modifier ainsi les autorisations d'engagement et les crédits de paiement :") else ("Modifier ainsi les autorisations d'engagement et les crédits de paiement :") ) else ("Modifier ainsi les autorisations d'engagement et les crédits de paiement :")}

, {for $programme in $amdtCredit/listeProgrammes/programme return (, for $ligneCredit in $programme/lignesCredits/ligneCredit return ) }
(en euros)
Programmes + -
{ fn:normalize-space($programme/libelle/fn:string()), switch ($programme/action) case 'suppression' return (ligne supprimée) case 'création' (: Création :) return (ligne nouvelle) default return () } { if ($programme/autorisationEngagement > 0) then (local:formatNumberCredit(fn:abs($programme/autorisationEngagement), fn:false())) else (0) } { if ($programme/autorisationEngagement < 0) then (local:formatNumberCredit(fn:abs($programme/autorisationEngagement), fn:false())) else (0) }
{ fn:normalize-space($ligneCredit/libelle/fn:string()), switch ($ligneCredit/action) case 'suppression' return (ligne supprimée) case 'création' (: Création :) return (ligne nouvelle) default return () } { if ($ligneCredit/autorisationEngagement > 0) then (local:formatNumberCredit(fn:abs($ligneCredit/autorisationEngagement), fn:false())) else (0) } { if ($ligneCredit/autorisationEngagement < 0) then (local:formatNumberCredit(fn:abs($ligneCredit/autorisationEngagement), fn:false())) else (0) }
TOTAUX {local:formatNumberCredit($totalAEPositif, fn:false())} {local:formatNumberCredit($totalAENegatif, fn:false())}
SOLDE {local:formatNumberCredit($amdtCredit/soldeAE/fn:string(), fn:false())}
) else () let $CPHtmlPLF := (: crédit de paiement :) if ($CPEgalAE eq fn:false() and ($totalCPPositif != 0 or $totalCPNegatif != 0)) then (

{if ($totalAEPositif != 0 or $totalAENegatif != 0) then ("II. Modifier ainsi les crédits de paiement :") else ("Modifier ainsi les crédits de paiement :")}

, {for $programme in $amdtCredit/listeProgrammes/programme return (, for $ligneCredit in $programme/lignesCredits/ligneCredit return ) }
(en euros)
Programmes + -
{ fn:normalize-space($programme/libelle/fn:string()), switch ($programme/action) case 'suppression' return (ligne supprimée) case 'création' (: Création :) return (ligne nouvelle) default return () } { if ($programme/creditPaiement > 0) then (local:formatNumberCredit(fn:abs($programme/creditPaiement), fn:false())) else (0) } { if ($programme/creditPaiement < 0) then (local:formatNumberCredit(fn:abs($programme/creditPaiement), fn:false())) else (0) }
{ fn:normalize-space($ligneCredit/libelle/fn:string()), switch ($ligneCredit/action) case 'suppression' return (ligne supprimée) case 'création' (: Création :) return (ligne nouvelle) default return () } { if ($ligneCredit/creditPaiement > 0) then (local:formatNumberCredit(fn:abs($ligneCredit/creditPaiement), fn:false())) else (0) } { if ($ligneCredit/creditPaiement < 0) then (local:formatNumberCredit(fn:abs($ligneCredit/creditPaiement), fn:false())) else (0) }
TOTAUX {local:formatNumberCredit($totalCPPositif, fn:false())} {local:formatNumberCredit($totalCPNegatif, fn:false())}
SOLDE {local:formatNumberCredit($amdtCredit/soldeCP/fn:string(), fn:false())}
) else () let $xml :=
{$AEHtmlPLF} {$CPHtmlPLF}
(: On renvoie le html sous format texte et non xml :) return xdmp:quote($xml) ) return fn:replace($html, ' xmlns="http://schemas.assemblee-nationale.fr/referentiel"', '') }; local:getAmendementCreditHtml(//uid[. = ("AMANR5L15PO717460B3360P2D1N000415")]/..), local:getAmendementCreditHtml(//uid[. = ("AMANR5L15PO717460B3522P0D1N000306")]/..)