o
    iA<                     @   s  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' G dd ded ed ed Z(dS )    )CreateableAPIResource)ExpandableField)
ListObject)ListableAPIResource)StripeObject)UpdateableAPIResource)class_method_variantsanitize_id)ClassVarDictListOptionalcastoverload)LiteralUnpackTYPE_CHECKING)Product)Supplier)OrderCancelParams)OrderCreateParams)OrderListParams)OrderModifyParams)OrderRetrieveParamsc                   @   s>  e Zd ZU dZdZeed  ed< G dd deZ	G dd deZ
eed< 	 eed	< 	 eed
< 	 ee	 ed< ee ed< 	 eed  ed< 	 ee ed< 	 ee ed< 	 eed< 	 eed< 	 ee ed< 	 ee ed< 	 ee
 ed< 	 eed< 	 eed< 	 eed< 	 eeef ed< 	 eed< 	 ed ed< 	 ed ed< 	 ee ed< 	 ed ed < 	 ed!ed"ed# d$d fd%d&Zeed!ed"ed# d$d fd'd(Zed"ed# d$d fd)d(Zed*d"ed# d$d fd+d(Zed!ed"ed# d$d fd,d-Zeed!ed"ed# d$d fd.d/Zed"ed# d$d fd0d/Zed1d"ed# d$d fd2d/Zed"ed3 d$d fd4d5Zed"ed3 d$d fd6d7Zed"ed8 d$ed  fd9d:Zed"ed8 d$ed  fd;d<Zeded"ed= d$d fd>d?Z eded"ed= d$d fd@dAZ!eded"edB d$d fdCdDZ"eded"edB d$d fdEdFZ#e	e
dGZ$dHS )IOrderz
    Orders represent your intent to purchase a particular Climate product. When you create an order, the
    payment is deducted from your merchant balance.
    zclimate.orderOBJECT_NAMEc                   @   s   e Zd ZU eed< dS )zOrder.Beneficiarypublic_nameN)__name__
__module____qualname__str__annotations__ r"   r"   u/var/www/snowflake_co_dev_github/snow_flake_back_end_deploy/env/lib/python3.10/site-packages/stripe/climate/_order.pyBeneficiary%   s   
 r$   c                   @   s`   e Zd ZU G dd deZeed< 	 ee ed< 	 eed< 	 ee ed< 	 ded< 	 deiZ	d	S )
zOrder.DeliveryDetailc                   @   sN   e Zd ZU ee ed< 	 eed< 	 ee ed< 	 ee ed< 	 ee ed< dS )zOrder.DeliveryDetail.Locationcitycountrylatitude	longituderegionN)r   r   r   r   r    r!   floatr"   r"   r"   r#   Location,   s   
 r+   delivered_atlocationmetric_tonsregistry_urlr   supplierN)
r   r   r   r   r+   intr!   r   r    _inner_class_typesr"   r"   r"   r#   DeliveryDetail+   s   
 r3   amount_feesamount_subtotalamount_totalbeneficiarycanceled_at)expiredproduct_unavailable	requestedcancellation_reasoncertificateconfirmed_atcreatedcurrency
delayed_atr,   delivery_detailsexpected_delivery_yearidlivemodemetadatar.   objectr   productproduct_substituted_at)awaiting_fundscanceled	confirmed	deliveredopenstatusorderparamsr   returnc                 K   s"   t d| jddjt|d|dS )  
        Cancels a Climate order. You can cancel an order within 24 hours of creation. Stripe refunds the
        reservation amount_subtotal, but not the amount_fees for user-triggered cancellations. Frontier
        might cancel reservations if suppliers fail to deliver. If Frontier cancels the reservation, Stripe
        provides 90 days advance notice and refunds the amount_total.
        r   post!/v1/climate/orders/{order}/cancelrP   rQ   )r   _static_requestformatr	   clsrP   rQ   r"   r"   r#   _cls_cancel   s   
zOrder._cls_cancelc                 K      dS rS   Nr"   rP   rQ   r"   r"   r#   cancel   s   	zOrder.cancelc                 K   r]   r^   r"   selfrQ   r"   r"   r#   r`      s   r\   c              	   K   s(   t d| jddjt| dd|dS )rS   r   rT   rU   rD   rV   rW   )r   _requestrY   r	   getra   r"   r"   r#   r`      s   
c                    s*   t d| jddjt|d|dI dH S )rS   r   rT   rU   rV   rW   N)r   _static_request_asyncrY   r	   rZ   r"   r"   r#   _cls_cancel_async   s   

zOrder._cls_cancel_asyncc                       dS r^   r"   r_   r"   r"   r#   cancel_async  s   zOrder.cancel_asyncc                    rg   r^   r"   ra   r"   r"   r#   rh     s   
rf   c              	      s0   t d| jddjt| dd|dI dH S )rS   r   rT   rU   rD   rV   rW   N)r   _request_asyncrY   r	   rd   ra   r"   r"   r#   rh     s   

r   c                 K   s   t d| jd|  |dS )
        Creates a Climate order object for a given Climate product. The order will be processed immediately
        after creation and payment will be deducted your Stripe balance.
        r   rT   rW   )r   rX   	class_urlr[   rQ   r"   r"   r#   create4  s   zOrder.createc                    s"   t d| jd|  |dI dH S )rj   r   rT   rW   N)r   re   rk   rl   r"   r"   r#   create_asyncC  s   
zOrder.create_asyncr   c                 K   s4   | j d|  |d}t|tstdt|j |S )
        Lists all Climate order objects. The orders are returned sorted by creation date, with the
        most recently created orders appearing first.
        rd   rW   %Expected list object from API, got %s)rX   rk   
isinstancer   	TypeErrortyper   r[   rQ   resultr"   r"   r#   listT  s   
z
Order.listc                    s<   | j d|  |dI dH }t|tstdt|j |S )ro   rd   rW   Nrp   )re   rk   rq   r   rr   rs   r   rt   r"   r"   r#   
list_asyncg  s   
zOrder.list_asyncr   c                 K   s*   d|   t|f }td| jd||dS )]
        Updates the specified order by setting the values of the parameters passed.
        %s/%sr   rT   rW   )rk   r	   r   rX   r[   rD   rQ   urlr"   r"   r#   modify|  s   zOrder.modifyc                    s2   d|   t|f }td| jd||dI dH S )rx   ry   r   rT   rW   N)rk   r	   r   re   rz   r"   r"   r#   modify_async  s   
zOrder.modify_asyncr   c                 K   s   | |fi |}|   |S )T
        Retrieves the details of a Climate order object with the given ID.
        )refreshr[   rD   rQ   instancer"   r"   r#   retrieve  s   zOrder.retrievec                    s$   | |fi |}|  I dH  |S )r~   N)refresh_asyncr   r"   r"   r#   retrieve_async  s   zOrder.retrieve_async)r7   rB   N)%r   r   r   __doc__r   r
   r   r!   r   r$   r3   r1   r   r    r   boolr   r   classmethodr   r\   r   staticmethodr`   r   rf   rh   rm   rn   r   rv   rw   r|   r}   r   r   r2   r"   r"   r"   r#   r      s"  
 -		

r   N))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.climate._productr   stripe.climate._supplierr   *stripe.params.climate._order_cancel_paramsr   *stripe.params.climate._order_create_paramsr   (stripe.params.climate._order_list_paramsr   *stripe.params.climate._order_modify_paramsr   ,stripe.params.climate._order_retrieve_paramsr   r   r"   r"   r"   r#   <module>   s,    
