o
    qvh9                     @   sf   d dl mZ ddlmZmZmZ d dlm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   )	OrderItemOrderStockReception)Productc                       s*   e Zd ZG dd dZ fddZ  ZS )	OrderFormc                   @   s   e Zd ZeZdgZdS )zOrderForm.MetasupplierN)__name__
__module____qualname__r   modelfields r   r   (/var/www/html/hyperkenya/orders/forms.pyMeta   s    
r   c                    s2   t t| j|i | | jd jjddi d S )Nr	   classform-control)superr   __init__r   widgetattrsupdateselfargskwargs	__class__r   r   r      s   zOrderForm.__init__)r
   r   r   r   r   __classcell__r   r   r   r   r      s    r   c                       s   e Zd Zejej ejddidddZ	ej
dejddidddZejd	d
ejddidddZG dd dZ fddZ  ZS )OrderItemFormr   r   )r   -- Select a Product --)querysetr   empty_labelr   zQuantity Ordered)	min_valuer   label
      zBuying Price)
max_digitsdecimal_placesr   r%   c                   @      e Zd ZeZg dZdS )zOrderItemForm.Meta)productquantity_orderedbuying_priceN)r
   r   r   r   r   r   r   r   r   r   r   "       r   c                    sJ   t t| j|i | | jr| jjr| jjj| jd _d S d | jd _d S )Nr-   )	r   r    r   instancepkr+   r-   r   initialr   r   r   r   r   &   s   zOrderItemForm.__init__)r
   r   r   r   ModelChoiceFieldr   objectsallSelectr+   IntegerFieldNumberInputr,   DecimalFieldr-   r   r   r   r   r   r   r   r       s&    r    c                       sB   e Zd ZG dd dZ fddZdd Zdd Zd	d
 Z  ZS )StockReceptionFormc                   @   r*   )zStockReceptionForm.Meta)	r+   r	   quantity_receivedr-   selling_priceexpiry_date
batch_codereceived_datenotesN)r
   r   r   r   r   r   r   r   r   r   r   /   r.   r   c                    s   t  j|i | | j D ]}|jjddi q| jd jjddi | jd jjddi | jd jjdd	i | jd
 jjddi | jd jjddi | jd jjddi | jd jjddi | jd jjddi d S )Nr   r   r+   placeholderr!   r	   z-- Select a Supplier --r:   zEnter quantity receivedr-   zEnter buying price per unitr;   zEnter selling price per unitr<   zEnter expiry date (optional)r=   zEnter batch code (optional)r?   z#Add any additional notes (optional))r   r   r   valuesr   r   r   )r   r   r   fieldr   r   r   r   6   s   zStockReceptionForm.__init__c                 C   "   | j d}|dkrtd|S )Nr:   r   z)Quantity received must be greater than 0.cleaned_datagetr   ValidationError)r   r:   r   r   r   clean_quantity_receivedG      
z*StockReceptionForm.clean_quantity_receivedc                 C   rC   )Nr-   r   z$Buying price must be greater than 0.rD   )r   r-   r   r   r   clean_buying_priceM   rI   z%StockReceptionForm.clean_buying_pricec                 C   s2   | j d}| j d}|r||krtd|S )Nr;   r-   z4Selling price must be greater than the buying price.rD   )r   r;   r-   r   r   r   clean_selling_priceS   s
   
z&StockReceptionForm.clean_selling_price)	r
   r   r   r   r   rH   rJ   rK   r   r   r   r   r   r9   .   s    r9   N)djangor   modelsr   r   r   inventory.modelsr   	ModelFormr   r    r9   r   r   r   r   <module>   s    
