feat: end-point for deal document generation
This commit is contained in:
162
templates/documents/deal.html
Normal file
162
templates/documents/deal.html
Normal file
@@ -0,0 +1,162 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport"
|
||||
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
|
||||
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
||||
<script src="/static/js/JsBarcode.all.min.js"></script>
|
||||
<title>Сделка</title>
|
||||
<style>
|
||||
@import url("https://fonts.googleapis.com/css?family=Libre+Barcode+128");
|
||||
@import url("https://fonts.googleapis.com/css?family=Barlow+Condensed:300,400,700");
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
JsBarcode(".barcode").init();
|
||||
</script>
|
||||
<div class="doc-container">
|
||||
<div>
|
||||
<div>
|
||||
<!--#region Header -->
|
||||
<div class="deal-name-id-container">
|
||||
<div class="medium-text bold">
|
||||
Название сделки: {{ deal.name }}
|
||||
</div>
|
||||
<div class="medium-text deal-id">
|
||||
ID:{{ deal.id }}
|
||||
</div>
|
||||
</div>
|
||||
<hr/>
|
||||
<div class="medium-text">
|
||||
Дата создания: {{ now().strftime("%d.%m.%Y, %H:%M") }}
|
||||
</div>
|
||||
<div class="medium-text">
|
||||
Текущий статус: {{ current_status_str }}
|
||||
</div>
|
||||
<div class="medium-text">
|
||||
{% if deal.comment %}
|
||||
Комментарий к сделке: {{ deal.comment }}
|
||||
{% else %}
|
||||
Комментарий к сделке отсутствует
|
||||
{% endif %}
|
||||
</div>
|
||||
<hr/>
|
||||
<!--#endregion -->
|
||||
<!--#region General services -->
|
||||
<div class="large-text bold">
|
||||
Клиент: {{ deal.client.name }}
|
||||
</div>
|
||||
<div class="medium-text bold">
|
||||
Дата отгрузки: {{ last_status.next_status_deadline.strftime("%d.%m.%Y") }}
|
||||
</div>
|
||||
{% if deal.base_marketplace.name %}
|
||||
<div class="medium-text bold">Маркетплейс: {{ deal.base_marketplace.name }}</div>
|
||||
{% endif %}
|
||||
{% if deal.shipping_warehouse.name %}
|
||||
<div class="medium-text bold">Склад отгрузки: {{ deal.shipping_warehouse.name }}</div>
|
||||
{% endif %}
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Общие услуги</th>
|
||||
<th>Количество</th>
|
||||
<th>Сумма</th>
|
||||
</tr>
|
||||
<tfoot>
|
||||
</tfoot>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for service in deal.services %}
|
||||
<tr>
|
||||
<td>{{ service.service.name }}</td>
|
||||
<td>{{ '{:,}'.format(service.quantity) }} шт.</td>
|
||||
<td>{{ '{:,}'.format(service.price * service.quantity).replace(',', ' ') }} Р</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="medium-text total align-right bold">
|
||||
Итого: {{ general_services_total }} Р
|
||||
</div>
|
||||
<!--#endregion -->
|
||||
<!--#region Product services -->
|
||||
{% for product in deal.products %}
|
||||
<div style="page-break-inside: avoid">
|
||||
<hr/>
|
||||
<div style="display: flex">
|
||||
{% if product.product.images|length != 0 %}
|
||||
<div class="img-container">
|
||||
<img class="product-img" src="data:image/jpeg;base64,{{ product_images[loop.index0] }}"
|
||||
alt="Фото товара"/>
|
||||
</div>
|
||||
{% endif %}
|
||||
<div style="margin: 12px 0">
|
||||
<div class="medium-text bold">
|
||||
{{ loop.index }}. {{ product.product.name }}
|
||||
</div>
|
||||
<div class="product-data">
|
||||
<div class="small-text">Артикул: {{ product.product.article }}</div>
|
||||
{% if product.product.brand %}
|
||||
<div class="small-text">Бренд: {{ product.product.brand }}</div>
|
||||
{% endif %}
|
||||
{% if product.product.color %}
|
||||
<div class="small-text">Цвет: {{ product.product.color }}</div>
|
||||
{% endif %}
|
||||
{% if product.product.size %}
|
||||
<div class="small-text">Размер: {{ product.product.size }}</div>
|
||||
{% endif %}
|
||||
{% if product.quantity %}
|
||||
<div class="small-text">Количество: {{ product.quantity }}</div>
|
||||
{% endif %}
|
||||
{% if product.product.additional_info %}
|
||||
<div class="small-text">
|
||||
Доп. информация: {{ product.product.additional_info }}
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<hr/>
|
||||
<div style="text-align: right">
|
||||
<div class="barcode-container">
|
||||
<div class="barcode">
|
||||
{{ encode128(product.product.barcodes[0].barcode, "A") }}
|
||||
</div>
|
||||
<div class="barcode-text">
|
||||
{{ product.product.barcodes[0].barcode }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Наименование услуги</th>
|
||||
<th>Цена</th>
|
||||
<th>Сумма</th>
|
||||
</tr>
|
||||
<tfoot>
|
||||
</tfoot>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for service in product.services %}
|
||||
<tr>
|
||||
<td>{{ service.service.name }}</td>
|
||||
<td>{{ '{:,}'.format(product.quantity) }} Р</td>
|
||||
<td>{{ '{:,}'.format(service.price * product.quantity).replace(',', ' ') }} Р</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="medium-text total align-right bold">
|
||||
Итого: {{ product_services_totals[loop.index0] }} Р
|
||||
</div>
|
||||
{% endfor %}
|
||||
<!--#endregion -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user