Exemplo n.º 1
0
        /// <summary>
        /// Genera el código html para construir una tabla de un concepto con sus volúmenes e importes totales
        /// </summary>
        /// <param name="Concepto">El concepto del cual se generará el reporte</param>
        /// <param name="Areas">Las áreas que contemplará el reporte</param>
        /// <param name="ClavePeriodo">La clave del periodo del reporte</param>
        /// <returns></returns>
        public static string GenerarReporteConcepto(Concepto Concepto, List <Area> Areas, int ClavePeriodo)
        {
            List <TipoConcepto> Tipos = Concepto.Rellenar().Tipos;

            string Html = @"<div class='table-responsive'>
            <table class='table table-bordered'>
                <thead>
                    <tr>
                        <th colspan = '4' class='text-center'>" + Concepto.Descripcion + @"</th>
                    </tr>
                    <tr>" +
                          (Tipos.Count > 0 ? "<th>Tipo</th>" : "") + @"
                        <th>Unidad de medida</th>
                        <th>Volúmen</th>
                        <th>Importe</th>
                    </tr>
                </thead>
                <tbody>
                    " +

                          /*Si el concepto tiene subconceptos se genera una tabla de éstos y calcula
                           * sus volúmenes y sus importes totales. De lo contrario se crea una fila con
                           * la unidad de mediad, y el volúmen e importe total del concepto
                           */
                          (Tipos.Count > 0 ? GenerarTabla(Tipos, t =>
            {
                return(new string[]
                {
                    t.Descripcion,
                    Concepto.MedidaAbreviacion,
                    t.CalcularVolumenTotal(Areas, ClavePeriodo).ToString("N"),
                    Utilerias.ToCurrency(t.CalcularImporteTotal(Areas, ClavePeriodo))
                });
            })
                    :
                           "<td>" + Concepto.MedidaAbreviacion + "</td>" +
                           "<td>" + Concepto.CalcularVolumenTotal(Areas, ClavePeriodo).ToString("N") + "</td>" +
                           "<td>" + Utilerias.ToCurrency(Concepto.CalcularImporteTotal(Areas, ClavePeriodo)) + "</td>"
                          )
                          + @"    
                </tbody>" +

                          /* Si el concepto tiene subconceptos se generará el pie de la tabla.
                           * De lo contrario habrá pie de tabla
                           */
                          (Tipos.Count > 0 ?
                           @"<tfoot>
                    <tr>
                        <th colspan='2' class='text-right'>TOTAL: </th>
                        <td>" + Concepto.CalcularVolumenTotal(Areas, ClavePeriodo).ToString("N") + @"</td>
                        <td>" + Utilerias.ToCurrency(Concepto.CalcularImporteTotal(Areas, ClavePeriodo)) + @"</td>
                    </tr>
                </tfoot>"
                :
                           ""
                          ) +
                          @"
            </table>
            </div>";


            return(Html);
        }