
    >:hT;                     b   d dl mZ d dl mZmZ d dlmZ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 d	d
lmZmZmZmZmZmZmZmZmZmZmZ d	dlmZ  G d dej                   Z! ej"        e           G d dej#                              Z$ ej"        e           G d dej#                              Z% ej"        e           G d dej#                              Z& ej"        e           G d dej#                              Z' ej"        e           G d dej#                              Z( ej"        e           G d dej#                              Z) ej"        e           G d dej#                              Z* ej"        e           G d dej#                              Z+ ej"        e           G d dej#                              Z, ej"        e           G d  d!ej#                              Z- ej"        e           G d" d#ej#                              Z.d$S )%    )admin)r   messages)pathreverse)redirectrenderget_object_or_404)format_html)ValidationError)formset_factory)timezone   )MovimientoPerdidaProcesoOrdenCompraItemOrdenCompraDevolucionCompraDevolucionMuestraComercialDevolucionProduccionAjusteInventarioFisicoMovimientoDevolucionVentaMuestraComercialRecepcionProduccionMovimientoVenta)DevolucionCompraFormc                   :    e Zd ZeZdZdZdZdZdZ	d Z
de
_        dS )	ItemOrdenCompraInliner   )
referenciacantidadprecio_unitariosubtotal_adminempaqueproveedor_referencia	lead_timecertificado)r    r   r"   r"   c                 H    |j         |j        d|j         |j        z  dS dS N$,.2fz$0.00r   r   )selfinstances     :C:\Users\a_gir\Desktop\Interacto\siip\movimientos\admin.pyr    z$ItemOrdenCompraInline.subtotal_admin   s4    (X-E-QJx(8+CCJJJJw    SubtotalN)__name__
__module____qualname__r   modelextrafieldsreadonly_fieldsautocomplete_fieldsraw_id_fieldsr    short_description r/   r.   r   r      sL        EEF
 *O@-M   (2N$$$r/   r   c                        e Zd ZdZdZdZdZegZddgZ	dZ
d Zd	e_        d
e_        d Zde_        d Zde_        d Zde_        d Zde_         fdZd Zd Zd Z xZS )OrdenCompraAdmin)numero_ordenproveedor_linkfecha_creacionfecha_requeridaestadototal_ordenacciones_personalizadas)rB   	proveedorr@   )r>   proveedor__nombre_empresar@   aprobar_ordenesmarcar_en_camino)r>   rC   c                 f    t          d|j        j        g          }t          d||j                  S )Nz"admin:proveedores_proveedor_change)argsz<a href="{}">{}</a>)r   rE   idr
   )r,   objurls      r.   r?   zOrdenCompraAdmin.proveedor_link4   s2    :#-BRASTTT0#s}EEEr/   	ProveedorrE   c                     d|j         dS )Nr)   r*   )totalr,   rL   s     r.   rC   zOrdenCompraAdmin.total_orden:   s    #39####r/   Totalc                     g }|j         dk    r|                    d|j         d           n)|j         dk    r|                    d|j         d           t          d                    |                    S )N	pendientez	<a href="z%/aprobar/" class="button">Aprobar</a>aprobadaz//enviar/" class="button">Enviar a Proveedor</a> )rB   appendrK   r
   join)r,   rL   buttonss      r.   rD   z(OrdenCompraAdmin.acciones_personalizadas>   s~    :$$NNTsvTTTUUUUZ:%%NN^sv^^^___388G,,---r/   Accionesc                    |j                             d          s$|                     |dt          j                   d S |                    d                              d          }|                     || d           d S )Nzcompras.aprobar_ordencomprau'   No tienes permiso para aprobar órdeneslevelrT   rB   rU   u    órdenes aprobadas)userhas_permmessage_userr   ERRORfilterupdater,   requestquerysetcounts       r.   rG   z OrdenCompraAdmin.aprobar_ordenesG   s    |$$%BCC 	g'PX`XfgggF{33::*:MM'e#@#@#@AAAAAr/   u   Aprobar órdenes seleccionadasc                     |                     d                              d          }|                     || d           d S )NrU   r^   	en_caminou     órdenes marcadas como enviadas)rc   rd   ra   re   s       r.   rH   z!OrdenCompraAdmin.marcar_en_caminoO   sK    z22999MM'e#M#M#MNNNNNr/   z Marcar como enviadas a proveedorc                 f   t                                                      }t          d| j                            | j                  d          t          d| j                            | j                  d          t          d| j                            | j                  d          g}||z   S )Nadd/mov_compras_ordencompra_addnamez<path:object_id>/aprobar/mov_compras_ordencompra_aprobarz<path:object_id>/enviar/mov_compras_ordencompra_enviar)superget_urlsr   
admin_site
admin_view_redirect_to_manualaprobar_ordenenviar_proveedorr,   urlscustom	__class__s      r.   rs   zOrdenCompraAdmin.get_urlsT   s    ww!! **4+CDD2   +**4+=>>6  
 ***4+@AA5  
& }r/   c                      t          d          S )Nzmovimientos:ordencompra_manualr   r,   rf   s     r.   rv   z$OrdenCompraAdmin._redirect_to_manualk   s    8999r/   c                 <   |                      ||          }	 |                    |j                   |                     |d           nF# t          $ r9}|                     |t          |          t          j                   Y d }~nd }~ww xY wt          d          S )NzOrden aprobada exitosamenter\   ..)	
get_objectaprobarr_   ra   r   strr   rb   r   )r,   rf   	object_idrJ   kwargsordenes          r.   rw   zOrdenCompraAdmin.aprobar_ordeno   s    33	EMM','''g'DEEEE 	E 	E 	Egs1vvX^DDDDDDDD	E~~s   0A	 	
B/BBc                     |                      ||          }d|_        |                                 |                     |d           t	          d          S )Nrj   z'Orden marcada como enviada al proveedorr   )r   rB   savera   r   )r,   rf   r   rJ   r   r   s         r.   rx   z!OrdenCompraAdmin.enviar_proveedorx   sL    33"

'#LMMM~~r/   )r1   r2   r3   list_displaylist_filtersearch_fieldsdate_hierarchyr   inlinesactionsr7   r?   r:   admin_order_fieldrC   rD   rG   rH   rs   rv   rw   rx   __classcell__r|   s   @r.   r=   r=   "   s%       L <KAM%N$%G "45G5OF F F (3N$'2N$$ $ $$+K!. . . 1;-B B B )IO%O O O *L&    .: : :        r/   r=   c                   6    e Zd ZdZdZdZdZdZd Zde_	        dS )	ItemOrdenCompraAdmin)r   r   r   r   r    )r   r   )orden__numero_ordenreferencia__skur%   r&   c                 H    |j         |j        d|j         |j        z  dS dS r(   r+   rQ   s     r.   r    z#ItemOrdenCompraAdmin.subtotal_admin   s2    <#(;(G@s|c&99@@@@wr/   r0   N)
r1   r2   r3   r   list_select_relatedr   r8   r9   r    r:   r;   r/   r.   r   r      sD        [L1>M@-M   (2N$$$r/   r   c                   0     e Zd ZdZdZdZ fdZd Z xZS )DevolucionCompraAdminz&admin/devolucion_compras/add_form.htmlN)r   fechacantidad_devueltavalor_totalc                     t                                                      }ddlm} t	          d| j                            |          d          g}||z   S )Nr   )devolver_orden_unificadorl    movimientos_devolucioncompra_addrn   )rr   rs   viewsr   r   rt   ru   )r,   rz   r   r{   r|   s       r.   rs   zDevolucionCompraAdmin.get_urls   sm    ww!! 	433333 	O../GHH;	 	 	  }r/   c           	         t           j                            d                              d          }t	          t
          d          }|j                            d          }d}|j        dk    r ||j	                  }|
                                rnd}|D ]5}|j                            d	          r|                                 |d
z  }6t          j        || d           t          t!          d                    S n|rt#          t           |          }|j                            d                                          }	g }
|	D ]^}|
                    |j        |j        j        t1          j                                                    |j        j        |j        d           _ ||
          }|||d}t;          || j        |          S )z9Vista custom para el add de DevolucionCompra en el Admin.recibidar^   z-fecha_creacionr   )r5   orden_selectNPOSTr   r   z$ devoluciones creadas correctamente.z-admin:movimientos_devolucioncompra_changelist)pkr   )itemr   r   cantidad_antesprecio_unitario_devuelto)initial)ordenesorden_selectedformset)r   objectsrc   order_byr   r   GETgetmethodr   is_validcleaned_datar   r   successr   r   r	   itemsselect_relatedallrW   r   r   r   nowdatestockr   r   add_form_template)r,   rf   r   DevolucionFormSetr   r   creadasformr   r   r   r   contexts                r.   devolver_addz"DevolucionCompraAdmin.devolver_add   s    %,,J,??HHIZ[[ ,,@JJJ 88>V##''55G!! Z# % %D(,,-@AA %		1 W*Z*Z*Z[[[(W X XYYYZ  	9%knEEEEK..|<<@@BBEG  15040B080C0C0E0E040E040D        ('888G &,%
 

 gt5w???r/   )	r1   r2   r3   r   change_list_templater   rs   r   r   r   s   @r.   r   r      sb         ANL    .@ .@ .@ .@ .@ .@ .@r/   r   c                   "    e Zd ZdZdZdZddZdS )DevolucionMuestraComercialAdmin)r   r   r   usuario)r   usuario__usernamer    Nc                      t          d          S )Nz(movimientos:dev_muestra_comercial_manualr~   r,   rf   form_urlextra_contexts       r.   add_viewz(DevolucionMuestraComercialAdmin.add_view       BCCCr/   r   Nr1   r2   r3   r   r   r   r   r;   r/   r.   r   r      s=        BL<MKD D D D D Dr/   r   c                   4     e Zd ZdZdZdZdZ fdZd Z xZ	S )DevolucionProduccionAdmin)r   r   costo_unitariostock_antesstock_despuesnuevo_precio_costovalor_inventarior   )r   r   precio_costo_antesr   r   r   r   c                     t                                                      }t          d| j                            | j                  d          g}||z   S )Nrl   2mov_devolucion_produccion_devolucionproduccion_addrn   rr   rs   r   rt   ru   _redirect_addry   s      r.   rs   z"DevolucionProduccionAdmin.get_urls   Y    ww!!**4+=>>I  
 }r/   c                      t          d          S )Nz(movimientos:devolucion_produccion_manualr~   r   s     r.   r   z'DevolucionProduccionAdmin._redirect_add   r   r/   
r1   r2   r3   r   r7   r   r   rs   r   r   r   s   @r.   r   r      sh        LO ,M!K	 	 	 	 	D D D D D D Dr/   r   c                   0     e Zd ZdZdZdZ fdZd Z xZS )MovimientoDevolucionVentaAdmin)r   r   precio_venta_unitarior   r   r   r   c                     t                                                      }t          d| j                            | j                  d          g}||z   S )Nrl   2mov_devolucion_venta_movimientodevolucionventa_addrn   r   ry   s      r.   rs   z'MovimientoDevolucionVentaAdmin.get_urls   r   r/   c                      t          d          S )Nz#movimientos:devolucion_venta_manualr~   r   s     r.   r   z,MovimientoDevolucionVentaAdmin._redirect_add  s    =>>>r/   )	r1   r2   r3   r   r   r   rs   r   r   r   s   @r.   r   r      sV        ML(M*K	 	 	 	 	? ? ? ? ? ? ?r/   r   c                   4     e Zd ZdZdZdZdZ fdZd Z xZ	S )AjusteInventarioFisicoAdmin)r   r   r   cantidad_despuesunidades_entradaunidades_salidar   )r   r   r   r   r   c                     t                                                      }t          d| j                            | j                  d          g}||z   S )Nrl   0mov_inventario_fisico_ajusteinventariofisico_addrn   )rr   rs   r   rt   ru   rv   r,   rz   custom_urlsr|   s      r.   rs   z$AjusteInventarioFisicoAdmin.get_urls  s\    ww!! **4+CDDG  
 T!!r/   c                      t          d          S )Nzmovimientos:ajuste_manualr~   r   s     r.   rv   z/AjusteInventarioFisicoAdmin._redirect_to_manual)  s    3444r/   )
r1   r2   r3   r   r7   r   r   rs   rv   r   r   s   @r.   r   r     s`        L MOK(M" " " " "5 5 5 5 5 5 5r/   r   c                   4     e Zd ZdZdZdZdZ fdZd Z xZ	S )MuestraComercialAdmin)r   r   cantidad_entregadar   valor_total_salidaentregado_por)r   r   r   r   )r   entregado_por__usernamer   c                     t                                                      }t          d| j                            | j                  d          g}||z   S )Nrl   *mov_muestra_comercial_muestracomercial_addrn   r   ry   s      r.   rs   zMuestraComercialAdmin.get_urls:  sY    ww!!**4+=>>A  
 }r/   c                      t          d          S )Nz$movimientos:muestra_comercial_manualr~   r   s     r.   r   z#MuestraComercialAdmin._redirect_addE  s    >???r/   r   r   s   @r.   r   r   -  si        LO CMK	 	 	 	 	@ @ @ @ @ @ @r/   r   c                   4     e Zd ZdZdZdZdZ fdZd Z xZ	S )RecepcionProduccionAdmin)r   plantamaquinar   cantidad_producidacosto_unitario_produccionnuevo_costo_ponderador   )r   r  r   )r   r   r   )r   maquina__nombrec                     t                                                      }t          d| j                            | j                  d          g}||z   S )Nrl   &mov_produccion_recepcionproduccion_addrn   r   r   s      r.   rs   z!RecepcionProduccionAdmin.get_urlsT  sZ    ww!!**4+=>>=  
 T!!r/   c                      t          d          S )Nz'movimientos:recepcion_produccion_manualr~   r   s     r.   r   z&RecepcionProduccionAdmin._redirect_add_  s    ABBBr/   )
