3
؀h                 @   sl  d dl mZmZmZmZmZmZmZmZ d dl	m	Z	m
Z
 d dlZd dlZd dlZd dlZd dl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 d dlmZ d dlT d dl T d dl!T dd Z"ej#ddgddd Z$ej#ddgddd Z%ej#ddgddd Z&ej#dddgddd Z'ej#ddd  Z(ej#d!d"d# Z)ej#d$d%d& Z*ej#d'd(gdd)d* Z+ej#d+d(gdd,d- Z,ej#d.dgdd/d0 Z-ej#d1dgdd2d3 Z.ej#d4d(gdd5d6 Z/ej#d7d(gdd8d9 Z0ej#d:d(gdd;d< Z1ej#d=dgdd>d? Z2ej#d@dgddAdB Z3ej#dCdgddDdE Z4dS )F    )Flaskjsonifyrender_templateurl_forrequestredirectjsonmake_response)datetime	timedeltaN)app)db)MandatoryPaymentsSeed)	Mandatory)	GuestType)MandatoryPaymentPrices) MandatoryPaymentScheduleCalendar)Destination)*c             C   s   | j j  d S )N)sessionclose)self r   6/booking_service/app/routes/mandatory_payments_urls.pyr      s    r   z/payments/default/newPOST)methodsc        
      C   s  g } y&t jd j  t jd s(| jd W n, tk
rV } z| jd W Y d d }~X nX y&t jd j  t jd s|| jd W n, tk
r } z| jd W Y d d }~X nX y&t jd j  t jd s| jd W n. tk
r  } z| jd	 W Y d d }~X nX y(t jd
 j  t jd
 s(| jd W n. tk
rX } z| jd W Y d d }~X nX y(t jd j  t jd s| jd W n. tk
r } z| jd W Y d d }~X nX y(t jd j  t jd s| jd W n. tk
r } z| jd W Y d d }~X nX y0tt jd j  tt jd s8| jd W n. tk
rh } z| jd W Y d d }~X nX y(t jd j  t jd s| jd W n. tk
r } z| jd W Y d d }~X nX | rg }|jd td| idfS tjj	t
jt
jd kj }xF|D ]>}|jj t jd j krg }|jd td|idfS qW t jd dkr`d}nt jd d krtd!}t jd" }|rd#}nd$}t
ttj t jd t jd t jd j t jd
 t jd ||t jd tj tj d%}tjj| tttj d d& t jd t jd tj tj d'}	tjj|	 y0tjj  tt g }|jd( td|id)fS  tk
r } z6tjj  tt g }|jd* t|t|d+dfS d }~X nX d S ),Nincome_account_codezIncome Account Code is empty.zIncome Account Code is missing.department_analysis_codez"Department Analysis Code is empty.z$Department Analysis Code is missing.personzPerson is empty.zPerson is missing.markerzMarker is empty.zMarker is missing.descriptionzDescription is empty.zDescription is missing.schoolz'School conservancy fee marker is empty.z)School conservancy fee marker is missing.
max_numberzMax number is empty.zMax number is missing.
session_idzSession ID is empty.zSession ID is missing.z5You appear to be missing some data. Please try again.messagesi  z+That category already exists in the system.messageYesYNoNresidency_proof   r   )payment_public_idpayment_person_income_codepayment_person_dept_codepayment_personr   maximum_numberr!   r*   r#   
created_at
updated_at   )booking_guest_type_public_idbooking_guest_type_namer#   r1   r2   z-You have added a new gate entry fee category.   zIThe gate entry fee category could not be added at this moment. Try later.)r%   error)r   r   stripappendKeyErrorstrr   r   r   queryr   filterdeletion_markerallr/   loweruuiduuid4titler
   nowaddr   commitr   	Exceptionrollback)
r$   er%   
check_name	each_namer!   proofr*   paymentguestr   r   r   add_new_default_payment   s    










rO   z/payments/public/check-in-datec        	      C   sn  t jd } tjjtjtjd kjtjdkjtj	| kjtj
| kj }|slg }|jd td|idfS tjjtjttjtjkjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtj jtjd kjtj|j!kjtjd kjtjdkjtjdkjtjdkj"tjj# j$ }g }x0|D ]&}i }|j|d	< |j|d
< |j|d< |jj% |d< |j|d< |j}|dkrd|d< nd|d< y8t&j't(j)|j}|j d d d |d< |j|d< W n( t*k
r   d|d< |j|d< Y nX |j|d< t+|j|d< d|d< d|d< |j|d< |j|d< d|d< |j|d< |j |d < |j| q.W td|id!fS d S )"Ncheck_in_date zYEntry fee pricing for the selected period has not been set. Please contact customer care.r%   i  zEa Resident StudentzNon Resident StudentzCitizen Studentr,   r-   r.   r/   payment_scheduler+   Tr*   Fdatar   currency_namepayment_person_currencypayment_person_currency_idzN/Apayment_person_descriptionpayment_person_amountpayment_person_discountpayment_guestsr   r!   amountr"   r#      ),r   r   r   r   r<   r   r=   r>   schedule_destinationschedule_start_dateschedule_end_datefirstr9   r   r   joinr   payment_categoryr,   add_columnsprice_public_idrR   payment_currencypayment_pricer/   r-   r.   rW   r   r!   r0   r*   r#   schedule_public_idorder_byascr?   rC   requestsgetget_currencyformatrG   float)	check_inget_scheduler%   
get_pricesrS   singlereturn_datarL   currencyr   r   r   query_schedule_by_check_in_date   sr    











ru   z"/payments/public/check-in-out-datec              C   s  t jd } t jd }| |kr"d}nd}tjjtjtjd kjtj|kjtj	| kjtj
|kj }|stjjtjtjd kjtj	| kjtj
|kj }|sg }|jd td|idfS tjjtjttjtjkjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtj jtjd kjtj|j!kjtjd kjtjdkjtjd	kjtjd
kj"tjj# j$ }g }x0|D ]&}i }|j|d< |j|d< |j|d< |jj% |d< |j|d< |j}	|	dkrd|d< nd|d< y8t&j't(j)|j}
|
j d d d |d< |j|d< W n( t*k
rD   d|d< |j|d< Y nX |j|d< t+|j|d< d|d< d|d< |j|d< |j|d< d|d < |j|d!< |j |d"< |j| qW td|id#fS d S )$NrP   check_out_datez$5717abc1-98e9-4928-ba35-40f2fc93b3d3rQ   zYEntry fee pricing for the selected period has not been set. Please contact customer care.r%   i  zEa Resident StudentzNon Resident StudentzCitizen Studentr,   r-   r.   r/   rR   r+   Tr*   FrS   r   rT   rU   rV   zN/ArW   rX   rY   rZ   r   r!   r[   r"   r#   r\   ),r   r   r   r   r<   r   r=   r>   r]   r^   r_   r`   r9   r   r   ra   r   rb   r,   rc   rd   rR   re   rf   r/   r-   r.   rW   r   r!   r0   r*   r#   rg   rh   ri   r?   rC   rj   rk   rl   rm   rG   rn   )ro   	check_outdestinationrp   r%   rq   rS   rr   rs   rL   rt   r   r   r   #query_schedule_by_check_in_out_date   s    












