
    si]                         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mZmZmZmZ  eee	      d	        Z eee      d
        Zy)    )datetime)apps)	post_savepre_save)receiver)EmployeeWorkInformation)create_deductions)	AllowanceContract	DeductionLoanAccountPayslip)senderc                    |j                   r%|j                   j                  dk(  r|j                   nd}|t        j                  j	                         }|j                  |      j                         }|s|t               }| d|_        ||_         |j                  r|j                  nt        j                         |_        |j                  |j                  nd|_        |j                          yyy)z[
    This method is used to override the save method for EmployeeWorkInformation Model
    TN)employee_id_idz's Contractr   )employee_id	is_activer   objectsentirefilterexistscontract_namedate_joiningr   todaycontract_start_datebasic_salarywagesave)r   instance_kwargsactive_employeeall_contractscontract_existscontracts          3/var/www/python-projects/worksol/payroll/signals.py employeeworkinformation_pre_saver&      s     H$8$8$B$Bd$J 	 
 " ((//1'..o.NUUWzH(7'8%DH"#2H )1)>)>%%HNNDT ( *2)>)>)J%%PQ M MMO  #    c                    g }d}t        j                  d      r|j                  dnd}|r|r|j                  dk7  rt	               }|j
                  |_        |j                  |_        d|_        |j
                  |_        d|_	        d|_
        d|_
        |j                  |_        d|_        d|_        |j                          |j                  j!                  |j"                         ||_        t&        t(        |;          y|j*                  j-                  dd      }t.        j0                  j3                  |      }|D 	cg c]$  }	|j3                  |		      j5                         s|	& }
}	|j7                         }|s|j8                  s~t:        j0                  j3                  |
      j=                          |j?                         D ]#  \  }}tA        |||      }|jC                  |       %  |j*                  j                   |  y|j8                  r/t:        j0                  j3                  |

      j=                          y|
s|j?                         D ]i  \  }}t:        j0                  j3                  ||j"                  d|j                        j5                         rLtA        |||      }|jC                  |       k  |j*                  j                   |  yyc c}	w )z+
    Post save method for loan account
    TassetNFfineid)flat)installment_ids__in)installment_ids)id__in)one_time_datespecific_employeesis_installmenttitle)"r   is_installedasset_idtyper
   loan_amountamountr3   include_active_employeesonly_show_under_employeeis_fixedprovided_dater0   is_loanr   r1   addr   allowance_idsuperr   deduction_idsvalues_listr   r   r   r   get_installmentssettledr   deleteitemsr	   append)r   r   createdkwargsinstallmentsr)   loan
deductionspayslips_with_deductionsdeduction_idbalance_deductioninstallment_dictinstallment_dateinstallment_amountinstallments                  r%   create_installmentsrT   &   s   
 LE! ))1u5X]]f4{**^^
(-%**(,%%33(-%		##H$8$89 $k8)+++7747H
#*??#9#9 * $: $
 
 !+
+22 , 3 fh 
 
 $446'0@0@$$J$7>>@ "'')1  "/02B ##K01 'H""&&5$$,=$>EEG % &++-9 $&$,,33&6+3+?+?'+&nn	 4 
 fh '8$&8:J' %++K89  +&&**L9# %9
s   )K N)r   django.appsr   django.db.models.signalsr   r   django.dispatchr   employee.modelsr   payroll.methods.deductionsr	   payroll.models.modelsr
   r   r   r   r   r&   rT    r'   r%   <module>r\      sV      8 $ 3 8 V V 
(23 42 
)K(K: )K:r'   