def run(self): # try: self.show_text('Connecting to Inteum... ') inteum = Inteum(INTEUM_DSN) self.show_text('OK\n') self.show_text('Loading technologies... ') technologies = inteum.get_technologies() self.show_text('%s\n' % len(technologies)) self.show_text('Loading patents... ') patents = inteum.get_patents() self.show_text('%s\n' % len(patents)) self.show_text('Loading patentTypes... ') patentTypes = inteum.get_patentTypes() self.show_text('%s\n' % len(patentTypes)) self.show_text('Loading lawFirms... ') lawFirms = inteum.get_lawFirms() self.show_text('%s\n' % len(lawFirms)) self.show_text('Loading countries... ') countries = inteum.get_countries() self.show_text('%s\n' % len(countries)) self.show_text('Loading expenses from spreadsheet... ') qbr = self.module(technologies, patents, patentTypes, lawFirms, countries) lawFirmExpenses = qbr.load_expenses(self.filePath) self.show_text('%s\n' % len(lawFirmExpenses)) self.show_text('Connecting to QuickBooks... ') qb = QuickBooks(applicationName=QUICKBOOKS_APPLICATION_NAME) self.show_text('OK\n') self.show_text('Updating vendors in QuickBooks using lawFirms from Inteum...\n') qb.synchronize(lawFirms, 'Vendor', dict( equal=qbr.equal_lawFirm, parse_result=qbr.parse_vendor, update_result=qbr.format_vendor, format_result=qbr.format_vendor, # expand_results= # collapse_packs= prompt_update=self.prompt_update, prompt_save=self.prompt_save, show_parse_error=self.show_error, show_format_error=self.show_error, summarize_candidatePacks=self.summarize_candidatePacks, summarize_mismatches=self.summarize_mismatches, summarize_newPacks=self.summarize_newPacks, )) self.show_text('Updating customers in QuickBooks using technologies from Inteum...\n') qb.synchronize(technologies, 'Customer', dict( equal=qbr.equal_technology, parse_result=qbr.parse_customer, update_result=qbr.format_customer, format_result=qbr.format_customer, # expand_results= # collapse_packs= prompt_update=self.prompt_update, prompt_save=self.prompt_save, show_parse_error=self.show_error, show_format_error=self.show_error, summarize_candidatePacks=self.summarize_candidatePacks, summarize_mismatches=self.summarize_mismatches, summarize_newPacks=self.summarize_newPacks, )) self.show_text('Updating jobs in QuickBooks using patents from Inteum...\n') qb.synchronize(patents, 'Customer', dict( equal=qbr.equal_patent, parse_result=qbr.parse_job, update_result=qbr.format_job, format_result=qbr.format_job, # expand_results= # collapse_packs= prompt_update=self.prompt_update, prompt_save=self.prompt_save, show_parse_error=self.show_error, show_format_error=self.show_error, summarize_candidatePacks=self.summarize_candidatePacks, summarize_mismatches=self.summarize_mismatches, summarize_newPacks=self.summarize_newPacks, )) self.show_text('Updating expense accounts in QuickBooks...\n') qb.synchronize([{'name': '6100 - Patent Related Expenses'}], 'Account', dict( equal=lambda account1, account2: account1['name'].lower() == account2['name'].lower(), parse_result=lambda result: {'name': result['FullName']}, # update_result=, format_result=lambda account, show_format_error: OrderedDict([('Name', account['name']), ('AccountType', 'Expense')]), # expand_results=, # collapse_packs=, # prompt_update=, prompt_save=self.prompt_save, show_parse_error=self.show_error, show_format_error=self.show_error, summarize_candidatePacks=self.summarize_candidatePacks, summarize_mismatches=self.summarize_mismatches, summarize_newPacks=self.summarize_newPacks, )) self.show_text('Updating expenses in QuickBooks using expenses from spreadsheet...\n') qb.synchronize(lawFirmExpenses, 'Bill', dict( equal=qbr.equal_expense, parse_result=qbr.parse_bill, update_result=qbr.update_bill, format_result=qbr.format_bill, expand_results=qbr.expand_bills, collapse_packs=qbr.collapse_expenses, prompt_update=self.prompt_update, prompt_save=self.prompt_save, show_parse_error=self.show_error, show_format_error=self.show_error, summarize_candidatePacks=self.summarize_candidatePacks, summarize_mismatches=self.summarize_mismatches, summarize_newPacks=self.summarize_newPacks, ), {'IncludeLineItems': 1})