diff --git a/proto/accounter.thrift b/proto/accounter.thrift index 6f3cb69f..95fdcfaf 100644 --- a/proto/accounter.thrift +++ b/proto/accounter.thrift @@ -54,6 +54,10 @@ struct Account { * amount - объем переводимых средств (не может быть отрицательным) * currency_sym_code - код валюты, должен совпадать с кодами задействованных счетов * description - описание проводки +* exchange_context - курс валюты, используемый для конвертации исходной суммы операции в валюту терминала +* Заполняется только если валюта терминала отличается от валюты операции (платежа) и проводки +* source_currency - валюта исходной операции (совпадает с валютой проводки) +* destination_currency - валюта терминала */ struct Posting { 1: required AccountID from_id @@ -61,6 +65,7 @@ struct Posting { 3: required domain.Amount amount 4: required domain.CurrencySymbolicCode currency_sym_code 5: required string description + 6: optional domain.ExchangeContext exchange_context } /** diff --git a/proto/domain.thrift b/proto/domain.thrift index 04fcf68c..a7f836d2 100644 --- a/proto/domain.thrift +++ b/proto/domain.thrift @@ -1891,6 +1891,12 @@ struct CashFlowPosting { 4: optional string details } +struct ExchangeContext { + 1: required CurrencySymbolicCode source_currency + 2: required CurrencySymbolicCode destination_currency + 3: required base.Rational exchange_rate +} + /** Полностью вычисленный граф финансовых потоков с проводками всех участников. */ typedef list FinalCashFlow @@ -1900,6 +1906,7 @@ struct FinalCashFlowPosting { 2: required FinalCashFlowAccount destination 3: required Cash volume 4: optional string details + 5: optional ExchangeContext exchange_context } struct FinalCashFlowAccount { @@ -2103,6 +2110,7 @@ struct PaymentsProvisionTerms { 10: optional PaymentChargebackProvisionTerms chargebacks 11: optional RiskScoreSelector risk_coverage 12: optional TurnoverLimitSelector turnover_limits + 13: optional Predicate allow_exchange } union RiskScoreSelector { diff --git a/proto/payment_processing.thrift b/proto/payment_processing.thrift index 175d789a..c248ae84 100644 --- a/proto/payment_processing.thrift +++ b/proto/payment_processing.thrift @@ -149,6 +149,7 @@ union InvoicePaymentChangePayload { 17: InvoicePaymentShopLimitInitiated invoice_payment_shop_limit_initiated 18: InvoicePaymentShopLimitApplied invoice_payment_shop_limit_applied 19: InvoicePaymentCascadeTokensLoaded invoice_payment_cascade_tokens_loaded + 20: InvoicePaymentExchangeContextChanged invoice_payment_exchange_context_changed } /** @@ -204,6 +205,16 @@ struct InvoicePaymentRouteChanged { 5: optional RouteDecisionContext decision } +/** + * Событие об изменении валютного контекста. + * Возникает, когда валюта терминала отличается от валюты магазина + * source_currency - валюта магазина + * destination_currency - валюта терминала + */ +struct InvoicePaymentExchangeContextChanged { + 1: required domain.ExchangeContext exchange_context +} + /** * Событие об изменении данных финансового взаимодействия. */ diff --git a/proto/proxy_provider.thrift b/proto/proxy_provider.thrift index ba916061..2cb2a13b 100644 --- a/proto/proxy_provider.thrift +++ b/proto/proxy_provider.thrift @@ -176,6 +176,11 @@ struct InvoicePayment { 8: optional bool make_recurrent 12: optional bool skip_recurrent 9: optional base.Timestamp processing_deadline + /** + * Сумма платежа в исходной валюте + * для случаев, когда валюта терминала отличается от валюты магазина + */ + 13: optional Cash original_cost } struct InvoicePaymentRefund {