ry   z/payments/default/viewGETc              C   s.  t jjtjtjd kjtjdkj dkr4tj	  t jjtjtjd kj
tjj j } | s~g }|jd td|idfS g }x| D ]}i }|j|d< |j|d< |j|d< |jj |d	< |j|d
< |j|d< |j|d< |j|d< |j}|dk rd|d< nd|d< |j|d< |j| qW td|idfS )NInfantr   z#There are no pricing schedules set.r%   i  r,   r-   r.   r/   r   r!   r"   r#   r+   r&   r*   r(   r    rS   r\   )r   r   r<   r   r=   r>   r/   countr   seed_default_mandatory_paymentsrh   r1   descr?   r9   r   r,   r-   r.   rC   r   r!   r0   r#   r*   rW   )rp   r%   rS   rr   rs   rL   r   r   r   view_default_paymentsJ  s<    











r   z#/payments/default/view/<payment_id>c             C   s&  t jjtjtjd kjtjdkj dkr4tj	  t jjtjtjd kjtj
| kj }g }x|D ]}i }|j
|d< |j|d< |j|d< |jj |d< d|d< d	|d
< td|d< |j|d< d|d< d |d< d|d< |j|d< |j|d< d|d< |j|d< |j|d< |j| qfW td|idfS )Nr{   r   r,   r-   r.   r/   KESrU   Z1234567rV   rX   rW   rY   payment_person_discount_reasonrZ   r   r!   r[   r"   r#   rS   r\   )r   r   r<   r   r=   r>   r/   r|   r   r}   r,   r?   r-   r.   rC   rn   rW   r   r!   r0   r#   r9   r   )
payment_idreturn_paymentsoutputrr   rs   r   r   r   view_single_default_paymentsw  s:    









r   z/payments/default/view/publicc        
      C   sz  t j } tjjtjtj| jdkjtj	| jdkjtj
d kj }|sjg }|jd td|idfS g }x|D ]}tjjtjttjtjkjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtj jtj
d kjtj|j!kjtj
d kjtjdkjtjdkjtjdkj"tjj# j }x0|D ]&}i }|j|d< |j|d	< |j|d
< |jj$ |d< |j|d< |j}|dkrd|d< nd|d< y8t%j&t'j(|j}	|	j) d d d |d< |j|d< W n( t*k
r   d|d< |j|d< Y nX |j|d< t+|j|d< d|d< d|d< |j|d< |j|d< d|d< |j|d< |j |d< |j| q:W qvW td|id fS )!Nz%Y-%m-%dz#There are no pricing schedules set.r%   i  zEa Resident StudentzNon Resident StudentzCitizen Studentr,   r-   r.   r/   rR   r+   Tr*   FrS   r   rT   rU   rV   zN/ArW   rX   rY   rZ   r   r!   r[   r"   r#   r\   ),r
   rD   r   r   r<   r   r=   r^   strftimer_   r>   r?   r9   r   r   ra   r   rb   r,   rc   rd   rR   re   rf   r/   r-   r.   rW   r   r!   r0   r*   r#   rg   rh   ri   rC   rj   rk   rl   rm   r   rG   rn   )
