| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816 |
- from dao.project_dao import getAllUsersFromMaster,getUserDetailsFromMaster
- from dao.voucher_approval_dao import *
- from datetime import datetime
- from utils.Email import sendEmail
- from utils.fcm_notification import send_notification
- from dao.vendor_dao import getVendorDetailsDao
- def getVoucherApprovalUserReportService(mongo):
- queryResult = []
- try:
- users=getAllUsersFromMaster(mongo)
- for user in users:
- if 'emp_id' in user and 'intervention' in user:
- insert_obj={
- "Employee Code": user['emp_id'],
- "Employee Name": user['first_name'],
- "Intervention":user['intervention'],
- "Senior 1 10000 Emp Code": "",
- "Senior 1 10000 Emp Name": "",
- "Senior 2 10000 Emp Code": "",
- "Senior 2 10000 Emp Name": "",
- "Senior 1 50000 Emp Code": "",
- "Senior 1 50000 Emp Name": "",
- "Senior 2 50000 Emp Code": "",
- "Senior 2 50000 Emp Name": "",
- "Senior 3 50000 Emp Code": "",
- "Senior 3 50000 Emp Name": "",
- "Senior 1 5Lac Emp Code": "",
- "Senior 1 5Lac Emp Name": "",
- "Senior 2 5Lac Emp Code": "",
- "Senior 2 5Lac Emp Name": "",
- "Senior 3 5Lac Emp Code": "",
- "Senior 3 5Lac Emp Name": "",
- "Senior 1 6Lac Emp Code": "",
- "Senior 1 6Lac Emp Name": "",
- "Senior 2 6Lac Emp Code": "",
- "Senior 2 6Lac Emp Name": "",
- "Senior 3 6Lac Emp Code": "",
- "Senior 3 6Lac Emp Name": "",
- "Senior 1 10Lac Emp Code": "",
- "Senior 1 10Lac Emp Name": "",
- "Senior 1 above 10Lac Emp Code": "",
- "Senior 1 above 10Lac Emp Name": "",
- "Finance Level 1 Emp Code":"",
- "Finance Level 1 Emp Name":"",
- "Finance Level 2 Emp Code":"",
- "Finance Level 2 Emp Name":""
- }
- queryResult.append(insert_obj)
-
- except Exception as err:
- # insert_into_error_log({'timestamp':int(datetime.now().timestamp()*1000),'type':'api','err':str(err),'function':'validateLogin'},mongo)
- print(err)
- queryResult = []
- return queryResult
- def getSeniorDetailsService(emp_key,mongo):
- queryResult = []
- try:
- queryResult=getVoucherSeniorListDao(emp_key,mongo)
- except Exception as err:
- print(err)
- queryResult = []
- return queryResult
- def uploadSeniorDetailsService(request_obj,mongo):
- queryResult={}
- error_response=[]
-
- try:
- formatted_users={}
- users=getAllUsersFromMaster(mongo)
-
- for user in users:
- if 'emp_id' in user:
- formatted_users[user['emp_id']]=user
-
-
- for data in request_obj['data']:
- try:
- emp_code=data['Employee Code']
- emp_name=data['Employee Name']
- intervention=data['Intervention']
- if emp_code in formatted_users:
- try:
- # Upto 10000 senior
- senior_1_10000_emp_code=data['Senior 1 10000 Emp Code']
- senior_1_10000_emp_name=data['Senior 1 10000 Emp Name']
- senior_2_10000_emp_code=data['Senior 2 10000 Emp Code']
- senior_2_10000_emp_name=data['Senior 2 10000 Emp Name']
-
- # 10000 to 50000 senior
- senior_1_50000_emp_code=data['Senior 1 50000 Emp Code']
- senior_1_50000_emp_name=data['Senior 1 50000 Emp Name']
- senior_2_50000_emp_code=data['Senior 2 50000 Emp Code']
- senior_2_50000_emp_name=data['Senior 2 50000 Emp Name']
- senior_3_50000_emp_code=data['Senior 3 50000 Emp Code']
- senior_3_50000_emp_name=data['Senior 3 50000 Emp Name']
- # 50000 to 5Lac senior
- senior_1_5lac_emp_code=data['Senior 1 5Lac Emp Code']
- senior_1_5lac_emp_name=data['Senior 1 5Lac Emp Name']
- senior_2_5lac_emp_code=data['Senior 2 5Lac Emp Code']
- senior_2_5lac_emp_name=data['Senior 2 5Lac Emp Name']
- senior_3_5lac_emp_code=data['Senior 3 5Lac Emp Code']
- senior_3_5lac_emp_name=data['Senior 3 5Lac Emp Name']
- # 5Lac to 6Lac senior
- senior_1_6lac_emp_code=data['Senior 1 6Lac Emp Code']
- senior_1_6lac_emp_name=data['Senior 1 6Lac Emp Name']
- senior_2_6lac_emp_code=data['Senior 2 6Lac Emp Code']
- senior_2_6lac_emp_name=data['Senior 2 6Lac Emp Name']
- senior_3_6lac_emp_code=data['Senior 3 6Lac Emp Code']
- senior_3_6lac_emp_name=data['Senior 3 6Lac Emp Name']
- # 6Lac to 10Lac senior
- senior_1_10lac_emp_code=data['Senior 1 10Lac Emp Code']
- senior_1_10lac_emp_name=data['Senior 1 10Lac Emp Name']
- # Above 10lac
- senior_1_above10lac_emp_code=data['Senior 1 above 10Lac Emp Code']
- senior_1_above10lac_emp_name=data['Senior 1 above 10Lac Emp Name']
- # Finance Level 1
- finance_level_1_emp_code=data["Finance Level 1 Emp Code"]
- finance_level_1_emp_name=data["Finance Level 1 Emp Name"]
- # Finance Level 2
- finance_level_2_emp_code=data["Finance Level 2 Emp Code"]
- finance_level_2_emp_name=data["Finance Level 2 Emp Name"]
- if ((senior_1_10000_emp_code!="NA" and senior_1_10000_emp_code not in formatted_users)
- or (senior_2_10000_emp_code!="NA" and senior_2_10000_emp_code not in formatted_users)
- or (senior_1_50000_emp_code!="NA" and senior_1_50000_emp_code not in formatted_users)
- or (senior_2_50000_emp_code!="NA" and senior_2_50000_emp_code not in formatted_users)
- or (senior_3_50000_emp_code!="NA" and senior_3_50000_emp_code not in formatted_users)
- or (senior_1_5lac_emp_code!="NA" and senior_1_5lac_emp_code not in formatted_users)
- or (senior_2_5lac_emp_code!="NA" and senior_2_5lac_emp_code not in formatted_users)
- or (senior_3_5lac_emp_code!="NA" and senior_3_5lac_emp_code not in formatted_users)
- or (senior_1_6lac_emp_code!="NA" and senior_1_6lac_emp_code not in formatted_users)
- or (senior_2_6lac_emp_code!="NA" and senior_2_6lac_emp_code not in formatted_users)
- or (senior_3_6lac_emp_code!="NA" and senior_3_6lac_emp_code not in formatted_users)
- or (senior_1_10lac_emp_code!="NA" and senior_1_10lac_emp_code not in formatted_users)
- or (senior_1_above10lac_emp_code!="NA" and senior_1_above10lac_emp_code not in formatted_users)
- or (finance_level_1_emp_code!="NA" and finance_level_1_emp_code not in formatted_users)
- or (finance_level_2_emp_code!="NA" and finance_level_2_emp_code not in formatted_users)):
-
- error_response.append(emp_code)
- else:
- # Update into database
- try:
- senior_1_10000_emp_key='NA'
- senior_2_10000_emp_key='NA'
- if senior_1_10000_emp_code!='NA':
- senior_1_10000_emp_key=formatted_users[senior_1_10000_emp_code]['key']
- if senior_2_10000_emp_code!='NA':
- senior_2_10000_emp_key=formatted_users[senior_2_10000_emp_code]['key']
- senior_1_50000_emp_key='NA'
- senior_2_50000_emp_key='NA'
- senior_3_50000_emp_key='NA'
- if senior_1_50000_emp_code!='NA':
- senior_1_50000_emp_key=formatted_users[senior_1_50000_emp_code]['key']
- if senior_2_50000_emp_code!='NA':
- senior_2_50000_emp_key=formatted_users[senior_2_50000_emp_code]['key']
- if senior_3_50000_emp_code!='NA':
- senior_3_50000_emp_key=formatted_users[senior_3_50000_emp_code]['key']
- senior_1_5lac_emp_key='NA'
- senior_2_5lac_emp_key='NA'
- senior_3_5lac_emp_key='NA'
- if senior_1_5lac_emp_code!='NA':
- senior_1_5lac_emp_key=formatted_users[senior_1_5lac_emp_code]['key']
- if senior_2_5lac_emp_code!='NA':
- senior_2_5lac_emp_key=formatted_users[senior_2_5lac_emp_code]['key']
- if senior_3_5lac_emp_code!='NA':
- senior_3_5lac_emp_key=formatted_users[senior_3_5lac_emp_code]['key']
- senior_1_6lac_emp_key='NA'
- senior_2_6lac_emp_key='NA'
- senior_3_6lac_emp_key='NA'
- if senior_1_6lac_emp_code!='NA':
- senior_1_6lac_emp_key=formatted_users[senior_1_6lac_emp_code]['key']
- if senior_2_6lac_emp_code!='NA':
- senior_2_6lac_emp_key=formatted_users[senior_2_6lac_emp_code]['key']
- if senior_3_6lac_emp_code!='NA':
- senior_3_6lac_emp_key=formatted_users[senior_3_6lac_emp_code]['key']
- senior_1_10lac_emp_key='NA'
- if senior_1_10lac_emp_code!='NA':
- senior_1_10lac_emp_key=formatted_users[senior_1_10lac_emp_code]['key']
- senior_1_above10lac_emp_key='NA'
- if senior_1_above10lac_emp_code!='NA':
- senior_1_above10lac_emp_key=formatted_users[senior_1_above10lac_emp_code]['key']
- finance_level_1_emp_key='NA'
- if finance_level_1_emp_code!='NA':
- finance_level_1_emp_key=formatted_users[finance_level_1_emp_code]['key']
- finance_level_2_emp_key='NA'
- if finance_level_2_emp_code!='NA':
- finance_level_2_emp_key=formatted_users[finance_level_2_emp_code]['key']
-
-
- insert_obj={
- 'emp_key':formatted_users[emp_code]['key'],
- 'emp_name':emp_name,
- 'intervention':intervention,
- 'senior_1_10000_emp_key':senior_1_10000_emp_key,
- 'senior_1_10000_emp_name':senior_1_10000_emp_name,
- 'senior_2_10000_emp_key':senior_2_10000_emp_key,
- 'senior_2_10000_emp_name':senior_2_10000_emp_name,
- 'senior_1_50000_emp_key':senior_1_50000_emp_key,
- 'senior_1_50000_emp_name':senior_1_50000_emp_name,
- 'senior_2_50000_emp_key':senior_2_50000_emp_key,
- 'senior_2_50000_emp_name':senior_2_50000_emp_name,
- 'senior_3_50000_emp_key':senior_3_50000_emp_key,
- 'senior_3_50000_emp_name':senior_3_50000_emp_name,
- 'senior_1_5lac_emp_key':senior_1_5lac_emp_key,
- 'senior_1_5lac_emp_name':senior_1_5lac_emp_name,
- 'senior_2_5lac_emp_key':senior_2_5lac_emp_key,
- 'senior_2_5lac_emp_name':senior_2_5lac_emp_name,
- 'senior_3_5lac_emp_key':senior_3_5lac_emp_key,
- 'senior_3_5lac_emp_name':senior_3_5lac_emp_name,
- 'senior_1_6lac_emp_key':senior_1_6lac_emp_key,
- 'senior_1_6lac_emp_name':senior_1_6lac_emp_name,
- 'senior_2_6lac_emp_key':senior_2_6lac_emp_key,
- 'senior_2_6lac_emp_name':senior_2_6lac_emp_name,
- 'senior_3_6lac_emp_key':senior_3_6lac_emp_key,
- 'senior_3_6lac_emp_name':senior_3_6lac_emp_name,
- 'senior_1_10lac_emp_key':senior_1_10lac_emp_key,
- 'senior_1_10lac_emp_name':senior_1_10lac_emp_name,
- 'senior_1_above10lac_emp_key':senior_1_above10lac_emp_key,
- 'senior_1_above10lac_emp_name':senior_1_above10lac_emp_name,
- 'finance_level_1_emp_key': finance_level_1_emp_key,
- 'finance_level_1_emp_name': finance_level_1_emp_name,
- 'finance_level_2_emp_key':finance_level_2_emp_key,
- 'finance_level_2_emp_name':finance_level_2_emp_name
- }
- except Exception as err:
- print(err)
- updateSeniorDataMaster(insert_obj,mongo)
-
- except Exception as err:
- print(err)
- error_response.append(emp_code)
-
- else:
- error_response.append(emp_code)
-
- except Exception as err:
- print(err)
-
- except Exception as err:
- print(err)
- if len(error_response)==0:
- queryResult={'status':'failure','message': 'Something went wrong!','error_list':error_response}
- else:
- queryResult={'status':'success','message': 'Data Updated Successfully!'}
- return queryResult
- def findApprovalTrackForVoucher(request_obj,mongo):
- senior_found=False
- approval_track = {"senior_level_1":{},"senior_level_2":{},"senior_level_3":{},"finance_level_1":{},"finance_level_2":{}}
- try:
- # Fetch user Details from user master
- user_list=getVoucherSeniorListDao(request_obj['user_id'],mongo)
- amount=request_obj['product_total_amount']
-
- for user_obj in user_list:
- senior_found=True
- senior_level_1_key='NA'
- senior_level_1_name='NA'
- senior_level_2_key='NA'
- senior_level_2_name='NA'
- senior_level_3_key='NA'
- senior_level_3_name='NA'
- finance_level_1_key='NA'
- finance_level_1_name='NA'
- finance_level_2_key='NA'
- finance_level_2_name='NA'
- try:
- finance_level_1_key=user_obj['finance_level_1_emp_key']
- finance_level_1_name=user_obj['finance_level_1_emp_name']
- finance_level_2_key==user_obj['finance_level_2_emp_key']
- finance_level_2_name=user_obj['finance_level_2_emp_name']
- except Exception as err:
- print(err)
-
- # Other Condition of Opex
- if request_obj['project_type']=='Opex - Vendor payment':
- if amount<=10000:# 2 Level Approval (DPH)
- senior_level_1_key=user_obj['senior_1_10000_emp_key']
- senior_level_1_name=user_obj['senior_1_10000_emp_name']
- senior_level_2_key=user_obj['senior_2_10000_emp_key']
- senior_level_2_name=user_obj['senior_2_10000_emp_name']
- elif amount>10000 and amount<=50000: # 3 Level Approval (PH)
- senior_level_1_key=user_obj['senior_1_50000_emp_key']
- senior_level_1_name=user_obj['senior_1_50000_emp_name']
- senior_level_2_key=user_obj['senior_2_50000_emp_key']
- senior_level_2_name=user_obj['senior_2_50000_emp_name']
-
- senior_level_3_key=user_obj['senior_3_50000_emp_key']
- senior_level_3_name=user_obj['senior_3_50000_emp_name']
- elif amount>50000 and amount<=100000: # 3 Level Approval (PD)
- senior_level_1_key=user_obj['senior_1_5lac_emp_key']
- senior_level_1_name=user_obj['senior_1_5lac_emp_name']
- senior_level_2_key=user_obj['senior_2_5lac_emp_key']
- senior_level_2_name=user_obj['senior_2_5lac_emp_name']
-
- senior_level_3_key=user_obj['senior_3_5lac_emp_key']
- senior_level_3_name=user_obj['senior_3_5lac_emp_name']
- elif amount>100000 and amount<=500000: # 3 Level Approval (CXO)
- senior_level_1_key=user_obj['senior_1_5lac_emp_key']
- senior_level_1_name=user_obj['senior_1_5lac_emp_name']
- senior_level_2_key=user_obj['senior_2_5lac_emp_key']
- senior_level_2_name=user_obj['senior_2_5lac_emp_name']
-
- senior_level_3_key=user_obj['senior_3_5lac_emp_key']
- senior_level_3_name=user_obj['senior_3_5lac_emp_name']
- elif amount>500000 and amount<=600000: # 3 Level Approval (Any two CXO)
- senior_level_1_key=user_obj['senior_1_6lac_emp_key']
- senior_level_1_name=user_obj['senior_1_6lac_emp_name']
- senior_level_2_key=user_obj['senior_2_6lac_emp_key']
- senior_level_2_name=user_obj['senior_2_6lac_emp_name']
-
- senior_level_3_key=user_obj['senior_3_6lac_emp_key']
- senior_level_3_name=user_obj['senior_3_6lac_emp_name']
- elif amount>600000 and amount<=1000000: # 1 Level Approval (CEO)
- senior_level_1_key=user_obj['senior_1_10lac_emp_key']
- senior_level_1_name=user_obj['senior_1_10lac_emp_name']
- elif amount>1000000: # 1 Level Approval (Trusty)
- senior_level_1_key=user_obj['senior_1_above10lac_emp_key']
- senior_level_1_name=user_obj['senior_1_above10lac_emp_name']
- elif request_obj['project_type']=='Capex - Centre Advances':
- if amount<50000: # 3 Level Approval (PH)
- senior_level_1_key=user_obj['senior_1_50000_emp_key']
- senior_level_1_name=user_obj['senior_1_50000_emp_name']
- senior_level_2_key=user_obj['senior_2_50000_emp_key']
- senior_level_2_name=user_obj['senior_2_50000_emp_name']
-
- senior_level_3_key=user_obj['senior_3_50000_emp_key']
- senior_level_3_name=user_obj['senior_3_50000_emp_name']
- elif amount>50000 and amount<=100000: # 3 Level Approval (PD)
- senior_level_1_key=user_obj['senior_1_5lac_emp_key']
- senior_level_1_name=user_obj['senior_1_5lac_emp_name']
- senior_level_2_key=user_obj['senior_2_5lac_emp_key']
- senior_level_2_name=user_obj['senior_2_5lac_emp_name']
-
- senior_level_3_key=user_obj['senior_3_5lac_emp_key']
- senior_level_3_name=user_obj['senior_3_5lac_emp_name']
- elif amount>100000 and amount<=500000: # 3 Level Approval (CXO)
- senior_level_1_key=user_obj['senior_1_5lac_emp_key']
- senior_level_1_name=user_obj['senior_1_5lac_emp_name']
- senior_level_2_key=user_obj['senior_2_5lac_emp_key']
- senior_level_2_name=user_obj['senior_2_5lac_emp_name']
-
- senior_level_3_key=user_obj['senior_3_5lac_emp_key']
- senior_level_3_name=user_obj['senior_3_5lac_emp_name']
- elif amount>500000 and amount<=750000: # 3 Level Approval (Any two CXO)
- senior_level_1_key=user_obj['senior_1_6lac_emp_key']
- senior_level_1_name=user_obj['senior_1_6lac_emp_name']
- senior_level_2_key=user_obj['senior_2_6lac_emp_key']
- senior_level_2_name=user_obj['senior_2_6lac_emp_name']
-
- senior_level_3_key=user_obj['senior_3_6lac_emp_key']
- senior_level_3_name=user_obj['senior_3_6lac_emp_name']
- elif amount>750000 and amount<=1500000: # 1 Level Approval (CEO)
- senior_level_1_key=user_obj['senior_1_10lac_emp_key']
- senior_level_1_name=user_obj['senior_1_10lac_emp_name']
- elif amount>1500000: # 1 Level Approval (Trusty)
- senior_level_1_key=user_obj['senior_1_above10lac_emp_key']
- senior_level_1_name=user_obj['senior_1_above10lac_emp_name']
- elif request_obj['project_type']=='Capex - In Budget':
- if amount<100000: # 3 Level Approval (PH)
- senior_level_1_key=user_obj['senior_1_50000_emp_key']
- senior_level_1_name=user_obj['senior_1_50000_emp_name']
- senior_level_2_key=user_obj['senior_2_50000_emp_key']
- senior_level_2_name=user_obj['senior_2_50000_emp_name']
-
- senior_level_3_key=user_obj['senior_3_50000_emp_key']
- senior_level_3_name=user_obj['senior_3_50000_emp_name']
- elif amount>100000 and amount<=150000: # 3 Level Approval (PD)
- senior_level_1_key=user_obj['senior_1_5lac_emp_key']
- senior_level_1_name=user_obj['senior_1_5lac_emp_name']
- senior_level_2_key=user_obj['senior_2_5lac_emp_key']
- senior_level_2_name=user_obj['senior_2_5lac_emp_name']
-
- senior_level_3_key=user_obj['senior_3_5lac_emp_key']
- senior_level_3_name=user_obj['senior_3_5lac_emp_name']
- elif amount>150000 and amount<=500000: # 3 Level Approval (CXO)
- senior_level_1_key=user_obj['senior_1_5lac_emp_key']
- senior_level_1_name=user_obj['senior_1_5lac_emp_name']
- senior_level_2_key=user_obj['senior_2_5lac_emp_key']
- senior_level_2_name=user_obj['senior_2_5lac_emp_name']
-
- senior_level_3_key=user_obj['senior_3_5lac_emp_key']
- senior_level_3_name=user_obj['senior_3_5lac_emp_name']
- elif amount>500000 and amount<=750000: # 3 Level Approval (Any two CXO)
- senior_level_1_key=user_obj['senior_1_6lac_emp_key']
- senior_level_1_name=user_obj['senior_1_6lac_emp_name']
- senior_level_2_key=user_obj['senior_2_6lac_emp_key']
- senior_level_2_name=user_obj['senior_2_6lac_emp_name']
-
- senior_level_3_key=user_obj['senior_3_6lac_emp_key']
- senior_level_3_name=user_obj['senior_3_6lac_emp_name']
- elif amount>750000 and amount<=1500000: # 1 Level Approval (CEO)
- senior_level_1_key=user_obj['senior_1_10lac_emp_key']
- senior_level_1_name=user_obj['senior_1_10lac_emp_name']
- elif amount>1500000: # 1 Level Approval (Trusty)
- senior_level_1_key=user_obj['senior_1_above10lac_emp_key']
- senior_level_1_name=user_obj['senior_1_above10lac_emp_name']
- else:
- if amount<=10000:# 2 Level Approval
- senior_level_1_key=user_obj['senior_1_10000_emp_key']
- senior_level_1_name=user_obj['senior_1_10000_emp_name']
- senior_level_2_key=user_obj['senior_2_10000_emp_key']
- senior_level_2_name=user_obj['senior_2_10000_emp_name']
- elif amount>10000 and amount<=50000: # 3 Level Approval
- senior_level_1_key=user_obj['senior_1_50000_emp_key']
- senior_level_1_name=user_obj['senior_1_50000_emp_name']
- senior_level_2_key=user_obj['senior_2_50000_emp_key']
- senior_level_2_name=user_obj['senior_2_50000_emp_name']
-
- senior_level_3_key=user_obj['senior_3_50000_emp_key']
- senior_level_3_name=user_obj['senior_3_50000_emp_name']
- elif amount>50000 and amount<=500000: # 3 Level Approval
- senior_level_1_key=user_obj['senior_1_5lac_emp_key']
- senior_level_1_name=user_obj['senior_1_5lac_emp_name']
- senior_level_2_key=user_obj['senior_2_5lac_emp_key']
- senior_level_2_name=user_obj['senior_2_5lac_emp_name']
-
- senior_level_3_key=user_obj['senior_3_5lac_emp_key']
- senior_level_3_name=user_obj['senior_3_5lac_emp_name']
- elif amount>500000 and amount<=600000: # 3 Level Approval
- senior_level_1_key=user_obj['senior_1_6lac_emp_key']
- senior_level_1_name=user_obj['senior_1_6lac_emp_name']
- senior_level_2_key=user_obj['senior_2_6lac_emp_key']
- senior_level_2_name=user_obj['senior_2_6lac_emp_name']
-
- senior_level_3_key=user_obj['senior_3_6lac_emp_key']
- senior_level_3_name=user_obj['senior_3_6lac_emp_name']
- elif amount>600000 and amount<=1000000: # 1 Level Approval
- senior_level_1_key=user_obj['senior_1_10lac_emp_key']
- senior_level_1_name=user_obj['senior_1_10lac_emp_name']
- elif amount>1000000: # 1 Level Approval
- senior_level_1_key=user_obj['senior_1_above10lac_emp_key']
- senior_level_1_name=user_obj['senior_1_above10lac_emp_name']
- approval_track['senior_level_1']={
- "level" : "Senior Level 1",
- "name" : senior_level_1_name,
- "id" : senior_level_1_key,
- "status" : "PENDING"
- }
- approval_track['senior_level_2']={
- "level" : "Senior Level 2",
- "name" : senior_level_2_name,
- "id" : senior_level_2_key,
- "status" : "NOT VISIBLE"
- }
- approval_track['senior_level_3']={
- "level" : "Senior Level 3",
- "name" : senior_level_3_name,
- "id" : senior_level_3_key,
- "status" : "NOT VISIBLE"
- }
- approval_track['finance_level_1']={
- "level" : "Finance Level 1",
- "name" : finance_level_1_name,
- "id" : finance_level_1_key,
- "status" : "NOT VISIBLE"
- }
- approval_track['finance_level_2']={
- "level" : "Finance Level 2",
- "name" : finance_level_2_name,
- "id" : finance_level_2_key,
- "status" : "NOT VISIBLE"
- }
-
- except Exception as err:
- senior_found=False
- print(err)
- return senior_found,approval_track
-
- def approveDeclineVoucherService(request_obj,mongo,app):
- queryResult={}
- try:
- update_obj={}
- flag=request_obj['status']
- voucher_details=getVoucherDetailsDao(request_obj['voucher_id'],mongo)
- remark=request_obj["reason"]
- seniorId=request_obj['user_id']
- timestamp=int(datetime.now().timestamp())*1000
- approverName = ""
- approverLevel = ""
- approverId = ""
- approvalTrackLevel = ""
- notification_format=""
-
- for voucher in voucher_details:
- user_id=voucher['user_id']
- email_senior_id='NA'
- seniorLevel1=voucher['approval_track']['senior_level_1']
- seniorLevel2=voucher['approval_track']['senior_level_2']
- seniorLevel3=voucher['approval_track']['senior_level_3']
- financeLevel1=voucher['approval_track']['finance_level_1']
- financeLevel2=voucher['approval_track']['finance_level_2']
-
- # if senior id = senior level1
- if seniorLevel1["id"]==seniorId and seniorLevel1["status"]=="PENDING":
- approverName = seniorLevel1["name"]
- approverId = seniorLevel1["id"]
- approverLevel = seniorLevel1["level"]
- approvalTrackLevel = "senior_level_1"
- # If expense approved
- if flag=="APPROVED":
- if seniorLevel2["id"]=="NA":
- notification_format = "Please print the claim and submit to Finance Level 1 along with supporting documents if any"
- if seniorLevel3["id"]=="NA":
- notification_format = "Please print the claim and submit to Finance Level 1 along with supporting documents if any"
- if financeLevel1["id"]=="NA":
- if financeLevel2["id"]=="NA":
- update_obj["voucher_status"]=flag
- # create_email(po,"APPROVED",approverName,approverLevel,mongo,app)
- else:
- email_senior_id=financeLevel2["id"]
- update_obj["approval_track.finance_level_2.status"]= "PENDING"
- else:
- email_senior_id=financeLevel1["id"]
- update_obj["approval_track.finance_level_1.status"]= "PENDING"
- else:
- email_senior_id=seniorLevel3["id"]
- update_obj["approval_track.senior_level_3.status"]= "PENDING"
- else:
- email_senior_id=seniorLevel2["id"]
- update_obj["approval_track.senior_level_2.status"]= "PENDING"
-
- # if senior id = senior level2
- elif seniorLevel2["id"]==seniorId and seniorLevel2["status"]=="PENDING":
- approverName = seniorLevel2["name"]
- approverId = seniorLevel2["id"]
- approverLevel = seniorLevel2["level"]
- approvalTrackLevel = "senior_level_2"
- # If expense approved
- if flag=="APPROVED":
- if seniorLevel3["id"]=="NA":
- notification_format = "Please print the claim and submit to Finance Level 1 along with supporting documents if any"
- if financeLevel1["id"]=="NA":
- if financeLevel2["id"]=="NA":
- update_obj["voucher_status"]=flag
- # create_email(po,"APPROVED",approverName,approverLevel,mongo,app)
- else:
- email_senior_id=financeLevel2["id"]
- update_obj["approval_track.finance_level_2.status"]= "PENDING"
- else:
- email_senior_id=financeLevel1["id"]
- update_obj["approval_track.finance_level_1.status"]= "PENDING"
- else:
- email_senior_id=seniorLevel3["id"]
- update_obj["approval_track.senior_level_3.status"]= "PENDING"
-
- # if senior id = senior level3
- elif seniorLevel3["id"]==seniorId and seniorLevel3["status"]=="PENDING":
- approverName = seniorLevel3["name"]
- approverId = seniorLevel3["id"]
- approverLevel = seniorLevel3["level"]
- approvalTrackLevel = "senior_level_3"
- # If expense approved
- if flag=="APPROVED":
- if financeLevel1["id"]=="NA":
- if financeLevel2["id"]=="NA":
- update_obj["voucher_status"]=flag
- # create_email(po,"APPROVED",approverName,approverLevel,mongo,app)
- else:
- email_senior_id=financeLevel2["id"]
- update_obj["approval_track.finance_level_2.status"]= "PENDING"
- else:
- email_senior_id=financeLevel1["id"]
- update_obj["approval_track.finance_level_1.status"]= "PENDING"
- # if senior id = Finance level 1
- elif financeLevel1["id"]==seniorId and financeLevel1["status"]=="PENDING":
- approverName = financeLevel1["name"]
- approverId = financeLevel1["id"]
- approverLevel = financeLevel1["level"]
- approvalTrackLevel = "finance_level_1"
- # If expense approved
- if flag=="APPROVED":
- if financeLevel2["id"]=="NA":
- update_obj["voucher_status"]=flag
- # create_email(po,"APPROVED",approverName,approverLevel,mongo,app)
- else:
- email_senior_id=financeLevel2["id"]
- update_obj["approval_track.finance_level_2.status"]= "PENDING"
-
- # if senior id = Finance level 2
- elif financeLevel2["id"]==seniorId and financeLevel2["status"]=="PENDING":
- approverName = financeLevel2["name"]
- approverId = financeLevel2["id"]
- approverLevel = financeLevel2["level"]
- approvalTrackLevel = "finance_level_2"
- # If expense approved
- if flag=="APPROVED":
- update_obj["voucher_status"]=flag
- # create_email(po,"APPROVED",approverName,approverLevel,mongo,app)
-
-
- update_obj["approval_track." + approvalTrackLevel + ".status"]=flag
- update_obj["approval_track." + approvalTrackLevel + ".info"]={"status":flag,"remark":remark,"updated_on":timestamp}
- # for disapproved
- if flag=="DECLINED":
- update_obj["voucher_status"]= "DECLINED"
-
- # Status Log
- approval_status={
- "user_id":user_id,
- "voucher_id":request_obj['voucher_id'],
- "timestamp":timestamp,
- "action":flag,
- "approver_name":approverName,
- "approver_level":approverLevel,
- "approver_id":approverId,
- "type":"approval",
- "remark":remark
- }
- # Update Voucher
- updateVoucherApprovalStatus(update_obj,request_obj['voucher_id'],mongo)
- # Insert into voucher-status-log
- insertVoucherStatusLog(approval_status,mongo)
- if email_senior_id!='NA':
- try:
- senior_lst=getUserDetailsFromMaster(email_senior_id,mongo)
- if len(senior_lst)!=0:
- # send_notification(senior_lst[0], "Expense Request Status", "Your Expense request has been " + flag)
-
- # Notification to user
- user_lst=getUserDetailsFromMaster(user_id,mongo)
- if len(user_lst)!=0:
- send_notification(user_lst[0], "Expense Request Status", "Your Expense request has been " + flag)
- if notification_format!="":
- send_notification(user_lst[0], "Expense Request Status", notification_format)
- if len(user_lst)!=0:
- name=""
- if 'first_name' in senior_lst[0]:
- name+=senior_lst[0]['first_name']
- if 'last_name' in senior_lst[0]:
- name+=" "+senior_lst[0]['last_name']
- vendor_name=""
-
- if 'vendorName' in voucher and voucher['vendorName']!='':
- vendor_name=voucher['vendorName']
- elif 'vendor_id' in voucher and voucher['vendor_id'] != '':
- vendor_id = voucher['vendor_id'] # MOU Expiry
- vendor_lst=getVendorDetailsDao(vendor_id,mongo)
- if len(vendor_lst)!=0:
- vendor_name=vendor_lst[0]['v_name']
-
-
- subject="Expense Voucher Request"
- body="Dear "+name+",<br /><br /> Expense Voucher raised by "+user_lst[0]['full_name']+" of '"+vendor_name+"' of rs "+str(voucher['product_total_amount'])+", please approve the same."
- if 'official_email_id' in senior_lst[0] and senior_lst[0]['official_email_id']!="" and senior_lst[0]['official_email_id']!="NA":
- reciever_email=senior_lst[0]['official_email_id']
- sendEmail("",reciever_email,body,False,subject)
- except Exception as identifier:
- print(identifier)
-
- queryResult = {
- 'status': 'success',
- 'message': 'Voucher '+flag+' successfully!'
- }
- except Exception as err:
- queryResult = {
- 'status': 'failure',
- 'message': 'Something went wrong!'
- }
- print(err)
- return queryResult
- def getVoucherPendingLisForApprovals(u_id,mongo):
- queryResult = []
- try:
- queryResult = getPendingVoucherForApprovalDao(u_id, mongo)
- except Exception as err:
- queryResult = []
- return queryResult
- def getVoucherArchiveLisForApprovals(u_id,mongo):
- queryResult = []
- try:
- queryResult = getArchiveVoucherForApprovalDao(u_id, mongo)
- except Exception as err:
- queryResult = []
- return queryResult
- def getVoucherDetails(id, mongo):
- queryResult = []
- try:
- queryResult = getVoucherDetailsDao(id, mongo)
- except Exception as err:
- queryResult = []
- return queryResult
- def getVoucherDetailsPrintCount(id, mongo):
- queryResult = {}
- try:
- vouchers = getVoucherDetailsDao(id, mongo)
- count=1
- for voucher in vouchers:
- if 'print_count' in voucher:
- count=voucher['print_count']+1
- if count<=3:
- # print
- queryResult={'status':'OK'}
- # Update print count
- updateVoucherApprovalStatus({'print_count':count},id,mongo)
- else:
- # failure
- queryResult={'status':'Failure','message':'You exceed your print limit!'}
- except Exception as err:
- queryResult={'status':'Failure','message':'Something went wrong!'}
- return queryResult
|