95 lines
3.8 KiB
Markdown
95 lines
3.8 KiB
Markdown
# ERP Enrichment Dry Run
|
|
|
|
Der ERP Enrichment Dry Run reichert ausschließlich vorhandene RollCalc-Artikel mit ausgewählten ERP-Feldern an. Die RollCalc-Datei definiert die relevante Artikelmenge und Reihenfolge. ERP-Artikel ohne RollCalc-Entsprechung werden ignoriert.
|
|
|
|
Es handelt sich nicht um einen vollständigen ERP-Import, keinen Merge-Prozess und keinen produktiven RollCalc-Export.
|
|
|
|
## Öffentliche API
|
|
|
|
```python
|
|
from pathlib import Path
|
|
|
|
from article_data_manager.enrichment.erp import (
|
|
enrich_rollcalc_articles_from_erp,
|
|
write_enrichment_outputs,
|
|
)
|
|
|
|
result = enrich_rollcalc_articles_from_erp(
|
|
Path("data/source/rollcalc/article-data.json"),
|
|
Path("data/source/erp/production-key-data.csv"),
|
|
)
|
|
write_enrichment_outputs(
|
|
result,
|
|
Path("data/generated/article-data.erp-enriched-dry-run.json"),
|
|
Path("data/reports/erp-enrichment-report.csv"),
|
|
)
|
|
```
|
|
|
|
## Übernommene ERP-Felder
|
|
|
|
| ERP-Feld | Zielfeld | Bedeutung | Einheit |
|
|
| --- | --- | --- | --- |
|
|
| `ROP_PRODUCT_WIDTH` | `product_width_m` | ERP-Produktbreite | m |
|
|
| `ROP_RATE_OF_PRODUCTION` | `line_speed_m_min` | Liniengeschwindigkeit | m/min |
|
|
| `SL_MINIMUM_PRODUCTION_QUANTITY` | `minimum_production_quantity` | Mindestproduktionsmenge | ERP-Originaleinheit |
|
|
| `WPL_WORKPLACE_TEXT` | `workplace` | geplanter Arbeitsplatz beziehungsweise geplante Anlage | Text |
|
|
|
|
`ROP_RATE_OF_PRODUCTION` ist die für Rollenwechselbetrachtungen maßgebliche Liniengeschwindigkeit in m/min. `SL_PRODUCTION_SPEED` wird nicht verwendet, weil dessen Einheit artikelabhängig sein kann. `kg_qm` wird nicht übernommen, weil `area_weight` aus QC beziehungsweise aus der bestehenden RollCalc-Datenquelle stammt.
|
|
|
|
`ROP_PRODUCT_WIDTH` wird als ERP-Produktbreite übernommen, ohne Sonderfälle fachlich zu interpretieren.
|
|
|
|
## Internes Dry-Run-Format
|
|
|
|
Die vorhandene RollCalc-Struktur bleibt erhalten und wird um ein separates `erp`-Objekt ergänzt:
|
|
|
|
```json
|
|
{
|
|
"nr": "214700",
|
|
"name": "Stex H 751 (Tfix 751), 6,00 x 50 m",
|
|
"thickness": 6.722,
|
|
"area_weight": 0.0,
|
|
"core_type": 0.0,
|
|
"erp": {
|
|
"product_width_m": 6.0,
|
|
"line_speed_m_min": 18.5,
|
|
"minimum_production_quantity": 5000.0,
|
|
"workplace": "Anlage 3"
|
|
}
|
|
}
|
|
```
|
|
|
|
Das `erp`-Objekt ist auch vorhanden, wenn kein ERP-Treffer existiert. Fehlende, widersprüchliche oder ungültige ERP-Werte erscheinen dort als `null`.
|
|
|
|
Vor produktiver Verwendung in RollCalc muss dessen Ladeverhalten für das zusätzliche `erp`-Objekt geprüft werden. Langfristig soll ein eigener RollCalc-Export nur die für RollCalc vorgesehenen Felder ausgeben. ERP-Produktionsinformationen müssen nicht zwangsläufig Bestandteil des RollCalc-Exports werden.
|
|
|
|
## Mehrfachtreffer und Status
|
|
|
|
ERP-Zeilen werden ausschließlich über `SL_ITEM_NO` der RollCalc-Artikelnummer `nr` zugeordnet. Artikelnummern werden nicht numerisch konvertiert oder umformatiert.
|
|
|
|
Mehrfachtreffer werden feldweise ausgewertet:
|
|
|
|
- keine ERP-Zeile: `no_erp_match`
|
|
- keine gefüllten Werte: `missing`
|
|
- genau ein Wert: `unique`
|
|
- mehrere Zeilen mit identischem Wert: `same_value_multiple_rows`
|
|
- mehrere unterschiedliche Werte: `conflict`
|
|
- nicht interpretierbarer numerischer Wert: `invalid`
|
|
|
|
Leere Werte zählen nicht als eigener Konfliktwert. Konflikte und ungültige Werte werden berichtet und nicht automatisch aufgelöst.
|
|
|
|
Artikelstatus:
|
|
|
|
- `complete`: alle vier Felder haben `unique` oder `same_value_multiple_rows`
|
|
- `partial`: mindestens ein Feld ist `missing`, aber kein Feld ist `conflict` oder `invalid`
|
|
- `conflict`: mindestens ein Feld ist `conflict` oder `invalid`
|
|
- `no_erp_match`: keine ERP-Zeile zur RollCalc-Artikelnummer
|
|
|
|
## Ausgaben
|
|
|
|
Standardpfade:
|
|
|
|
- `data/generated/article-data.erp-enriched-dry-run.json`
|
|
- `data/reports/erp-enrichment-report.csv`
|
|
|
|
Die Quelldateien werden nicht verändert. Produktive Dry-Run-Ergebnisse werden nicht versioniert.
|