Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import csv
- import re
- import certegy
- import pyodbc
- conn = pyodbc.connect('DRIVER={SQL Server};SERVER=10.1.0.45;DATABASE=q2db_312102;UID=sa;PWD=q2success', True)
- db = conn.cursor()
- addresses = [line for line in csv.reader(open('Customer.txt','r'),'excel')][1:]
- comm_users = [line for line in csv.reader(open('Customer_Representative.txt','r'),'excel')][1:]
- companies = [line for line in csv.reader(open('Corp_Customer.txt','r'),'excel')][1:]
- retail_users = [line for line in csv.reader(open('Indv_Customer.txt','r'),'excel')][1:]
- user_login = [line for line in csv.reader(open('INET_Cust_Info.txt','r'),'excel')][1:]
- phone_numbers = [line for line in csv.reader(open('Customer_Phone.txt','r'),'excel')][1:]
- user_accounts = [line for line in csv.reader(open('Account_Cust.txt','r'),'excel')][1:]
- comm_accounts = [line for line in csv.reader(open('Account_CustRep.txt','r'),'excel')][1:]
- accounts = [line for line in csv.reader(open('Account.txt','r'),'excel')][1:]
- groups = [line for line in csv.reader(open('App_Cust_Info.txt','r'),'excel')][1:]
- passwords = [line for line in csv.reader(open('312102passwords.txt','r'))]
- account_id_file = [line for line in csv.reader(open('312102accounts.txt','r'),'excel-tab')]
- comm_username_map_file = [line for line in csv.reader(open('corp_userids.txt','r'),'excel-tab')]
- import_exceptions = [line[0] for line in csv.reader(open('import_exception.txt','r'),'excel')]
- valid_states = ('AK','AL','AR','AZ','CA','CO','CT','DC','DE','FL','GA','HI','IA','ID','IL','IN','KS','KY','LA','MA','MD','ME','MI','MN','MO','MS','MT','NC','ND','NE','NH','NJ','NM','NV','NY','OH','OK','OR','PA','RI','SC','SD','TN','TX','UT','VA','VT','WA','WI','WV','WY')
- acct_map = {
- 'CCA':'L',
- 'CDA':'T',
- 'CLA':'L',
- 'DDA':'D',
- 'FCA':'D',
- 'FSA':'S',
- 'GLA':'D',
- 'ILA':'L',
- 'IRA':'T',
- 'MLA':'L',
- 'MMA':'D',
- 'OEL':'L',
- 'PLA':'L',
- 'SAV':'S'
- }
- rights_map = {
- 5:{
- 'True':2,
- 'False':0
- },
- 6:{
- 'True':1,
- 'False':0
- },
- 7:{
- 'True':4,
- 'False':0
- },
- }
- phone_map = {
- 'Cell':'Mobile',
- 'Work':'Business',
- 'Home':'Home',
- 'Fax':'Fax'
- }
- phoneregex = re.compile('[A-Za-z\-\.\(\)\/\=]')
- nameregex = re.compile("[\']")
- emailregex = re.compile("^(([A-Za-z0-9]+_+)|([A-Za-z0-9]+\-+)|([A-Za-z0-9]+\.+)|([A-Za-z0-9]+\++))*[A-Za-z0-9]+@((\w+\-+)|(\w+\.))*\w{1,63}\.[a-zA-Z]{2,6}$")
- header = ['CustomerName', 'CustomerTaxID', 'CustomerIsCompany', 'UserFirstName', 'UserMiddleName', 'UserLastName', 'UserSalutation', 'UserSuffix', 'UserSSN', 'UserLoginName', 'UserPassword', 'VoiceLoginName', 'VoicePassword', 'StreetAddress1', 'StreetAddress2', 'City', 'State', 'PostalCode', 'AddressTypeName', 'HomeCityOrAreaCode', 'HomeLocalNumber', 'HomeExtension', 'WorkCityOrAreaCode', 'WorkLocalNumber', 'WorkExtension', 'CellCityOrAreaCode', 'CellLocalNumber', 'CellExtension', 'FaxCityOrAreaCode', 'FaxLocalNumber', 'FaxExtension', 'EmailAddress', 'TacEmailAddress1', 'TacEmailAddress2', 'TacEmailAddress3', 'TacPhoneNumber1', 'TacPhoneNumber2', 'TacPhoneNumber3', 'ThirdPartySubscriberId', 'UserHasStatementImageAccess', 'UserHasRecipientManagement', 'UserHasAllTemplateAccess', 'UserHasCanManageUserRights', 'UserHasCanAddSubsidiaries', 'SecureMessageSubject', 'SecureMessageBody', 'CustInfo', 'UserInfo', 'A01IntNum', 'A01ExtNum', 'A01HostProdType', 'A01IntCIF', 'A01ExtCIF', 'A01Access', 'A01NickName', 'A02IntNum', 'A02ExtNum', 'A02HostProdType', 'A02IntCIF', 'A02ExtCIF', 'A02Access', 'A02NickName', 'A03IntNum', 'A03ExtNum', 'A03HostProdType', 'A03IntCIF', 'A03ExtCIF', 'A03Access', 'A03NickName', 'A04IntNum', 'A04ExtNum', 'A04HostProdType', 'A04IntCIF', 'A04ExtCIF', 'A04Access', 'A04NickName', 'A05IntNum', 'A05ExtNum', 'A05HostProdType', 'A05IntCIF', 'A05ExtCIF', 'A05Access', 'A05NickName', 'A06IntNum', 'A06ExtNum', 'A06HostProdType', 'A06IntCIF', 'A06ExtCIF', 'A06Access', 'A06NickName', 'A07IntNum', 'A07ExtNum', 'A07HostProdType', 'A07IntCIF', 'A07ExtCIF', 'A07Access', 'A07NickName', 'A08IntNum', 'A08ExtNum', 'A08HostProdType', 'A08IntCIF', 'A08ExtCIF', 'A08Access', 'A08NickName', 'A09IntNum', 'A09ExtNum', 'A09HostProdType', 'A09IntCIF', 'A09ExtCIF', 'A09Access', 'A09NickName', 'A10IntNum', 'A10ExtNum', 'A10HostProdType', 'A10IntCIF', 'A10ExtCIF', 'A10Access', 'A10NickName', 'A11IntNum', 'A11ExtNum', 'A11HostProdType', 'A11IntCIF', 'A11ExtCIF', 'A11Access', 'A11NickName', 'A12IntNum', 'A12ExtNum', 'A12HostProdType', 'A12IntCIF', 'A12ExtCIF', 'A12Access', 'A12NickName', 'A13IntNum', 'A13ExtNum', 'A13HostProdType', 'A13IntCIF', 'A13ExtCIF', 'A13Access', 'A13NickName', 'A14IntNum', 'A14ExtNum', 'A14HostProdType', 'A14IntCIF', 'A14ExtCIF', 'A14Access', 'A14NickName', 'A15IntNum', 'A15ExtNum', 'A15HostProdType', 'A15IntCIF', 'A15ExtCIF', 'A15Access', 'A15NickName', 'A16IntNum', 'A16ExtNum', 'A16HostProdType', 'A16IntCIF', 'A16ExtCIF', 'A16Access', 'A16NickName', 'A17IntNum', 'A17ExtNum', 'A17HostProdType', 'A17IntCIF', 'A17ExtCIF', 'A17Access', 'A17NickName', 'A18IntNum', 'A18ExtNum', 'A18HostProdType', 'A18IntCIF', 'A18ExtCIF', 'A18Access', 'A18NickName', 'A19IntNum', 'A19ExtNum', 'A19HostProdType', 'A19IntCIF', 'A19ExtCIF', 'A19Access', 'A19NickName', 'A20IntNum', 'A20ExtNum', 'A20HostProdType', 'A20IntCIF', 'A20ExtCIF', 'A20Access', 'A20NickName', 'A21IntNum', 'A21ExtNum', 'A21HostProdType', 'A21IntCIF', 'A21ExtCIF', 'A21Access', 'A21NickName', 'A22IntNum', 'A22ExtNum', 'A22HostProdType', 'A22IntCIF', 'A22ExtCIF', 'A22Access', 'A22NickName', 'A23IntNum', 'A23ExtNum', 'A23HostProdType', 'A23IntCIF', 'A23ExtCIF', 'A23Access', 'A23NickName', 'A24IntNum', 'A24ExtNum', 'A24HostProdType', 'A24IntCIF', 'A24ExtCIF', 'A24Access', 'A24NickName', 'A25IntNum', 'A25ExtNum', 'A25HostProdType', 'A25IntCIF', 'A25ExtCIF', 'A25Access', 'A25NickName', 'A26IntNum', 'A26ExtNum', 'A26HostProdType', 'A26IntCIF', 'A26ExtCIF', 'A26Access', 'A26NickName', 'A27IntNum', 'A27ExtNum', 'A27HostProdType', 'A27IntCIF', 'A27ExtCIF', 'A27Access', 'A27NickName', 'A28IntNum', 'A28ExtNum', 'A28HostProdType', 'A28IntCIF', 'A28ExtCIF', 'A28Access', 'A28NickName', 'A29IntNum', 'A29ExtNum', 'A29HostProdType', 'A29IntCIF', 'A29ExtCIF', 'A29Access', 'A29NickName', 'A30IntNum', 'A30ExtNum', 'A30HostProdType', 'A30IntCIF', 'A30ExtCIF', 'A30Access', 'A30NickName', 'A31IntNum', 'A31ExtNum', 'A31HostProdType', 'A31IntCIF', 'A31ExtCIF', 'A31Access', 'A31NickName', 'A32IntNum', 'A32ExtNum', 'A32HostProdType', 'A32IntCIF', 'A32ExtCIF', 'A32Access', 'A32NickName', 'A33IntNum', 'A33ExtNum', 'A33HostProdType', 'A33IntCIF', 'A33ExtCIF', 'A33Access', 'A33NickName', 'A34IntNum', 'A34ExtNum', 'A34HostProdType', 'A34IntCIF', 'A34ExtCIF', 'A34Access', 'A34NickName', 'A35IntNum', 'A35ExtNum', 'A35HostProdType', 'A35IntCIF', 'A35ExtCIF', 'A35Access', 'A35NickName', 'A36IntNum', 'A36ExtNum', 'A36HostProdType', 'A36IntCIF', 'A36ExtCIF', 'A36Access', 'A36NickName', 'A37IntNum', 'A37ExtNum', 'A37HostProdType', 'A37IntCIF', 'A37ExtCIF', 'A37Access', 'A37NickName', 'A38IntNum', 'A38ExtNum', 'A38HostProdType', 'A38IntCIF', 'A38ExtCIF', 'A38Access', 'A38NickName', 'A39IntNum', 'A39ExtNum', 'A39HostProdType', 'A39IntCIF', 'A39ExtCIF', 'A39Access', 'A39NickName', 'A40IntNum', 'A40ExtNum', 'A40HostProdType', 'A40IntCIF', 'A40ExtCIF', 'A40Access', 'A40NickName', 'A41IntNum', 'A41ExtNum', 'A41HostProdType', 'A41IntCIF', 'A41ExtCIF', 'A41Access', 'A41NickName', 'A42IntNum', 'A42ExtNum', 'A42HostProdType', 'A42IntCIF', 'A42ExtCIF', 'A42Access', 'A42NickName', 'A43IntNum', 'A43ExtNum', 'A43HostProdType', 'A43IntCIF', 'A43ExtCIF', 'A43Access', 'A43NickName', 'A44IntNum', 'A44ExtNum', 'A44HostProdType', 'A44IntCIF', 'A44ExtCIF', 'A44Access', 'A44NickName', 'A45IntNum', 'A45ExtNum', 'A45HostProdType', 'A45IntCIF', 'A45ExtCIF', 'A45Access', 'A45NickName', 'A46IntNum', 'A46ExtNum', 'A46HostProdType', 'A46IntCIF', 'A46ExtCIF', 'A46Access', 'A46NickName', 'A47IntNum', 'A47ExtNum', 'A47HostProdType', 'A47IntCIF', 'A47ExtCIF', 'A47Access', 'A47NickName', 'A48IntNum', 'A48ExtNum', 'A48HostProdType', 'A48IntCIF', 'A48ExtCIF', 'A48Access', 'A48NickName', 'A49IntNum', 'A49ExtNum', 'A49HostProdType', 'A49IntCIF', 'A49ExtCIF', 'A49Access', 'A49NickName', 'A50IntNum', 'A50ExtNum', 'A50HostProdType', 'A50IntCIF', 'A50ExtCIF', 'A50Access', 'A50NickName', 'A51IntNum', 'A51ExtNum', 'A51HostProdType', 'A51IntCIF', 'A51ExtCIF', 'A51Access', 'A51NickName', 'A52IntNum', 'A52ExtNum', 'A52HostProdType', 'A52IntCIF', 'A52ExtCIF', 'A52Access', 'A52NickName', 'A53IntNum', 'A53ExtNum', 'A53HostProdType', 'A53IntCIF', 'A53ExtCIF', 'A53Access', 'A53NickName', 'A54IntNum', 'A54ExtNum', 'A54HostProdType', 'A54IntCIF', 'A54ExtCIF', 'A54Access', 'A54NickName', 'A55IntNum', 'A55ExtNum', 'A55HostProdType', 'A55IntCIF', 'A55ExtCIF', 'A55Access', 'A55NickName', 'A56IntNum', 'A56ExtNum', 'A56HostProdType', 'A56IntCIF', 'A56ExtCIF', 'A56Access', 'A56NickName', 'A57IntNum', 'A57ExtNum', 'A57HostProdType', 'A57IntCIF', 'A57ExtCIF', 'A57Access', 'A57NickName', 'A58IntNum', 'A58ExtNum', 'A58HostProdType', 'A58IntCIF', 'A58ExtCIF', 'A58Access', 'A58NickName', 'A59IntNum', 'A59ExtNum', 'A59HostProdType', 'A59IntCIF', 'A59ExtCIF', 'A59Access', 'A59NickName', 'A60IntNum', 'A60ExtNum', 'A60HostProdType', 'A60IntCIF', 'A60ExtCIF', 'A60Access', 'A60NickName', 'A61IntNum', 'A61ExtNum', 'A61HostProdType', 'A61IntCIF', 'A61ExtCIF', 'A61Access', 'A61NickName', 'A62IntNum', 'A62ExtNum', 'A62HostProdType', 'A62IntCIF', 'A62ExtCIF', 'A62Access', 'A62NickName', 'A63IntNum', 'A63ExtNum', 'A63HostProdType', 'A63IntCIF', 'A63ExtCIF', 'A63Access', 'A63NickName', 'A64IntNum', 'A64ExtNum', 'A64HostProdType', 'A64IntCIF', 'A64ExtCIF', 'A64Access', 'A64NickName', 'A65IntNum', 'A65ExtNum', 'A65HostProdType', 'A65IntCIF', 'A65ExtCIF', 'A65Access', 'A65NickName', 'A66IntNum', 'A66ExtNum', 'A66HostProdType', 'A66IntCIF', 'A66ExtCIF', 'A66Access', 'A66NickName', 'A67IntNum', 'A67ExtNum', 'A67HostProdType', 'A67IntCIF', 'A67ExtCIF', 'A67Access', 'A67NickName', 'A68IntNum', 'A68ExtNum', 'A68HostProdType', 'A68IntCIF', 'A68ExtCIF', 'A68Access', 'A68NickName', 'A69IntNum', 'A69ExtNum', 'A69HostProdType', 'A69IntCIF', 'A69ExtCIF', 'A69Access', 'A69NickName', 'A70IntNum', 'A70ExtNum', 'A70HostProdType', 'A70IntCIF', 'A70ExtCIF', 'A70Access', 'A70NickName', 'A71IntNum', 'A71ExtNum', 'A71HostProdType', 'A71IntCIF', 'A71ExtCIF', 'A71Access', 'A71NickName', 'A72IntNum', 'A72ExtNum', 'A72HostProdType', 'A72IntCIF', 'A72ExtCIF', 'A72Access', 'A72NickName', 'A73IntNum', 'A73ExtNum', 'A73HostProdType', 'A73IntCIF', 'A73ExtCIF', 'A73Access', 'A73NickName', 'A74IntNum', 'A74ExtNum', 'A74HostProdType', 'A74IntCIF', 'A74ExtCIF', 'A74Access', 'A74NickName', 'A75IntNum', 'A75ExtNum', 'A75HostProdType', 'A75IntCIF', 'A75ExtCIF', 'A75Access', 'A75NickName', 'A76IntNum', 'A76ExtNum', 'A76HostProdType', 'A76IntCIF', 'A76ExtCIF', 'A76Access', 'A76NickName', 'A77IntNum', 'A77ExtNum', 'A77HostProdType', 'A77IntCIF', 'A77ExtCIF', 'A77Access', 'A77NickName', 'A78IntNum', 'A78ExtNum', 'A78HostProdType', 'A78IntCIF', 'A78ExtCIF', 'A78Access', 'A78NickName', 'A79IntNum', 'A79ExtNum', 'A79HostProdType', 'A79IntCIF', 'A79ExtCIF', 'A79Access', 'A79NickName', 'A80IntNum', 'A80ExtNum', 'A80HostProdType', 'A80IntCIF', 'A80ExtCIF', 'A80Access', 'A80NickName', 'A81IntNum', 'A81ExtNum', 'A81HostProdType', 'A81IntCIF', 'A81ExtCIF', 'A81Access', 'A81NickName', 'A82IntNum', 'A82ExtNum', 'A82HostProdType', 'A82IntCIF', 'A82ExtCIF', 'A82Access', 'A82NickName', 'A83IntNum', 'A83ExtNum', 'A83HostProdType', 'A83IntCIF', 'A83ExtCIF', 'A83Access', 'A83NickName', 'A84IntNum', 'A84ExtNum', 'A84HostProdType', 'A84IntCIF', 'A84ExtCIF', 'A84Access', 'A84NickName', 'A85IntNum', 'A85ExtNum', 'A85HostProdType', 'A85IntCIF', 'A85ExtCIF', 'A85Access', 'A85NickName', 'A86IntNum', 'A86ExtNum', 'A86HostProdType', 'A86IntCIF', 'A86ExtCIF', 'A86Access', 'A86NickName', 'A87IntNum', 'A87ExtNum', 'A87HostProdType', 'A87IntCIF', 'A87ExtCIF', 'A87Access', 'A87NickName', 'A88IntNum', 'A88ExtNum', 'A88HostProdType', 'A88IntCIF', 'A88ExtCIF', 'A88Access', 'A88NickName', 'A89IntNum', 'A89ExtNum', 'A89HostProdType', 'A89IntCIF', 'A89ExtCIF', 'A89Access', 'A89NickName', 'A90IntNum', 'A90ExtNum', 'A90HostProdType', 'A90IntCIF', 'A90ExtCIF', 'A90Access', 'A90NickName', 'A91IntNum', 'A91ExtNum', 'A91HostProdType', 'A91IntCIF', 'A91ExtCIF', 'A91Access', 'A91NickName', 'A92IntNum', 'A92ExtNum', 'A92HostProdType', 'A92IntCIF', 'A92ExtCIF', 'A92Access', 'A92NickName', 'A93IntNum', 'A93ExtNum', 'A93HostProdType', 'A93IntCIF', 'A93ExtCIF', 'A93Access', 'A93NickName', 'A94IntNum', 'A94ExtNum', 'A94HostProdType', 'A94IntCIF', 'A94ExtCIF', 'A94Access', 'A94NickName', 'A95IntNum', 'A95ExtNum', 'A95HostProdType', 'A95IntCIF', 'A95ExtCIF', 'A95Access', 'A95NickName', 'A96IntNum', 'A96ExtNum', 'A96HostProdType', 'A96IntCIF', 'A96ExtCIF', 'A96Access', 'A96NickName', 'A97IntNum', 'A97ExtNum', 'A97HostProdType', 'A97IntCIF', 'A97ExtCIF', 'A97Access', 'A97NickName', 'A98IntNum', 'A98ExtNum', 'A98HostProdType', 'A98IntCIF', 'A98ExtCIF', 'A98Access', 'A98NickName', 'A99IntNum', 'A99ExtNum', 'A99HostProdType', 'A99IntCIF', 'A99ExtCIF', 'A99Access', 'A99NickName', 'A100IntNum', 'A100ExtNum', 'A100HostProdType', 'A100IntCIF', 'A100ExtCIF', 'A100Access', 'A100NickName']
- cust_user_dict = {}
- account_status_dict = {}
- password_dict = {}
- comm_username_map = {}
- account_ids = {}
- retail_list = []
- company_list = []
- commuser_list = []
- aba = '111301122'
- branch_ids = ('4','14','15','44')
- for line in comm_username_map_file:
- if line[2] = aba:
- comm_username_map[line[1].lower()] = line[0]
- del comm_username_map_file
- # Get passwords for users
- for line in passwords:
- password_dict[line[0]] = line[1]
- del passwords
- # Create accountnumber/hostaccountid map
- for line in account_id_file:
- account_ids[line[0]] = line[1]
- del account_id_file
- # Using branch ids, pull only customer ids that are relevant to the current conversion
- for line in groups:
- if line[2] in branch_ids:
- cust_user_dict[line[1]] = {}
- del groups
- # Create dict of accounts and their status
- for line in accounts:
- account_status_dict[(line[2],line[1])] = line[5]
- del accounts
- # Pull retail customers
- for line in retail_users:
- if cust_user_dict.has_key(line[0]):
- cust_user_dict[line[0]] = {
- 'is_company':'False',
- 'customer_name':re.sub(nameregex,'',line[2].strip() + ' ' + line[1].strip()),
- 'first_name':re.sub(nameregex,'',line[2].strip()),
- 'last_name':re.sub(nameregex,'',line[1].strip()),
- 'tax_id':'',
- 'ssn':line[4].strip(),
- 'accounts':[],
- 'phone':[],
- 'address_type':'Business',
- 'group_id':'1'
- }
- del retail_users
- # Pull companies
- for line in companies:
- if cust_user_dict.has_key(line[0]):
- cust_user_dict[line[0]] = {
- 'is_company':'True',
- 'customer_name':re.sub(nameregex,'',line[1].strip()),
- 'tax_id':line[2].strip(),
- 'users':{},
- 'accounts':[],
- 'phone':[],
- 'address_type':'Business',
- 'group_id':'8'
- }
- del companies
- #Pull commercial users
- for line in comm_users:
- cr_id = line[1].lower()
- if comm_username_map.has_key(cr_id):
- username = comm_username_map[cr_id]
- else:
- username = cr_id
- if re.match(emailregex,line[9].strip()) != None:
- email = line[9].strip()
- else:
- email = ''
- if cust_user_dict.has_key(line[0]):
- try:
- password = password_dict[username]
- except:
- password = 'P@55w0rd!'
- cust_user_dict[line[0]]['users'][line[1].strip()] = {
- 'username':username,
- 'first_name':re.sub(nameregex,'',line[2].strip()),
- 'last_name':re.sub(nameregex,'',line[3].strip()),
- 'email': email,
- 'password':password,
- 'accounts':[]
- }
- del comm_users
- # Get addresses for all customers
- for line in addresses:
- if cust_user_dict.has_key(line[0]):
- cust_user_dict[line[0]]['address_1'] = re.sub(nameregex,'',line[4].strip())
- cust_user_dict[line[0]]['address_2'] = re.sub(nameregex,'',line[5].strip())
- cust_user_dict[line[0]]['city'] = re.sub(nameregex,'',line[6].strip())
- cust_user_dict[line[0]]['CIF'] = line[3][-7:].strip().upper()
- if line[7] in valid_states:
- cust_user_dict[line[0]]['state'] = line[7].strip()
- else:
- cust_user_dict[line[0]]['state'] = 'TX'
- cust_user_dict[line[0]]['zip'] = re.sub(nameregex,'',line[8].strip()[:5])
- del addresses
- # Get login ids for retail customers
- for line in user_login:
- username = line[2].lower()
- if cust_user_dict.has_key(line[1]):
- try:
- password = password_dict[line[2].lower()]
- except:
- password = 'P@55w0rd!'
- if cust_user_dict[line[1]]['is_company'] == True:
- cust_user_dict[line[1]]['users'][line[2].strip()] = {
- 'username':re.sub(nameregex,'',username),
- 'first_name':' ',
- 'last_name':' ',
- 'password':password,
- 'email': re.sub(nameregex,'',line[17].strip()),
- 'accounts':[]
- }
- else:
- cust_user_dict[line[1]]['username'] = re.sub(nameregex,'',line[2].strip())
- cust_user_dict[line[1]]['password'] = password
- cust_user_dict[line[1]]['email'] = re.sub(nameregex,'',line[17].strip())
- del user_login
- # Get phone numbers for all customers
- for line in phone_numbers:
- if cust_user_dict.has_key(line[1]):
- temp = line[0].strip().replace(' ','')
- phone_number = re.sub(phoneregex,'',temp)
- type = line[2]
- if len(phone_number) >= 10:
- cust_user_dict[line[1]]['phone'].append([phone_number[:3],phone_number[3:10],phone_map[type]])
- # Pull and associate user accounts
- for line in user_accounts:
- if cust_user_dict.has_key(line[3]):
- if account_status_dict[(line[2],line[1])] == 'Open':
- if account_ids.has_key(line[2]):
- cust_user_dict[line[3]]['accounts'].append([account_ids[line[2]],line[2],acct_map[line[1]],re.sub(nameregex,'',line[10].strip())])
- else:
- pass
- else:
- pass
- del user_accounts
- # Get commercial user account associations
- for line in comm_accounts:
- if cust_user_dict.has_key(line[4].strip()):
- acct_rights = 0
- for i in (5,6,7):
- acct_rights = acct_rights + rights_map[i][line[i]]
- if account_ids.has_key(line[2]):
- cust_user_dict[line[4].strip()]['users'][line[3].strip()]['accounts'].append([account_ids[line[2]],line[2],acct_map[line[1]],str(acct_rights)])
- query_list = []
- for key in cust_user_dict:
- if cust_user_dict[key]['customer_name'] not in import_exceptions:
- cust_user_dict[key]['phone'] = cust_user_dict[key]['phone'][:3]
- if cust_user_dict[key]['is_company'] == 'False':
- print 'RETAIL USER'
- print '--------------------'
- print cust_user_dict[key]
- customer = certegy.mk_api_customer(cust_user_dict[key], key, cust_user_dict[key]['phone'])
- customer_return = db.execute("EXEC dbo.apispAddCustomer @customerData ='" + customer.flatten_self() + "'").fetchall()[0][0]
- customer_id = certegy.parse_api_customer_return(customer_return)
- if customer_id[0] != False:
- print 'Customer ID: ' + customer_id
- user = certegy.mk_api_ret_user(cust_user_dict[key],customer_id,key)
- user_return = db.execute("EXEC dbo.apispAddUser @userData ='" + user.flatten_self() + "'").fetchall()[0][0]
- user_id = certegy.parse_api_user_return(user_return)
- if user_id[0] != False:
- print 'User ID: ' + user_id
- userlogon = certegy.mk_api_userlogon(cust_user_dict[key], user_id)
- userlogon_return = db.execute("EXEC dbo.apispAddUserLogon @userLogonData ='" + userlogon.flatten_self() + "'").fetchall()[0][0]
- certegy.parse_api_userlogon_return(userlogon_return)
- print 'Adding CIF Relationship for Customer/User:'
- cif_rel = certegy.mk_api_cif_association(cust_user_dict[key]['CIF'],customer_id,user_id)
- print cif_rel.flatten_self()
- cust_acct_return = db.execute("EXEC dbo.apispAddAccountAssociation @accountAssociationData ='" + cif_rel.flatten_self() + "'").fetchall()[0][0]
- print cust_acct_return
- print '------------------------'
- for record in cust_user_dict[key]['accounts']:
- cust_acct = certegy.mk_api_cust_acct(record, customer_id)
- cust_acct_return = db.execute("EXEC dbo.apispAddAccountAssociation @accountAssociationData ='" + cust_acct.flatten_self() + "'").fetchall()[0][0]
- try:
- cust_acct_id = certegy.parse_api_cust_acct_return(cust_acct_return)
- except:
- cust_acct_id = (False,'')
- if cust_acct_id[0] != False:
- print 'Customer Account ID: ' + cust_acct_id
- user_acct = certegy.mk_api_user_acct(record, user_id, cust_acct_id, '7')
- user_acct_return = db.execute("EXEC dbo.apispAddAccountAssociation @accountAssociationData ='" + user_acct.flatten_self() + "'").fetchall()[0][0]
- nickname_query = "INSERT INTO q2_UserPropertyData (UISourceID,UserID,HostAccountID,PropertyID,PropertyValue) VALUES ('1','"+user_id+"','"+record[0]+"','2','"+record[3]+"')"
- print nickname_query
- nickname_return = db.execute(nickname_query)
- print '--------------'
- print 'Account Nickname Status:'
- print nickname_return
- certegy.parse_api_user_acct_return(user_acct_return)
- else:
- print 'FAILED IMPORT (CUSTOMER ACCOUNT):'
- print '----------------'
- print cust_acct
- print 'ERROR RETURN:'
- print cust_acct_id[1]
- else:
- print 'FAILED IMPORT (USER):'
- print '----------------'
- print user
- print 'ERROR RETURN:'
- print user_id[1]
- else:
- print 'FAILED IMPORT (CUSTOMER):'
- print '----------------'
- print customer
- print 'ERROR RETURN:'
- print customer_id[1]
- else:
- customer_accounts = {}
- print 'COMMERCIAL USER'
- print '--------------------'
- print cust_user_dict[key]
- customer = certegy.mk_api_customer(cust_user_dict[key], key, cust_user_dict[key]['phone'])
- customer_return = db.execute("EXEC dbo.apispAddCustomer @customerData ='" + customer.flatten_self() + "'").fetchall()[0][0]
- customer_id = certegy.parse_api_customer_return(customer_return)
- if customer_id[0] != False:
- print 'Customer ID: ' + customer_id
- for record in cust_user_dict[key]['accounts']:
- cust_acct = certegy.mk_api_cust_acct(record, customer_id)
- cust_acct_return = db.execute("EXEC dbo.apispAddAccountAssociation @accountAssociationData ='" + cust_acct.flatten_self() + "'").fetchall()[0][0]
- try:
- cust_acct_id = certegy.parse_api_cust_acct_return(cust_acct_return)
- except:
- cust_acct_id = (False,'')
- if cust_acct_id[0] != False:
- print 'Customer Account ID: ' + cust_acct_id
- customer_accounts[record[1]] = cust_acct_id
- else:
- print 'FAILED IMPORT (CUSTOMER ACCOUNT):'
- print '----------------'
- print cust_acct_id
- print 'ERROR RETURN:'
- print cust_acct_id[1]
- for userid in cust_user_dict[key]['users']:
- user = certegy.mk_api_comm_user(cust_user_dict[key],cust_user_dict[key]['users'][userid],customer_id,key)
- user_return = db.execute("EXEC dbo.apispAddUser @userData ='" + user.flatten_self() + "'").fetchall()[0][0]
- user_id = certegy.parse_api_user_return(user_return)
- if user_id[0] != False:
- print 'User ID: ' + user_id
- userlogon = certegy.mk_api_userlogon(cust_user_dict[key]['users'][userid], user_id)
- userlogon_return = db.execute("EXEC dbo.apispAddUserLogon @userLogonData ='" + userlogon.flatten_self() + "'").fetchall()[0][0]
- certegy.parse_api_userlogon_return(userlogon_return)
- for record in cust_user_dict[key]['users'][userid]['accounts']:
- try:
- cust_acct_id = customer_accounts[record[1]]
- except:
- print 'FAILED IMPORT (CUSTOMER ACCOUNT):'
- print '----------------'
- print 'NO CORRESPONDING CUSTOMER ACCOUNT RECORD FOR ' + record[1]
- cust_acct_id = (False,'')
- if cust_acct_id[0] != False:
- print 'Customer Account ID: ' + cust_acct_id
- user_acct = certegy.mk_api_user_acct(record, user_id, cust_acct_id, record[3])
- user_acct_return = db.execute("EXEC dbo.apispAddAccountAssociation @accountAssociationData ='" + user_acct.flatten_self() + "'").fetchall()[0][0]
- certegy.parse_api_user_acct_return(user_acct_return)
- else:
- print 'FAILED IMPORT (CUSTOMER ACCOUNT):'
- print '----------------'
- print cust_acct_id
- print 'ERROR RETURN:'
- print cust_acct_id[1]
- else:
- print 'FAILED IMPORT (USER):'
- print '----------------'
- print user
- print 'ERROR RETURN:'
- print user_id[1]
- else:
- print 'FAILED IMPORT (CUSTOMER):'
- print '----------------'
- print customer
- print 'ERROR RETURN:'
- print customer_id[1]
Add Comment
Please, Sign In to add comment