a
    ;Xh                     @   s.  d dl mZmZmZ d dlmZ d dlmZmZm	Z	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mZ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) d dl*m+Z+ d dl,m-Z- d dl.m/Z/ d dlm0Z0 d dl1m2Z2 d dl3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9 d dl:m;Z;m<Z< d dl=m>Z> d dl?m@Z@ d dlAmAZA d dlBmCZC d dlmDZD d dlEmFZF d dlGmHZH d dl mZ d dl1m2Z2 d dl3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9 d dl:m;Z;m<Z< d dl=m>Z> d dl?m@Z@ d dlAmAZA d dlm0Z0 d dlImJZJ d dlmDZD d dl,m-Z-mKZK d d l(mLZL d d!lMZMd d"l,mKZK d d#lNmOZO eMPeQZRd$d% ZSd&d' ZTd(d) ZUd*d+ ZVd,d- ZWd.d/ ZXd0d1 ZYd2d3 ZZd4d5 Z[d6d7 Z\d8d9 Z]d:d; Z^d<d= Z_d>d? Z`d dlm0Z0 d dl?m@Z@ d dlAmAZA d dl1m2Z2 d d@l3m4Z4m7Z7m5Z5m6Z6m8Z8m9Z9 d dl:m;Z;m<Z< d dl=m>Z> d dlImJZJ d dl mZ d dlm0Z0 d dAl1m2Z2maZa d dl=m>Z> d dl:m;Z;m<Z< d dl3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9 d dBlbmcZc d dl?m@Z@ d dlImJZJ dCdD Zdd dEl mZmZ d dFl m#Z# dGdHlemZmZ dIdJ ZfdKdL Zgd!S )M    )renderredirectget_object_or_404)messages)ProtocoloFormProtocoloSemeaduraFormSetProtocoloSemeaduraFormProtocoloInfoForm)get_user_info)JsonResponse)ClientesModelsEmpresasModels)	Semeadura)EstufaSelecao)Repique)Saidas)ProtocoloSemeadura	ProtocoloProtocoloFinalizadoProtocoloSemeaduraFinalizado)SubqueryOuterRefSumMaxExists)inlineformset_factory)IntegrityError)render_to_string)Decimal)timezone)HttpResponse)letter)SimpleDocTemplateTable
TableStyle	ParagraphSpacerImage)getSampleStyleSheetParagraphStyle)colors)BytesIO)datetime)default_storage)SaidasEspecies)static)settings)r   )staticfiles_storage)r   InvalidOperation)transactionN)r3   )format_currencyc                  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 ]}|jr(|jnd}|jr:|jnd}|| }|dk rttd|j d| d| d|  td|}|dkr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}|	r6|	ndg}	|
rF|
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|d  q| |d!S )"Nsaidas__quantidade_saidassaidasespecies__qtd_especiepk	semeadurar:   quantidade_repicada)total_repiquer<      quantidade_mortalidade)total_mortalidader?   r   )r:   quantidade_selecao__gtquantidade_selecao)total_selecaorB   saidas__data_saidas)total_saidatotal_vendar<   total_mortalidade_estufatotal_quantidade_selecaoultima_data_saidaT)r:   
finalizadolote__especieu1   Diferença negativa encontrada para Semeadura ID z: Quantidade Selecao z, Qtd Especie z, Diferenca z-data_selecaoF)rI   %d/%m/%Y )semeadura_idnumero_mudadata_semeianome_popularespeciesrH   rD   r<   rF   saida_vendasaida_datessaida_quantities	saida_idsrI   estimativa_minimaestimativa_maximaestimativa_mediaqtd_sementes_utilizadarG   total_qtd_especiediferenca_qtd)
semeadurassaidas)/r   objectsannotater   r   r   filterr   valuesr   r   r   r   r   r   select_relatedrG   rE   loggerwarningidmaxorder_byexistsfirstvendar]   append
data_saidastrftimestrquantidade_saidasrI   rN   rO   loteespecierP   rQ   rH   rD   r<   intrF   rV   rW   rY   )r\   r]   r:   rG   rE   r[   selecoesrj   saidas_datasaidas_quantidades
saidas_idssaidas_finalizadosaidas_querysetsaida rz   9/var/www/viveiro_mudafortebrasil/apps/protocolos/views.pyget_lista_saidas_data1   s    -/

$

r|   c              
   C   s  | j jstdS t| j j}t }| jdkrt| j}dd |d D }t	j
