
    XhQ                         d dl mZ d dlmZmZmZ d dlmZ d dlm	Z	 d dl
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Zd d
lmZ d dlZ G d d      Zy)    )Session)DteModelBranchOfficeModel
FolioModel)HelperClass)	FileClassN)datetime)desc)mysql)SettingClass)or_c                   F    e Zd ZdefdZddZddZd Zd Zd Z	d	 Z
d
 Zy)MachineTicketClassdbc                 2    || _         t        |      | _        y )N)r   r   
file_class)selfr   s     T/var/www/intrajisbackend.com/public_html/app/backend/classes/machine_ticket_class.py__init__zMachineTicketClass.__init__   s    #B-    c                 f   	 g }|j                  t        j                  dk(         |j                  t        j                  d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"                  | j%                  t'        t        j                              }|dkD  rX|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                  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                  |j                  d }	}|	S c c}w c c}w # t<        $ r}
t?        |
      }d|d
cY d }
~
S d }
~
ww xY w)N'   
66666666-6r   literal_bindsTdialectcompile_kwargs   errorInvalid page numberstatusmessageNo data found%d-%m-%Y)idrutbranch_office_identrance_hourdte_type_id	exit_hourfoliototal	status_id
added_datebranch_officetotal_itemstotal_pagescurrent_pageitems_per_pagedata)r&   r'   r(   r)   r*   r+   r,   r-   r/   r0   r.   ) appendr   r*   r'   r   queryr&   r(   r,   r-   r/   r)   r+   r.   r   r0   	outerjoinfilterorder_byr
   countprint	statementcompiler   r   offsetlimitallstrftime	Exceptionstr)r   pager5   filtersr8   r2   r3   r6   dteserialized_dataeerror_messages               r   get_allzMachineTicketClass.get_all   s   [	AGNN8//256NN8<<<78DGGMM))##&&""$$""!// i!#4#7#78;T;T#Tf  hX(()! * ax#kkmeoo--emmoWfhlVm-no*^;a?NRk"!8tk1&-:OPP ||TAX$?@FF~VZZ\&-/JJ "##  &&77(+(<(<%(%6%6#&??!$ YY YY!$IL#.."9"9*"E]a%(%6%6$ ## ## $/#.$(&4+  yy{ "##  &&77(+(<(<%(%6%6#&??!$ YY YYIL#.."9"9*"E]a%(%6%6!$$ ## ## '&S##6##   	AFM%-@@	AsP   GN ":N N !B N	N N B N?N 
N 	N0N+%N0+N0Nc	                 
   	 g }	|"|	j                  t        j                  |k(         |"|	j                  t        j                  |k(         |"|	j                  t        j                  |k(         |"|	j                  t        j
                  |k         |"|	j                  t        j
                  |k\         |"|	j                  t        j                  |k(         |	j                  t        j                  d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"                  t         j$                  t         j&                        j)                  t         t         j                  t        j                  k(        j)                  t        t        j                  t        j                  k(        j*                  |	 j-                  t/        t        j                              }
| j                  j                  t              j+                  t        j0                  |k(        j3                         }|dkD  rd}nd}|dkD  rz|
j3                         }t5        |
j6                  j9                  t;        j<                         ddi             ||z   dz
  |z  }t5        |       |dk  s||kD  rddd	S |
j?                  |dz
  |z        jA                  |      jC                         }|sdd
d	S |D cg c]  }|j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j
                  r|j
                  jE                  d      nd |j                  |j"                  |j&                  |j$                  |d }}|||||dS |
jC                         }|D cg c]  }|j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j
                  r|j
                  jE                  d      nd |j                  |j                  |j"                  |j$                  |j&                  |d }}|S c c}w c c}w # tF        $ r}tI        |      }d|d	cY d }~S d }~ww xY w)Nr   r   r   r   Tr   r   r    r!   r$   r%   )r&   r'   r(   r)   r+   r*   r,   r-   r.   r/   r0   requested_status_idbilled_status_idused_status_idhave_credit_noter1   )r&   r'   r(   r)   r+   r,   r-   r*   r/   r0   r.   rN   rP   rO   rQ   )%r7   r   r,   r(   r-   r/   r*   r'   r   r8   r&   r)   r+   r.   r   r0   r   rN   rP   rO   r9   r:   r;   r
   denied_folior<   r=   r>   r?   r   r   r@   rA   rB   rC   rD   rE   )r   r,   r(   r*   amountsinceuntilrF   r5   rG   r8   check_credit_note_existencerQ   r2   r3   r6   rH   rI   rJ   rK   s                       r   searchzMachineTicketClass.searchr   sq   |	AG x~~67+x88<LLM!x~~78 x22e;< x22e;<&x33{BCNN8<<<78DGGMM))##&&""""$$!//..))++ iJ,,>i!#4#7#78;T;T#Tf)* hX[[!+ 2 +/''--*A*H*H%%.+eg ( +Q.#$ #$  ax#kkmeoo--emmoWfhlVm-no*^;a?NRk"!8tk1&-:OPP ||TAX$?@FF~VZZ\&-/JJ& "!##   &&77(+(<(<%(%6%6!$#&?? YY YY!$IL#.."9"9*"E]a%(%6%6+.+B+B(+(<(<&)&8&8(8$ ## ##& $/#.$(&4+  yy{& "!##   &&77(+(<(<%(%6%6!$ YY YY#&??IL#.."9"9*"E]a%(%6%6!$+.+B+B&)&8&8(+(<(<(8$ ## ##$ '&c##>##(  	AFM%-@@	AsP   MT> :T> 
