feat(erp): Gutschrift-Rückschreibung per Config togglen
Neues Flag [erp] gutschrift_writeback_enabled (Default true): steuert, ob die Geld-Gutschrift (GUTSCHRIFT10-Belegzeile) beim Abschluss ins ERP zurückgeschrieben wird. Gutschriften sind bestandsneutral (keine Bestandsführung) → unkritisch, daher standardmäßig an, aber abschaltbar. Die Belegzeilen-Menge wird weiterhin generell NICHT zurückgeschrieben (Bestands-Inkonsistenz); geänderte Belege gehen in die Vier-Augen-Prüfung. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@ -86,6 +86,7 @@ impl Config {
|
||||
password = %mask(&self.erp.password),
|
||||
trust_cert = self.erp.trust_cert,
|
||||
writeback_enabled = self.erp.writeback_enabled,
|
||||
gutschrift_writeback_enabled = self.erp.gutschrift_writeback_enabled,
|
||||
"cfg.erp"
|
||||
);
|
||||
tracing::info!(
|
||||
@ -205,6 +206,12 @@ pub struct ErpConfig {
|
||||
/// dann bleibt der Abschluss rein lokal (Dev/Seed ohne ERP-Beleg).
|
||||
#[serde(default)]
|
||||
pub writeback_enabled: bool,
|
||||
/// **Gutschrift**-Rückschreibung (GUTSCHRIFT10-Belegzeile) aktiv? Default
|
||||
/// `true`. Gutschriften sind bestandsneutral (keine Bestandsführung) →
|
||||
/// unkritisch, aber per Flag abschaltbar. Greift nur, wenn
|
||||
/// `writeback_enabled = true`.
|
||||
#[serde(default = "default_true")]
|
||||
pub gutschrift_writeback_enabled: bool,
|
||||
}
|
||||
|
||||
impl Default for ErpConfig {
|
||||
@ -217,6 +224,7 @@ impl Default for ErpConfig {
|
||||
password: String::new(),
|
||||
trust_cert: default_true(),
|
||||
writeback_enabled: false,
|
||||
gutschrift_writeback_enabled: default_true(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -348,7 +348,10 @@ pub(crate) async fn run_app(
|
||||
// ERP-Rückschreiben beim Lieferabschluss. Der Push-Use-Case wird IMMER
|
||||
// gebaut (Admin-Retry-Endpunkt nutzt ihn manuell). Ob der normale
|
||||
// Abschluss-Pfad automatisch pusht, steuert `ERP_WRITEBACK_ENABLED`.
|
||||
let erp_writeback = Arc::new(MssqlErpDeliveryWriteback::new(erp_mssql_config));
|
||||
let erp_writeback = Arc::new(MssqlErpDeliveryWriteback::new(
|
||||
erp_mssql_config,
|
||||
cfg.erp.gutschrift_writeback_enabled,
|
||||
));
|
||||
let push_completion_to_erp = Arc::new(PushCompletionToErpUseCase::new(
|
||||
delivery_completion_repository.clone(),
|
||||
erp_writeback,
|
||||
|
||||
Reference in New Issue
Block a user