fix: bill of payment generation refactoring
This commit is contained in:
@@ -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
|
||||
|
||||
122
static/css/bill-of-payment.css
Normal file
122
static/css/bill-of-payment.css
Normal 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
Reference in New Issue
Block a user