def positionen(self): """Liste der Lieferscheinpositionen""" # TODO: JOIN mit Texten if self._positionen is None: self._positionen = [] rows = get_connection().query('ALN00', condition="LNSANK = %d" % int(self.pos_key)) for row in rows: position = Lieferscheinposition() set_attributes(row, position) #position.anfangstext, position.endetext = _get_pos_texte(position.auftrags_position, self.auftragsnr) self._positionen.append(position) return self._positionen
def _get_abweichendelieferadresse(self): """Abweichende Lieferadresse wenn vorhanden extrahieren.""" # Wenn eine gesonderte Lieferadresse angegeben ist, Adresse damit überschreiben rows = get_connection().query('XAD00', condition="ADAART=1 AND ADRGNR='%d' " % int(self.auftragsnr)) if len(rows) > 1: raise RuntimeError("Probleme bei der Auswahl der Lieferadresse") elif len(rows) == 1: row = rows[0] # bsp fuer auftragsnr 655501: # row = {'adressaufbereitung': 0, # 'laenderkennzeichen': u'D', # 'name1': u'NETTO Supermarkt GmbH & Co. OHG', # 'name2': u'', # 'name3': u'', # 'name4': u'', # 'ort': u'Wustermark', # 'plz': u'14641', # 'strasse': u'Magdeburger Str. 2'} set_attributes(row, self)
def _read_from_softm(self, lsnr): """Basierend auf der ALK00 wird ein Datensatz aus allen verwandten Tabellen extrahiert.""" # Lieferscheinkopf JOIN Kundenadresse JOIN Auftragskopf um die Anzahl der Queries zu minimieren conditions = [self.condition % lsnr, "LKKDNR = KDKDNR", "LKAUFS = AKAUFN"] rows = get_connection().query(['ALK00', 'AAK00', 'XKD00'], condition=" AND ".join(conditions)) if len(rows) != 1: raise RuntimeError("Probleme bei der Auswahl des Lieferscheins - kein Datensatz mit %s" % (self.condition % lsnr)) set_attributes(rows[0], self) self.anlieferdatum = self.liefer_date self.anlieferdatum_min = self.anlieferdatum_max = self.anlieferdatum if self.kundenwunsch_date: self.anlieferdatum_max = self.kundenwunsch_date self.fixtermin = bool(self.fixtermin) self.pos_key = self.satznr if self.bezogener_kopf: self.pos_key = self.bezogener_kopf # Property für delayed execution self._positionen = None self._infotext_kunde = None self.lieferadresse = Adresse() self._get_abweichendelieferadresse() # nach dem https://cybernetics.hudora.biz/projects/wiki/AddressProtocol Felder setzen self.lieferadresse.name1 = self.name1 self.lieferadresse.name2 = self.name2 self.lieferadresse.name3 = self.name3 self.lieferadresse.strasse = self.strasse self.lieferadresse.land = self.land = land2iso(self.laenderkennzeichen) self.lieferadresse.plz = self.plz self.lieferadresse.ort = self.ort