o
    >:hM                     @   s(  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	 d	ejZee
eg d
ddejddidejddddejddddejddidejddidejddidejddidd
dZee
eg d
ddejddidejddddejddddejddidejddidejddidejddidd
dZG dd dejZG dd dejZG dd dejZG dd dejZ G dd dejZ!G dd dejZ"G d d! d!ejZ#G d"d# d#ejZ$G d$d% d%ejZ%d&S )'    )forms)inlineformset_factory)ValidationError)Decimal   )MovimientoPerdidaProcesoOrdenCompraItemOrdenCompraDevolucionCompraDevolucionMuestraComercialDevolucionProduccionMovimientoDevolucionVentaAjusteInventarioFisicoMuestraComercialRecepcionProduccionMovimientoVenta)MaquinaReferenciac                   @      e Zd ZG dd dZdS )OrdenCompraFormc                   @   sh   e Zd ZeZg dZejddidejddddejddidejddidej	dddddZ
d	S )
zOrdenCompraForm.Meta)	proveedorfecha_requerida
forma_pagoestadoobservacionesclassform-controlattrsdatetyper      r   rowsN)__name__
__module____qualname__r   modelfieldsr   Select	DateInputTextareawidgets r-   r-   )/var/www/html/public/movimientos/forms.pyMeta	   s    
r/   Nr$   r%   r&   r/   r-   r-   r-   r.   r          r   )
referenciacantidadprecio_unitarioempaqueproveedor_referencia	lead_timecertificadoTr   r   r   0.0001r   stepzform-check-input)parent_modelr'   r(   extra
can_deleter,   Fc                   @   r   )AjusteInventarioFisicoFormc                   @   s   e Zd ZeZdZdS )zAjusteInventarioFisicoForm.Meta__all__N)r$   r%   r&   r   r'   r(   r-   r-   r-   r.   r/   `   s    r/   Nr0   r-   r-   r-   r.   r?   _   r1   r?   c                   @   s   e Zd ZejddejdddddZejddejdddddZejd	dejdddddZejd
dejdddddZ	G dd dZ
dS )MuestraComercialFormstock_antesFr   readonlyr   rC   r   labelrequiredwidgetstock_despuescosto_unitariovalor_total_salidac                   @   sj   e Zd ZeZg dZejddidejddddej	ddddej
dd	d
dejddiddZdS )zMuestraComercialForm.Meta)r2   fechacantidad_entregadar   entregado_porr   r   r   r   r   r9   r:      r"   N)r$   r%   r&   r   r'   r(   r   r)   r*   NumberInputr+   r,   r-   r-   r-   r.   r/      s    
r/   N)r$   r%   r&   r   	CharField	TextInputrB   rI   rJ   rK   r/   r-   r-   r-   r.   rA   d   sD    	rA   c                   @   s:   e Zd ZG dd dZdd Zdd Zdd Zd	d
 ZdS )RecepcionProduccionFormc                   @   s   e Zd ZeZg dZejddidejddidejddidejddddej	dddd	dej	ddd
dej
ddddej	ddd
dej
ddddej
ddddd
ZdS )zRecepcionProduccionForm.Meta)
r2   plantamaquinarL   cantidad_antescantidad_producidacantidad_despuescosto_unitario_produccionnuevo_costo_ponderadovalor_totalr   r   r   r   r   r9   rC   r   r;   rC   r:   rD   N)r$   r%   r&   r   r'   r(   r   r)   r*   rP   rR   r,   r-   r-   r-   r.   r/      s4    
r/   c                 C   s   | j d}| j d}| j d}|r?|r?|d ur?z
tjj||d}W n tjy0   tdw ||jk r?td|j d|S )NrW   rU   r2   )rU   r2   u$   Máquina no produce esta referencia.u   Mínimo de z
 unidades.)cleaned_datagetr   objectsDoesNotExistr   minimo_unidades)selfr3   rU   r2   mrr-   r-   r.   clean_cantidad_producida   s    