j|dd}|jddd	 }tj
j|d
}|D ]t}tj
j|djtddd pd}	t	j
j|ddjtddd pd}
|
|_td|j d|
 d|	 d|j  q~|| | rn|j }|d r&|d jnd |d< |d rB|d jnd |d< dd |d D |d< d|v r|d r|d  |d< || jd< tdS nt }dd |d D }t	j
j|dd}|jddd	 }tj
j|d
}|D ]~}tj
j|djtddd p
d}	t	j
j|ddjtddd p0d}
|
|	 |_td|j d|
 d|	 d|j  q|| |||d |d }t| d!|S )"NindexPOSTc                 S   s   g | ]}|d  qS rM   rz   .0ry   rz   rz   r{   
<listcomp>       z&cadastro_protocolo.<locals>.<listcomp>r]   TZsemeadura_id__inrj   rM   flatZid__inr9   qtd_especierZ   rZ   r   r:   rj   rA   rG   rG   z[DEBUG] Semeadura ID: z, Quantidade Selecao: z, Qtd Especie: z, Diferenca Qtd: cliente_fisicocliente_empresac                 S   s   g | ]
}|j qS rz   re   )r   r:   rz   rz   r{   r      r   r\   data_saida_protocoloprotocolo_datastep4_protocoloc                 S   s   g | ]}|d  qS r   rz   r   rz   rz   r{   r      r   )form	user_infosaidas_infosemeadura_choicesz"protocolos/cadastro_protocolo.html)useris_authenticatedr   r
   re   r|   methodr   r~   r   r^   r`   values_listdistinctr   r   	aggregater   r[   printset_semeadura_choicesis_validcleaned_datacopy	isoformatsessionr   )requestr   r   r   semeadura_idsselecoes_vendasemeadura_ids_vendar   r:   r   rA   r   contextrz   rz   r{   cadastro_protocolo   sT    
"$&




$&
(
r   c                 C   s  | j jstdS t| j j}| jd}|s4tdS d|v r\|d r\t|d d	 |d< |shtdS |
d}tjj|d}t }|d j|d}dd	 |d
 D }|D ]T}tjj|djtddd pd}tjj|ddjtddd pd}	|	| |_q| jdkrlg }
z
t  |D ]N}| jd|j d}| jd|j }|st|
d|j d q&| jd|j d}z,t|}t|}|dks|dk rtW n. ty   |
d|j d Y q&Y n0 tjj|djtddd pd}tjj|djtddd p,d}|| |kr&|
d|jjj d|jjj d|j d |j d!	 q&q&| jd"d#}|
r|
D ]}t !| | qtd$W  d    W S t"|d% |d& |d' |d( |d) |d* |d+ |d, |d- |d. |d/ |d0 |d1 |d2 |d3 |d |d4}|#  |D ]}tjj$||d5 q2|D ]}t| jd|j d}t| jd|j d}|| }tjj%||| jd|j |||| jd6|j d7d8 qNtjjdd9j&d:d9 t '| d; td<W  d    W S 1 s0    Y  W nJ t(yh } z0t)!d=|  t !| d> td$W  Y d }~S d }~0 0 nt*tj+ d?}|||d@}t,| dA|S )BNr}   r   r   r   z%Y-%m-%dr\   r   c                 S   s   i | ]}|d  |d qS )rM   r[   rz   r   rz   rz   r{   
<dictcomp>   r   z#step4_protocolo.<locals>.<dictcomp>r]   r9   r   r   rZ   r   Tr   rA   r   rG   r~   Zqtd_especie_0Z
categoria_u-   Categoria não informada para a semeadura ID .Zvalor_unit_uH   Quantidade de espécie ou valor unitário inválido para a semeadura ID u   A Espécie: z + u   .
Número de Muda: u5   .
Não pode ser maior que a quantidade de seleção ().
observacaorL   r   tipo_clienter   r   num_protocoloreferente_nftipo_pagamento
num_pedidodestino_mudaplaca_veiculoresp_recebimentoinscricao_estadualprodutorrenasem_produtorresp_tecnicorenasem_tecnico)r   cliente_fisico_idcliente_empresa_idr   r   r   r   r   r   r   r   r   r   r   r   r   r   )	protocolorM   Zdata_venda_)	categoriar   
valor_unitvalor_total
data_venda)r   r:   defaults)rj   Fz)Dados adicionais cadastrados com sucesso.lista_de_protocolosErro ao processar o protocolo: :Ocorreu um erro ao processar o protocolo. Tente novamente.)queryset)formsetr\   r   zprotocolos/step4_protocolo.html)-r   r   r   r
   re   r   getr-   strptimedatepopr   r^   r`   r|   r   r   r   r   r[   r   r4   atomicr~   rk   r   r3   rp   rq   rP   rQ   rN   r   errorr   saveget_or_createupdate_or_createupdatesuccess	Exceptionrc   r   noner   )r   r   r   Zsemeaduras_idsr\   rt   Zsaidas_dictr:   r   rA   errorsZqtd_especie_strr   Zvalor_unit_strr   rG   rZ   r   r   r   rM   r   er   r   rz   rz   r{   r      s    
"$
$$
. r   c              
   C   s  | j jstdS tt|d}t| j j}t }ttt	t
