ich würde gerne mal wissen ob ich diese Klasse so korrekt geschrieben habe?
Speziell auch mit dem Datenbank Aufruf im Konstruktor. Dies ist ja eigentlich nur ein Attribute anlegen.
Hier die Klasse:
Code: Alles auswählen
import math
import sqlite3
from datetime import datetime
class Abrechnung:
""" Klasse Abrechnung. Hier befinden sich die Methoden zur Berechnung der Verbrauchsdaten"""
def __init__(self):
# Verbindung zur Datenbank herstellen
verbindung = sqlite3.connect("Datenbank/verbrauch.db")
zeiger = verbindung.cursor()
# Datenbank Abfrage
zeiger.execute("SELECT zaehlerstand_letzte_abrechnung FROM tarif")
self.zaehlerstand_letzte_abrechnung = zeiger.fetchone()[0]
zeiger.execute("SELECT arbeitspreis_netto FROM tarif")
self.arbeitspreis = zeiger.fetchone()[0]
zeiger.execute("SELECT grundpreis_netto FROM tarif")
self.grundpreis_netto = zeiger.fetchone()[0]
zeiger.execute("SELECT mehrwertsteuer FROM tarif")
self.mehrwertsteuer = zeiger.fetchone()[0]
zeiger.execute("SELECT Vertragsbeginn FROM Vertragsdaten")
self.vertragsbeginn = zeiger.fetchone()[0]
zeiger.execute("SELECT zu_zahlender_abschlag FROM tarif")
self.zu_zahlender_abschlag = zeiger.fetchone()[0]
verbindung.close()
self.akt_zaehlerstand = 0
self.arbeitspreis_netto = 0
self.arbeitspreis_brutto = 0
self.grundpreis_tag_brutto = 0
self.grundpreis_tag_netto = 0
self.gesamtbetrag_netto = 0
self.gesamtbetrag_brutto = 0
self.gezahlter_abschlag = 0
self.gez_abschlag_ej = 0
self.gp_abz_ablschlag_bj = 0
self.gp_abz_abschlag_ej = 0
# Abrechnungen
# Ermittlung aktueller Zaehlerstand
def ber_akt_zaehlerstand(self, eingabe):
self.akt_zaehlerstand = int(eingabe) - self.zaehlerstand_letzte_abrechnung
# Berechnung Arbeitspreis
def ber_arbeitspreis_netto(self):
self.arbeitspreis_netto = round(self.akt_zaehlerstand * self.arbeitspreis / 100, 2)
def ber_arbeitspreis_brutto(self):
self.arbeitspreis_brutto = round(
self.akt_zaehlerstand * self.arbeitspreis / 100 * self.mehrwertsteuer, 2)
# Berechnung Grundpreis
def ber_grundpreis_brutto(self):
self.grundpreis_tag_brutto = round(self.grundpreis_tag_netto * self.mehrwertsteuer, 2)
...........
Die Methoden werden dann in dieser Klasse aufgerufen und in einer GUI ausgegeben:
Code: Alles auswählen
..............
class Verbrauchsrechner(QtWidgets.QMainWindow):
"""Main Klasse hier startet das Programm"""
def __init__(self, parent=None):
super().__init__(parent)
self.ui = Ui_Hauptdialog()
self.ui.setupUi(self)
# Slot eingerichtet
self.ui.button_OK.clicked.connect(self.berechne)
# Slot
def berechne(self):
berechnung = Abrechnung()
berechnung.ber_akt_zaehlerstand(self.ui.spin_box_eingabe.value())
berechnung.ber_arbeitspreis_netto()
self.ui.arbeitspreis_netto.setText(str(berechnung.arbeitspreis_netto) + " €")
berechnung.ber_arbeitspreis_brutto()
self.ui.arbeitspreis_brutto.setText(str(berechnung.arbeitspreis_brutto) + " €")
berechnung.ver_grundgebuer()
self.ui.grundpreis_netto.setText(str(berechnung.grundpreis_tag_netto) + " €")
berechnung.ber_grundpreis_brutto()
self.ui.grundpreis_brutto.setText(str(berechnung.grundpreis_tag_brutto) + " €")
berechnung.ber_gesamtbetrag_netto()
self.ui.gesamtpreis_netto.setText(str(berechnung.gesamtbetrag_netto) + " €")
berechnung.ber_gesamtbetrag_brutto()
self.ui.gesamtpreis_brutto.setText(str(berechnung.gesamtbetrag_brutto) + " €")
berechnung.er_abschlag()
self.ui.abschlag_bis_jetzt.setText(str(berechnung.gezahlter_abschlag) + " €")
self.ui.abschlag_ende_des_jahres.setText(str(berechnung.gez_abschlag_ej) + " €")
berechnung.ber_gp_abz_abschlag_bj()
self.ui.gp_abz_abschlag_bj.setText(str(berechnung.gp_abz_ablschlag_bj) + " €")
berechnung.ber_gp_abz_abschlag_ej()
self.ui.gp_abz_abschlag_ej.setText(str(berechnung.gp_abz_abschlag_ej) + " €")
...................
MFG Master_Shredder