[xsl] Re: How to Calculate Running Total using Variable within FOR-LOOP?

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 &gt;
> 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) &gt; $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) &gt; $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">&#160;</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