
    h                         d dl mZmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
  eddg      Zej                  d	       ee      fd
edefd       Zej                  d       ee      fdededefd       Zy)    )	APIRouterDepends)Session)get_db)SeatRefresh)	SeatClassz/seatsseats)prefixtagsz/refreshseat_refreshdbc                   K   	 t        |      }|j                  | j                  | j                  | j                  | j
                  | j                        }|S # t        $ r}ddt        |       dcY d}~S d}~ww xY ww)u  
    Refrescar asientos contables para un período específico.
    
    Args:
        seat_refresh: Datos necesarios para el refresh (token, rut, password, mes, año)
        db: Sesión de base de datos
    
    Returns:
        Resultado del procesamiento de asientos contables
    )external_tokenrutpasswordmonthyearFzError procesando asientos: )successerrorN)	r   refreshr   r   r   r   r   	Exceptionstr)r   r   
seat_classresultes        E/var/www/intrajisbackend.com/public_html/app/backend/routers/seats.pyrefresh_seatsr   	   s      
r]
##'66  !**$$"" $ 
  
23q6(;
 	

s5   B AA B 	A="A82A=3B 8A==B z/status/{year}/{month}r   r   c                   K   ddl m} |d}|  d| }|j                  |      j                  |j                  |k(        j                         }|j                  |      j                  |j                  |k(        j                  |j                        j                         }|r#t        |D cg c]  }|j                   c}      nd}	|j                  |      j                  |j                  |k(        j                         }
i }|
D ]D  }|j                  }||vrddd||<   ||   dxx   dz  cc<   ||   dxx   |j                  z  cc<   F |||	||dkD  rd	dS d
dS c c}w w)u  
    Obtener el estado de los asientos para un período específico.
    
    Args:
        year: Año del período
        month: Mes del período
        db: Sesión de base de datos
    
    Returns:
        Estadísticas de asientos para el período
    r   )	EerrModel02d-)counttotal_amountr"      r#   activeempty)periodtotal_recordsr#   branch_summarystatus)app.backend.db.modelsr   queryfilterr'   r"   with_entitiesamountallsumbranch_office_id)r   r   r   r   	month_strr'   r(   r#   record	total_sumbranch_statsr)   	branch_ids                r   get_seat_statusr8   ,   s    $ 0 +IvQyk"F HHY'..y/?/?6/IJPPRM88I&--i.>.>&.HIWW	ce  DP>vV]]>?UVI 88I&--i.>.>&.HIMMOLN C++	N* !)N9% 	y!'*a/*y!.1V]]B1C &!(+a/( 
 6= ! ?s   B,E&.E!B%E&N)fastapir   r   sqlalchemy.ormr   app.backend.db.databaser   app.backend.schemasr   app.backend.classes.seat_classr   routerpostr   getintr8        r   <module>rD      s    & " * + 4	('	3Z &/ 
 
 
  
D $% &/4
44 	4 &4rC   