Liebe Kollegen, liebes Tomedo-Team,

ich suche eine Variable, um in einem Python-Skript eine Ziffer von Anfang des Quartals bis gestern suchen zu lassen (2. Chronikerziffer in Abhängigkeit der gesetzten 1. Chronikerziffer). Hierbei lasse ich zunächst nach der 1. Chronikerziffer (03220) im akutellen Quartal suchen:

array = select(kvleistungen,startQuartal=heuteQuartal-0,25,endQuartal=heuteQuartal)

anschließend, ob bereits die 2. Chronikerziffer (03221) von Anfang des Quartals bis gestern abgelegt wurde

arraybisgestern = select(kvleistungen,startQuartal=heuteQuartal-0,25,today-1)

Trotz langen Recherchen im Tomedo-Handbuch, im Markermodul und Internet, habe ich leider bislang die funktionierende Variable nicht  gefunden.

Weiß jemand Rat?

Gefragt von (180 Punkte)
0 Punkte
könnten Sie bitte den gesamten Code posten?

Sehr gerne:

#Parameter
referenz = '03320'
pruefziffer = '03221'

#Code
returnvalue = 0
gesetzt = False
ausschluss = False
array = select(kvleistungen,startQuartal=heuteQuartal-0,25,endQuartal=heuteQuartal)
arraybisgestern = select(kvleistungen,startQuartal=heuteQuartal-0,25,today-1)

#Wurde die 1. Chronikerziffer angesetzt?
for leistung in array:
  if leistung['code'] == referenz:
    gesetzt = True

#Wurde die 2. Chronikerziffer bereits angesetzt?
if gesetzt:
  for leistung in arraybisgestern:
    if leistung['code'] == pruefziffer
        ausschluss = True

if gesetzt and not ausschluss:
  returnvalue = 1
else:
  returnvalue = 0

1 Antwort

Sehr geehrter Herr Jörg,

die Variable today ist in Ihrem Code nicht definiert. Mit den Argumenten startQuartal und endQuartal können Sie mit der select-Funktion Listen quartalsweise beschneiden. 

Eine datumsabhängige Beschneidung ist jedoch auch möglich, dafür benötigen sie die Argumente startDatum und endDatum. Beachten Sie bitte, dass Sie die beiden Gruppen ([startQuartal, endQuartal] und [startDatum, endDatum]) nicht mischen können.

In Ihrem Fall lohnt es sich mit einzelnen Daten anstelle von Quartalen zu arbeiten. Dafür benötigen wir das heutige Datum als Datumsobjekt und können daraus gestern und den quartalsbeginn bestimmen, beides müssen wir für die select-Funktion wieder in Strings umwandeln.
In Code könnte dies so aussehen:

today = datetime.datetime.strptime(heuteDatum,'%d.%m.%Y')
gestern = (today + datetime.timedelta(days=-1)).strftime('%d.%m.%Y')
quartalsbeginn = datetime.date(today.year, (today.month - 1) // 3 * 3 + 1, 1).strftime('%d.%m.%Y')

Dann können Sie die select-Funktion mit

select(*, startDatum=quartalsbeginn, endDatum=gestern)

aufrufen.

Beantwortet von (2.6k Punkte)
0 Punkte
6,472 Beiträge
10,968 Antworten
14,738 Kommentare
2,583 Nutzer