r1   r2   r3   r   r7   r   r   rs   r   r   r   s   @r.   r   r   I  sg        L
 SO0K:M	" 	" 	" 	" 	"C C C C C C Cr/   r   c                   "    e Zd ZdZdZdZddZdS )MovimientoVentaAdmin)r   r   precio_unitario_ventar   
creado_porr   r   r   Nc                      t          d          S )Nzmovimientos:venta_manualr~   r   s       r.   r   zMovimientoVentaAdmin.add_viewi  s    2333r/   r   r   r;   r/   r.   r  r  b  s7        ^L(M+K4 4 4 4 4 4r/   r  c                   4     e Zd ZdZdZdZdZ fdZd Z xZ	S )MovimientoPerdidaProcesoAdmin)r   r   r   motivor   )r   r  r   c                     t                                                      }t          d| j                            | j                  d          g}||z   S )Nrl   (movimientos_movimientoperdidaproceso_addrn   )rr   rs   r   rt   ru   redirect_to_custom_addr   s      r.   rs   z&MovimientoPerdidaProcesoAdmin.get_urlss  s_    ww!!33D4OPP  XB  C  C  C
 T!!r/   c                      t          d          S )Nzmovimientos:perdida_addr~   r   s     r.   r  z4MovimientoPerdidaProcesoAdmin.redirect_to_custom_addz  s    1222r/   )
