
    AiM                        d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZmZ d dlmZmZmZmZmZmZ d d	lmZmZmZ errd d
lmZ d dlmZ d dlmZ d dl m!Z! d dl"m#Z$ d dl%m&Z& d dl'm(Z( d dl)m*Z* d dl+m,Z, d dl-m.Z. d dl/m0Z0 d dl1m2Z2 d dl3m4Z4 d dl5m6Z6 d dl7m8Z8 d dl9m:Z: d dl;m<Z< d dl=m>Z> d dl?m@Z@  G d ded   ed   ed         ZAy)     )CreateableAPIResource)ExpandableField)
ListObject)ListableAPIResource)StripeObject)UpdateableAPIResource)class_method_variantsanitize_id)ClassVarDictListOptionalcastoverload)LiteralUnpackTYPE_CHECKING)Account)Application)Coupon)Customer)Discount)PaymentMethod)Plan)Price)PromotionCode)Subscription)TaxId)TaxRate) SubscriptionScheduleCancelParams) SubscriptionScheduleCreateParams)SubscriptionScheduleListParams) SubscriptionScheduleModifyParams)!SubscriptionScheduleReleaseParams)"SubscriptionScheduleRetrieveParams)	TestClockc                   x   e Zd ZU dZdZeed      ed<    G d de      Z	 G d de      Z
 G d d	e      Z G d
 de      Zeed      ed<   	 e	ed<   	 ee   ed<   	 ee   ed<   	 eed<   	 ee
   ed<   	 ed   ed<   	 eed<   ed   ed<   	 eed<   	 eed<   	 eeeef      ed<   	 ed   ed<   	 ee   ed<   	 ee   ed<   	 ee   ed<   	 ed   ed <   	 eed!      ed"<   	 eed#      ed$<   	 ed%ed&ed'   d(d fd)       Zeed%ed&ed'   d(d fd*              Zed&ed'   d(d fd+       Z ed,      d&ed'   d(d fd-       Zed%ed&ed'   d(d fd.       Zeed%ed&ed'   d(d fd/              Zed&ed'   d(d fd0       Z ed1      d&ed'   d(d fd2       Zed&ed3   d(d fd4       Zed&ed3   d(d fd5       Zed&ed6   d(ed    fd7       Z ed&ed6   d(ed    fd8       Z!eded&ed9   d(d fd:       Z"eded&ed9   d(d fd;       Z#ed%ed&ed<   d(d fd=       Z$eed%ed&ed<   d(d fd>              Z%ed&ed<   d(d fd?       Z% ed@      d&ed<   d(d fdA       Z%ed%ed&ed<   d(d fdB       Z&eed%ed&ed<   d(d fdC              Z'ed&ed<   d(d fdD       Z' edE      d&ed<   d(d fdF       Z'eded&edG   d(d fdH       Z(eded&edG   d(d fdI       Z)e	e
eedJZ*yK)LSubscriptionSchedulez
    A subscription schedule allows you to create and manage the lifecycle of a subscription by predefining expected changes.

    Related guide: [Subscription schedules](https://stripe.com/docs/billing/subscriptions/subscription-schedules)
    subscription_scheduleOBJECT_NAMEc                   b    e Zd ZU  G d de      Zee   ed<   	 ed   ed<   	 ee   ed<   	 deiZ	y) SubscriptionSchedule.BillingModec                   $    e Zd ZU eed      ed<   y))SubscriptionSchedule.BillingMode.Flexible)includeditemizedproration_discountsN)__name__
