@@ -185,23 +185,35 @@ def mark_as_paid(self, stripe_session_id=None):
185
185
if self .state == CheckoutIntentState .PAID and stripe_session_id != self .stripe_checkout_session_id :
186
186
raise ValueError ("Cannot transition from PAID to PAID with a different stripe_checkout_session_id" )
187
187
188
+ previous_state = self .state
188
189
self .state = CheckoutIntentState .PAID
189
190
if stripe_session_id :
190
191
self .stripe_checkout_session_id = stripe_session_id
191
192
self .save (update_fields = ['state' , 'stripe_checkout_session_id' , 'modified' ])
192
193
logger .info (f'CheckoutIntent { self } marked as { CheckoutIntentState .PAID } .' )
194
+
195
+ # Track state transition
196
+ from .segment_events import track_checkout_intent_event
197
+ track_checkout_intent_event (self , previous_state , self .state )
198
+
193
199
return self
194
200
195
201
def mark_as_fulfilled (self , workflow = None ):
196
202
"""Mark the intent as fulfilled after successful provisioning."""
197
203
if not self .is_valid_state_transition (CheckoutIntentState (self .state ), CheckoutIntentState .FULFILLED ):
198
204
raise ValueError (f"Cannot transition from { self .state } to { CheckoutIntentState .FULFILLED } ." )
199
205
206
+ previous_state = self .state
200
207
self .state = CheckoutIntentState .FULFILLED
201
208
if workflow :
202
209
self .workflow = workflow
203
210
self .save (update_fields = ['state' , 'workflow' , 'modified' ])
204
211
logger .info (f'CheckoutIntent { self } marked as { CheckoutIntentState .FULFILLED } .' )
212
+
213
+ # Track state transition
214
+ from .segment_events import track_checkout_intent_event
215
+ track_checkout_intent_event (self , previous_state , self .state )
216
+
205
217
return self
206
218
207
219
def mark_checkout_error (self , error_message ):
@@ -212,10 +224,16 @@ def mark_checkout_error(self, error_message):
212
224
):
213
225
raise ValueError (f"Cannot transition from { self .state } to { CheckoutIntentState .ERRORED_STRIPE_CHECKOUT } ." )
214
226
227
+ previous_state = self .state
215
228
self .state = CheckoutIntentState .ERRORED_STRIPE_CHECKOUT
216
229
self .last_checkout_error = error_message
217
230
self .save (update_fields = ['state' , 'last_checkout_error' , 'modified' ])
218
231
logger .info (f'CheckoutIntent { self } marked as { CheckoutIntentState .ERRORED_STRIPE_CHECKOUT } .' )
232
+
233
+ # Track state transition
234
+ from .segment_events import track_checkout_intent_event
235
+ track_checkout_intent_event (self , previous_state , self .state )
236
+
219
237
return self
220
238
221
239
def mark_provisioning_error (self , error_message , workflow = None ):
@@ -226,12 +244,18 @@ def mark_provisioning_error(self, error_message, workflow=None):
226
244
):
227
245
raise ValueError (f"Cannot transition from { self .state } to { CheckoutIntentState .ERRORED_PROVISIONING } ." )
228
246
247
+ previous_state = self .state
229
248
self .state = CheckoutIntentState .ERRORED_PROVISIONING
230
249
self .last_provisioning_error = error_message
231
250
if workflow :
232
251
self .workflow = workflow
233
252
self .save (update_fields = ['state' , 'last_provisioning_error' , 'workflow' , 'modified' ])
234
253
logger .info (f'CheckoutIntent { self } marked as { CheckoutIntentState .ERRORED_PROVISIONING } .' )
254
+
255
+ # Track state transition
256
+ from .segment_events import track_checkout_intent_event
257
+ track_checkout_intent_event (self , previous_state , self .state )
258
+
235
259
return self
236
260
237
261
@property
@@ -429,9 +453,14 @@ def create_intent(
429
453
existing_intent .country = country
430
454
existing_intent .terms_metadata = terms_metadata
431
455
existing_intent .save ()
456
+
457
+ # Track creation event for updated intent
458
+ from .segment_events import track_checkout_intent_event
459
+ track_checkout_intent_event (existing_intent )
460
+
432
461
return existing_intent
433
462
434
- return cls .objects .create (
463
+ intent = cls .objects .create (
435
464
user = user ,
436
465
state = CheckoutIntentState .CREATED ,
437
466
enterprise_slug = slug ,
@@ -442,6 +471,12 @@ def create_intent(
442
471
terms_metadata = terms_metadata ,
443
472
)
444
473
474
+ # Track creation event
475
+ from .segment_events import track_checkout_intent_event
476
+ track_checkout_intent_event (intent )
477
+
478
+ return intent
479
+
445
480
@classmethod
446
481
def for_user (cls , user ):
447
482
"""
0 commit comments