ddd}| jdkr || j|d}dd	 |d
 D }tjj|d}|jD ]&}	d|	jv r||	jd _d|	jd _q| rzt  d }
|jD ]}	|	jj}|	jdd}tjj|djtddd pd}t	jj|dj|	jjdjtddd p6d}|| |kr|	dd||  d|j  d |	}
q|
r~t!"| d n,|#  t!$| d tdW  d    W S W d    n1 s0    Y  W nB t%y } z(t&"d|  t!"| d W Y d }~n
d }~0 0 nt!"| d n\||d}dd	 |d
 D }tjj|d}|jD ]*}	d|	jv rP||	jd _d|	jd _qP|jD ]f}	|	jj}|rt	jj|djtddd pd}tjj|djtddd pd}|| |	_ q|||||d}t'| d|S ) Nr}   r   r   T)r   extra
can_deleter~   instancec                 S   s   g | ]}|d  qS r   rz   r   rz   rz   r{   r   o  r   z$editar_protocolo.<locals>.<listcomp>r]   r   r:   r   r9   rA   r   rG   r   rZ      A quantidade de espécie (5   ) não pode ser maior que a quantidade de seleção (r   u>   Erro ao validar o formulário. Verifique os campos destacados.z!Protocolo atualizado com sucesso.r   r   r   uD   Erro ao validar o formulário. Verifique os dados e tente novamente.c                 S   s   g | ]}|d  qS r   rz   r   rz   rz   r{   r     r   )r   r   r   r   r   z protocolos/editar_protocolo.html)(r   r   r   r   r   r
   re   r|   r   r   r   r   r~   r   r^   r`   formsfieldsr   disabledr   r4   r   r   r:   r   r   r   r   r   exclude	add_errorr[   r   r   r   r   r   rc   r   )r   protocolo_idr   r   r   r   r   r   r   r   Zform_with_errorr:   r   rG   rZ   r   rA   r   rz   rz   r{   editar_protocoloa  sr    





$0 <$


$$r   c              
   C   s  | j jstdS tt|d}t| j j}t }dd |d D }tj	j
|dd}|jddd	 }tj	j
|d
jddd	}tj	j
|dj|d}	| jdkrt| j}
|
|	 |
 r|
jdd}||_|
jdd}|j}tj	j
|djtddd pd}tj	j
|djtddd p&d}|| |krzt| d||  d| d|j d tdtd|
|d| ddS z|  tddiW S  t y   tdtd|
|d| dd Y S 0 ntdtd|
|d| ddS n"t }
|
|	 t!| d|
|dS d S ) Nr}   r   c                 S   s   g | ]}|d  qS r   rz   r   rz   rz   r{   r     r   z"adicionar_muda.<locals>.<listcomp>r]   Tr   rM   r   r   r   r~   F)commitr   r   r9   rA   r   rG   r   rZ   r   r   z) para a semeadura ID r   z#protocolos/form_adicionar_muda.htmlr   r   r   r   htmlr   )"r   r   r   r   r   r
   re   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mudas_adicionadasr   r   Z	nova_mudar   r:   rG   rZ   rz   rz   r{   adicionar_muda  s@    


$$&& 
r   c           
   	   C   s  | j jstdS t| j j}tjddjddd}i }|D ]}|j	j}||vr|j	j
dkrf|j	jjn|j	jj}|j	j|j	jd|t|j	dt|dd	||< || d
  |jr|jnd7  < q<tjddjdd}i }|D ]}|j	j}||vr@|j	j
dkr
|j	jjn|j	jj}|j	j|j	jd|t|j	dt|dd	||< || d
  |jrZ|jnd7  < q| | |d}	t| d|	S )Nr}   r   r:   F)Zprotocolo__id__isnullprotocolo__finalizadoFr   r   )numero_protocolodata_criacaoquantidade_mudascliente_nomeZ	info_formZ
mudas_formr   T)r   )grouped_datagrouped_finalizadosr   z#protocolos/lista_de_protocolos.html)r   r   r   r
   re   r   r^   rb   r`   r   r   r   nome_completor   nome_fantasiar   r	   r   r   ra   r   )
