feat: oleg gone away

This commit is contained in:
2024-09-11 23:11:34 +03:00
parent a0d71550f3
commit 689eacf227
3 changed files with 35 additions and 10 deletions

View File

@@ -18,6 +18,7 @@ from models import DealBillRequest, Deal, DealProduct, DealService as DealServic
from schemas.billing import * from schemas.billing import *
from services.base import BaseService from services.base import BaseService
from services.deal import DealService from services.deal import DealService
from utils.list_utils import to_locale_number
env = Environment(loader=FileSystemLoader(Path("templates") / Path("documents"))) env = Environment(loader=FileSystemLoader(Path("templates") / Path("documents")))
@@ -148,16 +149,16 @@ class BillingService(BaseService):
services.append( services.append(
CreateBillingRequestValue( CreateBillingRequestValue(
name=f'[{product.product.name}] - {service.service.name}', name=f'[{product.product.name}] - {service.service.name}',
price=service.price, price=to_locale_number(service.price),
amount=product.quantity amount=to_locale_number(product.quantity)
) )
) )
for service in deal.services: for service in deal.services:
services.append( services.append(
CreateBillingRequestValue( CreateBillingRequestValue(
name=f'{service.service.name}', name=f'{service.service.name}',
price=service.price, price=to_locale_number(service.price),
amount=service.quantity amount=to_locale_number(service.quantity)
) )
) )
@@ -180,6 +181,7 @@ class BillingService(BaseService):
deal_price = sum((service.price * service.amount for service in services)) deal_price = sum((service.price * service.amount for service in services))
deal_price_words = get_string_by_number(deal_price)[0:-10] deal_price_words = get_string_by_number(deal_price)[0:-10]
deal_price = to_locale_number(deal_price)
template = env.get_template("bill-of-payment.html") template = env.get_template("bill-of-payment.html")
now = datetime.datetime.now() now = datetime.datetime.now()
@@ -194,7 +196,6 @@ class BillingService(BaseService):
async def create_billing_document_pdf(self, deal_id) -> BytesIO: async def create_billing_document_pdf(self, deal_id) -> BytesIO:
doc = await self._create_billing_document_html(deal_id) doc = await self._create_billing_document_html(deal_id)
pdf_file = BytesIO() pdf_file = BytesIO()
HTML(string=doc).write_pdf(pdf_file) HTML(string=doc).write_pdf(pdf_file)

View File

@@ -35,10 +35,12 @@
margin-top: 8px; margin-top: 8px;
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
/*flex-direction: column;*/
/*text-align: right;*/ /*text-align: right;*/
} }
.footer-block { .footer-block {
justify-content: space-between;
} }
@@ -105,6 +107,22 @@
border-top: 2px solid black; border-top: 2px solid black;
} }
.footer-right {
text-align: right;
}
.footer-line-right {
align-self: flex-end;
font-size: medium;
font-weight: bolder;
margin: 2px 0;
}
.footer-words {
flex-direction: column-reverse;
display: flex;
justify-content: flex-end;
}
</style> </style>
</head> </head>
<body> <body>
@@ -146,9 +164,9 @@
{% for service in services %} {% for service in services %}
<tr> <tr>
<td>{{ service.name }}</td> <td>{{ service.name }}</td>
<td>{{ service.amount }}</td> <td>{{ service.amount }} шт.</td>
<td>{{ service.price }}</td> <td>{{ service.price }}</td>
<td>{{ service.price * service.amount }}</td> <td>{{ '{:,}'.format(service.price * service.amount).replace(',', ' ') }}</td>
</tr> </tr>
{% endfor %} {% endfor %}
</tbody> </tbody>
@@ -160,10 +178,14 @@
<div class="footer-line">+79777740525 Игорь С. (Т-Банк)</div> <div class="footer-line">+79777740525 Игорь С. (Т-Банк)</div>
</div> </div>
<div class="footer-block"> <div class="footer-block">
<div class="footer-line">Итого к оплате: {{ deal_price }} Р</div> <div class="footer-line-right">Итого к оплате: {{ deal_price }} </div>
<div class="footer-line">{{ deal_price_words }}</div>
</div> </div>
</div> </div>
<div class="footer-words">
<div class="footer-line-right">{{ deal_price_words }}</div>
</div>
</div> </div>
</div> </div>
</body> </body>

View File

@@ -7,3 +7,5 @@ def compile_query_to_plain_sql(query) -> str:
return query.compile(compile_kwargs={ return query.compile(compile_kwargs={
'literal_binds': True 'literal_binds': True
}) })
def to_locale_number(value):
return '{:,}'.format(value).replace(',', ' ')