
    h%                     H    d dl mZmZ d dlZd dlmZ d dlmZ  G d d      Zy)    )
FolioModelCashierModelN)Response)textc                   "    e Zd ZddZddZd Zy)CafClassNc                      || _         || _        y N)dbdb2)selfr   r   s      I/var/www/intrajisbackend.com/public_html/app/backend/classes/caf_class.py__init__zCafClass.__init__   s        c                     	 |dk7  r| j                   j                  t        j                  t        j                  t        j
                  t        j                  t        j                  t        j                  t        j                  t        j                        j                  t        j                        }|j                         }||z   dz
  |z  }|dk  s||kD  ry|j                  |dz
  |z        j                  |      j                         }|sy|D cg c]]  }|j                  |j                  |j                  |j                  |j
                  |j                  |j                  |j                  d_ }}| j                   j                  t              j!                  t        j                  dk(        j                         }	||||||	dS | j                   j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                        j                  t        j                        j                         }D cg c]R  }|j                  |j                  |j                  |j                  |j
                  |j                  |j                  dT }}|S c c}w c c}w # t"        $ r}
t%        |
      }d| cY d }
~
S d }
~
ww xY w)	Nr      zInvalid page numberzNo data found)idfoliobranch_office_id
cashier_idbilled_status_idrequested_status_idused_status_id
added_date)total_itemstotal_pagescurrent_pageitems_per_pagedatatotal_available_receipts)r   r   r   r   r   r   r   zError: )r   queryr   r   r   r   r   r   r   r   r   order_bycountoffsetlimitallfilter	Exceptionstr)r   pager   
data_queryr   r   r   r   serialized_datar    eerror_messages               r   get_allzCafClass.get_all   s   7	-qy!WW]]:==*:J:JJLgLgis  jE  jE  GQ  G\  G\  ^h  ^|  ^|  ~H  ~W  ~W  Yc  Yn  Yn  o !1!12  )..0*^;a?NR!8tk10!(($(n)DEKKN[__a* $(	#)   $hh!&,1,B,B&+&6&6,1,B,B/4/H/H*/*>*>&+&6&6	$ 	#) 	#) ,077==+D+K+KJLjLjnoLo+p+v+v+x( $/#.$(&4+0H  "WW]]:==*:J:JJLgLgisi~i~  AK  A_  A_  ak  az  az  { !1!12335  $(#)   $hh!&,1,B,B&+&6&6,1,B,B/4/H/H*/*>*>$ #) #) '&G	#)2#)  	-FM]O,,	-sR   CK 6K K A"K:AK B#K 5AKK 
K 	K=#K82K=8K=c                 n   	 | j                   j                  t              j                  t        j                  |k(        j                         }|s	dd| ddS |j                  }|s	dd| ddS t        d      }| j                   j                  |||d      }|j                         }|sdd	| dS t        |      |k  rdd
t        |       d| d| dS |D 	cg c]  }	|	j                   }
}	t        |
      }t        |
      }ddlm} |j                         j!                  d      }t        d      }| j                   j                  ||||||||d       | j                   j#                          d}|d| d| dz  }|d| dz  }|d| dz  }|d| dz  }|d| dz  }|d| dz  }t%        |
      D ]  }|d| d| d| dz  } d d!| d"| d#| t        |      ||||||d$d%S c c}	w # t&        $ r5}| j                   j)                          dd&t+        |       dcY d'}~S d'}~ww xY w)(zg
        Crear CAF manual: seleccionar folios disponibles, actualizarlos y generar archivo SQL
        errorzCashier with ID z
 not found)statusmessagezCashier z* does not have a folio_segment_id assigneda%  
                SELECT 0 as used_id, folio 
                FROM folios 
                WHERE folio_segment_id = :folio_segment_id 
                AND cashier_id = 0 
                AND requested_status_id = 0 
                ORDER BY id DESC 
                LIMIT :quantity
            )folio_segment_idquantityz*No hay folios disponibles para el segment z	Solo hay z$ folios disponibles para el segment z, se solicitaron r   )datetimez%Y-%m-%d %H:%M:%Sa  
                UPDATE folios 
                SET cashier_id = :cashier_id, 
                    branch_office_id = :branch_office_id, 
                    requested_status_id = 1,
                    added_date = :added_date,
                    updated_date = :updated_date
                WHERE folio <= :folio_max 
                AND folio >= :folio_min
                AND folio_segment_id = :folio_segment_id 
                AND cashier_id = 0 
                AND requested_status_id = 0
            )r   r   	folio_max	folio_minr4   r   updated_datez-- CAF Manual Generated SQL
z
-- Range: z to 
z-- Quantity: z-- Branch Office ID: z-- Cashier ID: z-- Folio Segment ID: z-- Generated Date: z

zIINSERT INTO folios (used_id, folio, added_date, updated_date) VALUES (0, z, 'z', 'z');
successz+CAF manual creado exitosamente. Folios del z al z para segment )folios_assignedr8   r7   r   r   r4   sql_content)r2   r3   r   zError creating manual CAF: N)r   r!   r   r'   r   firstr4   r   executefetchalllenr   minmaxr6   nowstrftimecommitsortedr(   rollbackr)   )r   r   r   r5   cashierr4   select_queryresultfolios_datarowfolios_numbersr8   r7   r6   current_datetimeupdate_queryr=   folio_numberr-   s                      r   manualzCafClass.manualF   s<   `	Zhhnn\299,//Z:WX^^`G")8HT^6_``&77#")Lv6wxx   ! L XX%%l$4$5 F !//+K")8bcsbt6uvv;(*")	#kBRASSw  yI  xJ  J[  \d  [e  7f  g  g 4??Ccii?N?N+IN+I *'||~667JK ! L HH\($4&&$4. 0,  HHOO :KZ	{$ykDDK]8*B77K23C2DBGGK_ZL;;K23C2DBGGK01A0B$GGK &~ 6 j!jkwjxx{  }M  |N  NR  Sc  Rd  di   j  jj $HSWXaWbbp  rB  qC  D'*;'7!*!*(8",(8#. ] @x  	ZHH%4OPSTUPVx2XYY	ZsJ   AG6 G6 1AG6 5$G6 G6 G11C?G6 1G6 6	H4?*H/)H4/H4r
   )r   
   )__name__
__module____qualname__r   r/   rR    r   r   r   r      s    
8-tdZr   r   )	app.backend.db.modelsr   r   jsonfastapi.responsesr   
sqlalchemyr   r   rW   r   r   <module>r\      s    :  & dZ dZr   