Skip to content

Commit 44b92aa

Browse files
committed
Merge branch 'master' into epic/update-prod-profile
2 parents f4aabed + 638a57b commit 44b92aa

18 files changed

Lines changed: 387 additions & 486 deletions

apps/hellgate/src/hg_invoice_payment.erl

Lines changed: 18 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -2512,7 +2512,7 @@ get_limit_overflow_routes(Routes, VS, Iter, St) ->
25122512
fun(Route, {RoutesNoOverflowIn, RejectedIn, LimitsIn}) ->
25132513
PaymentRoute = hg_route:to_payment_route(Route),
25142514
ProviderTerms = hg_routing:get_payment_terms(PaymentRoute, VS, Revision),
2515-
TurnoverLimits = get_turnover_limits(ProviderTerms),
2515+
TurnoverLimits = get_turnover_limits(ProviderTerms, strict),
25162516
case hg_limiter:check_limits(TurnoverLimits, Invoice, Payment, PaymentRoute, Iter) of
25172517
{ok, Limits} ->
25182518
{[Route | RoutesNoOverflowIn], RejectedIn, LimitsIn#{PaymentRoute => Limits}};
@@ -2570,10 +2570,8 @@ rollback_shop_limits(Opts, St, Flags) ->
25702570
Flags
25712571
).
25722572

