Chères professionnels,XSLT 2.0 - haut niveau de regroupement avec Sums (WordML)
J'ai un code XML de facturation conjointe qui a des résumés temps Carte/Timekeeper à l'intérieur. Je peux facilement regrouper par une matière spécifique, puis par Timekeeper et obtenir des totaux par matière. Mais je dois obtenir une somme de toutes les heures et des montants facturés par chronométreur pour l'ensemble de la facture commune, pas seulement par matière.
J'ai tout le code référencé ci-dessous, mais mis à jour à partir du commentaire @ Tim-C. Le lien est de transformation XSL HERE
ENTRÉE:
<?xml version="1.0" encoding="utf-8"?>
<superbill>
<invoice type="P" id="562845" number="562845">
<matters>
<matter number="014592-000007">
<timecard-summary-by-timekeeper>
<timekeeper-summary timekeeper-id="NC1">
<timekeeper>
<initials>NC1</initials>
<billingname>Nicholas J. Collins</billingname>
</timekeeper>
<timekeeper-summary-totals>
<timekeeper-summary-total type="billed">
<total type="rate">0.00</total>
<total type="hours">0.00</total>
<total type="amount">0.00</total>
<total type="adjustment">0.00</total>
</timekeeper-summary-total>
<timekeeper-summary-total type="worked">
<total type="rate">0.00</total>
<total type="hours">0.00</total>
<total type="amount">0.00</total>
<total type="adjustment">0.00</total>
</timekeeper-summary-total>
<timekeeper-summary-total type="standard">
<total type="rate">525.00</total>
<total type="hours">0.00</total>
<total type="amount">0.00</total>
<total type="adjustment">0.00</total>
</timekeeper-summary-total>
<timekeeper-summary-total type="timerate1">
<total type="rate">0.00</total>
<total type="hours">0.00</total>
<total type="amount">0.00</total>
<total type="adjustment">0.00</total>
</timekeeper-summary-total>
<timekeeper-summary-total type="timerate2">
<total type="rate">0.00</total>
<total type="hours">0.00</total>
<total type="amount">0.00</total>
<total type="adjustment">0.00</total>
</timekeeper-summary-total>
</timekeeper-summary-totals>
</timekeeper-summary>
<timekeeper-summary timekeeper-id="BJB">
<timekeeper>
<initials>BJB</initials>
<billingname>Billie J. Bob</billingname>
</timekeeper>
<timekeeper-summary-totals>
<timekeeper-summary-total type="billed">
<total type="rate">0.00</total>
<total type="hours">0.00</total>
<total type="amount">0.00</total>
<total type="adjustment">0.00</total>
</timekeeper-summary-total>
<timekeeper-summary-total type="worked">
<total type="rate">0.00</total>
<total type="hours">0.00</total>
<total type="amount">0.00</total>
<total type="adjustment">0.00</total>
</timekeeper-summary-total>
<timekeeper-summary-total type="standard">
<total type="rate">575.00</total>
<total type="hours">0.00</total>
<total type="amount">0.00</total>
<total type="adjustment">0.00</total>
</timekeeper-summary-total>
<timekeeper-summary-total type="timerate1">
<total type="rate">0.00</total>
<total type="hours">0.00</total>
<total type="amount">0.00</total>
<total type="adjustment">0.00</total>
</timekeeper-summary-total>
<timekeeper-summary-total type="timerate2">
<total type="rate">0.00</total>
<total type="hours">0.00</total>
<total type="amount">0.00</total>
<total type="adjustment">0.00</total>
</timekeeper-summary-total>
</timekeeper-summary-totals>
</timekeeper-summary>
</timecard-summary-by-timekeeper>
</matter>
<matter number="014592-000091">
<timecard-summary-by-timekeeper>
<timekeeper-summary timekeeper-id="NC1">
<timekeeper>
<initials>NC1</initials>
<billingname>Nicholas J. Collins</billingname>
</timekeeper>
<timekeeper-summary-totals>
<timekeeper-summary-total type="billed">
<total type="rate">525.00</total>
<total type="hours">1.00</total>
<total type="amount">525.00</total>
<total type="adjustment">0.00</total>
</timekeeper-summary-total>
<timekeeper-summary-total type="worked">
<total type="rate">525.00</total>
<total type="hours">1.00</total>
<total type="amount">525.00</total>
<total type="adjustment">0.00</total>
</timekeeper-summary-total>
<timekeeper-summary-total type="standard">
<total type="rate">525.00</total>
<total type="hours">1.00</total>
<total type="amount">525.00</total>
<total type="adjustment">0.00</total>
</timekeeper-summary-total>
<timekeeper-summary-total type="timerate1">
<total type="rate">525.00</total>
<total type="hours">1.00</total>
<total type="amount">525.00</total>
<total type="adjustment">0.00</total>
</timekeeper-summary-total>
<timekeeper-summary-total type="timerate2">
<total type="rate">0.00</total>
<total type="hours">1.00</total>
<total type="amount">0.00</total>
<total type="adjustment">0.00</total>
</timekeeper-summary-total>
</timekeeper-summary-totals>
</timekeeper-summary>
<timekeeper-summary timekeeper-id="BJB">
<timekeeper>
<initials>BJB</initials>
<billingname>Billie J. Bob</billingname>
</timekeeper>
<timekeeper-summary-totals>
<timekeeper-summary-total type="billed">
<total type="rate">575.00</total>
<total type="hours">11.00</total>
<total type="amount">6325.00</total>
<total type="adjustment">0.00</total>
</timekeeper-summary-total>
<timekeeper-summary-total type="worked">
<total type="rate">575.00</total>
<total type="hours">11.00</total>
<total type="amount">6325.00</total>
<total type="adjustment">0.00</total>
</timekeeper-summary-total>
<timekeeper-summary-total type="standard">
<total type="rate">575.00</total>
<total type="hours">11.00</total>
<total type="amount">6325.00</total>
<total type="adjustment">0.00</total>
</timekeeper-summary-total>
<timekeeper-summary-total type="timerate1">
<total type="rate">575.00</total>
<total type="hours">11.00</total>
<total type="amount">6325.00</total>
<total type="adjustment">0.00</total>
</timekeeper-summary-total>
<timekeeper-summary-total type="timerate2">
<total type="rate">0.00</total>
<total type="hours">11.00</total>
<total type="amount">0.00</total>
<total type="adjustment">0.00</total>
</timekeeper-summary-total>
</timekeeper-summary-totals>
</timekeeper-summary>
</timecard-summary-by-timekeeper>
</matter>
<matter number="014592-000092">
<timecard-summary-by-timekeeper>
<timekeeper-summary timekeeper-id="NC1">
<timekeeper>
<initials>NC1</initials>
<billingname>Nicholas J. Collins</billingname>
</timekeeper>
<timekeeper-summary-totals>
<timekeeper-summary-total type="billed">
<total type="rate">0.00</total>
<total type="hours">0.00</total>
<total type="amount">0.00</total>
<total type="adjustment">0.00</total>
</timekeeper-summary-total>
<timekeeper-summary-total type="worked">
<total type="rate">0.00</total>
<total type="hours">0.00</total>
<total type="amount">0.00</total>
<total type="adjustment">0.00</total>
</timekeeper-summary-total>
<timekeeper-summary-total type="standard">
<total type="rate">525.00</total>
<total type="hours">0.00</total>
<total type="amount">0.00</total>
<total type="adjustment">0.00</total>
</timekeeper-summary-total>
<timekeeper-summary-total type="timerate1">
<total type="rate">0.00</total>
<total type="hours">0.00</total>
<total type="amount">0.00</total>
<total type="adjustment">0.00</total>
</timekeeper-summary-total>
<timekeeper-summary-total type="timerate2">
<total type="rate">0.00</total>
<total type="hours">0.00</total>
<total type="amount">0.00</total>
<total type="adjustment">0.00</total>
</timekeeper-summary-total>
</timekeeper-summary-totals>
</timekeeper-summary>
<timekeeper-summary timekeeper-id="BJB">
<timekeeper>
<initials>BJB</initials>
<billingname>Billie J. Bob</billingname>
</timekeeper>
<timekeeper-summary-totals>
<timekeeper-summary-total type="billed">
<total type="rate">0.00</total>
<total type="hours">0.00</total>
<total type="amount">0.00</total>
<total type="adjustment">0.00</total>
</timekeeper-summary-total>
<timekeeper-summary-total type="worked">
<total type="rate">0.00</total>
<total type="hours">0.00</total>
<total type="amount">0.00</total>
<total type="adjustment">0.00</total>
</timekeeper-summary-total>
<timekeeper-summary-total type="standard">
<total type="rate">575.00</total>
<total type="hours">0.00</total>
<total type="amount">0.00</total>
<total type="adjustment">0.00</total>
</timekeeper-summary-total>
<timekeeper-summary-total type="timerate1">
<total type="rate">0.00</total>
<total type="hours">0.00</total>
<total type="amount">0.00</total>
<total type="adjustment">0.00</total>
</timekeeper-summary-total>
<timekeeper-summary-total type="timerate2">
<total type="rate">0.00</total>
<total type="hours">0.00</total>
<total type="amount">0.00</total>
<total type="adjustment">0.00</total>
</timekeeper-summary-total>
</timekeeper-summary-totals>
</timekeeper-summary>
</timecard-summary-by-timekeeper>
</matter>
<matter number="014592-000095">
<timecard-summary-by-timekeeper>
<timekeeper-summary timekeeper-id="NC1">
<timekeeper>
<initials>NC1</initials>
<billingname>Nicholas J. Collins</billingname>
</timekeeper>
<timekeeper-summary-totals>
<timekeeper-summary-total type="billed">
<total type="rate">525.00</total>
<total type="hours">4.00</total>
<total type="amount">2100.00</total>
<total type="adjustment">0.00</total>
</timekeeper-summary-total>
<timekeeper-summary-total type="worked">
<total type="rate">525.00</total>
<total type="hours">4.00</total>
<total type="amount">2100.00</total>
<total type="adjustment">0.00</total>
</timekeeper-summary-total>
<timekeeper-summary-total type="standard">
<total type="rate">525.00</total>
<total type="hours">4.00</total>
<total type="amount">2100.00</total>
<total type="adjustment">0.00</total>
</timekeeper-summary-total>
<timekeeper-summary-total type="timerate1">
<total type="rate">525.00</total>
<total type="hours">4.00</total>
<total type="amount">2100.00</total>
<total type="adjustment">0.00</total>
</timekeeper-summary-total>
<timekeeper-summary-total type="timerate2">
<total type="rate">0.00</total>
<total type="hours">4.00</total>
<total type="amount">0.00</total>
<total type="adjustment">0.00</total>
</timekeeper-summary-total>
</timekeeper-summary-totals>
</timekeeper-summary>
<timekeeper-summary timekeeper-id="BJB">
<timekeeper>
<initials>BJB</initials>
<billingname>Billie J. Bob</billingname>
</timekeeper>
<timekeeper-summary-totals>
<timekeeper-summary-total type="billed">
<total type="rate">0.00</total>
<total type="hours">0.00</total>
<total type="amount">0.00</total>
<total type="adjustment">0.00</total>
</timekeeper-summary-total>
<timekeeper-summary-total type="worked">
<total type="rate">0.00</total>
<total type="hours">0.00</total>
<total type="amount">0.00</total>
<total type="adjustment">0.00</total>
</timekeeper-summary-total>
<timekeeper-summary-total type="standard">
<total type="rate">575.00</total>
<total type="hours">0.00</total>
<total type="amount">0.00</total>
<total type="adjustment">0.00</total>
</timekeeper-summary-total>
<timekeeper-summary-total type="timerate1">
<total type="rate">0.00</total>
<total type="hours">0.00</total>
<total type="amount">0.00</total>
<total type="adjustment">0.00</total>
</timekeeper-summary-total>
<timekeeper-summary-total type="timerate2">
<total type="rate">0.00</total>
<total type="hours">0.00</total>
<total type="amount">0.00</total>
<total type="adjustment">0.00</total>
</timekeeper-summary-total>
</timekeeper-summary-totals>
</timekeeper-summary>
</timecard-summary-by-timekeeper>
</matter>
<matter number="014592-000096">
<timecard-summary-by-timekeeper>
<timekeeper-summary timekeeper-id="NC1">
<timekeeper>
<initials>NC1</initials>
<billingname>Nicholas J. Collins</billingname>
</timekeeper>
<timekeeper-summary-totals>
<timekeeper-summary-total type="billed">
<total type="rate">525.00</total>
<total type="hours">20.00</total>
<total type="amount">10500.00</total>
<total type="adjustment">0.00</total>
</timekeeper-summary-total>
<timekeeper-summary-total type="worked">
<total type="rate">525.00</total>
<total type="hours">20.00</total>
<total type="amount">10500.00</total>
<total type="adjustment">0.00</total>
</timekeeper-summary-total>
<timekeeper-summary-total type="standard">
<total type="rate">525.00</total>
<total type="hours">20.00</total>
<total type="amount">10500.00</total>
<total type="adjustment">0.00</total>
</timekeeper-summary-total>
<timekeeper-summary-total type="timerate1">
<total type="rate">525.00</total>
<total type="hours">20.00</total>
<total type="amount">10500.00</total>
<total type="adjustment">0.00</total>
</timekeeper-summary-total>
<timekeeper-summary-total type="timerate2">
<total type="rate">0.00</total>
<total type="hours">20.00</total>
<total type="amount">0.00</total>
<total type="adjustment">0.00</total>
</timekeeper-summary-total>
</timekeeper-summary-totals>
</timekeeper-summary>
<timekeeper-summary timekeeper-id="BJB">
<timekeeper>
<initials>BJB</initials>
<billingname>Billie J. Bob</billingname>
</timekeeper>
<timekeeper-summary-totals>
<timekeeper-summary-total type="billed">
<total type="rate">575.00</total>
<total type="hours">4.00</total>
<total type="amount">2300.00</total>
<total type="adjustment">0.00</total>
</timekeeper-summary-total>
<timekeeper-summary-total type="worked">
<total type="rate">575.00</total>
<total type="hours">4.00</total>
<total type="amount">2300.00</total>
<total type="adjustment">0.00</total>
</timekeeper-summary-total>
<timekeeper-summary-total type="standard">
<total type="rate">575.00</total>
<total type="hours">4.00</total>
<total type="amount">2300.00</total>
<total type="adjustment">0.00</total>
</timekeeper-summary-total>
<timekeeper-summary-total type="timerate1">
<total type="rate">575.00</total>
<total type="hours">4.00</total>
<total type="amount">2300.00</total>
<total type="adjustment">0.00</total>
</timekeeper-summary-total>
<timekeeper-summary-total type="timerate2">
<total type="rate">0.00</total>
<total type="hours">4.00</total>
<total type="amount">0.00</total>
<total type="adjustment">0.00</total>
</timekeeper-summary-total>
</timekeeper-summary-totals>
</timekeeper-summary>
</timecard-summary-by-timekeeper>
</matter>
</matters>
</invoice>
</superbill>
CODE DE COURANT:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml"
version="2.0">
<xsl:output method="xml" indent="yes" />
<xsl:template match="/">
<xsl:call-template name="XJ_TKSummary_02" />
</xsl:template>
<xsl:template name="XJ_TKSummary_02">
<xsl:variable name="TW" select="1440" />
<xsl:for-each-group select="//superbill/invoice/matters/matter/timecard-summary-by-timekeeper/timekeeper-summary/timekeeper" group-by="../@timekeeper-id">
<w:p>
<w:r>
<w:t><xsl:value-of select="initials" /> - <xsl:value-of select="billingname" /></w:t>
</w:r>
</w:p>
<w:p>
<w:r>
<xsl:variable name="groupTotals" select="current-group()/timekeeper-summary-totals/timekeeper-summary-total[@type='billed']/total" />
<w:t>
Hours: <xsl:value-of select="format-number(sum($groupTotals[@type='hours']), '###,##0.00')" />
for $ <xsl:value-of select="format-number(sum($groupTotals[@type='amount']), '###,##0.00')" />
</w:t>
</w:r>
</w:p>
</xsl:for-each-group>
</xsl:template>
</xsl:stylesheet>
SORTIE:
Les totaux souhaités doivent lire ...
NC1 - Nicholas J. Collins
Hours: 25.00 for $13,125.00
BJB - Billie J. Bob
Hours: 15.00 for $8,625.00
Toute aide serait appréciée.
Regard,
-Nick
Merci! Je reçois chaque chronométreur individuel, mais obtenir 0.00 pour les heures et le montant. – NCollinsTE
Juste remarqué que c'est seulement en prenant en considération le premier point. Juste testé en ajoutant un 4ème et 5ème chronométreur dans le 2ème sujet dans le XML, et il énumère seulement les 3 chronométreurs originaux et ne pas additionner les #. Quelque chose les garde à 0.00. – NCollinsTE
@NCollinsTE, pensez à modifier votre question et fournissez un exemple d'entrée complète minimale pour démontrer le problème. Lorsque j'essaie d'utiliser votre extrait actuel et que le code de Tim sur http://xsltransform.net/a9GiwC semble sortir les valeurs que vous avez décrites jusqu'à présent. –