3
؀ho                 @   s\  d dl 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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,m-Z- d dl.m/Z/ d dl0T dd Z1ej2ddgddd Z3ej2ddgddd  Z4ej2d!dgdd"d# Z5ej2d$d%d& Z6ej2d'd(d) Z7ej2d*dgdd+d, Z8ej2d-dgdd.d/ Z9ej2d0dgdd1d2 Z:ej2d3dgdd4d5 Z;ej2d6dgdd7d8 Z<ej2d9d:gdd;d< Z=ej2d=d:gdd>d? Z>dS )@    )Flaskjsonifyrender_templateurl_forrequestredirectjson)datetime	timedeltaN)app)db)db_cache)	FromCache)get_booking_status_id)	Inventory)Invoice)Booking)BookingActivity)BookingGuest)BookingStatus)BookingType)	GuestType)	Mandatory)GatepassGuest)Gatepass)Partner)GenerateDateFromString)*c             C   s   | j j  d S )N)sessionclose)self r!   6/booking_service/app/routes/bookings_inventory_urls.pyr      s    r   z/bookings/inventory/newPOST)methodsc           V   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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 | rg }|jd t|| ddfS tj j	d}t
jtjt jd }|j d d d }tttj t jd t jd |t jd t jd
 t jd d}tj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 )N
booking_idzBooking ID is empty.zBooking ID is missing.inventory_idzActivity ID is empty.zActivity ID is missing.datezDate is empty.zDate is missing.guestszGuests is empty.zGuests is missing.
session_idzSession ID is empty.zSession ID is missing.z5You appear to be missing some data. Please try again.)messagemessagesi  z%Y-%m-%ddatar   code)inventory_booking_public_idr%   r&   inventory_codeinventory_booking_dateinventory_booking_guestsr)   z4The activity booking has been made. Please carry on.r*      zeIt's us, not you. There was an error while creating the activity booking. :-( Please try again later.)r   r   stripappendKeyErrorstrr   r	   nowstrftimerequestsgetget_inventory_detailsformatr   uuiduuid4r   r   addcommitr   	Exceptionprintrollback)r+   er*   todayinventory_datasingle_inventory_codeZinventory_bookingoutputr!   r!   r"   add_new_inventory_booking$   sx    








rI   z$/bookings/inventory/unavailable/datec              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 | r|g }|jd t|| ddfS tjjt	j
tt	jtjkjt	jjt	jd kjt	jt jd kjt	jtdkjt	jtdkjtjd kjtjtdkj }g }x&|D ]}i }|j|d	< |j| qW td
|idfS )Nr'   zDate is empty.zDate is missing.z5You appear to be missing some data. Please try again.)r*   r+   i  	CancelledUpdatedr&   r,      )r   r   r3   r4   r5   r   r   r   queryr   joinr   r%   booking_public_idadd_columnsr&   filterdeletion_markerr0   statusr   all)r+   rD   r*   return_unavailablerH   singlereturn_datar!   r!   r"   (check_unavailable_inventory_booking_date{   s4    



rX   z)/bookings/inventory/unavailable/inventoryc              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 | r|g }|jd t|| ddfS tjjt	j
t	jd kj
t	jt jd kj }g }x$|D ]}i }|j|d< |j| qW td|id	fS )
Nr&   zActivity ID is empty.zActivity ID is missing.z5You appear to be missing some data. Please try again.)r*   r+   i  r'   r,   rL   )r   r   r3   r4   r5   r   r   r   rM   r   rQ   rR   r&   rT   r0   )r+   rD   r*   rU   rH   rV   rW   r!   r!   r"   -check_unavailable_inventory_booking_inventory   s(    



rY   z/bookings/inventory/viewc              C   s   t jjtjtjd kj dkr>g } | jd td| idfS t jjtjtjd kj	 }g } x\|D ]T}i }|j
|d< |j|d< |j|d< |j|d< |j|j |d	< |j|d
< | j| qdW td| idfS )Nr   z-There are no activity bookings in the system.r*   i  r.   r%   r&   r0   r1   r)   r,   rL   )r   r   rM   r   rQ   rR   countr4   r   rT   r.   r%   r&   r0   inventory_booking_adultsinventory_booking_childrenr)   )rH   return_bookingsrV   rW   r!   r!   r"   get_all_inventory_bookings   s&    






r^   z'/bookings/inventory/view/<inventory_id>c             C   s   t j jd}tjjtjtjd kjtj	| kj
 dkrXg }|jd td|idfS tjjtjtjd kjtj	| kj }g }xf|D ]^}i }|j|d< |j|d< |j|d< |j|j |d	< |j|d
< |j|d< |j|d< |j| qW td|idfS )Nz%Y-%m-%dr   z-There are no activity bookings in the system.r*   i  r%   r&   r0   r1   r)   
created_at
updated_atr,   rL   )r	   r7   r8   r   r   rM   r   rQ   rR   r.   rZ   r4   r   rT   r%   r&   r0   r[   r\   r)   r_   r`   )r&   rE   rH   r]   rV   rW   r!   r!   r"   get_single_inventory_bookings   s.    







ra   z/bookings/inventory/searchc        
   C   C   sB  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 | rg }|jd t|| d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
jt	jd kjt	jt jd kjt	jt jd kjt	jt jd kjtjd kjtjd kj }tjtjt jd }|j d d d }|stg }|jd td|idfS g }g }x|D ]}i }	|j|	d< |j|	d< |j d d d |	d< |j|	d< |j|	d< |j|j |	d< |j|	d< |j|	d< t |j|	d< t |j|	d< |j|	d< |j|	d
< |j|	 qW td|idfS d S ) Nr&   zActivity ID is empty.zActivity ID is missing.
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.z5You appear to be missing some data. Please try again.)r*   r+   i  r,   r   maximum_guestsz7There are no inventory bookings within that date range.rL   r.   r%   nameinventory_namer0   r1   r[   r\   inventory_cost_per_adultinventory_cost_per_childinventory_cost_currency)!r   r   r3   r4   r5   r   r   r   rM   r   rN   r   r%   rO   rP   r.   r0   r&   r[   r\   rg   rh   ri   r)   rQ   rR   modifiedrT   r9   r:   r;   r<   float)
r+   rD   r*   return_booking_detailsinventory_details
max_guestsrH   guest_arrayeach_bookingrW   r!   r!   r"   !search_inventory_bookings_by_date   s    













rq   z#/bookings/inventory/view/by_id_datec           !   C   sz  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 | rtd| idfS tjtj	t jd }|j }t
jjtjtjd kjtjt jd kjtjt jd kjtjtd	kjtjtd
kj }tjtj	t jd }|j d d d }i }|j d d d rxJ|j d d d D ]2}|d t jd k|d t jd k@ r|}n qW |r|d }nd}|sg }	i }
|| |
d< |	j|
 td|	idfS g }	g }x |D ]}|j|j|j  q$W t|}i }
|||  |
d< |	j|
 td|	idfS d S )Nr&   zActivity ID is empty.zActivity ID is missing.r'   zDate is empty.zDate is missing.r+   i  rJ   rK   r,   r   rd   unavailability_schedule_setunavailability_schedulestart_date_formattedend_date_formattedunavailability_numberavailable_slotsrL   )r   r   r3   r4   r5   r   r9   r:   r;   r<   r   r   rM   r   rQ   rR   r&   r0   rS   r   rT   r[   r\   sum)r+   rD   get_inventoryrm   rl   rn   active_unavailabilityeach_schedulerv   rH   rW   ro   rp   Zcurrent_guest_totalr!   r!   r"   get_inventory_by_id_and_dateS  sb    

&



r|   z!/bookings/inventory/view/schedulec        !      C   sx  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 | r|g }|jd t|| ddfS tj j }tj	 t
|d d }tj	 t
d	| d }tj j }|t
d
d }|t
d
d }tj	 }	tj	 t
dd }
tjjtjtjd kjtjt jd kjtj|	jdkj }tjjtjtjd kjtjt jd kjtj|
jdkj }tjjtjtjd kjtjt jd kjtj|jdkjtj|jdkj }tjjtjtjd kjtjt jd kjtj|jdkjtj|jdkj }tjjtjtjd kjtjt jd kjtj|	jdkj }g }xb|D ]Z}i }|j|d< |j|d< |j|d< |j|d< |j|d< |j|d< |j|d< |j| qdW tjjtjtjd kjtjt jd kjtj|
jdkj }g }xb|D ]Z}i }|j|d< |j|d< |j|d< |j|d< |j|d< |j|d< |j|d< |j| qW tjjtjtjd kjtjt jd kjtj|jdkjtj|jdkj }g }xb|D ]Z}i }|j|d< |j|d< |j|d< |j|d< |j|d< |j|d< |j|d< |j| qW tjjtjtjd kjtjt jd kjtj|jdkjtj|jdkj }g }xb|D ]Z}i }|j|d< |j|d< |j|d< |j|d< |j|d< |j|d< |j|d< |j| qW g }i } || d< || d< || d< || d< || d< || d< || d< || d< |jd| d< |jd| d< |jd| d< |jd| d< |j|  td|id fS )!Nr&   zActivity ID is empty.zActivity ID is missing.z5You appear to be missing some data. Please try again.)r*   r+   i     )days      z%Y-%m-%dr.   r%   r/   r0   r[   r\   today_counttoday_bookingstomorrow_counttomorrow_bookingsthis_week_countthis_week_bookingsnext_week_countnext_week_bookingsz%y-%m-%ddate_start_of_weekdate_end_of_weekdate_start_of_next_weekdate_end_of_next_weekr,   rL   )r   r   r3   r4   r5   r   r	   rE   weekdayr7   r
   r   r   rM   r   rQ   rR   r&   r0   r8   rZ   rT   r.   r%   r/   r[   r\   )!r+   rD   r*   r   start_of_weekend_of_weeknext_weekdaystart_of_next_weekend_of_next_weekrE   tomorrowcount_bookings_todaycount_bookings_tomorrowcount_bookings_this_weekcount_bookings_next_weekget_bookings_todaytoday_arraysingle_todayreturn_bookings_todayget_bookings_tomorrowtomorrow_arraysingle_tomorrowreturn_bookings_tomorrowget_bookings_this_weekthis_week_arraysingle_this_weekreturn_bookings_this_weekget_bookings_next_weeknext_week_arraysingle_next_weekreturn_bookings_next_weekr,   booking_scheduler!   r!   r"   get_inventory_schedule  s    


































r   z/bookings/inventory/listc           ;   C   sd	  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 | rtd| idfS tjt jd }tj	t
jt jd }|j }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!tj"tj#tj$j%tjd kj%tj&t jd kj%tj't jd kj%tjt(d	kj%tjt(d
kj) }i }|d d d rxF|d d d D ]2}|d t jd k|d t jd k@ r|}n qW |sg }|ri }	d|	d< d|	d< d|	d< |d |	d< |d |	d< d|d  d |	d< d|	d< |d |	d< g |	d < |d |	d!< d|	d"< d|	d#< |d$ |	d$< |d$ |	d%< d|	d&< d|	d'< |j|	 td|id(fS g }
|
jd)|j*d*  t|
g d+d,fS nXg }|ri }	d|	d< d|	d< d|	d< |d |	d< |d |	d< d|d  d |	d< d|	d< |d |	d< g |	d < |d |	d!< d|	d"< d|	d#< |d$ |	d$< |d$ |	d%< d|	d&< d|	d'< |j|	 x|D ]~}i }|j|d< tjjt+j%t+jd kj%t+j,|jkj- }|j.|d< |j|d< |j|d< |j|d< |j|d< |j|d< tjjt/j%t/jd kj%t/j|jkj) }t0|j!t0|j" t0|j# t0|j$ |d< g }g }tjjt1jt2t1j3t2j4kjt5t1j6t5j7kjt2j8t2j4t1j9t1j:t1j;t1j<j%t1jd kj%t1jt(d	kj%t5j|jkj=t>t?j) }x@|D ]8}i }|j8|d-< |j9|d.< |j| |jt0|j9 q*W ||d < t0|j!t0|j" t0|j# t0|j$ |d!< tjjt@j%t@jd kj%t@j|jkj- }tjjtAj%tAjd kj%tAjB|jkj- }|r>|jd/krd
|d"< d0jtCjDd1 |d2< nd3|d"< d0jtCjDd4 |d2< n|jd/krjd5|d"< d0jtCjDd6 |d2< nX|jd/krd7|d"< d8jtCjDd9 |d2< n,|jd/krd
|d"< d0jtCjDd1 |d2< n |jEd:krd0jtCjDd; |d2< n|jEd<krd0jtCjDd= |d2< n|jEd>kr(d0jtCjDd? |d2< n|jEd@krJd0jtCjDdA |d2< nn|jEd	krld0jtCjDdB |d2< nL|jEdCkrd0jtCjDdD |d2< n*|jEdEkrd0jtCjDdF |d2< ndG|d2< |jE|d"< |j|d#< |j|d$< |j|d%< g }x|D ]}|j|j  qW ytjFtGdH|idI}W n6 tjHjItjHjJtjHjKfk
rL } zW Y d d }~X nX |j 	r.|j dJkrvdK|d&< |j |d'< nyBx<|j d D ],}|dL |j kr|dM |d&< |j |d'< qW W nr tLtfk
r } zd|d&< |j |d'< W Y d d }~X n: tMtNfk
	r* } zdN|d&< |j |d'< W Y d d }~X nX nd|d&< |j |d'< |j| qW td|id(fS d S )ONr&   zInventory ID is empty.zInventory ID is missing.r'   zDate is empty.zDate is missing.r+   i  rK   rJ   r,   r   rr   rs   rt   ru   zN/ArO   booking_typebooking_type_idunavailability_start_datebooking_check_in_dateunavailability_end_datebooking_check_out_datezUnavailability (unavailability_reason)booking_done_bybooking_ref_coderv   r1   r(   guest_totalbooking_statusbooking_status_idr_   r`   session_userr)   rL   z6There are no activity bookings for the selected date: z%d %b %Y)r*   r,   i  
