
    dyhrU                        d dl mZ d dlmZ ddlmZmZmZmZm	Z	m
Z
mZ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 d d	lmZ d dl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 m!Z! d dl"Z"ed        Z#ed        Z$ed        Z%y)    )render)login_required   )	getCampaignNumbersget_queryfoxserviceget_projected_ordersget_estimated_ordersget_accumulated_unitsget_n_and_n1_campaign_numbersget_accumulated_invoicingcheck_closed_campaignget_queryfoxservice_hist)datetimeN)csrf_exempt)JsonResponseHttpResponse)r   )get_column_letter)BytesIO)Sum)defaultdict)settingsc                   => d}d }t               }d}d}d }d }d }d }	d }
d }d }d }d }d }d }d }d }d }d }d }d }d }d }d }d}d }d }d }d }d }d } d }!d }"d }#| j                  dk(  rd}t        | j                  j	                  dd            } | }d}t        |       }|r|j	                  d      nd }|r|j	                  d      nd }|r|j	                  d	      nd }|r|j	                  d
      nd }|r|j	                  d      nd }|r|j	                  d      nd }t        |       }$|$j	                  d      }	|$j	                  d      }
t        ||z
  dz  |z  d      }t        |       }%|%r|%d   nd }%|%r|%j	                  d      nd }|%r|%j	                  d      nd }|%r|%j	                  d      nd }|%r|%j	                  d      nd }|%r|%j	                  d      nd }|%r|%j	                  d      nd }t        |       rt        |       }&nt        |       }&t        ||z
  dz  |z  d      }|&r0t        |       }'|'d   }(t        |(j	                  d      xs d      }t        |(j	                  d      xs d      }t        |(j	                  d      xs d      }t        |(j	                  d      xs d      }t        |(j	                  d      xs d      }t        |(j	                  d      xs d      }t        |xs d      }t        |xs d      }t        ||z
  dz  |z  d      }t        |       })|)j	                  d      } |)j	                  d      }t        t              }!|&D ]R  }*|*j	                  d       }+|*j	                  d!d      },|,d},nt!        |,t        t        f      sd},|+sF|!|+xx   |,z  cc<   T d"d#d$d%d&d'd(d)d*d+	}-t        t              }"|&D ]]  }*|*j	                  d,      }.|*j	                  d!d      },|,d},nt!        |,t        t        f      sd},|.r	|.|-v r|-|.   }.|.sQ|"|.xx   |,z  cc<   _ t        t              }#|&D ]R  }*|*j	                  d-      }/|*j	                  d!d      },|,d},nt!        |,t        t        f      sd},|/sF|#|/xx   |,z  cc<   T t#        |!j%                               }!t#        |"j%                               }"t#        |#j%                               }#t'        j(                  |!      }!t'        j(                  |"      }"t'        j(                  |#      }#t+        |&      }0t-        j.                         }1|1j0                  >d.>_        g d/}2>j5                  |2       |0D ]f  }3|3d0   |3d1   |3d2   |3d3   |3d4   |3d5   |3d6   |3d7   |3d8   |3d9   |3d:   d|3d!   |3d;   |3d<   |3d=   dddd|3d    |3d,   |3d-   |3d>   g}*>j5                  |*       h t7        |2d      D ]S  \  =}4t9        =>fd?t;        d>j<                  dz         D        d@A      }5|5dBz   >j>                  tA        =         _!        U tE               }6|1jG                  |6       |6jI                  d       tJ        jL                  jO                  tP        jR                  dCdDdE      }7tK        jT                  |7dF       	 tK        jV                  |7dG       t[        j\                         }8|8j_                  dH      }9tJ        jL                  jO                  |7|9      }:ta        |:dI      5 };|;jc                  |6je                                d d d        dJ|9 }<| jg                  |<      }ti        dK|       tk        | dLi dM|dN|dO|dP|dQ|dR|	dS|
