def rcti_compare_executive_summary(loose, loankit_file, infynity_file): print_start_message('executive summary') exec_summary_infynity = read_file_exec_summary(infynity_file) exec_summary_loankit = read_file_exec_summary(loankit_file) exec_summary_infynity.pair = exec_summary_loankit exec_summary_infynity.margin = loose create_dirs() summary_errors = exec_summary_infynity.process_comparison(margin=loose) # Create summary based on errors file = f"{OUTPUT_DIR_SUMMARY}{'Final Summary'}.xlsx" workbook = xlsxwriter.Workbook(file) worksheet = workbook.add_worksheet('Summary') fmt_title = get_title_format(workbook) fmt_table_header = get_header_format(workbook) worksheet.merge_range('A1:I1', 'Summary', fmt_title) row = 1 col = 0 worksheet.write(row, col, f"Number of issues: {str(len(summary_errors))}") row += 2 worksheet = write_errors(summary_errors, worksheet, row, col, fmt_table_header, exec_summary_infynity.directory, exec_summary_loankit.directory) workbook.close() print_done_message()
def rcti_compare_aba(loankit_file, infynity_file): print_start_message('aba files') aba_infynity = read_file_aba(infynity_file) aba_loankit = read_file_aba(loankit_file) aba_infynity.pair = aba_loankit create_dirs() summary_errors = aba_infynity.process_comparison() # Create summary based on errors file = f"{OUTPUT_DIR_SUMMARY}{'ABA Summary'}.xlsx" workbook = xlsxwriter.Workbook(file) worksheet = workbook.add_worksheet('ABA Comparison Results') fmt_title = get_title_format(workbook) fmt_table_header = get_header_format(workbook) worksheet.merge_range('A1:I1', 'Summary', fmt_title) row = 1 col = 0 worksheet.write(row, col, f"Number of issues: {str(len(summary_errors))}") row += 2 worksheet = write_errors(summary_errors, worksheet, row, col, fmt_table_header, aba_infynity.directory, aba_loankit.directory) workbook.close() print_done_message()
def run_comparison(files_a, files_b, margin, summary_filname, summary_title, filepath_a, filepath_b): create_dirs() summary_errors = [] # Set each invoice pair for key in files_a.keys(): if files_b.get(key, None) is not None: files_a[key].pair = files_b[key] files_b[key].pair = files_a[key] else: # Log in the summary files that don't have a match msg = 'No corresponding commission file found' error = new_error(files_a[key].filename, '', msg) summary_errors.append(error) # Find all Infynity files that don't have a match alone_keys_infynity = set(files_b.keys()) - set(files_a.keys()) for key in alone_keys_infynity: msg = 'No corresponding commission file found' error = new_error('', files_b[key].filename, msg) summary_errors.append(error) counter = 1 for key in files_a.keys(): print(f'Processing {counter} of {len(files_a)} files', end='\r') errors = files_a[key].process_comparison(margin) if errors is not None: summary_errors = summary_errors + errors counter += 1 print() # Create summary based on errors file = f"{OUTPUT_DIR_SUMMARY}{summary_filname}.xlsx" workbook = xlsxwriter.Workbook(file) worksheet = workbook.add_worksheet('Summary') fmt_title = get_title_format(workbook) fmt_table_header = get_header_format(workbook) worksheet.merge_range('A1:I1', summary_title, fmt_title) row = 1 col = 0 worksheet.write(row, col, f"Number of issues: {str(len(summary_errors))}") row += 2 worksheet = write_errors(summary_errors, worksheet, row, col, fmt_table_header, filepath_a, filepath_b) workbook.close()
def process_comparison(self, margin=0.000001): if self.pair is None: return None assert type( self.pair) == type(self), "self.pair is not of the correct type" workbook = self.create_workbook(OUTPUT_DIR_BROKER) fmt_table_header = get_header_format(workbook) fmt_error = get_error_format(workbook) worksheet = workbook.add_worksheet() row = 0 col_a = 0 col_b = 10 format_ = fmt_error if not self.equal_from else None worksheet.write(row, col_a, "From") worksheet.write(row, col_a + 1, self.from_, format_) worksheet.write(row, col_b, "From") worksheet.write(row, col_b + 1, self.pair.from_, format_) row += 1 format_ = fmt_error if not self.equal_to else None worksheet.write(row, col_a, "To") worksheet.write(row, col_a + 1, self.to, format_) worksheet.write(row, col_b, "To") worksheet.write(row, col_b + 1, self.pair.to, format_) row += 1 format_ = fmt_error if not self.equal_abn else None worksheet.write(row, col_a, "ABN") worksheet.write(row, col_a + 1, self.abn, format_) worksheet.write(row, col_b, "ABN") worksheet.write(row, col_b + 1, self.pair.abn, format_) row += 1 format_ = fmt_error if not self.equal_bsb else None worksheet.write(row, col_a, "BSB") worksheet.write(row, col_a + 1, self.bsb, format_) worksheet.write(row, col_b, "BSB") worksheet.write(row, col_b + 1, self.pair.bsb, format_) row += 1 format_ = fmt_error if not self.equal_account else None worksheet.write(row, col_a, "Account") worksheet.write(row, col_a + 1, self.account, format_) worksheet.write(row, col_b, "Account") worksheet.write(row, col_b + 1, self.pair.account, format_) if not self.equal_from: self.summary_errors.append( new_error(self.filename, self.pair.filename, "From does not match", "", "", self.from_, self.pair.from_)) if not self.equal_to: self.summary_errors.append( new_error(self.filename, self.pair.filename, "To does not match", "", "", self.to, self.pair.to)) if not self.equal_abn: self.summary_errors.append( new_error(self.filename, self.pair.filename, "ABN does not match", "", "", self.abn, self.pair.abn)) if not self.equal_bsb: self.summary_errors.append( new_error(self.filename, self.pair.filename, "BSB does not match", "", "", self.bsb, self.pair.bsb)) if not self.equal_account: self.summary_errors.append( new_error( self.filename, self.pair.filename, "Account does not match", "", "", self.account, self.pair.account, )) row += 2 for index, item in enumerate(HEADER_BROKER): worksheet.write(row, col_a + index, item, fmt_table_header) worksheet.write(row, col_b + index, item, fmt_table_header) row += 1 keys_unmatched = set(self.pair.datarows.keys() - set(self.datarows.keys())) # Code below is just to find the errors and write them into the spreadsheets for key_full in self.datarows.keys(): self_row = self.datarows[key_full] self_row.margin = margin pair_row = self.find_pair_row(self_row) self_row.pair = pair_row if pair_row is not None: # delete from pair list so it doesn't get matched again del self.pair.datarows[pair_row.key_full] # Remove the key from the keys_unmatched if it is there if pair_row.key_full in keys_unmatched: keys_unmatched.remove(pair_row.key_full) pair_row.margin = margin pair_row.pair = self_row self.summary_errors += BrokerInvoiceRow.write_row( worksheet, self, pair_row, row, fmt_error, "right", write_errors=False) self.summary_errors += BrokerInvoiceRow.write_row( worksheet, self, self_row, row, fmt_error) row += 1 # Write unmatched records for key in keys_unmatched: self.summary_errors += BrokerInvoiceRow.write_row( worksheet, self, self.pair.datarows[key], row, fmt_error, "right", write_errors=False) row += 1 if len(self.summary_errors) > 0: workbook.close() else: del workbook return self.summary_errors