2573-
get_shop_turnover_limits(#domain_ShopConfig{turnover_limits = undefined}) ->
2574-
[];
2575-
get_shop_turnover_limits(#domain_ShopConfig{turnover_limits = T}) ->
2576-
ordsets:to_list(T).
2573+
get_shop_turnover_limits(ShopConfig) ->
2574+
hg_limiter:get_turnover_limits(ShopConfig, strict).
25772575

25782576
%%
25792577

@@ -2588,7 +2586,7 @@ hold_limit_routes(Routes0, VS, Iter, St) ->
25882586
fun(Route, {LimitHeldRoutes, RejectedRoutes} = Acc) ->
25892587
PaymentRoute = hg_route:to_payment_route(Route),
25902588
ProviderTerms = hg_routing:get_payment_terms(PaymentRoute, VS, Revision),
2591-
TurnoverLimits = get_turnover_limits(ProviderTerms),
2589+
TurnoverLimits = get_turnover_limits(ProviderTerms, strict),
25922590
try
25932591
ok = hg_limiter:hold_payment_limits(TurnoverLimits, Invoice, Payment, PaymentRoute, Iter),
25942592
{[Route | LimitHeldRoutes], RejectedRoutes}
@@ -2609,7 +2607,7 @@ hold_limit_routes(Routes0, VS, Iter, St) ->
26092607
{lists:reverse(Routes1), Rejected}.
26102608

26112609
do_reject_route(LimiterError, Route, TurnoverLimits, {LimitHeldRoutes, RejectedRoutes}) ->
2612-
LimitsIDs = [T#domain_TurnoverLimit.id || T <- TurnoverLimits],
2610+
LimitsIDs = [T#domain_TurnoverLimit.ref#domain_LimitConfigRef.id || T <- TurnoverLimits],
26132611
RejectedRoute = hg_route:to_rejected_route(Route, {'LimitHoldError', LimitsIDs, LimiterError}),
26142612
{LimitHeldRoutes, [RejectedRoute | RejectedRoutes]}.
26152613

@@ -2622,7 +2620,7 @@ rollback_payment_limits(Routes, Iter, St, Flags) ->
26222620
lists:foreach(
26232621
fun(Route) ->
26242622
ProviderTerms = hg_routing:get_payment_terms(Route, VS, Revision),
2625-
TurnoverLimits = get_turnover_limits(ProviderTerms),
2623+
TurnoverLimits = get_turnover_limits(ProviderTerms, strict),
26262624
ok = hg_limiter:rollback_payment_limits(TurnoverLimits, Invoice, Payment, Route, Iter, Flags)
26272625
end,
26282626
Routes
@@ -2632,7 +2630,7 @@ rollback_broken_payment_limits(St) ->
26322630
Opts = get_opts(St),
26332631
Payment = get_payment(St),
26342632
Invoice = get_invoice(Opts),
2635-
LimitValues = get_limit_values(St),
2633+
LimitValues = get_limit_values_(St, lenient),
26362634
Iter = maps:size(LimitValues),
26372635
maps:fold(
26382636
fun
@@ -2661,9 +2659,8 @@ rollback_unused_payment_limits(St) ->
26612659
UnUsedRoutes = Routes -- [Route],
26622660
rollback_payment_limits(UnUsedRoutes, get_iter(St), St, [ignore_business_error, ignore_not_found]).
26632661

2664-
get_turnover_limits(ProviderTerms) ->
2665-
TurnoverLimitSelector = ProviderTerms#domain_PaymentsProvisionTerms.turnover_limits,
2666-
hg_limiter:get_turnover_limits(TurnoverLimitSelector).
2662+
get_turnover_limits(ProviderTerms, Mode) ->
2663+
hg_limiter:get_turnover_limits(ProviderTerms, Mode).
26672664

26682665
commit_payment_limits(#st{capture_data = CaptureData} = St) ->
26692666
Opts = get_opts(St),
@@ -2673,7 +2670,7 @@ commit_payment_limits(#st{capture_data = CaptureData} = St) ->
26732670
Invoice = get_invoice(Opts),
26742671
Route = get_route(St),
26752672
ProviderTerms = get_provider_terms(St, Revision),
2676-
TurnoverLimits = get_turnover_limits(ProviderTerms),
2673+
TurnoverLimits = get_turnover_limits(ProviderTerms, strict),
26772674
Iter = get_iter(St),
26782675
hg_limiter:commit_payment_limits(TurnoverLimits, Invoice, Payment, Route, Iter, CapturedCash).
26792676

@@ -3450,8 +3447,11 @@ accrue_status_timing(Name, Opts, #st{timings = Timings}) ->
34503447
EventTime = define_event_timestamp(Opts),
34513448
hg_timings:mark(Name, EventTime, hg_timings:accrue(Name, started, EventTime, Timings)).
34523449

3453-
-spec get_limit_values(st()) -> route_limit_context().
3454-
get_limit_values(St) ->
3450+
-spec get_limit_values(st(), opts()) -> route_limit_context().
3451+
get_limit_values(St, Opts) ->
3452+
get_limit_values_(St#st{opts = Opts}, strict).
3453+
3454+
get_limit_values_(St, Mode) ->
34553455
{PaymentInstitution, VS, Revision} = route_args(St),
34563456
Ctx = build_routing_context(PaymentInstitution, VS, Revision, St),
34573457
Payment = get_payment(St),
@@ -3468,20 +3468,15 @@ get_limit_values(St) ->
34683468
fun(Route, Acc) ->
34693469
PaymentRoute = hg_route:to_payment_route(Route),
34703470
ProviderTerms = hg_routing:get_payment_terms(PaymentRoute, VS, Revision),
3471-
TurnoverLimits = get_turnover_limits(ProviderTerms),
3472-
TurnoverLimitValues = hg_limiter:get_limit_values(
3473-
TurnoverLimits, Invoice, Payment, PaymentRoute, Iter
3474-
),
3471+
TurnoverLimits = get_turnover_limits(ProviderTerms, Mode),
3472+
TurnoverLimitValues =
3473+
hg_limiter:get_limit_values(TurnoverLimits, Invoice, Payment, PaymentRoute, Iter),
34753474
Acc#{PaymentRoute => TurnoverLimitValues}
34763475
end,
34773476
#{},
34783477
hg_routing_ctx:considered_candidates(Ctx)
34793478
).
34803479

3481-
-spec get_limit_values(st(), opts()) -> route_limit_context().
3482-
get_limit_values(St, Opts) ->
3483-
get_limit_values(St#st{opts = Opts}).
3484-
34853480
try_accrue_waiting_timing(Opts, #st{payment = Payment, timings = Timings}) ->
34863481
case get_payment_flow(Payment) of
34873482
?invoice_payment_flow_instant() ->

apps/hellgate/src/hg_invoice_payment_refund.erl

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -422,8 +422,7 @@ get_resource_payment_tool(#domain_DisposablePaymentResource{payment_tool = Payme
422422
PaymentTool.
423423

424424
get_turnover_limits(ProviderTerms) ->
425-
TurnoverLimitSelector = ProviderTerms#domain_PaymentsProvisionTerms.turnover_limits,
426-
hg_limiter:get_turnover_limits(TurnoverLimitSelector).
425+
hg_limiter:get_turnover_limits(ProviderTerms, strict).
427426

428427
prepare_refund_cashflow(Refund) ->
429428
hg_accounting:hold(construct_refund_plan_id(Refund), make_batch(Refund)).

apps/hellgate/src/hg_invoice_registered_payment.erl

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -215,8 +215,7 @@ get_turnover_limits(Payment, Route, St) ->
215215
RiskScore = hg_invoice_payment:get_risk_score(St),
216216
VS = collect_validation_varset(PartyConfigRef, ShopObj, Cost, PaymentTool, RiskScore),
217217
ProviderTerms = hg_routing:get_payment_terms(Route, VS, Revision),
218-
TurnoverLimitSelector = ProviderTerms#domain_PaymentsProvisionTerms.turnover_limits,
219-
hg_limiter:get_turnover_limits(TurnoverLimitSelector).
218+
hg_limiter:get_turnover_limits(ProviderTerms, strict).
220219

221220
construct_payment(
222221
PaymentID,

0 commit comments

Comments
 (0)