r   r   protocolos_semeadurasr   psr   r   !protocolos_finalizados_semeadurasr   r   rz   rz   r{   r     sR     

"
"

$r   c                 C   s   | j jstdS t| j j}tt|d}| jdkrt| j	|d}|
 r\|  tddiS td||d| d	}td
|dS nt|d}t| d||dS d S )Nr}   r   r~   r   r   Tz protocolos/form_editar_info.htmlr   r   Fr   )r   r   r   r
   re   r   r   r   r	   r~   r   r   r   r   r   )r   r   r   r   r   r   rz   rz   r{   editar_info  s    

r   c           	      C   s   | j jstdS t| j j}tt|d}tjj	|d}| j
dkr|D ]N}t| j|d|j d}| rr|  qDt| d|j d t|j qDt| d	 td
S dd |D }|||d}t| d|S )Nr}   r   r   r~   form-r   prefixu+   Erro ao atualizar as informações da muda r   u0   Informações das mudas atualizadas com sucesso.r   c                 S   s    g | ]}t |d |j dqS )r   r   )r   re   r   r   rz   rz   r{   r   B  r   z editar_mudas.<locals>.<listcomp>)	form_listr   r   zprotocolos/editar_mudas.html)r   r   r   r
   re   r   r   r   r^   r`   r   r   r~   r   r   r   r   r   r   r   r   )	r   r   r   r   protocolo_semeadurasr   r   r   r   rz   rz   r{   editar_mudas.  s(    

r   c                 C   s   |dkrVt jj|d}|j|j|j|j|j|j|j	|j
|j|j|j|j|j|jd}n^|dkrtjj|d}|j|j|j|j|j|j|j|j	|j|j|j|j|j|j|jd}ni }t|S )NZfisicor   )nomecpfemailufstatuscidadeendereconumero_casabairrocomplementoceptelefone_celulartelefone_residencialr   empresa)r   cnpjr   razao_socialr  r  r  r  r  r	  r
  r  r  nome_responsavelcontato_responsavel)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   tipo
cliente_idclientedatarz   rz   r{   cliente_infoL  sJ    r  c                 C   sH   | j jstdS t| j j}tj }tj }|||d}t	| d|S )Nr}   )
protocolosr   r   z!protocolos/listar_protocolos.html)
r   r   r   r
   re   r   r^   allr   r   )r   r   r  r   r   rz   rz   r{   listar_protocolosw  s    

r  c                 C   s8   | j jstdS tt|d}|  t| d tdS )Nr}   r   u?   Protocolo excluído com sucesso e os valores foram restaurados.r   )r   r   r   r   r   deleter   r   r   r   r   rz   rz   r{   excluir_protocolo  s    r  c                 C   s>   | j jstdS tt|d}d|_|  t| d tdS )Nr}   r   Tz!Protocolo finalizado com sucesso.r   )	r   r   r   r   r   rI   r   r   r   r  rz   rz   r{   finalizar_protocolo  s    r  c           ;      C   s,  t t|d}tjj|d}|jp$|j}|jr:|jd}nt	
 d}|jdkrZ|jjn|jj}|jdkrt|jjn|jj}|jdkr|jjn|jj}|jdkr|jjn|jj}	|jdkr|jjn|jj}
|jdkr|jjn|jj}|jdkr|jjn|jj}| p
d}|jdkr |jjn|jj}|jp2d}|jp>d}|jpJd}|jpVd}tdd}d| d	|d
< d}t }t|t ||||d}g }|!t"d| t# }d|d _$d|d _%|d &d}d|_$d|_%t'(ddd}t)*d}t+|}d|_,d|_-g d|dt.d| |t.d| |gddt.d|j/ |t.d|gddt.d|dgg}t0ddddd d!t'j1fd"d#dd$t'j2fd%d&d'd(d)d*g}t3||g d+g d,d-}|!| dgg} t0g }!t3| |!d.gd/}"|!|" t.d0| |d t.d1|pd |d t.d2| |d gt.d3|p(d |d t.d4|	p@d |d t.d5|pXd |d gt.d6|
prd |d t.d7|pd |d gg}#t0ddd d!t'j1fdd8g}$t3|#|$g d9d/}%|!|% dgg} t0g }!t3| |!d.gd/}"|!|" t.d:|t.||d ddgg}&t0ddd d!t'j1fd;d#dd|fdd8g}'t3|&|'d<gd/}(|!|( dgg} t3| |!d.gd/}"|!|" t.d=|t.d>|t.d?|t.d@|t.dA|t.dB|t.dC|gg})t4|ddDD ]\}*}+|+j5},t.|* |d t.|,j6j7j8pd|d t.|,j6j7j9p
d|d t.|,j6j:p d|d t.t;|+j<p6d|d t.t=|+j>pNddEdFdG|d t.t=|+j?plddEdFdG|d g}-|)!|- qt@dHdI |D }.t@dJdI |D }/t.dK|dddt.|. |dt.t=|/dEdFdG|g}0|)!|0 t0ddd d!t'j1fd#dd$|fd#dLdMt'jAfdd8dNdOg}1g dP}2t3|)|2dQgtB|) dR}3|3C|1 |!|3 dgg} t3| |!d.gd/}"|!|" t.dS|gt.|jDpd|d gg}4t0ddddd d!t'j1fdTdUg}5t3|4|5dVgd<dWgd-}6|!|6 dX}7tEdYdZdd[}8t.|7|8}9dZ|9_F|!|9 |G| |H }:|I  |J|: |S )\Nr   r   rK   r   rL   application/pdfcontent_type attachment; filename="protocolo_.pdf"Content-Dispositionr   pagesize
leftMarginrightMargin	topMarginbottomMarginr=   	HelveticaNormal   
bold_styleHelvetica-Bold?assets/img/logo-ama-footer.pngF   u$   PROTOCOLO DE SAÍDA E VENDA DE MUDASrL   rL   rL      PROTOCOLO N°: DATA DE SAIDA:    REFERENTE NF N°: DATA DE RECEBIMENTO:ASSINATURA CLIENTE:FONTNAMEr   r   r<  r.  FONTSIZEr:  r;  r,  GRIDr:  r;        ?ALIGNr:  r=   r=   CENTER
BACKGROUNDr<  r   SPANr:  rF  rH  r   r=   )r      rH     rN  rM  rH  rN  rK  rK  rK  VALIGNrP  rQ  TOPrB  rP  rQ  LEFTd   r      rY     r[  r[     style	colWidths
rowHeights
   r^  r`  <b>CLIENTE:</b> z<b>TEL:</b>    <b>PEDIDO COMPRA N°:</b>    <b>INSCRIÇÃO ESTADUAL:</b> z<b>CPF/CNPJ:</b> z<b>CIDADE:</b> u   <b>ENDEREÇO:</b> z<b>CEP:</b> rS  r:  r;  MIDDLE)   rh  rh  DESTINO MUDAS:rH  r=   r   )rK  r   rh     N°Nome cientifico:Nome vulgar:	   N° lote:   Quant. p/ espécie:
Valor uni:Total:startZBRLpt_BR)localec                 s   s   | ]}|j V  qd S Nr   r   rz   rz   r{   	<genexpr>)  r   z protocolo_pdf.<locals>.<genexpr>c                 s   s   | ]}|j V  qd S rw  r   r   rz   rz   r{   ry  *  r   TOTAL DE MUDAS E VALORESrJ  r<  rB  r:  r;  rD  rH  r   r<  )rN  r<        r  r1  2   <   r1     r_  r`     OBSERVAÇÃO:rB  r:  r;  rV  rS  r:  r;  rT  S  r    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.
Observacao   namespaceBeforefontSize)Kr   r   r   r^   r`   r   re   r   rm   r-   nowr   r   r   r   r   r  r   r  r  r  r
  r  get_tipo_pagamento_displayr  r   r   r   r   r!   r,   r#   r"   rk   r'   r)   fontNamer  cloner+   Colorr2   pathr(   
drawHeight	drawWidthr&   r   r%   grey	lightgreyr$   	enumerater:   rp   rq   rQ   rP   numero_lotern   r   r5   r   r   sumwhitelensetStyler   r*   _leadingbuildgetvalueclosewrite;r   r   r   r   r   data_emissaor   Zcliente_telZ
cliente_ieZcliente_cnpj_cpfZcliente_enderecoZcliente_cepZcliente_cidader   Zcliente_emailr   r   r   r   responsemargem_totalbufferdocelementsstylesr-  	lightgrayimagem_pathimagemr  r^  tabela
separatorsseparatorsstylesepdata1style1table1data2style2table2data4r}   r   r:   row_datatotal_mudastotal_valorsoma_total_rowstyle4
col_widthstable4Zobservacao_dataZobservacao_styleZobservacao_tabler   paragrafo_observacao_styleparagrafo_observacaopdfrz   rz   r{   protocolo_pdf  s0   




"

>J2




	

	








r  c           ;      C   sz  t t|d}tjj|d}|jp$|j}|jr:|jd}nt	
 d}|jdkrZ|jjn|jj}|jdkrt|jjn|jj}|jdkr|jjn|jj}|jdkr|jjn|jj}	|jdkr|jjn|jj}
