o
    rN)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mZ erBd dlmZ d d	lmZ d d
lmZ G dd ded ZdS )    )APIResource)Customer)ExpandableField)UntypedStripeObject)sanitize_id)ClassVarOptional)LiteralTYPE_CHECKING)
CreditNote)Invoice)Sessionc                   @   s  e Zd ZU dZdZeed  ed< eed< 	 e	e
d  ed< 	 eed< 	 e	e
d  ed	< 	 eed
< 	 e
d ed< 	 e	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d< 	 ed ed< 	 ed ed< 	 dd ZedddZdS )CustomerBalanceTransactiona5  
    Each customer has a [Balance](https://docs.stripe.com/api/customers/object#customer_object-balance) value,
    which denotes a debit or credit that's automatically applied to their next invoice upon finalization.
    You may modify the value directly by using the [update customer API](https://docs.stripe.com/api/customers/update),
    or by creating a Customer Balance Transaction, which increments or decrements the customer's `balance` by the specified `amount`.

    Related guide: [Customer balance](https://docs.stripe.com/billing/customer/balance)
    customer_balance_transactionOBJECT_NAMEamountr   checkout_sessioncreatedr   credit_notecurrencyr   customercustomer_accountdescriptionending_balanceidr   invoicelivemodemetadataobject)
adjustmentapplied_to_invoice%checkout_session_subscription_payment.checkout_session_subscription_payment_canceledr   initialinvoice_overpaidinvoice_too_largeinvoice_too_small	migrationunapplied_from_invoiceunspent_receiver_credittypec                 C   sB   | j }| j}t|tr|j }t }t|}t|}d|||f S )Nz%s/%s/balance_transactions/%s)r   r   
isinstancer   	class_urlr   )selftokenr   base	cust_extnextn r2   /var/www/html/finance.cargoinsureonline.com/_shared/backend-venv/lib/python3.10/site-packages/stripe/_customer_balance_transaction.pyinstance_urlh   s   
z'CustomerBalanceTransaction.instance_urlreturnc                 K   s   t d)NzCan't retrieve a Customer Balance Transaction without a Customer ID. Use Customer.retrieve_customer_balance_transaction('cus_123', 'cbtxn_123'))NotImplementedError)clsr   paramsr2   r2   r3   retriever   s   z#CustomerBalanceTransaction.retrieveN)r5   r   )__name__
__module____qualname____doc__r   r   r	   __annotations__intr   r   strboolr   r4   classmethodr9   r2   r2   r2   r3   r      sN   
 

r   N)stripe._api_resourcer   stripe._customerr   stripe._expandable_fieldr   stripe._stripe_objectr   stripe._utilr   typingr   r   typing_extensionsr	   r
   stripe._credit_noter   stripe._invoicer   stripe.checkout._sessionr   r   r2   r2   r2   r3   <module>   s   