Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.
Выборка

На начало проекта в Банке МТС все платежи квитовались вручную.

Это повышало операционный риск и трудозатраты.

Оглавление



Цели проекта

В рамках проекта внедрение модулей были выделены следующие цели: 

  1. Автоматизация процесса квитовки документов поступающих из МЦИ и SWIFT;
  2. Автоматическая постановка документов, не связанных с собственными торговыми операциями Банка, на позицию
    1. атомарными платежами (с суммой более пороговой) и 
    2. объединенными (суммирование сумм документов с значением ниже порогового);
  3. Интеграция с АБС Банка по исходящим платежам, в том числе установка фактического исполнения платежа;
  4. Автоматическая установка входящих балансов из документов МЦИ и SWIFT.

Особенности реализации

Постановка документов на позицию

МЦИ

В рамках проекта необходимо выделить следующую особенность, что из документов МЦИ и SWIFT поступающих извне, на позицию Банка устанавливались только входящие документы (требования), все исходящие платежи поступали из АБС Банка (обязательства). 

Для реализации этой особенности были добавлены настройки автоматической постановки документов. Настройка позволяет автоматически устанавливать документы по следующим признакам: 

  • Филиал – для многофилиальной версии, настройки для каждого филиала устанавливаются независимо;
  • Тип документа – основные типы документов, например ED101 или MT202;
  • Направление платежа: 
    • Только поступление – на позицию автоматически будут устанавливаться только платежи поступления;
    • Только списания – на позицию автоматически будут устанавливаться только платежи списания;
    • Все – на позицию автоматически будут устанавливаться все платежи, вне зависимости от направления.

Для документов МЦИ автоматическая постановка производится в разрезе рейса (только для не срочных платежей). Здесь возникли определенные сложности в связи с переходом (595-П) на перспективную платежную систему, теперь рейс документов устанавливается по расписанию:

  1. 09:00 – 1-й рейс;
  2. 17:00 – 2-й рейс;
  3. 20:00 – 3-й рейс.

В отрезки времени до завершения рейса не срочные документы поступают без указания рейса (рейс не определен), после чего производится консолидация рейсов и поступает выписка ED211 c указанием фактического рейса документа загруженного ранее. На основании выписки в платежах (не срочные документы), поставленных на позицию, изменяется рейс, на рейс полученный из выписки.

В качестве рейса для срочных документов МЦИ устанавливается значение "Срочные переводы", после получение выписки значение рейса не изменяется. 

Примечание

Изменения рейса в платежах, описанные выше, производятся с помощью дополнительных скриптов, выполняемых по расписанию

Пример скрипта реализации установки рейса для не срочных документов: 

Блок кода
languagesql
collapsetrue
DECLARE
    vtime             DATE;
    vreistoposition   NUMBER;
BEGIN
    IF SYSDATE >= TRUNC (SYSDATE) + 1 / 24 * 9
   AND SYSDATE < TRUNC (SYSDATE) + 1 / 24 * 17 THEN
        vreistoposition   := 1;
    ELSIF SYSDATE >= TRUNC (SYSDATE) + 1 / 24 * 17
      AND SYSDATE < TRUNC (SYSDATE) + 1 / 24 * 20 THEN
        vreistoposition   := 2;
    ELSIF SYSDATE >= TRUNC (SYSDATE) + 1 / 24 * 20
      AND SYSDATE < TRUNC (SYSDATE) + 1 / 24 * 23 THEN
        vreistoposition   := 3;
    ELSE
        RETURN;
    END IF;

    FOR cur IN (  SELECT   rel_kvit, MAX (reis) reis
                    FROM   mci_reises
                   WHERE   position_reis != reis
                       AND position_reis IS NOT NULL
                GROUP BY   rel_kvit) LOOP
        FOR curt IN (SELECT   id
                       FROM   t_transactions
                      WHERE   rel_kvit = cur.rel_kvit) LOOP
            pkg_deal_trn.clearparameters;
            pkg_deal_trn.params.id          := curt.id;
            pkg_deal_trn.loadparameters;
            pkg_deal_trn.params.nazn        := pkg_mci_pos.f_namereis (cur.reis);
            pkg_deal_trn.params.lastuser    := -1;
            pkg_deal_trn.params.typeinput   := 0;
            pkg_deal_trn.dealupdate;

            UPDATE   mci_reises
               SET   position_reis   = cur.reis
             WHERE   rel_kvit = cur.rel_kvit;

            pkg_attrib.save_attrib_number ('TRN', pkg_deal_trn.params.id, 'MCI.REIS', cur.reis);
        END LOOP;
    END LOOP;

    FOR cur IN (SELECT   DISTINCT 1
                  FROM   mci_reises
                 WHERE   reis = vreistoposition
                 --AND   position_reis = reis
               ) LOOP
        BEGIN
            FOR cur IN (SELECT   accpointer
                          FROM   resman.nostro
                         WHERE   in_mcinavigator_enable = 'True') LOOP
                pkg_mci_pos.set_to_position ( resman.td
                                            , cur.accpointer -- Идентификатор счета в Навигаторе, на который будет производиться исполнение
                                            , vreistoposition);
                pkg_mci_pos.set_to_position ( resman.td
                                            , cur.accpointer, -- Идентификатор счета в Навигаторе, на который будет производиться исполнение
                                            , -1);
                COMMIT;
            END LOOP;
        END;
    END LOOP;
