forum.bitel.ru http://forum.bitel.ru/ |
|
6.2 PaymentService и модуль mps http://forum.bitel.ru/viewtopic.php?f=19&t=12275 |
Страница 1 из 1 |
Автор: | fmaks [ 01 мар 2017, 18:26 ] |
Заголовок сообщения: | 6.2 PaymentService и модуль mps |
Здравствуйте. Подскажите, пожалуйста, по такому вопросу - в 6.2 пытался сделать обработку по приходу платежа, реализовал через dynservice, расширив PaymentService - результат, при занесении платежа через интерфейс клиента всё отрабатывает, при занесение платежа через платёжную систему (osmp) - тишина. Собственно, в 6.0 пытался делать через dynaction - результат идентичный. Думал в 6.2 через PaymentService заработает. При этом скрипт на договоре по приходу платежа отрабатывает и при занесении платежа из клиента, и по приходу через mps. Собственно вопрос - это так и должно быть? Просто скрипт на договоре не всегда удобно. |
Автор: | Phricker [ 01 мар 2017, 18:44 ] |
Заголовок сообщения: | Re: 6.2 PaymentService и модуль mps |
Там же вроде есть стандартное событие "Приход платежа". И оно отрабатывает на все виды приходов. Его не хватает? |
Автор: | fmaks [ 01 мар 2017, 20:30 ] |
Заголовок сообщения: | Re: 6.2 PaymentService и модуль mps |
Да, есть, и по нему, как я и написал работает. Но скрипт на договоре не всегда хорошо. Его могут удалить, закрыть, создать договор не из шаблона. Волшебные ручки могут много чего сделать. Можно писать обработчики событий при изменении/удалении скриптов на договоре контролировать это и запрещать/разрешать действия (при том, что тому же абонентскому отделу разрешены в правах манипуляции со скриптами на договорах и это нормально), но такое решение, на мой взгляд, не очень хорошее и только усложняет поддержку. Обработчик же как dynaction/dynservice позволяет в некоторых случаях (когда действие применяется для всех договоров, либо условия фильтрации просты) закрыть такую проблему. Как-то так. Потому и возник вопрос - обработчики написать возможность есть, а работают они не всегда. |
Автор: | fmaks [ 01 мар 2017, 20:37 ] |
Заголовок сообщения: | Re: 6.2 PaymentService и модуль mps |
Добавлю, если ни чего не путаю, скрипт по событию "Приход платежа" отрабатывает после события, есть конечно before и after, но если мне не изменяет склероз они давно не рекомендованы к использованию и их как раз предлагают заменить решением через dynaction/dynservice, где можно воткнуть обработку как до стандартного действия, так и после. |
Автор: | Phricker [ 01 мар 2017, 20:59 ] |
Заголовок сообщения: | Re: 6.2 PaymentService и модуль mps |
fmaks писал(а): Его могут удалить, закрыть, создать договор не из шаблона. Решаете административные проблемы техническим способом © Кто-то из разрабов. fmaks писал(а): обработчики написать возможность есть, а работают они не всегда. Судя по MPSTransactionManager там вызывается PaymentDao.update(payment) А в PaymentDao Код: protected void updateImpl(Payment payment)
throws BGException, SQLException { if (payment != null) { String query = null; PreparedStatement ps = null; if (payment.getId() < 1) { query = "INSERT INTO " + this.tableName + " SET dt=?, cid=?, pt=?, uid=?, summa=?, comment=?"; ps = this.con.prepareStatement(query, 1); } else { query = "UPDATE " + this.tableName + " SET dt=?, cid=?, pt=?, uid=?, summa=?, comment=? WHERE id=?"; ps = this.con.prepareStatement(query); ps.setInt(7, payment.getId()); } ps.setDate(1, TimeUtils.convertDateToSqlDate(payment.getDate())); ps.setInt(2, payment.getContractId()); ps.setInt(3, payment.getTypeId()); ps.setInt(4, payment.getUserId()); ps.setBigDecimal(5, payment.getSum()); ps.setString(6, payment.getComment()); ps.executeUpdate(); if (payment.getId() < 0) { payment.setId(ServerUtils.lastInsertId(ps)); } ps.close(); } } |
Автор: | fmaks [ 01 мар 2017, 21:50 ] |
Заголовок сообщения: | Re: 6.2 PaymentService и модуль mps |
Phricker писал(а): fmaks писал(а): Его могут удалить, закрыть, создать договор не из шаблона. Решаете административные проблемы техническим способом © Кто-то из разрабов. Согласен. Но - да, местами так и есть, тем более если техническое решение позволяет без особых сложностей закрыть проблему в принципе. Phricker писал(а): fmaks писал(а): обработчики написать возможность есть, а работают они не всегда. Судя по MPSTransactionManager там вызывается PaymentDao.update(payment) А в PaymentDao Код: protected void updateImpl(Payment payment) throws BGException, SQLException { ... } } Ясно. Т.о. в mps разработчики напрямую используют PaymentDao, в результате навесить свою обработку ни через ActionUpdateContractPayment, ни через PaymentService не получается. Честно, не очень это удобно для заточки функционала под себя - здесь это работает, а здесь нет. И как быть тогда с предобработкой, забыв про before и after. Может разработчики что ответят, планируется ли это приводить к единому виду, чтобы dynservice для платежей можно было использовать? |
Автор: | dimOn [ 02 мар 2017, 22:30 ] |
Заголовок сообщения: | Re: 6.2 PaymentService и модуль mps |
Динсервисы перегружаются только для вызова через экзекутеры, конечно. Так работать не будет как вы хотите, нельзя перегрузить дин.кодом любой код в биллинге. Так и должно быть, да. Не говоря уж о том, что сервисы не используются в обработке платежей в этом месте. И даже если бы использовались они - оно бы так не сработало, т.к. см. сначала сообщения. Событие не кидается после прихода платежа, что-то я не понял? |
Автор: | fmaks [ 03 мар 2017, 14:08 ] |
Заголовок сообщения: | Re: 6.2 PaymentService и модуль mps |
Да я и не предполагал, что можно перегрузить любой код в биллинге ![]() Просто предположил, что коль есть PaymentService, то он будет работать для любого прихода платежа. Когда выяснили, что mps не использует PaymentService, то стало ясно что работать и не будет, а своим первым предложением про экзекутеры вы вбили последний гвоздь. С этим теперь всё ясно - работать не будет, переделываться не будет. Хорошо, неудобно, но ладно. Событие после прихода платежа кидается и скрипт висящий на договоре срабатывает по событию "Приход платежа". Я объяснял почему скрипт на договоре - это не всегда удобно. Если мне нужна предобработка, before и after - будут поддерживаться? Вот это будет работать и в следующих версиях: Код: action.event_contract_UpdateContractPayment=before ? Просто в инструкции начиная с версии 5.2 этого нет и если мне не изменяет склероз, то где-то писалось - что before и аfter - не рекомендованны к применению. |
Автор: | dimOn [ 14 мар 2017, 19:11 ] |
Заголовок сообщения: | Re: 6.2 PaymentService и модуль mps |
эта настройка before и after будет работать опять же для вызова вашего экшена UpdateContractPayment только, из клиента или веба. это можно полностью заменить с помощью dynaction, только более просто и гибко, именно поэтому они устаревшие. |
Автор: | fmaks [ 21 мар 2017, 20:32 ] |
Заголовок сообщения: | Re: 6.2 PaymentService и модуль mps |
Да, теперь я понял. Спасибо за ответ. Получается что единую предобрабоку/обработку для события прихода платежа включая и модуль mps сделать ни как не получится. Жаль. P.S. Да я только "за" dynaction-ы ![]() |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |