assemblerpdf 1.0.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- assemblerpdf/__init__.py +16 -0
- assemblerpdf/assemblers/__init__.py +9 -0
- assemblerpdf/assemblers/base.py +120 -0
- assemblerpdf/assemblers/form.py +257 -0
- assemblerpdf/assemblers/report.py +44 -0
- assemblerpdf/core.py +193 -0
- assemblerpdf/fonts/Inter-Bold.ttf +0 -0
- assemblerpdf/fonts/Inter-Medium.ttf +0 -0
- assemblerpdf/fonts/Inter-Regular.ttf +0 -0
- assemblerpdf/img/Logo-unp-rojo.png +0 -0
- assemblerpdf/img/logo-mininterior-rojo.jpg +0 -0
- assemblerpdf/templates/assemblerpdf/checkbox.html +16 -0
- assemblerpdf/templates/assemblerpdf/footer.html +16 -0
- assemblerpdf/templates/assemblerpdf/grid_row.html +7 -0
- assemblerpdf/templates/assemblerpdf/header.html +19 -0
- assemblerpdf/templates/assemblerpdf/input.html +12 -0
- assemblerpdf/templates/assemblerpdf/radio.html +14 -0
- assemblerpdf/templates/assemblerpdf/section.html +6 -0
- assemblerpdf/templates/assemblerpdf/signature.html +14 -0
- assemblerpdf/templates/assemblerpdf/style.html +318 -0
- assemblerpdf/templates/assemblerpdf/textarea.html +12 -0
- assemblerpdf/templates/sistema/anexos.html +38 -0
- assemblerpdf/templates/sistema/anexos_limpio.html +52 -0
- assemblerpdf/templates/sistema/archivese.html +18 -0
- assemblerpdf/templates/sistema/autoriza_envio.html +33 -0
- assemblerpdf/templates/sistema/checkbox.html +41 -0
- assemblerpdf/templates/sistema/control_cambios.html +43 -0
- assemblerpdf/templates/sistema/datos_basicosinf.html +16 -0
- assemblerpdf/templates/sistema/datos_ot.html +33 -0
- assemblerpdf/templates/sistema/encaso_de.html +5 -0
- assemblerpdf/templates/sistema/fiila_dos_check.html +54 -0
- assemblerpdf/templates/sistema/fila_cinco_zona.html +54 -0
- assemblerpdf/templates/sistema/fila_cuatro.html +20 -0
- assemblerpdf/templates/sistema/fila_cuatro_si_no.html +46 -0
- assemblerpdf/templates/sistema/fila_cuatro_zona.html +48 -0
- assemblerpdf/templates/sistema/fila_dos.html +12 -0
- assemblerpdf/templates/sistema/fila_dos_zona.html +40 -0
- assemblerpdf/templates/sistema/fila_instructivo.html +16 -0
- assemblerpdf/templates/sistema/fila_tres.html +16 -0
- assemblerpdf/templates/sistema/fila_tres_checkbox.html +66 -0
- assemblerpdf/templates/sistema/fila_tres_zona.html +45 -0
- assemblerpdf/templates/sistema/fila_uno.html +8 -0
- assemblerpdf/templates/sistema/firma.html +10 -0
- assemblerpdf/templates/sistema/firma_doble.html +32 -0
- assemblerpdf/templates/sistema/firmaop2.html +17 -0
- assemblerpdf/templates/sistema/firmas_oficializacion.html +66 -0
- assemblerpdf/templates/sistema/hechos_sobrevinientes.html +261 -0
- assemblerpdf/templates/sistema/hechos_sobrevinientes_vacio.html +209 -0
- assemblerpdf/templates/sistema/iformfilacuatro.html +20 -0
- assemblerpdf/templates/sistema/informacion_doble.html +0 -0
- assemblerpdf/templates/sistema/input_2checks.html +98 -0
- assemblerpdf/templates/sistema/input_check.html +40 -0
- assemblerpdf/templates/sistema/input_checkbox.html +53 -0
- assemblerpdf/templates/sistema/input_solitario.html +9 -0
- assemblerpdf/templates/sistema/label_input_dos.html +24 -0
- assemblerpdf/templates/sistema/leyenda_autoriza_correo.html +8 -0
- assemblerpdf/templates/sistema/leyenda_superiol.html +5 -0
- assemblerpdf/templates/sistema/logos.html +4 -0
- assemblerpdf/templates/sistema/manifiesto.html +41 -0
- assemblerpdf/templates/sistema/notificacion_correo.html +14 -0
- assemblerpdf/templates/sistema/oficializacion.html +21 -0
- assemblerpdf/templates/sistema/pregunta_si_no.html +34 -0
- assemblerpdf/templates/sistema/pregunta_tresopciones.html +47 -0
- assemblerpdf/templates/sistema/qr_oficializacion.html +7 -0
- assemblerpdf/templates/sistema/situacion_amenaza.html +82 -0
- assemblerpdf/templates/sistema/style.html +228 -0
- assemblerpdf/templates/sistema/subtitulo_icono.html +6 -0
- assemblerpdf/templates/sistema/subtitulo_icono_largo.html +6 -0
- assemblerpdf/templates/sistema/tabla_doble.html +15 -0
- assemblerpdf/templates/sistema/tabla_instructivo.html +12 -0
- assemblerpdf/templates/sistema/tabla_matriz_riesgo.html +135 -0
- assemblerpdf/templates/sistema/tabla_proyeccion.html +37 -0
- assemblerpdf/templates/sistema/tabla_simple.html +187 -0
- assemblerpdf/templates/sistema/texarea.html +9 -0
- assemblerpdf/templates/sistema/tipo_identificacion.html +55 -0
- assemblerpdf/templates/sistema/tipos_checkbox.html +47 -0
- assemblerpdf/templates/sistema/titulo.html +6 -0
- assemblerpdf/templates/sistema/titulo_logo.html +22 -0
- assemblerpdf/templates/sistema/titulo_principal.html +5 -0
- assemblerpdf/utils/__init__.py +1 -0
- assemblerpdf/utils/template_loader.py +48 -0
- assemblerpdf-1.0.0.dist-info/METADATA +86 -0
- assemblerpdf-1.0.0.dist-info/RECORD +85 -0
- assemblerpdf-1.0.0.dist-info/WHEEL +5 -0
- assemblerpdf-1.0.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
<style type="text/css">
|
|
2
|
+
/* ✅ Fuentes embebidas localmente (Inter registrada como Roboto e Inter) */
|
|
3
|
+
@font-face {
|
|
4
|
+
font-family: 'Inter';
|
|
5
|
+
src: url('fonts/Inter-Regular.ttf') format('truetype');
|
|
6
|
+
font-weight: normal;
|
|
7
|
+
font-style: normal;
|
|
8
|
+
}
|
|
9
|
+
@font-face {
|
|
10
|
+
font-family: 'Inter';
|
|
11
|
+
src: url('fonts/Inter-Medium.ttf') format('truetype');
|
|
12
|
+
font-weight: 500;
|
|
13
|
+
font-style: normal;
|
|
14
|
+
}
|
|
15
|
+
@font-face {
|
|
16
|
+
font-family: 'Inter';
|
|
17
|
+
src: url('fonts/Inter-Bold.ttf') format('truetype');
|
|
18
|
+
font-weight: bold;
|
|
19
|
+
font-style: normal;
|
|
20
|
+
}
|
|
21
|
+
@font-face {
|
|
22
|
+
font-family: 'Roboto';
|
|
23
|
+
src: url('fonts/Inter-Regular.ttf') format('truetype');
|
|
24
|
+
font-weight: normal;
|
|
25
|
+
font-style: normal;
|
|
26
|
+
}
|
|
27
|
+
@font-face {
|
|
28
|
+
font-family: 'Roboto';
|
|
29
|
+
src: url('fonts/Inter-Bold.ttf') format('truetype');
|
|
30
|
+
font-weight: bold;
|
|
31
|
+
font-style: normal;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
/* Tus estilos existentes */
|
|
36
|
+
body {
|
|
37
|
+
margin: 0px 0px 0px 0px;
|
|
38
|
+
/* font-family ya NO va aquí — viene de font_css */
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/* Estilo para el div contenedor principal */
|
|
42
|
+
|
|
43
|
+
* {
|
|
44
|
+
box-sizing: border-box;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
table {
|
|
48
|
+
width: 100%;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.celda-d {
|
|
52
|
+
padding: 2px 20px 5px 10px;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.celda-c {
|
|
56
|
+
padding: 2px 10px 5px 10px;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.celda-i {
|
|
60
|
+
padding: 2px 10px 5px 20px;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.celda-u {
|
|
64
|
+
padding: 2px 20px 5px 20px;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.subtitulo {
|
|
68
|
+
margin: 10px 0px 15px 20px;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
.subtitulo i,
|
|
72
|
+
.subtitulo p {
|
|
73
|
+
display: inline-block;
|
|
74
|
+
vertical-align: middle;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.subtitulo i {
|
|
78
|
+
margin-right: 5px;
|
|
79
|
+
margin-bottom: 1px;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.especial {
|
|
83
|
+
width: 96%;
|
|
84
|
+
font-size: 12px;
|
|
85
|
+
margin: 7px 20px 12px 20px;
|
|
86
|
+
border: 1px solid #ccc;
|
|
87
|
+
border-radius: 5px;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
.especial-dos {
|
|
91
|
+
width: 96%;
|
|
92
|
+
font-size: 12px;
|
|
93
|
+
margin: 7px 20px 0px 20px;
|
|
94
|
+
border: 1px solid #ccc;
|
|
95
|
+
border-radius: 5px;
|
|
96
|
+
padding: 10px 0px 10px 0px
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
.especial p {
|
|
100
|
+
margin: 6px 0px 6px 0px;
|
|
101
|
+
color: #002857;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
.texto p {
|
|
105
|
+
font-size: 14px;
|
|
106
|
+
margin: 0px 0px 8px 0px;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
label {
|
|
110
|
+
display: block;
|
|
111
|
+
font-weight: 500;
|
|
112
|
+
margin: 0px 0px 6px 0px;
|
|
113
|
+
color: #002857;
|
|
114
|
+
font-size: 16px;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
input,
|
|
118
|
+
textarea {
|
|
119
|
+
font-family: 'Roboto', sans-serif;
|
|
120
|
+
display: block;
|
|
121
|
+
width: 100%;
|
|
122
|
+
border: 0px solid #ccc;
|
|
123
|
+
margin: 0px 0px 0px 0px;
|
|
124
|
+
padding: 0px 5px 0px 5px;
|
|
125
|
+
background-color: #CCCCCD;
|
|
126
|
+
min-height: 35px;
|
|
127
|
+
font-size: 16px;
|
|
128
|
+
color: rgb(49, 49, 49);
|
|
129
|
+
border-radius: 3px;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
.encabezado {
|
|
133
|
+
position: relative;
|
|
134
|
+
margin: 5px 20px;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
.img-derecha {
|
|
138
|
+
position: absolute;
|
|
139
|
+
right: 0;
|
|
140
|
+
top: 0;
|
|
141
|
+
width: 90px;
|
|
142
|
+
margin: 0px 0px 0px 0px;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
.img-izquierda {
|
|
146
|
+
position: absolute;
|
|
147
|
+
left: 0;
|
|
148
|
+
top: 0;
|
|
149
|
+
width: 105px;
|
|
150
|
+
margin: 5px 0px 5px 0px;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
.instructivo {
|
|
154
|
+
margin-top: -20px;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
.instructivo-dos {
|
|
159
|
+
margin-top: 0px;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
.instructivo table {
|
|
163
|
+
border: none;
|
|
164
|
+
margin: 0px;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
.instructivo table .campo-tabla {
|
|
168
|
+
border-top: 1px solid #303d50;
|
|
169
|
+
border-right: 1px solid #303d50;
|
|
170
|
+
min-width: 250px;
|
|
171
|
+
max-width: 250px;
|
|
172
|
+
padding-left: 5px;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
.instructivo table .info-tabla {
|
|
176
|
+
border-top: 1px solid #303d50;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
.instructivo table p {
|
|
180
|
+
margin: 5px 5px 5px 5px;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
.version table {
|
|
184
|
+
border-collapse: collapse;
|
|
185
|
+
width: 100%;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
.version table .v-inicial {
|
|
189
|
+
border: 1px solid #303d50;
|
|
190
|
+
padding-left: 10px;
|
|
191
|
+
min-width: 150px;
|
|
192
|
+
max-width: 150px;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
.version table .v-descripcion {
|
|
196
|
+
border: 1px solid #303d50;
|
|
197
|
+
padding: 10px;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
.version table p {
|
|
201
|
+
margin: 0;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
/* Oficialización */
|
|
205
|
+
|
|
206
|
+
.ofi table {
|
|
207
|
+
border-collapse: collapse;
|
|
208
|
+
width: 100%;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
.ofi table .v-inicial {
|
|
212
|
+
border: 1px solid #303d50;
|
|
213
|
+
padding-left: 10px;
|
|
214
|
+
min-width: 480px;
|
|
215
|
+
max-width: 480px;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
.ofi table .v-descripcion {
|
|
219
|
+
border: 1px solid #303d50;
|
|
220
|
+
padding: 10px;
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
.ofi table p {
|
|
224
|
+
margin: 0;
|
|
225
|
+
font-size: 12px;
|
|
226
|
+
}
|
|
227
|
+
</style>
|
|
228
|
+
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
<div class="subtitulo" style="display: flex; align-items: flex-start; ">
|
|
2
|
+
<i class="{{ icono }}" style="font-size: 18px; margin-right: 10px; flex-shrink: 0;"></i>
|
|
3
|
+
<span style="font-size: 16px; color: #002857; font-weight: 700; flex: 1; line-height: 1.4;">
|
|
4
|
+
{{ titulo }}
|
|
5
|
+
</span>
|
|
6
|
+
</div>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<div style="width: 95%; margin: 15px auto; padding: 15px; background-color: #fff; border: 1px solid #ddd; border-radius: 8px; font-family: 'Roboto', sans-serif; page-break-inside: avoid;">
|
|
2
|
+
|
|
3
|
+
{% for fila in filas %}
|
|
4
|
+
<div style="display: flex; justify-content: space-between; margin-bottom: 10px;">
|
|
5
|
+
<div style="width: 48%; display: flex; align-items: flex-start;">
|
|
6
|
+
<span style="font-weight: bold; width: 30%; font-size: 10pt; color: #333;">{{ fila.label1 }}</span>
|
|
7
|
+
<span style="width: 70%; font-size: 10pt; color: #333; word-wrap: break-word;">{{ fila.value1 }}</span>
|
|
8
|
+
</div>
|
|
9
|
+
<div style="width: 48%; display: flex; align-items: flex-start;">
|
|
10
|
+
<span style="font-weight: bold; width: 30%; font-size: 10pt; color: #333;">{{ fila.label2 }}</span>
|
|
11
|
+
<span style="width: 70%; font-size: 10pt; color: #333; word-wrap: break-word;">{{ fila.value2 }}</span>
|
|
12
|
+
</div>
|
|
13
|
+
</div>
|
|
14
|
+
{% endfor %}
|
|
15
|
+
</div>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<!-- templates/components/tabla_instructivo.html -->
|
|
2
|
+
<div class="instructivo" style="margin-top: 5px;">
|
|
3
|
+
<table>
|
|
4
|
+
<tr>
|
|
5
|
+
<th style="background-color: #303d50; color: white; font-size: 18px; height: 50px; border-right: 2px solid #ffffff;">Campo</th>
|
|
6
|
+
<th style="background-color: #303d50; color: white; font-size: 18px;height: 50px">Información que debe contener</th>
|
|
7
|
+
</tr>
|
|
8
|
+
{% for fila in filas %}
|
|
9
|
+
{% include "sistema/fila_instructivo.html" with fila=fila %}
|
|
10
|
+
{% endfor %}
|
|
11
|
+
</table>
|
|
12
|
+
</div>
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
<table style="width: 100%; border-collapse: collapse; margin-top: 10px; page-break-inside: auto; orphans: 3; widows: 3;">
|
|
2
|
+
<!-- Fila de encabezados -->
|
|
3
|
+
<tr style="background-color: #303d50; page-break-inside: avoid; break-inside: avoid; display: table-row;">
|
|
4
|
+
<td class="celda-i" style="width: 14%; padding: 10px 5px 10px 20px; border: 1px solid #303d50;">
|
|
5
|
+
<label style="margin-bottom: 0px; font-weight: bold; color: white; font-size: 13px;">Item</label>
|
|
6
|
+
</td>
|
|
7
|
+
<td class="celda-c" style="width: 20%; padding: 10px 5px; border: 1px solid #303d50;">
|
|
8
|
+
<label style="margin-bottom: 0px; font-weight: bold; color: white; font-size: 13px;">Descriptores</label>
|
|
9
|
+
</td>
|
|
10
|
+
<td class="celda-c" style="width: 5%; padding: 10px 5px; border: 1px solid #303d50; text-align: center;">
|
|
11
|
+
<label style="margin-bottom: 0px; font-weight: bold; color: white; font-size: 13px;">Escala 100%</label>
|
|
12
|
+
</td>
|
|
13
|
+
<td class="celda-c" style="width: 5%; padding: 10px 5px; border: 1px solid #303d50; text-align: center;">
|
|
14
|
+
<label style="margin-bottom: 0px; font-weight: bold; color: white; font-size: 13px;">Escala 33%</label>
|
|
15
|
+
</td>
|
|
16
|
+
<td class="celda-c" style="width: 5%; padding: 10px 5px; border: 1px solid #303d50; text-align: center;">
|
|
17
|
+
<label style="margin-bottom: 0px; font-weight: bold; color: white; font-size: 13px;">Valor absoluto</label>
|
|
18
|
+
</td>
|
|
19
|
+
<td class="celda-c" style="width: 12%; padding: 10px 5px; border: 1px solid #303d50; text-align: center;">
|
|
20
|
+
<label style="margin-bottom: 0px; font-weight: bold; color: white; font-size: 13px;">Valor relativo ponderado</label>
|
|
21
|
+
</td>
|
|
22
|
+
<td class="celda-d" style="width: 39%; padding: 10px 20px 10px 5px; border: 1px solid #303d50;">
|
|
23
|
+
<label style="margin-bottom: 0px; font-weight: bold; color: white; font-size: 13px;">Fuentes de información que soportan el puntaje</label>
|
|
24
|
+
</td>
|
|
25
|
+
</tr>
|
|
26
|
+
|
|
27
|
+
<!-- Filas de datos -->
|
|
28
|
+
{% for fila in filas %}
|
|
29
|
+
<tr style="border-bottom: 1px solid #e0e0e0; {% if fila.es_subtotal %}background-color: #f9f9f9;{% endif %} page-break-inside: avoid; break-inside: avoid; display: table-row;">
|
|
30
|
+
{% if fila.es_seccion_principal %}
|
|
31
|
+
<!-- Fila principal que abarca todas las columnas -->
|
|
32
|
+
<td colspan="7" style="padding: 10px 20px; background-color: #f5f5f5; border: 1px solid #e0e0e0;">
|
|
33
|
+
<p style="margin: 0; font-size: 14px; color: #002857; font-weight: bold;">
|
|
34
|
+
{{ fila.item }}
|
|
35
|
+
</p>
|
|
36
|
+
</td>
|
|
37
|
+
{% elif fila.es_subtotal %}
|
|
38
|
+
<!-- Fila de subtotal -->
|
|
39
|
+
<td class="celda-i" style="width: 14%; padding: 10px 5px 10px 20px; vertical-align: middle; border: 1px solid #e0e0e0;">
|
|
40
|
+
<p style="margin: 0; font-size: 13px; color: #002857; font-weight: bold;">
|
|
41
|
+
{{ fila.item }}
|
|
42
|
+
</p>
|
|
43
|
+
</td>
|
|
44
|
+
<td class="celda-c" style="width: 25%; padding: 10px 5px; vertical-align: middle; border: 1px solid #e0e0e0;">
|
|
45
|
+
<!-- Vacío para subtotal -->
|
|
46
|
+
</td>
|
|
47
|
+
<td class="celda-c" style="width: 5%; padding: 10px 5px; text-align: center; vertical-align: middle; border: 1px solid #e0e0e0;">
|
|
48
|
+
<p style="margin: 0; font-size: 13px; color: #002857; font-weight: bold;">
|
|
49
|
+
{% if fila.escala100 %}{{ fila.escala100 }}%{% else %}-{% endif %}
|
|
50
|
+
</p>
|
|
51
|
+
</td>
|
|
52
|
+
<td class="celda-c" style="width: 5%; padding: 10px 5px; text-align: center; vertical-align: middle; border: 1px solid #e0e0e0;">
|
|
53
|
+
<p style="margin: 0; font-size: 13px; color: #002857; font-weight: bold;">
|
|
54
|
+
{% if fila.escala33 %}{{ fila.escala33|floatformat:2 }}%{% else %}-{% endif %}
|
|
55
|
+
</p>
|
|
56
|
+
</td>
|
|
57
|
+
<td class="celda-c" style="width: 5%; padding: 10px 5px; text-align: center; vertical-align: middle; border: 1px solid #e0e0e0;">
|
|
58
|
+
<p style="margin: 0; font-size: 13px; color: #002857; font-weight: bold;">
|
|
59
|
+
{{ fila.valor_absoluto|default:'-' }}
|
|
60
|
+
</p>
|
|
61
|
+
</td>
|
|
62
|
+
<td class="celda-c" style="width: 12%; padding: 10px 5px; text-align: center; vertical-align: middle; border: 1px solid #e0e0e0;">
|
|
63
|
+
<p style="margin: 0; font-size: 13px; color: #002857; font-weight: bold;">
|
|
64
|
+
{{ fila.valor_relativo_ponderado|default:0|floatformat:2 }}
|
|
65
|
+
</p>
|
|
66
|
+
</td>
|
|
67
|
+
<td class="celda-d" style="width: 39%; padding: 10px 20px 10px 5px; vertical-align: middle; border: 1px solid #e0e0e0;">
|
|
68
|
+
<!-- Vacío para subtotal -->
|
|
69
|
+
</td>
|
|
70
|
+
{% else %}
|
|
71
|
+
<!-- Columna Item -->
|
|
72
|
+
<td class="celda-i" style="width: 14%; padding: 10px 5px 10px 20px; vertical-align: top; border: 1px solid #e0e0e0; page-break-inside: avoid; break-inside: avoid;">
|
|
73
|
+
<p style="margin: 0; font-size: 13px; color: #002857; font-weight: {% if fila.es_item_principal %}bold{% else %}normal{% endif %};">
|
|
74
|
+
{{ fila.item }}
|
|
75
|
+
</p>
|
|
76
|
+
</td>
|
|
77
|
+
|
|
78
|
+
<!-- Columna Descriptores -->
|
|
79
|
+
<td class="celda-c" style="width: 20%; padding: 10px 5px; vertical-align: top; border: 1px solid #e0e0e0;">
|
|
80
|
+
{% if fila.descriptores %}
|
|
81
|
+
<div style="font-size: 11px; color: #002857;">
|
|
82
|
+
{% for descriptor in fila.descriptores %}
|
|
83
|
+
<div style="margin-bottom: 5px; line-height: 1.4;">
|
|
84
|
+
{% if descriptor.valor == fila.valor_absoluto %}
|
|
85
|
+
<i class="fa-solid fa-circle" style="font-size: 14px; color: #002857; vertical-align: middle; margin-right: 5px;"></i>
|
|
86
|
+
{% else %}
|
|
87
|
+
<i class="fa-regular fa-circle" style="font-size: 14px; color: #ccc; vertical-align: middle; margin-right: 5px;"></i>
|
|
88
|
+
{% endif %}
|
|
89
|
+
<span style="vertical-align: middle;">{{ descriptor.valor }}: {{ descriptor.texto }}</span>
|
|
90
|
+
</div>
|
|
91
|
+
{% endfor %}
|
|
92
|
+
</div>
|
|
93
|
+
{% else %}
|
|
94
|
+
<div style="min-height: 50px;"></div>
|
|
95
|
+
{% endif %}
|
|
96
|
+
</td>
|
|
97
|
+
|
|
98
|
+
<!-- Columna Escala 100% -->
|
|
99
|
+
<td class="celda-c" style="width: 5%; padding: 10px 5px; text-align: center; vertical-align: top; border: 1px solid #e0e0e0;">
|
|
100
|
+
<p style="margin: 0; font-size: 13px; color: #002857;">
|
|
101
|
+
{{ fila.escala100|default:'-' }}
|
|
102
|
+
</p>
|
|
103
|
+
</td>
|
|
104
|
+
|
|
105
|
+
<!-- Columna Escala 33% -->
|
|
106
|
+
<td class="celda-c" style="width: 5%; padding: 10px 5px; text-align: center; vertical-align: top; border: 1px solid #e0e0e0;">
|
|
107
|
+
<p style="margin: 0; font-size: 13px; color: #002857;">
|
|
108
|
+
{{ fila.escala33|default:'-' }}
|
|
109
|
+
</p>
|
|
110
|
+
</td>
|
|
111
|
+
|
|
112
|
+
<!-- Columna Valor absoluto -->
|
|
113
|
+
<td class="celda-c" style="width: 5%; padding: 10px 5px; text-align: center; vertical-align: top; border: 1px solid #e0e0e0;">
|
|
114
|
+
<p style="margin: 0; font-size: 13px; color: #002857; font-weight: {% if fila.valor_absoluto %}bold{% endif %};">
|
|
115
|
+
{{ fila.valor_absoluto|default:'-' }}
|
|
116
|
+
</p>
|
|
117
|
+
</td>
|
|
118
|
+
|
|
119
|
+
<!-- Columna Valor relativo ponderado -->
|
|
120
|
+
<td class="celda-c" style="width: 12%; padding: 10px 5px; text-align: center; vertical-align: top; border: 1px solid #e0e0e0;">
|
|
121
|
+
<p style="margin: 0; font-size: 13px; color: #002857;">
|
|
122
|
+
{{ fila.valor_relativo_ponderado|default:'0'|floatformat:3 }}
|
|
123
|
+
</p>
|
|
124
|
+
</td>
|
|
125
|
+
|
|
126
|
+
<!-- Columna Fuentes de información -->
|
|
127
|
+
<td class="celda-d" style="width: 39%; padding: 10px 20px 10px 5px; vertical-align: top; border: 1px solid #e0e0e0; page-break-inside: avoid; break-inside: avoid;">
|
|
128
|
+
<p style="margin: 0; font-size: 11px; color: #002857; font-family: 'Roboto', sans-serif;">
|
|
129
|
+
{{ fila.fuentes_informacion|default:'' }}
|
|
130
|
+
</p>
|
|
131
|
+
</td>
|
|
132
|
+
{% endif %}
|
|
133
|
+
</tr>
|
|
134
|
+
{% endfor %}
|
|
135
|
+
</table>
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
<style>
|
|
2
|
+
.tabla-proyecto {
|
|
3
|
+
width: 91.5%;
|
|
4
|
+
border-collapse: collapse;
|
|
5
|
+
margin: 50px 40px 20px 40px; /* top, right, bottom, left */
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
.tabla-proyecto th,
|
|
9
|
+
.tabla-proyecto td {
|
|
10
|
+
border: 1px solid #ccc;
|
|
11
|
+
padding: 8px;
|
|
12
|
+
text-align: center;
|
|
13
|
+
font-size: 14px;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
.tabla-proyecto th {
|
|
17
|
+
background-color: #f0f0f0;
|
|
18
|
+
}
|
|
19
|
+
</style>
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
<table class="tabla-proyecto">
|
|
23
|
+
<tr>
|
|
24
|
+
<th>Proyecto</th>
|
|
25
|
+
<th>Nombre</th>
|
|
26
|
+
<th>Firma</th>
|
|
27
|
+
<th>Fecha</th>
|
|
28
|
+
</tr>
|
|
29
|
+
{% for fila in filas %}
|
|
30
|
+
<tr>
|
|
31
|
+
<td>{{ fila.rol }}</td>
|
|
32
|
+
<td>{{ fila.nombre }}</td>
|
|
33
|
+
<td>{{ fila.firma }}</td>
|
|
34
|
+
<td>{{ fila.fecha }}</td>
|
|
35
|
+
</tr>
|
|
36
|
+
{% endfor %}
|
|
37
|
+
</table>
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
<table>
|
|
2
|
+
<!-- Encabezados -->
|
|
3
|
+
<tr>
|
|
4
|
+
{% for columna in columnas %}
|
|
5
|
+
{% if forloop.first %}
|
|
6
|
+
<td class="celda-i" style="width: {{ columna.ancho }}; padding: 5px 5px 5px 20px;">
|
|
7
|
+
{% elif forloop.last %}
|
|
8
|
+
<td class="celda-d" style="width: {{ columna.ancho }}; padding: 5px 20px 5px 5px;">
|
|
9
|
+
{% else %}
|
|
10
|
+
<td class="celda-c" style="width: {{ columna.ancho }}; padding: 5px 5px 5px 5px;">
|
|
11
|
+
{% endif %}
|
|
12
|
+
<label style="margin-bottom: 0px; font-weight: bold;">{{ columna.nombre }}</label>
|
|
13
|
+
</td>
|
|
14
|
+
{% endfor %}
|
|
15
|
+
</tr>
|
|
16
|
+
|
|
17
|
+
<!-- Filas -->
|
|
18
|
+
{% for fila in filas %}
|
|
19
|
+
<tr>
|
|
20
|
+
<!-- Columna 1 -->
|
|
21
|
+
<td class="celda-i" style="width: {{ columnas.0.ancho }}; padding: 5px 5px 5px 20px;">
|
|
22
|
+
{% if columnas.0.tipo == 'text' %}
|
|
23
|
+
<input type="text" value="{{ fila.valor1|default:'' }}" style="min-height: 50px; width: 100%; border: 1px solid #ddd; padding: 5px; font-size: 14px; color: #002857;">
|
|
24
|
+
{% elif columnas.0.tipo == 'checkbox' %}
|
|
25
|
+
<div style="text-align: center; height: 50px; line-height: 50px; white-space: nowrap;">
|
|
26
|
+
{% if fila.valor1 == 'Sí' or fila.valor1 == True or fila.valor1 == 1 %}
|
|
27
|
+
<i class="fa-regular fa-square-check" style="font-size: 16px; color: #888;"></i>
|
|
28
|
+
{% else %}
|
|
29
|
+
<i class="fa-regular fa-square" style="font-size: 16px; color: #ccc;"></i>
|
|
30
|
+
{% endif %}
|
|
31
|
+
<span style="font-size: 13px; color: #002857; margin-right: 5px;">Sí</span>
|
|
32
|
+
{% if fila.valor1 == 'No' or fila.valor1 == False or fila.valor1 == 0 %}
|
|
33
|
+
<i class="fa-regular fa-square-check" style="font-size: 16px; color: #888; margin-left: 10px;"></i>
|
|
34
|
+
{% else %}
|
|
35
|
+
<i class="fa-regular fa-square" style="font-size: 16px; color: #ccc; margin-left: 10px;"></i>
|
|
36
|
+
{% endif %}
|
|
37
|
+
<span style="font-size: 13px; color: #002857;">No</span>
|
|
38
|
+
</div>
|
|
39
|
+
{% endif %}
|
|
40
|
+
</td>
|
|
41
|
+
|
|
42
|
+
<!-- Columna 2 -->
|
|
43
|
+
{% if columnas|length > 1 %}
|
|
44
|
+
<td class="celda-c" style="width: {{ columnas.1.ancho }}; padding: 5px 5px 5px 5px;">
|
|
45
|
+
{% if columnas.1.tipo == 'text' %}
|
|
46
|
+
<input type="text" value="{{ fila.valor2|default:'' }}" style="min-height: 50px; width: 100%; border: 1px solid #ddd; padding: 5px; font-size: 14px; color: #002857;">
|
|
47
|
+
{% elif columnas.1.tipo == 'checkbox' %}
|
|
48
|
+
<div style="text-align: center; height: 50px; line-height: 50px; white-space: nowrap;">
|
|
49
|
+
{% if fila.valor2 == 'Sí' or fila.valor2 == True or fila.valor2 == 1 %}
|
|
50
|
+
<i class="fa-regular fa-square-check" style="font-size: 16px; color: #888;"></i>
|
|
51
|
+
{% else %}
|
|
52
|
+
<i class="fa-regular fa-square" style="font-size: 16px; color: #ccc;"></i>
|
|
53
|
+
{% endif %}
|
|
54
|
+
<span style="font-size: 13px; color: #002857; margin-right: 5px;">Sí</span>
|
|
55
|
+
{% if fila.valor2 == 'No' or fila.valor2 == False or fila.valor2 == 0 %}
|
|
56
|
+
<i class="fa-regular fa-square-check" style="font-size: 16px; color: #888; margin-left: 10px;"></i>
|
|
57
|
+
{% else %}
|
|
58
|
+
<i class="fa-regular fa-square" style="font-size: 16px; color: #ccc; margin-left: 10px;"></i>
|
|
59
|
+
{% endif %}
|
|
60
|
+
<span style="font-size: 13px; color: #002857;">No</span>
|
|
61
|
+
</div>
|
|
62
|
+
{% endif %}
|
|
63
|
+
</td>
|
|
64
|
+
{% endif %}
|
|
65
|
+
|
|
66
|
+
<!-- Columna 3 -->
|
|
67
|
+
{% if columnas|length > 2 %}
|
|
68
|
+
<td class="celda-c" style="width: {{ columnas.2.ancho }}; padding: 5px 5px 5px 5px;">
|
|
69
|
+
{% if columnas.2.tipo == 'text' %}
|
|
70
|
+
<input type="text" value="{{ fila.valor3|default:'' }}" style="min-height: 50px; width: 100%; border: 1px solid #ddd; padding: 5px; font-size: 14px; color: #002857;">
|
|
71
|
+
{% elif columnas.2.tipo == 'checkbox' %}
|
|
72
|
+
<div style="text-align: center; height: 50px; line-height: 50px; white-space: nowrap;">
|
|
73
|
+
{% if fila.valor3 == 'Sí' or fila.valor3 == True or fila.valor3 == 1 %}
|
|
74
|
+
<i class="fa-regular fa-square-check" style="font-size: 16px; color: #888;"></i>
|
|
75
|
+
{% else %}
|
|
76
|
+
<i class="fa-regular fa-square" style="font-size: 16px; color: #ccc;"></i>
|
|
77
|
+
{% endif %}
|
|
78
|
+
<span style="font-size: 13px; color: #002857; margin-right: 5px;">Sí</span>
|
|
79
|
+
{% if fila.valor3 == 'No' or fila.valor3 == False or fila.valor3 == 0 %}
|
|
80
|
+
<i class="fa-regular fa-square-check" style="font-size: 16px; color: #888; margin-left: 10px;"></i>
|
|
81
|
+
{% else %}
|
|
82
|
+
<i class="fa-regular fa-square" style="font-size: 16px; color: #ccc; margin-left: 10px;"></i>
|
|
83
|
+
{% endif %}
|
|
84
|
+
<span style="font-size: 13px; color: #002857;">No</span>
|
|
85
|
+
</div>
|
|
86
|
+
{% endif %}
|
|
87
|
+
</td>
|
|
88
|
+
{% endif %}
|
|
89
|
+
|
|
90
|
+
<!-- Columna 4 -->
|
|
91
|
+
{% if columnas|length > 3 %}
|
|
92
|
+
<td class="celda-c" style="width: {{ columnas.3.ancho }}; padding: 5px 5px 5px 5px;">
|
|
93
|
+
{% if columnas.3.tipo == 'text' %}
|
|
94
|
+
<input type="text" value="{{ fila.valor4|default:'' }}" style="min-height: 50px; width: 100%; border: 1px solid #ddd; padding: 5px; font-size: 14px; color: #002857;">
|
|
95
|
+
{% elif columnas.3.tipo == 'checkbox' %}
|
|
96
|
+
<div style="text-align: center; height: 50px; line-height: 50px; white-space: nowrap;">
|
|
97
|
+
{% if fila.valor4 == 'Sí' or fila.valor4 == True or fila.valor4 == 1 %}
|
|
98
|
+
<i class="fa-regular fa-square-check" style="font-size: 16px; color: #888;"></i>
|
|
99
|
+
{% else %}
|
|
100
|
+
<i class="fa-regular fa-square" style="font-size: 16px; color: #ccc;"></i>
|
|
101
|
+
{% endif %}
|
|
102
|
+
<span style="font-size: 13px; color: #002857; margin-right: 5px;">Sí</span>
|
|
103
|
+
{% if fila.valor4 == 'No' or fila.valor4 == False or fila.valor4 == 0 %}
|
|
104
|
+
<i class="fa-regular fa-square-check" style="font-size: 16px; color: #888; margin-left: 10px;"></i>
|
|
105
|
+
{% else %}
|
|
106
|
+
<i class="fa-regular fa-square" style="font-size: 16px; color: #ccc; margin-left: 10px;"></i>
|
|
107
|
+
{% endif %}
|
|
108
|
+
<span style="font-size: 13px; color: #002857;">No</span>
|
|
109
|
+
</div>
|
|
110
|
+
{% endif %}
|
|
111
|
+
</td>
|
|
112
|
+
{% endif %}
|
|
113
|
+
|
|
114
|
+
<!-- Columna 5 -->
|
|
115
|
+
{% if columnas|length > 4 %}
|
|
116
|
+
<td class="celda-c" style="width: {{ columnas.4.ancho }}; padding: 5px 5px 5px 5px;">
|
|
117
|
+
{% if columnas.4.tipo == 'text' %}
|
|
118
|
+
<input type="text" value="{{ fila.valor5|default:'' }}" style="min-height: 50px; width: 100%; border: 1px solid #ddd; padding: 5px; font-size: 14px; color: #002857;">
|
|
119
|
+
{% elif columnas.4.tipo == 'checkbox' %}
|
|
120
|
+
<div style="text-align: center; height: 50px; line-height: 50px; white-space: nowrap;">
|
|
121
|
+
{% if fila.valor5 == 'Sí' or fila.valor5 == True or fila.valor5 == 1 %}
|
|
122
|
+
<i class="fa-regular fa-square-check" style="font-size: 16px; color: #888;"></i>
|
|
123
|
+
{% else %}
|
|
124
|
+
<i class="fa-regular fa-square" style="font-size: 16px; color: #ccc;"></i>
|
|
125
|
+
{% endif %}
|
|
126
|
+
<span style="font-size: 13px; color: #002857; margin-right: 5px;">Sí</span>
|
|
127
|
+
{% if fila.valor5 == 'No' or fila.valor5 == False or fila.valor5 == 0 %}
|
|
128
|
+
<i class="fa-regular fa-square-check" style="font-size: 16px; color: #888; margin-left: 10px;"></i>
|
|
129
|
+
{% else %}
|
|
130
|
+
<i class="fa-regular fa-square" style="font-size: 16px; color: #ccc; margin-left: 10px;"></i>
|
|
131
|
+
{% endif %}
|
|
132
|
+
<span style="font-size: 13px; color: #002857;">No</span>
|
|
133
|
+
</div>
|
|
134
|
+
{% endif %}
|
|
135
|
+
</td>
|
|
136
|
+
{% endif %}
|
|
137
|
+
|
|
138
|
+
<!-- Columna 6 -->
|
|
139
|
+
{% if columnas|length > 5 %}
|
|
140
|
+
<td class="celda-c" style="width: {{ columnas.5.ancho }}; padding: 5px 5px 5px 5px;">
|
|
141
|
+
{% if columnas.5.tipo == 'text' %}
|
|
142
|
+
<input type="text" value="{{ fila.valor6|default:'' }}" style="min-height: 50px; width: 100%; border: 1px solid #ddd; padding: 5px; font-size: 14px; color: #002857;">
|
|
143
|
+
{% elif columnas.5.tipo == 'checkbox' %}
|
|
144
|
+
<div style="text-align: center; height: 50px; line-height: 50px; white-space: nowrap;">
|
|
145
|
+
{% if fila.valor6 == 'Sí' or fila.valor6 == True or fila.valor6 == 1 %}
|
|
146
|
+
<i class="fa-regular fa-square-check" style="font-size: 16px; color: #888;"></i>
|
|
147
|
+
{% else %}
|
|
148
|
+
<i class="fa-regular fa-square" style="font-size: 16px; color: #ccc;"></i>
|
|
149
|
+
{% endif %}
|
|
150
|
+
<span style="font-size: 13px; color: #002857; margin-right: 5px;">Sí</span>
|
|
151
|
+
{% if fila.valor6 == 'No' or fila.valor6 == False or fila.valor6 == 0 %}
|
|
152
|
+
<i class="fa-regular fa-square-check" style="font-size: 16px; color: #888; margin-left: 10px;"></i>
|
|
153
|
+
{% else %}
|
|
154
|
+
<i class="fa-regular fa-square" style="font-size: 16px; color: #ccc; margin-left: 10px;"></i>
|
|
155
|
+
{% endif %}
|
|
156
|
+
<span style="font-size: 13px; color: #002857;">No</span>
|
|
157
|
+
</div>
|
|
158
|
+
{% endif %}
|
|
159
|
+
</td>
|
|
160
|
+
{% endif %}
|
|
161
|
+
|
|
162
|
+
<!-- Columna 7 -->
|
|
163
|
+
{% if columnas|length > 6 %}
|
|
164
|
+
<td class="celda-d" style="width: {{ columnas.6.ancho }}; padding: 5px 20px 5px 5px;">
|
|
165
|
+
{% if columnas.6.tipo == 'text' %}
|
|
166
|
+
<input type="text" value="{{ fila.valor7|default:'' }}" style="min-height: 50px; width: 100%; border: 1px solid #ddd; padding: 5px; font-size: 14px; color: #002857;">
|
|
167
|
+
{% elif columnas.6.tipo == 'checkbox' %}
|
|
168
|
+
<div style="text-align: center; height: 50px; line-height: 50px; white-space: nowrap;">
|
|
169
|
+
{% if fila.valor7 == 'Sí' or fila.valor7 == True or fila.valor7 == 1 %}
|
|
170
|
+
<i class="fa-regular fa-square-check" style="font-size: 16px; color: #888;"></i>
|
|
171
|
+
{% else %}
|
|
172
|
+
<i class="fa-regular fa-square" style="font-size: 16px; color: #ccc;"></i>
|
|
173
|
+
{% endif %}
|
|
174
|
+
<span style="font-size: 13px; color: #002857; margin-right: 5px;">Sí</span>
|
|
175
|
+
{% if fila.valor7 == 'No' or fila.valor7 == False or fila.valor7 == 0 %}
|
|
176
|
+
<i class="fa-regular fa-square-check" style="font-size: 16px; color: #888; margin-left: 10px;"></i>
|
|
177
|
+
{% else %}
|
|
178
|
+
<i class="fa-regular fa-square" style="font-size: 16px; color: #ccc; margin-left: 10px;"></i>
|
|
179
|
+
{% endif %}
|
|
180
|
+
<span style="font-size: 13px; color: #002857;">No</span>
|
|
181
|
+
</div>
|
|
182
|
+
{% endif %}
|
|
183
|
+
</td>
|
|
184
|
+
{% endif %}
|
|
185
|
+
</tr>
|
|
186
|
+
{% endfor %}
|
|
187
|
+
</table>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
<table>
|
|
2
|
+
<tr>
|
|
3
|
+
<td class="celda-u" style="width: 960px;">
|
|
4
|
+
<label>{{ label }}</label>
|
|
5
|
+
<textarea style="width: {{ ancho|default:'100%' }}; height: {{ alto|default:'200px' }}; padding: 10px; border: 1px solid #ccc; border-radius: 5px; font-family: 'Roboto', sans-serif;"
|
|
6
|
+
readonly>{{ valor|default:'' }}</textarea>
|
|
7
|
+
</td>
|
|
8
|
+
</tr>
|
|
9
|
+
</table>
|