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: Новая страница: «Динамический код на событие "приход платежа". Позволяет снять с приходящего платежа проце…»
2015-03-03T12:22:09Z
<p>Новая страница: «Динамический код на событие "приход платежа". Позволяет снять с приходящего платежа проце…»</p>
<p><b>Новая страница</b></p><div>Динамический код на событие "приход платежа". Позволяет снять с приходящего платежа процент. В данном примере снимается 5% за платежи, приходящие через систему Assist.<br />
<source lang="java">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<ru.bitel.bgbilling.kernel.contract.balance.server.event.PaymentEvent><br />
{<br />
/** тип платежа, который будет обрабатываться */<br />
private static int PAYMENT_TYPE = 33;<br />
/** множитель суммы платежа */<br />
private static BigDecimal MULTIPLIER = new BigDecimal("0.95");<br />
/** шаблон комментария платежа (первый параметр %s - оригинальная сумма, второй - оригинальный комментарий, знак процента должен дублироваться) */<br />
private static String COMMENT = "Платёж %s р. (комиссия 5%%) - %s";<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 && !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 />
</source></div>
DimOn