/
Newest
/
Create_bill
Обзор
Документация
Войти
/
Newest
/
Create_bill
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
bill.py
78 строк
3 KB
Provocarot
update bill.py
21 окт 2024, 09:40
21 окт 2024, 09:40
370e8e2
Код
Авторство
О чём код?
from fpdf import FPDF from fpdf.enums import TableSpan from test import Account import datetime as d from num_to_word import * def get_month(num): month = {1: 'Января', 2: 'Февраля', 3: 'Марта', 4: 'Апреля', 5: 'Мая', 6: 'Июня', 7: 'Июля', 8: 'Августа', 9: 'Сентября', 10: 'Октября', 11: 'Ноября', 12: 'Декабря'} return month[num] INN = '7705033992' BANK = 'ПАО "СБЕРБАНК РОССИИ" Г.МОСКВА' s = Account() comp = s.fetch_one_comp(INN) bank = s.fetch_one_bank(BANK) day = d.date.today() pdf = FPDF() pdf.add_page() pdf.add_font(family="DejaVuSans.ttf", style='B', fname=r"C:\Users\usman\Desktop\разработка\dejavu-fonts-ttf-2.37\ttf" r"\DejaVuSans.ttf") pdf.set_font("DejaVuSans.ttf", 'B', 7) pdf.set_margins(10, 10, 10) tab_for_rec = [ ['Банк получателя', TableSpan.COL, 'БИК', f'{bank[0][1]}'], [bank[0][0], TableSpan.COL, 'Кор. Сч. №', f'{int(bank[0][2])}'], [TableSpan.ROW, TableSpan.ROW, TableSpan.ROW, TableSpan.ROW], ['Получатель', TableSpan.COL, 'Расч. Сч. №',f'{bank[0][3]}'], [f'ИНН {comp[0][1]}', f' КПП {comp[0][2]}',TableSpan.ROW, TableSpan.ROW], [comp[0][0], TableSpan.COL, TableSpan.ROW, TableSpan.ROW], ] with pdf.table(tab_for_rec, first_row_as_headings=False, col_widths=(45, 45, 8, 60)) as f: pass pdf.ln(20) pdf.set_font("DejaVuSans.ttf", 'B', 20) pdf.cell(0, 10, f'Счет на оплату № от {day.day} {get_month(day.month)} {day.year}') pdf.ln() pdf.set_line_width(0.5) pdf.set_draw_color(r=0, g=0, b=0) pdf.line(x1=pdf.get_x(), y1=pdf.get_y(), x2=pdf.get_x()+170, y2=pdf.get_y()) pdf.ln(20) pdf.set_font("DejaVuSans.ttf", 'B', 6) h_for_list = [('№', "Товары (работы, услуги)", "Кол-во", "Ед", "Цена", "Сумма" )] list_of_ord = s.cursor.execute("select cast(id as text), item, cast(qty as text), ed, cast(price as text), cast(sum " "as text) from orders").fetchall() with pdf.table(h_for_list, col_widths = (5, 90, 10, 5, 10, 10), text_align='CENTER') as t: pass pdf.ln() text_al = ("CENTER", "LEFT", "RIGHT", "CENTER", "RIGHT", "RIGHT") with pdf.table(list_of_ord, col_widths=(5, 90, 10, 5, 10, 10), text_align=text_al) as t: pass pdf.ln() len_of_orders = len(list_of_ord) summ_of_ord = sum([int(i[5]) for i in list_of_ord]) pdf.cell(0, 7, f"Итого: {summ_of_ord}", align='RIGHT') pdf.ln() pdf.cell(0,7, f"Итого к оплате: {summ_of_ord}", align="RIGHT") pdf.ln(20) pdf.set_font("DejaVuSans.ttf", 'B', 12) n, c = main(summ_of_ord) pdf.cell(0, 7, f'Всего наименований {len_of_orders}, на сумму {summ_of_ord} ({n}) {c}') pdf.ln() pdf.set_line_width(0.5) pdf.line(x1=pdf.get_x(), y1 = pdf.get_y(), x2=pdf.get_x()+170, y2= pdf.get_y()) pdf.ln(10) pdf.cell(0,7, "Руководитель ________________________________________________") pdf.ln(20) pdf.cell(0,7, "Ответственный _______________________________________________") pdf.output('pdf/new.pdf')