mirror of
https://github.com/itsdave-de/msp.git
synced 2026-09-28 04:02:42 -03:00
f284399fec5c43c07c85466f3cc7e84fff8025fc
Generalisierung des bisher nur in adnconnect existierenden Konzepts „inkludierte Lizenzen" (über IT-Verträge gedeckte Microsoft-Seats) in einen lieferantenneutralen DocType im MSP-Modul. Damit wird die Pauschal-Vertrags-Logik unabhängig vom Distributor (ADN heute, ALSO/Ingram/Pax8 morgen). Datenmodell: - License Coverage (parent): customer + optional it_contract / valid_from / valid_to + enabled-Toggle + freie Notes. Mehrere Coverages pro Kunde sind zulässig (z. B. mehrere Standorte, parallele Verträge). - License Coverage Item (child): item-Link (lieferantenagnostisch) + qty. vendor_product_id wird vom Item gefetched für Plausibilität / Dokumentation. Builder-Integration (msp.importers.coverage + builder.py): - Pro Importlauf wird ein CoverageCache aller relevanten Kunden einmal aus der DB geladen (eine SQL-Abfrage statt N pro Position). - _append_line splittet jede CanonicalRow bei Bedarf in zwei Sales-Invoice-/ Delivery-Note-Items: min(qty, covered) mit discount_percentage=100 + „ohne Berechnung"-Hinweis, plus Restmenge zum Listpreis. - Subscription-Event referenziert die primäre (=erste) Item-Row, das supply_subscription-Link wird auf allen Item-Rows der kanonischen Zeile gesetzt. - Coverage greift nur bei echten Rechnungen, nicht bei Gutschriften. Migration: - Patch migrate_adn_included_services_to_license_coverage übernimmt bestehende ADN Included Services (parent + items) idempotent in License Coverage. Marker im Notes-Feld verhindert Doppel-Migration. Auf dem Testsystem 5/5 Records korrekt portiert. Validation: - Re-Import der 5 Test-Monate (Nov 2025 – Mär 2026) zeigt: die 5 Coverage-Kunden produzieren jetzt deckungsgleiche Beträge zu adnconnect (z. B. CUST-21877: 10× Premium berechnet + 11× zum 100%-Rabatt = exakt das Muster von SINV-269822). Verbleibende Diffs nur noch durch Power-BI-Pro-Tax-Template auf Testsystem. Reconciliation-POC erweitert: erp_coverage() liest die License Coverage über die ERPNext-REST-API; Reconciliation-Tabelle zeigt jetzt Spalten Graph / ERP / Coverage / Billable mit klassifizierten Status-Hinweisen (z. B. „Coverage > Graph = Upsell-Chance").
MSP
App for Managed Service Providers
License
GPLv3# msp
Languages
Python
65.7%
JavaScript
30.5%
PowerShell
3.8%