
    kh'                         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 d dlmZmZ d d	lmZ er$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e      Zy)    )
CreditNote)CreditNoteLineItemService)CreditNotePreviewLinesService)
ListObject)RequestOptions)StripeService)sanitize_id)Optionalcast)TYPE_CHECKING)CreditNoteCreateParams)CreditNoteListParams)CreditNotePreviewParams)CreditNoteRetrieveParams)CreditNoteUpdateParams)CreditNoteVoidCreditNoteParamsc            	           e Zd Z fdZ	 	 dded   dee   dee   fdZ	 	 dded   dee   dee   fdZ		 ddddee   defd	Z
	 ddddee   defd
Z	 	 ddeded   dee   defdZ	 	 ddeded   dee   defdZ	 	 ddeded   dee   defdZ	 	 ddeded   dee   defdZ	 ddddee   defdZ	 ddddee   defdZ	 	 ddeded   dee   defdZ	 	 ddeded   dee   defdZ xZS )CreditNoteServicec                     t         |   |       t        | j                        | _        t        | j                        | _        y N)super__init__r   
_requestor
line_itemsr   preview_lines)self	requestor	__class__s     [/var/www/api/v1/venv_fitandmore/lib/python3.12/site-packages/stripe/_credit_note_service.pyr   zCreditNoteService.__init__   s1    #3DOOD:4??K    paramsr   optionsreturnc           
      X    t        t        t           | j                  ddd||            S )1
        Returns a list of credit notes.
        get/v1/credit_notesapibase_addressr!   r"   )r   r   r   _requestr   r!   r"   s      r   listzCreditNoteService.list$   s9     z"MM""  	
 		
r    c           
      t   K   t        t        t           | j                  ddd||       d{         S 7 w)r%   r&   r'   r(   r)   N)r   r   r   _request_asyncr,   s      r   
list_asynczCreditNoteService.list_async7   sI      z"%%"" &  	
 		
s   +86
	8r   c           
      J    t        t        | j                  ddd||            S )  
        Issue a credit note to adjust the amount of a finalized invoice. A credit note will first reduce the invoice's amount_remaining (and amount_due), but not below zero.
        This amount is indicated by the credit note's pre_payment_amount. The excess amount is indicated by post_payment_amount, and it can result in any combination of the following:


        Refunds: create a new refund (using refund_amount) or link existing refunds (using refunds).
        Customer balance credit: credit the customer's balance (using credit_amount) which will be automatically applied to their next invoice when it's finalized.
        Outside of Stripe credit: record the amount that is or will be credited outside of Stripe (using out_of_band_amount).


        The sum of refunds, customer balance credits, and outside of Stripe credits must equal the post_payment_amount.

        You may issue multiple credit notes for an invoice. Each credit note may increment the invoice's pre_payment_credit_notes_amount,
        post_payment_credit_notes_amount, or both, depending on the invoice's amount_remaining at the time of credit note creation.
        postr'   r(   r)   r   r   r+   r,   s      r   createzCreditNoteService.createJ   s4    ( MM""  	
 		
r    c           
      f   K   t        t        | j                  ddd||       d{         S 7 w)r2   r3   r'   r(   r)   Nr   r   r/   r,   s      r   create_asynczCreditNoteService.create_asynci   sD     ( %%"" &  	
 		
   $1/
	1idr   c                 |    t        t        | j                  ddj                  t	        |            d||            S )M
        Retrieves the credit note object with the given identifier.
        r&   /v1/credit_notes/{id}r:   r(   r)   r   r   r+   formatr	   r   r:   r!   r"   s       r   retrievezCreditNoteService.retrieve   sF     MM'..+b/.B"  	
 		
r    c                    K   t        t        | j                  ddj                  t	        |            d||       d{         S 7 w)r<   r&   r=   r>   r(   r)   Nr   r   r/   r@   r	   rA   s       r   retrieve_asyncz CreditNoteService.retrieve_async   sV      %%'..+b/.B" &  	
 		
   =A
A
 	A
r   c                 |    t        t        | j                  ddj                  t	        |            d||            S )2
        Updates an existing credit note.
        r3   r=   r>   r(   r)   r?   rA   s       r   updatezCreditNoteService.update   sF     MM'..+b/.B"  	
 		
r    c                    K   t        t        | j                  ddj                  t	        |            d||       d{         S 7 w)rH   r3   r=   r>   r(   r)   NrD   rA   s       r   update_asynczCreditNoteService.update_async   sV      %%'..+b/.B" &  	
 		
rF   r   c           
      J    t        t        | j                  ddd||            S )E
        Get a preview of a credit note without creating it.
        r&   /v1/credit_notes/previewr(   r)   r4   r,   s      r   previewzCreditNoteService.preview   s4     MM*"  	
 		
r    c           
      f   K   t        t        | j                  ddd||       d{         S 7 w)rM   r&   rN   r(   r)   Nr7   r,   s      r   preview_asynczCreditNoteService.preview_async   sD      %%*" &  	
 		
r9   r   c                 |    t        t        | j                  ddj                  t	        |            d||            S )
        Marks a credit note as void. Learn more about [voiding credit notes](https://docs.stripe.com/docs/billing/invoices/credit-notes#voiding).
        r3   /v1/credit_notes/{id}/voidr>   r(   r)   r?   rA   s       r   void_credit_notez"CreditNoteService.void_credit_note   sF     MM,33{23G"  	
 		
r    c                    K   t        t        | j                  ddj                  t	        |            d||       d{         S 7 w)rS   r3   rT   r>   r(   r)   NrD   rA   s       r   void_credit_note_asyncz(CreditNoteService.void_credit_note_async  sV      %%,33{23G" &  	
 		
rF   )NNr   )__name__
__module____qualname__r   r
   r   r   r   r-   r0   r5   r8   strrB   rE   rI   rK   rO   rQ   rU   rW   __classcell__)r   s   @r   r   r      s   L 48,0
/0
 .)
 
J		
* 48,0
/0
 .)
 
J		
, -1
(
 .)
 
	
D -1
(
 .)
 
	
D 8<,0	

 34
 .)	

 

. 8<,0	

 34
 .)	

 

. 6:,0	

 12
 .)	

 

. 6:,0	

 12
 .)	

 

. -1
)
 .)
 
	
, -1
)
 .)
 
	
, >B,0	

 9:
 .)	

 

. >B,0	

 9:
 .)	

 

r    r   N) stripe._credit_noter   %stripe._credit_note_line_item_servicer   )stripe._credit_note_preview_lines_servicer   stripe._list_objectr   stripe._request_optionsr   stripe._stripe_servicer   stripe._utilr	   typingr
   r   typing_extensionsr   (stripe.params._credit_note_create_paramsr   &stripe.params._credit_note_list_paramsr   )stripe.params._credit_note_preview_paramsr   *stripe.params._credit_note_retrieve_paramsr   (stripe.params._credit_note_update_paramsr   2stripe.params._credit_note_void_credit_note_paramsr   r    r    r   <module>rm      sR    + K + 2 0 $ ! +OK P
F
 F
r    