T> CT4	T> T> .CT90T> 4
T> >	U!UU!U!c                 `   t        | j                        j                         }|d   d   }| j                  j                  t              j                  t        j                  |k(        j                         }|r3ddd|j                  |j                  ddd}d	}d
| dd}t        j                  |||      }|j                  dk(  r|j                  }	t        j                         j!                  d      }
t#        j$                         j&                  d d }|
 d| d}| }| j(                  j+                  |	|       | j(                  j-                  |      }t/        |       t1        j2                  |      j5                  d      }| j(                  j7                  |       ||dS y y )Nsetting_datasimplefactura_token
76063822-6Casa Matriz	rutEmisornombreSucursalr   r,   codigoTipoDteambientecredencialesdteReferenciadoExternoz#https://api.simplefactura.cl/getPdfBearer application/jsonAuthorizationzContent-Typejsonheaders   z%Y_%m_%d_%H_%M_%S   _z.pdfzutf-8)	file_name	file_data)r   r   getr8   r   r:   r&   firstr,   r*   requestspoststatus_codecontentr	   nowrC   uuiduuid4hexr   temporal_uploaddownloadr=   base64	b64encodedecodedelete)r   r&   rY   tokenrH   payloadurlrl   responsepdf_content	timestamp	unique_idunique_filenameremote_pathfile_contentsencoded_files                   r   r}   zMachineTicketClass.download   s   #DGG,002^,-BCggmmH%,,X[[B->?EEG ".&3!
 !YY%(__ !+
G 8C $+5'!2 2G
  }}H ##s*&..$LLN334GH	 JJL,,Ra0	%.Kq4"@!0 1//[I $ 8 8 Em$%//>EEgN&&{3 "1!- 
 c r   c                    t        | j                        j                         }|d   d   }ddd|dddd	}d
}d| dd}t        j                  |||      }t        |j                         |j                         }|d   d   S )NrY   rZ   r[   r\   r]   r   r   r`   rc   z+https://api.simplefactura.cl/documentIssuedrf   rg   rh   rj   r6   fechaDte)r   r   rr   rt   ru   r=   textrk   )	r   r,   rY   r   r   r   rl   r   response_datas	            r   get_dte_datezMachineTicketClass.get_dte_date)  s    #DGG,002^,-BC ".&3!
 #%' !+
 < $+5'!2 2
 == 	hmm V$Z00r   c                 V	   | j                   j                  t              j                  t        j                  |j                  k(        j                         }| j                  |j                        }|j                  d      }t        |d         dz   }t        |j                        dkD  r|j                  }n|j                  }| j                  |j                  ||      }|d k7  rd|_        |j                  |_        dt        |      z   |_        | j                   j#                  |       | j                   j%                          t        |j                        dkD  r
t               }|j&                  |_        d|_        d|_        d|_        d|_        d|_        d|_        ||_        |j                  |_        t5        t        |             |_        d|_        t5        t7        t        |      d	z               |_        t5        t        |j                        t7        t        |      d	z        z
         |_        d|_        t5        t        |             |_        ||_         nt               }|j&                  |_        d|_        d|_        d|_        d|_        d|_        d|_        ||_        |j                  |_        d|_        t5        t        |             |_        t5        t7        t        |      d	z               |_        t5        t        |j                        t7        t        |      d	z        z
         |_        d|_        t5        t        |             |_        ||_         | j                   j#                  |       	 | j                   j%                          tC               }||_        d|_"        d|_#        d|_$        |j&                  |_        |j(                  |_        tK        jL                         jO                  dddd
      |_         | j                   j#                  |       | j                   j%                          | jQ                  |       dddS y# tR        $ r5}	| j                   jU                          ddt        |	       dcY d }	~	S d }	~	ww xY w)NTr   z	 00:00:00   u   Folio de la Nota de Crédito =   r   r   
