
    "ch6                     H    d dl mZmZmZ d dlZd dlmZ d dlZ G d d      Zy)    )CashierModelLatestUpdateCashierModelBranchOfficeModelN)datetimec                   f    e Zd Zd ZddZd Zd Zd Zd ZddZ	de
fd	Zd
 ZddZd Zd Zd Zy)CashierClassc                     || _         y )N)db)selfr
   s     M/var/www/intrajisbackend.com/public_html/app/backend/classes/cashier_class.py__init__zCashierClass.__init__   s	        c                 N   	 |dk(  rk| j                   j                  t              j                  t        j                  dk7        j                  t        j                        j                         }n| j                   j                  t              j                  t        j                  |k(        j                  t        j                  dk7        j                  t        j                        j                         }|sy|S # t        $ r}t        |      }d| cY d }~S d }~ww xY w)N 	   No data foundError: )r
   queryr   filterfolio_segment_idorder_bycashierallbranch_office_id	Exceptionstrr   r   dataeerror_messages        r   get_allzCashierClass.get_all
   s   
	-2%ww}}\299,:W:W[\:\]ffgsg{g{|  A  A  Cww}}\299,:W:W[k:klss  uA  uR  uR  VW  uW  X  a  a  bn  bv  bv  w  {  {  }&K 	-FM]O,,	-s$   C<D ?D 	D$
DD$D$c                 (   	 | j                   j                  t              j                  t	        t        |      |k(        j                  t        j                        j                         }|S # t        $ r}t        |      }d| cY d }~S d }~ww xY w)Nr   )
r
   r   r   r   getattrr   r   firstr   r   )r   fieldvaluer   r   r    s         r   getzCashierClass.get   s    	-77==.55glE6RV[6[\eefrfzfz{  B  B  DDK 	-FM]O,,	-s   A+A. .	B7BBBc                 .   	 | j                   j                  t              j                  t        j                  |k(        j                  t        j
                  dk(        j                         }|S # 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   s        r   get_subscriber_cashierz#CashierClass.get_subscriber_cashier   s    	-77==.55l6S6SWg6ghoop|  qN  qN  RS  qS  T  Z  Z  \DK 	-FM]O,,	-s   A.A1 1	B:B	BBc                 B   	 | j                   j                  t              j                  t        j                  dk(        j                  t        j
                  |k(        j                         }|j                  S # t        $ r}t        |      }d| cY d }~S d }~ww xY w)N   r   )
r
   r   r   r   getaway_machine_idr   r$   idr   r   r   r-   r   r   r    s        r   get_with_machinezCashierClass.get_with_machine'   s    	-77==.55l6U6UYZ6Z[ccdp  eB  eB  FH  eH  I  O  O  QD77N 	-FM]O,,	-s   A8A; ;	BBBBc                 l   | j                   j                  t              j                         }|syg }|D ]i  }|j                  |j
                  |j                  r|j                  j                         nd |j                  |j                  d}|j                  |       k t        j                  |      S )NzNo hay cajas en el informe.)r-   r   last_updated_daterustdeskanydesk)r
   r   r   r   r-   r   r1   	isoformatr2   r3   appendjsondumps)r   cashier_reportsserialized_datacashier_reportcashier_report_dicts        r   latest_updatezCashierClass.latest_update0   s    ''--(@AEEG0- 	8N$'')11UcUuUu^%E%E%O%O%Q{*33)11# ""#67	8 zz/**r   c                 6   	 g } | j                   j                  t        j                  t        j                  t        j
                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                        j                  t        t        j                  t        j
                  k(        j!                  t        j                  dk7  t        j                  dk7  t        j                  dk7        j                   | j#                  t        j                        }|dkD  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                  |j
                  |j                  |j                  |j                  r|j                  j-                         nd |j                  r|j                  j-                         nd |j                  |j                  |j                  |j                  d	 }	}|||||	d
S |j+                         }|D cg c]  }|j                  |j                  |j
                  |j                  |j                  |j                  r|j                  j-                         nd |j                  r|j                  j-                         nd |j                  |j                  |j                  |j                  d	 }	}|	S c c}w c c}w # t.        $ r}
t1        |
      }d|dcY d }
~
S d }
~
ww xY w)Nr      r   r+   errorInvalid page numberstatusmessager   r-   r   r   r   r,   
added_dateupdated_dater3   r2   available_foliosbranch_officetotal_itemstotal_pagescurrent_pageitems_per_pager   )r
   r   r   r-   r   r   r   r,   rE   rF   r3   r2   rG   r   rH   	outerjoinr   r   countoffsetlimitr   r4   r   r   )r   pagerM   filtersr   rJ   rK   r   r   r9   r   r    s               r   get_listzCashierClass.get_listC   s/   T	AGDGGMM$$----//''))$$%%--!// i!#4#7#7<;X;X#Xf--2--2--2 f'( h) 0 ax#kkm*^;a?NR!8tk1&-:OPP||TAX$?@FF~VZZ\&-/JJ "&#'  "**&(/(@(@(/(@(@*1*D*DDKDVDV'"4"4">">"@\`HOH\H\G$8$8$B$B$Dbf& ' 0 0(/(@(@%,%:%:$ #' #' $/#.$(&4+  yy{ "&#'  "**&(/(@(@(/(@(@*1*D*DDKDVDV'"4"4">">"@\`HOH\H\G$8$8$B$B$Dbf& ' 0 0(/(@(@%,%:%:$ #' #' '&O#'2#'   	AFM%-@@	AsP   FM5 :M5 M5 B;M+	M5 M5 ,B;M0'M5 +
