Paul,

Below, pls see my requested mod.  What I did was move the evaluation of the 
pagefooter to 
the endpage method and allow for tracking of the deferred output.  I had to 
change the way 
the pageNumber is being set in a couple of places to adjust for the move.  Your 
test invoice 
looks ok, I think, so hopefully no functional change has occurred, except for 
the fact that any 
references to field values in the page footer have gone from the first record 
on the page to 
the next record after the last one on the page.   Please review my changes and 
let me know 
what you think. The code that I used to print the 'continued' is

"(continued on next page)" if self.RecordNumber<len(self.Cursor) and 
(self.Cursor[self.RecordNumber-1]['enrollid'] 
==self.Cursor[self.RecordNumber]['enrollid'] or 
self.being_deferred==True) else ""

which checks for the EOF situation as well

Thanks,
Larry

Index: reportWriter.py
===================================================================
--- reportWriter.py     (revision 5306)
+++ reportWriter.py     (working copy)
@@ -865,7 +865,9 @@
        More documentation will come.
        """
        _clearMemento = True
-
+       
+       # LAL - Initialize being_deferred attribute to track if we are 
generating a deferred 
page
+       being_deferred = False
        def storeSpanningObject(self, obj, origin=(0,0), group=None):
                """Store the passed spanning object for printing when the group 
or
                page ends. Pass the group expr to identify group headers, or 
None to refer
@@ -1334,6 +1336,8 @@
                ## rotating, scaling, etc. are cumulative, not absolute and we 
don't want
                ## to start with a canvas in an unknown state.)
                c.restoreState()
+               if deferred:
+                       pass
                return deferred, neededHeight
 
 
@@ -1660,7 +1664,7 @@
                                return maxBandHeight
 
                        maxBandHeight = getTotalBandHeight()
-
+                       
                        if band in ("groupHeader", "groupFooter", "detail", 
"ReportBegin", 
"ReportEnd"):
                                extraHeight = 0
                                if band == "groupHeader":
@@ -1675,7 +1679,11 @@
 
                                if y < check or maxBandHeight is None:
                                        if self._currentColumn >= columnCount-1:
+                                               #LAL - Set being_deferred
+                                               self.being_deferred=True
                                                endPage()
+                                               #LAL - Clear being_deferred
+                                               self.being_deferred=False
                                                beginPage()
                                        else:
                                                self._currentColumn += 1
@@ -1796,8 +1804,17 @@
 
                def beginPage():
                        # Print the static bands that appear below detail in 
z-order:
+                       #for idx, group in enumerate(groups):
+                               #vv = self._groupValues[group["expr"]]
+                               #if vv["curVal"] != group.getProp("expr"):
+                                       #rp = eval(group.get("resetPageNumber", 
"False"))
+                                       #if rp:
+                                               #self._pageNumber = 0
+                       
                        self._pageNumber += 1
-                       for band in ("pageBackground", "pageHeader", 
"pageFooter"):
+                       #LAL - Move pagefooter write to endpage
+                       #for band in ("pageBackground", "pageHeader", 
"pageFooter"):
+                       for band in ("pageBackground", "pageHeader"):
                                printBand(band)
                        self._brandNewPage = True
 
@@ -1806,6 +1823,10 @@
                        x = 
self.getPt(self.ReportForm["Page"].getProp("MarginLeft"))
                        self.drawSpanningObjects((x,y))
                        printBand("pageForeground")
+                       
+                       #LAL
+                       printBand("pageFooter")
+                               
                        self.Canvas.showPage()
                
                def reprintGroupHeaders(y):
@@ -1861,20 +1882,30 @@
                                vv = self._groupValues[group["expr"]]
                                if vv["curVal"] != group.getProp("expr"):
                                        rp = eval(group.get("resetPageNumber", 
"False"))
-                                       if rp and self._recordNumber == 0:
-                                               self._pageNumber = 1
-                                       elif rp:
-                                               self._pageNumber = 0
+                                       
+                                       #LAL - Change logic for resetting the 
page number
+                                       pgreset=False
+                                       # Reset page number if this is not a 
deferred page 
+                                       if not self.being_deferred and rp:
+                                               pgreset=True
+                                               
                                        vv["curVal"] = group.getProp("expr")
                                        np = eval(group.get("startOnNewPage", 
"False")) \
                                                        and self.RecordNumber > 0
                                        if np and not brandNewPage:
                                                endPage()
+                                               self._pageNumber = 0
+                                               pgreset=False
                                                beginPage()
                                                y = None
                                                brandNewPage = True  ## don't 
start 
multiple new pages
+                                               
                                        y = printBand("groupHeader", y, group)
-
+                                       
+                                       #LAL - If we still need to reset the 
pageNumber
+                                       if pgreset:
+                                               self._pageNumber=1
+                       
                        # print the detail band:
                        y = printBand("detail", y)
                        self._recordNumber += 1

_______________________________________________
Post Messages to: Dabo-users@leafe.com
Subscription Maintenance: http://leafe.com/mailman/listinfo/dabo-users
Searchable Archives: http://leafe.com/archives/search/dabo-users
This message: 
http://leafe.com/archives/byMID/4a80a97e.4300.25e6...@lalong1.charter.net

Reply via email to