__module____qualname__r   r   __annotations__     P/var/www/html/immo/lib/python3.12/site-packages/stripe/_subscription_schedule.pyFlexibler.   ?   s    !)'2H*I!JJr7   r9   flexible)classicr:   type
updated_atN)
r2   r3   r4   r   r9   r   r5   r   int_inner_class_typesr6   r7   r8   BillingModer,   >   sQ    	| 	 8$$	 +,,	 SM!	 )(3r7   r@   c                   $    e Zd ZU eed<   	 eed<   y)!SubscriptionSchedule.CurrentPhaseend_date
start_dateN)r2   r3   r4   r>   r5   r6   r7   r8   CurrentPhaserB   S   s    	 	r7   rE   c                   0   e Zd ZU  G d de      Z G d de      Z G d de      Z G d de      Zee	   e
d	<   	 ee   e
d
<   ed   e
d<   	 ee   e
d<   	 eed      e
d<   	 eed      e
d<   	 ee   e
d<   	 ee
d<   eed      e
d<   	 ee   e
d<   	 eeeedZy)$SubscriptionSchedule.DefaultSettingsc                   b    e Zd ZU  G d de      Zeed      ed<   	 eed<   	 ee   ed<   	 deiZ	y)1SubscriptionSchedule.DefaultSettings.AutomaticTaxc                   6    e Zd ZU eed      ed<   	 ed   ed<   y);SubscriptionSchedule.DefaultSettings.AutomaticTax.Liabilityr   accountrL   selfr<   Nr2   r3   r4   r   r   r5   r   r6   r7   r8   	LiabilityrK   _   *    !/)"<== /00r7   rP   requires_location_inputsdisabled_reasonenabled	liabilityN
r2   r3   r4   r   rP   r   r   r5   boolr?   r6   r7   r8   AutomaticTaxrI   ^   Q    L  &g.H&IJJ M  	** #.y!9r7   rX   c                   0    e Zd ZU ee   ed<   	 ee   ed<   y)6SubscriptionSchedule.DefaultSettings.BillingThresholds
amount_gtereset_billing_cycle_anchorNr2   r3   r4   r   r>   r5   rW   r6   r7   r8   BillingThresholdsr[   w   "     % )16r7   r_   c                   f    e Zd ZU  G d de      Zeeed         ed<   	 ee	   ed<   	 eed<   deiZ
y)4SubscriptionSchedule.DefaultSettings.InvoiceSettingsc                   6    e Zd ZU eed      ed<   	 ed   ed<   y);SubscriptionSchedule.DefaultSettings.InvoiceSettings.Issuerr   rL   rM   r<   NrO   r6   r7   r8   Issuerrd      rQ   r7   re   r   account_tax_idsdays_until_dueissuerNr2   r3   r4   r   re   r   r   r   r5   r>   r?   r6   r7   r8   InvoiceSettingsrb      sM      &d?7+C&DEE %SM) N"*F!3r7   rj   c                   0    e Zd ZU ee   ed<   	 ed   ed<   y)1SubscriptionSchedule.DefaultSettings.TransferDataamount_percentr   destinationNr2   r3   r4   r   floatr5   r   r6   r7   r8   TransferDatarl      #    $UO+ )33r7   rq   application_fee_percentautomatic_tax	automaticphase_startbilling_cycle_anchorbilling_thresholdscharge_automaticallysend_invoicecollection_methodr   default_payment_methoddescriptioninvoice_settingsr   on_behalf_oftransfer_data)rt   ry   r   r   N)r2   r3   r4   r   rX   r_   rj   rq   r   rp   r5   r   r   strr?   r6   r7   r8   DefaultSettingsrG   ]   s    	:< 	:2	 		4l 	4,	< 	 "*%0	  --%&@AA	 %%677	 $:;
 	
	 !))I JJ	 c]"	 *)y9::	  --	 *"3 /)	
r7   r   c                   8   e Zd ZU  G d de      Z G d de      Z G d de      Z G d de      Z G d	 d
e      Z G d de      Z	 G d de      Z
ee   ed<   	 ee   ed<   	 ee   ed<   eed      ed<   	 ee   ed<   	 eed      ed<   	 eed<   	 eed      ed<   	 eed      ed<   	 ee   ed<   	 ee   ed<   	 eed<   	 ee   ed<   	 ee	   ed <   	 eeeef      ed!<   	 eed"      ed#<   	 ed$   ed%<   	 eed&<   	 ee
   ed'<   	 ee   ed(<   	 eeeeee	e
d)Zy*)+SubscriptionSchedule.Phasec                       e Zd ZU  G d de      Z G d de      Zee   ed<   	 ee	e
e
f      ed<   	 eed<   ed   ed	<   	 ee   ed
<   	 eed      ed<   	 eedZy))SubscriptionSchedule.Phase.AddInvoiceItemc                   T    e Zd ZU eed      ed<   	 eed      ed<   	 eed      ed<   y)2SubscriptionSchedule.Phase.AddInvoiceItem.Discountr   couponDiscountResourcediscountr   promotion_codeNr2   r3   r4   r   r   r5   r6   r7   r8   r   r      F     !:;; #?3E#FGG !))I JJr7   r   c                   X    e Zd ZU  G d de      Z G d de      Zeed<   eed<   eedZy)	0SubscriptionSchedule.Phase.AddInvoiceItem.Periodc                   0    e Zd ZU ee   ed<   	 ed   ed<   y)4SubscriptionSchedule.Phase.AddInvoiceItem.Period.End	timestamp)min_item_period_end	phase_endr   r<   Nr2   r3   r4   r   r>   r5   r   r6   r7   r8   Endr      s(    '}, "G r7   r   c                   0    e Zd ZU ee   ed<   	 ed   ed<   y)6SubscriptionSchedule.Phase.AddInvoiceItem.Period.Startr   )max_item_period_startrw   r   r<   Nr   r6   r7   r8   Startr      s(    '}, "K r7   r   endstart)r   r   N)r2   r3   r4   r   r   r   r5   r?   r6   r7   r8   Periodr      s1    
, 