M5 5	N>NNNcashiers_datac                    t        j                  d      }t        j                  |      j	                  d      }|D ]  }|d   }|d   }| j
                  j                  t              j                  |      j                         }|r9|j                  |k7  s\||_
        ||_        | j
                  j                          |||d}t        di |}	| j
                  j                  |	       | j
                  j                           y )NzAmerica/Santiagoz%Y-%m-%d %H:%M:%Sr   r+   )r-   )
cashier_idrG   rF    )pytztimezoner   nowstrftimer
   r   r   	filter_byr$   rG   rF   commitadd)
r   rU   tzcurrent_dater   rW   rG   recordnew_data
new_records
             r   update_all_cashiersz CashierClass.update_all_cashiers   s    ]]-.||B'001DE! 	!DaJ#AwWW]]<0:: ; eg  **.>>.>F+*6F'GGNN$ #-(8$0
 *5H5
J' /	!r   c                    | j                   j                  t        j                  t        j                        j                  t        j                  dk7        j                  t        j                  dk7        j                         }|S )Nr   r>   )r
   r   r   r-   rG   r   r   r   )r   r   s     r   get_all_cashierszCashierClass.get_all_cashiers   sa    GGMM-- VL11Q67VL11Q67SU 	 r   c                    	 g }|j                   ;|j                   dk7  r,|j                  t        j                   |j                   k(         |j                  ;|j                  dk7  r,|j                  t        j                  |j                  k(          | j
                  j                  t        j                  t        j                  t        j                   t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                         j#                  t        t        j                  t        j                   k(        j%                  t        j                  dk7  t        j                  dk7  t        j                  dk7        j$                  | j'                  t        j                        }t)        t+        |j,                               |dkD  r.|j/                         }||z   dz
  |z  }|dk  s||kD  rdddS |j1                  |dz
  |z        j3                  |      j5                         }|sdd	dS |D 	cg c]  }	|	j                  |	j                  |	j                   |	j                  |	j                  |	j                  r|	j                  j7                         nd |	j                  r|	j                  j7                         nd |	j                  |	j                  |	j                  |	j                   d
 }
}	|||||
dS |j5                         }|D 	cg c]  }	|	j                  |	j                  |	j                   |	j                  |	j                  |	j                  r|	j                  j7                         nd |	j                  r|	j                  j7                         nd |	j                  |	j                  |	j                  |	j                   d
 }
}	|
S c c}	w c c}	w # t8        $ r}t+        |      }d|dcY d }~S d }~ww xY w)Nr   r   r>   r   r+   r?   r@   rA   r   rD   rI   )r   r5   r   rW   r-   r
   r   r   r   r,   rE   rF   r3   r2   rG   r   rH   rN   r   r   printr   	statementrO   rP   rQ   r   r4   r   )r   cashier_inputsrR   rM   rS   r   rJ   rK   r   r   r9   r   r    s                r   searchzCashierClass.search   s   [	AG..:~?^?^bd?d|<<@_@__`((49R9RVX9X|.2K2KKLDGGMM$$----//''))$$%%--!// i!#4#7#7<;X;X#Xf--2--2--2 f'( h) 0 #eoo&' ax#kkm*^;a?NR!8tk1&-:OPP||TAX$?@FF~VZZ\&-/JJ "&#'  "**&(/(@(@(/(@(@*1*D*DDKDVDV'"4"4">">"@\`HOH\H\G$8$8$B$B$Dbf& ' 0 0(/(@(@%,%:%:$ #' #' $/#.$(&4+  yy{ "&#'  "**&(/(@(@(/(@(@*1*D*DDKDVDV'"4"4">">"@\`HOH\H\G$8$8$B$B$Dbf& ' 0 0(/(@(@%,%:%:$ #' #' '&O#'2#'   	AFM%-@@	AsP   H=P!  :P! ;P! ?B;P:	P! P! B;PP! 
P! !	Q*P?9Q?Qc                    t               }|j                  |_        |j                  |_        |j                  |_        |j                  |_        |j
                  |_        |j                  |_        |j                  |_        |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Cashier saved successfullyrA   r?   r   )r   r   r   r,   transbank_status_idvisibility_status_idr   r3   r2   r
   r_   r^   r   rollbackr   )r   	form_datar   r   s       r   storezCashierClass.store#  s    .#++#,#=#= %.%A%A"&/&C&C#'0'E'E$#,#=#= #++$--G	FGGNN'4PQQ 	FGG%GCF82DEE	Fs   /C 	D*DDDc                    | j                   j                  t              j                  t        j                  |k(        j                         }|sdddS dD ]  }t        ||d       }|t        |||       ! 	 | j                   j                          dddS # t        $ r5}| j                   j                          ddt        |       dcY d }~S d }~ww xY w)Nr?   zCashier not foundrA   )r   r   r,   ro   rp   r   r3   r2   rn   zCashier updated successfullyr   )r
   r   r   r   r-   one_or_noner#   setattrr^   r   rq   r   )r   r-   rr   r   r%   r&   r   s          r   updatezCashierClass.update7  s    ''---44\__5JKWWY%2EFF	
 	/E Iud3E .	/	FGGNN'4RSS 	FGG%GCF82DEE	Fs   :B 	C"*CCCc                 \   	 | j                   j                  t              j                  t        j                  |k(        j                         }|r6| j                   j                  |       | j                   j                          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$   deleter^   r   r   r.   s        r   ry   zCashierClass.deleteS  s    
	-77==.55loo6KLRRTDt$ & 	-FM]O,,	-s   BB 	B+B& B+&B+N)r   )r   
   )__name__
__module____qualname__r   r!   r'   r)   r/   r<   rT   listre   rg   rl   rs   rw   ry   rX   r   r   r   r      sR    ----+&UAn! !:\A|F(F8-r   r   )app.backend.db.modelsr   r   r   r6   r   rY   r   rX   r   r   <module>r      s     [ [   X- X-r   