o
    h                     @   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/pos/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dd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+Optional - Leave blank for supplier pricing)r   placeholderzBuying Price (Optional)F)
max_digitsdecimal_placesr   r%   requiredc                   @      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   0   r0   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-   r(   r!   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)rA   z#Add any additional notes (optional))r   r   r   valuesr   r   r   )r   r   r   fieldr   r   r   r   7   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_receivedH      
z*StockReceptionForm.clean_quantity_receivedc                 C   rD   )Nr/   r   z$Buying price must be greater than 0.rE   )r   r/   r   r   r   clean_buying_priceN   rJ   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.rE   )r   r=   r/   r   r   r   clean_selling_priceT   s
   
z&StockReceptionForm.clean_selling_price)	r
   r   r   r   r   rI   rK   rL   r   r   r   r   r   r;   /   s    r;   N)djangor   modelsr   r   r   inventory.modelsr   	ModelFormr   r    r;   r   r   r   r   <module>   s    