dT|dU|dV|dW|dX|dY|dZ|d[|d\|d]|i d^|d_|d`|da|db|dc|dd|de|d| df|dg|!dh|"di|#dK|dj|dk|dl|      S # tX        $ r Y w xY w# 1 sw Y   xY w)mNFr   POSTTcampaign_number   
ProyeccionAcumuladoDiaAcumuladoDiaNM1AcumuladoActualAcumuladoActualNM1TotalPedidosNM1EstimatedOrdersEstimatedOrdersN1d      UnitsAccumulatedNUnitsAccumulatedN1ProjectedUnits
UnitsOfDayUnitsOfDayNM1TotalUnidadesNM1FacturacionDiaFacturacionDiaN1FacturacionAcumuladaN!FacturacionAcumuladaN1_ComparableTotalFacturacionN1FacturacionProyectadaCampaignNumberPreviousCampaignNumberDIA_CALENDARIO_FACTUNI FACT X DIAzNO COSMETICA
CONTRATAPA	COSMETICAzDEMOS COMPUTABLESzDIV-HOGAR CUOTASzGANANCIA PLUSNO COMPUTABLEzOFERTA MAXIMAzVENTA ANTICIPADA)	z NO COSMETICA-COMPUTABLE COMUNzCONTRATAPA (T.OFERTA 226)zCOSMETICA COMPUTABLE COMUNz!DEMOS COMPUTABLES (OF-12-264-266)zDIV-HOGAR CUOTAS COMPUTABLEzGANANCIA PLUS (T.OFERTA 29)r9   zOFERTA MAXIMA (T.OFERTA 150)zVENTA ANTICIPADA ELIMINABLEProductTypeDivisionQueryFoxAACCDIAMESu   AÑOzCOD PRODz	DESC PRODESTI_PED
ENTREG_PEDUNI_ESTUNI_PROY_INVOICINGz% DESCUENTOr6   zUNI ACU FACT HASTA DIAzUNI CORTADAS X DIAzUNI ACU CORTADAS HASTA DIAANT_DIAANT_ACUM	ANT_NODIA
ANT_NOACUMzDIA CALENDARIO FACTz	TIPO PRODzDIVISION DE NEGOCIOzPRECIO VENTA SIN DESCUENTOr>   r?   r@   rA   ANOCOD_PROD	DESC_PRODrB   rC   rD   rE   UNI_ACU_FACT_HASTA_DIAUNI_CORTADAS_X_DIAUNI_ACU_CORTADAS_HASTA_DIAPrecioVentac           	   3   |   K   | ]3  }t        t        j                  |       j                               5 yw)rowcolumnNlenstrcellvalue.0row_numcol_numwss     :/var/www/html/planif/app/controllers/foxQueryController.py	<genexpr>z!foxqueryexport.<locals>.<genexpr>#  .     pgSRWWWAGGHIp   9<
   defaultr   staticpublicfox)exist_oki  z%d-%m-%Y_%H_%M-fox-query.xlsxwbz/static/public/fox/file_urlzfoxqueryexport.htmlnumeros_campanahas_datafilterCampaignIdshowButtonDownloadExcelprojected_ordersestimated_ordersestimated_orders_n1orders_of_dayorders_of_day_n1accumulated_ordersunits_of_dayunits_accumulated_nunits_accumulated_n1units_of_day_n1units_totals_n1projected_unitstotal_orders_n1accumulated_orders_n1show_facturacioncumulative_invoicingprojected_invoicingcumulative_invoicing_n1invoicing_dayinvoicing_day_n1total_invoicing_n1previous_campaign_numbertotal_units_per_daytotal_units_per_product_typetotal_units_per_divisiondesv_ped
desv_unidsdesv_invoicing)6r   methodintr   getr   r	   roundr
   r   r   r   r   floatr   r   
isinstancesorteditemsjsondumpslistopenpyxlWorkbookactivetitleappend	enumeratemaxrangemax_rowcolumn_dimensionsr   widthr   saveseekospathjoinr   BASE_DIRmakedirschmodPermissionErrorr   nowstrftimeopenwritegetvaluebuild_absolute_uriprintr   )?requestrm   rk   rl   rn   ro   resultrp   r|   rq   rr   rs   rt   ru   r}   r   r   r   rv   ry   rw   rx   rz   r{   r   r   r~   r   r   r   r   r   r   r   r   r   
result_estresult_accumdata_queryfoxdata_queryfox_invoicingultima_filacampaign_inforS   dia_calendariouni_fact_x_dianame_mappingproduct_typedivisiondata_queryfox_excelrj   headersitemcol_name
max_lengthoutput
output_dirr   filename	file_pathfrelative_urlr]   r^   s?                                                                @@r_   foxqueryexportr      s#
   HH(*OFOM HJNLOOOM"#O #' # ~~gll../@!DE*"# '78>6;;|4D6<

>2$<B6::&78>DVZZ(9:$DJ

+? @PT;A&**%67t */:
%>>*;<(nn-@A ,/DDKN``bcd -_=*6|ADGSl../BCY]IU|//0DE[_@L,**+;<RV9E|''54?K,**?;QUBN,**+=>TX !14_EM/@M/2FF#MPccefg
&?&P#1"5K!+//2B"C"HqIM$[__5G%H%MAN#(9P)Q)VUV#W &+KOO<_,`,ede&f#!&{7K'L'QPQ!R"'8O(P(UTU"V '**A*FQ&G#!$%7%<1!="$8;R$RWZ#Z]q#qstuN9/JM+//0@AO'4'8'89Q'R$ #.e"4$ J!$)>!?!$)91!= ")%&N#NS%LA%&N "'7>I7J& 3A-9.95H/A/>!00?/A
L ,7u+=($ Q"ww}5!$)91!= ")%&N#NS%LA%&NLL$@#/#=L0>.P>Q& (35'9$$ I77:.!$)91!= ")%&N#NS%LA%&N ,X6.H6I  #))<)B)B)D"E+12N2T2T2V+W('-.F.L.L.N'O$ #'**-@"A+/::6R+S('+zz2J'K$ #'}"5""$BB!BHG4 IIg , JJKKK$%$&O-.)*12-.56./'$'16 		#9> &/w%: X! pY^_`bdblblmnbnYop
 JTVW$$%6w%?@FX YFGGFOKKN h&7&78USJ KK
