in jobs/eam-integrations/scripts/workday_netsuite_integration.py [0:0]
def update(self, wd_workers,
workers_dict,
newEmployee = False,
reHire = False,
internationalTransfer = False,
ns_workers = None,
wd_comp=None,
ns_comp=None,
operation=None,
max_limit=1
):
import time
time_stamp = datetime.now().strftime("%Y%m%d_%H%M%S")
num_updates = 0
for i, wd_worker in enumerate(wd_workers):
ns_country = self.mapping.map_country(wd_worker.Country)
if not wd_worker.Preferred_Full_Name:
First_Name = wd_worker.First_Name
Last_Name = wd_worker.Last_Name
else:
# check if there are Chinese chars
if re.findall(r'[\u4e00-\u9fff]+', wd_worker.Preferred_Full_Name):
First_Name = wd_worker.First_Name
Last_Name = wd_worker.Last_Name
else:
First_Name = (' ').join(wd_worker.Preferred_Full_Name.split(' ')[0:-1])
Last_Name = wd_worker.Preferred_Full_Name.split(' ')[-1]
#set new contractors' product as 27
if newEmployee and wd_worker.Employee_Type in ['Elance Contractor',
'Independent Contractor',
'Vendor']:
class_ = 27 #Business Support
else:
class_ = self.get_product_class_map(wd_worker.Product)
# print(wd_comp[wd_worker.Employee_ID])
# print(ns_comp[wd_worker.Employee_ID])
employee_data = {
"employees": [
{
"External ID": wd_worker.Employee_ID,
"Employee ID": f"{wd_worker.Employee_ID}",
"Last Name": Last_Name,
"First Name": First_Name,
"Legal Name": f"{wd_worker.First_Name} {wd_worker.Last_Name}",
"Original Hire Date": wd_worker.Most_Recent_Hire_Date,
"Most Recent Hire Date": wd_worker.Most_Recent_Hire_Date,
"Termination Date": wd_worker.termination_date if not reHire else None,
"Employee Type": wd_worker.Employee_Type,
"Employee Status - Active?": 'Actively Employed' if wd_worker.Employee_Status=='1'else 'Terminated' ,
"Email - Primary Work": wd_worker.primaryWorkEmail,
"Manager ID": None if wd_worker.Manager_ID==wd_worker.Employee_ID else wd_worker.Manager_ID,
"Cost Center - ID": wd_worker.Cost_Center_ID,
#"Product": wd_worker.Product,
"Address1": wd_worker.Primary_Address,
"Address2": None,
"State": wd_worker.State if wd_worker.State else wd_worker.Province,
"City": wd_worker.City,
"Zipcode": wd_worker.Postal,
"Country": self.mapping.map_country_codes(ns_country),
"CountryName": ns_country,
"Company": self.mapping.map_company(ns_country),
"DEFAULT CURRENCY FOR EXP. REPORT": self.mapping.map_currency(ns_country),
"Payment Method": self.mapping.map_payment_method(ns_country),
"Class": class_,
"newEmployee" : newEmployee,
"Rehire" : True if reHire else None,
"InternationalTransfer" : True if internationalTransfer else None,
"oldCountryCode" : self.mapping.map_country_codes(ns_workers[wd_worker.Employee_ID].get('Country'))
if internationalTransfer else None,
"oldCountryName" : ns_workers[wd_worker.Employee_ID].get('Country')
if internationalTransfer else None,
}
]
}
try:
ret = self.ns_restlet.update(employee_data)
if len(ret)==0:
num_updates+=1
self.error_lst.append((employee_data,'success',time_stamp))
else:
self.error_lst.append((employee_data,ret,time_stamp))
self.logger.info(f"Error while updating Employee ID:{wd_worker.Employee_ID} error:{ret}")
if num_updates>=max_limit:
break
except NetSuiteRestletException as e:
self.logger.info(f"Employee ID:{wd_worker.Employee_ID} ")
self.logger.info(f"error {e.args[0].data}")
except Exception as e:
self.logger.info(f"error {e}")
continue
return