END;
/

Другие возможности работы с документами представлены в разделе МЦИ.


SWIFT

В рамках проекта выделим следующие работы: 

  • При автоматической постановке документов SWIFT проверяются возможные связи документа с другими документами по референсам (значение тэгов 20, 21 или 61 из выписки). 
    В случае если связанный документ поставлен на позицию, текущий документ также считается поставленным на позицию;
  • Значение остатка из выписки устанавливается на основании данных из тэга 64, если он присутствует в документе.

Другие возможности работы с документами представлены в разделе SWIFT.


Установка остатка из окончательной выписки

В рамках проекта была реализована возможность указания рейса или признака окончательной выписки для установки остатка. Для загрузки остатка из окончательной выписки МЦИ необходимо в качестве рейса указать значение 0.


Реализация

В рамках проекта был реализован следующий алгоритм: 

  1. Производится квитовка МЦИ
и
  1.  и квитовка SWIFT необработанных документов МЦИ и SWIFT с платежами в Навигаторе. Задание запускается с помощью расписания заданий Oracle;
  2. Производится автоматическая постановка несквитованных документов на позицию в Навигаторе. Задание запускается с помощью расписания заданий Oracle;
  3. Обработка платежей поступающих из МЦИ: постановка на позицию и установка фактической даты валютирования;
  4. Установка остатка из выписок МЦИ и SWIFT при поступлении документа.


Дополнительные работы

После завершения проекта рассматривается возможность квитовки исходящих платежей, поступающих из АБС, с платежами в Навигаторе. Данная доработка находится в разработке.


Итог

Если Вас заинтересовал проект внедрения модулей МЦИ и SWIFT, и ваш Банк готов автоматизировать процессы работы с документами МЦИ и SWIFT — зарегистрируйте задачу на hd.softwell.ru.


Примеры скриптов

Ниже представлен пример скрипта для автоматической квитовки документов МЦИ и SWIFT:

Блок кода
languagesql
collapsetrue
DECLARE
    vInfo varchar2(2000);
    vDate Date;
    
BEGIN 
 
    vDate :=TD;
    vInfo := 'Запускаем квитовку МЦИ за '||TO_CHAR(vDate,'DD.MM.YYYY')||'.';
    sp_mci_auto_kvit (/*full sig:*/
         pvd=>vDate/*date*/
        ,pshttype=>'ALL'
        ,puserid=>-1/*number*/
        ,pfilial_id=>f_parameter_str('FILIAL_ID')/*number*/);
    vInfo := 'Запускаем квитовку SWIFT за '||TO_CHAR(vDate,'DD.MM.YYYY')||'.';
    sp_mci_auto_kvit_swift(
         pvd=>vDate/*date*/
        ,pshttype=>'ALL'/*varchar2*/
        ,puserid=>-1/*number*/);
    vInfo := ' Квитовка прошла успешно ';
    
EXCEPTION 
    when OTHERS  THEN
        vinfo := vinfo || 'ORAERR = '||SQLERRM;
         rn_msg.pkg_msg_send.prc_send_message
                        (
                'AUTO_KVIT_MCI-SWIFT', -- 
                1          , -- Приоритет сообщения.
                'Y'        , -- Сохранить сообщение в журнале
                'Y'        , -- Сохранить рассылку в журнале
                null , -- Список пользователей с доступом на редактирование к счету
                vinfo,-- Текст сообщения
                'INTEGRATION', --Тема
                null       ,-- Текст сообщения для воспроизведения.
                null       , -- Дополнительное поле 'A'
                null       , -- Дополнительное поле 'B'
                null       , -- Дополнительное поле 'C'
                null         -- Дополнительное поле 'D'
                    );
        
END;
/

Содержимое по меткам
showLabelsfalse
showSpacefalse
sortcreation
reversetrue
excerptTyperich content
cqllabel = "casestudy"