def buildStory(self,story):
   accountObjects = self.store.fetchObjectsOfClass('AccountsMI')
   year = self.transaction.session().value('accountYear',DateTime.now().year)
   reportingdate = DateTime.DateTimeFrom(self.transaction.request().field('reportingdate',''))
   story.append(Paragraph('Stichtag %s' % reportingdate.strftime(self.dateFormat), self.styleH3))
   story.append(Spacer(1,0.2*inch))
   stats = {}
   mstats = {}
   wstats = {}
   for x in ages.keys():
     stats[x]=0
     mstats[x]=0
     wstats[x]=0
   for x in accountObjects:
     attrs = x.allAttrs(0)
     if (not attrs['Austrittsdatum'] or (attrs['Austrittsdatum'] > reportingdate)) and (attrs['Eintrittsdatum'] <= reportingdate) and attrs['Geburtsdatum']:
       age = misc.age(attrs['Geburtsdatum'],reportingdate)
       for y in ages.keys():
         if age in range(ages[y][0],ages[y][1]+1):
           stats[y] = stats[y] + 1
           if attrs['Geschlecht'] == 'w':
             wstats[y] = wstats[y] + 1
           else:
             mstats[y] = mstats[y] + 1
   data = [['Altersgruppe','M','W','Anzahl']]
   sum = 0
   msum = 0
   wsum = 0
   k = stats.keys()
   k.sort()
   for x in k:
     data.append([ages[x][2],mstats[x],wstats[x],stats[x]])
     sum = sum + stats[x]
     msum = msum + mstats[x]
     wsum = wsum + wstats[x]
   data.append(['Gesamt',msum,wsum,sum])
   #
   # build table with stylesheet
   #
   t = Table(data,repeatRows=1)
   t.setStyle(TableStyle([
     ('FONTSIZE',(0,1),(-1,-2),9),
     ('TOPPADDING',(0,0),(-1,-1),1),
     ('BOTTOMPADDING',(0,0),(-1,-1),1),
     ('LINEBELOW',(0,0),(-1,0),0.25,colors.black),
     ('LINEABOVE',(0,-1),(-1,-1),0.25,colors.black),
     ('ALIGN',(-1,1),(-1,-1),'RIGHT'),
     ]))
   story.append(t)
   return story
예제 #2
0
 def buildStory(self,story):
   accountObjects = self.store.fetchObjectsOfClass('AccountsMI','ORDER BY Nachname')
   reportingdate = self.transaction.request().field('reportingdate','')
   minAge = self.transaction.request().field('minAge')
   maxAge = self.transaction.request().field('maxAge')
   if minAge:
     minAge = string.atoi(minAge)
   else:
     minAge = 0
   if maxAge:
     maxAge = string.atoi(maxAge)
   else:
     maxAge = 200
   if reportingdate:
     reportingdate = DateTime.DateTimeFrom(reportingdate)
     story.append(Paragraph('Stichtag %s' % reportingdate.strftime(self.dateFormat), self.styleH3))
     story.append(Spacer(1,0.2*inch))
     refDate = reportingdate
   else:
     refDate = DateTime.DateTimeFrom('')
   data = [['MNr','Vorname','Nachname',' ','Alter','Geburtstag','Eintritt','Austritt']]
   for x in accountObjects:
     attrs = x.allAttrs(0)
     age = misc.age(attrs['Geburtsdatum'],refDate)
     if age >= minAge and age <= maxAge:
       if not reportingdate or (reportingdate and (not attrs['Austrittsdatum'] or (attrs['Austrittsdatum'] > reportingdate)) and (attrs['Eintrittsdatum'] <= reportingdate)):
         if attrs['Austrittsdatum']:
           data.append([attrs['MitgliedsNr'],attrs['Vorname'][:15],attrs['Nachname'][:20],attrs['Geschlecht'],age,attrs['Geburtsdatum'].strftime(self.dateFormat),attrs['Eintrittsdatum'].strftime(self.dateFormat),attrs['Austrittsdatum'].strftime(self.dateFormat)])
         else:
           data.append([attrs['MitgliedsNr'],attrs['Vorname'][:15],attrs['Nachname'][:20],attrs['Geschlecht'],age,attrs['Geburtsdatum'].strftime(self.dateFormat),attrs['Eintrittsdatum'].strftime(self.dateFormat),'-'])
   #
   # build table with stylesheet
   #
   t = Table(data,repeatRows=1)
   t.setStyle(TableStyle([
     ('FONTSIZE',(0,1),(-1,-2),9),
     ('TOPPADDING',(0,0),(-1,-1),1),
     ('LINEBELOW',(0,0),(-1,0),0.25,colors.black),
     ]))
   story.append(t)
   return story