/**
 * Author: Thomas GUERY
 * @param entriesId identifiant de l'ecriture à supprimer
 * A partir de la data de création de l'écriture entrée, décale les dates de toutes les écritures
 * Le décalage se fait en jours. Et le nombre de jours est la différence entre la date au jour et la date de création
 * de l'écriture sélectionnée.
 * Created: 20/03/2024
 */
Delimiter //
Drop Procedure If Exists ADJUST_DATABASE //
Create Procedure ADJUST_DATABASE(
    In entriesId int
)
Begin
    bdelent_main: Begin
        DECLARE startDate DATE;
        SELECT ENTRIES_DATE INTO startDate FROM ENTRIES WHERE ID_ENTRIES=entriesId;
        set @numberDaysToAdjust = TIMEDIFF(CURRENT_DATE(), @startDate);

        UPDATE ENTRIES
            SET ENTRIES_DATE=ENTRIES_DATE + INTERVAL @numberDaysToAdjust DAY,
            ENTRIES_DUE_DATE=ENTRIES_DUE_DATE + INTERVAL @numberDaysToAdjust DAY;

        UPDATE ENTRIES
        SET ENTRIES_PROMISE_DATE=ENTRIES_PROMISE_DATE + INTERVAL @numberDaysToAdjust DAY
        WHERE ENTRIES_PROMISE_DATE IS NOT NULL;


        UPDATE EVENTS
        SET EVENTS_DATE_EXPECTED_END=EVENTS_DATE_EXPECTED_END + INTERVAL @numberDaysToAdjust DAY
        WHERE EVENTS_DATE_EXPECTED_END != '0000-00-00 00:00:00';


        UPDATE EVENTS
        SET EVENTS_DATE_DEFERMENT=EVENTS_DATE_DEFERMENT + INTERVAL @numberDaysToAdjust DAY
        WHERE EVENTS_DATE_DEFERMENT IS NOT NULL;
    End;

End //
Delimiter ;