
    Xh                     \    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Z G d d      Zy)    )datetime)Session)TaxModel)HTTPExceptionNc                   :    e Zd ZdefdZd	dZd Zd Zd Zd
dZ	y)TaxClassdbc                     || _         y N)r	   )selfr	   s     I/var/www/intrajisbackend.com/public_html/app/backend/classes/tax_class.py__init__zTaxClass.__init__	   s	        Nc                 ^   	 d }|dk7  rc|v| j                   j                  t        j                  t        j                        j                  t        j                  |k(        j                  t        j                        }nU| j                   j                  t        j                  t        j                        j                  t        j                        }|r|j                         }||z   dz
  |z  }|dk  s||kD  rdddS |j                  |dz
  |z        j                  |      j                         }|sdddS |D cg c]  }|j                  |j                  d }	}|||||	dS || j                   j                  t        j                  t        j                        j                  t        j                  |k(        j                  t        j                        j                         }nc| j                   j                  t        j                  t        j                        j                  t        j                        j                         }|D cg c]  }|j                  |j                  d }	}|	S y c c}w c c}w # t        $ r}
t        |
      }d|dcY d }
~
S d }
~
ww xY w)	Nr      errorzInvalid page numberstatusmessagezNo data found)idperiod)total_itemstotal_pagescurrent_pageitems_per_pagedata)r	   queryr   r   r   filterorder_bycountoffsetlimitallrut	Exceptionstr)r   r   pager   
data_queryr   r   r   taxserialized_dataeerror_messages               r   get_allzTaxClass.get_all   sH   =	AJ qy%!%x{{HOO!Lx&89 -  "&x{{HOO!L -  ","2"2"4K#.#?!#C"VKax4+#5*1>STT%,,dQh.-HIOOP^_cceD*1oNN
 "&''  "ff"%**( ''O '' (3'2(,*8 /  %!%x{{HOO!Lx&89 .ssu  "&x{{HOO!L .ssu  (#)  &&!jj$ #) #)
 '&S ''0#)  	AFM%-@@	AsO   DJ	 :J	 ?J	  I?#	J	 -C-J	  J:J	 ?
J	 		J,J'!J,'J,c                    	 | j                   j                  t        j                  t        j                  t        j
                        j                  t        j                        j                  t        j                  |k(        j                         }|r?|j                  |j                  |j
                  d}d|i}t        j                  |      }|S y# t        $ r}t        |      }d| cY d }~S d }~ww xY w)N)r   r   supporttax_dataz3No se encontraron datos para el campo especificado.Error: )r	   r   r   r   r   r/   r   r   firstjsondumpsr%   r&   )r   r   r(   r0   resultserialized_resultr+   r,   s           r   getzTaxClass.getL   s    	-x{{HOOXEUEUV -x{{b01 
  %--(//)11 
 %)JJv$6!(( M 	-FM]O,,	-s   CC 	C9C4.C94C9c                 >   t               }|j                  |_        ||_        | j                  j	                  |       	 | j                  j                          dddS # t        $ r5}| j                  j                          ddt        |       dcY d }~S d }~ww xY w)NsuccesszTax saved successfullyr   r   r1   )	r   r   r/   r	   addcommitr%   rollbackr&   )r   	form_datar/   r)   r+   s        r   storezTaxClass.storel   s    j %%
 	C	FGGNN'4LMM 	FGG%GCF82DEE	Fs   A 	B'*BBBc                 ^   	 | j                   j                  t              j                  t        j                  |k(        j                          | j                   j                          dddS # t        $ r5}| j                   j                          ddt        |       dcY d }~S d }~ww xY w)Nr9   zTax deleted successfullyr   r   r1   )
r	   r   r   r   r   deleter;   r%   r<   r&   )r   r   r+   s      r   r@   zTaxClass.delete   s    		FGGMM(#**8;;"+<=DDFGGNN'4NOO 	FGG%GCF82DEE	Fs   A+A. .	B,7*B'!B,'B,c                 `   | j                   j                  t              j                  t        j                  |k(        j                         }|st        dd      |j                  |_        |dk7  r||_        | j                   j                          | j                   j                  |       y)zG
        Actualiza los datos del contrato en la base de datos.
        i  zImpuesto no encontrado)status_codedetailN)r	   r   r   r   r   r2   r   r   r/   r;   refresh)r   r   r=   support_filer)   s        r   updatezTaxClass.update   s     ggmmH%,,X[[B->?EEGC8PQQ %%
4&CKr   )Nr   
   r   )
__name__
__module____qualname__r   r   r-   r7   r>   r@   rF    r   r   r   r      s,    7 >A@-@F&
Fr   r   )	r   sqlalchemy.ormr   app.backend.db.modelsr   fastapir   r3   r   rK   r   r   <module>rO      s#     " *  ! Q Qr   