
    ʃhq                         d dl mZmZmZmZmZmZmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZ d dl
mZ d dlZd dlmZ d dlZd d	lmZmZ d d
l
mZ  G d d      Zy)    )CollectionModelBranchOfficeModelCashierModelTotalGeneralCollectionModelTotalCollectionModelTotalDetailCollectionModelr   )datetime)DteClass)desc)mysql)funcN)AuthenticationClass)date	timedelta)and_c                   p    e Zd Zd ZdefdZd Zd ZddZddZ	d	 Z
d
 Zd Zd Zd Zd Zd Zd Zd Zy)CollectionClassc                     || _         y )N)db)selfr   s     P/var/www/intrajisbackend.com/public_html/app/backend/classes/collection_class.py__init__zCollectionClass.__init__   s	        collections_datac                    |D ]V  }t        j                  d      }t        j                  |      j	                  d      }|d   }|d   }|d   }|d   }|d   }	|d   }
|d	   }|d
   }| j
                  j                  t              j                  |||      j                         }|re|j                  |k7  s|j                  |
k7  s||_
        |	|_        |
|_        ||_        ||_        ||_        | j
                  j!                          |||||	|
|||d	}t        di |}| j
                  j#                  |       | j
                  j!                          Y y )NAmerica/Santiago%Y-%m-%d %H:%M:%S                  	   
   )
cashier_idbranch_office_id
added_date)	r&   r'   r(   cash_gross_amountcash_net_amountcard_gross_amountcard_net_amounttotal_ticketsupdated_date )pytztimezoner	   nowstrftimer   queryr   	filter_byfirstr)   r+   r*   r,   r-   r.   commitadd)r   r   datatzcurrent_dater&   r'   r(   r)   r*   r+   r,   r-   recordnew_data
new_records                   r   update_all_collectionsz&CollectionClass.update_all_collections   sr   $ 2	!D12B#<<+445HIL aJ#AwaJ $Q"1gO $Q"1gO HM WW]]?3==%!1% >  eg	  ++/@@FD\D\`qDq/@F,-<F*/@F,-<F*+8F(*6F'GGNN$ #-(8",):'6):'6%2$0
 -8x8
J' e2	!r   c                    t        j                         t        d      z
  }| 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                  |k\        j'                         }|S )Nr%   )days)r   todayr   r   r4   r   cashierr   idr'   r&   r(   r-   r)   r*   r+   r,   	outerjoinfilterall)r   
limit_dater9   s      r   get_all_collectionsz#CollectionClass.get_all_collectionsG   s    ZZ\I2$66
 GGMM$$""00****--11//11//-- Y(B(Bloo(UVVO..*<=SU! 	& r   c                    	 | 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
                  |k(        j!                         }|r|j
                  |j                  |j                  |j                  |j                  j#                  d      |j                  |j                  |j                  |j                  |j                  d
}d|i}t%        j&                  |      }|S y# t(        $ r}t+        |      }d| cY d }~S d }~ww xY w)Nz%Y-%m-%d)
rD   r'   rC   r&   r(   r-   r)   r*   r+   r,   collection_dataz3No se encontraron datos para el campo especificado.Error: )r   r4   r   rC   r   rD   r'   r&   r(   r-   r)   r*   r+   r,   rE   rF   r6   r3   jsondumps	Exceptionstr)r   rD   
data_queryrK   resultserialized_resulteerror_messages           r   getzCollectionClass.get_   s)   	-|';';_=O=OQ`QqQq  tC  tN  tN  P_  Pj  Pj  l{  lI  lI  KZ  Kl  Kl  n}  nO  nO  Q`  Qp  Qp  rA  rS  rS  Ud  Ut  Ut  u      @O  Q`  Qk  Qk  o{  o~  o~  Q~    F  F  GV  GY  GY  ]_  G_  `  f  f  hJ %--(2(C(C)11","7"7","7"7"@"@"L%/%=%=)3)E)E'1'A'A)3)E)E'1'A'A# &
 %)JJv$6!((L 	-FM]O,,	-s   F<G   	G#	GG#G#Nc                    |dk(  s|dk(  rg }|"|j                  t        j                  |k(         |"|j                  t        j                  |k(         |2|dk7  r-t	        |       |j                  t        j
                  |k(         	  | j                  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        t        j                  t        j                  k(        j$                  | j'                  t)        t        j
                              }	t	        |	       |dkD  rM|	j+                         }
t	        |	j,                  j/                  t1        j2                         ddi             |
|z   dz
  |z  }t	        |       |dk  s||kD  rdd	d
S |	j5                  |dz
  |z        j7                  |      j9                         }|sddd
