CftClub.ru
Клуб специалистов ЦФТ-Банк

КПП не клиента банка

 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Уроки ЦФТ-Банк для начинающих
Предыдущая тема :: Следующая тема  
Автор Сообщение
mmm_kazan
Участник со стажем
Неподтвержденный


Вступление в Клуб: 28.03.2018
СообщениеПт Апр 20, 2018 11:33   КПП не клиента банка Ответить с цитатой
Полезность: Нет оценки
Интересно - почему ЦФТ пропустил такое КПП?

78^010001
Blackmore64
Участник со стажем
Неподтвержденный


Вступление в Клуб: 17.01.2017
СообщениеПт Апр 20, 2018 12:19   Re: КПП не клиента банка Ответить с цитатой
Полезность: Нет оценки
mmm_kazan пишет:
Интересно - почему ЦФТ пропустил такое КПП?
78^010001

Скорей всего ошибка в ЦФТ. В некоторых местах проверяется наличие 9 символов, в других - 9 цифр. Наиболее правильная имхо в CLIENT.LIB.CheckKPP - проверяется длина КПП (9 символов) и наличие нецифровых символов - символы A-Z допустимы только в 5-6 разрядах.
mmm_kazan
Участник со стажем
Неподтвержденный


Вступление в Клуб: 28.03.2018
СообщениеПт Апр 20, 2018 13:06   Re: КПП не клиента банка Ответить с цитатой
Полезность: Нет оценки
Blackmore64 пишет:
mmm_kazan пишет:
Интересно - почему ЦФТ пропустил такое КПП?
78^010001

Скорей всего ошибка в ЦФТ. В некоторых местах проверяется наличие 9 символов, в других - 9 цифр. Наиболее правильная имхо в CLIENT.LIB.CheckKPP - проверяется длина КПП (9 символов) и наличие нецифровых символов - символы A-Z допустимы только в 5-6 разрядах.


Привет.
Просто есть вариант. при нажатии кнопки OK. Проверку сделать - у нас все равно расширение работает.
Volod
Профи
Неподтвержденный


Вступление в Клуб: 19.09.2007
СообщениеПт Апр 20, 2018 14:04    Ответить с цитатой
Полезность: Нет оценки
Цитата:
и наличие нецифровых символов - символы A-Z допустимы только в 5-6 разрядах.

структура кода причины постановки на учет представляет собой девятизначный номер (NNNNPPXXX), где: NNNN – код налогового органа, где была поставлена на учет организация; PP – причина постановки на учет (эти символы могут принимать значения для российских организаций – от 1 до 50, для иностранных – от 51 до 99); XXX – порядковый номер постановки на учет в территориальном налоговом органе
Blackmore64
Участник со стажем
Неподтвержденный


Вступление в Клуб: 17.01.2017
СообщениеПт Апр 20, 2018 14:35    Ответить с цитатой
Полезность: Нет оценки
Volod пишет:
Цитата:
и наличие нецифровых символов - символы A-Z допустимы только в 5-6 разрядах.

структура кода причины постановки на учет представляет собой девятизначный номер (NNNNPPXXX), где: NNNN – код налогового органа, где была поставлена на учет организация; PP – причина постановки на учет (эти символы могут принимать значения для российских организаций – от 1 до 50, для иностранных – от 51 до 99); XXX – порядковый номер постановки на учет в территориальном налоговом органе

Приказ ФНС России от 29.06.2012 N ММВ-7-6/435@ "Об утверждении Порядка и условий присвоения, применения, а также изменения идентификационного номера налогоплательщика":
4. Структура КПП представляет собой девятизначный код:
NNNNPPXXX
5. КПП состоит из следующей последовательности символов слева направо:
1) NNNN (4 знака) - код налогового органа, который осуществил постановку на учет организации по месту ее нахождения, месту нахождения обособленного подразделения организации, расположенного на территории Российской Федерации, месту нахождения принадлежащих ей недвижимого имущества и транспортных средств, а также по иным основаниям, предусмотренным Налоговым кодексом Российской Федерации, или осуществил учет сведений в отношении организации в случаях, предусмотренных Порядком постановки на учет, снятия с учета в налоговых органах российских организаций по месту нахождения их обособленных подразделений, принадлежащих им недвижимого имущества и (или) транспортных средств, физических лиц - граждан Российской Федерации, а также индивидуальных предпринимателей, применяющих упрощенную систему налогообложения на основе патента, утвержденным приказом Министерства финансов Российской Федерации от 05.11.2009 N 114н "Об утверждении Порядка постановки на учет, снятия с учета в налоговых органах российских организаций по месту нахождения их обособленных подразделений, принадлежащих им недвижимого имущества и (или) транспортных средств, физических лиц - граждан Российской Федерации, а также индивидуальных предпринимателей, применяющих упрощенную систему налогообложения на основе патента" (зарегистрирован Министерством юстиции Российской Федерации 28.01.2010, регистрационный номер 16121; "Российская газета", 2010, N 27);
2) PP (2 знака) - причина постановки на учет (учета сведений). Символ P представляет собой цифру или заглавную букву латинского алфавита от A до Z.
Числовое значение символов PP может принимать значение:
для российской организации от 01 до 50 (01 - по месту ее нахождения);
для иностранной организации от 51 до 99;
3) XXX (3 знака) - порядковый номер постановки на учет (учета сведений) в налоговом органе по соответствующему основанию.
Volod
Профи
Неподтвержденный


