a
    ;Xh+                     @   st  d dl mZ d dlmZ d dlmZmZmZmZm	Z	 d dl
mZ d dlmZmZmZ d dl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mZmZmZ d dlmZmZmZmZmZ d dlmZ 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mZmZ d dl"m#Z# d dl$m%Z% d dlmZ d dlmZmZ d dl&m'Z' d dl(Z(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/m0Z0 d dl1m2Z2m3Z3m4Z4 d dl5m6Z6m7Z7m8Z8 d dl9m:Z:m;Z; d d l<m=Z=m>Z> d d!l?m@Z@ d d"lAmBZB d d#lmZmZ d d$lmCZC d d%lmZmZmZmZ d d&lDmEZE d d'lFmFZF d d(lGmHZH d d)lmIZI d d*lJmKZK d d+lLmMZMmNZNmOZOmPZP d d,l m*Z* d d-lQmRZR d d.lmSZS d/d0 ZTd1d2 ZUd3d4 ZVeRd5d6 ZWd7d8 ZXd9d: ZYd;d< ZZd=d> Z[d?d@ Z\dAdB Z]dCdD Z^dEdF Z_dGdH Z`dIdJ ZadKdL ZbdMdN ZceHdOdP ZddQdR ZedSdT ZfdUdV ZgdWdX ZhdYdZ ZidS )[    )render_to_string)HttpResponseBadRequest)SimpleDocTemplateTable
TableStyle	ParagraphSpacer)mm)r   r   r   )getSampleStyleSheetParagraphStyle)HttpResponse)canvas)defaultdict)HttpResponseRedirect)reverse)r   r   r   r   )SubqueryOuterRefSumMaxExists)staticfiles_storage)r   r   r   r   r   Image)get_object_or_404)r   r   r   )colors)BytesIO)r
   )r   r   )letterN)render)r   redirectr   )get_user_info)messages)	Semeadura)
SaidasFormCadastrarProtocoloSaidasEspeciesForm)SaidasCadastroSaidaSaidasEspecies)EstufaSelecao)EmpresasModelsClientesModels)Aclimatacao)Repique)r   r   )JsonResponse)r   r   r   r   )	mark_safe)datetime)csrf_exempt)HttpResponseNotFound)Decimal)ProtocoloSemeadura	ProtocoloProtocoloFinalizadoProtocoloSemeaduraFinalizado)r   )require_POST)Qc                  C   s  t jjtdtdttjjtdddjtdddd d	 tt	jjtdddjtd
ddd d	 tt
jjtddddjtdddd d	 tddtt
jjtdddttjjtddd ttjjtddd d} g }| D ]}tjj|djtddd p<d}t
jj|djtddd p`d}|| |_|jdkrt
jj|dd}|D ]}d|_|  qqt
jj|dd}| r| jnd}g }g }	g }
g }|jjdd}|D ]@}||jd  |	t|j |
|j ||j q|r@|nd!g}|	rP|	nd!g}	|
r`|
nd!g}
||j|j |j!|j"j#j$|j"j#j%|j&|j'|j(d urt)|j(nd|j*|||	|
||j"j+|j"j,|j"j+|j-|j.|j/|jd" q| |d#S )$Nsaidas__quantidade_saidassaidasespecies__qtd_especiepk	semeadurar=   quantidade_repicadatotal_repiquer@      quantidade_mortalidadetotal_mortalidaderD   r   r=   quantidade_selecao__gtquantidade_selecaototal_selecaorI   saidas__data_saidastotal_saidatotal_vendar@   total_mortalidade_estufatotal_quantidade_selecaoultima_data_saidaTr=   
finalizadolote__especieqtd_especietotal_qtd_especierV   )rO   rO   )r=   vendaF-data_selecaorR   %d/%m/%Y )semeadura_idnumero_mudadata_semeianome_popularespeciesrP   rL   r@   rN   saida_vendasaida_datessaida_quantities	saida_idsrR   estimativa_minimaestimativa_maximaestimativa_mediaqtd_sementes_utilizadarO   rV   diferenca_qtd
semeadurassaidas)0r    objectsannotater   r   r,   filterr   valuesr'   r(   r   r   r$   r6   select_relatedr3   	aggregateri   rW   saveorder_byexistsfirstrl   append
data_saidastrftimestrquantidade_saidasidrR   r]   r^   loteespecier_   r`   rP   rL   r@   intrN   re   rf   rh   rO   rM   )rk   rl   r=   rT   rG   selecoesselecaorW   saidas_datasaidas_quantidades
saidas_idsZsaidas_finalizadosaidas_querysetsaida r   5/var/www/viveiro_mudafortebrasil/apps/saidas/views.pyget_lista_saidas_data2   s    -/
$$
r   c                  C   sJ  t jjtdtdttjjtdddjtdddd d	 tt	jjtdddjtd
ddd d	 tt
jjtddddjtdddd d	 tddd} g }| D ]r}t
jj|dd}| r| jnd}tjj|djtddd pd}g }g }g }d}	|j }
|
D ]@}||jd |t|j ||j |jr<d}	q<tjj|dd rd}	|r|ndg}|r|ndg}|r|ndg}||j|j|j|jj j!|jj j"|j#|j$|j%d urt&|j%nd|j'|||||	|jj(|jj)|jj(|j*|j+|j,|d q| |dS ) Nr9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   r   rE   rG   rH   rI   rJ   rK   rS   rX   FrT   rU   rV   rZ   TrQ   r[   )r\   r]   r^   r_   r`   rP   rL   r@   rN   ra   rb   rc   rd   rR   re   rf   rg   rh   rO   rV   rT   rj   )-r    rm   rn   r   r   r,   ro   r   rp   r'   r(   r   rq   rt   ru   rv   rW   r3   rr   rl   allrw   rx   ry   rz   r{   r|   rR   r6   r]   r^   r}   r~   r_   r`   rP   rL   r@   r   rN   re   rf   rh   rO   rM   )rk   rl   r=   r   rW   rT   r   r   r   rR   r   r   r   r   r   get_lista_saidas_completa_data   s    
$

