def update()

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