o
    ayh#                     @   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 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 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! edd Z"edddd Z#dS )    )render)JsonResponse)QSumCountF)
TruncMonth)reverse)Product)Customer)Supplier)Sale)Employee
Attendance)Order)Expense)login_required)timezone)	timedeltac              
   C   s  | j dd }t|dk rtdg iS g }z9tjjt|dt|dB t|dB dd	d d
 }|D ]}|	d|j
d|j d|j td|jgdd q3W n   Y zGtjt|dt|dB t|dB t|dB t|dB d d
 }|D ]!}|	d|j d|j d|j d|j td|jgdd qyW n   Y zCtjt|dt|dB t|dB t|dB t|dB d d
 }|D ]}|	d|j
d|j d|jpd td |jgdd qW n   Y zKtjt|d!t|d"B t|d#B d d$ }	|	D ]/}
|
jr|
jj d|
jj nd%}|	d&d'|
j d(| d)|
j td*|
jgdd qW n   Y zCtjt|dt|dB t|d+B t|d,B d d$ }|D ]"}|	d-|j d|j d|j d.|j td/|jgdd qXW n   Y z7tjt|d0t|d1B d d$ }|D ] }|	d2d3|j d4|jj
 d5|j  td6|jgdd qW n   Y td|iS )7Nq    results)name__icontains)barcode__icontains)description__icontainsT	is_active   r
   zPrice: KSh z
 | Stock: product_detail)args)categorytitlesubtitleurl)first_name__icontains)last_name__icontains)phone__icontains)email__icontains)customer_id__icontainsr    zID: z
 | Phone: customer_detail)contact_person__icontains)supplier_id__icontainsr   z | Contact: zN/Aview_supplier)id__icontains)customer__first_name__icontains)customer__last_name__icontains   zWalk-in Customerr   zSale #z
Customer: z | Amount: KSh sale_detail)employee_id__icontains)job_title__icontainsr   z | Position: employee_detail)order_number__icontains)supplier__name__icontainsr   zOrder z
Supplier: z | Total: KSh order_detail)!GETgetstriplenr   r
   objectsfilterr   appendnameselling_pricestock_quantityr	   idr   
first_name	last_namecustomer_idphoner   supplier_idcontact_personr   customertotal_amountr   employee_id	job_titler   order_numbersupplier
total_cost)requestqueryr   productsproduct	customersrK   	suppliersrP   salessalecustomer_name	employeesemployeeordersorder r_   (/var/www/html/kangema/dashboard/views.pyglobal_search   s  


"

ra   z/auth/login/)	login_urlc              
   C   st  t   }|tdd }|t| d }|jdd}|tdd }|tdd }tjj|dj	t
dt
dtd	d
dt
dtdd
dt
dtdd
dt
dtdd
dtdd}tjj|dj	t
dt
dtd	d
dt
dtdd
dt
dtdd
dt
dtdd
dd}tjj|dj	t
dt
dtd	d
dt
dtdd
dt
dtdd
dt
dtdd
dd}	tjj	t
ddd pd}
tjj	t
ddd pd}|
| }tjdjt
ddd}ztjjdd }W n   d}Y z0tjjtdd }tjj||d }tjjdddj	t
tdtd  d!d" p!d}W n
   d}d}d}Y ztjjt
d#d$jdd%d&d d' }tjj|d( }W n   g }d}Y ztjjd)d* }tjj|d+}W n   d}g }Y i d,|
d-|d.|d/|d0|d1|d2|d3td4d5|d, pdd6|d, pdd7|	d, pdd8|d9|d:|d;|d<|}t| d=|S )>N   )days   )day      )sale_date__daterL   cash)payment_method)r?   mpesacreditchequerD   )total_sales
cash_salesmpesa_salescredit_salescheque_salestransaction_count)sale_date__date__gte)ro   rp   rq   rr   rs   )totalrv   r   amountrk   z-totalF)is_receivedlow_stock_threshold)stock_quantity__lt)expiry_date__lteexpiry_date__gte)stock_quantity__gtbuying_price__gtrC   buying_price)total_valuer   sale__total_amount)total_spent)total_spent__gtz-total_spentr   )date_added__gteTr   )datero   total_expensesprofit_losspending_orderslow_stock_countnear_expiry_countinventory_valueinventory_report_urlzreports:inventory_reportdaily_salesweekly_salesmonthly_salessales_by_payment_methodtop_customerscustomer_growthemployee_countemployee_attendancezdashboard/dashboard.html)r   nowr   r   weekdayreplacer   r>   r?   	aggregater   r   r   r   valuesannotateorder_byr   countr
   r   r   r   r   r	   r   )rR   todayexpiry_thresholdstart_of_weekstart_of_monthsix_months_agotwo_weeks_agor   r   r   ro   r   r   r   r   r   r   r   r   r   r   r   contextr_   r_   r`   dashboard_view   s   			
r   N)$django.shortcutsr   django.httpr   django.db.modelsr   r   r   r   django.db.models.functionsr   django.urlsr	   inventory.modelsr
   customers.modelsr   suppliers.modelsr   sales.modelsr   	hr.modelsr   r   orders.modelsr   expenses.modelsr   django.contrib.auth.decoratorsr   django.utilsr   datetimer   ra   r   r_   r_   r_   r`   <module>   s&    
}