
    #^h34                     h    d dl mZmZmZmZ d dlmZ d dlmZ d dl	Z	d dl
Z
d dlZd dlZ G d d      Zy)    )
FolioModelCashierModelFolioReportModelFolioQuantityPerCashierModel)SettingClass)
AlertClassNc                   V    e Zd Zd ZddZd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zy)
FolioClassc                     || _         y )N)db)selfr   s     F/var/www/jisbackend.com/public_html/app/backend/classes/folio_class.py__init__zFolioClass.__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                         }	t#        |	       ||||||	dS | j                   j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                        j                  t        j                        j                         }D cg c]G  }|j                  |j                  |j                  |j                  |j                  |j                  dI }}|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   Error: )r   queryr   r   r   r   r   r   r   r   r   order_bycountoffsetlimitallfilterprint	Exceptionstr)r   pager   
data_queryr   r   r   r   serialized_datar    eerror_messages               r   get_allzFolioClass.get_all   s   6	-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/4/H/H*/*>*>$ #) #) '&E	#)2#)  	-FM]O,,	-sR   CK 6K K A"K:A"K B#K  AKK 
K 	K=#K82K=8K=c                 J   | j                   j                  t              j                         }|syg }|D ]X  }|j                  |j
                  |j                  |j                  |j                  |j                  d}|j                  |       Z t        j                  |      S NzNo hay folios en el informe.)r   cashierbranch_officeavailable_foliosrustdeskanydesk)r   r"   r   r'   r   r4   r5   r6   r7   r8   appendjsondumpsr   folio_reportsr.   folio_reportfolio_report_dicts        r   reportzFolioClass.reportG   s    &67;;=1) 		6L"oo'//!-!;!;$0$A$A(11'//! ""#45		6 zz/**r   c                 J   | j                   j                  t              j                         }|syg }|D ]X  }|j                  |j
                  |j                  |j                  |j                  |j                  d}|j                  |       Z t        j                  |      S r3   )r   r"   r   r'   r   r4   r5   r6   r7   r8   r9   r:   r;   r<   s        r   get_quantity_per_cashierz#FolioClass.get_quantity_per_cashier[   s    &BCGGI1) 		6L"oo'//!-!;!;$0$A$A(11'//! ""#45		6 zz/**r   c                     	 | j                   j                  t              j                  t        j                  dk(        j                         }|dk  ryy# t        $ r}t        |      }d| cY d }~S d }~ww xY w)Nr   d   r   r!   )r   r"   r   r(   r   r$   r*   r+   )r   folio_countr/   r0   s       r   validatezFolioClass.validateo   sm    	-''--
3:::;Y;Y]^;^_eegKS  	-FM]O,,	-s   AA 	A9A4.A94A9c                 x   	 | j                   j                  t              j                  t        j                  |k(        j                  t        j
                  |k(        j                  t        j                  |k(        j                         }|dkD  ryy# t        $ r}t        |      }d| cY d }~S d }~ww xY w)Nr   r   r!   )
r   r"   r   r(   r   r   r   r$   r*   r+   )r   r   r   r   rE   r/   r0   s          r   assignationzFolioClass.assignation}   s    	-''--
3:::;K;Ku;TU\\]g]x]x  }M  ^M  N  U  U  V`  Vk  Vk  oy  Vy  z  @  @  BK Q 	-FM]O,,	-s   BB 	B9B4.B94B9c                 V   	 |dkD  r~| j                   j                  t              j                  t        j                  |k(        j                         }|sy| j                   j                  t              j                  t        j                  dk(        }|j                  dk(  r#|j                  t        j                  dk(        }n,|j                  t        j                  |j                  k(        }|j                         }|sy||_	        ||_
        d|_        | j                   j                          |j                  |j                  |j                  |j                  |j                  d}t        j                  |      S y# t        $ r}	dt!        |	       cY d }	~	S d }	~	ww xY w)Nr   zCajero no encontrado.3No hay folios disponibles con el estado solicitado.r   r   r   r   r   r   *La cantidad solicitada debe ser mayor a 0.r!   )r   r"   r   r(   r   firstr   r   folio_segment_idr   r   commitr   r:   r;   r*   r+   )
r   r   r   requested_quantityquantity_in_cashierr4   r"   r   
folio_dictr/   s
             r   	get_foliozFolioClass.get_folio   sZ   ,	&!A%''--5<<\__PZ=Z[aac2 j1889W9W[\9\]++q0!LL)D)D)IJE!LL)D)DH`H`)`aE P *:&#- ,-)    (("[[(-(>(>"'"2"2+0+D+D
 zz*--C 	&SVH%%	&s,   AF B/F A=F 	F(F#F(#F(c                    	 |dk7  rt        | j                        j                         }|r|| j                  j                  t              j                  t        j                  dk(        j                  t        j                  |k(        j                         }|d   d   }||k  ryyyy# t        $ r}t        |      }d| cY d }~S d }~ww xY w)N	   r   setting_data	caf_limitr      r!   )r   r   getr"   r   r(   r   rN   r$   r*   r+   )r   rN   settingsfoliosrW   r/   r0   s          r   validate_caf_limitzFolioClass.validate_caf_limit   s    	-1$'0446!WW]]:6==j>\>\`a>abiijt  kF  kF  JZ  kZ  [  a  a  cF ( 8 EI	)   	-FM]O,,	-s   B$B* *	C3CCCc                 F   	 |dkD  rt| j                   j                  t              j                  t        j                  |k(        j                  d      j                         }||_        | j                   j                  |       | j                   j                          | j                  |j                        }|dk(  r/t        | j                         j                  d|j                         | j                   j                  t              j                  t        j                  dk(        j                  t        j                  |j                  k(        j                  d      j!                         }|sy|D ]|  }||_        ||_        d|_        t'        j(                  d      }	t*        j*                  j-                  |	      j/                  d      }
|
|_        | j                   j                  |       ~ | j                   j                          g }|D ]M  }|j                  |j2                  |j"                  |j$                  |j                  d}|j5                  |       O t7        j8                  |      S y# t:        $ r}t=        |      }d| cY d }~S d }~ww xY w)	Nr   r   rJ   zAmerica/Santiagoz%Y-%m-%d %H:%M:%SrK   rL   r!   )r   r"   r   r(   r   r&   rM   r6   addrO   r\   rN   r   
send_emailr   r   r'   r   r   pytztimezonedatetimenowstrftimeupdated_dater   r9   r:   r;   r*   r+   )r   r   r   rP   rQ   r4   response_validate_caf_limitr[   r   tzcurrent_dater.   rR   r/   r0   s                  r   rY   zFolioClass.get   sV   3	-!A%''--5<<\__PZ=Z[aabcdjjl+>(G$ .2.E.EgF^F^._+.!3tww'221g6N6NOz299*:X:X\]:]^eefp  gB  gB  FM  F^  F^  g^  _  e  e  fg  h  l  l  n P $ 'E-=E*'1E$01E-'9:B#+#4#4#8#8#<#E#EFY#ZL)5E&GGKK&'   #%# 	7E#hh!&,1,B,B&+&6&6/4/H/H"J $**:6	7 zz/22C 	-FM]O,,	-s%   E5I= 8DI= =	J JJ J c                    | j                   j                  t              j                  t        j                  |k(        j                         }|dkD  r| j                   j                  t              j                  t        j                  |k(        j                         }d|_        | j                   j                  |       | j                   j                          yy)Nr   r   zFolio updated successfullyFolio not found)
r   r"   r   r(   r   r$   rM   r   r^   rO   )r   r   rE   s      r   updatezFolioClass.update  s    ggmmJ/66z7G7G57PQWWY?GGMM*-44Z5E5E5NOUUWE#$E GGKKGGNN/$r   c                     | j                   j                  t              j                  t        j                  |k(        j                         }|r'd|_        | j                   j                          d| dS y)Nr   zFolio z updated successfullyrj   )r   r"   r   r(   r   rM   r   rO   )r   r   folio_records      r   update_billed_ticketzFolioClass.update_billed_ticket  s_    ww}}Z077
8H8HE8QRXXZ,-L)GGNNE7"788 r   c                 d   dddddd}ddd	}t        j                  d
t        j                  |      |      }|j                         }|j	                  d      dk(  r|j	                  d      }t        |      }|dkD  r| j                  j                  t              j                  t        j                  j                               j                         }|d   }	|	d   |j                  z
  }
t        |
       |
|k\  r1|j                  }|dz  }t        ||dz         D ]  }t        |        y yy y )Nz
76063822-6zCasa Matriz)	rutEmisornombreSucursal'   r   )credencialescodigoTipoDteambientez:Basic cm9kcmlnb2NhYmV6YXNAamlzcGFya2luZy5jb206Um9ybzIwMjQuzapplication/json)AuthorizationzContent-Typez-https://api.simplefactura.cl/folios/consultar)r   headersstatus   r   r   hastaz#No hay folios disponibles en el CAF)requestspostr:   r;   rY   lenr   r"   r   r#   r   descrM   r   r)   range)r   amountpayloadrw   responseresponse_datar   quantity
folio_datalast_rowavailable_caf_folioslast_registered_foliois                r   requestzFolioClass.request  s?    *"/  
 Z.

 ==;G$
 !X&#- $$V,D4yH!|!WW]]:6??
@R@R@TU[[]
8'/'8:;K;K'K$*+'61,6,<,<))Q.)"#8:ORS:ST !a! A  .r   N)r   
   )__name__
__module____qualname__r   r1   r@   rB   rF   rH   rS   r\   rY   rk   rn   r    r   r   r
   r
   	   sB    7-r+(+(-- -&^-*4-l
%!+Ar   r
   )app.backend.db.modelsr   r   r   r   !app.backend.classes.setting_classr   app.backend.classes.alert_classr   r:   r|   r`   rb   r
   r   r   r   <module>r      s+    j j : 6    A Ar   