todayrp   r%   rS   single_schedulerq   rr   rs   rL   rt   r   r   r   view_default_public_payments  sr    	











r   z/payments/default/view/schoolc        
      C   s  t jjtjtjd kjtjdkj dkr4tj	  t
j } t jjtjtjd kjtj| jdkjtj| jdkj }|sg }|jd td|idfS g }x|D ]}t jjtjttjtjkjtjtjtjtjtjtjtjtjtjtjtjtj tj!tj"tj#jtjd kjtj|j$kjtjd kjtj dkj%tjj& j }x0|D ]&}i }|j|d< |j|d	< |j|d
< |jj' |d< |j|d< |j"}|dkrd|d< nd|d< y8t(j)t*j+|j}	|	j, d d d |d< |j|d< W n( t-k
r   d|d< |j|d< Y nX |j|d< t.|j|d< d|d< d|d< |j|d< |j |d< d|d< |j!|d< |j#|d< |j| qVW qW td|idfS ) Nr{   r   z%Y-%m-%dz#There are no pricing schedules set.r%   i  r'   r,   r-   r.   r/   rR   r+   Tr*   FrS   rT   rU   rV   zN/ArW   rX   rY   rZ   r   r!   r[   r"   r#   r\   )/r   r   r<   r   r=   r>   r/   r|   r   r}   r
   rD   r   r^   r   r_   r?   r9   r   r   ra   rb   r,   rc   rd   rR   re   rf   r-   r.   rW   r   r!   r0   r*   r#   rg   rh   ri   rC   rj   rk   rl   rm   r   rG   rn   )
r   rp   r%   rS   r   rq   rr   rs   rL   rt   r   r   r   !view_default_school_trip_payments  sx    











