o
    iV                     @   s   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rTd 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 ZdS )    )APIResource)
ListObject)StripeObject)class_method_variantsanitize_id)ClassVarDictListOptionalcastoverload)LiteralUnpackTYPE_CHECKING)&TransactionCreateFromCalculationParams)TransactionCreateReversalParams)TransactionListLineItemsParams)TransactionRetrieveParams)TransactionLineItemc                	   @   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eed< 	 eed< 	 ee ed< 	 e	ed< eed< 	 eed  ed< 	 eed< 	 eeeef  ed< 	 ed ed< 	 eed< 	 eed< 	 ee
 ed< 	 ee ed< 	 ee ed< 	 eed< 	 ed ed< 	 eded d d fd!d"Zeded d d fd#d$Zeded% d d fd&d'Zeded% d d fd(d)Zed*eded+ d ed fd,d-Zeed*eded+ d ed fd.d/Zeded+ d ed fd0d/Zed1ded+ d ed fd2d/Zed*eded+ d ed fd3d4Zeed*eded+ d ed fd5d6Zeded+ d ed fd7d6Zed8ded+ d ed fd9d6Zededed: d d fd;d<Z ededed: d d fd=d>Z!e	e
eed?Z"d@S )ATransactionz
    A Tax Transaction records the tax collected from or refunded to your customer.

    Related guide: [Calculate tax in your custom payment flow](https://stripe.com/docs/tax/custom#tax-transaction)
    ztax.transactionOBJECT_NAMEc                   @   s   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Transaction.CustomerDetailsc                   @   \   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#Transaction.CustomerDetails.Addresscitycountryline1line2postal_codestateN__name__
__module____qualname__r
   str__annotations__ r$   r$   w/var/www/snowflake_co_dev_github/snow_flake_back_end_deploy/env/lib/python3.10/site-packages/stripe/tax/_transaction.pyAddress$      
 r&   c                   @   s$   e Zd ZU ed ed< 	 eed< dS )z!Transaction.CustomerDetails.TaxId)oad_nrtae_trnal_tinam_tinao_tinar_cuitau_abnau_arnaw_tinaz_tinba_tinbb_tinbd_binbf_ifubg_uicbh_vatbj_ifubo_tinbr_cnpjbr_cpfbs_tinby_tinca_bn
ca_gst_hst	ca_pst_bc	ca_pst_mb	ca_pst_skca_qstcd_nifch_uidch_vatcl_tincm_niucn_tinco_nitcr_tincv_nifde_stndo_rcnec_ruceg_tines_cifet_tin
eu_oss_vateu_vatgb_vatge_vatgn_nifhk_brhr_oibhu_tinid_npwpil_vatin_gstis_vatjp_cnjp_rnjp_trnke_pinkg_tinkh_tinkr_brnkz_binla_tinli_uidli_vatma_vatmd_vatme_pibmk_vatmr_nifmx_rfcmy_frpmy_itnmy_sstng_tinno_vatno_voecnp_pannz_gstom_vatpe_rucph_tinro_tinrs_pibru_innru_kppsa_vatsg_gstsg_uensi_tinsn_nineasr_finsv_nitth_vattj_tintr_tintw_vattz_vatua_vatug_tinunknownus_einuy_rucuz_tinuz_vatve_rifvn_tinza_vatzm_tinzw_tintypevalueN)r   r    r!   r   r#   r"   r$   r$   r$   r%   TaxId>   s   
 qr   address)billingshippingaddress_source
ip_addresstax_ids)customer_exemptnonereverse_chargetaxability_override)r   r   N)r   r    r!   r   r&   r   r
   r#   r   r"   r	   _inner_class_typesr$   r$   r$   r%   CustomerDetails#   s    
 zr   c                   @   s   e Zd ZU ee ed< dS )zTransaction.Reversaloriginal_transactionNr   r$   r$   r$   r%   Reversal   s   
 r   c                   @   s.   e Zd ZU G dd deZeed< deiZdS )zTransaction.ShipFromDetailsc                   @   r   )z#Transaction.ShipFromDetails.Addressr   r   r   r   r   r   Nr   r$   r$   r$   r%   r&      r'   r&   r   N)r   r    r!   r   r&   r#   r   r$   r$   r$   r%   ShipFromDetails   s   
 r   c                   @   sr   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Transaction.ShippingCostc                   @   s~   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%Transaction.ShippingCost.TaxBreakdownc                   @   s<   e Zd ZU eed< 	 eed< 	 ed ed< 	 ee ed< dS )z2Transaction.ShippingCost.TaxBreakdown.Jurisdictionr   display_name)r   r   countydistrictr   levelr   N)r   r    r!   r"   r#   r   r
   r$   r$   r$   r%   Jurisdiction   s   
 r   c                   @   s.   e Zd ZU eed< 	 eed< 	 ed ed< dS )z4Transaction.ShippingCost.TaxBreakdown.TaxRateDetailsr   percentage_decimal)amusement_taxcommunications_taxgsthstigstjct	lease_taxpstqstretail_delivery_feerst	sales_taxservice_taxvattax_typeN)r   r    r!   r"   r#   r   r$   r$   r$   r%   TaxRateDetails
  s   
 r   amountjurisdiction)destinationoriginsourcingtax_rate_details)r   not_collectingnot_subject_to_taxnot_supportedportion_product_exemptportion_reduced_ratedportion_standard_ratedproduct_exemptproduct_exempt_holidayproportionally_ratedreduced_ratedr   standard_ratedtaxable_basis_reduced
