a
    !f>                     @   s   d dl mZ d dlmZmZ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mZmZmZmZmZ d d	lmZmZmZmZmZ d d
lmZ erd dl m!Z! d dl"m#Z# G dd ded ed ed Z$dS )    )util)CreateableAPIResourceListableAPIResourceUpdateableAPIResource)ExpandableField)
ListObject)RequestOptions)StripeObject)class_method_variant)ClassVarDictListOptionalUnioncastoverload)LiteralNotRequired	TypedDictUnpackTYPE_CHECKING)
quote_plus)Product)Supplierc                
   @   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
G dd	 d	eZG d
d deZG dd deZG dd deZG dd deZ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dJeee ee ee ed0 d d1d2d3ZeedKeee ee ee ed0 d d1d4d5Z edLee ed0 d d6d7d5Z e!d8dMee ed0 d d6d9d5Z edNee ee ee ee ed: d d;d<d=Z"edOee ee ee ed> e#d  d?d@dAZ$eeedB d dCdDdEZ%eeedF d dCdGdHZ&e	e
dIZ'd/S )P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#   c/var/www/html/python-backend/venv/lib/python3.9/site-packages/stripe/api_resources/climate/order.pyBeneficiary)   s   
r%   c                   @   sV   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                   @   sF   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.LocationZcityZcountryZlatitudeZ	longituderegionN)r   r   r    r   r!   r"   floatr#   r#   r#   r$   Location0   s   
r(   delivered_atlocationmetric_tonsZregistry_urlr   ZsupplierN)
r   r   r    r	   r(   intr"   r   r!   _inner_class_typesr#   r#   r#   r$   DeliveryDetail/   s   
r.   c                   @   s   e Zd ZU ed ed< dS )Order.CancelParams	List[str]expandNr   r   r    r   r"   r#   r#   r#   r$   CancelParams\   s   
r3   c                   @   s^   e Zd ZU ed ed< ed ed< ed ed< ed ed< ed	 ed
< ed ed< eed< dS )Order.CreateParamsr,   amountOrder.CreateParamsBeneficiarybeneficiaryr!   currencyr0   r1   Dict[str, str]metadatar+   productN)r   r   r    r   r"   r!   r#   r#   r#   r$   CreateParamsb   s   
r<   c                   @   s   e Zd ZU eed< dS )r6   r   Nr   r#   r#   r#   r$   CreateParamsBeneficiary   s   
r=   c                   @   s>   e Zd ZU ed ed< ed ed< ed ed< ed ed< dS )	Order.ListParamsr!   Zending_beforer0   r1   r,   limitZstarting_afterNr2   r#   r#   r#   r$   
ListParams   s
   
r@   c                   @   s2   e Zd ZU ed ed< ed ed< ed ed< dS )Order.ModifyParamsz)Literal['']|Order.ModifyParamsBeneficiaryr7   r0   r1   r9   r:   Nr2   r#   r#   r#   r$   ModifyParams   s   
rB   c                   @   s"   e Zd ZU eed ef ed< dS )zOrder.ModifyParamsBeneficiary r   N)r   r   r    r   r   r!   r"   r#   r#   r#   r$   ModifyParamsBeneficiary   s   
rD   c                   @   s   e Zd ZU ed ed< dS )Order.RetrieveParamsr0   r1   Nr2   r#   r#   r#   r$   RetrieveParams   s   
rF   Zamount_feesZamount_subtotalZamount_totalr7   Zcanceled_at)ZexpiredZproduct_unavailable	requestedZcancellation_reasonZcertificateZconfirmed_atcreatedr8   Z
delayed_atr)   delivery_detailsZexpected_delivery_yearidZlivemoder:   r+   objectr   r;   Zproduct_substituted_at)Zawaiting_fundscanceledZ	confirmedZ	deliveredopenstatusNr/   )orderapi_keystripe_versionstripe_accountparamsreturnc              
   K   s*   t d| jddjt|d||||dS )  
        Cancels a Climate order. You can cancel an order within 30 days 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rO   rP   rQ   rR   rS   )r   _static_requestformatr   sanitize_id)clsrO   rP   rQ   rR   rS   r#   r#   r$   _cls_cancel  s    zOrder._cls_cancelc                 K   s   dS rU   Nr#   )rO   rP   rQ   rR   rS   r#   r#   r$   cancel+  s    zOrder.cancel)idempotency_keyrS   rT   c                 K   s   dS r_   r#   selfra   rS   r#   r#   r$   r`   >  s    r^   c              
   K   s,   t d| jddjt| dd||dS )rU   r   rV   rW   rJ   rX   )ra   rS   )r   _requestr[   r   r\   getrb   r#   r#   r$   r`   N  s    r4   )rP   ra   rQ   rR   rS   rT   c                 K   s    t d| d|  |||||S )z
        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   rV   )r   rZ   	class_url)r]   rP   ra   rQ   rR   rS   r#   r#   r$   createh  s    zOrder.creater>   )rP   rQ   rR   rS   rT   c                 K   s:   | j d|  ||||d}t|ts6tdt|j |S )z
        Lists all Climate order objects. The orders are returned sorted by creation date, with the
        most recently created orders appearing first.
        re   rY   z%Expected list object from API, got %s)rZ   rf   
isinstancer   	TypeErrortyper   )r]   rP   rQ   rR   rS   resultr#   r#   r$   list  s    
z
Order.listrA   )rJ   rS   rT   c                 K   s*   d|   t|f }td| jd||dS )z]
        Updates the specified order by setting the values of the parameters passed.
        z%s/%sr   rV   )rS   )rf   r   r   rZ   )r]   rJ   rS   urlr#   r#   r$   modify  s
    zOrder.modifyrE   c                 K   s   | |fi |}|   |S )zT
        Retrieves the details of a Climate order object with the given ID.
        )refresh)r]   rJ   rS   instancer#   r#   r$   retrieve  s    zOrder.retrieve)r7   rI   )NNN)NNN)N)N)NNNN)NNN)(r   r   r    __doc__r   r   r   r"   r	   r%   r.   r   r3   r<   r   r=   r@   rB   rD   rF   r,   r   r!   r   boolr   r   classmethodr   r^   r   staticmethodr`   r
   rg   r   rl   rn   rq   r-   r#   r#   r#   r$   r      s   
-               r   N)%Zstriper   Zstripe.api_resources.abstractr   r   r   Z%stripe.api_resources.expandable_fieldr   Z stripe.api_resources.list_objectr   Zstripe.request_optionsr   Zstripe.stripe_objectr	   Zstripe.utilr
   typingr   r   r   r   r   r   r   Ztyping_extensionsr   r   r   r   r   urllib.parser   Z$stripe.api_resources.climate.productr   Z%stripe.api_resources.climate.supplierr   r   r#   r#   r#   r$   <module>   s"   $
