a
    !fQi                     @   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mZmZmZ d dlmZmZmZmZmZ erd d	lmZ G d
d ded ZdS )    )util)CreateableAPIResource)
ListObject)RequestOptions)StripeObject)class_method_variant)ClassVarListOptionalcastoverload)LiteralNotRequired	TypedDictUnpackTYPE_CHECKING)CalculationLineItemc                
   @   sH  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G dd deZeed< eed< ee ed< e	ed< ee ed< ee ed< eed  ed< eed < ed ed!< ee
 ed"< eed#< eed$< ee ed%< eed&< ed7ee ee ee ee ed( d d)d*d+Zed8eee ee ee ed, ed d-d.d/Zee d9eee ee ee ed, ed d-d0d1Z!ed:ee ed, ed d2d3d1Z!e"d4d;ee ed, ed d2d5d1Z!e	e
ed6Z#d'S )<Calculationz
    A Tax Calculation allows you to calculate the tax to collect from your customer.

    Related guide: [Calculate tax in your custom payment flow](https://stripe.com/docs/tax/custom)
    ztax.calculationOBJECT_NAMEc                   @   sx   e Zd ZU G dd deZG dd deZee ed< eed  ed< ee	 ed< e
e ed	< ed
 ed< eedZdS )zCalculation.CustomerDetailsc                   @   sR   e Zd ZU ee ed< eed< ee ed< ee ed< ee ed< ee ed< dS )z#Calculation.CustomerDetails.Addresscitycountryline1line2postal_codestateN)__name__
__module____qualname__r
   str__annotations__ r    r    e/var/www/html/python-backend/venv/lib/python3.9/site-packages/stripe/api_resources/tax/calculation.pyAddress"   s   
r"   c                   @   s"   e Zd ZU ed ed< eed< dS )z!Calculation.CustomerDetails.TaxId)Cad_nrtae_trnar_cuitau_abnau_arnbg_uicbo_tinbr_cnpjbr_cpfca_bn
ca_gst_hst	ca_pst_bc	ca_pst_mb	ca_pst_skca_qstch_vatcl_tincn_tinco_nitcr_tindo_rcnec_ruceg_tines_cif
eu_oss_vateu_vatgb_vatge_vathk_brhu_tinid_npwpil_vatin_gstis_vatjp_cnjp_rnjp_trnke_pinkr_brnli_uidmx_rfcmy_frpmy_itnmy_sstno_vatnz_gstpe_rucph_tinro_tinrs_pibru_innru_kppsa_vatsg_gstsg_uensi_tinsv_nitth_vattr_tintw_vatua_vatunknownus_einuy_rucve_rifvn_tinza_vattypevalueNr   r   r   r   r   r   r    r    r    r!   TaxId<   s
   
Hri   address)ZbillingZshippingaddress_source
ip_addresstax_ids)customer_exemptnonereverse_chargetaxability_override)rj   rm   N)r   r   r   r   r"   ri   r
   r   r   r   r	   _inner_class_typesr    r    r    r!   CustomerDetails!   s   
Nrs   c                   @   sf   e Zd ZU G dd deZeed< eed< ee ed< e	d ed< ee
e  ed< eed	< deiZd
S )zCalculation.ShippingCostc                   @   st   e Zd ZU G dd deZG dd deZeed< eed< ed ed< e	e ed	< ed
 ed< eed< eedZ
dS )z%Calculation.ShippingCost.TaxBreakdownc                   @   s6   e Zd ZU eed< eed< ed ed< ee ed< dS )z2Calculation.ShippingCost.TaxBreakdown.Jurisdictionr   display_name)r   r   ZcountyZdistrictr   levelr   N)r   r   r   r   r   r   r
   r    r    r    r!   Jurisdiction   s   
rv   c                   @   s*   e Zd ZU eed< eed< ed ed< dS )z4Calculation.ShippingCost.TaxBreakdown.TaxRateDetailsrt   percentage_decimalZamusement_taxZcommunications_taxgstZhstZigstZjctZ	lease_taxZpstZqstrstZ	sales_taxZvattax_typeN)r   r   r   r   r   r   r    r    r    r!   TaxRateDetails   s   
r|   amountjurisdiction)destinationoriginZsourcingtax_rate_detailsrn   Znot_collectingZnot_subject_to_taxZnot_supportedZportion_product_exemptZportion_reduced_ratedZportion_standard_ratedZproduct_exemptZproduct_exempt_holidayZproportionally_ratedZreduced_ratedrp   Zstandard_ratedZtaxable_basis_reducedZ
zero_ratedtaxability_reasontaxable_amount)r~   r   N)r   r   r   r   rv   r|   intr   r   r
   rr   r    r    r    r!   TaxBreakdown   s   
