http://wiki.bitel.ru/index.php?title=%D0%9C%D0%BE%D0%B4%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F_%D0%BF%D1%80%D0%B8%D1%85%D0%BE%D0%B4%D1%8F%D1%89%D0%B5%D0%B3%D0%BE_%D0%BF%D0%BB%D0%B0%D1%82%D0%B5%D0%B6%D0%B0_(%D1%81%D0%BD%D1%8F%D1%82%D0%B8%D0%B5_%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D0%BD%D1%82%D0%B0)&feed=atom&action=history Модификация приходящего платежа (снятие процента) - История изменений 2024-03-28T21:58:13Z История изменений этой страницы в вики MediaWiki 1.15.1 http://wiki.bitel.ru/index.php?title=%D0%9C%D0%BE%D0%B4%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F_%D0%BF%D1%80%D0%B8%D1%85%D0%BE%D0%B4%D1%8F%D1%89%D0%B5%D0%B3%D0%BE_%D0%BF%D0%BB%D0%B0%D1%82%D0%B5%D0%B6%D0%B0_(%D1%81%D0%BD%D1%8F%D1%82%D0%B8%D0%B5_%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D0%BD%D1%82%D0%B0)&diff=6161&oldid=prev DimOn:&#32;Новая страница: «Динамический код на событие "приход платежа". Позволяет снять с приходящего платежа проце…» 2015-03-03T12:22:09Z <p>Новая страница: «Динамический код на событие &quot;приход платежа&quot;. Позволяет снять с приходящего платежа проце…»</p> <p><b>Новая страница</b></p><div>Динамический код на событие &quot;приход платежа&quot;. Позволяет снять с приходящего платежа процент. В данном примере снимается 5% за платежи, приходящие через систему Assist.<br /> &lt;source lang=&quot;java&quot;&gt;package ru.qwerty;<br /> <br /> import java.math.BigDecimal;<br /> import java.sql.Connection;<br /> <br /> import ru.bitel.bgbilling.kernel.contract.balance.common.bean.Payment;<br /> import ru.bitel.bgbilling.kernel.contract.balance.server.bean.PaymentDao;<br /> import ru.bitel.bgbilling.kernel.script.server.dev.EventScriptBase;<br /> import ru.bitel.bgbilling.server.util.ServerUtils;<br /> import ru.bitel.bgbilling.server.util.Setup;<br /> import ru.bitel.common.sql.ConnectionSet;<br /> import bitel.billing.server.contract.bean.BalanceUtils;<br /> import bitel.billing.server.contract.bean.Contract;<br /> import bitel.billing.server.contract.bean.ContractManager;<br /> <br /> /**<br /> * Событие на приход платежа (асинхронное).<br /> * Вычитает из платежа нужный процент и модифицирует комментарий.<br /> * @author dimon<br /> */<br /> public class AssistPayment<br /> extends EventScriptBase&lt;ru.bitel.bgbilling.kernel.contract.balance.server.event.PaymentEvent&gt;<br /> {<br /> /** тип платежа, который будет обрабатываться */<br /> private static int PAYMENT_TYPE = 33;<br /> /** множитель суммы платежа */<br /> private static BigDecimal MULTIPLIER = new BigDecimal(&quot;0.95&quot;);<br /> /** шаблон комментария платежа (первый параметр %s - оригинальная сумма, второй - оригинальный комментарий, знак процента должен дублироваться) */<br /> private static String COMMENT = &quot;Платёж %s р. (комиссия 5%%) - %s&quot;;<br /> <br /> @Override<br /> public void onEvent( ru.bitel.bgbilling.kernel.contract.balance.server.event.PaymentEvent event, Setup setup, ConnectionSet connectionSet )<br /> throws Exception<br /> {<br /> Payment contractPayment = event.getPayment();<br /> if( contractPayment.getTypeId() == PAYMENT_TYPE &amp;&amp; !event.isEditMode() )<br /> {<br /> Connection con = connectionSet.getConnection();<br /> <br /> BigDecimal originalSumm = contractPayment.getSum();<br /> String originalComment = contractPayment.getComment();<br /> <br /> contractPayment.setSum(originalSumm.multiply(MULTIPLIER));<br /> contractPayment.setComment(String.format(COMMENT, originalSumm, originalComment));<br /> <br /> new PaymentDao( con ).update( contractPayment );<br /> // обновление баланса<br /> Contract contract = new ContractManager( con ).getContractById( contractPayment.getContractId() );<br /> ServerUtils.commitConnection( con ); // во избежание косяка с необновлением баланса при параллельных транзакциях коммитим после изменения платежа/расхода {213fc512-b1b2-4787-926c-a5bc44eb615a}<br /> new BalanceUtils( con ).updateBalance( contractPayment.getDate(), contract );<br /> ServerUtils.commitConnection( con );<br /> //EventProcessor.getInstance().publish( new PaymentEvent( User.USER_SERVER, contractPayment ) );<br /> //EventProcessor.getInstance().publish( new ContractBalanceChangedEvent( contract.getId(), contractPayment.getSum() ) );<br /> }<br /> }<br /> }<br /> &lt;/source&gt;</div> DimOn