|
120 | 120 | {% include includeView['path'] %} |
121 | 121 | {% endfor %} |
122 | 122 |
|
123 | | - {# Gráficos por mes y por año #} |
124 | | - <div class="row"> |
125 | | - <div class="col-12 col-lg-8 mb-4"> |
126 | | - <div class="card shadow-sm"> |
127 | | - <div class="card-header"> |
128 | | - <h6 class="m-0 font-weight-bold text-primary"> |
129 | | - <i class="fa-solid fa-chart-bar me-2"></i> |
130 | | - {{ trans('services-by-month') }} |
131 | | - </h6> |
132 | | - </div> |
133 | | - <div class="card-body"> |
134 | | - <div style="position:relative;height:300px;"> |
135 | | - <canvas id="chartByMonth"></canvas> |
136 | | - </div> |
137 | | - </div> |
138 | | - </div> |
139 | | - </div> |
140 | | - <div class="col-12 col-lg-4 mb-4"> |
141 | | - <div class="card shadow-sm"> |
142 | | - <div class="card-header"> |
143 | | - <h6 class="m-0 font-weight-bold text-primary"> |
144 | | - <i class="fa-solid fa-chart-bar me-2"></i> |
145 | | - {{ trans('services-by-year') }} |
146 | | - </h6> |
147 | | - </div> |
148 | | - <div class="card-body"> |
149 | | - <div style="position:relative;height:300px;"> |
150 | | - <canvas id="chartByYear"></canvas> |
151 | | - </div> |
152 | | - </div> |
153 | | - </div> |
154 | | - </div> |
155 | | - </div> |
156 | | - |
157 | 123 | {# Importes por mes y por año #} |
158 | 124 | <div class="row"> |
159 | 125 | <div class="col-12 col-lg-8 mb-4"> |
|
198 | 164 |
|
199 | 165 | {# Tabla por estado #} |
200 | 166 | <div class="row"> |
201 | | - <div class="col-12 mb-4"> |
202 | | - <div class="card shadow-sm"> |
203 | | - <div class="card-header"> |
204 | | - <h6 class="m-0 font-weight-bold text-primary"> |
205 | | - <i class="fa-solid fa-chart-pie me-2"></i> |
206 | | - {{ trans('services-by-status') }} |
207 | | - </h6> |
208 | | - </div> |
209 | | - <div class="card-body p-0"> |
210 | | - <div class="table-responsive"> |
211 | | - <table class="table table-hover mb-0"> |
212 | | - <thead class="table-light"> |
213 | | - <tr> |
214 | | - <th>{{ trans('status') }}</th> |
215 | | - <th class="text-end">{{ trans('quantity') }}</th> |
216 | | - <th class="text-end">{{ trans('net') }}</th> |
217 | | - </tr> |
218 | | - </thead> |
219 | | - <tbody> |
220 | | - {% for row in fsc.servicesByStatus %} |
221 | | - <tr> |
222 | | - <td> |
223 | | - <a href="{{ row.editable ? 'ListServicioAT' : 'ListServicioAT?activetab=ListServicioAT-closed' }}"> |
224 | | - {% if row.color %} |
225 | | - <span class="d-inline-block me-2 rounded" style="width:14px;height:14px;background-color:{{ row.color }};vertical-align:middle;"></span> |
226 | | - {% else %} |
227 | | - <span class="d-inline-block me-2 rounded bg-secondary" style="width:14px;height:14px;vertical-align:middle;"></span> |
228 | | - {% endif %} |
229 | | - {{ row.nombre }} |
230 | | - </a> |
231 | | - </td> |
232 | | - <td class="text-end fw-bold">{{ row.total }}</td> |
233 | | - <td class="text-end">{{ money(row.neto) }}</td> |
234 | | - </tr> |
235 | | - {% else %} |
236 | | - <tr> |
237 | | - <td colspan="3" class="text-center text-muted py-3"> |
238 | | - {{ trans('no-data') }} |
239 | | - </td> |
240 | | - </tr> |
241 | | - {% endfor %} |
242 | | - </tbody> |
243 | | - </table> |
244 | | - </div> |
245 | | - </div> |
246 | | - </div> |
247 | | - </div> |
248 | | - </div> |
| 167 | + <div class="col-12 mb-4"> |
| 168 | + <div class="card shadow-sm"> |
| 169 | + <div class="card-header"> |
| 170 | + <h6 class="m-0 font-weight-bold text-primary"> |
| 171 | + <i class="fa-solid fa-chart-pie me-2"></i> |
| 172 | + {{ trans('services-by-status') }} |
| 173 | + </h6> |
| 174 | + </div> |
| 175 | + <div class="card-body p-0"> |
| 176 | + <div class="table-responsive"> |
| 177 | + <table class="table table-hover mb-0"> |
| 178 | + <thead class="table-light"> |
| 179 | + <tr> |
| 180 | + <th>{{ trans('status') }}</th> |
| 181 | + <th class="text-end">{{ trans('quantity') }}</th> |
| 182 | + <th class="text-end">{{ trans('percentage') }} %</th> |
| 183 | + <th class="text-end">{{ trans('net') }}</th> |
| 184 | + </tr> |
| 185 | + </thead> |
| 186 | + <tbody> |
| 187 | + {% for row in fsc.servicesByStatus %} |
| 188 | + <tr> |
| 189 | + <td> |
| 190 | + <a href="{{ row.editable ? 'ListServicioAT' : 'ListServicioAT?activetab=ListServicioAT-closed' }}"> |
| 191 | + {% if row.color %} |
| 192 | + <span class="d-inline-block me-2 rounded" |
| 193 | + style="width:14px;height:14px;background-color:{{ row.color }};vertical-align:middle;"></span> |
| 194 | + {% else %} |
| 195 | + <span class="d-inline-block me-2 rounded bg-secondary" |
| 196 | + style="width:14px;height:14px;vertical-align:middle;"></span> |
| 197 | + {% endif %} |
| 198 | + {{ row.nombre }} |
| 199 | + </a> |
| 200 | + </td> |
| 201 | + <td class="text-end fw-bold">{{ row.total }}</td> |
| 202 | + <td class="text-end text-muted"> |
| 203 | + {{ fsc.totalServices > 0 ? ((row.total / fsc.totalServices) * 100)|number_format(1) ~ ' %' : '0 %' }} |
| 204 | + </td> |
| 205 | + <td class="text-end">{{ money(row.neto) }}</td> |
| 206 | + </tr> |
| 207 | + {% else %} |
| 208 | + <tr> |
| 209 | + <td colspan="4" class="text-center text-muted py-3"> |
| 210 | + {{ trans('no-data') }} |
| 211 | + </td> |
| 212 | + </tr> |
| 213 | + {% endfor %} |
| 214 | + </tbody> |
| 215 | + </table> |
| 216 | + </div> |
| 217 | + </div> |
| 218 | + </div> |
| 219 | + </div> |
| 220 | + </div> |
249 | 221 |
|
250 | 222 | {% for includeView in getIncludeViews('ReportServicioAT', 'afterStatus') %} |
251 | 223 | {% include includeView['path'] %} |
|
0 commit comments