L 
 -05%A"r7   r   	discountsmetadataperiodr   pricequantityr   	tax_rates)r   r   N)r2   r3   r4   r   r   r   r   r5   r   r   r   r   r>   r?   r6   r7   r8   AddInvoiceItemr      s    < B B: H~% tCH~.. N"7++ sm#  Y00 086!Jr7   r   c                   b    e Zd ZU  G d de      Zeed      ed<   	 eed<   	 ee   ed<   	 deiZ	y)'SubscriptionSchedule.Phase.AutomaticTaxc                   6    e Zd ZU eed      ed<   	 ed   ed<   y)1SubscriptionSchedule.Phase.AutomaticTax.Liabilityr   rL   rM   r<   NrO   r6   r7   r8   rP   r     rQ   r7   rP   rR   rS   rT   rU   NrV   r6   r7   r8   rX   r     rY   r7   rX   c                   0    e Zd ZU ee   ed<   	 ee   ed<   y),SubscriptionSchedule.Phase.BillingThresholdsr\   r]   Nr^   r6   r7   r8   r_   r   )  r`   r7   r_   c                   T    e Zd ZU eed      ed<   	 eed      ed<   	 eed      ed<   y)#SubscriptionSchedule.Phase.Discountr   r   r   r   r   r   Nr   r6   r7   r8   r   r   3  sF    _X677 /ABCC %__%EFFr7   r   c                   n    e Zd ZU  G d de      Zeeed         ed<   	 ee	   ed<   	 ee   ed<   	 deiZ
y)*SubscriptionSchedule.Phase.InvoiceSettingsc                   6    e Zd ZU eed      ed<   	 ed   ed<   y)1SubscriptionSchedule.Phase.InvoiceSettings.Issuerr   rL   rM   r<   NrO   r6   r7   r8   re   r   B  rQ   r7   re   r   rf   rg   rh   Nri   r6   r7   r8   rj   r   A  sZ      &d?7+C&DEE %SM) V$$ #+F!3r7   rj   c                       e Zd ZU  G d de      Z G d de      Zee   ed<   	 ee   ed<   	 ee	e
e
f      ed<   	 ed   ed	<   	 ed
   ed<   	 ee   ed<   	 eed      ed<   	 eedZy)SubscriptionSchedule.Phase.Itemc                       e Zd ZU ee   ed<   y)1SubscriptionSchedule.Phase.Item.BillingThresholds	usage_gteN)r2   r3   r4   r   r>   r5   r6   r7   r8   r_   r   [  s    #C=(r7   r_   c                   T    e Zd ZU eed      ed<   	 eed      ed<   	 eed      ed<   y)(SubscriptionSchedule.Phase.Item.Discountr   r   r   r   r   r   Nr   r6   r7   r8   r   r   a  r   r7   r   ry   r   r   r   planr   r   r   r   r   )ry   r   N)r2   r3   r4   r   r_   r   r   r5   r   r   r   r   r>   r?   r6   r7   r8   Itemr   Z  s    L <  !)): ;; H~% tCH~.. "&)) #7++ sm#  Y00 '8%"r7   r   c                   0    e Zd ZU ee   ed<   	 ed   ed<   y)'SubscriptionSchedule.Phase.TransferDatarm   r   rn   Nro   r6   r7   r8   rq   r     rr   r7   rq   add_invoice_itemsrs   rt   ru   rx   ry   rz   r}   currencyr   r~   r   default_tax_ratesr   r   rC   r   itemsr   r   r   )always_invoicecreate_prorationsnoneproration_behaviorrD   r   	trial_end)r   rt   ry   r   r   r   r   N)r2   r3   r4   r   r   rX   r_   r   rj   r   rq   r   r5   r   rp   r   r   r   r>   r   r?   r6   r7   r8   Phaser      s   A	K\ A	KF	:< 	:2	 		| 		4l 	424	< 4	l	< 	  //	 "*%0	  --&w/I'JKK	 %%677	 $:;
 	
	 	 !))I JJ	 $DO44	 c]"	 >!	 	 #?33	 Dz	 4S>**	 y9::	 $9
 	
	 	  --	 C= 	 "0)"3! /)
