B
    GDb                 @   sB   d dl Z d dlmZmZ d dlmZ dddZdd Zd	d
 ZdS )    N)get_decimal_digits
round_data)LeaveCategory c             C   sF  | r|   nd} ddddddddddddddd}tjd}dd |D }x|D ]}d||< qRW d}xxt| D ]l\}}|dkr|dkr| |d   s| |d  d	krd
S qp|d	krd	}qp|rpd}| rpdd|d  fS qpW y| jf |}W n^ tk
r  } zd| }	d|	fS d }~X Y n0 tk
rN } zd| }	d|	fS d }~X Y nX t	
d|sd|  }	x(|D ] }
|
dkrld|  }	d|	fS qlW |rd|	fS d| |f }d|  }yt| W n tk
r   d| }	d|	fS  tk
r } zd||f }	d|	fS d }~X Y n0 tk
r@ } zd| }	d|	fS d }~X Y nX dS )Nr      )zBasic SalaryzSchedule DayszSchedule PeriodzRequired WorkzActual WorkZOT1ZOT2ZOT3z	Normal OTz
Weekend OTz
Holiday OTzLate InzEarly LeaveZAbsencecategory_namec             S   s   g | ]}t |d  qS )r   )str).0i r   -G:\easytimepro\master/mysite/payroll\utils.py
<listcomp>   s    z!check_formula.<locals>.<listcomp>r   {})FzThe Formula is incorrectFz'loss a operator before "}", position:%szUnknown Key:{%s}zFormat Exception:{%s}z^[0-9().\s+*/-]+$zRe Match Error:{%s}z0123456789. +-*/ ()z"%s" is not a valid formulaz1source formula "%s",exception formula example"%s"z%The entered formula "%s" is incorrectz%sz Formula ZeroDivisionError:%s, %s)TTrue)stripr   Zobjectsvalues	enumerateisdigitformatKeyError	ExceptionrematchevalSyntaxErrorZeroDivisionError)formulaZ	test_dictZleave_categorysZ
each_leaveZlast_strr
   vnew_formulae
return_msgcharformula_infoformula_checkr   r   r   check_formula   sz    
 

r%   c       	   
   C   s  | r|   nd} y| jf |}W nZ tk
rN } zd| }d|fS d }~X Y n. tk
rz } zd| }d|fS d }~X Y nX td|sd|  }x$|D ]}|dkrd|  }d|fS qW |rd|fS d	| |f }d
|  }y|dkrd}t|}W n tk
r   d| }d|fS  tk
rB } zd||f }d|fS d }~X Y n0 tk
rp } zd| }d|fS d }~X Y nX dt	|dfS )Nr   zUnknown Key:{%s}FzFormat Exception:{%s}z^[0-9().\s+*/-]+$zRe Match Error:{%s}z0123456789. +-*/ ()z"%s" is not a valid formulaz1source formula "%s",exception formula example"%s"z(The entered formula( "%s" ) is incorrect0zFormula SyntaxError:%sz Formula ZeroDivisionError:%s, %sz%sT   )
r   r   r   r   r   r   r   r   r   round)	r   Zformat_dictr   r    r!   r"   r#   r$   resultr   r   r   calc_formulaT   sB    
r*   c             C   s:   | }t t|d }t|t|d |d }t||}|S )NZmin_unitZ	round_off)r   floatr   r(   )valitemZretdigitsr   r   r   report_deal_param}   s
    
r/   )r   )	r   Zmysite.att.calc.utilsr   r   Z%mysite.att.models.model_leavecategoryr   r%   r*   r/   r   r   r   r   <module>   s
   
M)