.. _ug_ap_duplications:

=======================
Odstraňování duplicit
=======================

V rámci jedné :ref:`oblasti <ug_ap_scopes>` může pro danou entitu existovat pouze jeden záznam.

Základními předpoklady pro **zabránění vzniku duplicit** jsou jednak co nejpřesnější popis
a jednoznačná :ref:`identifikace entit <ug_ap_parts>` pomocí dostupných prvků popisu,
a dále včasná :ref:`synchronizace entit <ug_ap_synchronization>` 
se sdílenými externími systémy, pokud je to v daném případě možné.

Pro odstranění duplicitních záznamů entit pomocí funkcionality *Odstranit duplicitu*
z nabídky v :ref:`horním panelu <ug_ap_screen_menu>` jsou na výběr tyto možnosti:

Nahrazení
==========
Dojde k odstranění záznamu označené entity, která je nahrazena záznamem vybrané entity
jak v modulu *Archivní entity*, tak ve všech výskytech přístupového bodu v modulu *Archivní soubory*.


Sloučení
=========
Dojde k odstranění záznamu označené entity, jejíž (:ref:`potvrzené <ug_ap_revisions_editor-merge>`) hodnoty prvků popisu
jsou zkopírovány (doplněny) do záznamu vybrané entity, který odstraněný záznam nahrazuje jak v modulu *Archivní entity*,
tak ve všech výskytech přístupového bodu v modulu *Archivní soubory*.

.. image:: resources/odstranovani_duplicit.png
      :align: center


Po potvrzení akce nelze nahrazenou entitu vyhledat v :ref:`levém panelu <ug_ap_screen_left>` a není možné ji napojovat
jako :ref:`přístupový bod <ug_ap_access_point>` v modulu *Archivní soubory*.

Obsah záznamu nahrazené entity a prvků popisu je zachován, včetně jedinečného :ref:`ID a UUID <impl_entryurl_entity>`,
které umožňuje :ref:`obnovení záznamu entity <ug_ap_invalidations_restore>` a brání jejímu :ref:`opětovnému převzetí z CAM <ug_ap_synchronization_ID_UUID>`.


.. _ug_ap_duplications_related-substitute:

V :ref:`záhlaví <ug_ap_screen_main_head>` nahrazené entity je uvedeno označení **nahrazující entity**,
včetně odkazu s možností zobrazení záznamu v jiném okně prohlížeče.

.. image:: resources/entita-nahrazena.png
      :align: center

Obdobně také v :ref:`záhlaví <ug_ap_screen_main_head>` nahrazující entity lze zobrazit přehled všech **nahrazených entit**,
včetně odkazu s možností zobrazení záznamu v jiném okně prohlížeče.

.. image:: resources/entita-nahrazujici.png
      :align: center


.. _ug_ap_duplications_related:

Deduplikace a související entity
==================================

Odstranění archivních entit prostřednictvím funkcionality *Odstranit duplicitu*
má důsledky nejen pro samotné zneplatněné entity,
ale i pro jejich výskyt v záznamech jiných entit.

Při nahrazení odstraněných entit v modulu *Archivní entity*
dochází v závislosti na :ref:`stavu <ug_ap_state>` návazných entit k automatické změně jejich záznamů,
které se odkazují na deduplikované entity napojené pomocí vztahů (:ref:`související entity <ug_ap_edit_related>`).

U návazných entit ve :ref:`stavu <ug_ap_state>` *nová* a *k doplnění*
jsou deduplikované (odstraněné) související entity automaticky **nahrazeny**.

U návazných entit ve :ref:`stavu <ug_ap_state>` *schválená* jsou v okamžiku deduplikace (odstranění) souvisejících entit
automaticky vytvořeny :ref:`revize <ug_ap_revisions_editor>`,
odstraněné související entity zůstávají součástí záznamů entit,
ale zároveň jsou **nahrazeny v režimu revize** nahrazujícími entitami.
K jejich uložení do záznamu entity dojde až po :ref:`potvrzení revize <ug_ap_revisions_editor-merge>`.

.. image:: resources/entita-nahrazena-revize.png
      :align: center

Pokud je deduplikovaná související entita součástí záznamu entity ve :ref:`stavu <ug_ap_state>` *ke schválení*,
její **odstranění neproběhne** a entita není nahrazena ani v záznamu návazné entity
(srov. :ref:`Zneplatnění entit <ug_ap_invalidations_related>`).