r   z/payments/default/modifyPATCHc        
      C   s  g } y&t jd j  t jd s(| jd W n, tk
rV } z| jd W Y d d }~X nX y&t jd j  t jd s|| jd W n, tk
r } z| jd W Y d d }~X nX y&t jd j  t jd s| jd W n. tk
r  } z| jd	 W Y d d }~X nX y(t jd
 j  t jd
 s(| jd W n. tk
rX } z| jd W Y d d }~X nX y(t jd j  t jd s| jd W n. tk
r } z| jd W Y d d }~X nX y(t jd j  t jd s| jd W n. tk
r } z| jd W Y d d }~X nX y(t jd j  t jd s0| jd W n. tk
r` } z| jd W Y d d }~X nX y0tt jd j  tt jd s| jd W n. tk
r } z| jd W Y d d }~X nX y(t jd j  t jd s| jd W n. tk
r } z| jd W Y d d }~X nX t jd }|r0d}nd}| rXg }|jd td | id!fS tjj	t
jt
jd kjt
jt jd kj }|sg }|jd" td#|id!fS t jd d$krd%}nt jd d&krd'}tjj	tjtjd kj }x0|D ](}|jj |jj krt jd
 |_qW t jd |_t jd |_t jd
 |_t jd |_t jd |_||_t jd |_||_t jd |_tj |_y0tjj  t t g }	|	jd( td#|	id)fS  t!k
r } z8t"| tjj#  t t g }	|	jd* td#|	id!fS d }~X nX d S )+Nr   zPayment ID is empty.zPayment ID is missing.r   zIncome Account Code is empty.zIncome Account Code is missing.r   z"Department Analysis Code is empty.z$Department Analysis Code is missing.r   zPerson is empty.zPerson is missing.r   zMarker is empty.zMarker is missing.r    zDescription is empty.zDescription is missing.r!   z'School conservancy fee marker is empty.z)School conservancy fee marker is missing.r"   zMax number is empty.zMax number is missing.r#   zSession ID is empty.zSession ID is missing.r*   r+   r   z5You appear to be missing some data. Please try again.r$   i  zMThat gate entry fee does not appear to exist in the system. Please try again.r%   r&   r'   r(   r)   z2The gate entry fee has been modified successfully.r\   zRThere was a slight issue modifying the gate entry fee. :-( Please try again later.)$r   r   r8   r9   r:   r;   r   r   r   r<   r   r=   r>   r,   r`   r   r?   r5   r@   r/   r-   r.   r   r0   r!   rW   r*   r#   r
   rD   r2   rF   r   rG   printrH   )
r$   rI   rL   r*   r%   get_paymentr!   get_guest_typesingle_guest_typer   r   r   r   edit_default_payment[  s    









r   z/payments/default/deletec           ,   C   s(  g } y&t jd j  t jd s(| jd W n, tk
rV } z| jd W Y d d }~X nX y&t jd j  t jd s|| jd W n, tk
r } z| jd W Y d d }~X nX | rg }|jd t|| dd	fS tjjt	j
t	jd kj
t	jt jd kj }|s"g }|jd
 td|id	fS tjjtj
tjd kj }x@|D ]8}|jj |jj krDd|_t jd |_tj |_qDW d|_t jd |_tj |_y0tjj  tt g }|jd td|idfS  tk
r" } z8t| tjj  tt g }|jd td|id	fS d }~X nX d S )Nr   zPayment ID is empty.zPayment ID is missing.r#   zSession ID is empty.zSession ID is missing.z5You appear to be missing some data. Please try again.)r%   r$   i  zMThat gate entry fee does not appear to exist in the system. Please try again.r%   r+   z1The gate entry fee has been deleted successfully.r\   zQThere was a slight issue deleting the gate entry fee. :-( Please try again later.)r   r   r8   r9   r:   r   r   r   r<   r   r=   r>   r,   r`   r   r?   r5   r@   r/   r#   r
   rD   r2   rF   r   rG   r   rH   )r$   rI   r%   r   r   r   r   r   r   r   delete_default_payment  sd    







