When a SectionTa has no modifying text use one at the same date if it exists

This commit is contained in:
Emmanuel 2024-12-11 10:27:33 +01:00
parent 0a23b4594c
commit 2c1bffcaa4

View file

@ -1563,7 +1563,7 @@ async function registerLegiArticleModifiers(
} else {
// If article belongs directly to a text published in JORF but at a later date than the JORF text,
// then if article has no creating text, consider that it has been created by a modifying text having the same start
// date as the article.
// date as the article when such a text exists.
const modifyingTextIdByAction = (context.modifyingTextIdByActionById[
articleId
] ??= {})
@ -1839,6 +1839,92 @@ async function registerLegiSectionTaModifiers(
}
}
if (sectionTa.CONTEXTE.TEXTE["@cid"].startsWith("JORFTEXT")) {
if (sectionTaDateDebut === sectionTa.CONTEXTE.TEXTE["@date_publi"]) {
// If Section Texte Article belongs directly to a text published in JORF at the same date, then this JORF text is its creating text.
await addModifyingTextId(
context,
sectionTa.CONTEXTE.TEXTE["@cid"],
"CREATE",
sectionTaId,
sectionTaDateDebut,
sectionTaDateFin,
)
// Delete another version of the same sectionTa that existed before the newly created one.
for (const otherLienSectionTa of liensSectionTa) {
if (otherLienSectionTa["@id"] === sectionTaId) {
continue
}
if (
otherLienSectionTa["@cid"] === lienSectionTa["@cid"] &&
otherLienSectionTa["@fin"] === sectionTaDateDebut
) {
// The other sectionTa is the old version of the sectionTa.
await addModifyingTextId(
context,
sectionTa.CONTEXTE.TEXTE["@cid"],
"DELETE",
otherLienSectionTa["@id"],
otherLienSectionTa["@debut"],
otherLienSectionTa["@fin"],
)
}
}
} else {
// If Section Texte Article belongs directly to a text published in JORF but at a later date than the JORF text,
// then if it has no creating text, consider that it has been created by a modifying text having the same start
// date as the Section Texte Article when such a text exists.
const modifyingTextIdByAction = (context.modifyingTextIdByActionById[
sectionTaId
] ??= {})
if (modifyingTextIdByAction.CREATE === undefined) {
const consolidatedTextModifyingTextsIds =
context.consolidatedTextModifyingTextsIdsByActionByDate[
sectionTaDateDebut
]?.CREATE
if (consolidatedTextModifyingTextsIds !== undefined) {
if (consolidatedTextModifyingTextsIds.size === 1) {
const modifyingTextId = [...consolidatedTextModifyingTextsIds][0]
await addModifyingTextId(
context,
modifyingTextId,
"CREATE",
sectionTaId,
sectionTaDateDebut,
sectionTaDateFin,
)
// Delete another version of the same sectionTa that existed before the newly created one.
for (const otherLienSectionTa of liensSectionTa) {
if (otherLienSectionTa["@id"] === sectionTaId) {
continue
}
if (
otherLienSectionTa["@cid"] === lienSectionTa["@cid"] &&
otherLienSectionTa["@fin"] === sectionTaDateDebut
) {
// The other sectionTa is the old version of the sectionTa.
await addModifyingTextId(
context,
sectionTa.CONTEXTE.TEXTE["@cid"],
"DELETE",
otherLienSectionTa["@id"],
otherLienSectionTa["@debut"],
otherLienSectionTa["@fin"],
)
}
}
} else {
console.log(
`Can't attach modifying article ${sectionTaId} to a modifying text`,
`because there are several possibilities at the date ${sectionTaDateDebut}:`,
`${[...consolidatedTextModifyingTextsIds].join(", ")}`,
)
}
}
}
}
}
// If Section Texte Article has no creating text at all, then use a fake one.
const modifyingTextIdByAction = (context.modifyingTextIdByActionById[
sectionTaId