zero_ratedtaxability_reasontaxable_amount)r   r   N)r   r    r!   r   r   r   intr#   r   r
   r   r$   r$   r$   r%   TaxBreakdown   s&   
 
r   r   
amount_taxshipping_rate)	exclusive	inclusivetax_behaviortax_breakdowntax_codeN)r   r    r!   r   r   r   r#   r
   r"   r   r	   r   r$   r$   r$   r%   ShippingCost   s   
 \r   createdcurrencycustomercustomer_detailsidr   
line_itemslivemodemetadataobject	posted_at	referencereversalship_from_detailsshipping_costtax_date)r   transactionr   paramsr   returnc                 K      t d| jdd|dS )
        Creates a Tax Transaction from a calculation, if that calculation hasn't expired. Calculations expire after 90 days.
        r   post,/v1/tax/transactions/create_from_calculationr   r   _static_requestclsr   r$   r$   r%   create_from_calculation     z#Transaction.create_from_calculationc                       t d| jdd|dI dH S )r   r   r   r   r   Nr   _static_request_asyncr   r$   r$   r%   create_from_calculation_async     
z)Transaction.create_from_calculation_asyncr   c                 K   r   )O
        Partially or fully reverses a previously created Transaction.
        r   r   $/v1/tax/transactions/create_reversalr   r   r   r$   r$   r%   create_reversal  r   zTransaction.create_reversalc                    r   )r   r   r   r  r   Nr   r   r$   r$   r%   create_reversal_async  r   z!Transaction.create_reversal_asyncr   r   c                 K   s&   t td | jddjt|d|dS )a
        Retrieves the line items of a committed standalone transaction as a collection.
        r   get-/v1/tax/transactions/{transaction}/line_itemsr   r   )r   r   r   formatr   r   r   r   r$   r$   r%   _cls_list_line_items  s   	z Transaction._cls_list_line_itemsc                 K      dS r  Nr$   r   r   r$   r$   r%   list_line_items  s   zTransaction.list_line_itemsc                 K   r  r  r$   selfr   r$   r$   r%   r    s   r
  c              	   K   s,   t td | jddjt| dd|dS )r  r   r  r  r   r  r   )r   r   _requestr  r   r  r  r$   r$   r%   r    s   c                    s.   t td | jddjt|d|dI dH S )r  r   r  r  r  r   N)r   r   r   r  r   r	  r$   r$   r%   _cls_list_line_items_async"  s   	
z&Transaction._cls_list_line_items_asyncc                       dS r  r$   r  r$   r$   r%   list_line_items_async6  s   z!Transaction.list_line_items_asyncc                    r  r  r$   r  r$   r$   r%   r  @  s   r  c              	      s4   t td | jddjt| dd|dI dH S )r  r   r  r  r   r  r   N)r   r   _request_asyncr  r   r  r  r$   r$   r%   r  I  s   
r   c                 K   s   | |fi |}|   |S )5
        Retrieves a Tax Transaction object.
        )refreshr   r   r   instancer$   r$   r%   retrieve[  s   zTransaction.retrievec                    s$   | |fi |}|  I dH  |S )r  N)refresh_asyncr  r$   r$   r%   retrieve_asyncf  s   zTransaction.retrieve_async)r   r   r   r   N)#r   r    r!   __doc__r   r   r   r#   r   r   r   r   r   r   r"   r
   r   boolr   classmethodr   r   r   r  r  r
  r   staticmethodr  r   r  r  r  r  r   r$   r$   r$   r%   r      s  
  .w

r   N)stripe._api_resourcer   stripe._list_objectr   stripe._stripe_objectr   stripe._utilr   r   typingr   r   r	   r
   r   r   typing_extensionsr   r   r   =stripe.params.tax._transaction_create_from_calculation_paramsr   5stripe.params.tax._transaction_create_reversal_paramsr   5stripe.params.tax._transaction_list_line_items_paramsr   .stripe.params.tax._transaction_retrieve_paramsr   !stripe.tax._transaction_line_itemr   r   r$   r$   r$   r%   <module>   s    