diff --git a/rieter_ekalk.py b/rieter_ekalk.py index 905068b..306602a 100644 --- a/rieter_ekalk.py +++ b/rieter_ekalk.py @@ -627,8 +627,6 @@ class Flyer_F40_EJet_inc_Putz(): else: 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) -###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) if (anzahl.get("Single_Line_Durchfahrt", False)): @@ -1308,7 +1306,7 @@ class HW(): "speicherkarte_fuer_sps_512_kb": 172.5, # 708003012 "sps_simatic_s7_cpu317_2_pn_dp": 3957, # 708003007 "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_1518_4": 5892, # 6ES7518-4AP00-0AB0 "sps_et200_1512sp": 705.75, # 709000003 @@ -1994,6 +1992,7 @@ class HW(): else: preis = anz * self.ep[k] res += preis + return res def summe_vorort(self): @@ -2220,13 +2219,13 @@ class Dienstleistung(): self._Hours["Klemmkastenbau_je_2h"] = (hw.anzahl("klemmkasten_rsm") + 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 +\ - hw.anzahl("bedienst_2fach_wechs_bcd_10f") * hw.zpe_e_werkstatt.get("bedienst_2fach_wechs_bcd_10f") / 60 +\ - hw.anzahl("bedienstation_2fach_kpl") * hw.zpe_e_werkstatt.get("bedienstation_2fach_kpl") / 60 +\ - hw.anzahl("bedienstation_3fach_kpl") * hw.zpe_e_werkstatt.get("bedienstation_3fach_kpl") / 60 +\ - hw.anzahl("bedienstation_4fach_kpl") * hw.zpe_e_werkstatt.get("bedienstation_4fach_kpl") / 60 +\ - hw.anzahl("bedienstation_6fach_kpl") * hw.zpe_e_werkstatt.get("bedienstation_6fach_kpl") / 60 +\ - hw.anzahl("drucktaster_automatische_umfahrung") * hw.zpe_e_werkstatt.get("drucktaster_automatische_umfahrung"), 2) + self._Hours["Bedientableaubau"] = hw.get_h_of("bedienstation_1fach_kpl") +\ + hw.get_h_of("bedienst_2fach_wechs_bcd_10f")+\ + hw.get_h_of("bedienstation_2fach_kpl") +\ + hw.get_h_of("bedienstation_3fach_kpl") +\ + hw.get_h_of("bedienstation_4fach_kpl") +\ + hw.get_h_of("bedienstation_6fach_kpl") +\ + hw.get_h_of("drucktaster_automatische_umfahrung") self._Hours["Vormontage_im_Haus"] = self.anzahl("Vormontage_im_Haus") def __repr__(self): return repr(self._Hours) @@ -2380,7 +2379,7 @@ class Anschlussl(): mengen = { #auskommentiert, was später berechnet wird #"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, "Antrieb":0.12, #kilo Watt "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["SPS_Inbetriebsetzung"] = self.eingaben_h.get("SPS_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["Bedienungsanleitung_Emmert"] = dl.get_hours_of("SPS_Doku") 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()) def get_cost_of(self, 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): @@ -3056,7 +3084,6 @@ class TestObjectMethods(unittest.TestCase): Anzahl_AL ={} al = Anschlussl(Anzahl_AL, mg) - self.assertEqual(hw.anzahl("schaltschrankgehaeuse_b1x1200_zubehoer"), 0) self.assertEqual(hw.anzahl("schaltschrankgehaeuse_b2x800_zubehoer"), 0) 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.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_h_zeiten_hardwareplanung(), 167.0) self.assertEqual(hw.summe_h_unterverteiler_e_werkstatt(), 94.0) @@ -3638,8 +3665,8 @@ class TestObjectMethods(unittest.TestCase): Anzahl_AL ={} al = Anschlussl(Anzahl_AL, mg) self.assertEqual(dl.stunden_diensleistung_hardwareplanung(), 225.1) - self.assertEqual(dl.stunden_elektrowerkstatt(), 196.83) - self.assertEqual(dl.summe_stunden_dienstleistung_in_landsberg(), 421.93) + self.assertEqual(dl.stunden_elektrowerkstatt(), 196.83333333333333333333333333) + 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("Erstellung_Steuerungslayout"), 41.75) 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("Unterverteilerbau"), 94) 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) def test_anschlussleistung(self): @@ -4097,7 +4124,7 @@ class TestObjectMethods(unittest.TestCase): dl = Dienstleistung(Anzahl_DL, hw) Anzahl_Ergebnis = {} 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("Dienstleistung_in_LL"), 10129.5) 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("PC_Anlagenbetreuung"), 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(): unittest.main() diff --git a/test_jayjay.py b/test_jayjay.py index 6a322ec..659bedf 100644 --- a/test_jayjay.py +++ b/test_jayjay.py @@ -293,7 +293,7 @@ class TestObjectMethods(unittest.TestCase): self.assertEqual(mg.get_value_of_object('puffer', 'Hauptschalter_Ein-Meldung_Korrektur'), 0) 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_induktiv_Spulenalter_Zug_positionierung'], 4) self.assertEqual(zf['Sensor_Spulenprüfung_voll_leer'], 0) diff --git a/utztex_group.py b/utztex_group.py index 330a154..9120d3e 100644 --- a/utztex_group.py +++ b/utztex_group.py @@ -507,7 +507,7 @@ class RSM_FA(): self._Mengen["Mit_Drucktaster"] = 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_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_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) @@ -588,7 +588,7 @@ class Flyer_F40_EJet_inc_Putz(): 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_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["Bedientableau_2fach"] = self._Flyer_Anzahl + anzahl.get("Bedientableau_2fach_Korrektur", 0) self._Mengen["Bedientableau_2fach_Korrektur"] = self.mengen.get("Bedientableau_2fach_Korrektur", 0)