В системе Finist-Retail существует возможность проводить урегулирование остатков на парных счетах.
Путь доступа: Клиенты → Клиенты (Юридические лица) → открыть на редактирование юр. лицо → список «Платежные реквизиты»
В объекте «ПлатежныйРеквизит» есть возможность указать парные счета: поля «Счет», «Парный счет», установить признак «Требует урегулирования»:
Допускается наличие остатка только на одном счете из открытой пары: активном или пассивном. В начале операционного дня операции начинаются по счету, имеющему сальдо (остаток), а при отсутствии остатка – со счета, соответствующего характеру операции. Если в конце рабочего дня на счете образуется сальдо (остаток), противоположное признаку счета (то есть на пассивном счете – дебетовое или на активном – кредитовое), то оно может быть перенесено бухгалтерской проводкой на основании мемориального ордера на соответствующий парный счет по учету средств.
Если по каким-либо причинам образовались сальдо (остатки) на обоих парных счетах, то необходимо в конце рабочего дня перечислить бухгалтерской проводкой на основании мемориального ордера меньшее сальдо на счет с большим сальдо, имея в виду, что на конец рабочего дня должно быть только одно сальдо: либо дебетовое, либо кредитовое на одном из парных счетов.
Перенос остатков на парных счетах осуществляется с помощью процедуры урегулирования:
в контекстном меню списка рабочих дат (Справочники → Рабочие даты) есть команда «Урегулирование парных счетов».
При этом обрабатываются платежные реквизиты, у которых «БИК» = БИК локального банка, не пустой «Парный счет (активный)» и «Требует урегулирования» = 1. Для каждой пары таких счетов формируется платеж урегулирования, проводки которого генерируются в соответствии со следующим алгоритмом:
Текущий остаток счета 1А |
Текущий остаток счета 1П |
Проводка | Дополнительное условие | |||
---|---|---|---|---|---|---|
Дт | Кт | Сумма | ||||
1 | =0 | =0 | Нет | Нет | ||
2 | =0 | П | Нет | Нет | ||
3 | =0 | А | 1А | 1П | abs(1П) | Нет |
4 | А | =0 | Нет | Нет | ||
5 | А | П | 1П | 1А | abs(1А) | abs(1A)-abs(1П)<0 |
abs(1П) | abs(1A)-abs(1П)>0 | |||||
abs(1A) | abs(1A)-abs(1П)=0 | |||||
6 | А | А | 1А | 1П | abs(1П) | Нет |
7 | П | =0 | 1А | 1П | abs(1А) | Нет |
8 | П | П | 1А | 1П | abs(1А) | Нет |
Все сформированные платежи урегулирования объединены главной операцией «Урегулирование парных счетов», т.е. эти платежи являются ее подоперациями.
Операция «Урегулирование парных счетов» реализована аналогично операциям с категорией «12 – Массовая». Таким образом, для удаления ее подопераций нужно использовать пункт контекстного меню «Откатить». Т.е. сначала следует выполнить команду «Откатить» для операции «Урегулирование парных счетов» (при этом все созданные платежи будут удалены), а затем удалить саму операцию.
Перед запуском урегулирования осуществляются проверки:ВНИМАНИЕ!
Обращаем внимание, что если по парным счетам в АБС проводились какие-либо проводки (например, в корреспонденции с ностро счетом при расчетах с банком-корреспондентом), то эти проводки следует повторить в Retail для того, чтобы процедура урегулирования парных счетов проходила правильно.
Пассивные (Счет) | Активные (Счет2) | КоррСчета для расчетов (КоррСчет) |
47422810100000000100 | 47423810400000000100 | 30101810400000000765 |
47422840400000000100 | 47423840700000000100 | 30110840000000000007 |
47422978000000000100 | 47423978300000000100 | 30110978600000000007 |
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