o
    %Ah4                     @   s   d dl mZ d dlmZ ddlmZmZmZmZ d dl	m
Z
 d dlmZ G dd dejZG d	d
 d
ejZeed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dS )    )forms)formset_factory   )ExpenseExpenseAttachmentBudgetAllocationExpenseCategory)Employee)datec                       *   e Zd ZG dd dZ fddZ  ZS )ExpenseFormc                   @   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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ejddddej	ddddejddidd
ZdS )zExpenseForm.Meta)
categorybudget_allocationtitledescriptionamountexpense_datevendor_namevendor_contactnotesis_reimbursableclassform-controlattrszBrief descriptionr   placeholder   zDetailed descriptionr   rowsr   0.010r   stepminr
   r   typezVendor/Supplier namezPhone/Email   r   r   form-check-inputN)__name__
__module____qualname__r   modelfieldsr   Select	TextInputTextareaNumberInput	DateInputCheckboxInputwidgets r6   r6   1/var/www/html/optinet_system/expenditure/forms.pyMeta	   s    
r8   c                    s   | dd }t j|i | |rKtjj|dt t d| jd _	dg}| jd j	D ]}|j
j d|jdd}||j|f q,|| jd _d S d S )	NemployeeT)r9   	is_activestart_date__lteend_date__gter   ) z)-- Select Budget Allocation (Optional) --z - KSh z.2fz
 remaining)popsuper__init__r   objectsfilterr
   todayr.   querysetr   nameremaining_amountappendidchoices)selfargskwargsr9   rI   
allocationchoice_text	__class__r6   r7   r@      s   zExpenseForm.__init__r*   r+   r,   r8   r@   __classcell__r6   r6   rO   r7   r      s    r   c                   @      e Zd ZG dd dZdS )ExpenseAttachmentFormc                   @   sL   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dZ
d	S )
zExpenseAttachmentForm.Meta)attachment_typer   filer   r   r   zDescription of attachmentr   zimage/*,.pdf,.doc,.docx)r   acceptN)r*   r+   r,   r   r-   r.   r   r/   r0   	FileInputr5   r6   r6   r6   r7   r8   1   s    
r8   Nr*   r+   r,   r8   r6   r6   r6   r7   rT   0       rT   r'   
   T)extramax_num
can_deletec                   @   rS   )BudgetAllocationFormc                
   @   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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
dddZdS )zBudgetAllocationForm.Meta)r9   r   allocated_amountallocation_period
start_dateend_dater   r   r   r   r    r!   r"   r
   r%   r'   r(   N)r*   r+   r,   r   r-   r.   r   r/   r2   r3   r1   r5   r6   r6   r6   r7   r8   C   s    
r8   NrY   r6   r6   r6   r7   r_   B   rZ   r_   c                   @   sf   e Zd ZejddgejddiddZejdejdd	d
dddZ	ejdejdd	ddddZ
dS )ExpenseApprovalForm)approveApprove)rejectRejectr   r)   r   )rI   widgetFr   r'   zComments (optional)r   requiredri   zReason for rejectionN)r*   r+   r,   r   ChoiceFieldRadioSelectaction	CharFieldr1   commentsrejection_reasonr6   r6   r6   r7   rd   S   s    
rd   c                       s   e Zd Zg dZg dZejejj	ddddej
ddid	d
Zejejj	ddddej
ddid	d
Zejedej
ddid	dZejedej
ddid	dZejdej
ddid	dZ fddZ  ZS )ExpenseFilterForm))r=   z
All Months)1January)2February)3March)4April)5May)6June)7July)8August)9	September)10October)11November)12December))r=   z
All Status)pendingPending)approvedApproved)rejectedRejected)paidPaidactive)employment_statusFzAll Employeesr   r   r   )rD   rk   empty_labelri   T)r:   zAll Categories)rI   rk   ri   rj   c                    s`   t  j|i | t j}dg}t|d |d D ]}|t|t|f q|| jd _	d S )N)r=   z	All Years      year)
r?   r@   r
   rC   r   rangerG   strr.   rI   )rJ   rK   rL   current_yearyear_choicesr   rO   r6   r7   r@      s   
zExpenseFilterForm.__init__)r*   r+   r,   MONTH_CHOICESSTATUS_CHOICESr   ModelChoiceFieldr	   rA   rB   r/   r9   r   r   rl   statusmonthr   r@   rR   r6   r6   rO   r7   rr   a   s<    rr   c                       r   )ExpenseCategoryFormc                   @   sN   e Zd ZeZg dZejddddejdddddej	d	d
iddZ
dS )zExpenseCategoryForm.Meta)rE   r   r:   r   zEnter category namer   r   r   zEnter category descriptionr   r   r)   N)r*   r+   r,   r   r-   r.   r   r0   r1   r4   r5   r6   r6   r6   r7   r8      s    
r8   c                    s:   t  j|i | d| jd _d| jd _d| jd _d S )Nz-Enter a unique name for this expense categoryrE   zDProvide a detailed description of what expenses this category coversr   z0Uncheck to hide this category from expense formsr:   )r?   r@   r.   	help_text)rJ   rK   rL   rO   r6   r7   r@      s   zExpenseCategoryForm.__init__rQ   r6   r6   rO   r7   r      s    	r   N)djangor   django.formsr   modelsr   r   r   r   	hr.modelsr	   datetimer
   	ModelFormr   rT   ExpenseAttachmentFormSetr_   Formrd   rr   r   r6   r6   r6   r7   <module>   s"   (4