Pro vyhledání entit určených k deduplikaci a jejich výskytu v záznamech jiných entit
(zejména v blokujícím stavu entity *ke schválení*) je možné využít
nástroje :ref:`Rozšířeného filtru <ug_ap_screen_left>`.

.. warning::
      **Omezení deduplikace** souvisejících entit, které jsou součástí záznamů návazných entit ve stavu *ke schválení*,
      se netýká uživatele s oprávněním :ref:`ug_admin_perms_other_superuser`.
      Při jím provedené deduplikaci tak může dojít ke změně popisu entity ve stavu,
      který standardně nedovoluje :ref:`editaci záznamu entity <ug_ap_edit>`.


.. _ug_ap_duplications_related-external-systems:

Deduplikace souvisejících entit a externí systémy
===================================================

Automatická změna záznamů návazných entit při :ref:`deduplikaci souvisejících entit <ug_ap_duplications_related>`
je ovlivněna také :ref:`napojením <ug_ap_connected>` dotčených entit na externí systémy (např. CAM).

V zájmu zachování :ref:`aktivní synchronizace <ug_ap_synchronization_state>`
zůstávají deduplikované :ref:`související entity <ug_ap_edit_related>` **po odstranění nadále součástí záznamů návazných entit**,
pokud :ref:`nahrazující entita <ug_ap_duplications_related-substitute>` není propojena se stejným externím systémem jako návazná entita.

Při případném budoucím :ref:`sloučení <ug_ap_duplications>` návazné entity,
v jejímž záznamu zůstala deduplikovaná související entita,
jsou do záznamu nahrazující entity vždy přeneseny namísto deduplikovaných souvisejících entit jejich :ref:`nahrazující entity <ug_ap_duplications_related-substitute>`.

*Příklad:*

*Záznam entity A z externího systému X obsahuje související entitu B z externího systému X,
která je při deduplikaci nahrazena entitou C, jež není propojena s externím systémem X.
V záznamu entity A proto nadále zůstane deduplikovaná související entita B.
Při případném budoucím sloučení entity A s nahrazující entitou D
bude entita B v záznamu entity D automaticky nahrazena entitou C.*


Omezení odstraňování duplicit
==============================

Při odstraňování duplicit nelze entitu určenou k nahrazení :ref:`sloučit <ug_ap_duplications>`
s nahrazující entitou, která je ve :ref:`stavu <ug_ap_state>` *ke schválení* nebo ve :ref:`stavu revize <ug_ap_revisions_editor-state>` *revize ke schválení*.
U těchto záznamů není možné měnit :ref:`popis entity <ug_ap_edit>`, včetně její :ref:`podtřídy <ug_ap_access_point_class>`.

Pokud je při :ref:`sloučení <ug_ap_duplications>` entit nahrazující entita ve :ref:`stavu <ug_ap_state>` *schválená*,
je v okamžiku deduplikace automaticky vytvořena její :ref:`revize <ug_ap_revisions_editor>`
a hodnoty nahrazující i nahrazené entity jsou navrženy ke změně či potvrzení v :ref:`režimu úprav <ug_ap_revisions_editor-edit>`.
Pokud před :ref:`sloučením <ug_ap_duplications>` entit již byla u nahrazující entity :ref:`vytvořena revize <ug_ap_revisions_editor-create>`,
je porovnání navržených změn popisu nahrazující entity doplněno o hodnoty nahrazené entity.
K uložení hodnot do záznamu entity dojde až po :ref:`potvrzení revize <ug_ap_revisions_editor-merge>`.

Funkcionalitu *Odstranit duplicitu* nelze použít pro vzájemné nahrazení nebo sloučení
entit, které jsou :ref:`napojené na stejný externí systém <ug_ap_connected>` (např. CAM).
Zneplatnění duplicitních záznamů entit je v tomto případě nutné provést přímo v daném externím systému.

Změny provedené v externím systému se následně aktualizují do Elza
v závislosti na :ref:`stavu synchronizace <ug_ap_synchronization_state>` a přítomnosti nahrazující entity v Elza.

Záznamy entit, které jsou napojené na různé externí systémy, lze vzájemně nahrazovat a slučovat přímo v Elza.
