Exemplo n.º 1
0
 def vorgangKassieren(self, vorgang):
     self.vorgang = vorgang
     if self.tse_trxnum:
         # Wir sind noch am Kasieren!
         pass
     else:
         self.reset()
         self.tse_trxnum = None
         self.tse_time_start = None
         try:
             response = self.tse.transaction_start('', '')
             self.tse_trxnum = response.transactionNumber
             self.tse_time_start = response.logTime
         except TSEException:
             pass
     
     # if self.beleg_hat_abfuellung():
     #     self.drucken()
     self.betrag = vorgang.getZahlbetrag()
     text = BelegHTML(self.vorgang, public=False)
     self.ui.textBrowser.setHtml(text)
     self.alte_kundenvorgaenge = self.speicher.listVorgaengeByKunde(self.vorgang.kunde.ID())
     if self.alte_kundenvorgaenge:
         self.liter_alte_abfuellungen = 0
         self.ui.listWidget_kundenhinweise.clear()
         for b in self.alte_kundenvorgaenge:
             if b.ID == self.vorgang.ID:
                 continue
             self.liter_alte_abfuellungen += b.getLiterzahl()
             hinweis = u'Abfüllung am %s: %s Liter' % (b.getZeitpunkt(), b.getLiterzahl())
             self.ui.listWidget_kundenhinweise.addItem(hinweis)
         self.ui.listWidget_kundenhinweise.addItem(u'Vorherige Abfüllungen dieses Jahr insgesamt: %s Liter' % (self.liter_alte_abfuellungen,))
     self.mainwindow.kundendisplay.showVorgang(self.vorgang)
     self.updateBetraege()
Exemplo n.º 2
0
 def versionAusgewaehlt(self, listWidgetItem = None, nonsense = None):
     invoice = self.__aktueller_vorgang
     if not listWidgetItem:
         return None
     version = int(listWidgetItem.data(1))
     if version:
         if not invoice:
             invoice = self.ui.listWidget_2.itemWidget(self.ui.listWidget_2.selectedItems()[0]).getVorgang()
         handle = invoice.ID
         invoice = self.speicher.ladeVorgang(handle, version=version)
         text = BelegHTML(invoice, public=False)
         self.ui.textBrowser.setHtml(text)
Exemplo n.º 3
0
 def gutschein(self):
     betrag = self.gegeben
     if not betrag:
         QtWidgets.QMessageBox.warning(self, 'Gutscheinbetrag eingeben!', 'Bitte zuerst den eingelösten Gutscheinbetrag eingeben!', buttons=QtWidgets.QMessageBox.Ok)
         return
     nummer = showTextInputDialog(titel="Gutschein-Nummer", vorschlaege=[], vorgabewert='')
     # Einzweck-Gutschein ist keine Zahlung im steuerlichen Sinne. Auf den Gutschein-Anteil darf keine 
     # USt berechnet werden, da diese schon bei Ausstellung des Gutscheins abgeführt wurde.
     # Daher wird der Gutschein als Rabatt auf der Rechnung vermerkt. 
     self.vorgang.newItem(anzahl=1, beschreibung='Gutschein-Einlösung (Nr. %s)' % nummer, einzelpreis=-betrag, steuersatz=19.0)
     self.speicher.speichereVorgang(self.vorgang)
     self.delete()
     text = BelegHTML(self.vorgang, public=False)
     self.ui.textBrowser.setHtml(text)
     self.mainwindow.kundendisplay.showVorgang(self.vorgang)
Exemplo n.º 4
0
 def showVorgang(self, vorgang = None):
     self.modus = 'vorgang'
     self.aktueller_beleg = None
     if vorgang: 
         self.aktueller_vorgang = vorgang
     if not self.active:
         return
     text = BelegHTML(vorgang, public=True)
     self.ui.textBrowser.setHtml(text)
     self.ui.textBrowser.setStyleSheet('''
     * {
       font-size: 20pt;
     }
     ''')
     self.ui.widgets.setCurrentIndex(0)
Exemplo n.º 5
0
 def zahlung(self, betrag, zahlart, bemerkung=None):
     self.zahlung_erfolgt = True
     if zahlart == 'bar' and self.gegeben > self.betrag:
         self.speicher.speichereZahlung(self.vorgang, zahlart=zahlart, betrag=self.betrag, gegeben=self.gegeben, zurueck=self.betrag-self.gegeben, bemerkung=bemerkung)
     else:
         self.speicher.speichereZahlung(self.vorgang, zahlart=zahlart, betrag=betrag, bemerkung=bemerkung)
     self.vorgang = self.speicher.ladeVorgang(self.vorgang.ID)
     self.betrag = self.vorgang.getZahlbetrag()
     self.numbers = []
     if self.vorgang.getZahlbetrag() <= 0.0:
         # Kassiervorgang bendet!
         self.vorgang.setPayed(True)
         self.speicher.speichereVorgang(self.vorgang)
         self.fertig()
     else:
         # Nur verbuchen und im Kassiermodus bleiben.
         self.updateBetraege()
         text = BelegHTML(self.vorgang, public=False)
         self.ui.textBrowser.setHtml(text)
         self.mainwindow.kundendisplay.showVorgang(self.vorgang)