r   z/payments/schedule/newc           =   C   s  g } y&t jd j  t jd s(| jd W n, tk
rV } z| jd W Y d d }~X nX y&t jd j  t jd s|| jd W n, tk
r } z| jd W Y d d }~X nX y&t jd j  t jd s| jd W n. tk
r  } z| jd	 W Y d d }~X nX | rtd
| idfS tjjt	j
t	jd kj }g }x|D ]}|j|j q>W tt jd t|k rg }|jdttt jd  d tt| d  td|idfS tt jd t|krg }|jd td|idfS t jd tj jdk rg }|jd td|idfS t jd tj jdk rVg }|jd td|idfS t jd t jd k rg }|jd td|idfS tjt jd }tjt jd }t jd }y|d }	W n tk
r   d }	Y nX ttj }
t|
|||	t jd tj tj d}tjj| x^t jd D ]P}tttj |
|d |d t|d t jd tj tj d}tjj| q$W y0tjj  tt g }|jd td|idfS  tk
r   tjj  tt g }|jd td|idfS X d S ) N
start_datezStart date is empty.zStart date is missing.end_datezEnd date is empty.zEnd date is missing.r#   zSession ID is empty.zSession ID is missing.r$   i  feeszYou have set the pricing for z residency types while z. are expected. Please check on the set values.r%   zkYou've set the pricing for more residency types than the system can accept. Please check on the set values.z%Y-%m-%dz.The schedule start date cannot be in the past.z,The schedule end date cannot be in the past.z8The schedule end date cannot come before the start date.destination_detailsdestination_public_id)rg   r^   r_   r]   r#   r1   r2   r/   rt   r[   )rd   rR   rb   re   rf   r#   r1   r2   z Successfully saved the schedule.r6   zEThere was an error while saving the schedule. Please try again later.)r   r   r8   r9   r:   r   r   r   r<   r   r=   r>   r?   r,   lenr;   r
   rD   r   GenerateDateFromStringgenerateDaterG   rA   rB   r   rE   r   rn   rF   r   rH   )r$   rI   Zget_all_categories
categorieseach_categoryr%   r   r   Zdestination_objrx   schedule_idZscheduleZeach_feeZpayment_pricesr   r   r   add_new_payment_schedule/  s    



$








r   z/payments/schedule/viewc              C   s  t jjtjtjd kjtjj j	 } | sJg }|j
d td|idfS g }x| D ]}i }|j|d< |j|d< |j|d< |jrt jjtjtjd kjtj|jkj }|j|d< nd |d< |j|d< t jjtjttjtjkjtjtjtjtjtjtjjtjd kjtj|jkj	 }g }x|D ]}i }	|j|	d	< |j|	d
< y8tjt j!|j}
|
j" d d d |	d< |j|	d< W n( t#k
r   d|	d< |j|	d< Y nX t$|j|	d< |j
|	 q,W ||d< |j
| qVW td|idfS d S )Nz4There do not appear to be any pricing schedules set.r%   i  rg   r^   r_   r]   Zschedule_destination_idr/   rd   rS   r   rT   re   Zpayment_currency_idzN/Arf   r   r\   )%r   r   r<   r   r=   r>   rh   r^   r~   r?   r9   r   rg   r_   r]   r   gatepass_destination_public_idr`   gatepass_destination_namer   ra   r   rb   r,   rc   rd   rR   re   rf   r/   rj   rk   rl   rm   r   rG   rn   )get_schedulesr%   rS   r   Zreturn_scheduleget_destinationrq   Z
price_datasingle_priceZreturn_pricert   r   r   r   view_all_payment_schedules  s^    







r   z/payments/schedule/modifyc           K   C   s2  g } y&t jd j  t jd s(| jd W n, tk
rV } z| jd W Y d d }~X nX y&t jd j  t jd s|| jd W n, tk
r } z| jd W Y d d }~X nX y&t jd j  t jd s| jd W n. tk
r  } z| jd	 W Y d d }~X nX y(t jd
 j  t jd
 s(| jd W n. tk
rX } z| jd W Y d d }~X nX | rptd| idfS t jd tj jdk rg }|jd td|idfS t jd tj jdk rg }|jd td|idfS t jd t jd k rg }|jd td|idfS yt jd }W n t	k
r<   d }Y nX t
jjtjtjd kjtjt jd kj }|sg }|jd td|idfS t jd |_t jd |_||_t jd
 |_y0t
jj  tt
 g }|jd td|idfS  t	k
r,   t
jj  tt
 g }|jd td|idfS X d S )Nr   zSchedule ID is empty.zSchedule ID is missing.r   zStart date is empty.zStart date is missing.r   zEnd date is empty.zEnd date is missing.r#   zSession ID is empty.zSession ID is missing.r$   i  z%Y-%m-%dz.The schedule start date cannot be in the past.r%   z,The schedule end date cannot be in the past.z8The schedule end date cannot come before the start date.rx   z=The selected schedule does not appear to exist in the system.i  z'The selected schedule has been updated.r\   zCThere was an error updating the selected schedule. Try again later.)r   r   r8   r9   r:   r   r
   rD   r   rG   r   r   r<   r   r=   r>   rg   r`   r^   r_   r]   r#   rF   r   rH   )r$   rI   r%   rx   rp   r   r   r   update_payment_schedule  s    








