@@ -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
26112609do_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
26682665commit_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-
34853480try_accrue_waiting_timing (Opts , # st {payment = Payment , timings = Timings }) ->
34863481 case get_payment_flow (Payment ) of
34873482 ? invoice_payment_flow_instant () ->
0 commit comments