r1   r2   r3   r   r   r   r   rs   r  r   r   s   @r.   r  r  l  s[        @L)K1MN" " " " "3 3 3 3 3 3 3r/   r  N)/django.contribr   r   django.urlsr   r   django.shortcutsr   r   r	   django.utils.htmlr
   django.core.exceptionsr   django.formsr   django.utilsr   modelsr   r   r   r   r   r   r   r   r   r   r   formsr   TabularInliner   register
ModelAdminr=   r   r   r   r   r   r   r   r   r  r  r;   r/   r.   <module>r     s               * * * * * * * * % % % % % % % % @ @ @ @ @ @ @ @ @ @ ) ) ) ) ) ) 2 2 2 2 2 2 ( ( ( ( ( ( ! ! ! ! ! ! }  }  }  }  }  }  }  }  }  }  }  }  }  }  }  }  }  }  }  }  }  }  }  }  }  } ' ' ' ' ' '2 2 2 2 2E/ 2 2 2& Z Z Z Z Zu' Z Z Zz   2 2 2 2 25+ 2 2 ! 2  !!B@ B@ B@ B@ B@E, B@ B@ "!B@H *++D D D D De&6 D D ,+D $%%D D D D D 0 D D &%D6 )**? ? ? ? ?U%5 ? ? +*?( &''5 5 5 5 5%"2 5 5 ('5:  !!@ @ @ @ @E, @ @ "!@6 #$$C C C C Cu/ C C %$C0   4 4 4 4 45+ 4 4 ! 4 ())3 3 3 3 3E$4 3 3 *)3 3 3r/   