r   c                 C   s^   t jj|d}|stdS tjj|dd }|r:tdS |D ]}|j |_|  q>tdS )Nr\   lista_saidasT)r\   rR   )r(   rm   ro   r   r6   ru   rW   rs   )requestr\   r   Zsemeadura_finalizadar   r   r   r   marcar_venda   s    

r   c                 C   s"   t jjdd}|jdd tdS )NT)rW   Fr   )r(   rm   ro   updater   )r   Zselecoes_vendar   r   r   desmarcar_venda
  s    r   c                 C   sp   t j }g }|D ]P}||j|j|j|j|j|j	|j
|j|j|j|j|j|j|j|j|jd qtd|iS )N)
empresa_idcnpjinscricao_estadualrazao_socialnome_fantasiaemailufcidadeenderecobairrocomplementoceptelefone_celulartelefone_residencialnome_responsavelcontato_responsavelempresas)r)   rm   r   rw   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r-   )r   r   empresas_dataempresar   r   r   get_lista_empresas  s,    

r   c                 C   s`   t j }g }|D ]@}||j|j|j|j|j|j	|j
|j|j|j|j|jd qtd|iS )N)
cliente_idnomecpfr   r   r   r   r   r   r   r   r   clientes)r*   rm   r   rw   r|   nome_completor   r   r   r   r   r   r   r   r   r   r-   )r   r   clientes_dataclienter   r   r   get_lista_clientes0  s$    

r   c                 C   s6   | j jstdS t| j j}t }||d< t| d|S )Nindex	user_infozsaidas/lista_saidas.html)useris_authenticatedr   r   r|   r   r   )r   r   lista_saidas_datar   r   r   r   H  s    r   c                 C   s6   | j jstdS t| j j}t }||d< t| d|S )Nr   r   z!saidas/lista_saidas_completa.html)r   r   r   r   r|   r   r   )r   r   Zlista_saidas_completa_datar   r   r   lista_saidas_completaS  s    r   c                 C   st   t t|d}| jdkr\t| j}| rb|jdd}||_|  t	| t
d tdS nt }t| d||dS )	Nr;   POSTF)commituk   <i class="fa-solid fa-circle-check"></i><strong class="mx-1">Sucesso!</strong> Saida registrada com êxito.r   zsaidas.html)formr=   )r   r    methodr!   r   is_validrs   r=   r   successr.   r   r   )r   r\   r=   r   rl   r   r   r   rl   ^  s    


rl   c              
   C   s   | j dkr| jddkrzNtjj|d}|rTt| td |  t	ddiW S t	ddid	d
W S W n> t
y } z&t	ddt| idd
W  Y d }~S d }~0 0 t	ddidd
S )Nr   zx-requested-withXMLHttpRequestr   ui   <i class="fa-solid fa-circle-check"></i><strong class="mx-1">Sucesso!</strong> Saida excluida com êxito.messageu   Saídas excluído com sucesso.u   Saídas não encontrado.i  statusu   Erro ao excluir Saídas:   uE   Método de solicitação inválido ou não é uma solicitação AJAX.i  )r   headersgetr$   rm   r   r   r.   deleter-   	Exceptionrz   )r   	saidas_idrl   er   r   r   excluir_saidasp  s    0r   c                 C   s2   t jj|d}|jdd t| td tdS )Nr   TrY   uk   <i class="fa-solid fa-circle-check"></i><strong class="mx-1">Sucesso!</strong> Saida finalizada com êxito.r   )r$   rm   ro   r   r   r   r.   r   )r   r\   rl   r   r   r   finalizar_saidas  s    r   c                 C   s   t t|d}t j}tj d }| d| }t|| jd |j	|j
|j|j|j|j|j|j| jd | jd | jd | jd | jd	 | jd
 | jd | jd | jd d}|  |jS )Nr   rA   /referente_nftipo_pagamentonumero_pedidodestino_mudasplacaresponsavel_recebimentoprodutorrenasem_produtorresponsavel_tecnicorenasem_tecnico)numero_protocolor   r   endr   r   telcpf_cnpjr   r   r   r   r   r   r   r   r   r   r   )r   r)   r/   nowyearr%   rm   countcleaned_datar   r   r   r   r   r   r   r   rs   r|   )r   r   r   	ano_atualproximo_numero_protocolonumero_protocolo_com_anonovo_protocolor   r   r   salvar_protocolo_empresa  s6    
r   c                 C   s   t t|d}t j}tj d }| d| }t|| jd |j	|j
|j|j|j|j|j| jd | jd | jd | jd | jd	 | jd
 | jd | jd | jd d}|  |jS )Nr   rA   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r*   r/   r   r   r%   rm   r   r   r   r   r   r   r   r   r   rs   r|   )r   r   r   r   r   r   r   r   r   r   salvar_protocolo_cliente  s4    
r   c                 C   sB  | j jstdS | jdkrvt| j}| r||jd }|dkrPt||jd }nt	||jd }t
tdd|idS nt }t| }|jd	}t|d
g }t| }|jd	}t|dg }	t }
tjdd}tdd }|D ]}|jj}|| s|||< qt| }t| j j|||	|d|
}t| d|S )Nr   r   tipo_escolhidor   r   itens_protocoloprotocolo_id)kwargszutf-8r   r   cadastrosaidar|   c                   S   s   d S Nr   r   r   r   r   <lambda>      zprotocolo.<locals>.<lambda>)r   r   r   r   ultimos_registroszsaidas/protocolo.html) r   r   r   r   r"   r   r   r   r   r   r   r   r   contentdecodejsonloadsr   r   r   r&   rm   rq   rt   r   r   r   listrp   r   r|   r   )r   r   r   r   Zempresas_responseZempresas_contentr   Zclientes_responseZclientes_contentr   r   saidas_especiesultimos_registros_por_protocolosaida_especier   r   contextr   r   r   	protocolo  sT    







r   c                 C   sH   | j jstdS t }dd |d D }t| j j||d}t| d|S )Nr   c                 S   s   g | ]}|d  r|qS )ra   r   ).0r   r   r   r   
<listcomp>  r   z#itens_protocolo.<locals>.<listcomp>rl   )r   r   rl   zsaidas/itens_protocolo.html)r   r   r   r   r   r|   r   )r   r   r   Zsaidas_filtradasr   r   r   r   r     s    
r   c           
      C   s   | j jstdS t }tjd}tdd }|D ]}|jj	}|| s2|||< q2tj
djtdd }dd	 |D }|
 D ]0}|jj	}t|d
||d t|d|jj qt|
 }t| j j|d|}	t| d|	S )Nr   r   c                   S   s   d S r   r   r   r   r   r   r   &  r   z"lista_protocolos.<locals>.<lambda>cadastrosaida__numero_protocolorT   rU   c                 S   s   i | ]}|d  |d qS )r   rV   r   )r   itemr   r   r   
<dictcomp>0  r   z$lista_protocolos.<locals>.<dictcomp>rV   r   cadastrosaida_id)r   r   zsaidas/lista_protocolos.html)r   r   r   r   r&   rm   rq   r   r   r   rp   rn   r   rt   setattrr   r|   r   r   r   )
r   r   r   r   r   r   Ztotal_qtd_especie_por_protocoloZtotal_qtd_dictr   r   r   r   r   lista_protocolos  s,    

r   c                 C   s0  | j dkrzt| jd}td| tt|d}t }|D ]n}|d}|r@|	| t
jj|d tjj|||d |d |d |d	 |d
 |d |d d	 td| q@|D ]}t| qt| d tddiW S  ty } z(td| tdddddW  Y d }~S d }~0 0 tdddddS )Nr   dadoszDados recebidos:r|   r\   numero_loter_   nome_cientificorT   	valor_univalor_total	categoria)	r   r\   r   r_   r   rT   r   r  r  zDados salvos:zDados salvos com sucesso!redirect_urlz/lista_protocolos/z!Erro ao salvar no banco de dados:z Erro ao salvar no banco de dadoserror)r   r   r   r   u   Método não permitidoi  )r   r   r   r   r   printr   r%   setaddr    rm   r&   createalterar_status_vendar   r   r-   r   )r   r   datar   Zsemeadura_idsrowr\   r   r   r   r   salvar_tabelaE  s>    




(r  c                 C   s,   t jj| dd}|D ]}d|_|  qd S )NT)r\   rW   F)r(   rm   ro   rW   rs   )r\   r   r   r   r   r   r	  o  s    r	  c                 C   s   t  }tjj|d}| jjs$tdS t| jj}| j	dkrztjj
|d}W n tjyh   td Y S 0 t| j|d}| r|  tdS nt }t| d||d|d	|iS )
N)r   r   r   u   Objeto não encontradoinstancer   zsaidas/editar_tabela.html)r   itens_listar   )r   r&   rm   ro   r   r   r   r   r|   r   r   DoesNotExistr1   r#   r   r   rs   r   )r   r   fullr  r   r   r   r   r   r   editar_tabelaw  s     

r  c                 C   sx   t t|d}| jjstdS t| jj}| jdkrZt| j	|d}|
 rd|  tdS n
t|d}t| d|||dS )Nr   r   r   r  r   z saidas/editar_dados_cliente.html)r   dados_clienter   )r   r%   r   r   r   r   r|   r   r"   r   r   rs   r   )r   r   r  r   r   r   r   r   editar_dados_cliente  s    


r  c           5      C   s  | j dkr| jd}tjdj|d}tdd}d| d|d	< t	 
d
}d}t }t|t||||d}g }|td| t }	d|	d _tddd}
td}t|}d|_d|_dg|dtdt| |	d gddtdt  d|  |	d gg}tdddddtjfdddd|
fdd d |
fd!d"d#g}t||d$}|| |r^|d% jnd }|rjt|d&r|j rd'|j  }n$t|d(r|j!rd'|j! }nd}t||	d td)|j" |	d gtd*|j# |	d td+|j$ |	d gtd,|j% |	d td-|j& |	d gtd.|j' |	d td/|j( |	d gtd0|j) |	d td1|j* |	d gg}ng }tddddtjfd#g}t||d$}|| dgg}tg }t||d$}|| |r|d% jnd }|rtd2|	d td|j+ |	d ddgg}ng }tddddtjfd3ddd|
fd#g}t||d$}|| |rT|d% jnd }|rtd4|	d td|j, |	d dtd5|	d ddtd|j- |	d ddddgg}ng }tddddtjfddd6|
fdd7d8|
fd9d:d;d#g}t||d$}|| dgg}tg }t||d$}|| g d<g}d%}d%} t.|dd=D ]\}!}"d>|! d?|"j/ |"j0 |"j1 |"j2 d@t3|"j45dAdBdCd@t3|"j65dAdBdCg}#||# |"j65dAdB}$|t3|$7 }|"j2d ur|"j2t7dDkr| t8|"j27 } t9dEddF}%q@dGdddd>|  d?ddH|dId?g}&||& tddddtjfddd|
fddJdKtj:fd#ddLg}'g dM}(dNgt;| })g }*|D ]R}+g },|+D ]8}-t<|-tr|-= r|,t|-|% n
|,|- q|*|, qzt|*|(|)|'dO}.||. dP}/t9dQdRdS}0t|/|0}1|1>|dTd dU|1_?d}2t9dVdddW}%ttdX|	d gtdY|%ggdZg|2dUgd[d\d]}3||1 ||3 |@| |A }4|B  |C|4 |S t S d S )^Nr   r   r   r   application/pdfcontent_type attachment; filename="protocolo_.pdf"Content-DispositionrZ   
   pagesize
leftMarginrightMargin	topMarginbottomMarginrA   	HelveticaNormal?assets/img/logo-ama-footer.pngd   u$   PROTOCOLO DE SAÍDA E VENDA DE MUDASr[   u   <b>PROTOCOLO N°: </b> u   <b>REFERENTE NF N°: </b> u$   <br/><br/><b>DATA DE EMISSÃO: </b> FONTNAMEr   r   r,  zHelvetica-BoldGRIDr*  r+        ?ALIGNr*  r+  CENTER
BACKGROUNDr,  r   )   rA   SPANr*  r3  )r6  r   rA   )rA   r4  VALIGNr*  r+  MIDDLEstyler   r   z<b>CLIENTE: </b>r   z<b>TEL: </b>u   <b>INSCRIÇÃO ESTADUAL: </b>z<b>CPF/CNPJ: </b>u   <b>ENDEREÇO: </b>z<b>CEP: </b>z<b>CIDADE: </b>z<b>TIPO PAGT: </b>z<b>E-MAIL: </b>u   <b>PEDIDO COMPRA N°: </b>z<b>DESTINO MUDAS: </b>)r6  rA   r      r   z<b>PLACA: </b>u!   <b>RESPONSÁVEL RECEBIMENTO: </b>r   r,  r>  )r?  r,  )r6  r=  r4  r   )r6  r>  )   r   )r6  )   r   )r  r   )
   <b>N°</b><b>Nome cientifico:</b><b>Nome vulgar:</b>   <b>N° lote:</b>   <b>Quant. p/ espécie:</b>z<b>Valor uni:</b>z<b>Total:</b>start<b></b>zR$ ,.z.2f0MyCellTextStyle	alignmentzTOTAL DE MUDAS E VALORESz<b>R$z>10.2fr7  r,  )r6  r@  )r4  r,  )      r'  P   F   <   Z   #   	colWidths
rowHeightsr<  u  Obs: O prazo máximo para a restituição das caixas pertencentes ao viveiro AMA é de sete dias. Os materiais pertencentes ao viveiro devem ser conservados e devolvidos na exata quantidade enviada, sendo de responsabilidade do cliente assegurar a integralidade deste processo. Na ausência da devolução, será aplicada uma taxa de R$ 70,00 por cada unidade de caixa não restituída.
Observacao2   namespaceBeforer      	TableCellrb  rR  fontSize<x___________________________________________________________zASSINATURA CLIENTE^  r1  r:  r]  r^  hAlignvAlign)Dr   r   r   r&   rm   rq   ro   r   r/   r   ry   r   r   r   rw   r   r
   fontNamer   Colorr   pathr   
drawHeight	drawWidthr   rz   r   greyr   r   hasattrr   r   r   r   r   r   r   r   r   r   r   r   r   r   	enumerater   r_   r   rT   floatr   replacer  r2   r   r   whitelen
isinstancestripwrapOn_leadingbuildgetvalueclosewrite)5r   r   r   responsedata_emissaomargem_totalbufferdocelementsstyles	lightgrayimagem_pathimagemr
  r<  tabelacadastro_saidaZtexto_clientedata1style1Ztable1
separatorsseparatorsstylesepdata2style2table2data3style3table3data4
soma_totalsoma_total_qtd_especier   r   row_datar  
cell_styleZsoma_total_rowstyle4
col_widthsrow_heights
table_datar  formatted_rowcelltable4
observacaoparagrafo_observacao_styleparagrafo_observacaoaltura_linha_clientelinha_assinatura_clientepdfr   r   r   	gerar_pdf  s   







 



















r  c           4   
   C   s  | j dkr| jd}tjdj|d}tdd}d| d|d	< t	 
d
}d}t }t|t||||d}g }|td| t }	d|	d _tddd}
td}t|}d|_d|_dg|dtd|	d gg}tdddddtjfdddd|
fddd g}t||d!}|| dgg}tg }t||d!}|| |rR|d" jnd }|rtd#|	d dtd|j |	d ddd$td|j |	d gg}ng }tddddtjfd%d&ddd|
fd g}t||d!}|| td'|	d dtd|j  |	d ddd$td|j! |	d gg}tddddtjfd%d&ddd|
fd g}t||d!}|| dgg}tg }t||d!}|| g d(g}d"}d"}t"|dd)D ]\}}d*| d+|j# |j$ |j% |j& |j' g} ||  |j()d,d-}!|t*|!7 }|j'd ur|j't+d.kr|t,|j'7 }t-d/dd0}"qtddddtjfddd|
fdd1d2tj.fd dg}#g d3}$d4gt/| }%g }&|D ]R}'g }(|'D ]8})t0|)t1r|)2 r|(t|)|" n
|(|) q|&|( qzt|&|$|%|#d5}*||* d6}+t-d7d8d9},t|+|,}-|-3|d:d d;|-_4d<}.d8}/t-d=ddd>}"ttd?|	d gtd|"ggd:g|/d@gdAddB}0ttdC|	d gtd|"ggd:g|/d@gdAddB}1ttdD|	d gtdE|"ggdFg|.d;gdGdHdB}2||- ||0 ||1 ||2 |5| |6 }3|7  |8|3 |S t S d S )INr   r   r   r  r  r  r  r  r  rZ   r  r  rA   r#  r$  r%  r&  r'  z'TERMO DE CONFORMIDADE DE MUDA FLORESTALr[   u   <b>N° TERMO/ NF/ANO:</b>r(  r-  r*  r+  r.  r/  r2  r3  r5  )r6  r7  )rA   rA   r8  r;  r   z<b>PRODUTOR:</b>u   RENASEM N°:)r6  r*  r=  )r6  rA  )   r   u   <b>RESPONSÁVEL TÉCNICO:</b>)rD  rE  rF  z<b>Categoria:</b>rG  rH  rI  rK  rL  rM  rN  rO  rP  rQ  r7  rS  )rU     r  rW  U   A   r[  r\  u   Atesto que as mudas das espécies florestais foram produzidas de acordo com as normas e padrões estabelecidos pelo Ministério da Agricultura, Pecuária e Abastecimento, pelos quais assumo a responsabilidade pela identidade e qualidade.r_  r`  ra  r   rd  rX  re  rf  zJLocal e data:_____________________________________________________________rB  LEFTrj  uO   Assinatura responsável Técnico:______________________________________________rh  zAssinatura recebimento clienteri  r1  r:  )9r   r   r   r&   rm   rq   ro   r   r/   r   ry   r   r   r   rw   r   r
   rm  r   rn  r   ro  r   rp  rq  r   r   rr  r   r   r   r   r   r   rt  r   r_   r  r   rT   r  rv  ru  r2   r   r   rw  rx  ry  rz   rz  r{  r|  r}  r~  r  r  )4r   r   r   r  r  r  r  r  r  r  r  r  r  r
  r<  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  Zaltura_linha_cliente2Z"linha_assinatura_cliente_localdataZ#linha_assinatura_cliente_tecnicoassr  r  r   r   r   gerar_pdf_termo_conformidade  sj   





&

&

















r  )jdjango.template.loaderr   django.httpr   reportlab.platypusr   r   r   r   r   reportlab.lib.unitsr	   reportlab.lib.stylesr
   r   r   reportlab.pdfgenr   collectionsr   r   django.urlsr   django.db.modelsr   r   r   r   r   "django.contrib.staticfiles.storager   r   django.shortcutsr   reportlab.libr   ior   reportlab.lib.pagesizesr   r   r   r   apps.dashboard.utilsr   django.contribr   apps.lotes.modelsr    Zapps.saidas.formsr!   r"   r#   Zapps.saidas.modelsr$   r%   r&   apps.estufa.modelsr'   r(   Zapps.clientes.modelsr)   r*   Zapps.aclimatacao.modelsr+   apps.repique.modelsr,   r-   django.utils.safestringr.   r/   django.views.decorators.csrfr0   r1   decimalr2   Zapps.protocolos.modelsr3   r4   r5   r6   django.views.decorators.httpr7   r8   r   r   r   r   r   r   r   r   rl   r   r   r   r   r   r   r   r  r	  r  r  r  r  r   r   r   r   <module>   s    nV
	 ='
)"  `