Corevatis Erpnext
Corevatis-ERPNext-Adapter (GPLv3): Custom Fields, Hooks und Generatoren für ERPNext v16
- Author: corevatis
- Repository: https://github.com/corevatis/corevatis_erpnext
- GitHub stars: 0
- Forks: 0
- License: GPL-3.0
- Category: Other
- Maintenance: Actively Maintained
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:
[](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 überEvent.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_templateslegt die Vorlage inafter_install/after_migratean 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 einmaligcv_email_template_force_sync: 1in 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})auspublic/js/galerie.js, für weitere Doctypes die Datei indoctype_jseintragen und imrefreshaufrufen.
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.