r7   r   r   applicationbilling_modecanceled_atcompleted_atcreatedcurrent_phaser   customerdefault_settings)cancelr   releaserenewend_behavioridlivemoder   objectphasesreleased_atreleased_subscription)activecanceled	completednot_startedreleasedstatusr   subscriptionr&   
test_clockscheduleparamsr    returnc                 p    t        d| j                  ddj                  t        |            |            S )
        Cancels a subscription schedule and its associated subscription immediately (if the subscription schedule has an active subscription). A subscription schedule can only be canceled if its status is not_started or active.
        r(   post,/v1/subscription_schedules/{schedule}/cancelr   r   r   _static_requestformatr
   clsr   r   s      r8   _cls_cancelz SubscriptionSchedule._cls_cancelA  sK     ">EE(2 F     	
 		
r7   c                      yr   Nr6   r   r   s     r8   r   zSubscriptionSchedule.cancelU       	r7   c                      yr   r6   rN   r   s     r8   r   zSubscriptionSchedule.cancel_       	r7   r   c                     t        d| j                  ddj                  t        | j	                  d                  |            S )r   r(   r   r   r   r   r   r   _requestr   r
   getr   s     r8   r   zSubscriptionSchedule.cancelh  sQ     "MM>EE($8 F    	
 		
r7   c                    K   t        d| j                  ddj                  t        |            |       d{         S 7 w)r   r(   r   r   r   r   Nr   _static_request_asyncr   r
   r   s      r8   _cls_cancel_asyncz&SubscriptionSchedule._cls_cancel_asyncz  sY      "++>EE(2 F   ,  	
 		
   7AA
	Ac                    K   ywr   r6   r   s     r8   cancel_asyncz!SubscriptionSchedule.cancel_async        	   c                    K   ywr   r6   r   s     r8   r  z!SubscriptionSchedule.cancel_async        	r  r   c                    K   t        d| j                  ddj                  t        | j	                  d                  |       d{         S 7 w)r   r(   r   r   r   r   r   Nr   _request_asyncr   r
   r   r   s     r8   r  z!SubscriptionSchedule.cancel_async  sa      "%%>EE($8 F   &  	
 		
   AAA
		Ar!   c                 Z    t        d| j                  d| j                         |            S )
        Creates a new subscription schedule object. Each customer can have up to 500 active or scheduled subscriptions.
        r(   r   r   )r   r   	class_urlr   r   s     r8   createzSubscriptionSchedule.create  s6     "   
 	
r7   c                 v   K   t        d| j                  d| j                         |       d{         S 7 w)r  r(   r   r   N)r   r   r  r  s     r8   create_asyncz!SubscriptionSchedule.create_async  sD      "++ ,  
 	
s   ,97
	9r"   c                     | j                  d| j                         |      }t        |t              s!t	        dt        |      j                  z        |S )D
        Retrieves the list of your subscription schedules.
        r   r   %Expected list object from API, got %s)r   r  
isinstancer   	TypeErrorr<   r2   r   r   results      r8   listzSubscriptionSchedule.list  s]     $$MMO % 

 &*-7<((* 
 r7   c                    K   | j                  d| j                         |       d{   }t        |t              s!t	        dt        |      j                  z        |S 7 7w)r  r   r   Nr  )r   r  r  r   r  r<   r2   r  s      r8   
