Führt ein lieferantenagnostisches Lizenzmodell ein, das den Weg für den
künftigen Ersatz der adnconnect-App ebnet:
- Supply Subscription: Golden Record pro Subscription-Lifecycle, unique
über die externe Vendor-Subscription-ID (z. B. Microsoft Subscription-ID).
Denormalisierte Felder current_period_end, qty_current, last_event_date
werden aus den Events gepflegt.
- Supply Subscription Event: Eine Episode pro Abrechnungszeitraum, mit
Rück-Links auf Sales Invoice, Delivery Note, Purchase Invoice und
Supplier Import Line.
- Supplier Import Profile / Run / Line: Modulares Import-Framework, in dem
pro Lieferant (ADN, künftig ALSO/Ingram/…) ein Profil mit parser_key +
Defaults konfigurierbar ist. Ein Run bündelt einen konkreten Import
inklusive Kanonik-Zeilen und Statistiken.
- Custom Field „supply_subscription" auf Sales Invoice Item und Delivery
Note Item — das ist das einzige Standard-ERPNext-Feld, das unabhängig
vom Lieferanten hinzukommt. Alle weiteren Attribute werden über den
Link erreichbar.
Die Importer-Logik liegt separat (nächster Commit).
- IT Object: git_remote_url, git_branch, git_path_on_host (visible
only when type = Git Repository)
- Contact custom fields: teams_user_id, is_external_contractor,
contractor_for (via fixtures)
- Remove x509_certificate hooks from hooks.py (moved to DocType controller)
- Add Custom Field fixture export filter to hooks.py
- German translations (de.csv) for all new DocTypes and fields
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Maps work tracker projects, local directories, chat participants
to customers for automated work time attribution
- Fields: customer, source_type, pattern (glob), employee, note
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
frappe.model.set_value in a loop triggered ERPNext pricing recalculation per item,
causing values to be overwritten. Now sets values on locals objects directly and
triggers a single recalculation at the end.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>