|jdkr|jjn|jj}|jdkr|jjn|jj}| p
d}|jdkr |jjn|jj}|jp2d}|jp>d}|jpJd}|jpVd}tdd}d| d	|d
< d}t }t|t ||||d}g }|!t"d| t# }d|d _$d|d _%|d &d}d|_$d|_%t'(ddd}t)*d}t+|}d|_,d|_-g d|dt.d| |t.d| |gddt.d|j/ |t.d|gddt.d|dgg}t0ddddd d!t'j1fd"d#dd$t'j2fd%d&d'd(d)d*g}t3||g d+g d,d-}|!| dgg} t0g }!t3| |!d.gd/}"|!|" t.d0| |d t.d1|pd |d t.d2| |d gg}#t0ddd d!t'j1fdd3g}$t3|#|$d4gd/}%|!|% dgg} t0g }!t3| |!d.gd/}"|!|" t.d5|t.||d ddgg}&t0ddd d!t'j1fd6d#dd|fdd3g}'t3|&|'d4gd/}(|!|( dgg} t3| |!d.gd/}"|!|" t.d7|t.d8|t.d9|t.d:|t.d;|t.d<|t.d=|gg})t4|dd>D ]\}*}+|+j5},t.|* |d t.|,j6j7j8ptd|d t.|,j6j7j9pd|d t.|,j6j:pd|d t.t;|+j<pd|d t.d?|d t.d?|d g}-|)!|- qHt=d@dA |D }.t=dBdA |D }/t.dC|dddt.|. |dd?g}0|)!|0 t0ddd d!t'j1fd#dd$|fd#dDdEt'j>fdd3dFdGg}1g dH}2t3|)|2dIgt?|) dJ}3|3@|1 |!|3 dgg} t3| |!d.gd/}"|!|" t.dK|gt.|jApd|d gg}4t0ddddd d!t'j1fdLdMg}5t3|4|5dNgd4dOgd-}6|!|6 dP}7tBdQdRddS}8t.|7|8}9dR|9_C|!|9 |D| |E }:|F  |G|: |S )TNr   r   rK   r   rL   r  r  r!  r"  r#  r   r$  r=   r*  r+  r,  r-  r.  r/  r0  r1  r2  r3  r4  r5  r6  r7  r8  r=  r?  r:  r;  r@  rA  rE  rF  rG  rI  rL  rO  rR  rU  rW  rZ  r]  ra  rb  rc  re  rd  rf  rh  ri  rj  rl  rm  rn  ro  rp  rq  rr  rs  z***c                 s   s   | ]}|j V  qd S rw  rx  r   rz   rz   r{   ry    r   z.protocolo_pdf_sem_monetario.<locals>.<genexpr>c                 s   s   | ]}|j V  qd S rw  rz  r   rz   rz   r{   ry    r   r{  rJ  r|  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  )Hr   r   r   r^   r`   r   re   r   rm   r-   r  r   r   r   r   r   r  r   r  r  r  r
  r  r  r  r   r   r   r   r!   r,   r#   r"   rk   r'   r)   r  r  r  r+   r  r2   r  r(   r  r  r&   r   r%   r  r  r$   r  r:   rp   rq   rQ   rP   r  rn   r   r  r  r  r  r   r*   r  r  r  r  r  r  rz   rz   r{   protocolo_pdf_sem_monetarioc  s,   




