Example #1
0
def search_banks(df_avancor, title_name):
    """ Поиск в таблице-Аванкор наличия строк с данными о банках"""

    # Кол-во строк и столбцов в файле Аванкор
    index_max = df_avancor.shape[0]
    collumn_max = df_avancor.shape[1]

    # Номер строки с названием раздела в файле Аванкор"""
    title_col = column_index_from_string('L')
    title_row = razdel_name_row(df_avancor, title_name, title_col=title_col)
    banks = bank_info (df_avancor, title_row)

    return banks
Example #2
0
def data_search(df_avancor, avancoreTitle):
    """ Поиск в таблице-Аванкор наличия строк с данными"""

    # Кол-во строк и столбцов в файле Аванкор
    index_max = df_avancor.shape[0]
    collumn_max = df_avancor.shape[1]

    # Номер строки с названием раздела в файле Аванкор"""
    title_row = razdel_name_row(df_avancor, avancoreTitle, index_max)

    # находим номер первой строку с данными в файле Аванкор
    row_data = start_data_row(df_avancor, index_max, title_row)

    # находим номер последнке строки с данными в таблице Аванкор"""
    row_end = end_data_row(df_avancor, index_max, row_data)

    return row_data, row_end
Example #3
0
    def fioShort(ws, AvancoreTitle, avancor_fio_col, cell_fio):
        """Копируем короткое-ФИО подписанта"""
        # Формы:
        # 0420502 Справка о стоимости _56   SR_0420502_Podpisant
        # 0420502 Справка о стоимости _57   SR_0420502_Podpisant_spec_dep

        # количество строк в таблице Аванкор
        index_max = df_avancor.shape[0]
        # Номер строки с названием раздела в файле Аванкор
        avancor_title_row = fun.razdel_name_row(df_avancor, AvancoreTitle,
                                                index_max)

        # ФИО подписанта
        fio = df_avancor.loc[avancor_title_row, avancor_fio_col]

        # записываем в форму xbrl
        row_fio, col_fio = coordinate_to_tuple(cell_fio)
        ws.cell(row_fio, col_fio).value = fio
Example #4
0
def rows_with_data(df_avancor, banks, all_razdels):
    """ Находим номера строк с данными, которые будем копировать"""

    avancoreTitle = '1.1. Виды и суммы операций, совершенных по банковским счетам некредитной \n' \
                    'финансовой организации'
    col = 'B'

    # файл-Аванкор: интервал строк, в пределах которых ищем строки с разделами
    row_start = 32
    row_end = 91

    # Кол-во строк и столбцов в файле-Аванкор
    index_max = df_avancor.shape[0]
    collumn_max = df_avancor.shape[1]

    title_row = razdel_name_row(df_avancor,
                                avancoreTitle,
                                title_col=column_index_from_string(col),
                                row_start=row_start,
                                row_end=row_end)

    # номер строки с названиями валют
    row_currency = title_row[0] + 3

    # номера строк с разделами
    rows_of_title = rows_of_razdel(df_avancor,
                                   all_razdels,
                                   col='D',
                                   row_start=row_start,
                                   row_end=row_end)
    rows_itogi = rows_of_razdel(df_avancor,
                                all_razdels,
                                col='B',
                                row_start=row_start,
                                row_end=row_end,
                                rows_under=False)
    # устанавливаем нижнюю строку последнего раздела перед итогами
    rows_of_title[-1]['row_razdel_end'] = rows_itogi[0]['row_razdel_begin'] - 1

    return rows_of_title
Example #5
0
    def copyFromAvancore(ws, avancoreTitle, max_number, cell_start_row,
                         cell_start_col):

        # кол-во строк и столбцов в файле Аванкор
        index_max = df_avancor.shape[0]
        collumn_max = df_avancor.shape[1]

        zapiski_null = []  # список пустых форм
        # for url, form in urlSheets.items():

        if avancoreTitle:
            # если ячейка в столбце "sheet_1_title" пустая, то "title_1_name == nan"
            # в этом случае: bool(title_1_name == title_1_name) == Fals
            # (...странно, но работает)

            # Номер строки с названием раздела в файле Аванкор"""
            title_row = fun.razdel_name_row(df_avancor, avancoreTitle,
                                            index_max)

            # находим номер первой строку с данными в файле Аванкор
            data_row = fun.start_data_row(df_avancor, index_max, title_row)

            # находим номер последней строки с данными в таблице Аванкор"""
            row_end = fun.end_data_row(df_avancor, index_max, data_row)

            # Если ячейка - (столбец:3, строка: над последней строкой)
            # не равна "2" (это заголовок второй колонки),
            # то значит в таблице есть данные для копирования
            # if df_avancor.loc[row_end - 1, 3] != '2':

            # Если ячейка - (столбец:2, строка: над последней строкой)
            # не равна "1" (это заголовок 1-ой колонки таблицы),
            # или текст в ячейки начинается с 'Оценочная' (предпоследняя таблица),
            # то значит в таблице есть данные для копирования
            cell = str(df_avancor.loc[row_end - 1, 2])
            if cell != '1' and \
                    not cell.startswith('Оценочная'):

                # список всех номеров строк в таблице Аванкор
                rows_numbers = [x for x in range(data_row, row_end)]

                # Номера колонок в таблице Аванкор, за исключением пустых
                columns_numbers = fun.find_columns_numbers(df_avancor,
                                                           collumn_max,
                                                           max_number,
                                                           data_row,
                                                           data_col=3)

                # Копирование данных из таблицы Аванков в таблицу XBRL
                dcop.copy_data(ws, df_avancor, rows_numbers, columns_numbers,
                               cell_start_row, cell_start_col)

                log.error(
                    f'"{ws.title}" --> отсутствует "Идентификатор строки"')

            else:  # в файле Аванкор Раздел пустой
                return False
        else:  # в файле Аванкор Раздела отсутствует
            return False

        return True