@@ -2239,6 +2239,17 @@ maybe_set_charged_back_status(?chargeback_status_accepted(), ChargebackBody, St)
22392239 ? cash (Amount , _ ) when Amount > 0 ->
22402240 []
22412241 end ;
2242+ maybe_set_charged_back_status (
2243+ ? chargeback_status_cancelled (),
2244+ _ChargebackBody ,
2245+ # st {
2246+ payment = # domain_InvoicePayment {status = ? charged_back ()},
2247+ status_log = [_ActualStatus , PrevStatus | _ ]
2248+ }
2249+ ) ->
2250+ % % NOTE Mind warning (or constraint) of `invalid_transition` from
2251+ % % 'idle' activity.
2252+ [? payment_status_changed (PrevStatus )];
22422253maybe_set_charged_back_status (_ChargebackStatus , _ChargebackBody , _St ) ->
22432254 [].
22442255
@@ -3272,22 +3283,22 @@ merge_change(Change = ?payment_status_changed({failed, _} = Status), #st{payment
32723283 St ,
32733284 Opts
32743285 ),
3275- St # st {
3286+ ( record_status_change ( Change , St )) # st {
32763287 payment = Payment # domain_InvoicePayment {status = Status },
32773288 activity = idle ,
32783289 failure = undefined ,
32793290 timings = accrue_status_timing (failed , Opts , St )
32803291 };
32813292merge_change (Change = ? payment_status_changed ({cancelled , _ } = Status ), # st {payment = Payment } = St , Opts ) ->
32823293 _ = validate_transition ({payment , finalizing_accounter }, Change , St , Opts ),
3283- St # st {
3294+ ( record_status_change ( Change , St )) # st {
32843295 payment = Payment # domain_InvoicePayment {status = Status },
32853296 activity = idle ,
32863297 timings = accrue_status_timing (cancelled , Opts , St )
32873298 };
32883299merge_change (Change = ? payment_status_changed ({captured , Captured } = Status ), # st {payment = Payment } = St , Opts ) ->
3289- _ = validate_transition ({payment , finalizing_accounter }, Change , St , Opts ),
3290- St # st {
3300+ _ = validate_transition ([ idle , {payment , finalizing_accounter }] , Change , St , Opts ),
3301+ ( record_status_change ( Change , St )) # st {
32913302 payment = Payment # domain_InvoicePayment {
32923303 status = Status ,
32933304 cost = get_captured_cost (Captured , Payment )
@@ -3298,19 +3309,19 @@ merge_change(Change = ?payment_status_changed({captured, Captured} = Status), #s
32983309 };
32993310merge_change (Change = ? payment_status_changed ({processed , _ } = Status ), # st {payment = Payment } = St , Opts ) ->
33003311 _ = validate_transition ({payment , processing_accounter }, Change , St , Opts ),
3301- St # st {
3312+ ( record_status_change ( Change , St )) # st {
33023313 payment = Payment # domain_InvoicePayment {status = Status },
33033314 activity = {payment , flow_waiting },
33043315 timings = accrue_status_timing (processed , Opts , St )
33053316 };
33063317merge_change (Change = ? payment_status_changed ({refunded , _ } = Status ), # st {payment = Payment } = St , Opts ) ->
33073318 _ = validate_transition (idle , Change , St , Opts ),
3308- St # st {
3319+ ( record_status_change ( Change , St )) # st {
33093320 payment = Payment # domain_InvoicePayment {status = Status }
33103321 };
33113322merge_change (Change = ? payment_status_changed ({charged_back , _ } = Status ), # st {payment = Payment } = St , Opts ) ->
33123323 _ = validate_transition (idle , Change , St , Opts ),
3313- St # st {
3324+ ( record_status_change ( Change , St )) # st {
33143325 payment = Payment # domain_InvoicePayment {status = Status }
33153326 };
33163327merge_change (Change = ? chargeback_ev (ID , Event ), St , Opts ) ->
@@ -3477,6 +3488,9 @@ merge_change(Change = ?session_ev(Target, Event), St = #st{activity = Activity},
34773488 St2
34783489 end .
34793490
3491+ record_status_change (? payment_status_changed (Status ), St ) ->
3492+ St # st {status_log = [Status | St # st .status_log ]}.
3493+
34803494latest_adjustment_id (# st {adjustments = []}) ->
34813495 undefined ;
34823496latest_adjustment_id (# st {adjustments = Adjustments }) ->
0 commit comments