z0RecepcionProduccionForm.clean_cantidad_producidac                 C   sB   | j |d}|dd}zt|W S  ty    td| w )zBHelper para extraer, normalizar coma->punto y convertir a Decimal. ,.   Formato inválido en )datar^   replacer   	Exceptionr   )rb   
field_namerawr-   r-   r.   _parse_decimal   s   
z&RecepcionProduccionForm._parse_decimalc                 C      |  d}td| |S )Nr[   u   🐞 clean_valor_total:rn   printrb   valr-   r-   r.   clean_valor_total      

z)RecepcionProduccionForm.clean_valor_totalc                 C   ro   )NrZ   u!   🐞 clean_nuevo_costo_ponderado:rp   rr   r-   r-   r.   clean_nuevo_costo_ponderado   ru   z3RecepcionProduccionForm.clean_nuevo_costo_ponderadoN)r$   r%   r&   r/   rd   rn   rt   rv   r-   r-   r-   r.   rS      s    (	rS   c                   @   s"   e Zd ZG dd dZdd ZdS )MovimientoVentaFormc                   @   sn   e Zd ZeZg dZejddidejdddddejdddddej	d	dd
dejddiddZ
dS )zMovimientoVentaForm.Meta)r2   r3   precio_unitario_ventarL   
creado_porr   r   r   r9   )r   r;   min0.010r   r   N)r$   r%   r&   r   r'   r(   r   r)   rP   r*   r,   r-   r-   r-   r.   r/      s    
r/   c                 C   s    | j d }|dkrtd|S Nr3   r   z$La cantidad debe ser mayor que cero.)r]   r   r   )rb   qtyr-   r-   r.   clean_cantidad   s   

z"MovimientoVentaForm.clean_cantidadN)r$   r%   r&   r/   r   r-   r-   r-   r.   rw      s    rw   c                       s   e Zd Zejddddeddddd	Zejd
dddeddddd	Zejddddeddddd	Zejddddeddddd	Z	G dd dZ
 fddZdd Z  ZS )DevolucionCompraFormzCantidad antesF      r   r9   rC   r\   )rF   rG   
max_digitsdecimal_placesrH   u   Cantidad despuészNuevo precio ponderadozValor total   rO   r{   c                   @   sj   e Zd ZeZg dZejddidejddidejddddej	ddddej	ddddd	Z
d
S )zDevolucionCompraForm.Meta)	itemr2   rL   rV   cantidad_devueltarX   precio_unitario_devueltonuevo_precio_ponderador[   r   r   r   r   r   r9   r:   )r   r2   rL   r   r   N)r$   r%   r&   r
   r'   r(   r   r)   r*   rP   r,   r-   r-   r-   r.   r/   *  s    
r/   c                    sl   t  j|i | | jr2| jjr4| jj| jd _| jj| jd _| jj| jd _| jj	| jd _d S d S d S )NrV   rX   r   r[   )
super__init__instancepkrV   r(   initialrX   r   r[   rb   argskwargs	__class__r-   r.   r   C  s   zDevolucionCompraForm.__init__c                 C   (   | j d}|d ur|dkrtd|S Nr   r   z-La cantidad devuelta debe ser mayor que cero.r]   r^   r   rb   dvr-   r-   r.   clean_cantidad_devueltaK     z,DevolucionCompraForm.clean_cantidad_devuelta)r$   r%   r&   r   DecimalFieldrP   rV   rX   r   r[   r/   r   r   __classcell__r-   r-   r   r.   r     sP    			
r   c                   @   s   e Zd ZejddejddddddZejd	dejddd
dddZejddejddddddZejddejddddddZ	G dd dZ
dd ZdS )DevolucionMuestraComercialFormStock antesFr   rC   id_stock_antes)r   rC   idr   rE      Stock despuésid_stock_despueszCosto unitarioid_costo_unitariozValor total salidaid_valor_total_salidac                
   @   s   e Zd ZeZg dZejddddejddddejdddd	dej	d