r   r}   Z
amount_taxshipping_rate)Z	exclusive	inclusivetax_behaviortax_breakdowntax_codeN)r   r   r   r   r   r   r   r
   r   r   r	   rr   r    r    r    r!   ShippingCost   s   
Zr   c                   @   sR   e Zd ZU G dd deZeed< eed< eed< ed ed< eed< deiZ	d	S )
zCalculation.TaxBreakdownc                   @   s>   e Zd ZU ee ed< eed< ee ed< eed  ed< dS )z'Calculation.TaxBreakdown.TaxRateDetailsr   rw   r   rx   r{   N)r   r   r   r
   r   r   r   r    r    r    r!   r|     s   
r|   r}   r   r   r   r   r   N)
r   r   r   r   r|   r   r   boolr   rr   r    r    r    r!   r     s   
!r   c                   @   s^   e Zd ZU e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d< dS )Calculation.CreateParamscurrencyr   customer'Calculation.CreateParamsCustomerDetailscustomer_details	List[str]expand Calculation.CreateParamsLineItem
line_items$Calculation.CreateParamsShippingCostshipping_costr   tax_dateN)r   r   r   r   r   r   r	   r    r    r    r!   CreateParams\  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 )	r   r   r}   r   r   !Literal['exclusive', 'inclusive']r   r   Nr   r   r   r   r   r    r    r    r!   CreateParamsShippingCost|  s
   
r   c                   @   sR   e Zd ZU eed< ed ed< ed ed< ed ed< ed ed< ed ed	< d
S )r   r}   r   productr   Zquantity	referencer   r   r   N)r   r   r   r   r   r   r    r    r    r!   CreateParamsLineItem  s   
r   c                   @   sJ   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
< dS )r   .Calculation.CreateParamsCustomerDetailsAddressrj   zLiteral['billing', 'shipping']rk   r   rl   z2List[Calculation.CreateParamsCustomerDetailsTaxId]rm   z4Literal['customer_exempt', 'none', 'reverse_charge']rq   Nr   r    r    r    r!   CreateParamsCustomerDetails  s   
r   c                   @   s"   e Zd ZU ed ed< eed< dS )z,Calculation.CreateParamsCustomerDetailsTaxId)Br#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   ra   rb   rc   rd   re   rf   rg   Nrh   r    r    r    r!    CreateParamsCustomerDetailsTaxId  s
   
Gr   c                   @   sR   e Zd ZU ed ed< eed< ed ed< ed ed< ed ed< ed ed< dS )	r   zLiteral['']|strr   r   r   r   r   r   N)r   r   r   r   r   r   r    r    r    r!   "CreateParamsCustomerDetailsAddress  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 )	Calculation.ListLineItemsParamsr   Zending_beforer   r   r   limitZstarting_afterNr   r    r    r    r!   ListLineItemsParams)  s
   
r   Zamount_totalr   r   r   Z
expires_atidr   r   Zlivemodeobjectr   Ztax_amount_exclusiveZtax_amount_inclusiver   r   Nr   )api_keyidempotency_keystripe_versionstripe_accountparamsreturnc                 K   s    t d| d|  |||||S )zU
        Calculates tax based on input and returns a Tax Calculation object.
        r   post)r   _static_requestZ	class_url)clsr   r   r   r   r   r    r    r!   createq  s    zCalculation.creater   )calculationr   r   r   r   r   c              
   K   s.   t td | jddjt|d||||dS )Z
        Retrieves the line items of a persisted tax calculation as a collection.
        r   get-/v1/tax/calculations/{calculation}/line_itemsr   )r   r   r   r   )r   r   r   formatr   sanitize_id)r   r   r   r   r   r   r    r    r!   _cls_list_line_items  s    z Calculation._cls_list_line_itemsc                 K   s   dS r   Nr    )r   r   r   r   r   r    r    r!   list_line_items  s    zCalculation.list_line_items)r   r   r   c                 K   s   dS r   r    selfr   r   r    r    r!   r     s    r   c              
   K   s0   t td | jddjt| dd||dS )r   r   r   r   r   r   )r   r   )r   r   _requestr   r   r   r   r   r    r    r!   r     s    )r   r   r   )NNNN)NNN)NNN)N)N)$r   r   r   __doc__r   r   r   r   r   rs   r   r   r   r   r   r   r   r   r   r   r   r   r   r
   r   r   r	   classmethodr   r   r   r   staticmethodr   r   rr   r    r    r    r!   r      s   
 uE M            r   N)Zstriper   Zstripe.api_resources.abstractr   Z stripe.api_resources.list_objectr   Zstripe.request_optionsr   Zstripe.stripe_objectr   Zstripe.utilr   typingr   r	   r
   r   r   Ztyping_extensionsr   r   r   r   r   Z.stripe.api_resources.tax.calculation_line_itemr   r   r    r    r    r!   <module>   s   