Skip to main content

Statementy - instrukcja krok po kroku do wyczyszczenia i ponownego zasilenia danymi z okresu

Maxime avatar
Written by Maxime
Updated over 4 months ago

Drogi użytkowniku,

w tym artykule zgłębimy wiedzę dotyczącą ponownej agregacji transakcji klienta do tabeli [transaction].StatementTransaction. Ponowna agregacja jest możliwa tylko dla okresu z którego możemy jeszcze zaciągnąć dane od banku.
Przykład, dla banku AXA jest możliwe pobranie transakcji na 180 dni wstecz z udziałem klienta i ponownym SCA!! Inne banki mogą oferować historię tylko z 90 dni, nawet po wykonaniu SCA przez klienta.

Do dzieła!

Krok 1. Skomunikuj się z zespołami i potwierdźcie istniejący problem. Może transakcje są już w bazie danych, a nie wysłały się poprawnie do innych odbiorców np PXG. W takim przypadku odbiorca danych powinien ponownie pobrać od nas transakcje.

Krok 2. Potwierdźcie działanie i poszczególne kroki. Ustalcie czy do odświeżania danych będzie potrzebny klient czy nie. Może się okazać, że brakuje transakcji z przed 30 dni i wtedy klient nie będzie potrzebny. Sprawdzenie ile transakcji można pobrać bez udziału klienta można zweryfikować w Purposach.

"historyLimit": {
      "afterSca": 180,
      "withoutSca": 90
    },
    "multiTenantHistoryLimit": {
      "afterSca": 180,
      "withoutSca": 90
    }
  }

Krok 3. Jeżeli jest wymagany udział klienta to ustalcie termin ponownego pobrania danych wraz z klientem. Warto w PXG i w ApiHub zinvalidować consent, żeby po wyczyszczeniu danych systemy same nie pobrały transakcji automatycznymi jobami.

Krok 4. Przygotowanie środowiska do pobrania danych. Poniżej znajduje się kod który należy uzupełnić o zmienne:

@cleanDate - data od której zostaną wyczyszczone statementy
@accountId - GUID konta, dla którego jest wykonywane czyszczenie
@userId - GUID usera, dla którego jest wykonywane czyszczenie

declare @newAccId Varchar(50)
set @newAccId = NEWID()
declare @cleanDate datetime2
set @cleanDate = ''
declare @accountId varchar(50)
set @accountId = ''
declare @accountLegacyId int
set @accountLegacyId = (select legacyId from [account].Account where id = @accountId)
declare @userID varchar(50)
set @userId = ''
declare @tempUserId varchar(50)
set @tempUserId = NEWID()--czyszczenie statementów
update [transaction].StatementTransaction
set userId = @tempUserId, accountId = @newAccId
where accountId = @accountId and AccountingDate >= @cleanDate
update [transaction].statementBatch
set accountId = @newAccId
where accountId = @accountId and CreatedAt >= @cleanDate
update [transaction].statementDay
set accountId = @newAccId
where accountId = @accountId and Date >= @cleanDate
update [account].Account
set SyncDate = @cleanDate, TransactionSyncDate = @cleanDate, LatestStatementDate = @cleanDate
where Id = @accountId
update BankAccount  
set SyncLastDate = @cleanDate
where id = @accountLegacyId
update BankAccountSync
set LastSuccessfulSyncDate = @cleanDate, LastTransactionDate = @cleanDate
where BankAccountId = @accountLegacyId--trzeba zapisać do rollbacka
select @newAccId
select @tempUserId

Po uzupełnieniu danych, należy się skontaktować z DevOps w celu wykonania skryptu na bazie produkcyjnej.

Krok 5. Weryfikacja danych, czy zostały prawidłowo nadpisane.

Krok 6. Wykonanie ponownego SCA przez klienta

Krok 7. Weryfikacja poprawnego zapisania się danych w SQL, oraz zwracania danych w POSTMAN

Krok 8. Poinformowanie zespołu PXG o możliwości ponownego pobrania statementów.

Rollback

declare @newAccId Varchar(50)
set @newAccId = NEWID()
declare @cleanDate datetime2
set @cleanDate = ''
declare @accountId varchar(50)
set @accountId = ''
declare @userID varchar(50)
set @userId = ''
declare @tempUserId varchar(50)
set @tempUserId = NEWID()--czyszczenie statementów update [transaction].StatementTransaction set userId = @tempUserId, accountId = @newAccId where accountId = @accountId and AccountingDate >= @cleanDate update [transaction].statementBatch set accountId = @newAccId where accountId = @accountId and CreatedAt >= @cleanDate update [transaction].statementDay set accountId = @newAccId where accountId = @accountId and Date >= @cleanDate

A potem

--rollback prev transaction
declare @accountId varchar(50)
set @accountId = ''
declare @userID varchar(50)
set @userId = ''
declare @tempAccId varchar(50)
set @tempAccId = 'Wartość z 1 czyszczenia!!!!'
update [transaction].StatementTransaction set userId = @userId, accountId = @accountId where accountId = @tempAccId update [transaction].statementBatch set accountId = @accountId where accountId = @tempAccId update [transaction].statementDay set accountId = @accountId where accountId = @tempAccId

elo

Did this answer your question?