Ejemplo n.º 1
0
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()
Ejemplo n.º 2
0
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()
Ejemplo n.º 3
0
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()
Ejemplo n.º 4
0
    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