ddddejddddej
ddddddZdS )z#DevolucionMuestraComercialForm.Meta)muestrar2   r3   rL   usuario
comentarior   
id_muestra)r   r   r   id_referenciar9   id_cantidad)r   r;   r   r   id_fecha)r    r   r   
id_usuariorO   id_comentario)r   r#   r   N)r$   r%   r&   r   r'   r(   r   r)   rP   r*   r+   r,   r-   r-   r-   r.   r/   w  s    	
r/   c                 C   r   r}   r   )rb   cr-   r-   r.   r     r   z-DevolucionMuestraComercialForm.clean_cantidadN)r$   r%   r&   r   rQ   rR   rB   rI   rJ   rK   r/   r   r-   r-   r-   r.   r   U  sF    	r   c                       s   e Zd ZejddejdddddZejddejdddddZejd	dejdddddZejd
dejdddddZ	ejddejdddddZ
G dd dZ fddZdd Zdd Zdd Zdd Z  ZS )DevolucionProduccionFormr   Fr   rC   rD   r   rE   r   zPrecio costo anteszNuevo precio costozValor inventarioc                	   @   sz   e Zd ZeZg dZejddidejddidejddddejddddej	ddddej
dd	d
ddZdS )zDevolucionProduccionForm.Meta)	recepcionr2   r   rJ   rL   r   r   r   r   r9   r:   r   r   rO   r"   N)r$   r%   r&   r   r'   r(   r   r)   rP   r*   r+   r,   r-   r-   r-   r.   r/         	
r/   c                    s|   t  j|i | | jr:| jjr<| jj| jd _| jj| jd _| jj| jd _| jj	| jd _| jj
| jd _d S d S d S )NrB   rI   precio_costo_antesnuevo_precio_costovalor_inventario)r   r   r   r   rB   r(   r   rI   r   r   r   r   r   r-   r.   r     s   z!DevolucionProduccionForm.__init__c                 C   r   r   r   r   r-   r-   r.   r     r   z0DevolucionProduccionForm.clean_cantidad_devueltac                 C   s6   | j |ddd}zt|W S    td| )Nre   rf   rg   rh   )ri   r^   rj   r   r   )rb   fnrm   r-   r-   r.   rn     s
   
z'DevolucionProduccionForm._parse_decimalc                 C   
   |  dS )Nr   rn   rb   r-   r-   r.   clean_valor_inventario     
z/DevolucionProduccionForm.clean_valor_inventarioc                 C   r   )Nr   r   r   r-   r-   r.   clean_nuevo_precio_costo  r   z1DevolucionProduccionForm.clean_nuevo_precio_costo)r$   r%   r&   r   rQ   rR   rB   rI   r   r   r   r/   r   r   rn   r   r   r   r-   r-   r   r.   r     s6    	r   c                   @   s|   e Zd ZejddejdddddZejddejdddddZejd	dejdddddZG d
d dZ	dd Z
dS )MovimientoDevolucionVentaFormr   Fr   rC   rD   r   rE   r   zPrecio venta ponderadoc                	   @   sz   e Zd ZeZg dZejddidejddidejddddejddddej	ddd	dej
dd
dddZdS )z"MovimientoDevolucionVentaForm.Meta)ventar2   r3   precio_venta_unitariorL   r   r   r   r   r9   r:   r{   r   r   rO   r"   N)r$   r%   r&   r   r'   r(   r   r)   rP   r*   r+   r,   r-   r-   r-   r.   r/     r   r/   c                 C   r   r}   r   )rb   qr-   r-   r.   r     r   z,MovimientoDevolucionVentaForm.clean_cantidadN)r$   r%   r&   r   rQ   rR   rB   rI   precio_venta_pondr/   r   r-   r-   r-   r.   r     s    r   c                   @   r   )PerdidaProcesoFormc                   @   s,   e Zd ZeZg dZdejddidiZdS )zPerdidaProcesoForm.Meta)r2   r3   motivor   r2   r   r   r   N)	r$   r%   r&   r   r'   r(   r   r)   r,   r-   r-   r-   r.   r/     s
    r/   Nr0   r-   r-   r-   r.   r     r1   r   N)&djangor   django.forms.modelsr   django.core.exceptionsr   decimalr   modelsr   r   r	   r
   r   r   r   r   r   r   r   fabricacion.modelsr   	ModelFormr   r)   rP   CheckboxInputItemOrdenCompraFormSetItemOrdenCompraManualFormSetr?   rA   rS   rw   r   r   r   r   r   r-   r-   r-   r.   <module>   st   4	!	8NQ?I&