"

>




	

	








r  )r#   r&   r$   r%   r'   r(   )r"   	landscape)inchc           (      C   s  t t|d}tjj|d}|jp"d}|jd}d}d}d}d}	td	d
}
d| d|
d< d}t	 }t
|tt||||d}g }t }|d d}d|_tddd}dgg dt||d t||d t||d gg dt||d t|	|d dgg}tdddddtjfddddtjfddddtjfdd d!dtjfd"d#d$tjfd%dd#d$d&tjfd'd(g
}g d)}t|||d*}|| |td+d, g d-g}g }d.}t|d+d/D ]\}}|j}|jpd.}||7 }t|jjjpd|d t|jjjpd|d t|j pd|d t|jj!p"d|d tt"||d g}|| qdddd0tt"||d g}|| g d1}td2d#ddtjfd"d#d$|fd3d4g} t|| |d5}!|!#|  ||! |td+d d6}"t$d7d8d9}#t|"|#}$||$ |td+d, d:d;gd<dgg}%t|%d=d=gd5}&|&#td>d3d?d@d#d#dtjfd@dAdAdtjfd@ddBdtjfdCd#d#dtjfdd#ddtjfdDg	 ||& |%| |& }'|'  |
(|' |
S )ENr   r   rL   rK   zAMA VIVEIRO DE MUDAS LTDAzBA-02274/2020zEDSON OLIVEIRA FELIPEzBA-2005/2018r  r  z)attachment; filename="termo_conformidade_r"  r#  ra  r$  r+  r-  r.  r/  z'TERMO DE CONFORMIDADE DE MUDA FLORESTAL)z	Produtor:   RENASEM n°:u   Número/Ano/NF:)u   Responsável Técnico:r  rL   r8  BOXrJ  r;  r@  	INNERGRID)r}  r<  )r   rN  )r  )r<  r=   )r<     rE  r:  rF  rG  g      ?)rB  r:  rF  rD  )rS  r:  rF  rg  )  r     )r_  r^  r=      )u   Nome científicoz
Nome comum	CategoriaZLotezQuantidade de mudas (unidades)r   rs  ZTotal)   r  x   r     r?  rf  )r9  r  r;  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[  )r  r  zLocal e Datau#   Assinatura do Responsável Técnicoz!Assinatura do Recebimento Clienteiy  r  )rH  rJ  rC  	LINEBELOWrk  rC  	LINEAFTER)BOTTOMPADDINGr:  r;  r\  ))r   r   r   r^   r`   r   r   rm   r!   r,   r#   r  r"   r)   r  r  r+   r  r&   r%   r  r  r$   rk   r'   r  r:   r   rp   rq   rQ   rP   r   r  rn   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table_styler_  tableZspecies_table_headerZspecies_datar  r}   r   r:   r   r  Z	total_rowZspecies_col_widthsZspecies_table_styleZspecies_tabler   r  r  Zsignature_table_dataZsignature_tabler  rz   rz   r{   termo_conformidade_pdf5  s    