ףp=
?)hourminutesecondmicrosecondsuccesszCredit Note saved successfullyr!   r   zError: zCreditnote was not created)+r   r8   r   r:   r&   rs   r   r,   splitrE   intcash_amountcard_amountgenerate_credit_note_ticketr.   	reason_idcommentaddcommitr(   
cashier_idr*   dte_version_idchip_idr'   rR   absroundsubtotaltaxdiscountr-   r/   r   rN   rP   rO   r	   rx   replacecreate_account_assetrD   rollback)
r   	form_datarH   dte_datedte_date_detailrS   r,   credit_note_dtefolio_credit_noterJ   s
             r   store_credit_notez$MachineTicketClass.store_credit_noteL  s   ggmmH%,,X[[ILL-HIOOQ$$SYY/"..-oa01K?s!#__F__F00FHMD=CM%//CM9CJFCKGGKKGGNN3??#a'"**363G3G0-.*.0+12.,-)*+'&2#(-%/2yy,/23v;/?.?+./+,/c&k$6F0G,H+H('*3s+?%FTXHXBY+Y'Z&Z#+,(),S[)9(9%-<*"**363G3G0-.*.0+12.,-)*+'&2#(-%/2yy,./+/23v;/?.?+,/c&k$6F0G,H+H('*3s+?%FTXHXBY+Y'Z&Z#+,(),S[)9(9%-<*GGKK(J $.L!*/!'89!534!056!2585I5I!2/2~~!,/7||~/E/E1UV_`no/E/p!,-. ))/:"+8XYY
 0	  J  "")Ax6HIIJs   CQ* *	R(3*R#R(#R(c                    d}|j                   j                  d      }t        |      dz   }t        j                  |      }d}| j
                  j                  t              j                  t        j                  |j                  k(        j                         }|j                  dz   |z   dz   |z   dz   t        |j                        z   dz   t        |j                        z   }|j                  }	|||t        t!        |	      dz        dt        t!        |	      t!        |	      dz  z
        id	t!        |	      id
dd|j"                  |j                  dgid}
ddz   }t%        j&                  ||
d| dd      }|j(                  dk(  ryy)N JXou3uyrc7sNnP2ewOCX38tWZ6BTm4D1z%Y-%mz-01	441000102ro   _NotaCredito_r   	221000226	111000102)debehaberIemitidos)rH   r,   )fechaglosadetalle	operacion
documentosz/https://libredte.cl/api/lce/lce_asientos/crear/76063822rf   rg   rh   rj   rm   z%Accounting entry created successfullyz!Accounting entry creation failed.)r/   rC   rE   r   convert_to_utf8r   r8   r   r:   r&   r(   rs   r0   r,   r-   r   r   r*   rt   ru   rv   )r   r   TOKENperiod_dateamerican_date	utf8_dateexpense_typer0   glossrS   r6   r   r   s                r   r   z'MachineTicketClass.create_account_asset  s   2**33G<K(50//>	"&78??  I$>$>>

%' 	
 ++  	
 "" ill#$  ioo&' 	  ' %eCK,<&=#U3v;#f+d:J+K%L
 $S[ !#,#8#8%.__!. @:M=='.ug%6$6 3&:7r   c           
         |j                  d      }|d   }t        | j                        j                         }|d   d   }t	        |      dkD  rdd|ddd	d
dddddd|iddddd||dgddt        |      |dddgdi}t        d       d}d| dd}t        j                  |||      }	t        d        t        j                  |	j                        }|d!   d"   }|S y )#Nr   r   rY   rZ   	Documentor   )TipoDTEFchEmisr[   zJisparking SpAzMatucana 40Santiago)	RUTEmisorRznSoc	DirOrigen
CmnaOrigenr   zCliente en Sucursal)RUTRecepRznSocRecepMntTotal)IdDocEmisorReceptorTotales1Venta)	NroLinDetIndExeNmbItemQtyItemPrcItem	MontoItemr   39u&   Nota de Crédito para Caja Automática)	NroLinRef	TpoDocRefFolioRefFchRefCodRefRazonRef)
EncabezadoDetalle
Referencial   c/Y-v zDhttps://api.simplefactura.cl/invoiceCreditDebitNotesV2/Casa_Matriz/6rf   rg   rh   rj   iV  r6   r,   )r   r   r   rr   r   rE   r=   rt   ru   rk   loadsr   )
r   r,   r   r/   rY   r   r6   r   rl   r   s
             r   r   z.MachineTicketClass.generate_credit_note_ticket  sO   %%c*
]
#DGG,002^,-BC{a ,.+5&
 .:*:-:.8	' ,8/D)
 !+K('( *-&''.'*'2)4% $ )*(,'*5z%/%&'O' &9$"&DP %&XC (/ug%6$6G
  }}#H %L::hmm,D L)ELr   )r   
   )NNNNNNr   r   )__name__
__module____qualname__r   r   rL   rW   r}   r   r   r   r    r   r   r   r      s=    (7 (\A|}A~6p!1FQ0f>8@Hr   r   )sqlalchemy.ormr   app.backend.db.modelsr   r   r    app.backend.classes.helper_classr   app.backend.classes.file_classr   rt   r	   
sqlalchemyr
   sqlalchemy.dialectsr   !app.backend.classes.setting_classr   ry   r~   r   rk   r   r   r   r   <module>r      s;    " I I 8 4    % :    X Xr   