r   z/payments/schedule/item/modifyc           C   C   sL  g } y&t jd j  t jd s(| jd W n, tk
rV } z| jd W Y d d }~X nX y&t jd j  t jd s|| jd W n, tk
r } z| jd W Y d d }~X nX y&t jd j  t jd s| jd W n. tk
r  } z| jd	 W Y d d }~X nX y(t jd
 j  t jd
 s(| jd W n. tk
rX } z| jd W Y d d }~X nX tjjtj	tj
d kj	tjt jd kj }|sg }|jd td|idfS t jd |_tt jd |_t jd
 |_y0tjj  tt g }|jd td|idfS  tk
rF   tjj  tt g }|jd td|idfS X d S )Nprice_idzPrice ID is empty.zPrice ID is missing.rt   zCurrency is empty.zCurrency is missing.r[   zAmount is empty.zAmount is missing.r#   zSession ID is empty.zSession ID is missing.z2The selected pricing schedule item does not exist.r%   r\   z)Successfully saved the change to pricing.zEThere was an error saving the change to the pricing. Try again later.i  )r   r   r8   r9   r:   r   r   r<   r   r=   r>   rd   r`   r   re   rn   rf   r#   rF   r   rG   rH   )r$   rI   Zget_schedule_itemr%   r   r   r   update_payment_schedule_itemW  s`    






r   z/payments/schedule/deletec           '   C   s  g } y&t jd j  t jd s(| jd W n, tk
rV } z| jd W Y d d }~X nX y&t jd j  t jd s|| jd W n, tk
r } z| jd W Y d d }~X nX tjjtj	tj
d kj	tjt jd kj }| sg }|jd td|id	fS d
|_
tj |_t jd |_tjjtj	tj
d kj	tj|jkj }x*|D ]"}d
|_
tj |_t jd |_qJW y0tjj  tt g }|jd td|idfS  tk
r   tjj  tt g }|jd td|idfS X d S )Nr   zSchedule ID is empty.zSchedule ID is missing.r#   zSession ID is empty.zSession ID is missing.z=The selected schedule does not appear to exist in the system.r%   i  r+   z'The selected schedule has been deleted.r\   zCThere was an error deleting the selected schedule. Try again later.i  )r   r   r8   r9   r:   r   r   r<   r   r=   r>   rg   r`   r   r
   rD   r2   r#   r   rR   r?   rF   r   rG   rH   )r$   rI   r   r%   rq   r   r   r   r   delete_payment_schedule  sX    







r   z/payments/schedule/clearc              C   s0  t j } tjjtjtjd kjtj| j	dk j
 }|sXg }|jd td|idfS xp|D ]h}d|_t j |_d|_tjjtjtjd kjtj|jkj
 }x"|D ]}d|_t j |_d|_qW q^W y0tjj  tt g }|jd td|idfS  tk
