Ausgabe dictionary

This commit is contained in:
2023-02-28 13:19:29 +01:00
parent ed23eda4ca
commit 355a17852a
3 changed files with 50 additions and 22 deletions
+47 -19
View File
@@ -627,8 +627,6 @@ class Flyer_F40_EJet_inc_Putz():
else: else:
self._Mengen["RRA_BI_abhebbar"] = anzahl.get("RRA_BI_abhebbar_Korrektur", 0) self._Mengen["RRA_BI_abhebbar"] = anzahl.get("RRA_BI_abhebbar_Korrektur", 0)
self._Mengen["RRA_BI_abhebbar_Korrektur"] = self.mengen.get("RRA_BI_abhebbar_Korrektur", 0) self._Mengen["RRA_BI_abhebbar_Korrektur"] = self.mengen.get("RRA_BI_abhebbar_Korrektur", 0)
###f bei utztex auch bei false 1 * anzahl Flyer und hier 0*...
###f warum bei allen antrieben hier immer entweder anzahl oder korrektur abhängig von true or false entweder anzahl oder korrekturfaktor und bei utztex beides addiert?
self._Mengen["RRA_bi"] = self.mengen.get("RRA_bi", 0) self._Mengen["RRA_bi"] = self.mengen.get("RRA_bi", 0)
if (anzahl.get("Single_Line_Durchfahrt", False)): if (anzahl.get("Single_Line_Durchfahrt", False)):
@@ -1308,7 +1306,7 @@ class HW():
"speicherkarte_fuer_sps_512_kb": 172.5, # 708003012 "speicherkarte_fuer_sps_512_kb": 172.5, # 708003012
"sps_simatic_s7_cpu317_2_pn_dp": 3957, # 708003007 "sps_simatic_s7_cpu317_2_pn_dp": 3957, # 708003007
"speicherkarte_fuer_sps2_mb": 246, # 708003027 "speicherkarte_fuer_sps2_mb": 246, # 708003027
"sps_simatic_s7_1515_2": 2173.5, # 790008100 "sps_simatic_s7_1515_2": 2173.9, # 790008100
"sps_simatic_s7_1517_3": 3827.8, # 790008101 "sps_simatic_s7_1517_3": 3827.8, # 790008101
"sps_simatic_s7_1518_4": 5892, # 6ES7518-4AP00-0AB0 "sps_simatic_s7_1518_4": 5892, # 6ES7518-4AP00-0AB0
"sps_et200_1512sp": 705.75, # 709000003 "sps_et200_1512sp": 705.75, # 709000003
@@ -1994,6 +1992,7 @@ class HW():
else: else:
preis = anz * self.ep[k] preis = anz * self.ep[k]
res += preis res += preis
return res return res
def summe_vorort(self): def summe_vorort(self):
@@ -2220,13 +2219,13 @@ class Dienstleistung():
self._Hours["Klemmkastenbau_je_2h"] = (hw.anzahl("klemmkasten_rsm") + self._Hours["Klemmkastenbau_je_2h"] = (hw.anzahl("klemmkasten_rsm") +
hw.anzahl("klemmkasten_direct_in_rsm")) * 2 hw.anzahl("klemmkasten_direct_in_rsm")) * 2
self._Hours["Bedientableaubau"] = round(hw.anzahl("bedienstation_1fach_kpl") * hw.zpe_e_werkstatt.get("bedienstation_1fach_kpl") / 60 +\ self._Hours["Bedientableaubau"] = hw.get_h_of("bedienstation_1fach_kpl") +\
hw.anzahl("bedienst_2fach_wechs_bcd_10f") * hw.zpe_e_werkstatt.get("bedienst_2fach_wechs_bcd_10f") / 60 +\ hw.get_h_of("bedienst_2fach_wechs_bcd_10f")+\
hw.anzahl("bedienstation_2fach_kpl") * hw.zpe_e_werkstatt.get("bedienstation_2fach_kpl") / 60 +\ hw.get_h_of("bedienstation_2fach_kpl") +\
hw.anzahl("bedienstation_3fach_kpl") * hw.zpe_e_werkstatt.get("bedienstation_3fach_kpl") / 60 +\ hw.get_h_of("bedienstation_3fach_kpl") +\
hw.anzahl("bedienstation_4fach_kpl") * hw.zpe_e_werkstatt.get("bedienstation_4fach_kpl") / 60 +\ hw.get_h_of("bedienstation_4fach_kpl") +\
hw.anzahl("bedienstation_6fach_kpl") * hw.zpe_e_werkstatt.get("bedienstation_6fach_kpl") / 60 +\ hw.get_h_of("bedienstation_6fach_kpl") +\
hw.anzahl("drucktaster_automatische_umfahrung") * hw.zpe_e_werkstatt.get("drucktaster_automatische_umfahrung"), 2) hw.get_h_of("drucktaster_automatische_umfahrung")
self._Hours["Vormontage_im_Haus"] = self.anzahl("Vormontage_im_Haus") self._Hours["Vormontage_im_Haus"] = self.anzahl("Vormontage_im_Haus")
def __repr__(self): def __repr__(self):
return repr(self._Hours) return repr(self._Hours)
@@ -2380,7 +2379,7 @@ class Anschlussl():
mengen = { mengen = {
#auskommentiert, was später berechnet wird #auskommentiert, was später berechnet wird
#"Anschlussspannung":400, #Volt #"Anschlussspannung":400, #Volt
"Motor_Art":0.12, #kilo Watt ### dasselbe wie Antrieb? "Motor_Art":0.12, #kilo Watt ### dasselbe wie Antrieb? und eigtl regelmäßig oder immer anders?
#"Anzahl_Motor":48, #"Anzahl_Motor":48,
"Antrieb":0.12, #kilo Watt "Antrieb":0.12, #kilo Watt
"Strom_Motor":0.55, #Ampere "Strom_Motor":0.55, #Ampere
@@ -2499,7 +2498,7 @@ class Ergebnis(): ###f was sind die grünen zahlen auf dem deckblatt?
self._anzahl["Inbetriebnahmetest_Hardware_durch_Montage"] = anzahl_h.get("Montage_elektrisch") * 0.1 self._anzahl["Inbetriebnahmetest_Hardware_durch_Montage"] = anzahl_h.get("Montage_elektrisch") * 0.1
self._anzahl["SPS_Inbetriebsetzung"] = self.eingaben_h.get("SPS_Inbetriebsetzung") self._anzahl["SPS_Inbetriebsetzung"] = self.eingaben_h.get("SPS_Inbetriebsetzung")
self._anzahl["PC_Inbetriebsetzung"] = self.eingaben_h.get("PC_Inbetriebsetzung") self._anzahl["PC_Inbetriebsetzung"] = self.eingaben_h.get("PC_Inbetriebsetzung")
self._anzahl["Inbetriebnahmeunterstützung_durch_Montage"] = anzahl_h.get("SPS_Inbetriebsetzung") * self._Anteil_Inbetriebnahmeunterstützung_durch_Montage ###f prozentualer anteil der inbetriebnahmeunterstützung durch montage###f bei PC Progammierung auch % wird aber nicht verwendet; absicht? self._anzahl["Inbetriebnahmeunterstützung_durch_Montage"] = anzahl_h.get("SPS_Inbetriebsetzung") * self._Anteil_Inbetriebnahmeunterstützung_durch_Montage
self._anzahl["Dokumentation"] = dl.get_hours_of("Bedienerhandbuch") self._anzahl["Dokumentation"] = dl.get_hours_of("Bedienerhandbuch")
self._anzahl["Bedienungsanleitung_Emmert"] = dl.get_hours_of("SPS_Doku") self._anzahl["Bedienungsanleitung_Emmert"] = dl.get_hours_of("SPS_Doku")
self._anzahl["Schulung_vor_Ort_beim_Kunden"] = self.eingaben_h.get("Schulung_vor_Ort_beim_Kunden") self._anzahl["Schulung_vor_Ort_beim_Kunden"] = self.eingaben_h.get("Schulung_vor_Ort_beim_Kunden")
@@ -2551,6 +2550,35 @@ class Ergebnis(): ###f was sind die grünen zahlen auf dem deckblatt?
return (res + hw.summe_vorort() + hw.summe_in_LL()) return (res + hw.summe_vorort() + hw.summe_in_LL())
def get_cost_of(self, partname): def get_cost_of(self, partname):
return (self._anzahl.get(partname) * self.preis_kostenart_h.get(partname)) return (self._anzahl.get(partname) * self.preis_kostenart_h.get(partname))
def summary_costs(self, hw):
summary = {}
keys_costs = {
"E_Werkstatt",
"Schaltschrankbau_extern_Mehrkosten",
"Dienstleistung_in_LL",
"Pflichtenheft",
"SPS_Programmierung",
"PC_Programmierung_Visualisierung",
"Montage_elektrisch",
"Inbetriebnahmetest_Hardware_durch_Montage",
"SPS_Inbetriebsetzung",
"PC_Inbetriebsetzung",
"Inbetriebnahmeunterstützung_durch_Montage",
"Dokumentation",
"Bedienungsanleitung_Emmert",
"Schulung_vor_Ort_beim_Kunden",
"Abnahme",
"SPS_Anlagenbetreuung",
"PC_Anlagenbetreuung",
"Anlagenbetreuung_durch_Montage"
}
for k in keys_costs:
cost = self._anzahl[k] * self.preis_kostenart_h[k]
summary.update({k: round(cost, 2)})
summary.update({"Installationsmaterial_vor_Ort": round(hw.summe_vorort(), 2)})
summary.update({"Material_in_LL": round(hw.summe_in_LL(), 2)})
summary.update({"GESAMT": round(self.get_sum_of_costs(hw), 2)})
print(summary)
class TestObjectMethods(unittest.TestCase): class TestObjectMethods(unittest.TestCase):
@@ -3056,7 +3084,6 @@ class TestObjectMethods(unittest.TestCase):
Anzahl_AL ={} Anzahl_AL ={}
al = Anschlussl(Anzahl_AL, mg) al = Anschlussl(Anzahl_AL, mg)
self.assertEqual(hw.anzahl("schaltschrankgehaeuse_b1x1200_zubehoer"), 0) self.assertEqual(hw.anzahl("schaltschrankgehaeuse_b1x1200_zubehoer"), 0)
self.assertEqual(hw.anzahl("schaltschrankgehaeuse_b2x800_zubehoer"), 0) self.assertEqual(hw.anzahl("schaltschrankgehaeuse_b2x800_zubehoer"), 0)
self.assertEqual(hw.anzahl("schaltschrankgehaeuse_b1x1200+1x800_zubehoer"), 1) self.assertEqual(hw.anzahl("schaltschrankgehaeuse_b1x1200+1x800_zubehoer"), 1)
@@ -3190,7 +3217,7 @@ class TestObjectMethods(unittest.TestCase):
self.assertEqual(hw.anzahl("schnittstellen_8x1mm2_30m"), 4) self.assertEqual(hw.anzahl("schnittstellen_8x1mm2_30m"), 4)
self.assertEqual(hw.summe_vorort(), 19923.6) self.assertEqual(hw.summe_vorort(), 19923.6)
self.assertEqual(hw.summe_gesamt(), 47167.04) self.assertAlmostEqual(hw.summe_gesamt(), 47167.04)
self.assertEqual(hw.summe_in_LL(), 27243.44) self.assertEqual(hw.summe_in_LL(), 27243.44)
self.assertEqual(hw.summe_h_zeiten_hardwareplanung(), 167.0) self.assertEqual(hw.summe_h_zeiten_hardwareplanung(), 167.0)
self.assertEqual(hw.summe_h_unterverteiler_e_werkstatt(), 94.0) self.assertEqual(hw.summe_h_unterverteiler_e_werkstatt(), 94.0)
@@ -3638,8 +3665,8 @@ class TestObjectMethods(unittest.TestCase):
Anzahl_AL ={} Anzahl_AL ={}
al = Anschlussl(Anzahl_AL, mg) al = Anschlussl(Anzahl_AL, mg)
self.assertEqual(dl.stunden_diensleistung_hardwareplanung(), 225.1) self.assertEqual(dl.stunden_diensleistung_hardwareplanung(), 225.1)
self.assertEqual(dl.stunden_elektrowerkstatt(), 196.83) self.assertEqual(dl.stunden_elektrowerkstatt(), 196.83333333333333333333333333)
self.assertEqual(dl.summe_stunden_dienstleistung_in_landsberg(), 421.93) self.assertEqual(dl.summe_stunden_dienstleistung_in_landsberg(), 421.9333333333333333333)
self.assertEqual(dl.get_hours_of("Pflichtenheft_Autom_Schnittstellen"), 0) self.assertEqual(dl.get_hours_of("Pflichtenheft_Autom_Schnittstellen"), 0)
self.assertEqual(dl.get_hours_of("Erstellung_Steuerungslayout"), 41.75) self.assertEqual(dl.get_hours_of("Erstellung_Steuerungslayout"), 41.75)
self.assertEqual(dl.get_hours_of("Schaltplanerstellung_incl_Korrekturen"), 100.2) self.assertEqual(dl.get_hours_of("Schaltplanerstellung_incl_Korrekturen"), 100.2)
@@ -3656,7 +3683,7 @@ class TestObjectMethods(unittest.TestCase):
self.assertEqual(dl.get_hours_of("Schaltschrankbau"), 88) self.assertEqual(dl.get_hours_of("Schaltschrankbau"), 88)
self.assertEqual(dl.get_hours_of("Unterverteilerbau"), 94) self.assertEqual(dl.get_hours_of("Unterverteilerbau"), 94)
self.assertEqual(dl.get_hours_of("Klemmkastenbau_je_2h"), 4) self.assertEqual(dl.get_hours_of("Klemmkastenbau_je_2h"), 4)
self.assertEqual(dl.get_hours_of("Bedientableaubau"), 10.83) self.assertEqual(dl.get_hours_of("Bedientableaubau"), 10.833333333333333)
self.assertEqual(dl.get_hours_of("Vormontage_im_Haus"), 0) self.assertEqual(dl.get_hours_of("Vormontage_im_Haus"), 0)
def test_anschlussleistung(self): def test_anschlussleistung(self):
@@ -4097,7 +4124,7 @@ class TestObjectMethods(unittest.TestCase):
dl = Dienstleistung(Anzahl_DL, hw) dl = Dienstleistung(Anzahl_DL, hw)
Anzahl_Ergebnis = {} Anzahl_Ergebnis = {}
erg = Ergebnis(Anzahl_Ergebnis, hw, dl, emo) erg = Ergebnis(Anzahl_Ergebnis, hw, dl, emo)
self.assertAlmostEqual(erg.get_cost_of("E_Werkstatt"), 6298.56) self.assertAlmostEqual(erg.get_cost_of("E_Werkstatt"), 6298.6666666666667)
self.assertEqual(erg.get_cost_of("Schaltschrankbau_extern_Mehrkosten"), 0) self.assertEqual(erg.get_cost_of("Schaltschrankbau_extern_Mehrkosten"), 0)
self.assertEqual(erg.get_cost_of("Dienstleistung_in_LL"), 10129.5) self.assertEqual(erg.get_cost_of("Dienstleistung_in_LL"), 10129.5)
self.assertEqual(erg.get_cost_of("Pflichtenheft"), 0) self.assertEqual(erg.get_cost_of("Pflichtenheft"), 0)
@@ -4115,7 +4142,8 @@ class TestObjectMethods(unittest.TestCase):
self.assertEqual(erg.get_cost_of("SPS_Anlagenbetreuung"), 0) self.assertEqual(erg.get_cost_of("SPS_Anlagenbetreuung"), 0)
self.assertEqual(erg.get_cost_of("PC_Anlagenbetreuung"), 0) self.assertEqual(erg.get_cost_of("PC_Anlagenbetreuung"), 0)
self.assertEqual(erg.get_cost_of("Anlagenbetreuung_durch_Montage"), 0) self.assertEqual(erg.get_cost_of("Anlagenbetreuung_durch_Montage"), 0)
self.assertEqual(erg.get_sum_of_costs(hw), 104833.17) self.assertEqual(erg.get_sum_of_costs(hw), 104833.16666666666)
erg.summary_costs(hw)
def test_Unittests(): def test_Unittests():
unittest.main() unittest.main()
+1 -1
View File
@@ -293,7 +293,7 @@ class TestObjectMethods(unittest.TestCase):
self.assertEqual(mg.get_value_of_object('puffer', 'Hauptschalter_Ein-Meldung_Korrektur'), 0) self.assertEqual(mg.get_value_of_object('puffer', 'Hauptschalter_Ein-Meldung_Korrektur'), 0)
zf = mg.zusammenfassung() zf = mg.zusammenfassung()
#self.assertEqual(zf['Gesamtanzahl_Antriebe'], 44) self.assertEqual(zf['Gesamtanzahl_Antriebe'], 44)
self.assertEqual(zf['Sensor_optisch_Traverse'], 68) self.assertEqual(zf['Sensor_optisch_Traverse'], 68)
self.assertEqual(zf['Sensor_induktiv_Spulenalter_Zug_positionierung'], 4) self.assertEqual(zf['Sensor_induktiv_Spulenalter_Zug_positionierung'], 4)
self.assertEqual(zf['Sensor_Spulenprüfung_voll_leer'], 0) self.assertEqual(zf['Sensor_Spulenprüfung_voll_leer'], 0)
+2 -2
View File
@@ -507,7 +507,7 @@ class RSM_FA():
self._Mengen["Mit_Drucktaster"] = 0 self._Mengen["Mit_Drucktaster"] = 0
self._Mengen["Mit_Drucktaster_Korrektur"] = anzahl.get("Mit_Drucktaster_Korrektur",0) self._Mengen["Mit_Drucktaster_Korrektur"] = anzahl.get("Mit_Drucktaster_Korrektur",0)
self._Mengen["Meldelampe_Überstrom"] = math.ceil(anzahl.get("Anzahl_RSM", 0)/3) + anzahl.get("Meldelampe_Überstrom_Korrektur", 0) self._Mengen["Meldelampe_Überstrom"] = math.ceil(anzahl.get("Anzahl_RSM", 0)/3) + anzahl.get("Meldelampe_Überstrom_Korrektur", 0)
self._Mengen["Meldelampe_Überstrom_Korrektur"] = anzahl.get("Meldelampe_Überstrom_Korrektur", 0) ###f bei jayjay durch 10 statt 3... generelle änderung oder immer manuell? self._Mengen["Meldelampe_Überstrom_Korrektur"] = anzahl.get("Meldelampe_Überstrom_Korrektur", 0)
self._Mengen["Hauptschalter_Ein_Meldung"] = math.ceil(anzahl.get("Anzahl_RSM", 0)/3) + anzahl.get("Hauptschalter_Ein-Meldung_Korrektur", 0) self._Mengen["Hauptschalter_Ein_Meldung"] = math.ceil(anzahl.get("Anzahl_RSM", 0)/3) + anzahl.get("Hauptschalter_Ein-Meldung_Korrektur", 0)
self._Mengen["Hauptschalter_Ein-Meldung_Korrektur"] = anzahl.get("Hauptschalter_Ein-Meldung_Korrektur", 0) self._Mengen["Hauptschalter_Ein-Meldung_Korrektur"] = anzahl.get("Hauptschalter_Ein-Meldung_Korrektur", 0)
self._Mengen["Werma_Rundumleuchte_Störung"] = math.ceil(anzahl.get("Anzahl_RSM", 0)/10) + anzahl.get("Werma_Rundumleuchte_Störung_Korrektur", 0) self._Mengen["Werma_Rundumleuchte_Störung"] = math.ceil(anzahl.get("Anzahl_RSM", 0)/10) + anzahl.get("Werma_Rundumleuchte_Störung_Korrektur", 0)
@@ -588,7 +588,7 @@ class Flyer_F40_EJet_inc_Putz():
sensorfaktor_nachpuffer = 5 sensorfaktor_nachpuffer = 5
self._Mengen["Sensor_optisch_Traverse"] = self._Flyer_Anzahl * (self._Mengen.get("Anzahl_Schienen", 0) + sensorfaktor_nachpuffer) + anzahl.get("Dreifachweiche", 0) * 2 + anzahl.get("Sensor_optisch_Traverse_Korrektur", 0) self._Mengen["Sensor_optisch_Traverse"] = self._Flyer_Anzahl * (self._Mengen.get("Anzahl_Schienen", 0) + sensorfaktor_nachpuffer) + anzahl.get("Dreifachweiche", 0) * 2 + anzahl.get("Sensor_optisch_Traverse_Korrektur", 0)
self._Mengen["Sensor_optisch_Traverse_Korrektur"] = self.mengen.get("Sensor_optisch_Traverse_Korrektur", 0) self._Mengen["Sensor_optisch_Traverse_Korrektur"] = self.mengen.get("Sensor_optisch_Traverse_Korrektur", 0)
self._Mengen["Sensor_induktiv_Spulenhalter"] = self._Flyer_Anzahl * 1 + anzahl.get("Sensor_induktiv_Spulenhalter_Korrektur", 0) ###f bei jayjay * 2 self._Mengen["Sensor_induktiv_Spulenhalter"] = self._Flyer_Anzahl * 1 + anzahl.get("Sensor_induktiv_Spulenhalter_Korrektur", 0)
self._Mengen["Sensor_induktiv_Spulenhalter_Korrektur"] = self.mengen.get("Sensor_induktiv_Spulenhalter_Korrektur", 0) self._Mengen["Sensor_induktiv_Spulenhalter_Korrektur"] = self.mengen.get("Sensor_induktiv_Spulenhalter_Korrektur", 0)
self._Mengen["Bedientableau_2fach"] = self._Flyer_Anzahl + anzahl.get("Bedientableau_2fach_Korrektur", 0) self._Mengen["Bedientableau_2fach"] = self._Flyer_Anzahl + anzahl.get("Bedientableau_2fach_Korrektur", 0)
self._Mengen["Bedientableau_2fach_Korrektur"] = self.mengen.get("Bedientableau_2fach_Korrektur", 0) self._Mengen["Bedientableau_2fach_Korrektur"] = self.mengen.get("Bedientableau_2fach_Korrektur", 0)