S |D cg c]  }|j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j
                  r|j
                  j;                  d      nd |j                   d
 }}|
||||dS |	j9                         }|D cg c]  }|j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j
                  r|j
                  j;                  d      nd |j                   d
 }}|S |dk(  rg }|"|j                  t        j                  |k(         |"|j                  t        j                  |k(         |2|dk7  r-t	        |       |j                  t        j
                  |k(         	  | j                  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        t        j                  t        j                  k(        j%                  t        j@                  |k(        j$                  | j'                  t)        t        j
                              }	|dkD  r0|	j+                         }
t	        |	j,                  j/                  t1        j2                         ddi             |
|z   dz
  |z  }t	        |       |dk  s||kD  rdd	d
S |	j5                  |dz
  |z        j7                  |      j9                         }|sddd
S |D cg c]s  }|j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j
                  |j                   d
u }}|
||||dS |	j9                         }|D cg c]s  }|j                  |j                  |j                  |j                  |j                  |jB                  |jD                  |j                  |j
                  |j                   d
u }}|S y c c}w c c}w # t<        $ r}t?        |      }d|d
cY d }~S d }~ww xY wc c}w c c}w # t<        $ r}t?        |      }d|d
cY d }~S d }~ww xY w)N   r    r   literal_bindsTdialectcompile_kwargserrorInvalid page numberstatusmessageNo data foundz%d-%m-%Y)
rD   r'   branch_officer&   rC   r)   r+   r-   r(   r.   total_itemstotal_pagescurrent_pageitems_per_pager9   r    )#appendr   r'   r&   printr(   r   r4   rD   r   rd   r   rC   totalcard_total_collectionsr-   r.   rE   rF   order_byr   count	statementcompiler   r\   offsetlimitrG   r3   rO   rP   principal_supervisorr)   r+   )r   rol_idrutr'   r&   r(   pageri   filtersr4   rf   rg   r9   
collectionserialized_datarT   rU   s                    r   get_allzCollectionClass.get_all   s   Q;&A+G+:KKO__`%:EEST%**:j!:EESTLEO/22/@@/::%33 ((/55/FF/==/::/<< )-/@/C/CGbGsGs/stu~u~  @L  NZ  N]  N]  a|  aG  aG  NG  vH  IO  IO  QXY Zb  Zb  cg  hC  hN  hN  cO  ZP  e!8"'++-K%//11%--/[jlpZq1rs#.#?!#C"VK+&ax4+#5*1>STT !<<^(CDJJ>Z^^`D*1oNN )-'. % )mm,6,G,G)3)A)A&0&;&;#-#5#5-7-=-=-7-N-N)3)A)AT^TiTij&;&;&D&DZ&Pos(2(?(?( '.O '. (3'2(,*8 /  !99;D )-'. % )mm,6,G,G)3)A)A&0&;&;#-#5#5-7-=-=-7-N-N)3)A)AT^TiTij&;&;&D&DZ&Pos(2(?(?( '.O '. +* q[G+:KKO__`%:EEST%**:j!:EESTLEE/22/@@/::%33 ((/55/FF/==/::/<< )-/@/C/CGbGsGs/stu~u~  @L  NZ  N]  N]  a|  aG  aG  NG  vH  IO  IO  Pa  Pv  Pv  z}  P}  I~  E  E  GNO PX  PX  Y]  ^y  ^D  ^D  YE  PF  !8"'++-K%//11%--/[jlpZq1rs#.#?!#C"VK+&ax4+#5*1>STT !<<^(CDJJ>Z^^`D*1oNN )-'. % )mm,6,G,G)3)A)A&0&;&;#-#5#5-7-=-=-7-N-N)3)A)A&0&;&;(2(?(?( '.O '. (3'2(,*8 /  !99;D )-'. % )mm,6,G,G)3)A)A&0&;&;#-#5#5-7-I-I-7-I-I)3)A)A&0&;&;(2(?(?( '.O '. +*e ['.4'.  E #A")mDDE^'.4'.  E #A")mDDEs   G^ :^ ^ B^(	^ 2^ B^^ $G_ :_ =_ A8_9	_ _ A8_	_ 
^ 	_'^<6_<_
_ 	_1_,&_1,_1c                    g }|"|j                  t        j                  |k(         |"|j                  t        j                  |k(         |'|dk7  r"|j                  t        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                  t        j                        j!                  t        t        j                  t        j                  k(        j!                  t        t        j                  t        j                  k(        j!                  t        t        j                  t        j                  k(  t        j                  t        j                  k(  z        j"                  | j%                  t'        t        j                              }|dkD  rF|j)                         }t+        |j,                  j/                  t1        j2                         ddi             ||z   dz
  |z  }	t+        |	       |dk  s||	kD  rddd	S |j5                  |dz
  |z        j7                  |      j9                         }
