Ergebnisse mit mehreren Tabs rausgeschrieben
This commit is contained in:
+207
-5
@@ -5,6 +5,189 @@ import os
|
||||
import configparser
|
||||
|
||||
|
||||
order_dienstleistungen = [
|
||||
"Pflichtenheft_Autom_Schnittstellen",
|
||||
|
||||
"Erstellung_Steuerungslayout",
|
||||
"Schaltplanerstellung_incl_Korrekturen",
|
||||
"Projektkoordination",
|
||||
"Materialdispo",
|
||||
"Abstimmung_mit_E_Werkstatt",
|
||||
"Erstellen_E_Montageunterlagen",
|
||||
|
||||
"PC_Installation",
|
||||
"Oberfläche_Simulation",
|
||||
"SPS_Test_im_Haus_Simulation",
|
||||
"Bedienerhandbuch",
|
||||
"SPS_Doku",
|
||||
"PC_Doku",
|
||||
"Summe_Dienstleistungen_Hardwareplanung",
|
||||
|
||||
"Schaltschrankbau",
|
||||
"Unterverteilerbau",
|
||||
"Klemmkastenbau_je_2h",
|
||||
"Bedientableaubau",
|
||||
"Vormontage_im_Haus",
|
||||
"Summe_Dienstleistungen_Elektrowerkstatt",
|
||||
|
||||
"Summe_Dienstleistungen_in_LL",
|
||||
]
|
||||
order_ergebnisse = [
|
||||
"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",
|
||||
"GESAMT",
|
||||
]
|
||||
order_hardware = [
|
||||
"schaltschrankgehaeuse_b1x1200_zubehoer",
|
||||
"schaltschrankgehaeuse_b2x800_zubehoer",
|
||||
"schaltschrankgehaeuse_b1x1200+1x800_zubehoer",
|
||||
"sps_simatic_s7_cpu315_2_pn_dp",
|
||||
"speicherkarte_fuer_sps_512_kb",
|
||||
"sps_simatic_s7_cpu317_2_pn_dp",
|
||||
"speicherkarte_fuer_sps2_mb",
|
||||
"sps_simatic_s7_1515_2",
|
||||
"sps_simatic_s7_1517_3",
|
||||
"sps_simatic_s7_1518_4",
|
||||
"sps_et200_1512sp",
|
||||
"memory_card_2_gb",
|
||||
"et200_sp_ea_ebene",
|
||||
"netzwerk_fernwartung",
|
||||
"abgang_400v",
|
||||
"abgang_24_v",
|
||||
"anlagenrechner",
|
||||
"anlagenrechner_ohne_bildschirm",
|
||||
"pulteinbau_monitor_srline_rflat_24fhd",
|
||||
"kurzhubtastatur_kbt06_mit_touchpad_uslayout",
|
||||
"netzwerk_display_adapter_lindy",
|
||||
"zusaetzlicher_bildschirm",
|
||||
"schaltschrank",
|
||||
"unterverteiler_fuer_1neuenhauser_pm",
|
||||
"unterverteiler_fuer_1flyer",
|
||||
"unterverteiler_fuer_2flyer",
|
||||
"unterverteiler_fuer_1flyer_f40_mit_integrierter_putzmaschine",
|
||||
"unterverteiler_fuer_2flyer_f40_mit_integrierter_putzmaschine",
|
||||
"unterverteiler_fuer_puffer",
|
||||
"unterverteiler_fuer_5_rsm_fa",
|
||||
"korrektur_5_rsm_zusaetzlich_im_unterverteiler",
|
||||
"unterverteiler_fuer_10_rsm_fa",
|
||||
"korrektur_10_rsm_zusaetzlich_im_unterverteiler",
|
||||
"unterverteiler_fuer_3_rsm_fa_mit_umfahrung_steckbar",
|
||||
"korrektur_3_rsm_zusaetzlich_im_unterverteiler",
|
||||
"unterverteiler_fuer_4_rsm_direct",
|
||||
"korrektur_4_rsm_zusaetzlich_im_unterverteiler",
|
||||
"unterverteiler_fuer_12_rsm_direct",
|
||||
"korrektur_12_rsm_zusaetzlich_im_unterverteiler",
|
||||
"unterverteiler_fuer_8_rsm_direct",
|
||||
"korrektur_8_rsm_direct_zusaetzlich_im_unterverteiler",
|
||||
"busverteiler_6_rsm_direct",
|
||||
"korrektur_6_rsm_zusaetzlich_im_busverteiler",
|
||||
"busverteiler_8_rsm_direct",
|
||||
"korrektur_8_rsm_zusaetzlich_im_busverteiler",
|
||||
"antrieb_unidirektional_halbleiter",
|
||||
"antrieb_bidirektional_halbleiter",
|
||||
"antrieb_unidirektional_schuetz",
|
||||
"antrieb_bidirektional_schuetz",
|
||||
"motorschutzschalter",
|
||||
"wendeschuetzschaltung",
|
||||
"frequenzumrichter",
|
||||
"bedienstation_1fach_kpl",
|
||||
"bedienst_2fach_wechs_bcd_10f",
|
||||
"bedienstation_2fach_kpl",
|
||||
"halter_bedientableau_2fach",
|
||||
"bedienstation_3fach_kpl",
|
||||
"halter_bedientableau_3fach",
|
||||
"bedienstation_4fach_kpl",
|
||||
"halter_bedientableau_4fach",
|
||||
"bedienstation_6fach_kpl",
|
||||
"halter_bedienstation_6fach",
|
||||
"drucktaster_automatische_umfahrung",
|
||||
"halter_fuer_drucktaster",
|
||||
"ET200_SP",
|
||||
"et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45",
|
||||
"korrektur_et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45",
|
||||
"et200_sp_eingangskarte_8_de",
|
||||
"korrektur_et200_sp_eingangskarte_8_de",
|
||||
"et200_sp_eingangskarte_16_de",
|
||||
"et200_sp_eingangskarte_8_do",
|
||||
"korrektur_et200_sp_eingangskarte_8_do",
|
||||
"et200_sp_eingangskarte_16_do",
|
||||
"et200_sp_base_unit_neue_last_mit_potKlemmen",
|
||||
"korrektur_et200_sp_base_unit_neue_last_mit_potKlemmen",
|
||||
"et200_sp_base_unit_links_gebrueckt_mit_pot_klemmen",
|
||||
"et200_sp_base_unit_neue_last",
|
||||
"korrektur_et200_sp_base_unit_neue_last",
|
||||
"et200_sp_base_unit_links_gebrueckt",
|
||||
"korrektur_et200_sp_base_unit_links_gebrueckt",
|
||||
"SLIO",
|
||||
"et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45_SLIO",
|
||||
"korrektur_et_200sp_bundle_profinet_im_155_6pn_st_ba_2xrj45_SLIO",
|
||||
"slio_eingangskarte_4_de",
|
||||
"korrektur_slio_eingangskarte_4_de",
|
||||
"slio_eingangskarte_8_de",
|
||||
"korrektur_slio_eingangskarte_8_de",
|
||||
"slio_ausgangskarte_4_do",
|
||||
"korrektur_slio_ausgangskarte_4_do",
|
||||
"slio_ausgangskarte_8_do",
|
||||
"korrektur_slio_ausgangskarte_8_do",
|
||||
"slio_power_modul",
|
||||
"korrektur_slio_power_modul",
|
||||
"slio_4_x_dc_24v_4_x_dc_0v",
|
||||
"korrektur_slio_4_x_dc_24v_4_x_dc_0v",
|
||||
"slio_8_x_dc_24v",
|
||||
"slio_8_x_dc_0v",
|
||||
"korrektur_slio_8_x_dc_0v",
|
||||
"movimot_fu_mit_anschaltung",
|
||||
"sensor_optisch_traverse",
|
||||
"sensorhalter_ohne_sensor",
|
||||
"reflexionslichtschranke_rsm_direct",
|
||||
"stoppersensor_induktiv_mit_halter",
|
||||
"sensor_spulenpruefung_voll_leer",
|
||||
"seilzugschalter",
|
||||
"seil_fuer_seilzugschalter",
|
||||
"blitzleuchte",
|
||||
"spulenumsetzstation",
|
||||
"sensorkabel_je_20m",
|
||||
"stopper_weichenkabel_je_5m",
|
||||
"motorkabel_je_30m",
|
||||
"kabelpritschen_leitern_200_60",
|
||||
"kabelpritsche_rsm_100_60",
|
||||
"kabelpritsche_rsm_50_35",
|
||||
"klemmkasten_rsm",
|
||||
"klemmkasten_direct_in_rsm",
|
||||
"erdung",
|
||||
"kleinteile_rohre_schellen_kabelbinder_ect",
|
||||
"kabel_fuer_klemmkasten_und_bts_60m",
|
||||
"kabel_fuer_1fach_bts_zug_wechseln",
|
||||
"zuleitung_75_m_unterverteiler_4x4mm2_400vac",
|
||||
"zuleitung_75_m_unterverteiler_12x4mm2_24_vdc",
|
||||
"korrektur_zuleitung_75_m_unterverteiler_12x4mm2_24_vdc",
|
||||
"zuleitung_75_m_unterverteiler_12x2_5mm2_24_vdc",
|
||||
"korrektur_zuleitung_75_m_unterverteiler_12x2_5mm2_24_vdc",
|
||||
"zuleitung_55_m_klemmkasten_rsm_mitte_14g1_5_mm",
|
||||
"zuleitung_55_m_klemmkasten_rsm_mitte_14g1_0_mm",
|
||||
"profinetkabel",
|
||||
"korrektur_profinetkabel",
|
||||
"schnittstellen_8x1mm2_30m",
|
||||
"Summe_Landsberg",
|
||||
"Summe_vorOrt",
|
||||
"Summe_gesamt",
|
||||
]
|
||||
class cfg():
|
||||
"""
|
||||
Liest die config-Datei ein, in der Stückpreise und Zeiteinheiten pro Bauteil wie in der rieter_ekalk Excel-Datei verwendet angegeben sind, und schreibt sie in ein Dictionary.
|
||||
@@ -108,6 +291,14 @@ def run_calc(infile, outfile, SivasConfig):
|
||||
|
||||
hw = rek.HW(hwep, hwhp, hwzew)
|
||||
hw.calc(Anzahl_HW, mg, eas)
|
||||
hardware = hw.get_anzahl()
|
||||
hardware["Summe_vorOrt"] = hw.summe_vorort()
|
||||
hardware["Summe_gesamt"] = hw.summe_gesamt()
|
||||
hardware["Summe_Landsberg"] = hw.summe_in_LL()
|
||||
hardware["Zeiten_Hardwareplanung"] = hw.summe_h_zeiten_hardwareplanung()
|
||||
hardware["Zeiten_Unterverteiler_Werkstatt"] = hw.summe_h_unterverteiler_e_werkstatt()
|
||||
df_temp = pd.DataFrame.from_dict(data=hardware, orient='index', columns=['Strück'])
|
||||
df_hardware = pd.DataFrame(data=df_temp, index=order_hardware)
|
||||
|
||||
emoz = SivasConfig.getTypedDict("Elektro-Montagezeiten")
|
||||
emo = rek.EMO(emoz)
|
||||
@@ -115,18 +306,29 @@ def run_calc(infile, outfile, SivasConfig):
|
||||
|
||||
Anzahl_DL = infileCfg.getTypedDict("DL")
|
||||
dl = rek.Dienstleistung(Anzahl_DL, hw)
|
||||
dienstleistung = dl.get_hours()
|
||||
dienstleistung["Summe_Dienstleistungen_Hardwareplanung"] = dl.stunden_diensleistung_hardwareplanung()
|
||||
dienstleistung["Summe_Dienstleistungen_Elektrowerkstatt"] = dl.stunden_elektrowerkstatt()
|
||||
dienstleistung["Summe_Dienstleistungen_in_LL"] = dl.summe_stunden_dienstleistung_in_landsberg()
|
||||
df_temp = pd.DataFrame.from_dict(data=dienstleistung, orient='index', columns=['Aufwand'])
|
||||
df_dienst = pd.DataFrame(data=df_temp, index=order_dienstleistungen)
|
||||
|
||||
Anzahl_Ergebnis = infileCfg.getTypedDict("Ergebnis")
|
||||
kph = SivasConfig.getTypedDict("Kosten pro h")
|
||||
erg = rek.Ergebnis(kph)
|
||||
erg.calc(Anzahl_Ergebnis, hw, dl, emo)
|
||||
|
||||
summary = erg.summary_costs(hw)
|
||||
dienstleistung = dl.get_hours()
|
||||
ergebnisse = erg.summary_costs(hw)
|
||||
df_temp = pd.DataFrame.from_dict(data=ergebnisse, orient='index', columns=['Aufwand'])
|
||||
df_aufwand = pd.DataFrame(data=df_temp, index=order_ergebnisse)
|
||||
|
||||
df = pd.DataFrame.from_dict(data=summary, orient='index', columns=['Aufwand'])
|
||||
#df = pd.DataFrame.from_dict(data=dienstleistung, orient='index', columns=['Dienstleistunge'])
|
||||
df.to_excel(outfile, sheet_name="Kostenaufstellung")
|
||||
|
||||
#df = pd.DataFrame.from_dict(data=dienstleistung, orient='index', columns=['Dienstleistungen'])
|
||||
|
||||
with pd.ExcelWriter(outfile) as writer:
|
||||
df_aufwand.to_excel(writer, sheet_name='Kostenaufstellung')
|
||||
df_hardware.to_excel(writer, sheet_name='Hardware')
|
||||
df_dienst.to_excel(writer, sheet_name='Dienstleistungen')
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
||||
+4
-1
@@ -2033,7 +2033,7 @@ class HW():
|
||||
del self._anzahl[item]
|
||||
# with open('HW_Daten.txt', 'w') as convert_file:
|
||||
# convert_file.write(json.dumps(self._anzahl))
|
||||
|
||||
|
||||
def __repr__(self):
|
||||
return repr(self._anzahl)
|
||||
|
||||
@@ -2048,6 +2048,9 @@ class HW():
|
||||
def anzahl(self, partname, default_val = 0):
|
||||
return self._anzahl.get(partname, default_val)
|
||||
|
||||
def get_anzahl(self):
|
||||
return self._anzahl
|
||||
|
||||
def summe_gesamt(self):
|
||||
"""
|
||||
:return: price sum of all given items within self._anzahl
|
||||
|
||||
Reference in New Issue
Block a user