УРЕГУЛИРОВАНИЕ ПАРНЫХ СЧЕТОВ

В системе Finist-Retail существует возможность проводить урегулирование остатков на парных счетах.

Путь доступа: Клиенты → Клиенты (Юридические лица) → открыть на редактирование юр. лицо → список «Платежные реквизиты»

В объекте «ПлатежныйРеквизит» есть возможность указать парные счета: поля «Счет», «Парный счет», установить признак «Требует урегулирования»:

ПРОЦЕДУРА УРЕГУЛИРОВАНИЯ

Допускается наличие остатка только на одном счете из открытой пары: активном или пассивном. В начале операционного дня операции начинаются по счету, имеющему сальдо (остаток), а при отсутствии остатка – со счета, соответствующего характеру операции. Если в конце рабочего дня на счете образуется сальдо (остаток), противоположное признаку счета (то есть на пассивном счете – дебетовое или на активном – кредитовое), то оно может быть перенесено бухгалтерской проводкой на основании мемориального ордера на соответствующий парный счет по учету средств.

Если по каким-либо причинам образовались сальдо (остатки) на обоих парных счетах, то необходимо в конце рабочего дня перечислить бухгалтерской проводкой на основании мемориального ордера меньшее сальдо на счет с большим сальдо, имея в виду, что на конец рабочего дня должно быть только одно сальдо: либо дебетовое, либо кредитовое на одном из парных счетов.

Перенос остатков на парных счетах осуществляется с помощью процедуры урегулирования:
в контекстном меню списка рабочих дат (Справочники → Рабочие даты) есть команда «Урегулирование парных счетов».

При этом обрабатываются платежные реквизиты, у которых «БИК» = БИК локального банка, не пустой «Парный счет (активный)» и «Требует урегулирования» = 1. Для каждой пары таких счетов формируется платеж урегулирования, проводки которого генерируются в соответствии со следующим алгоритмом:
Текущий остаток
счета 1А
Текущий остаток
счета 1П
Проводка Дополнительное условие
Дт Кт Сумма
1 =0 =0 Нет Нет
2 =0 П Нет Нет
3 =0 А abs(1П) Нет
4 А =0 Нет Нет
5 А П abs(1А) abs(1A)-abs(1П)<0
abs(1П) abs(1A)-abs(1П)>0
abs(1A) abs(1A)-abs(1П)=0
6 А А abs(1П) Нет
7 П =0 abs(1А) Нет
8 П П abs(1А) Нет

Все сформированные платежи урегулирования объединены главной операцией «Урегулирование парных счетов», т.е. эти платежи являются ее подоперациями.

Операция «Урегулирование парных счетов» реализована аналогично операциям с категорией «12 – Массовая». Таким образом, для удаления ее подопераций нужно использовать пункт контекстного меню «Откатить». Т.е. сначала следует выполнить команду «Откатить» для операции «Урегулирование парных счетов» (при этом все созданные платежи будут удалены), а затем удалить саму операцию.

Перед запуском урегулирования осуществляются проверки:

ВНИМАНИЕ!
Обращаем внимание, что если по парным счетам в АБС проводились какие-либо проводки (например, в корреспонденции с ностро счетом при расчетах с банком-корреспондентом), то эти проводки следует повторить в Retail для того, чтобы процедура урегулирования парных счетов проходила правильно.

ПРОЦЕДУРА РАСЧЕТОВ С РАСЧЕТНЫМ БАНКОМ

Данная процедура индивидуальна и зависит от договора между системой и банком. Поэтому нет возможности реализовать ее единой для всех. Если есть необходимость отражать все расчеты с расчетным банком в Finist-Retail, то следует создать скрипт, который будет автоматизировать данную процедуру. Пример такого скрипта приведен ниже. Логика скрипта:
ПРИМЕР СКРИПТА

 Call main

Sub AddError_(sError, sErrors)
    If sErrors<>"" Then
        sErrors = sErrors + vbNewLine + sError
    Else
        sErrors = sError
    End If
End Sub