guest_typeno_of_guestsr}   z!background-color: {}; color: #fff	CANCELLEDbooking_colorz
To Invoice
TO_INVOICEzChecked OutCHECKED_OUTz
Checked Inz background-color:{}; color: #fff
CHECKED_INUnconfirmedUNCONFIRMED	Confirmed	CONFIRMEDzNo-ShowNO_SHOW	Abandoned	ABANDONEDUPDATEDDepositDEPOSITComplimentaryCOMPLIMENTARYz&background-color: #fff; color: #000000	users_ids)r   guestPublic	public_id	full_namezNetwork Error)Or   r   r3   r4   r5   r   r   generateDater9   r:   r;   r<   r   r   rM   r   rN   r   r%   rO   rP   r   r   r   r   r   rS   r_   r`   rR   
checked_inchecked_outr)   r[   r\   inventory_booking_extra_adults inventory_booking_extra_childrenrQ   r&   r0   r   rT   r8   r   booking_type_public_idfirstbooking_type_namer   intr   r   gatepass_guest_typepayment_public_idr   gatepass_idgatepass_public_idpayment_persongatepass_guest_countgatepass_discount_rategatepass_cost_per_ppgatepass_no_of_nightsoptionsr   r   r   r   booking_status_public_idr   configbooking_status_namepostget_user_from_aumra
exceptionsConnectionErrorTimeoutConnectTimeout
IndexErrorAttributeErrorUnboundLocalError)r+   rD   requested_datery   rm   r]   rz   r{   r,   return_unavailabilityr*   rH   rV   rW   r   
get_guestsro   	guest_sumget_all_guests
each_guest
guest_datacheck_to_invoicer   id_arrayeach_idreturn_userconnection_erroruser
user_errornetwork_related_errorsr!   r!   r"   list_inventory_bookings  st   

&









,



,




$
r   z /bookings/inventory/partner/listc           I   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t jd }tj	t
jt jd }|j }tjjtjttjtjk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"tj#tj$tj%j&tjd kj&tj't jd kj&tj(t jd kj&tjt)dkj&tjt)dkj&tj*t jd kj+ }i }|d d d rxF|d d d D ]2}|d t jd k|d t jd k@ rL|}n qLW |sg }|rTi }	d|	d< d|	d< d|	d< |d |	d< |d |	d< d|d  d |	d< d|	d < |d! |	d"< g |	d#< |d! |	d$< d|	d%< d|	d&< |d |	d'< |d |	d(< d|	d)< d|	d*< |j|	 td|id+fS g }
|
jd,|j,d-  t|
g d.d/fS nXg }|r>i }	d|	d< d|	d< d|	d< |d |	d< |d |	d< d|d  d |	d< d|	d < |d! |	d"< g |	d#< |d! |	d$< d|	d%< d|	d&< |d |	d'< |d |	d(< d|	d)< d|	d*< |j|	 x|D ]~}i }|j|d< tjjt-j&t-jd kj&t-j.|jkj/ }|j0|d< |j|d< |j|d< |j|d< |j|d< |j|d < tjjt1j&t1jd kj&t1j|jkj+ }t2|j"t2|j# t2|j$ t2|j% |d"< g }g }tjjt3jt4t3j5t4j6kjt7t3j8t7j9kjt4j:t4j6t3j;t3j<t3j=t3j>j&t3jd kj&t3jt)dkj&t7j|jkj?t@tAj+ }x@|D ]8}i }|j:|d0< |j;|d1< |j| |jt2|j; qW ||d#< t2|j"t2|j# t2|j$ t2|j% |d$< tjjtBj&tBjd kj&tBj|jkj/ }tjjtCj&tCjd kj&tCjD|jkj/ }|r|jd2krd|d%< d3jtEjFd4 |d5< nd6|d%< d3jtEjFd7 |d5< n|j d2krd8|d%< d3jtEjFd9 |d5< nX|jd2krd:|d%< d;jtEjFd< |d5< n,|jd2kr<d|d%< d3jtEjFd4 |d5< n |jGd=kr^d3jtEjFd> |d5< n|jGd?krd3jtEjFd@ |d5< n|jGdAkrd3jtEjFdB |d5< n|jGdCkrd3jtEjFdD |d5< nn|jGdkrd3jtEjFdE |d5< nL|jGdFkrd3jtEjFdG |d5< n*|jGdHkr*d3jtEjFdI |d5< ndJ|d5< |jG|d%< |j|d&< |j|d'< |j|d(< g }x|D ]}|j|j! qdW ytjHtIdK|idL}W n6 tjJjKtjJjLtjJjMfk
r } zW Y d d }~X nX |j!	r|j!dMkrdN|d)< |j!|d*< nyBx<|j d D ],}|dO |j!k	r |dP |d)< |j!|d*< 	q W W nr tNtfk
	rl } zd|d)< |j!|d*< W Y d d }~X n: tOtPfk
	r } zdQ|d)< |j!|d*< W Y d d }~X nX nd|d)< |j!|d*< |j| qFW td|id+fS d S )RNr&   zInventory ID is empty.zInventory ID is missing.r'   zDate is empty.zDate is missing.
