Corevatis Erpnext

Corevatis-ERPNext-Adapter (GPLv3): Custom Fields, Hooks und Generatoren für ERPNext v16

Install Corevatis Erpnext

bench get-app https://github.com/corevatis/corevatis_erpnext

Tags

  • corevatis
  • erpnext
  • frappe
  • frappe-app
  • handwerk

Add the Frappe Gems badge to your README

Maintain Corevatis Erpnext? Paste this into your README:

[![Listed on Frappe Gems](https://frappegems.com/api/method/frappe_gems.seo.badge?app=corevatis%2Fcorevatis_erpnext)](https://frappegems.com/gems/apps/corevatis/corevatis_erpnext)

About Corevatis Erpnext

Corevatis ERPNext

Öffentlicher ERPNext-Adapter des Corevatis-Handwerker-MVP für Frappe/ERPNext v16 (Python 3.14): Custom Fields an Lead, Item, Quotation, Sales Order, Project und Sales Invoice, doc_events-Hooks, Generatoren (Aufmaß → Quotation, Sales Order → Tasks + Material Request, Abschlags-/Schlussrechnung), Pflichtprüfungen und Print Formats auf ERPNext-Belegen.

Die Geschäftslogik (Mengen, Kalkulation, Abschläge) liegt nicht hier, sondern in der Kern-App corevatis; dieser Adapter ruft sie ausschließlich über deren whitelisted API (corevatis.api.*) auf.

Site-Template

bench --site  execute corevatis_erpnext.setup.apply_site_template --kwargs '{"template": "huelshoff"}'
bench --site  execute corevatis_erpnext.setup.verify_site_template --kwargs '{"template": "huelshoff"}'

Eigene Vorlage: JSON mit "extends": "_standard" und company (Name, Kürzel, chart_of_accounts SKR03/SKR04), Aufruf mit {"config_file": "/absoluter/pfad.json"}. Idempotent; ein zweiter Lauf meldet "changes": [].

Leistungskatalog

bench --site  execute corevatis_erpnext.katalog.importieren --kwargs '{"firma": "Hülshoff Sanierungstechnik"}'
bench --site  execute corevatis_erpnext.katalog.uebersicht --kwargs '{"firma": "Hülshoff Sanierungstechnik"}'

Paket katalog/daten/abdichtung/ (Aufgabe 2.3): 00_leistungsregel.csv (fünf allgemeine Leistungsregeln, nur mit installiertem corevatis) und acht Data-Import-Vorlagen (CSV, Feldnamen als Spaltenköpfe) für UOM, Item Group, Price List, Workstation, Operation, Item, Item Price und BOM (Kostenkomponente „Lohn Montage“ legt die App selbst an) – im Desk über Data Import in der Reihenfolge der Dateinamen einspielbar (BOM mit „Submit After Import“) oder per Importer. 48 Leistungspositionen (46 mit Stückliste: Material zu Standard-Einkauf + Operation „Montage“ in min/Einheit), 32 Materialien, Preisliste Standard-Verkauf. Alle Preise und Zeiten sind gekennzeichnete Annahmen (ANNAHME 2.3), bis Hülshoffs Angebote vorliegen. Der Importer ist idempotent und überschreibt abweichende Datensätze (z. B. im Desk geänderte Preise) nur mit "force": true; Stücklisten bekommen dann eine neue Standard-Version. Herstellkosten rechnet ERPNext in der Stückliste, die Angebotskalkulation folgt in corevatis (4.1). Doku: docs/2.3-leistungskatalog.md im Repo Handwerker.

Web Form „Kostenlose Einschätzung“

Route /kostenlose-einschaetzung/new (Gast, kein Login): Anfrage → Lead mit bis zu 3 privaten Fotos. Logik in corevatis_erpnext/webform/einschaetzung.py, Formular unter corevatis_erpnext/corevatis_erpnext/web_form/kostenlose_einschaetzung/.

site_config Bedeutung Standard
cv_webform_embedding_domains Origins, die das Formular per iframe einbetten dürfen (frame-ancestors) keine
cv_webform_datenschutz_url Link der Datenschutzerklärung /datenschutz
cv_webform_rate_limit / cv_webform_rate_window Einsendungen je Client-IP (request_ip) und Zeitfenster (s); ohne gültige IP gemeinsamer Bucket mit einem Drittel 10 / 3600
cv_webform_rate_limit_global angenommene Einsendungen je Zeitfenster insgesamt (Rückfallschranke; abgewiesene Versuche zählen nicht) 100

Bekannte E-Mail-Adresse: Gibt es zur E-Mail schon einen offenen Lead (Anfragestatus nicht Gewonnen/Verloren, ERPNext-Status nicht Converted/Do Not Contact), legt das Formular keinen neuen Lead und keinen neuen Contact an: Die neuen Angaben erscheinen als Kommentar „Weitere Anfrage über das Web Form“ im Verlauf dieses Leads, die Fotos als private Anhänge (leere Foto-Felder werden gefüllt, belegte bleiben); Status und Felder des Leads bleiben unverändert. Ohne offenen Lead (z. B. nur ein verlorener) entsteht ein neuer Lead. Die ERPNext-Einstellung „Lead-Dubletten per E-Mail erlauben“ bleibt aus – die Dublettenprüfung für Desk, Import und E-Mail gilt weiter. Die Antwort an den Browser ist in allen Fällen gleich; der Erfolgstext weist darauf hin, dass eine noch offene Anfrage ergänzt wird.

Einbettung (WordPress, „Individuelles HTML“-Block):



CRM am Lead (Epic 1)

  • Termin anlegen (Büro/Meister): Dialog → corevatis_erpnext.crm.termin.termin_anlegen (Event + Zuweisung Meister + Lead.cv_termin, Kundenbestätigung in die Email Queue). Im MVP gibt es kein SMTP: Ohne ausgehendes E-Mail-Konto bleibt der Eintrag „Not Sent“, der Text wird über „Bestätigung anzeigen/kopieren“ manuell übermittelt. „Termin anlegen“ bei bestehendem Termin sagt den alten über Event.save() ab (Hooks wie der Google-Sync laufen).
  • Terminbestätigung (Email Template „Terminbestätigung Besichtigung“): keine Fixture mehr. corevatis_erpnext.crm.email_vorlagen.ensure_email_templates legt die Vorlage in after_install/after_migrate an und aktualisiert sie nur, solange sie auf der Site unverändert ist (Hash-Vergleich wie beim Druckformat-Sync). Änderungen im Desk bleiben erhalten; die ausgelieferte Fassung zurückholen: bench --site execute corevatis_erpnext.crm.email_vorlagen.ensure_email_templates --kwargs '{"force": true}' (oder einmalig cv_email_template_force_sync: 1 in der site_config).
  • Google Calendar (Datenschutzentscheidung): Termine gehen nur an den Google-Kalender des Meisters, wenn die Site es erlaubt – site_config cv_termin_google_sync: 1, Standard aus. Übertragen werden dann Betreff (mit Kundenname) und PLZ/Ort.
  • Als verloren markieren: Der Desk-Dialog speichert Verlustgrund und Workflow-Übergang in einem Aufruf (corevatis_erpnext.anfrage.lead.als_verloren_markieren).
  • Foto-Galerie: corevatis_erpnext.galerie(frm, {fieldname}) aus public/js/galerie.js, für weitere Doctypes die Datei in doctype_js eintragen und im refresh aufrufen.

Lizenz

Copyright (C) 2026 Corevatis

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 3. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See LICENSE (GNU GPL v3).

Installation

bench get-app erpnext --branch version-16
bench get-app https://github.com/corevatis/corevatis_erpnext --branch main
bench --site  install-app corevatis_erpnext   # installiert erpnext mit (required_apps)

Struktur

corevatis_erpnext/
  hooks.py              required_apps = ["erpnext"], after_install, override accept (Web Form)
  webform/              Web Form „Kostenlose Einschätzung“ (Aufgabe 1.2)
  setup/                Site-Template (Aufgabe 0.4): site_template.py, config.py, templates/*.json
  katalog/              Leistungskatalog (2.3): importer.py, daten//*.csv (Data-Import-Vorlagen)
  crm/                  Lead: Termin + Terminbestätigung (1.3), Foto-Galerie get_bilder (1.5),
                        Custom Fields cv_termin/cv_galerie (setup.py)
  crm/vorlagen/         Email Template „Terminbestätigung Besichtigung“ (Quelle für email_vorlagen.py)
  public/js/            Desk-Skripte (hooks.doctype_js): galerie.js, lead_galerie.js, lead_termin.js
  corevatis_erpnext/    Modul "Corevatis ERPNext"
  translations/de.csv   deutsche Übersetzungen
  tests/                Installationstests

CI

Job Prüfung
lint ruff check/format, import-linter (kein Python-Import aus corevatis)
tests frische Bench (Frappe + ERPNext version-16, Python 3.14, Node 24, MariaDB 11.8), install-app corevatis_erpnext, bench run-tests --app corevatis_erpnext, Lizenzliste THIRD_PARTY_LICENSES.md (Artefakt)

Release: Version in corevatis_erpnext/__init__.py und CHANGELOG.md anheben, Tag vX.Y.Z pushen – der Workflow Release erzeugt das GitHub-Release mit Changelog-Auszug und Lizenzliste.

Related Other apps for Frappe & ERPNext

  • Erpnext — Free and Open Source Enterprise Resource Planning (ERP)
  • Helpdesk — Modern, Streamlined, Free and Open Source Customer Service Software
  • Print Designer — Visual print designer for Frappe / ERPNext
  • Ctr — CTR模型代码和学习笔记总结
  • Whitelabel — Whitelabel ERPNext
  • Fossunited — fossunited.org
  • Helm — Helm Chart Repository for Frappe/ERPNext
  • Frappe Attachments S3 — A frappe app to upload file attachments in doctypes to s3.