|
sdd
d	S |
D cg c]  }|j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  d }}||	|||dS |j9                         }
|
D cg c]  }|j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  d }}|S c c}w c c}w # t:        $ r}t=        |      }d|d	cY d }~S d }~ww xY w)NrY   r   rZ   Tr[   rX   r^   r_   r`   rc   )rD   r'   rd   r&   rC   r)   r+   r-   dtes_cash_totaldtes_card_totaldtes_total_ticketsr(   re   )rj   r   r'   r&   r(   r   r4   rD   r   rd   r   rC   
cash_total
card_totalr-   r   rE   rF   rn   r   ro   rk   rp   rq   r   r\   rr   rs   rG   rO   rP   )r   r'   r&   r(   rw   ri   rx   r4   rf   rg   r9   ry   rz   rT   rU   s                  r   get_all_with_detailz#CollectionClass.get_all_with_detail2  s   'NN/@@DTTU!NN/::jHI!jB&6NN/::jHI\	ADGGMM,//,==,77)77$,,,77,77,::,772==2==2@@  i)+<+?+?CWChCh+hi$loo9M9X9X&Xi23>>BVBaBaa3>>BVBaBaac fg+'* (0x1<<=(+ 4 ax#kkmeoo--emmoWfhlVm-no*^;a?NRk"!8tk1&-:OPP ||TAX$?@FF~VZZ\&-/JJ  %)#* ! %--(2(C(C%/%=%=","7"7)11)3)>)>)3)>)>%/%=%='1'<'<'1'<'<*4*B*B","7"7$ #* #*  $/#.$(&4+  yy{  %)#* ! %--(2(C(C%/%=%=","7"7)11)3)>)>)3)>)>%/%=%='1'<'<'1'<'<*4*B*B","7"7$ #* #* '&W#*8#*"  	AFM%-@@	AsQ   5H0P- &:P- !P- %BP#3	P- =P- BP(P- #
P- -	Q6QQQc                 `   	 | j                   j                  t        j                  t        j
                        j                  d      t        j                  t        j                        j                  d            j                  t        j                  |k(  t        j                  |k(        j                  t        j                        j                         }|r)|r|j
                  r|j
                  nd|j                  dS dd dS # t        $ r}t!        |      }d|icY d }~S d }~ww xY w)Nrl   collection_idr   )rl   r   r^   )r   r4   r   sumr   rl   labelmaxrD   rF   r'   r(   group_byr6   r   rO   rP   )r   r'   collection_daterR   rT   rU   s         r   total_collectionz CollectionClass.total_collection  s    	,WW]]4::;AA'J4778>>O f+<<@PP+66/I h+<<eg  -3V\\!%+%9%9 
 "#T:: 	,FM]++	,s$   DD D 	D-D("D-(D-c                 T   	 | j                   j                  t              j                  t        j                  |k(        j                  t        j
                  |k(        j                  t        j                  |k(        j                         }|r|S y# t        $ r
}Y d }~yd }~ww xY w)Nr   )	r   r4   r   rF   r'   r&   r(   r6   rO   )r   r'   r&   r(   	existencerT   s         r   r   zCollectionClass.existence  s    	o6==o>^>^br>rszz  |K  |V  |V  Zd  |d  e  l  l  m|  mG  mG  KU  mU  V  \  \  ^I   		s   BB 	B'"B'c                     t        ||||ddd||t        |      dz   
      }| j                  j                  |       | j                  j	                          y )Nr   	 00:00:00)
r'   r&   r)   r*   r+   r,   subscribersr-   r(   r.   )r   rP   r   r8   r7   r   r&   r'   gross_total	net_totalr-   r   ry   s           r   store_redcomercioz!CollectionClass.store_redcomercio  sS    $!1%"- )"# !+ Y4
 	Jr   c                 d   t        j                  d      }t        j                  |      j	                  d      }	 | j
                  j                  t              j                  t        j                  |j                  k(        j                         }|rw|j                  |_        |j                  |_        |j                  |_        |j                  |_        |j                  |_        ||_        | j
                  j#                          yy# t$        $ r}t'        |      }d| cY d }~S d }~ww xY w)Nr   r   Collection updated successfullyzCollection not foundrL   )r0   r1   r	   r2   r3   r   r4   r   rF   rD   r6   r)   r*   r+   r,   r-   r.   r7   rO   rP   )r   update_collection_inputsr:   r;   ry   rT   rU   s          r   updatezCollectionClass.update  s    ]]-.||B'001DE	-7>>""&>&A&AAeg  /G/Y/Y
,-E-U-U
*/G/Y/Y
,-E-U-U
*+C+Q+Q
(*6
' 8- 	-FM]O,,	-s   CD 	D/D*$D/*D/c                 p   | j                   j                  t              j                  t        j                  |k(  t        j
                  |k(  t        j                  |k(        j                         }|rC||_        ||_	        ||_
        t        |      dz   |_        | j                   j                          y y)Nr   u.   No se encontró la colección para actualizar.)r   r4   r   rF   r&   r'   r(   r6   r)   r*   r-   rP   r.   r7   r   s           r   update_redcomercioz"CollectionClass.update_redcomercio  s    WW]]?3::&&*4,,0@@&&$.
 %'	 	 +6J()2J&'4J$&)$i+&=J#GGNNCr   c                    t        j                  d      }t        j                  |      j	                  d      }| j                  |d   |d   |d         }t        | j                        j                  |d   |d   |d         }t        | j                        j                         }|dk(  r/t        d       t        | j                        j                          nt        d       |dkD  r2t        |d	         t        |      z
  }t        t              d
z        }n(t        |d	         }t        t        |d         d
z        }|dk(  r]t        |d   |d   |||d   |d   |d   |d   |	      }	| j                  j!                  |	       	 | j                  j#                          y| j                  j)                  t              j+                  t        j,                  |d   k(  t        j.                  |d   k(  t        j0                  |d   k(        j3                         }|j4                  |d	   k7  s|j6                  |d   k7  rn|d	   |_        |d   |_        |d   |_        |d   |_        |d   |_        ||_        | j                  j!                  |       | j                  j#                          y# t$        $ r}
t'        |
      }d| cY d }
~
S d }
~
ww xY w)Nr   r   r'   r&   r(   r   u   El token está vencido.u   El token está vigente.r)   g
ףp=
?r*   r+   r,   r-   	r'   r&   r)   r*   r+   r,   r-   r(   r.   Collection stored successfullyrL   r   ) r0   r1   r	   r2   r3   r   r
   r   verifiy_credit_note_amountr   check_simplefactura_tokenrk   create_simplefactura_tokenintroundr   r8   r7   rO   rP   r4   rF   r&   r'   r(   r6   r)   r+   r*   r,   r-   r.   )r   collection_inputsr:   r;   collection_countcredit_note_amountcheck_token_statuscash_gross_totalcash_net_totalry   rT   rU   check_collections                r   storezCollectionClass.store  s   ]]-.||B'001DE>>*;<N*OQbcoQp  sD  EQ  sR  S%dgg.IIJ[\nJo  rC  DP  rQ  Sd  eq  Sr  s09SSU"+,(CCE+,!"#45H#IJSQcMdd"3~#6t#;<N"#45H#IJ"3'89J'K#LT#QRNq (!23E!F,\:"2 ."34G"H 12C D/@,\:)
J GGKK
#1 7
  $ww}}_=DD**.?.MM004EFX4YY**.?.MM  eg	   115FGZ5[[_o  `B  `B  FW  Xk  Fl  `l5FGZ5[ 23DEV3W 05FGZ5[ 23DEV3W 01B?1S .0< -,- 4)  1 #A 001s   J5 5	K>KKKc                    t        j                  d      }t        j                  |      j	                  d      }t        |d   |d   |d   |d   |d   |d   |d	   |d
   |	      }| j                  j                  |       	 | j                  j                          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   rL   )r0   r1   r	   r2   r3   r   r   r8   r7   rO   rP   )r   r   r:   r;   ry   rT   rU   s          r   manual_storezCollectionClass.manual_store9  s    ]]-.||B'001DE$!23E!F,\:"34G"H 12C D"34G"H 12C D/@,\:)

 	J	-GGNN3 	-FM]O,,	-s   B 	C &B;5C ;C c                 ^   	 | j                   j                  t              j                  t        j                  |k(        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Collection deleted successfullyr`   r^   rL   )
r   r4   r   rF   rD   deleter7   rO   rollbackrP   )r   rD   rT   s      r   r   zCollectionClass.deleteR  s    	FGGMM/*11/2D2D2JKRRTGGNN'4UVV 	FGG%GCF82DEE	Fs   A+A. .	B,7*B'!B,'B,c                    	 | j                   j                  t              j                  t        j                  |k(  t        j
                  |k(  t        j                  |k(        j                         }| j                   j                          y# t        $ r5}| j                   j                          ddt        |       dcY d }~S d }~ww xY w)NrX   r^   rL   r`   )r   r4   r   rF   r'   r&   r(   r   r7   rO   r   rP   )r   r'   r&   r(   validate_existencerT   s         r   delete_red_comercio_collectionz.CollectionClass.delete_red_comercio_collection]  s    	F!%!?!F!F004DD**j8**j8" fh	  GGNN 	FGG%GCF82DEE	Fs   BB 	C*CCC)NNNNNrX   r%   )NNNrX   r%   )__name__
__module____qualname__r   listr?   rI   rV   r{   r   r   r   r   r   r   r   r   r   r   r/   r   r   r   r      s`    3!t 3!l0 -DoEbeAN,0	$-4D">5@-2	FFr   r   )app.backend.db.modelsr   r   r   r   r   r   r	   app.backend.classes.dte_classr
   
sqlalchemyr   sqlalchemy.dialectsr   r   r0   (app.backend.classes.authentication_classr   rM   r   r   r   r   r/   r   r   <module>r      sC    p  p  p  2  %   H  $ ^	F ^	Fr   