Вступление в Клуб: 19.09.2007
СообщениеПт Апр 20, 2018 14:43    Ответить с цитатой
Полезность: Нет оценки
Да, увидел в первоисточнике.
Blackmore64
Участник со стажем
Неподтвержденный


Вступление в Клуб: 17.01.2017
СообщениеПт Апр 20, 2018 14:58   Re: КПП не клиента банка Ответить с цитатой
Полезность: Нет оценки
mmm_kazan пишет:
Просто есть вариант. при нажатии кнопки OK проверку сделать - у нас все равно расширение работает.

Мы недавно делали проверку КПП получателя при добавлении платежного документа - использовали хук/точку вызова MD_ED_VALIDATE. В локальной операции немного переделали CLIENT.LIB.CheckKPP и сделали так:
Код:
     if P#CL_KT_2.[KPP] is not null and P#CL_KT_2.[KPP] <> '0' then
         v_result := null;
         if length (P#CL_KT_2.[KPP]) < 9 then
            v_result := v_result || bool_char (v_result is null, '', ' ') ||'КПП должен иметь длину в 9 символов.';
         elsif P#CL_KT_2.[KPP] like '00%' then
            v_result := v_result || bool_char (v_result is null, '', ' ') ||'КПП не может начинаться с двух нулей.';
         elsif regexp_instr(P#CL_KT_2.[KPP], '^\d{4}[[:digit:]A-Z]{2}\d{3}$') = 0 then
            v_result := v_result || bool_char (v_result is null, '', ' ') ||'КПП не соответствует утвержденной структуре (приказ ФНС ММВ-7-6/435@).';
         end if;
         if v_result is not null then
            pragma error('"КПП получателя" (поле 103): ' || v_result);
         end if;
      end if;
mmm_kazan
Участник со стажем
Неподтвержденный


Вступление в Клуб: 28.03.2018
СообщениеПт Апр 20, 2018 15:35    Ответить с цитатой
Полезность: Нет оценки
Научите, пожалуйста.
Как например в MD_ED_VALIDATE правильно вставить свою проверку?
Желательно подробно
Blackmore64
Участник со стажем
Неподтвержденный


Вступление в Клуб: 17.01.2017
СообщениеПн Апр 23, 2018 11:03    Ответить с цитатой
Полезность: Нет оценки
mmm_kazan пишет:
Как например в MD_ED_VALIDATE правильно вставить свою проверку?

В операции "Редактировать документ (MAIN_DOCUM.EDIT_DOC) есть вызов хука
Код:
::[HOOK].[MD_ED_VALIDATE]
для возможности вставки дополнительных проверок банка.
В операции HOOK.MD_ED_VALIDATE в теле есть конструкция
Код:
   &call_meth
это значит используется справочник "Расширения и перекрытия. Точки вызова". В данном справочнике надо найти запись по фильтру "Короткое имя метода" = MD_ED_VALIDATE. Далее провалиться в массив "Методы" и добавить строку с локальной операцией (с непустым приоритетом), которая должна быть предварительно создана.
Локальную операцию проще всего создать копированием (перетаскиванием) операции HOOK.MD_ED_VALIDATE в тип "Платежные документы". Изменить короткое имя операции, например, на ПрефиксБанка_ED_VALIDATE. В теле операции вставить любые проверки, например
Код:
v_result string(100);
begin
   if P_INFO_ = 'OK' then   
         if P#CL_KT_2.[KPP] is not null and P#CL_KT_2.[KPP] <> '0' then -- Контроль КПП получателя 23.01.2018
         --v_result := ::[DOCUMENT_INT].[PRX_CLIENT].CheckKPP(nvl(P#CL_KT_2.[KPP], '*')); -- см. [CLIENT].[LIB].CheckKPP(p_kpp) - есть косяк!
         v_result := null;
         if length (P#CL_KT_2.[KPP]) < 9 then
            v_result := v_result || bool_char (v_result is null, '', ' ') ||'КПП должен иметь длину в 9 символов.';
         elsif P#CL_KT_2.[KPP] like '00%' then
            v_result := v_result || bool_char (v_result is null, '', ' ') ||'КПП не может начинаться с двух нулей.';
         elsif regexp_instr(P#CL_KT_2.[KPP], '^\d{4}[[:digit:]A-Z]{2}\d{3}$') = 0 then
            v_result := v_result || bool_char (v_result is null, '', ' ') ||'КПП не соответствует утвержденной структуре (приказ ФНС ММВ-7-6/435@).';
         end if;
         if v_result is not null then
            pragma error('"КПП получателя" (поле 103): ' || v_result);
         end if;
      end if;
   end if;
end;
Закомментарить или удалить текст в Локальных описаниях.
Аналогично с редактированием кассовых документов - HOOK.MD_EK_VALIDATE.
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Уроки ЦФТ-Банк для начинающих Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Рейтинг@Mail.ru