
    g''h@                         d dl 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mZ d dlZd d	lmZ  G d
 d      Zy)    )CollectionModelBranchOfficeModelCashierModelTotalGeneralCollectionModelTotalCollectionModelTotalDetailCollectionModel)datetime)SettingClass)DteClass)desc)mysql)funcN)AuthenticationClassc                   F    e Zd Zd ZddZddZd Zd Zd Zd Z	d	 Z
d
 Zy)CollectionClassc                     || _         y )N)db)selfr   s     YC:\Users\jesus\OneDrive\Desktop\escritorio\newerp\app\backend\classes\collection_class.py__init__zCollectionClass.__init__   s	        Nc                 ~   g }|"|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
                              }|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                  |j:                  |j<                  |j                  |j
                  |j                   d
u }}|S c c}w c c}w # t>        $ r}tA        |      }d|d	cY d }~S d }~ww xY w)N r   literal_bindsTdialectcompile_kwargs   errorInvalid page numberstatusmessageNo data found)
idbranch_office_idbranch_office
cashier_idcashiercash_gross_amountcard_gross_amounttotal_tickets
added_dateupdated_datetotal_itemstotal_pagescurrent_pageitems_per_pagedata)!appendr   r&   r(   printr-   r   queryr%   r   r'   r   r)   totalcard_total_collectionsr,   r.   	outerjoinfilterorder_byr   count	statementcompiler   r   offsetlimitallr*   r+   	Exceptionstrr   r&   r(   r-   pager3   filtersr7   r0   r1   r4   
collectionserialized_dataeerror_messages                  r   get_allzCollectionClass.get_all   s   'NN6GGK[[\!NN6AAZOP!jB&6*NN6AAZOPL	AKDGGMM+..+<<+66!//$$+11+BB+99+66+88 i)+<+?+?C^CoCo+opqzqz  |H  JV  JY  JY  ]x  ]C  ]C  JC  rD  EK  EK  MTU V^  V^  _c  d  dJ  dJ  _K  VL  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)9)9)3)J)J%/%=%=","7"7$.$;$;$ #* #* $/#.$(&4+  yy{ %)#* ! %--(2(C(C%/%=%=","7"7)11)3)E)E)3)E)E%/%=%=","7"7$.$;$;$ #* #* '&O#*4#*  	AFM%-@@	AsQ    F=N >:N 9N =A8N5	N ?N A8NN 
N 	N<"N71N<7N<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)Nr   r   r   Tr   r   r   r    r!   r$   )r%   r&   r'   r(   r)   r*   r+   r,   dtes_cash_totaldtes_card_totaldtes_total_ticketsr-   r/   )r5   r   r&   r(   r-   r   r7   r%   r   r'   r   r)   
cash_total
card_totalr,   r   r:   r;   r<   r   r=   r6   r>   r?   r   r   r@   rA   rB   rC   rD   rE   s                  r   get_all_with_detailz#CollectionClass.get_all_with_detailh   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                 6   	 | j                   j                  t        j                  t        j
                        j                  d      t        j                  j                  d            j                  t        j                  |k(        j                  t        j                  |k(        j                  t        j                        j                         }|r|d   d   }|d   d   }|r|nd|dS dd dS # t        $ r}t        |      }d|icY d }~S d }~ww xY w)Nr8   collection_idr   r   )r8   rU   r   )r   r7   r   sumr   r8   labelr%   r;   r&   r-   group_byrB   rC   rD   )r   r&   collection_dateresult	total_sumrU   rJ   rK   s           r   total_collectionz CollectionClass.total_collection   s    	,WW]]4::;AA'J+..44_E f+<<@PPf+66/Ih2556ssu  "1IaL	 &q	!*3Y%2 
 "#T:: 	,FM]++	,s$   C.C6 1C6 6	D?DDDc                     	 | j                   j                  t              j                  t	        t        |      |k(        j                         }|S # t        $ r}t        |      }d| cY d }~S d }~ww xY w)NError: )r   r7   r   r;   getattrfirstrC   rD   )r   fieldvaluer4   rJ   rK   s         r   getzCollectionClass.get   sf    	-77==188RW9X\a9abhhjDK 	-FM]O,,	-s   AA 	A4A/)A4/A4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   r7   r   r;   r&   r(   r-   r=   rC   rD   )r   r&   r(   r-   	existencerJ   rK   s          r   re   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1} 	-FM]O,,	-s   BB 	B9B4.B94B9c                     t        ||||dd||t        |      dz   	      }| j                  j                  |       | j                  j	                          y )Nr   	 00:00:00	r&   r(   r*   cash_net_amountr+   card_net_amountr,   r-   r.   )r   rD   r   addcommitr   r(   r&   gross_total	net_totalr,   daterH   s           r   store_redcomercioz!CollectionClass.store_redcomercio   sP    $!1%"- )"# !+ Y4

 	Jr   c                 p   | j                   j                  t              j                  t        j                  |k(  t        j
                  |k(  t        j                  |k(        j                         }|rC||_        ||_	        ||_
        t        |      dz   |_        | j                   j                          y y)Nrg   u.   No se encontró la colección para actualizar.)r   r7   r   r;   r(   r&   r-   r`   r*   ri   r,   rD   r.   rl   rm   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)NzAmerica/Santiagoz%Y-%m-%d %H:%M:%Sr&   r(   r-   r   u   El token está vencido.u   El token está vigente.r*   g
ףp=
?ri   r+   rj   r,   rh   zCollection stored successfullyr^   zCollection updated successfully) pytztimezoner	   nowstrftimere   r   r   verifiy_credit_note_amountr   check_simplefactura_tokenr6   create_simplefactura_tokenintroundr   rk   rl   rC   rD   r7   r;   r(   r&   r-   r`   r*   r+   ri   rj   r,   r.   )r   collection_inputstzcurrent_datecollection_countcredit_note_amountcheck_token_statuscash_gross_totalcash_net_totalrH   rJ   rK   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)NNNr   
   )__name__
__module____qualname__r   rL   rS   r\   rc   re   rq   rs   r    r   r   r   r      s6    VAreAN,0-
-"D">5r   r   )app.backend.db.modelsr   r   r   r   r   r   r	   !app.backend.classes.setting_classr
   app.backend.classes.dte_classr   
sqlalchemyr   sqlalchemy.dialectsr   r   ru   (app.backend.classes.authentication_classr   r   r   r   r   <module>r      s5    b  b  : 2  %   HP5 P5r   