partner_idzPartner ID is empty.zPartner ID is missing.r+   i  rK   rJ   r,   r   rr   rs   rt   ru   zN/ArO   r   r   r   r   r   r   zUnavailability (r   r   r   r   rv   r1   r(   r   r   r   r_   r`   r   r)   rL   z6There are no activity bookings for the selected date: z%d %b %Y)r*   r,   i  r   r   r}   z!background-color: {}; color: #fffr   r   z
To Invoicer   zChecked Outr   z
Checked Inz background-color:{}; color: #fffr   r   r   r   r   zNo-Showr   r   r   r   r   r   r   r   z&background-color: #fff; color: #000000r   )r   r   r   r   r   zNetwork Error)Qr   r   r3   r4   r5   r   r   r   r9   r:   r;   r<   r   r   rM   r   rN   r   r%   rO   r   rP   r   r   r   r   r   rS   r_   r`   rR   r   r   r)   r[   r\   r   r   rQ   r&   r0   r   r   rT   r8   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r+   rD   r   ry   rm   r]   rz   r{   r,   r   r*   rH   rV   rW   r   r   ro   r   r   r   r   r   r   r   r   r   r   r   r   r   r!   r!   r"   #list_inventory_bookings_for_partner  s   


&









,



,




$
r   z/bookings/inventory/modify/date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 | rtd
| idfS tjjt	j
t	jd kj
t	jt jd kj
t	jtdkj
t	jtdkj }|sg }|jd td|idfS tjjtj
tj|jkj }t jd |jjdk st jd |jjdkrg }|jd td|idfS t jd |_tttj |jt jd d t jd  d t jd  d t jd tj d}tj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 )Ninventory_booking_idzActivity booking ID is empty.zActivity booking ID is missing.r'   zDate is empty.zDate is missing.r)   zSession ID is empty.zSession ID is missing.r+   i  rK   rJ   z1The selected reservation doesn't appear to exist.r*   z%Y-%m-%dzNThe activity date has to fall within the booking check-in and check-out dates.i  rf   z reservation date changed from Zold_datez to  )booking_activity_public_idr%   booking_activity_descriptionr)   r_   z,The activity booking date has been modified.rL   z6There was an error while editing the activity booking.)#r   r   r3   r4   r5   r   r   r   rM   r   rQ   rR   r.   rS   r   r   r   rO   r%   r   r8   r   r0   r   r6   r=   r>   r	   r7   r?   r@   r   rA   rB   rC   )r+   rD   return_bookingrH   get_bookingr*   booking_activityr!   r!   r"   edit_single_inventory_booking  sr    



