16 ноября, пятница 20:40
Bankir.Ru

Объявление

Свернуть
Пока нет объявлений.

Сообщение по операциям клиента

Свернуть
X
  • Фильтр
  • Время
  • Показать
Очистить всё
новые сообщения

  • Сообщение по операциям клиента

    Добрый день, коллеги. Поступила задание: необходимо выдавать сообщение по операциям клиента (его счет, или же он плательщик). Т.е. должен денег банку человек по кредиту. Сотрудник банка заходит на карточку клиента на закладку "Доп Информация" и в поле "Информация" вбивает сообщение, например "Не принимать платеж по данному клиенту, позвоните 2-16-17".
    Данный неплательщик приходит отправить перевод, а у него не получается, ибо сообщение :-)
    Ничего лучше не придумал, чем в DispatchUser_Proc добавить не слишком красивый код:
    =============================================================================

    declare @inform varchar(255)
    ,@inform1 varchar(255)
    ,@inform2 varchar(255)
    ,@inform3 varchar(255)
    select @inform='',@inform1='',@inform2='',@inform3=''
    ------------ по кредиту счет клиента с предупреждением
    select @inform1=isnull(atr2.Information,@inform)
    from tDealTransact dt (index XPKtDealTransact)
    ,tResource r (index XPKtResource)
    ,tInstAttr2 atr2 (index XPKtInstAttr2)
    where dt.DealTransactID = @ObjectID
    and dt.ResourcePsvID=r.ResourceID
    and atr2.InstitutionID=r.InstOwnerID
    at isolation read uncommitted
    -----по дебету счет клиента с предупреждением
    if isnull(@inform1,'')=''
    select @inform1=isnull(atr2.Information,@inform)
    from tDealTransact dt (index XPKtDealTransact)
    ,tResource r (index XPKtResource)
    ,tInstAttr2 atr2 (index XPKtInstAttr2 )
    where dt.DealTransactID = @ObjectID
    and dt.ResourceID=r.ResourceID
    and atr2.InstitutionID=r.InstOwnerID
    at isolation read uncommitted
    -----плательщик по документу клиент с предупреждением
    if isnull(@inform1,'')=''
    select @inform1=isnull(atr2.Information,@inform)
    from tDocRelation dr (INDEX XPKtDocRelation)
    ,tInstAttr2 atr2 (index XPKtInstAttr2 )
    where dr.DealTransactID =@ObjectID
    and dr.RelType = 6
    and dr.Tag = 'CLIENT'
    and atr2.InstitutionID=dr.ChildID
    at isolation read uncommitted

    if isnull(@inform1,'')>''
    begin
    insert pErrorLine (SPID, Number, Tag, TextLine)
    select @@spid, 1,'',@inform1
    end
    =============================================================================


    НО метод с pErrorLine в некоторых случаях критичен, например в модуле Депозиты приводит к "пломбированию" некоторых действий. Да и решение не шибко то изящное. В общем нужно что-то другое думать, а мыслей нет. Посоветуете?

  • #2
    Запросите доработку у "Диасофта" - тыщ за 100-150 выведут вам окошко с сообщением.

    Комментарий


    • #3
      Вы правы, не особо рассчитывая на бесплатный ответ компании, сюда и написал. Может быть кто-то знает альтернативные методы вывода сообщения с процедуры. Формула бы идеальный вариант, но куда ее навешивать в данном случае. если в расписание крутилку ставить и мониторить событие с диспатча (например добавление в табличку записи)- слишком сложно. Нет приличных идей. Неужели только доработка?

      Комментарий


      • #4
        Слышал в рамках какой-то рекламной компании, что якобы с какой-то версии чуть ли не пользовательские формы можно делать.
        Если бы это было так, то окошко сообщения можно было бы рассматривать как частный случай такой формы - и самому определять условия их запуска без согласования механизмов с "Диасофтом".
        Только думаю, что это все ж была рекламная акция, навряд ли дошло до какого-нибудь приемлемого результата...

        Комментарий


        • #5
          НО метод с pErrorLine в некоторых случаях критичен, например в модуле Депозиты приводит к "пломбированию" некоторых действий. Да и решение не шибко то изящное. В общем нужно что-то другое думать, а мыслей нет. Посоветуете?

          В принципе и должно происходить блокирование действия. Если требуется только предупредить, то можно использовать Базовый модуль->Руководство администратора->Главная книга->2.1.5. ActiveForm. Постобработка, предобработка, условия для полей формы, 2.5. Аналитические формулы.
          Таким образом, можно заблокировать действие (операцию) полностью (через SetFocus() - система не даст ничего сделать до ввода правильного значения)или вывести только предупреждение.
          Плюсы - проверку можно установить на этапе ввода, на любое поле, код запроса всегда можно видеть из Диасофта.
          Минус такого подхода - придется код запроса все равно писать, работает только для вводимых документов руками, для загружаемых документов из внешних систем через DispatchUser_Proc.

          Комментарий


          • #6
            Присоеденюсь к Е. Трошин.
            Операции по счету клиента могут вводиться через GUI, могут приходить по банк-клиенту, могут быть входящие платежи по корсчету, генериться начислениями.
            Если делать через Dispatch, я бы вообще текст сообщения добавил в таблицу tReturnCode и возвращал соответветствующий код ошибки. Когда-то давно мы договаривались с Диасофтом, что коды ошибок > 10000 отдаются клиентам. Не знаю, соблюдается ли это соглашение сейчас.
            А может, стоит воспользоваться стандартной фичей блокировки дебетования/кредитования счетов. Приведенный код заблокирует операции по всем счетам, где владелец этот клиент, а ведь это может быть и счет просроченной задолжености.

            Комментарий


            • #7
              Тут загвоздка то в том, что блокировать операцию нельзя (иначе бы некрасиво, но и pErrorLine работало бы). Нужно просто выдавать сообщение. Про формулы я думал-думал, а куда прицепить не придумал. Т.к. если колотить ручками в первичке, то однозначно отработает поле "Информация" на клиенте- это дистрибутив компании. Как-то про tReturnCode не подумал если честно, не помню заблокирует ли она дальнейшее выполнение, попробую, спасибо за идею. (да и за счет просроченной задолжености тоже)

              Комментарий


              • #8
                tReturnCode заблокирует транзакцию однозначно. Но с pErrorLine тоже как то не надежно получается. Самое главное, выдавать сообщение - кому? Если только при вводе через GUI - тогда лучше как советует Е.Трошин, через постобработку полей. Помнится была там в формулах функция типа Message(). А если нужно по-любому, то я бы настроил что-то через extended sp, чтоб email посылало группе граждан.

                Комментарий

                Пользователи, просматривающие эту тему

                Свернуть

                Присутствует 1. Участников: 0, гостей: 1.

                Обработка...
                X