Exemplo n.º 6
0
    def update(self):
        invoice = self.vorgang
        kunde = invoice.getKunde()
        if kunde.getName():
            self.ui.label_kundenname.setText(kunde.getName())
        else:
            self.ui.label_kundenname.setText(u'<i>Barverkauf</i>')

        zeitpunkt = invoice.getZeitpunkt()
        if zeitpunkt:
            self.ui.label_zeitpunkt.setText(
                '%s, %s Uhr' % (Wochentage[zeitpunkt.weekday()],
                                zeitpunkt.strftime('%d.%m.%Y / %H:%M')))
        else:
            self.ui.label_zeitpunkt.setText('unbekannt')
        kontakte = kunde.listKontakteTelefon()
        if len(kontakte) == 0:
            showPhoneNumberInputDialog(kunde)
            if len(kunde.listKontakteTelefon()) > 0:
                self.speicher.speichereKunde(kunde)
        telefonnummern = ' / '.join([
            formatPhoneNumber(e['wert']) for e in kunde.listKontakteTelefon()
        ])
        self.ui.label_telefon.setText(telefonnummern)
        anrufe = self.speicher.getAnrufe(self.vorgang)
        text = u''
        for anruf in anrufe:
            if anruf['ergebnis'] == 'erreicht':
                text += u'%s - Erreicht - %s' % (anruf['timestamp'],
                                                 anruf['bemerkung'])
            elif anruf['ergebnis'] == 'ab':
                text += u'%s - AB' % (anruf['timestamp'], )
            elif anruf['ergebnis'] == 'nichterreicht':
                text += u'%s - NICHT erreicht' % (anruf['timestamp'], )
            else:
                text += u'%s - %s' % (anruf['ergebnis'], anruf['timestamp'])
            text += '\n'
        self.ui.textBrowser_ergebnisse.setText(text)

        html = BelegHTML(self.vorgang)
        self.ui.textBrowser_beleg.setText(html)
Exemplo n.º 7
0
    def vorgangAusgewaehlt(self, listWidgetItem = None, nonsense = None, invoice=None):
        if not invoice:
            if len(self.ui.listWidget_2.selectedItems()) > 0:
                if len(self.ui.listWidget_2.selectedItems()) > 1:
                    invoice = Vorgang()
                    zahlungen = False
                    for selectedItem in self.ui.listWidget_2.selectedItems():
                        tmp = self.speicher.ladeVorgang(self.ui.listWidget_2.itemWidget(selectedItem).getVorgang().ID)
                        invoice.vorgangHinzufuegen(tmp)
                        if tmp.getZahlungen():
                            zahlungen = True
                    self.ui.label_dateiname.setText(u'<em>Mehrere ausgewählt</em>')
                    if not zahlungen:
                        self.ui.button_sammelbeleg.show()
                else:
                    widget = self.ui.listWidget_2.itemWidget(self.ui.listWidget_2.selectedItems()[0])
                    if type(widget) == AbfuellungWidget:
                        invoice = self.speicher.ladeVorgang(widget.getVorgang().ID)
                        self.ui.label_dateiname.setText('%s' % invoice.ID)
                    self.ui.button_sammelbeleg.hide()
        
        if invoice:
            self.__aktueller_vorgang = invoice
            if invoice.isRechnung():
                self.ui.button_anrufen.setEnabled(False)
                self.ui.button_bearbeiten.setEnabled(False)
                self.ui.button_rechnung_storno.setEnabled(True)
                self.ui.button_beleganzeigen.setEnabled(True)
                self.ui.button_bezahlt.setEnabled(False)
            else:
                self.ui.button_bearbeiten.setEnabled(True)
                self.ui.button_rechnung_storno.setEnabled(False)
                self.ui.button_beleganzeigen.setEnabled(False)
                self.ui.button_bezahlt.setEnabled(True)
                self.ui.button_anrufen.setEnabled(True)
            

            text = BelegHTML(invoice, public=False)
            self.ui.textBrowser.setHtml(text)

            if invoice.ID:
                # Wenn mehrere Belegen ausgewählt wurden, ist das None
                self.ui.listWidget_version.show()
                self.updateVersionen(invoice.ID)
            else:
                self.ui.listWidget_version.hide()
                self.ui.button_bezahlt.setEnabled(False)
                self.ui.button_anrufen.setEnabled(False)

            label = u'Ist bezahlt'
            if invoice.getPayed() and not invoice.isRechnung():
                label = u'Ist noch nicht bezahlt'
            self.ui.button_bezahlt.setText(label)

            if invoice.getStatus() == 'postponed':
                self.ui.button_zurueckstellen.setText('Nicht mehr zurückstellen')
            else:
                self.ui.button_zurueckstellen.setText('Zurückstellen')
            self.ui.button_zurueckstellen.setEnabled(not (invoice.getPayed() or invoice.getBanktransfer()))

            if self.year != str(datetime.date.today().year):
                self.ui.button_bearbeiten.setEnabled(False)
                self.ui.button_anrufen.setEnabled(False)
            if len(self.ui.listWidget_2.selectedItems()) > 1:
                self.ui.button_bearbeiten.setEnabled(False)
                self.ui.button_anrufen.setEnabled(False)
        else:
            # Kein Vorgang ausgewählt
            self.ui.textBrowser.clear()
            self.ui.listWidget_version.clear()
            self.ui.button_anrufen.setEnabled(False)
            self.ui.button_bezahlt.setEnabled(False)
            self.ui.button_bearbeiten.setEnabled(False)
            self.ui.button_beleganzeigen.setEnabled(False)
            self.ui.button_zurueckstellen.setEnabled(False)
            self.ui.label_dateiname.setText(u'<em>Kein Vorgang ausgewählt</em>') 
            self.__aktueller_vorgang = None