Subject: [xsl] Re: How to Calculate Running Total using Variable within FOR-LOOP? From: "Dimitre Novatchev" <dnovatchev@xxxxxxxxx> Date: Fri, 5 Dec 2003 21:05:43 +0100 |
Bill, Isn't it possible to provide the minimal possible example (e.g. just a few lines of xml) that still demonstrates your problem? Would it be also possible to use lowercase attribute names and to explain how the subtotals and totals must be produced ? ===== Cheers, Dimitre Novatchev. http://fxsl.sourceforge.net/ -- the home of FXSL "Ficke, Bill" <Bill.Ficke@xxxxxxxxxxxxxxxx> wrote in message news:92EFB80E551BD511B39500D0B7B0CDCC0A993F85@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx > Posting the xml as requested....Hopefully, my dilemma will become apparent. > > Thanks to everyone who responded from last night's message. I look forward > to your responses to this message. > > <xml xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882" > xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" > xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema"> > <s:Schema id="RowsetSchema"> > <s:ElementType name="row" content="eltOnly" > rs:CommandTimeout="30" rs:updatable="true" rs:ReshapeName="batch"> > <s:AttributeType name="RB_ID" rs:number="1" > rs:writeunknown="true" rs:basetable="RP_BATCH_VW" rs:basecolumn="OBJ_ID"> > <s:datatype dt:type="string" rs:dbtype="str" > dt:maxLength="36" rs:maybenull="false"/> > </s:AttributeType> > <s:AttributeType name="RB_NAME" rs:number="2" > rs:nullable="true" rs:writeunknown="true" rs:basetable="RP_BATCH_VW" > rs:basecolumn="OBJ_NAME"> > <s:datatype dt:type="string" rs:dbtype="str" > dt:maxLength="100"/> > </s:AttributeType> > <s:AttributeType name="RB_START_DATE" rs:number="3" > rs:nullable="true" rs:writeunknown="true" rs:basetable="RP_BATCH_VW" > rs:basecolumn="BEGINDATE"> > <s:datatype dt:type="string" rs:dbtype="str" > dt:maxLength="1500"/> > </s:AttributeType> > <s:AttributeType name="RB_END_DATE" rs:number="4" > rs:nullable="true" rs:writeunknown="true" rs:basetable="RP_BATCH_VW" > rs:basecolumn="ENDDATE"> > <s:datatype dt:type="string" rs:dbtype="str" > dt:maxLength="1500"/> > </s:AttributeType> > <s:AttributeType name="CO_ID" rs:number="5" > rs:writeunknown="true" rs:basetable="RP_COMPANY_VW" rs:basecolumn="OBJ_ID"> > <s:datatype dt:type="string" rs:dbtype="str" > dt:maxLength="36" rs:maybenull="false"/> > </s:AttributeType> > <s:AttributeType name="CO_NAME" rs:number="6" > rs:nullable="true" rs:writeunknown="true" rs:basetable="RP_COMPANY_VW" > rs:basecolumn="OBJ_NAME"> > <s:datatype dt:type="string" rs:dbtype="str" > dt:maxLength="100"/> > </s:AttributeType> > <s:AttributeType name="CO_ADDRESS" rs:number="7" > rs:nullable="true" rs:writeunknown="true" rs:basetable="RP_COMPANY_VW" > rs:basecolumn="OBJ_DESC"> > <s:datatype dt:type="string" rs:dbtype="str" > dt:maxLength="300"/> > </s:AttributeType> > <s:ElementType name="b_children" content="eltOnly" > rs:CommandTimeout="30" rs:updatable="true" rs:ReshapeName="b_children" > rs:relation="010000000100000000000000"> > <s:AttributeType name="REL_PARENT" > rs:number="1" rs:nullable="true" rs:writeunknown="true" > rs:basetable="RP_RELS_DT" rs:basecolumn="REL_PARENT"> > <s:datatype dt:type="string" > rs:dbtype="str" dt:maxLength="36"/> > </s:AttributeType> > <s:AttributeType name="REL_CHILD" > rs:number="2" rs:nullable="true" rs:writeunknown="true" > rs:basetable="RP_RELS_DT" rs:basecolumn="REL_CHILD"> > <s:datatype dt:type="string" > rs:dbtype="str" dt:maxLength="36"/> > </s:AttributeType> > <s:ElementType name="rr" content="eltOnly" > rs:CommandTimeout="30" rs:updatable="true" rs:ReshapeName="rr" rs:relation=" > 020000000100000000000000"> > <s:AttributeType name="RR_ID" > rs:number="1" rs:writeunknown="true" rs:basetable="RP_RESOURCEREPORT_VW" > rs:basecolumn="OBJ_ID"> > <s:datatype dt:type="string" > rs:dbtype="str" dt:maxLength="36" rs:maybenull="false"/> > </s:AttributeType> > <s:AttributeType name="RR_NAME" > rs:number="2" rs:nullable="true" rs:writeunknown="true" > rs:basetable="RP_RESOURCEREPORT_VW" rs:basecolumn="OBJ_NAME"> > <s:datatype dt:type="string" > rs:dbtype="str" dt:maxLength="100"/> > </s:AttributeType> > <s:AttributeType > name="RR_ISAPPROVED" rs:number="3" rs:nullable="true" rs:writeunknown="true" > rs:basetable="RP_RESOURCEREPORT_VW" rs:basecolumn="ISAPPROVED"> > <s:datatype dt:type="string" > rs:dbtype="str" dt:maxLength="1500"/> > </s:AttributeType> > <s:AttributeType > name="RR_APPROVED_DATE" rs:number="4" rs:nullable="true" > rs:writeunknown="true" rs:basetable="RP_RESOURCEREPORT_VW" > rs:basecolumn="DATEAPPROVED"> > <s:datatype dt:type="string" > rs:dbtype="str" dt:maxLength="1500"/> > </s:AttributeType> > <s:AttributeType name="RR_NOTES" > rs:number="5" rs:nullable="true" rs:writeunknown="true" > rs:basetable="RP_RESOURCEREPORT_VW" rs:basecolumn="NOTES"> > <s:datatype dt:type="string" > rs:dbtype="str" dt:maxLength="1500"/> > </s:AttributeType> > <s:AttributeType > name="RR_PAYMENT_TYPE" rs:number="6" rs:nullable="true" > rs:writeunknown="true" rs:basetable="RP_RESOURCEREPORT_VW" > rs:basecolumn="PMTTYPE"> > <s:datatype dt:type="string" > rs:dbtype="str" dt:maxLength="1500"/> > </s:AttributeType> > <s:AttributeType name="WR_NAME" > rs:number="7" rs:nullable="true" rs:writeunknown="true" > rs:basetable="RP_WORKREQUEST_VW" rs:basecolumn="OBJ_NAME"> > <s:datatype dt:type="string" > rs:dbtype="str" dt:maxLength="100"/> > </s:AttributeType> > <s:AttributeType name="WR_ADDRESS" > rs:number="8" rs:nullable="true" rs:writeunknown="true" > rs:basetable="RP_WORKREQUEST_VW" rs:basecolumn="ADDRESS"> > <s:datatype dt:type="string" > rs:dbtype="str" dt:maxLength="1500"/> > </s:AttributeType> > <s:ElementType name="rr_children" > content="eltOnly" rs:CommandTimeout="30" rs:updatable="true" > rs:ReshapeName="rr_children" rs:relation="010000000100000000000000"> > <s:AttributeType > name="REL_PARENT" rs:number="1" rs:nullable="true" rs:writeunknown="true" > rs:basetable="RP_RELS_DT" rs:basecolumn="REL_PARENT"> > <s:datatype > dt:type="string" rs:dbtype="str" dt:maxLength="36"/> > </s:AttributeType> > <s:AttributeType > name="REL_CHILD" rs:number="2" rs:nullable="true" rs:writeunknown="true" > rs:basetable="RP_RELS_DT" rs:basecolumn="REL_CHILD"> > <s:datatype > dt:type="string" rs:dbtype="str" dt:maxLength="36"/> > </s:AttributeType> > <s:ElementType name="rd" > content="eltOnly" rs:CommandTimeout="30" rs:updatable="true" > rs:ReshapeName="rd" rs:relation="020000000400000000000000"> > <s:AttributeType > name="UNITOFMEASURE" rs:number="1" rs:nullable="true" rs:writeunknown="true" > rs:basetable="RP_RESOURCECODE_VW" rs:basecolumn="UNITOFMEASURE"> > <s:datatype > dt:type="string" rs:dbtype="str" dt:maxLength="1500"/> > </s:AttributeType> > <s:AttributeType > name="BIDUNITNAME" rs:number="2" rs:nullable="true" rs:writeunknown="true" > rs:basetable="RP_BUTYPE_VW" rs:basecolumn="OBJ_NAME"> > <s:datatype > dt:type="string" rs:dbtype="str" dt:maxLength="100"/> > </s:AttributeType> > <s:AttributeType > name="RESOURCECODENAME" rs:number="3" rs:nullable="true" > rs:writeunknown="true" rs:basetable="RP_RESOURCECODE_VW" > rs:basecolumn="OBJ_NAME"> > <s:datatype > dt:type="string" rs:dbtype="str" dt:maxLength="100"/> > </s:AttributeType> > <s:AttributeType > name="OBJ_ID" rs:number="4" rs:writeunknown="true" > rs:basetable="RP_RESOURCEDETAIL_VW" rs:basecolumn="OBJ_ID"> > <s:datatype > dt:type="string" rs:dbtype="str" dt:maxLength="36" rs:maybenull="false"/> > </s:AttributeType> > <s:AttributeType > name="CHARGECODE" rs:number="5" rs:nullable="true" rs:writeunknown="true" > rs:basetable="RP_RESOURCEDETAIL_VW" rs:basecolumn="CHARGECODE"> > <s:datatype > dt:type="string" rs:dbtype="str" dt:maxLength="1500"/> > </s:AttributeType> > <s:AttributeType > name="ACTUALCOST" rs:number="6" rs:nullable="true"> > <s:datatype > dt:type="string" rs:dbtype="str" dt:maxLength="13"/> > </s:AttributeType> > <s:AttributeType > name="QUANTITY" rs:number="7" rs:nullable="true" rs:writeunknown="true" > rs:basetable="RP_RESOURCEDETAIL_VW" rs:basecolumn="QUANTITY"> > <s:datatype > dt:type="string" rs:dbtype="str" dt:maxLength="1500"/> > </s:AttributeType> > <s:AttributeType > name="QUALIFIERCODE" rs:number="8" rs:nullable="true" rs:writeunknown="true" > rs:basetable="RP_RESOURCEDETAIL_VW" rs:basecolumn="QUALIFIERCODE"> > <s:datatype > dt:type="string" rs:dbtype="str" dt:maxLength="1500"/> > </s:AttributeType> > <s:AttributeType > name="TOTALCOST" rs:number="9" rs:nullable="true"> > <s:datatype > dt:type="string" rs:dbtype="str" dt:maxLength="13"/> > </s:AttributeType> > <s:extends > type="rs:rowbase"/> > </s:ElementType> > <s:AttributeType > name="ROWID" rs:number="4" rs:nullable="true" rs:rowid="true" > rs:basetable="RP_RELS_DT" rs:basecolumn="ROWID" rs:keycolumn="true" > rs:hidden="true" rs:autoincrement="true"> > <s:datatype > dt:type="string" rs:dbtype="str" dt:maxLength="18" rs:fixedlength="true"/> > </s:AttributeType> > <s:extends > type="rs:rowbase"/> > </s:ElementType> > <s:extends type="rs:rowbase"/> > </s:ElementType> > <s:AttributeType name="ROWID" rs:number="4" > rs:nullable="true" rs:rowid="true" rs:basetable="RP_RELS_DT" > rs:basecolumn="ROWID" rs:keycolumn="true" rs:hidden="true" > rs:autoincrement="true"> > <s:datatype dt:type="string" > rs:dbtype="str" dt:maxLength="18" rs:fixedlength="true"/> > </s:AttributeType> > <s:extends type="rs:rowbase"/> > </s:ElementType> > <s:extends type="rs:rowbase"/> > </s:ElementType> > </s:Schema> > <rs:data> > <z:row RB_ID="ECF91362-716C-4923-A245-F5D13817E36B" > RB_NAME="PIK-100-1" RB_START_DATE="2003-11-21T00:00:00" > RB_END_DATE="2001-12-31" CO_ID="9B84EFF4-2534-46A3-B635-CF43CBEB7695" > CO_NAME="Company Name" CO_ADDRESS="Company Address"> > <b_children > REL_PARENT="ECF91362-716C-4923-A245-F5D13817E36B" > REL_CHILD="C0CD4453-9E48-4AC9-836C-38C5FA35C4DF" ROWID="AAAA4yAACAAAXq4AAN"> > <rr > RR_ID="C0CD4453-9E48-4AC9-836C-38C5FA35C4DF" RR_NAME="PIK-2415-1" > RR_ISAPPROVED="-1" RR_PAYMENT_TYPE="0" WR_NAME="2415" WR_ADDRESS="4411 > Meinardus Dr "> > <rr_children > REL_PARENT="C0CD4453-9E48-4AC9-836C-38C5FA35C4DF" > REL_CHILD="3EBC74F2-413D-4FBA-AADC-2B7220786FE4" ROWID="AAAA4yAACAAAXqtAAZ"> > <rd UNITOFMEASURE="HR" > BIDUNITNAME="Labor" RESOURCECODENAME="1.04 OH" > OBJ_ID="3EBC74F2-413D-4FBA-AADC-2B7220786FE4" ACTUALCOST=" 44.16" > QUANTITY="8" QUALIFIERCODE="1" TOTALCOST=" 353.28"/> > </rr_children> > <rr_children > REL_PARENT="C0CD4453-9E48-4AC9-836C-38C5FA35C4DF" > REL_CHILD="EC67AF77-335B-4664-A2A7-2D9950D3CBAF" ROWID="AAAA4yAACAAAXqtAAb"> > <rd UNITOFMEASURE="HR" > BIDUNITNAME="Labor" RESOURCECODENAME="1.06 OH" > OBJ_ID="EC67AF77-335B-4664-A2A7-2D9950D3CBAF" ACTUALCOST=" 28.52" > QUANTITY="13" QUALIFIERCODE="1" TOTALCOST=" 370.76"/> > </rr_children> > <rr_children > REL_PARENT="C0CD4453-9E48-4AC9-836C-38C5FA35C4DF" > REL_CHILD="73F70DC3-2E89-4E51-B303-8280FC723780" ROWID="AAAA4yAACAAAXqtAAd"> > <rd UNITOFMEASURE="HR" > BIDUNITNAME="Equipment" RESOURCECODENAME="2.09 OH" > OBJ_ID="73F70DC3-2E89-4E51-B303-8280FC723780" ACTUALCOST=" 1.80" > QUANTITY="8" QUALIFIERCODE="1" TOTALCOST=" 14.40"/> > </rr_children> > <rr_children > REL_PARENT="C0CD4453-9E48-4AC9-836C-38C5FA35C4DF" > REL_CHILD="6FF29A2A-4FC0-4E49-85F7-5D6BC4AE3F2F" ROWID="AAAA4yAACAAAXqtAAf"> > <rd UNITOFMEASURE="HR" > BIDUNITNAME="Equipment" RESOURCECODENAME="2.15 OH" > OBJ_ID="6FF29A2A-4FC0-4E49-85F7-5D6BC4AE3F2F" ACTUALCOST=" 6.90" > QUANTITY="8" QUALIFIERCODE="1" TOTALCOST=" 55.20"/> > </rr_children> > <rr_children > REL_PARENT="C0CD4453-9E48-4AC9-836C-38C5FA35C4DF" > REL_CHILD="698C6196-3F52-453F-BF55-98CF4C7C36AC" ROWID="AAAA4yAACAAAXqtAAh"> > <rd UNITOFMEASURE="HR" > BIDUNITNAME="Equipment" RESOURCECODENAME="2.17 OH" > OBJ_ID="698C6196-3F52-453F-BF55-98CF4C7C36AC" ACTUALCOST=" 16.10" > QUANTITY="8" QUALIFIERCODE="1" TOTALCOST=" 128.80"/> > </rr_children> > </rr> > </b_children> > <b_children > REL_PARENT="ECF91362-716C-4923-A245-F5D13817E36B" > REL_CHILD="9F8828D5-1EDF-4202-B750-5B249EB9F714" ROWID="AAAA4yAACAAAXq4AAP"> > <rr > RR_ID="9F8828D5-1EDF-4202-B750-5B249EB9F714" RR_NAME="PIK-2486-2" > RR_ISAPPROVED="-1" RR_NOTES="INSTALL 40' POLE ON EAST SIDE" > RR_PAYMENT_TYPE="2" WR_NAME="2486" WR_ADDRESS="9036 N Lamar Blvd "> > <rr_children > REL_PARENT="9F8828D5-1EDF-4202-B750-5B249EB9F714" > REL_CHILD="2829B95D-E6BB-4DC8-9B17-A55F4D3BBBC4" ROWID="AAAA4yAACAAAXqoAAN"> > <rd UNITOFMEASURE="HR" > BIDUNITNAME="Labor" RESOURCECODENAME="1.01 OH" > OBJ_ID="2829B95D-E6BB-4DC8-9B17-A55F4D3BBBC4" ACTUALCOST=" 24.84" > QUANTITY="8" QUALIFIERCODE="1" TOTALCOST=" 198.72"/> > </rr_children> > <rr_children > REL_PARENT="9F8828D5-1EDF-4202-B750-5B249EB9F714" > REL_CHILD="BD29808F-0604-40AB-BA0F-C0F0D63CD87C" ROWID="AAAA4yAACAAAXqoAAP"> > <rd UNITOFMEASURE="HR" > BIDUNITNAME="Labor" RESOURCECODENAME="1.06 OH" > OBJ_ID="BD29808F-0604-40AB-BA0F-C0F0D63CD87C" ACTUALCOST=" 28.52" > QUANTITY="8" QUALIFIERCODE="1" TOTALCOST=" 228.16"/> > </rr_children> > <rr_children > REL_PARENT="9F8828D5-1EDF-4202-B750-5B249EB9F714" > REL_CHILD="3650606F-36A9-4C0F-BE68-2716053E695C" ROWID="AAAA4yAACAAAXqoAAR"> > <rd UNITOFMEASURE="HR" > BIDUNITNAME="Equipment" RESOURCECODENAME="2.02 OH" > OBJ_ID="3650606F-36A9-4C0F-BE68-2716053E695C" ACTUALCOST=" 32.00" > QUANTITY="8" QUALIFIERCODE="1" TOTALCOST=" 256.00"/> > </rr_children> > <rr_children > REL_PARENT="9F8828D5-1EDF-4202-B750-5B249EB9F714" > REL_CHILD="B164FAC0-C80C-4D0D-A823-C8F1AD3C215F" ROWID="AAAA4yAACAAAXqoAAT"> > <rd UNITOFMEASURE="EA" > BIDUNITNAME="Unit" RESOURCECODENAME="17.09 OH" > OBJ_ID="B164FAC0-C80C-4D0D-A823-C8F1AD3C215F" ACTUALCOST=" 298.98" > QUANTITY="1" QUALIFIERCODE="1" TOTALCOST=" 298.98"/> > </rr_children> > <rr_children > REL_PARENT="9F8828D5-1EDF-4202-B750-5B249EB9F714" > REL_CHILD="E473005F-123D-49A1-87D9-C8D3439AD1F4" ROWID="AAAA4yAACAAAXqoAAV"> > <rd UNITOFMEASURE="EA" > BIDUNITNAME="Unit" RESOURCECODENAME="19.04 OH" > OBJ_ID="E473005F-123D-49A1-87D9-C8D3439AD1F4" ACTUALCOST=" 145.20" > QUANTITY="1" QUALIFIERCODE="1" TOTALCOST=" 145.20"/> > </rr_children> > <rr_children > REL_PARENT="9F8828D5-1EDF-4202-B750-5B249EB9F714" > REL_CHILD="C05C6B74-DE96-40A0-83F2-B88CF47F80E3" ROWID="AAAA4yAACAAAXqoAAX"> > <rd UNITOFMEASURE="EA" > BIDUNITNAME="Unit" RESOURCECODENAME="19.06 OH" > OBJ_ID="C05C6B74-DE96-40A0-83F2-B88CF47F80E3" ACTUALCOST=" 106.92" > QUANTITY="1" QUALIFIERCODE="1" TOTALCOST=" 106.92"/> > </rr_children> > <rr_children > REL_PARENT="9F8828D5-1EDF-4202-B750-5B249EB9F714" > REL_CHILD="D4AC051D-A911-4899-B52D-FFAC2288B6F4" ROWID="AAAA4yAACAAAXqoAAZ"> > <rd UNITOFMEASURE="HR" > BIDUNITNAME="Equipment" RESOURCECODENAME="2.18 OH" > OBJ_ID="D4AC051D-A911-4899-B52D-FFAC2288B6F4" ACTUALCOST=" 23.00" > QUANTITY="4" QUALIFIERCODE="1.25" TOTALCOST=" 115.00"/> > </rr_children> > <rr_children > REL_PARENT="9F8828D5-1EDF-4202-B750-5B249EB9F714" > REL_CHILD="6A15FF13-7E5C-4CF2-8144-1B8EC28E3783" ROWID="AAAA4yAACAAAXqoAAb"> > <rd UNITOFMEASURE="EA" > BIDUNITNAME="Unit" RESOURCECODENAME="5.02 OH" > OBJ_ID="6A15FF13-7E5C-4CF2-8144-1B8EC28E3783" ACTUALCOST=" 640.58" > QUANTITY="1" QUALIFIERCODE="1" TOTALCOST=" 640.58"/> > </rr_children> > </rr> > </b_children> > </z:row> > </rs:data> > </xml> > > -----Original Message----- > From: Ficke, Bill > Sent: Thursday, December 04, 2003 6:17 PM > To: 'XSL-List@xxxxxxxxxxxxxxxxxxxxxx' > Subject: XSL: How to Calculate Running Total using Variable within > FOR-LOOP? > > > I suspect I'm going about this in the wrong way. Please help me. If some > kind soul were to take special interest, I will gladly email an xml file to > accompany the included xsl. > > I'm performing an outer for-loop for a report header and an inner for-loop > to display report details. Within the inner loop, I'm calculating 4 > variables (HOURLY, LESSER, SPECIALTY, SAVINGS) which successively evaluate > each other to get thier results, and eventually calcuate a GRANDTOTAL in > each inner for-loop. (words in CAPS represent appropriate template names). > > Then, I need to calculate the BATCHTOTAL based on the GRANDTOTAL variables > displayed in each inner for-loop. > > Essentially, it goes: <loop> - report header - <inner loop> - report details > - </inner loop> - series of subtotals based on report details (HOURLY, > LESSER, SPECIALTY, SAVINGS) - report total (GRANDTOTAL) </loop> - sum(report > totals) to accomodate multiple reports (BATCHTOTAL). > > PROBLEM: I can't figure out how to calculate the BATCHTOTAL. I think it's > because with each loop, the GRANDTOTAL variable goes out of scope. > > Thanks to anyone who will help. > > Bill > > Here is some xsl code to illustrate my efforts. The templates of interest > include: HOURLY, LESSER, SPECIALTY, SAVINGS, BATCHTOTAL. > > <?xml version="1.0" encoding="UTF-8"?> > <xsl:stylesheet version="1.0" > xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > xmlns:fo="http://www.w3.org/1999/XSL/Format" > xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882" > xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" > xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema"> > > <!-- StyleSheet: CI200PreBillReport.xsl > Bill Ficke 09/02/2003 --> > > <!-- Output is XHTML --> > <xsl:output method="xml" omit-xml-declaration="yes" indent="no" > encoding="ISO-8859-1"/> > <!-- the Report Header of the output table --> > <xsl:param name="report_header">Batch Detail Report</xsl:param> > <!-- the ID of the output table --> > <xsl:param name="table_id">ms_table</xsl:param> > <!-- parm to change stylesheet reference --> > <xsl:param > name="style_sheet_ref">../../../StyleFiles/D1MasterCSS.css</xsl:param> > <!-- style class assigned to the table --> > <xsl:param name="tbl_class"/> > <!-- style class assigned to the table header cells --> > <xsl:param name="hdr_cell_class"/> > <!-- style class assigned to the table cells --> > <xsl:param name="cell_class"/> > <!-- init the running total var --> > <xsl:param name="running-total" select="0"/> > > > > <!-- match root --> > <xsl:template match="/"> > <html> > <head> > <title></title> > <link rel="stylesheet" type="text/css" > href="{$style_sheet_ref}"></link> > </head> > <body> > <xsl:for-each > select="/xml/rs:data/z:row[@RB_ID != > 'B478EB94-F6D0-4133-A796-6718BF854B1C']"> > <xsl:call-template > name="PreBillHeader"/> > <xsl:call-template > name="PreBillBody"/> > </xsl:for-each> > > </body> > </html> > </xsl:template> > <xsl:template name="PreBillHeader"> > <div id="cia_header"> > <table border="0" width="90%"> > <tbody> > <tr> > <td class="cia_reportname"> > <xsl:value-of > select="$report_header"/> > </td> > </tr> > <tr> > <td class="cia_company"> > <xsl:value-of > select="./@CO_NAME"/> > </td> > </tr> > <tr> > <td> > <xsl:value-of > select="./@CO_ADDRESS"/> > </td> > </tr> > <tr> > <td/> > </tr> > <tr> > <td> > <table border="0" > width="100%"> > <tbody> > <tr> > > > <td>Batch:</td> > > <td class="cia_reportdata"> > > <xsl:value-of select="./@RB_NAME"/> > > </td> > > <td>Batch Start Date:</td> > > <td class="cia_reportdata"> > > <xsl:value-of select="translate(./@RB_START_DATE, 'T', ' ')"/> > > </td> > > </tr> > <tr> > > <td></td> > > <td class="cia_reportdata"> > > > > </td> > > <td>Batch End Date:</td> > > <td class="cia_reportdata"> > > <xsl:value-of select="translate(./@RB_END_DATE, 'T', ' ')"/> > > </td> > > </tr> > </tbody> > </table> > </td> > </tr> > </tbody> > </table> > </div> > <br/> > </xsl:template> > > <xsl:template name="PreBillBody"> > <div id="cia_header"> > <table border="0" width="90%"> > <tbody> > > <xsl:for-each select="./b_children/rr"> > <tr> > <td>Pre-Billing > Report:</td> > <td colspan="2" > class="cia_reportdata"> > > <xsl:value-of select="./@RR_NAME"/> > </td> > <td>Job > Address:</td> > <td colspan="2" > class="cia_reportdata"> > > <xsl:value-of select="./@WR_ADDRESS"/> > </td> > </tr> > <tr> > <td > class="cia_total">Bid Unit</td> > <td > class="cia_total">BU Type</td> > <td > class="cia_total"></td> > <td > class="cia_total" align="right">Price</td> > <td > class="cia_total" align="right">Qty</td> > <td > class="cia_total" align="right">Total $</td> > </tr> > <xsl:for-each select="./rr_children/rd"> > <tr class="cia_reportdata"> > <td> > <xsl:value-of select="@RESOURCECODENAME"/> > </td> > <td> > <xsl:value-of select="@BIDUNITNAME"/> > </td> > <td> > <!--<xsl:value-of select="@UNITOFMEASURE"/>--> > </td> > <td align="right"> > <xsl:value-of select="format-number(@ACTUALCOST, '$#,##0.00')"/> > </td> > <td align="right"> > <xsl:value-of select="@QUANTITY"/> > </td> > <td align="right"> > <xsl:value-of select="format-number(@TOTALCOST, '$#,##0.00')"/> > </td> > </tr> > </xsl:for-each> > > <xsl:variable name="Hourly"> > <xsl:call-template name="Hourly"></xsl:call-template> > </xsl:variable> > > <xsl:variable name="Lesser"> > <xsl:call-template name="Lesser"> > <xsl:with-param name="Hourly" select="$Hourly"/> > </xsl:call-template> > </xsl:variable> > > <xsl:variable name="Savings"> > <xsl:call-template name="Savings"> > <xsl:with-param name="Hourly" select="$Hourly"/> > </xsl:call-template> > </xsl:variable> > > <xsl:variable name="Specialty"> > <xsl:call-template name="Specialty"></xsl:call-template> > </xsl:variable> > > <xsl:variable name="GrandTotal"> > <xsl:call-template name="GrandTotal"> > <xsl:with-param name="Hourly" select="$Hourly"/> > <xsl:with-param name="Lesser" select="$Lesser"/> > <xsl:with-param name="Specialty" > select="$Specialty"/> > </xsl:call-template> > </xsl:variable> > > <xsl:call-template name="PreBillTotal"> > <xsl:with-param name="Hourly" select="$Hourly"/> > <xsl:with-param name="Lesser" select="$Lesser"/> > <xsl:with-param name="Specialty" select="$Specialty"/> > <xsl:with-param name="Savings" select="$Savings"/> > <xsl:with-param name="GrandTotal" select="$GrandTotal"/> > </xsl:call-template> > > </xsl:for-each> > > <xsl:variable name="BatchTotal"> > <xsl:call-template name="BatchTotal"> > <xsl:with-param name="list" > select="/xml/rs:data/z:row/b_children"/> > </xsl:call-template> > </xsl:variable> > > </tbody> > </table> > </div> > > </xsl:template> > > <xsl:template name="Hourly"> > <xsl:value-of > select="sum(./rr_children/rd[@BIDUNITNAME='Labor']/@TOTALCOST) + > sum(./rr_children/rd[@BIDUNITNAME='Equipment']/@TOTALCOST)"/> > > </xsl:template> > > <xsl:template name="Lesser"> > > <xsl:param name="Hourly"/> > <xsl:choose> > <!-- Hourly is 0, so use Unit --> > <xsl:when test="$Hourly = 0"> > <xsl:value-of > select="sum(./rr_children/rd[@BIDUNITNAME='Unit']/@TOTALCOST)"/> > </xsl:when> > > <!-- Unit is 0, so use Hourly --> > <xsl:when > test="sum(./rr_children/rd[@BIDUNITNAME='Unit']/@TOTALCOST) = 0"> > <xsl:value-of select="$Hourly"/> > </xsl:when> > > <!-- Hourly greater than Unit --> > <xsl:when test="$Hourly > > sum(./rr_children/rd[@BIDUNITNAME='Unit']/@TOTALCOST)"> > <xsl:value-of > select="sum(./rr_children/rd[@BIDUNITNAME='Unit']/@TOTALCOST)"/> > </xsl:when> > > <!-- Unit greater than Hourly --> > <xsl:when > test="sum(./rr_children/rd[@BIDUNITNAME='Unit']/@TOTALCOST) > $Hourly"> > <xsl:value-of select="$Hourly"/> > </xsl:when> > > <!-- Otherwise --> > <xsl:otherwise> > <xsl:value-of select="0"></xsl:value-of> > </xsl:otherwise> > </xsl:choose> > > </xsl:template> > > <xsl:template name="Savings"> > > <xsl:param name="Hourly"/> > > <xsl:choose> > > <!-- Unit greater than Hourly and Payment Type is Hourly not > to exceed Unit--> > <xsl:when test="((./@RR_PAYMENT_TYPE = 2) and > (sum(./rr_children/rd[@BIDUNITNAME='Unit']/@TOTALCOST) > $Hourly))"> > <xsl:value-of > select="sum(./rr_children/rd[@BIDUNITNAME='Unit']/@TOTALCOST) - $Hourly"/> > </xsl:when> > > <!-- Otherwise --> > <xsl:otherwise> > <xsl:value-of select="0"></xsl:value-of> > </xsl:otherwise> > </xsl:choose> > > </xsl:template> > > > <xsl:template name="Specialty"> > > <xsl:value-of > select="sum(./rr_children/rd[@BIDUNITNAME='Specialty']/@TOTALCOST) + > sum(./rr_children/rd[@BIDUNITNAME='Maintenance']/@TOTALCOST)"></xsl:value-of > > > > </xsl:template> > > <xsl:template name="GrandTotal"> > > <xsl:param name="Hourly"/> > <xsl:param name="Lesser"/> > <xsl:param name="Specialty"/> > > <xsl:choose> > > <xsl:when test="./@RR_PAYMENT_TYPE = 3"> > <xsl:value-of > select="$Specialty"></xsl:value-of> > </xsl:when> > > <xsl:when test="./@RR_PAYMENT_TYPE = 2"> > <xsl:value-of select="$Lesser + > $Specialty"></xsl:value-of> > </xsl:when> > > <xsl:when test="./@RR_PAYMENT_TYPE = 1"> > <xsl:value-of > select="sum(./rr_children/rd[@BIDUNITNAME='Unit']/@TOTALCOST) + > $Specialty"></xsl:value-of> > </xsl:when> > > <xsl:when test="./@RR_PAYMENT_TYPE = 0"> > <xsl:value-of select="$Hourly + > $Specialty"></xsl:value-of> > </xsl:when> > > </xsl:choose> > > </xsl:template> > > <xsl:template name="PreBillTotal"> > > <xsl:param name="Hourly"/> > <xsl:param name="Lesser"/> > <xsl:param name="Specialty"/> > <xsl:param name="Savings"/> > <xsl:param name="GrandTotal"/> > > <tr class="cia_company"> > <td colspan="6" class="cia_total"></td> > </tr> > > <tr class="cia_reportdata"> > <td colspan="2"></td> > <td colspan="3">Hourly SubTotal</td> > <td align="right"><xsl:value-of > select="format-number($Hourly, '$#,##0.00')"/></td> > </tr> > > <tr class="cia_reportdata"> > <td colspan="2"></td> > <td colspan="3">Units SubTotal</td> > <td align="right"><xsl:value-of > select="format-number(sum(./rr_children/rd[@BIDUNITNAME='Unit']/@TOTALCOST), > '$#,##0.00')"/></td> > </tr> > > <tr class="cia_reportdata"> > <td colspan="6"> </td> > </tr> > > <tr class="cia_reportdata"> > <td colspan="2"></td> > <td colspan="3">SubTotal</td> > <td align="right"><xsl:value-of > select="format-number($Lesser, '$#,##0.00')"></xsl:value-of></td> > </tr> > > <tr class="cia_reportdata"> > <td colspan="2"></td> > <td colspan="3">Specialty Total</td> > <td align="right"><xsl:value-of > select="format-number($Specialty, '$#,##0.00')"/></td> > </tr> > > <tr class="cia_reportdata"> > <td colspan="2"></td> > <td colspan="3" class="cia_subtotal">Report Total</td> > <td align="right" class="cia_subtotal"><xsl:value-of > select="format-number($GrandTotal, '$#,##0.00')"></xsl:value-of></td> > </tr> > > <tr class="cia_reportdata"> > <td colspan="2"></td> > <td colspan="3" class="cia_subtotal">Savings</td> > <td align="right" class="cia_subtotal"><xsl:value-of > select="format-number($Savings, '$#,##0.00')"></xsl:value-of></td> > </tr> > > </xsl:template> > > > <xsl:template name="BatchTotal"> > > <xsl:param name="running-total"/> > > <xsl:variable name="Hourly"> > <xsl:call-template name="Hourly"></xsl:call-template> > </xsl:variable> > > <xsl:variable name="Lesser"> > <xsl:call-template name="Lesser"> > <xsl:with-param name="Hourly" select="$Hourly"/> > </xsl:call-template> > </xsl:variable> > > <xsl:variable name="Savings"> > <xsl:call-template name="Savings"> > <xsl:with-param name="Hourly" select="$Hourly"/> > </xsl:call-template> > </xsl:variable> > > <xsl:variable name="Specialty"> > <xsl:call-template name="Specialty"></xsl:call-template> > </xsl:variable> > > <xsl:variable name="GrandTotal"> > <xsl:call-template name="GrandTotal"> > <xsl:with-param name="Hourly" select="$Hourly"/> > <xsl:with-param name="Lesser" select="$Lesser"/> > <xsl:with-param name="Specialty" > select="$Specialty"/> > </xsl:call-template> > </xsl:variable> > > > > > <tr class="cia_company"> > <td colspan="6" class="cia_total">Batch Total</td> > </tr> > <tr class="cia_reportdata"> > <td colspan="2"></td> > <td colspan="3" class="cia_subtotal">Batch > Total</td> > <td class="cia_subtotal"> > <xsl:value-of > select="format-number($running-total, '$#,##0.00')"/> > </td> > </tr> > > </xsl:template> > > </xsl:stylesheet> > > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list > > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] FW: How to Calculate Running , Ficke, Bill | Thread | Re: [xsl] increasing variable?, chris poppe |
[xsl] Re: Easy way to identify node, yguaba | Date | RE: [xsl] log saxon error messages , Mark Ivs |
Month |