list_asynczSubscriptionSchedule.list_async  sk      00MMO 1 
 

 &*-7<((* 
 
s   &A"A 8A"r#   c                 z    | j                         dt        |      }t        d| j                  d||            S )<
        Updates an existing subscription schedule.
        /r(   r   r   )r  r
   r   r   r   r   r   urls       r8   modifyzSubscriptionSchedule.modify  sD     +b/:"   
 	
r7   c                    K   | j                         dt        |      }t        d| j                  d||       d{         S 7 w)r  r  r(   r   r   N)r  r
   r   r   r   s       r8   modify_asyncz!SubscriptionSchedule.modify_async  sR      +b/:"++ ,  
 	
s   <A	A
	A	r$   c                 p    t        d| j                  ddj                  t        |            |            S )  
        Releases the subscription schedule immediately, which will stop scheduling of its phases, but leave any existing subscription in place. A schedule can only be released if its status is not_started or active. If the subscription schedule is currently associated with a subscription, releasing it will remove its subscription property and set the subscription's ID to the released_subscription property.
        r(   r   -/v1/subscription_schedules/{schedule}/releaser   r   r   r   s      r8   _cls_releasez!SubscriptionSchedule._cls_release  sK     "?FF(2 G     	
 		
r7   c                      yr&  Nr6   r   s     r8   r   zSubscriptionSchedule.release1  r   r7   c                      yr*  r6   r   s     r8   r   zSubscriptionSchedule.release;  r   r7   r(  c                     t        d| j                  ddj                  t        | j	                  d                  |            S )r&  r(   r   r'  r   r   r   r   r   s     r8   r   zSubscriptionSchedule.releaseD  sQ     "MM?FF($8 G    	
 		
r7   c                    K   t        d| j                  ddj                  t        |            |       d{         S 7 w)r&  r(   r   r'  r   r   Nr   r   s      r8   _cls_release_asyncz'SubscriptionSchedule._cls_release_asyncV  sY      "++?FF(2 G   ,  	
 		
r  c                    K   ywr*  r6   r   s     r8   release_asyncz"SubscriptionSchedule.release_asyncj  r  r  c                    K   ywr*  r6   r   s     r8   r0  z"SubscriptionSchedule.release_asynct  r  r  r.  c                    K   t        d| j                  ddj                  t        | j	                  d                  |       d{         S 7 w)r&  r(   r   r'  r   r   r   Nr	  r   s     r8   r0  z"SubscriptionSchedule.release_async}  sa      "%%?FF($8 G   &  	
 		
r  r%   c                 8     | |fi |}|j                          |S )
        Retrieves the details of an existing subscription schedule. You only need to supply the unique subscription schedule identifier that was returned upon subscription schedule creation.
        )refreshr   r   r   instances       r8   retrievezSubscriptionSchedule.retrieve  s$     r$V$r7   c                 T   K    | |fi |}|j                          d{    |S 7 w)r4  N)refresh_asyncr6  s       r8   retrieve_asyncz#SubscriptionSchedule.retrieve_async  s3      r$V$$$&&& 	's   (&()r   r   r   r   N)+r2   r3   r4   __doc__r*   r   r   r5   r   r@   rE   r   r   r   r   r>   r   rW   r   r   classmethodr   r   r   staticmethodr   r	   r   r  r  r  r   r  r  r"  r$  r(  r   r.  r0  r8  r;  r?   r6   r7   r8   r(   r(   /   s]   
 	  '"9:; 4l 4*| m
, m
^g
 g
R	 /-899  # 3- L L)) j)) &%>?? 	G N tCH~&& +,, K # $C=( D  ?>:;; 566 

 ;<
 
 	
 
& !'(J!K	   AB	  -(
AB
	
 )
" 

 ;<
 
 	
 
& !'(J!K	   AB	  -.
AB
	
 /
" 
@A
	
 
 
@A
	
 
 >?	*	+ & >?	*	+ & 

 &'I J
	
 
  

 &'I J
	
 
  

 <=
 
 	
 
& !'(K!L	   BC	  .)
BC
	
 *
" 

 <=
 
 	
 
& !'(K!L	   BC	  ./
BC
	
 0
"  &'K L	   &'K L	  $%+	r7   r(   N)Bstripe._createable_api_resourcer   stripe._expandable_fieldr   stripe._list_objectr   stripe._listable_api_resourcer   stripe._stripe_objectr   stripe._updateable_api_resourcer   stripe._utilr	   r
   typingr   r   r   r   r   r   typing_extensionsr   r   r   stripe._accountr   stripe._applicationr   stripe._couponr   stripe._customerr   stripe._discountr   r   stripe._payment_methodr   stripe._planr   stripe._pricer   stripe._promotion_coder   stripe._subscriptionr   stripe._tax_idr   stripe._tax_rater   2stripe.params._subscription_schedule_cancel_paramsr    2stripe.params._subscription_schedule_create_paramsr!   0stripe.params._subscription_schedule_list_paramsr"   2stripe.params._subscription_schedule_modify_paramsr#   3stripe.params._subscription_schedule_release_paramsr$   4stripe.params._subscription_schedule_retrieve_paramsr%   stripe.test_helpers._test_clockr&   r(   r6   r7   r8   <module>r[     s    B 4 * = . A : A A < <'/%)=4!#41$( :{01./01{r7   