Sub main
    'Информация по счетам для расчетов    
    Dim aAccountsInfo
    'Каждый подмассив состоит из кода валюты, пассивного счета, активного счета, корр.счета для расчетов
    aAccountsInfo = Array(_
                        Array("810", "47422810100000000100", "47423810400000000100", "30110810100000000005"), _
                        Array("840", "47422840400000000100", "47423840700000000100", "30110840000000000007"), _
                        Array("978", "47422978000000000100", "47423978300000000100", "30110978600000000007") _
                         )
    Set pWorkDate = G2C.CreatePsProperty("Date")
    pWorkDate.SetStr G2C.GetSysParam("Дата опердня")
    
    sErrors = ""    'текст всех ошибок
    sDraftOids = ""  'список OID проведенных платежей (для отчета)

    iUBound = UBound(aAccountsInfo)
    For i = 0 To iUBound
        aAccounts = aAccountsInfo(i)
        sCurr = aAccounts(0)
        sAIB1 = aAccounts(1)        'номер пассивного счета в балансе банка
        sAIB2 = aAccounts(2)        'номер активного счета в балансе банка
        sCorrAIB = aAccounts(3)     'номер коррсчета

        sError = ""     'текст ошибок, относящихся к текущей строке счетов

        Set PassiveAccount = GetAcntByAIB(sAIB1)
        If PassiveAccount.GetOID.IsNull Then
            AddError_ "Не найден лицевой счет, связанный со счетом в балансе банка "+ sAIB1, sError
        End If
        Set ActiveAccount = GetAcntByAIB(sAIB2)
        If ActiveAccount.GetOID.IsNull Then
            AddError_  "Не найден лицевой счет, связанный со счетом в балансе банка "+ sAIB2, sError
        End If

        If sError = "" Then
            Set pPassRest = GetPostSaldo(PassiveAccount, pWorkDate, "0")
            Set pActRest = GetPostSaldo(ActiveAccount, pWorkDate, "0")
    
            bWasZero = False    'На каком-либо счете
            If pPassRest.CompareZero(">") Then
                AddError_ "На пассивном счете "+sAIB1+" - красное сальдо (требуется урегулирование)", sError
            ElseIf pActRest.CompareZero("<") Then
                AddError_ "На активном счете "+sAIB2+" - красное сальдо (требуется урегулирование)", sError
            End If
    
            If sError = "" And pActRest.CompareZero("!=") And pPassRest.CompareZero("!=") Then
                AddError_ "На счетах "+sAIB1+" и " + sAIB2 + " - ненулевой остаток (требуется урегулирование)", sError
            End If
        End If

        If sError = "" And (pPassRest.CompareZero("!=") Or pActRest.CompareZero("!=")) Then
            If pPassRest.CompareZero("!=") Then
                sDt = sAIB1
                sKt = sCorrAIB
                sDraftSum = pPassRest.GetStr
            Else
                sDt = sCorrAIB
                sKt = sAIB2
                sDraftSum = pActRest.GetStr
            End If

            Set Draft = CreateDraft(sCurr, sDt, sKt, sDraftSum, "Расчеты по МИГОМ с расчетным банком", False)    'False - передавать в ОД
            Draft.SetPropStr "Тариф", "0"
            sDraftOid = Draft.GetOID.GetStr

            Set prPutInFolder = G2C.CreateProcess("Поместить в папку", Draft)
            prPutInFolder.SetObjectDeleteMode True
            If Not prPutInFolder.Run(False) Then
                AddError_ "Ошибка помещения в папку платежа "+sDt+" - "+sKt+" : " + _
                            prPutInFolder.GetErrorString + "(" + prPutInFolder.GetCommonCommentString+")", sError
            Else
                If sDraftOids = "" Then
                    sDraftOids = sDraftOid
                Else
                    sDraftOids = sDraftOids + "," + sDraftOid
                End If
            End If
        End If

        If sError<>"" Then
            AddError_ sError, sErrors
        End If
    Next    

    If sErrors <> "" Then
        G2C.Msg "Имеются ошибки!"
    ElseIf sDraftOids <> "" Then
        G2C.Msg "Расчеты произведены успешно"
    Else
        G2C.Msg "Расчеты не требуются"
    End If

    sReportFilePath = G2C.GetSysParam("Рабочая папка") + "\Платежи расчетов с МИГОМ.txt"
    Set DraftReport = G2C.CreateReport()
    DraftReport.LoadByName("_Отчет по сформированным платежам")
    DraftReport.GetXPL.GetXParamValue("OperationOIDList").SetStr sDraftOids
    DraftReport.GetXPL.GetXParamValue("OutTextFileName").SetStr sReportFilePath
    DraftReport.GetXPL.GetXParamValue("Header").SetStr "Платежи расчетов с МИГОМ за " + pWorkDate.GetStr
    If sErrors<>"" Then
        DraftReport.GetXPL.GetXParamValue("AfterReportText").SetStr vbNewLine+"ОШИБКИ:"+vbNewLine+sErrors
    End If
    DraftReport.SetAskParametersFlag False
    DraftReport.Run

End Sub