T2U+
 ,,.C||$CDH Z:I i& +!)*+ 1
;L11,?H*h''0 "3.3Do "3.,6"3.,>?O"3. -FF]"3. -?@P	"3.
 -?@P"3. -BCV"3. -<M"3. -??O"3. -ABT"3. -;<"3. -BCV"3. -CDX"3. ->o"3. ->o"3. ->o"3.  ->!"3." -DEZ#"3.$ -?@P%"3.& -CDX'"3.( -BCV)"3.* -FG^+"3., -<]-"3.. -?@P/"3.0 -ABT1"3.2 ->o3"3.4 -GH`5"3.6 -BCV7"3.8 -KLh9"3.: -GH`;"3.< -7="3.> -7?"3.@ -9*A"3.B -=nC"3. "/ "/' # + +s   "_ 	 _	___!c                     t               }d}d}| j                  dk(  r)t        | j                  j	                  dd            }|}d}t        | d|||d      S )Nr   r   r   r   zgiftparameters.html)rl   rn   ro   )r   r   r   r   r   r   )r   rl   rn   ro   r   s        r_   giftparametersr   r  si    (*O~~gll../@!DE*"#'0o?OF]3. / /    c                    | j                   dk(  r	 t        j                  | j                        }t	        |j                  d            }t        t        |            }t        j                         }|j                  d_        g d}j                  |       |D ]f  }|d   |d   |d   |d   |d	   |d
   |d   |d   |d   |d   |d   d|d   |d   |d   |d   dddd|d   |d   |d   |d   g}j                  |       h t        |d      D ]S  \  }t        fdt        dj                   dz         D        d      }	|	dz   j"                  t%                 _        U t)               }
|j+                  |
       |
j-                  d       d}t/        |
d       }d!| |d"<   |S t3        d#d'id(&      S # t0        $ r%}t3        d#d$t5        |       id%&      cY d }~S d }~ww xY w))Nr   r   r<   r=   r>   r?   r@   rA   rJ   rK   rL   rB   rC   rD   rE   r   r6   rM   rN   rO   r5   r:   r;   rP   r   c           	   3   |   K   | ]3  }t        t        j                  |       j                               5 ywrR   rU   rZ   s     r_   r`   z$download_queryfox.<locals>.<genexpr>  ra   rb   rc   rd   r   zparametros_premios.xlsxzAapplication/vnd.openxmlformats-officedocument.spreadsheetml.sheet)content_typezattachment; filename=zContent-Dispositionerrorz Error al procesar la solicitud: i  )statusu   Método no permitidoi  )r   r   loadsbodyr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   	Exceptionr   rW   )r   datar   r   rj   r   r   rS   r   r   r   r   responseer]   r^   s                 @@r_   download_queryfoxr     sR   ~~]	d::gll+D!$((+<"=>O !4_!EFM ""$BB!BHG4 IIg & JJKKK$%$&O-.)*12-.56./'$'16 		#9> &/w%: X! pY^_`bdblblmnbnYop
 JTVW$$%6w%?@FX YFGGFOKKN 1H#`H 1FhZ.PH*+O
 "89#FF  	d,LSQRVH*U V_bcc	ds   FF> >	G,G'!G,'G,)&django.shortcutsr   django.contrib.auth.decoratorsr   services.foxQueryServicer   r   r   r	   r
   r   r   r   r   r   csvdjango.views.decorators.csrfr   django.httpr   r   r   r   openpyxl.utilsr   ior   django.db.modelsr   collectionsr   r   django.confr   djangor   r   r    r   r_   <module>r      s    # 9	) 	) 	)  
 4 2 $   ,    # 	   N/ N/h
 / /  aG aGr   