&	









r  )r   r   )r   r=   )r   r   c           
      C   s   t | jj}tj }| jd}d }d }|rtt|d}t	jj
|d}|jtddd p^d}|jtddd pvd}|j|jd	kr|jjn|jj|||d
}||||d}	t| d|	S )Nr   r   r   r   totalr  r   r   r   )r   r   r  r  r\   )r  protocolo_selecionadodados_relatorior   z$protocolos/relatorio_protocolos.html)r
   r   re   r   r^   r  GETr   r   r   r`   r   r   r   r   r   r   r   r   r   )
r   r   r  r   r  r  r\   r  r  r   rz   rz   r{   relatorio_protocolos  s,    
	r  c                 C   sd   t t|d}tjj|d}|jtddd p0d}|jtddd pHd}||||d}t| d	|S )
Nr   r   r   r  r  r   r   )r   r\   r  r  z-protocolos/relatorio_protocolo_detalhado.html)r   r   r   r^   r`   r   r   r   )r   r   r   r\   r  r  r   rz   rz   r{   relatorio_protocolo_detalhado  s    r  )hdjango.shortcutsr   r   r   django.contribr   Zapps.protocolos.formsr   r   r   r	   apps.dashboard.utilsr
   django.httpr   Zapps.clientes.modelsr   r   apps.lotes.modelsr   apps.estufa.modelsr   r   apps.repique.modelsr   Zapps.saidas.modelsr   Zapps.protocolos.modelsr   r   r   r   django.db.modelsr   r   r   r   r   Zdjango.formsr   	django.dbr   django.template.loaderr   decimalr   django.utilsr    r!   reportlab.lib.pagesizesr"   reportlab.platypusr#   r$   r%   r&   r'   r(   reportlab.lib.stylesr)   r*   reportlab.libr+   ior,   r-   django.core.files.storager.   r/   django.templatetags.staticr0   django.confr1   "django.contrib.staticfiles.storager2   r3   r4   loggingZbabel.numbersr5   	getLogger__name__rc   r|   r   r   r   r   r   r   r   r  r  r  r  r  r  r  reportlab.lib.unitsr  r  modelsr  r  rz   rz   rz   r{   <module>   s     
o> S.8+ @ ?   '