for idx, col in enumerate(df2): if df2[col].dtype in ('object', 'string_', 'unicode_' ) and df2[col].name not in ('КПП', 'Категория'): max_len = df2[col].map(len).max() + 1 else: series = df2[col].name max_len = 30 worksheet.set_column(idx, idx, max_len) df2.to_excel(writer, encoding='utf8', sheet_name="Отчет", index=False, freeze_panes=(1, 1)) writer.save() send_mail( send_from="*****@*****.**", send_to=nyz[nyz_i], subject="Отчет для {}".format(df["Имя"].values[0]), text= """Информация об удельном весе продаж определенных поставщиков в общем обороте НУЗ и по категориям от {}. В случае если вложенный файл приходит с расширением *.dat, то необходимо переименовать его в *.xlsx. Также данная неполадка решается путем настройки почтового клиента. С уважением, ООО "Эмсофт" +7 (495) 230-23-48 [email protected]""".format(today.isoformat()), files=file)
GROUP BY contract.fk_customer_id) PF_not_close on PF_not_close.customer = c.fk_customer_id where c.fk_customer_id = {} group by c.fk_customer_id, a.name, closed.count, pf.summa, closed.summa, pf.sups, pf.vsego, PF_not_close.vsego, PF_not_close.summa order by count(os.id) DESC""".format(nyz_i) df2 = pd.read_sql_query(query,db_connection) df2.to_excel(writer, encoding='utf8', sheet_name="Отчет", index=False, freeze_panes = (1,1)) worksheet = writer.sheets["Отчет"] df = pd.read_sql_query("""select fk_customer_id as "Идентификатор", name as "Имя" from agent where fk_customer_id = {}""".format(nyz_i), db_connection) for idx, col in enumerate(df2): if df2[col].count() > 2 and df2[col][1] is not None and df2[col].dtypes != 'int64' and df2[col].dtypes != 'float64': series = df2[col][1] else: series = df2[col].name max_len = len(str(series))+1 worksheet.set_column(idx, idx, max_len) df2.to_excel(writer, encoding='utf8', sheet_name="Отчет", index=False, freeze_panes = (1,1)) writer.save() send_mail(send_from="*****@*****.**", send_to=nyz[nyz_i], subject="Отчет для {}".format(df["Имя"].values[0]), text="""Ежемесячный отчет с информацией по незакрытым заказам от {}. В случае если вложенный файл приходит с расширением *.dat, то необходимо переименовать его в *.xlsx. Также данная неполадка решается путем настройки почтового клиента. С уважением, ООО "Эмсофт" +7 (495) 230-23-48 [email protected]""".format(today.isoformat()), files=file)
col].dtypes != 'float64' and df2[col].name not in ( "Номер договора", "Окончание договора", "Статус договора"): series = df2[col][1] else: series = df2[col].name max_len = len(str(series)) + 5 worksheet.set_column(idx, idx, max_len) df2.to_excel(writer, encoding='utf8', sheet_name="Отчет №18", index=False, freeze_panes=(1, 1)) writer.save() send_mail( send_from="*****@*****.**", send_to=nyz[nyz_i], subject="Отчет для {}".format(df["Имя"].values[0]), text= """Ежемесячный отчёт о цикличности поставок и сроки между ними по всем товарам, работам и услугам за 1 месяц от {}. В случае если вложенный файл приходит с расширением *.dat, то необходимо переименовать его в *.xlsx. Также данная неполадка решается путем настройки почтового клиента. С уважением, ООО "Эмсофт" +7 (495) 230-23-48 [email protected]""".format(today.isoformat()), files=file)
elif row == 'ACTIVE': df2.loc[idx, "Статус договора"] = 'Активный' elif row == 'AGREED': df2.loc[idx, "Статус договора"] = 'Согласован' elif row == 'REJECTED': df2.loc[idx, "Статус договора"] = 'Отклонен' elif row == 'DELETED': df2.loc[idx, "Статус договора"] = 'Удален' for idx, row in enumerate(df2["Статус поставщика"]): if row == 'OPERATIVE': df2.loc[idx, "Статус поставщика"] = 'Рабочий' elif row == 'POSTFACTUM': df2.loc[idx, "Статус поставщика"] = 'Постфактум' df2.to_excel(writer, encoding='utf8', sheet_name="Отчет №17", index=False, freeze_panes=(1, 1)) writer.save() send_mail( send_from="*****@*****.**", send_to=["*****@*****.**", "*****@*****.**"], subject="Отчет №17", text= "Отчет с информацией о пролонгированных договорах на срок свыше года и договорах с открытой датой окончания от {} \n\nС уважением,\nООО \"Эмсофт\"\n+7 (495) 230-23-48\[email protected]\n" .format(today.isoformat()), files=file)
if df2[col].count() > 2 and df2[col][1] is not None and df2[ col].dtypes != 'int64' and df2[col].dtypes != 'float64': series = df2[col][1] else: series = df2[col].name max_len = len(str(series)) + 1 worksheet.set_column(idx, idx, max_len) for idx, row in enumerate(df2["Тип оплаты"]): if row == 'PARTIAL': df2.loc[idx, "Тип оплаты"] = 'Частичная предоплата' elif row == 'FULL': df2.loc[idx, "Тип оплаты"] = 'Полная' elif row == 'POSTPAY': df2.loc[idx, "Тип оплаты"] = 'Постоплата' df2.to_excel(writer, encoding='utf8', sheet_name="Отчет №15.1", index=False, freeze_panes=(1, 1)) writer.save() send_mail( send_from="*****@*****.**", send_to=["*****@*****.**", "*****@*****.**"], subject="Отчет №15.1", text= "Детализация отчета по количеству договоров, в которых присутствует авансовый платеж в разрезе категорий, с указанием % аванса от {} \n\nС уважением,\nООО \"Эмсофт\"\n+7 (495) 230-23-48\[email protected]\n" .format(today.isoformat()), files=file)
worksheet.set_column(idx, idx, max_len) for idx, row in enumerate(df2["Тип оплаты"]): if row == 'PARTIAL': df2.loc[idx, "Тип оплаты"] = 'Частичная предоплата' elif row == 'FULL': df2.loc[idx, "Тип оплаты"] = 'Полная' elif row == 'POSTPAY': df2.loc[idx, "Тип оплаты"] = 'Постоплата' df2.to_excel(writer, encoding='utf8', sheet_name="Отчет", index=False, freeze_panes=(1, 1)) writer.save() send_mail( send_from="*****@*****.**", send_to=nyz[nyz_i], subject="Отчет для {}".format(df["Имя"].values[0]), text= """Детализация отчета по количеству договоров, в которых присутствует авансовый платеж в разрезе категорий, с указанием % аванса от {}. В случае если вложенный файл приходит с расширением *.dat, то необходимо переименовать его в *.xlsx. Также данная неполадка решается путем настройки почтового клиента. С уважением, ООО "Эмсофт" +7 (495) 230-23-48 [email protected]""".format(today.isoformat()), files=file)
elif row == 'PARTIAL_PRE_PAYMENT': df2.loc[idx, "Статус заказа"] = 'Частичная предоплата' elif row == 'RECEPTION': df2.loc[idx, "Статус заказа"] = 'Получение' elif row == 'ORDER_RESULTS': df2.loc[idx, "Статус заказа"] = 'Редактирование заказа' elif row == 'ORDER_CLOSED_POSTFACTUM': df2.loc[idx, "Статус заказа"] = 'Заказ закрыт (постфактум)' elif row == 'PAYMENT_POSTFACTUM': df2.loc[idx, "Статус заказа"] = 'Оплата (постфактум)' elif row == 'ORDER_RESULTS_POSTFACTUM': df2.loc[idx, "Статус заказа"] = 'Редактирование заказа (постфактум)' #for idx, row in enumerate(df2["НДС"]): # if row == -1: # df2.loc[idx, "НДС"] = 'Без НДС' df2.to_excel(writer, encoding='utf8', sheet_name="Отчет№3", index=False, freeze_panes=(1, 1)) writer.save() send_mail( send_from="*****@*****.**", send_to=["*****@*****.**", "*****@*****.**"], subject="Отчет №3", text= " Ежемесячный отчет по заказам, оплаченным раньше чем заканчивается отсрочка платежа c {} по {} \n\nС уважением,\nООО \"Эмсофт\"\n+7 (495) 230-23-48\[email protected]\n" .format(first_day_last_month, lastMonth.isoformat()), files=file)
elif row == 'PAYMENT_RECEIVED': df2.loc[idx, "Статус заказа"] = 'Поступление ДС' elif row == 'PARTIAL_POST_PAYMENT_RECEIVED': df2.loc[idx, "Статус заказа"] = 'Поступление ДС постоплаты' elif row == 'PARTIAL_PRE_PAYMENT_RECEIVED': df2.loc[idx, "Статус заказа"] = 'Поступление ДС предоплаты' elif row == 'AGREED_BY_SUPPLIER': df2.loc[idx, "Статус заказа"] = 'Согласование поставщиком' elif row == 'PARTIAL_POST_PAYMENT': df2.loc[idx, "Статус заказа"] = 'Частичная постоплата' elif row == 'PARTIAL_PRE_PAYMENT': df2.loc[idx, "Статус заказа"] = 'Частичная предоплата' elif row == 'RECEPTION': df2.loc[idx, "Статус заказа"] = 'Получение' elif row == 'ORDER_RESULTS': df2.loc[idx, "Статус заказа"] = 'Редактирование заказа' elif row == 'ORDER_CLOSED_POSTFACTUM': df2.loc[idx, "Статус заказа"] = 'Заказ закрыт (постфактум)' elif row == 'PAYMENT_POSTFACTUM': df2.loc[idx, "Статус заказа"] = 'Оплата (постфактум)' elif row == 'ORDER_RESULTS_POSTFACTUM': df2.loc[idx, "Статус заказа"] = 'Редактирование заказа (постфактум)' for idx, row in enumerate(df2["НДС"]): if row == -1: df2.loc[idx, "НДС"] = 'Без НДС' df2.to_excel(writer, encoding='utf8', sheet_name=name_sheet, index=False, freeze_panes = (1,1)) writer.save() send_mail(send_from="*****@*****.**", send_to=["*****@*****.**", "*****@*****.**"], subject="Отчет №8", text="Ежемесячный отчет по всем заказам отсортированный по дирекциям c {} по {} \n\nС уважением,\nООО \"Эмсофт\"\n+7 (495) 230-23-48\[email protected]\n".format(first_day_last_month, lastMonth.isoformat()), files=file)
INNER JOIN order_state_event ON order_state_event.event_id = events.id left join suppliers_product on suppliers_product.id = order_item.fk_supplier_product_id left join product_name on product_name.id = suppliers_product.fk_product_name_id left join product on product.id = product_name.fk_product_id left join product_group on product_group.id = product.fk_product_group_id where (events.event_driven_id, events.created_when) IN (SELECT events.event_driven_id, MAX(events.created_when) FROM events WHERE event_type = 'ORDER_STATE' GROUP BY events.event_driven_id) and order_state_event.order_state != 'ORDER_CANCELED' and contract.fk_customer_id NOT IN (7601315, 1232844, 1788755, 1784971, 1784576, 1787831, 1793943, 1788809, 1792883, 1787871, 1787947, 8405381) and (order_item.price != 0 or order_item.quantity != 0) group by product_group.name) all_statistic on all_statistic.product_group = sup_statistic.product_group or (all_statistic.product_group is null and sup_statistic.product_group is null) where contract.fk_customer_id NOT IN (7601315, 1232844, 1788755, 1784971, 1784576, 1787831, 1793943, 1788809, 1792883, 1787871, 1787947, 8405381) group by temp.name, sup_statistic.count_orders, sup_statistic.sum_orders, all_statistic.sum_orders, temp.inn, temp.kpp, all_statistic.product_group order by all_statistic.product_group, (sup_statistic.sum_orders/all_statistic.sum_orders)*100 DESC""" df2 = pd.read_sql_query(query,db_connection) df2.to_excel(writer, encoding='utf8', sheet_name="Отчет №19", index=False, freeze_panes = (1,1)) worksheet = writer.sheets["Отчет №19"] for idx, col in enumerate(df2): if df2[col].dtype in ('object', 'string_', 'unicode_') and df2[col].name not in ('КПП', 'Категория'): max_len = df2[col].map(len).max()+1 else: series = df2[col].name max_len = 30 worksheet.set_column(idx, idx, max_len) df2.to_excel(writer, encoding='utf8', sheet_name="Отчет №19", index=False, freeze_panes = (1,1)) writer.save() send_mail(send_from="*****@*****.**", send_to=["*****@*****.**", "*****@*****.**"], subject="Отчет №19", text="Ежемесячный отчет об удельном весе продаж определенных поставщиков в общем обороте сети и по категориям отдельно от {} \n\nС уважением,\nООО \"Эмсофт\"\n+7 (495) 230-23-48\[email protected]\n".format(today.isoformat()), files=file)
encoding='utf8', sheet_name="Отчет№11", index=False, freeze_panes=(1, 1)) worksheet = writer.sheets["Отчет№11"] for idx, col in enumerate(df2): if df2[col].count() > 2 and df2[col][1] is not None and df2[ col].dtypes != 'int64' and df2[col].dtypes != 'float64': series = df2[col][1] else: series = df2[col].name max_len = len(str(series)) + 1 worksheet.set_column(idx, idx, max_len) df2.to_excel(writer, encoding='utf8', sheet_name="Отчет№11", index=False, freeze_panes=(1, 1)) writer.save() send_mail( send_from="*****@*****.**", send_to=["*****@*****.**", "*****@*****.**"], subject="Отчет №11", text= " Ежемесячный отчет по контрагентам зарегистрированным как поставщики с {} по {} \n\nС уважением,\nООО \"Эмсофт\"\n+7 (495) 230-23-48\[email protected]\n" .format(first_day_last_month, lastMonth.isoformat()), files=file)
df2.to_excel(writer, encoding='utf8', sheet_name="Отчет№7", index=False, freeze_panes=(1, 1)) worksheet = writer.sheets["Отчет№7"] for idx, col in enumerate(df2): if df2[col].dtype in ('object', 'string_', 'unicode_'): max_len = df2[col].map(len).max() + 1 else: series = df2[col].name max_len = len(str(series)) + 1 worksheet.set_column(idx, idx, max_len) df2.to_excel(writer, encoding='utf8', sheet_name="Отчет№7", index=False, freeze_panes=(1, 1)) writer.save() send_mail( send_from="*****@*****.**", send_to=["*****@*****.**", "*****@*****.**"], subject="Отчет №7", text= " Ежемесячный отчет за предыдущие 7 дней по количеству и сумме заказов НУЗов с {} по {} \n\nС уважением,\nООО \"Эмсофт\"\n+7 (495) 230-23-48\[email protected]\n" .format(first_day_last_month, lastMonth.isoformat()), files=file)
worksheet = writer.sheets["Отчет№12"] for idx, col in enumerate(df2): if df2[col].count() > 2 and df2[col][1] is not None and df2[ col].dtypes != 'int64' and df2[col].dtypes != 'float64': series = df2[col][1] else: series = df2[col].name max_len = len(str(series)) + 1 worksheet.set_column(idx, idx, max_len) df2 = df2.fillna(0) #df2.to_excel(writer, encoding='utf8', sheet_name="Отчет№5", index=False, freeze_panes = (1,1)) df2.to_excel(writer, encoding='utf8', sheet_name="Отчет№12", index=False, freeze_panes=(1, 1)) writer.save() send_mail( send_from="*****@*****.**", send_to=["*****@*****.**", "*****@*****.**"], subject="Отчет №12", text= " Еженедельный накопительный отчет по всем статусам заказов всех НУЗов с {} по {} \n\nС уважением,\nООО \"Эмсофт\"\n+7 (495) 230-23-48\[email protected]\n" .format(first_day_last_month, lastMonth.isoformat()), files=file)
if df2[col].count() > 2 and df2[col][1] is not None and df2[ col].dtypes != 'int64' and df2[col].dtypes != 'float64': series = df2[col][1] else: series = df2[col].name max_len = len(str(series)) + 1 worksheet.set_column(idx, idx, max_len) for idx, row in enumerate(df2["Тип оплаты"]): if row == 'PARTIAL': df2.loc[idx, "Тип оплаты"] = 'Частичная предоплата' elif row == 'FULL': df2.loc[idx, "Тип оплаты"] = 'Полная' elif row == 'POSTPAY': df2.loc[idx, "Тип оплаты"] = 'Постоплата' df2.to_excel(writer, encoding='utf8', sheet_name="Отчет №15", index=False, freeze_panes=(1, 1)) writer.save() send_mail( send_from="*****@*****.**", send_to=["*****@*****.**", "*****@*****.**"], subject="Отчет №15", text= " Ежемесячный отчет с информацией о количестве договоров, в которых присутствует авансовый платеж, а также с указанием % аванса от {} \n\nС уважением,\nООО \"Эмсофт\"\n+7 (495) 230-23-48\[email protected]\n" .format(today.isoformat()), files=file)
elif row == 'PARTIAL_PRE_PAYMENT': df2.loc[idx, "Статус заказа"] = 'Частичная предоплата' elif row == 'RECEPTION': df2.loc[idx, "Статус заказа"] = 'Получение' elif row == 'ORDER_RESULTS': df2.loc[idx, "Статус заказа"] = 'Редактирование заказа' elif row == 'ORDER_CLOSED_POSTFACTUM': df2.loc[idx, "Статус заказа"] = 'Заказ закрыт (постфактум)' elif row == 'PAYMENT_POSTFACTUM': df2.loc[idx, "Статус заказа"] = 'Оплата (постфактум)' elif row == 'ORDER_RESULTS_POSTFACTUM': df2.loc[idx, "Статус заказа"] = 'Редактирование заказа (постфактум)' #for idx, row in enumerate(df2["НДС"]): # if row == -1: # df2.loc[idx, "НДС"] = 'Без НДС' df2.to_excel(writer, encoding='utf8', sheet_name="Отчет№4", index=False, freeze_panes=(1, 1)) writer.save() send_mail( send_from="*****@*****.**", send_to=["*****@*****.**", "*****@*****.**"], subject="Отчет №4", text= " Накопительный отчет по заказам с 01.01.2019, статус которых не менялся более чем 90 дней от {} \n\nС уважением,\nООО \"Эмсофт\"\n+7 (495) 230-23-48\[email protected]\n" .format(today.isoformat()), files=file)
for idx, col in enumerate(df2): if df2[col].dtype in ('object', 'string_', 'unicode_') and df2[col].name not in ( 'Дата создания заказа', 'Категория'): max_len = df2[col].map(len).max() + 1 else: series = df2[col].name max_len = len(str(series)) + 1 worksheet.set_column(idx, idx, max_len) df2.to_excel(writer, encoding='utf8', sheet_name="Отчет", index=False, freeze_panes=(1, 1)) writer.save() send_mail( send_from="*****@*****.**", send_to=nyz[nyz_i], subject="Отчет для {}".format(df["Имя"].values[0]), text= """Ежемесячный отчет с заказами, содержащими товары с НДС 0% c {} по {}. В случае если вложенный файл приходит с расширением *.dat, то необходимо переименовать его в *.xlsx. Также данная неполадка решается путем настройки почтового клиента. С уважением, ООО "Эмсофт" +7 (495) 230-23-48 [email protected]""".format(first_day_last_month, lastMonth.isoformat()), files=file)
(date - datetime.timedelta(days=7)).isoformat(), date.isoformat()) columns.append("{}.{}-{}.{}".format( (date - datetime.timedelta(days=7)).month, (date - datetime.timedelta(days=7)).day, date.month, date.day)) query = query + " from order_s INNER JOIN (SELECT fk_order_id, sum(quantity*price) as order_sums from order_item GROUP by fk_order_id) orders ON orders.fk_order_id=order_s.id INNER JOIN contract ON contract.id = order_s.fk_contract_id INNER JOIN (SELECT name, fk_customer_id FROM agent) comp ON comp.fk_customer_id = contract.fk_customer_id INNER JOIN events ON events.event_driven_id = contract.fk_supplier_id inner join supplier_state_event on supplier_state_event.event_id = events.id where contract.fk_customer_id IN (1784593, 1784596, 1784602, 1784605, 1784608, 1784614, 1784617, 1784644, 1784626, 1784635, 1784632, 1784638, 1784980, 949547, 1784962, 1784956, 1784950, 1784839, 1785001, 1784998, 1785007, 1785010) GROUP BY comp.name" writer = pd.ExcelWriter(file, engine='xlsxwriter') df = pd.read_sql_query(query, db_connection) df.columns = columns new_row = [] for test in range(len(columns)): new_row.append(" ") df.loc[-1] = new_row # adding a row df.index = df.index + 1 # shifting index df = df.sort_index() df.to_excel(writer, encoding='utf8', sheet_name="Статистика", index=False) worksheet = writer.sheets["Статистика"] worksheet.merge_range('B2:E2', 'Количество заказов') worksheet.merge_range('F2:I2', 'Сумма заказов') worksheet.merge_range('J2:M2', 'Количество заказов ПФ') worksheet.merge_range('N2:Q2', 'Сумма заказов ПФ') writer.save() send_mail( send_from="*****@*****.**", send_to=["*****@*****.**", "*****@*****.**"], subject="Отчет №10", text= "Ежемесячный отчет по ДКБ и НУЗам центрального подчинения со статистикой за 4 последних недели от {} \n\nС уважением,\nООО \"Эмсофт\"\n+7 (495) 230-23-48\[email protected]\n" .format(DT.today().isoformat()), files=file)
encoding='utf8', sheet_name="Отчет №16", index=False, freeze_panes=(1, 1)) worksheet = writer.sheets["Отчет №16"] for idx, col in enumerate(df2): if df2[col].count() > 2 and df2[col][1] is not None and df2[ col].dtypes != 'int64' and df2[col].dtypes != 'float64': series = df2[col][1] else: series = df2[col].name max_len = len(str(series)) + 1 worksheet.set_column(idx, idx, max_len) df2.to_excel(writer, encoding='utf8', sheet_name="Отчет №16", index=False, freeze_panes=(1, 1)) writer.save() send_mail( send_from="*****@*****.**", send_to=["*****@*****.**", "*****@*****.**"], subject="Отчет №16", text= "Ежемесячный отчет с информацией по незакрытым заказам от {} \n\nС уважением,\nООО \"Эмсофт\"\n+7 (495) 230-23-48\[email protected]\n" .format(today.isoformat()), files=file)
elif row == 'PARTIAL_PRE_PAYMENT': df2.loc[idx, "Статус заказа"] = 'Частичная предоплата' elif row == 'RECEPTION': df2.loc[idx, "Статус заказа"] = 'Получение' elif row == 'ORDER_RESULTS': df2.loc[idx, "Статус заказа"] = 'Редактирование заказа' elif row == 'ORDER_CLOSED_POSTFACTUM': df2.loc[idx, "Статус заказа"] = 'Заказ закрыт (постфактум)' elif row == 'PAYMENT_POSTFACTUM': df2.loc[idx, "Статус заказа"] = 'Оплата (постфактум)' elif row == 'ORDER_RESULTS_POSTFACTUM': df2.loc[idx, "Статус заказа"] = 'Редактирование заказа (постфактум)' #for idx, row in enumerate(df2["НДС"]): # if row == -1: # df2.loc[idx, "НДС"] = 'Без НДС' df2.to_excel(writer, encoding='utf8', sheet_name="Отчет№1", index=False, freeze_panes=(1, 1)) writer.save() send_mail( send_from="*****@*****.**", send_to=["*****@*****.**", "*****@*****.**"], subject="Отчет №1", text= " Ежемесячный отчет по заказам со 100% предоплатой c {} по {} \n\nС уважением,\nООО \"Эмсофт\"\n+7 (495) 230-23-48\[email protected]\n" .format(first_day_last_month, lastMonth.isoformat()), files=file)
left join suppliers_product on suppliers_product.id = order_item.fk_supplier_product_id left join hb_unit on hb_unit.id = suppliers_product.fk_unit_id left join product_name on product_name.id = suppliers_product.fk_product_name_id left join product on product.id = product_name.fk_product_id left join product_group on product_group.id = product.fk_product_group_id WHERE order_item.quantity != 0 and order_item.price != 0 and (events.event_driven_id, events.created_when) IN (SELECT events.event_driven_id, MAX(events.created_when) FROM events WHERE event_type = 'ORDER_STATE' GROUP BY events.event_driven_id) and order_state_event.order_state != 'ORDER_CANCEL' and contract.fk_customer_id NOT IN (7601315, 1232844, 1788755, 1784971, 1784576, 1787831, 1793943, 1788809, 1792883, 1787871, 1787947, 8405381) AND order_s.created_when::date >= '{}' GROUP BY order_item.product_name, agent.name, temp.name, product_group.name HAVING count(distinct order_s.id) > 1 ORDER BY agent.name, (MAX(order_s.created_when) - MIN(order_s.created_when))/count(distinct order_s.id) DESC""".format(first_day_last_month) df2 = pd.read_sql_query(query,db_connection) df2.to_excel(writer, encoding='utf8', sheet_name="Отчет №18", index=False, freeze_panes = (1,1)) worksheet = writer.sheets["Отчет №18"] for idx, col in enumerate(df2): if df2[col].count() > 2 and df2[col][1] is not None and df2[col].dtypes != 'int64' and df2[col].dtypes != 'float64' and df2[col].name not in ("Номер договора", "Окончание договора", "Статус договора"): series = df2[col][1] else: series = df2[col].name max_len = len(str(series))+5 worksheet.set_column(idx, idx, max_len) df2.to_excel(writer, encoding='utf8', sheet_name="Отчет №18", index=False, freeze_panes = (1,1)) writer.save() send_mail(send_from="*****@*****.**", send_to=["*****@*****.**", "*****@*****.**"], subject="Отчет №18", text="Отчёт о цикличности поставок и сроки между ними по всем товарам, работам и услугам за 1 месяц от {} \n\nС уважением,\nООО \"Эмсофт\"\n+7 (495) 230-23-48\[email protected]\n".format(today.isoformat()), files=file)
elif row == 'ORDER_CLOSED_POSTFACTUM': df2.loc[idx, "Статус заказа"] = 'Заказ закрыт (постфактум)' elif row == 'PAYMENT_POSTFACTUM': df2.loc[idx, "Статус заказа"] = 'Оплата (постфактум)' elif row == 'ORDER_RESULTS_POSTFACTUM': df2.loc[idx, "Статус заказа"] = 'Редактирование заказа (постфактум)' for idx, row in enumerate(df2["НДС"]): if row == -1: df2.loc[idx, "НДС"] = 'Без НДС' for idx, col in enumerate(df2): if df2[col].dtype in ('object', 'string_', 'unicode_') and df2[col].name not in ('Дата создания заказа', 'Категория'): max_len = df2[col].map(len).max()+1 else: series = df2[col].name max_len = len(str(series))+1 #print(max_len) worksheet.set_column(idx, idx, max_len) #columnLenghts = np.vectorize(len) #maxColumnLenghts = columnLenghts(df2.values.astype(str)).max(axis=0) #print('Max Column Lengths ', maxColumnLenghts) df2.to_excel(writer, encoding='utf8', sheet_name="Отчет№5", index=False, freeze_panes = (1,1)) writer.save() send_mail(send_from="*****@*****.**", send_to=["*****@*****.**", "*****@*****.**"], subject="Отчет №5", text=" Ежемесячный отчет с заказами, содержащими товары с НДС 0% c {} по {} \n\nС уважением,\nООО \"Эмсофт\"\n+7 (495) 230-23-48\[email protected]\n".format(first_day_last_month, lastMonth.isoformat()), files=file)
df2.to_excel(writer, encoding='utf8', sheet_name="Отчет№6", index=False, freeze_panes=(1, 1)) worksheet = writer.sheets["Отчет№6"] for idx, col in enumerate(df2): if df2[col].dtype in ('object', 'string_', 'unicode_'): max_len = df2[col].map(len).max() + 1 else: series = df2[col].name max_len = len(str(series)) + 1 worksheet.set_column(idx, idx, max_len) df2.to_excel(writer, encoding='utf8', sheet_name="Отчет№6", index=False, freeze_panes=(1, 1)) writer.save() send_mail( send_from="*****@*****.**", send_to=["*****@*****.**", "*****@*****.**"], subject="Отчет №6", text= " Ежемесячный накопительный отчет по количеству и сумме заказов НУЗов от {} \n\nС уважением,\nООО \"Эмсофт\"\n+7 (495) 230-23-48\[email protected]\n" .format(today.isoformat()), files=file)