fix: bill of payment generation refactoring

This commit is contained in:
2024-09-20 20:14:02 +04:00
parent 5316f7f9ce
commit e6cb771db0
3 changed files with 131 additions and 135 deletions

View File

@@ -1,16 +1,15 @@
from io import BytesIO
from pathlib import Path
from typing import List
from fastapi import HTTPException
from jinja2 import Environment, FileSystemLoader
from number_to_string import get_string_by_number
from sqlalchemy import select
from sqlalchemy.orm import selectinload
from starlette import status
from weasyprint import HTML
from weasyprint import HTML, CSS
import backend.config
import constants
from constants import MONTHS, ENV
from external.billing import BillingClient, CreateBillingRequestValue, CreateBillRequestSchema, CreateBillRequestItems, \
BillStatusUpdateRequest, NotificationChannel, NotifyReceivedBillRequestSchema, DeleteBillRequestSchema
@@ -195,6 +194,6 @@ class BillingService(BaseService):
async def create_billing_document_pdf(self, deal_id) -> BytesIO:
doc = await self._create_billing_document_html(deal_id)
pdf_file = BytesIO()
HTML(string=doc).write_pdf(pdf_file)
HTML(string=doc).write_pdf(pdf_file, stylesheets=[CSS(constants.APP_PATH + '/static/css/bill-of-payment.css')])
return pdf_file

View File

@@ -0,0 +1,122 @@
@media print {
#header,
#footer,
#nav {
display: none !important;
}
}
.doc-container {
padding: 10px 15px;
font-size: 13px;
font-family: sans-serif;
}
.info-line {
padding-bottom: 6px;
}
.title {
font-size: 16px;
margin-top: 20px;
margin-bottom: 2px;
}
.footer {
margin-top: 8px;
display: flex;
justify-content: space-between;
}
.footer-block {
justify-content: space-between;
}
.footer-line {
font-size: medium;
font-weight: bolder;
margin: 2px 0;
}
table {
width: 100%;
border-collapse: separate;
border-spacing: 0;
border: solid black 2px;
border-radius: 15px;
}
thead {
display: table-header-group;
}
tfoot {
display: table-footer-group;
}
td:nth-child(5) {
border-right: 1px solid white;
}
table tbody tr:nth-child(odd) {
background-color: #dbdbdb;
}
tr {
page-break-inside: avoid;
}
td, th {
padding: 16px 13px;
}
td:first-child, th:first-child {
padding-left: 50px;
}
td:last-child, th:last-child {
padding-right: 50px;
}
td:first-child, th:first-child {
text-align: left;
}
td:first-child {
white-space: normal;
word-wrap: break-word;
}
td:not(:first-child), th:not(:first-child) {
text-align: right;
}
td:not(:first-child) {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
img {
width: 170px;
margin-bottom: 15px;
}
table tfoot {
border-top: 2px solid black;
}
.footer-line-right {
font-size: medium;
font-weight: bolder;
margin: 2px 0;
width: 100%;
text-align: right;
}
.footer-words {
width: 100%;
flex-direction: column-reverse;
justify-content: flex-end;
}

File diff suppressed because one or more lines are too long