
    wh-                     X    d dl 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	 G d d      Z
y)    )
FolioModelCashierModel)SettingClass)
AlertClassNc                   J    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y)
FolioClassc                     || _         y )N)db)selfr
   s     TC:\Users\jesus\OneDrive\Desktop\escritorio\newerp\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                  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-   r.   s       r   validatezFolioClass.validateF   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   r2   r-   r.   s          r   assignationzFolioClass.assignationT   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   jsondumpsr(   r)   )
r   r   r   requested_quantityquantity_in_cashiercashierr    r   
folio_dictr-   s
             r   	get_foliozFolioClass.get_foliod   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                    	 t        | j                        j                         }|r|| j                  j                  t              j                  t        j                  dk(        j                  t        j                  |k(        j                         }|d   d   }||k  ryyy# t        $ r}t        |      }d| cY d }~S d }~ww xY w)Nr   setting_data	caf_limitr      r   )r   r
   getr    r   r&   r   r;   r"   r(   r)   )r   r;   settingsfoliosrF   r-   r.   s          r   validate_caf_limitzFolioClass.validate_caf_limit   s    	-#DGG,002Hz299*:X:X\]:]^eefp  gB  gB  FV  gV  W  ]  ]  _$^4[A	I% 	-FM]O,,	-s   BB$ $	C-C<CCc                 :   	 |dkD  r| j                   j                  t              j                  t        j                  |k(        j                  d      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 ]2  }||_        ||_        d|_        | j                   j!                  |       4 | j                   j#                          g }	|D ]M  }|j                  |j$                  |j                  |j                  |j                  d}
|	j'                  |
       O t)        j*                  |	      S y# t,        $ r}t/        |      }d| cY d }~S d }~ww xY w)Nr   r   r7   r8   r9   r   )r
   r    r   r&   r   r$   r:   rK   r;   r   
send_emailr   r   r%   r   r   addr<   r   appendr=   r>   r(   r)   )r   r   r   r?   r@   rA   response_validate_caf_limitrJ   r   r,   rB   r-   r.   s                r   rH   zFolioClass.get   s   -	-!A%''--5<<\__PZ=Z[aabcdjjl.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-GGKK&	'   #%# 	7E#hh!&,1,B,B&+&6&6/4/H/H"J $**:6	7 zz/22C 	-FM]O,,	-s%   D9G7 <B9G7 7	H HHH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"   r:   r   rN   r<   )r   r   r2   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 successfullyrR   )r
   r    r   r&   r   r:   r   r<   )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>   rH   lenr
   r    r   r!   r   descr:   r   r'   range)r   amountpayloadr_   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   r/   r3   r5   rC   rK   rH   rS   rV   rs    r   r   r   r      s8    7-r-- -&^-".-`
%!+Ar   r   )app.backend.db.modelsr   r   !app.backend.classes.setting_classr   app.backend.classes.alert_classr   r=   rd   datetimer   rx   r   r   <module>r}      s%    : : 6   MA MAr   