o
    L)j<                     @   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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 d d
lmZmZmZ erxd 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 )    )Decimal)CreateableAPIResource)ExpandableField)
ListObject)ListableAPIResource)StripeObjectUntypedStripeObject)UpdateableAPIResource)class_method_variantsanitize_id)ClassVarListOptionalcastoverload)LiteralUnpackTYPE_CHECKING)Product)Supplier)OrderCancelParams)OrderCreateParams)OrderListParams)OrderModifyParams)OrderRetrieveParamsc                   @   sB  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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%ddHiZ&dIS )J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#   z/var/www/html/finance-dev.cargoinsureonline.com/_shared/backend-venv/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   
 r4   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rQ   rR   )r   _static_requestformatr   clsrQ   rR   r#   r#   r$   _cls_cancel   s   
zOrder._cls_cancelc                 K      dS rT   Nr#   rQ   rR   r#   r#   r$   cancel   s   	zOrder.cancelc                 K   r^   r_   r#   selfrR   r#   r#   r$   ra      s   r]   c              	   K   s*   t d| jddjt| jdd|dS )rT   r   rU   rV   rE   rW   rX   )r   _requestrZ   r   _datagetrb   r#   r#   r$   ra      s   
c                    s*   t d| jddjt|d|dI dH S )rT   r   rU   rV   rW   rX   N)r   _static_request_asyncrZ   r   r[   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                    ri   r_   r#   rb   r#   r#   r$   rj     s   
rh   c              	      s2   t d| jddjt| jdd|dI dH S )rT   r   rU   rV   rE   rW   rX   N)r   _request_asyncrZ   r   re   rf   rb   r#   r#   r$   rj      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   rU   rX   )r   rY   	class_urlr\   rR   r#   r#   r$   create5  s   zOrder.createc                    s"   t d| jd|  |dI dH S )rl   r   rU   rX   N)r   rg   rm   rn   r#   r#   r$   create_asyncD  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.
        rf   rX   %Expected list object from API, got %s)rY   rm   
isinstancer   	TypeErrortyper   r\   rR   resultr#   r#   r$   listU  s   
z
Order.listc                    s<   | j d|  |dI dH }t|tstdt|j |S )rq   rf   rX   Nrr   )rg   rm   rs   r   rt   ru   r   rv   r#   r#   r$   
list_asynch  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   rU   rX   )rm   r   r   rY   r\   rE   rR   urlr#   r#   r$   modify}  s   zOrder.modifyc                    s2   d|   t|f }td| jd||dI dH S )rz   r{   r   rU   rX   N)rm   r   r   rg   r|   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\   rE   rR   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)r8   rC   decimal_stringN)'r   r   r    __doc__r   r   r   r"   r   r%   r4   r2   r   r!   r   boolr   r   r   classmethodr   r]   r   staticmethodra   r
   rh   rj   ro   rp   r   rx   ry   r~   r   r   r   r3   _field_encodingsr#   r#   r#   r$   r      s$  
 -		
r   N)+decimalr   stripe._createable_api_resourcer   stripe._expandable_fieldr   stripe._list_objectr   stripe._listable_api_resourcer   stripe._stripe_objectr   r   stripe._updateable_api_resourcer	   stripe._utilr
   r   typingr   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.   