r*   g }|jd td|idfS X d S )	Nz%Y-%m-%dz(There are no expired schedules to clear.r%   r\   r+   z
Clear taskz'Successfully cleared expired schedules.z&Unable to clear the expired schedules.)r
   rD   r   r   r<   r   r=   r>   r_   r   r?   r9   r   r2   r#   r   rR   rg   rF   r   rG   )r   rp   r%   rr   r   rq   r   r   r   clear_expired_schedules  s:    







r   z/payments/entry_feesc           (   C   s  t j } ytjd }W n tk
r.   d }Y nX ytjd }W n tk
rV   d }Y nX ytjd }W n tk
r~   d }Y nX g }|r2tjjtj	tj
d kj	tj|kj	tjtjd kj	tjtjd kj }|jd |stjjtj	tj
d kj	tjtjd kj	tjtjd kj }|jd nVtjjtj	tj
d kj	tjdkj	tjtjd kj	tjtjd kj }|jd |sg }|jd t||d	d
fS g }tjjtjttjtjkjtjtjtjtjtjtjtjtjtjtjtjtj tj!tj"tj#j	tj
d kj	tj|j$kj	tj
d kj%tjj& j' }x0|D ]&}i }	|j|	d< |j|	d< |j|	d< |jj( |	d< |j|	d< |j"}
|
dkrd|	d< nd|	d< y8t)j*t+j,|j}|j d d d |	d< |j|	d< W n( tk
r   d|	d< |j|	d< Y nX |j|	d< t-|j|	d< d|	d< d|	d< |j|	d< |j |	d< d|	d < |j!|	d!< |j#|	d"< |j|	 qLW td|id#fS d S )$NrP   rv   rx   zStage 1zStage 2rQ   zStage 3z#There are no pricing schedules set.)r%   rS   i  r,   r-   r.   r/   rR   r+   Tr*   FrS   r   rT   rU   rV   zN/ArW   rX   rY   rZ   r   r!   r[   r"   r#   r\   ).r
   rD   r   r   rG   r   r   r<   r   r=   r>   r]   r^   r_   r`   r9   r   r   ra   r   rb   r,   rc   rd   rR   re   rf   r/   r-   r.   rW   r   r!   r0   r*   r#   rg   rh   ri   r?   rC   rj   rk   rl   rm   rn   )r   r   r   rx   rS   rp   r%   rq   rr   rs   rL   rt   r   r   r   view_entry_fees_schedule  s    
















r   z/payments/entry_fees/schoolc           )   C   s  t j } ytjd }W n tk
r.   d }Y nX ytjd }W n tk
rV   d }Y nX ytjd }W n tk
r~   d }Y nX |r&tjjtj	tj
d kj	tj|kj	tjtjd kj	tjtjd kj }|srtjjtj	tj
d kj	tjd kj	tjtjd kj	tjtjd kj }nLtjjtj	tj
d kj	tjd kj	tjtjd kj	tjtjd kj }|sg }|jd td|idfS g }x|D ]}tjjtjttjtjkjtjtjtjtjtjtjtjtjtjtjtjtj tj!tj"tj#j	tj
d kj	tj|j$kj	tj
d kj	tj dkj%tjj& j }x0|D ]&}	i }
|	j|
d< |	j|
d	< |	j|
d
< |	jj' |
d< |	j|
d< |	j"}|dkrd|
d< nd|
d< y8t(j)t*j+|	j}|j d d d |
d< |	j|
d< W n( tk
r   d|
d< |	j|
d< Y nX |	j|
d< t,|	j|
d< d|
d< d|
d< |	j|
d< |	j |
d< d|
d< |	j!|
d< |	j#|
d< |j|
 qNW qW td|id fS d S )!NrP   rv   rx   z#There are no pricing schedules set.r%   i  r'   r,   r-   r.   r/   rR   r+   Tr*   FrS   r   rT   rU   rV   zN/ArW   rX   rY   rZ   r   r!   r[   r"   r#   r\   )-r
   rD   r   r   rG   r   r   r<   r   r=   r>   r]   r^   r_   r?   r9   r   r   ra   r   rb   r,   rc   rd   rR   re   rf   r/   r-   r.   rW   r   r!   r0   r*   r#   rg   rh   ri   rC   rj   rk   rl   rm   rn   )r   r   r   rx   rp   r%   rS   r   rq   rr   rs   rL   rt   r   r   r   view_school_entry_fees_schedule  s    














r   )5flaskr   r   r   r   r   r   r   r	   r
   r   pymysqlosmathrj   rA   routesr   r   routes.seed_functionsr   database.mandatory_paymentsr   database.booking_guest_typesr   !database.mandatory_payment_pricesr   Z#database.mandatory_payment_scheduler   database.destinationr   	variablesfunctions.booking_snippetsfunctions.date_operatorsr   routerO   ru   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   sB   (( O]-5VY JN[A>+~