0

(



r	  z/bookings/inventory/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 | rtd| idfS tjjt	j
t	jd kj
t	jtd	kj
t	jt jd kj }|s"g }|jd
 td|idfS t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Activity booking ID is empty.zActivity booking ID is missing.r)   zSession ID is empty.zSession ID is missing.r+   i  rK   zTThe selected activity booking doesn't appear to exist or has already been cancelled.r*   z(The activity booking has been cancelled.rL   z9There was an error while cancelling the activity booking.)r   r   r3   r4   r5   r   r   r   rM   r   rQ   rR   rS   r   r.   r   r	   r7   r`   r@   r   rA   rB   rC   )r+   rD   r  r*   rH   r!   r!   r"   delete_single_inventory_booking  sL    








r
  )?flaskr   r   r   r   r   r   r   r	   r
   pymysqlosmathr9   r=   routesr   r   r   r   routes.bookings_urlsr   database.inventoryr   database.invoicer   database.bookingsr   database.booking_activity_logr   database.booking_guestsr   database.booking_statusr   database.booking_typesr   database.booking_guest_typesr   database.mandatory_paymentsr   database.gatepass_guestsr   database.gatepassr   database.partnerr   functions.date_operatorsr   	variablesr   routerI   rX   rY   r^   ra   rq   r|   r   r   r   r	  r
  r!   r!   r!   r"   <module>   sN   $(W& "S   }  P