Beispiel #1
0
    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
Beispiel #2
0
 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)
Beispiel #3
0
    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