fix: conserve l'identite d'un document re-extrait
Le remplacement par ID mettait a jour le document en le supprimant puis en le recreant : la ligne changeait d'ID, cassant les liens qui la referencent (URL d'edition, telechargement du PDF) juste apres un balayage de re-extraction. Le document est desormais mis a jour sur place, seules les donnees derivees (revenus, depenses) etant regenerees. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -6,7 +6,7 @@ from datetime import date
|
||||
import pytest
|
||||
|
||||
from plesna_gerance.database import storage
|
||||
from plesna_gerance.database.models import Depense, Document, Tag
|
||||
from plesna_gerance.database.models import Depense, Document, Revenu, Tag
|
||||
from plesna_gerance.database.service import DatabaseService, DuplicateDocumentError
|
||||
|
||||
|
||||
@@ -36,6 +36,24 @@ def test_replace_document_met_a_jour_meme_si_la_reference_change(
|
||||
assert db_session.query(Document).count() == 1
|
||||
assert updated.reference == "REF001-CORRIGEE"
|
||||
assert updated.date == date(2024, 1, 15)
|
||||
# L'ID survit au remplacement : les liens vers le document restent valides.
|
||||
assert updated.id == original_id
|
||||
|
||||
|
||||
def test_replace_document_regenere_les_donnees_derivees(db_session, sample_data):
|
||||
"""Revenus et depenses sont remplaces, pas cumules."""
|
||||
service = DatabaseService(db_session)
|
||||
original = service.save_document(data=sample_data)
|
||||
|
||||
new_data = copy.deepcopy(sample_data)
|
||||
new_data["recapitulatif_operations"][0]["montants"]["debit"] = 90.0
|
||||
new_data["situation_locataires"][0]["lignes"][0]["loyers"] = 600.0
|
||||
service.save_document(data=new_data, replace_document_id=original.id)
|
||||
|
||||
depenses = db_session.query(Depense).filter_by(document_id=original.id).all()
|
||||
revenus = db_session.query(Revenu).filter_by(document_id=original.id).all()
|
||||
assert len(depenses) == 1 and depenses[0].debit == 90.0
|
||||
assert len(revenus) == 1 and revenus[0].loyers == 600.0
|
||||
|
||||
|
||||
def test_replace_document_conserve_le_pdf_et_reecrit_le_json(
|
||||
|
||||
Reference in New Issue
Block a user