Index: mainwindow.C
===================================================================
--- mainwindow.C	(revision b9d5f5e9d504069b5502f09cd2deaeb43a845d1e)
+++ mainwindow.C	(revision f6d90edf48c6ff1b292e9d9971c74c355713fb2b)
@@ -2373,4 +2373,5 @@
     QTableWidget *tw = findChild<QTableWidget *>("MatrizAn");
     restarIdentidadAn(tw);
+    totalesEncadenamientoMa();
 }
 
@@ -2484,5 +2485,4 @@
     else
     {
-        total_ma = MatrixMa.sum();
         QTableWidget *tablaMa = new QTableWidget;
         tablaMa->setObjectName("MatrizMa");
@@ -2981,5 +2981,4 @@
             opcionCuentaEncadenamientos=2;//Se establece un valor para la variable de la opcion
         }
-
     }
 
@@ -3214,5 +3213,5 @@
                             enTable->setItem(columna,3,valorAdelante);
                             //Se estiman los clasificadores
-                            determinarClasificador(enTable,columna,j-2,total_ma);
+                            determinarClasificador(enTable,columna,j-2,titulo);
                             columna++;
                         }
@@ -3268,9 +3267,6 @@
     @param <index> Recibe la ubicación del vector de donde se extraerá el valor
 */
-void MainWindow::estimarClasificador(double &fila, double &columna, int index, double total)
-{
-    qDebug("Clasificadores");
-    qDebug()<<vFila;
-    qDebug()<<vColumna;
+void MainWindow::estimarClasificador(double &fila, double &columna, int index, QString nombre)
+{
     //Se buscan los botones para saber si se estimó por coeficientes técnicos o Ma
     QRadioButton *rbCT = findChild<QRadioButton *>("CTButton");
@@ -3299,12 +3295,14 @@
     else if(rbMa->isChecked())
     {
-        columna = (vFila.at(index)*vFila.count())/total;
-        fila = (vColumna.at(index)*vColumna.count())/total;
-    }
-}
-
-
-/**
-    @brief Función que hace el trabajo de calcular y determinar los clasificadores
+        columna = (vFila.at(index)*vFila.count())/totalCuentasEncadenamiento[nombre][0];
+        qDebug()<<"Columna:"<<vFila.at(index)<<"*"<<vFila.count()<<"/"<<totalCuentasEncadenamiento[nombre][0];
+        fila = (vColumna.at(index)*vColumna.count())/totalCuentasEncadenamiento[nombre][1];
+        qDebug()<<"Fila:"<<vColumna.at(index)<<"*"<<vColumna.count()<<"/"<<totalCuentasEncadenamiento[nombre][1];
+    }
+}
+
+
+/**
+    @ brief Función que hace el trabajo de calcular y determinar los clasificadores
     @date 08/09/2016
     @author Rodrigo Boet
@@ -3313,5 +3311,5 @@
     @param <element> Recibe el indice de donde se extraerá el valor para calcular el clasificador
 */
-void MainWindow::determinarClasificador(QTableWidget *tw, int index_table, int element, double total)
+void MainWindow::determinarClasificador(QTableWidget *tw, int index_table, int element, QString nombre)
 {
     QString value;
@@ -3319,5 +3317,5 @@
     double elementColumna;
     double elementFila;
-    estimarClasificador(elementFila,elementColumna,element,total);
+    estimarClasificador(elementFila,elementColumna,element,nombre);
     //Elementos de la clasificación columna
     QTableWidgetItem *clasificacionColumna = new QTableWidgetItem(QString::number(elementColumna,'f',precission));
@@ -3426,4 +3424,5 @@
     for(int i=2;i<countEndogena;i++)
     {
+        QString title = tw->item(i,0)->text();
         double sumaColumna = 0;
         double sumaFila = 0;
@@ -3450,5 +3449,5 @@
         enTable->setItem(columna,3,valorAdelante);
         //Se estiman los clasificadores
-        determinarClasificador(enTable,columna,i-2,total_ma);
+        determinarClasificador(enTable,columna,i-2,title);
         columna++;
     }
@@ -3628,54 +3627,82 @@
     QVector<double> x, y;
     QStringList myHtml;
-    myHtml.append("<table>");
-    for(int i=0;i<row;i++)
-    {
-        myHtml.append("<tr>");
-        for(int j=0;j<col;j++)
-        {
-            QString item = tw->item(i,j)->text();
-            QString limit = tw->item(i,0)->text();
-            //Comprende las filas superiores
-            if(i==0 and j>1)
-            {
-                myHtml.append("<td align='center' style='font-weight:bold;background-color:LightGrey;'>"+item+"</td>");
-            }
-            //Comprende las cuentas en la parte izquierda
-            else if((i>0 and !limit.isEmpty()) and j==0)
-            {
-                myHtml.append("<td style='background-color:steelblue;color:white'>"+item+"</td>");
-            }
-            //Comprende las subcuentas en la parte izquierda
-            else if((i>0 and !limit.isEmpty())and j==1)
-            {
-                myHtml.append("<td align='center' style='background-color:LightGrey'>"+item+"</td>");
-            }
-            //Comprende la última fila
-            else if(i>0 and limit.isEmpty())
-            {
-                myHtml.append("<td align='center' style='font-weight:bold'>"+item+"</td>");
-            }
-            //Comprende el resto de los elementos
-            else
-            {
-                myHtml.append("<td align='center'>"+item+"</td>");
-            }
-            if((i>0 and i<row-1) and (j>3 and j<col-1))
-            {
-                QString titem = Separador(tw->item(i,j),true);
-                double valor = titem.toDouble();
-                if(j==4)
+    QStringList encadenamientos_totales;
+    int end = 0;
+    if(report)
+    {
+        myHtml.append("<table style='font-size:small;'><caption align='center'><h3>Encadenamientos</h3></caption>");
+        encadenamientos_totales.append("<table style='font-size:small;'><caption align='center'><h3>Totales por Cuenta</h3></caption><tr><td></td><td></td>");
+        encadenamientos_totales.append("<td align='center' style='font-weight:bold;background-color:LightGrey;'>Encadenamiento Parcial hacia atrás</td>");
+        encadenamientos_totales.append("<td align='center' style='font-weight:bold;background-color:LightGrey;'>Encadenamiento Parcial hacia adelante</td></tr><tr>");
+        for(int i=0;i<row;i++)
+        {
+            myHtml.append("<tr>");
+            if(end!=0)
+            {
+                encadenamientos_totales.append("<tr>");
+            }
+            for(int j=0;j<col;j++)
+            {
+                QString item = tw->item(i,j)->text();
+                QString limit = tw->item(i,0)->text();
+                //Comprende las filas superiores
+                if(i==0 and j>1)
                 {
-                    x.append(valor);
+                    myHtml.append("<td align='center' style='font-weight:bold;background-color:LightGrey;'>"+item+"</td>");
                 }
+                //Comprende las cuentas en la parte izquierda
+                else if((i>0 and !limit.isEmpty()) and j==0)
+                {
+                    myHtml.append("<td style='background-color:steelblue;color:white'>"+item+"</td>");
+                }
+                //Comprende las subcuentas en la parte izquierda
+                else if((i>0 and !limit.isEmpty())and j==1)
+                {
+                    myHtml.append("<td align='center' style='background-color:LightGrey'>"+item+"</td>");
+                }
+                //Comprende la última fila
+                else if(i>0 and limit.isEmpty())
+                {
+                    if(end==0)
+                    {
+                        end = i;
+                    }
+                    if(j==1)
+                    {
+                        encadenamientos_totales.append("<td align='center' style='font-weight:bold;background-color:steelblue;'>"+item+"</td>");
+                    }
+                    else
+                    {
+                        encadenamientos_totales.append("<td align='center' style='font-weight:bold'>"+item+"</td>");
+                    }
+                }
+                //Comprende el resto de los elementos
                 else
                 {
-                    y.append(valor);
+                    myHtml.append("<td align='center'>"+item+"</td>");
                 }
-            }
-        }
-        myHtml.append("</tr>");
-    }
-    myHtml.append("</table>");
+                if((i>0 and i<row-1) and (j>3 and j<col-1))
+                {
+                    QString titem = Separador(tw->item(i,j),true);
+                    double valor = titem.toDouble();
+                    if(j==4)
+                    {
+                        x.append(valor);
+                    }
+                    else
+                    {
+                        y.append(valor);
+                    }
+                }
+            }
+            myHtml.append("</tr>");
+            if(end!=0)
+            {
+                encadenamientos_totales.append("</tr>");
+            }
+        }
+        myHtml.append("</table>");
+        encadenamientos_totales.append("</table>");
+    }
     //Máximos y Mínimos
     double max = 3;
@@ -3753,10 +3780,9 @@
     //Se generan los cambios en el grafico
     customPlot->replot();
-
     QString reportText;
     //Se evalua si es un reporte
     if(report){
         QTextDocument report;
-        report.setHtml(myHtml.join(""));
+        report.setHtml(myHtml.join("")+encadenamientos_totales.join(""));
         QTextCursor cursor(&report);
         QPixmap pm = customPlot->toPixmap();
@@ -3764,8 +3790,6 @@
         cursor.movePosition(QTextCursor::End, QTextCursor::MoveAnchor);
         cursor.insertImage(img);
-        QPrinter printer( QPrinter::HighResolution );
-        printer.setOutputFileName(filename);
-        printer.setOutputFormat(QPrinter::PdfFormat);
-        report.print(&printer);
+        QPdfWriter pdf(filename);
+        report.print(&pdf);
         reportText = "Se generó con éxito el reporte\n en "+filename;
     }
@@ -3932,5 +3956,5 @@
     @author Rodrigo Boet
     @param <tw> Recibe el widget de la tabla
-    @param <clasico> Recibe un booleano (Verdadero si para el modelo clásico, Falso en caso contrario)
+    @param <clasico> Recibe un int para buscar la tabla
 */
 void MainWindow::calcularEscenario(int clasico)
@@ -6527,2 +6551,41 @@
     }
 }
+
+/**
+    @brief Función para obtener los totales de encademientos de Ma y almacenarlos en un diccionario
+    @date 04/11/2015
+    @author Rodrigo Boet
+*/
+void MainWindow::totalesEncadenamientoMa()
+{
+    QTableWidget *tw = findChild<QTableWidget *>("MatrizMa");
+    int count = tw->rowCount();
+    for(int i=2;i<count;i++)
+    {
+        QString title = tw->item(i,0)->text();
+        double sumaColumna = 0;
+        double sumaFila = 0;
+        double EncadenamientoAtras;
+        double EncadenamientoAdelante;
+        for(int j=2;j<count;j++)
+        {
+            EncadenamientoAtras = MatrixMa(j-2,i-2);
+            EncadenamientoAdelante = MatrixMa(i-2,j-2);
+            sumaColumna+=EncadenamientoAtras;
+            sumaFila+=EncadenamientoAdelante;
+        }
+        if(!totalCuentasEncadenamiento.contains(title))
+        {
+            QVector<double> valores;
+            valores.append(sumaColumna);
+            valores.append(sumaFila);
+            totalCuentasEncadenamiento.insert(title,valores);
+        }
+        else
+        {
+            totalCuentasEncadenamiento[title][0]+=sumaColumna;
+            totalCuentasEncadenamiento[title][1]+=sumaFila;
+        }
+    }
+    qDebug()<<totalCuentasEncadenamiento;
+}
Index: mainwindow.H
===================================================================
--- mainwindow.H	(revision 8f1b6a6cca5aa4fe4d27521be2c785dea30bb3e3)
+++ mainwindow.H	(revision f6d90edf48c6ff1b292e9d9971c74c355713fb2b)
@@ -123,4 +123,5 @@
     QMap<int, QMap<QString,QStringList> > diccCuentasEncadenamientos;
     QMap<QString,double> totalCuentas;
+    QMap<QString,QVector<double> > totalCuentasEncadenamiento;
 
     QStringList ComponentesEndogenos;
@@ -155,6 +156,4 @@
     Eigen::MatrixXd C;
 
-    double total_ma;
-
     QString csvFilePath;
     char csvSeparator;
@@ -297,7 +296,7 @@
     void estimarVIFVC();
     //Función para estimar la clasificación de las cuentas por CW o Rassmusen
-    void estimarClasificador(double &, double &, int index, double total = 0);
+    void estimarClasificador(double &, double &, int index, QString nombre);
     //Función para determinar los clasificadores
-    void determinarClasificador(QTableWidget *, int index_table, int element, double total = 0);
+    void determinarClasificador(QTableWidget *, int index_table, int element, QString nombre);
 
     //Función para validar la cuenta producto/actividad
@@ -310,4 +309,7 @@
     //Funciones referentes al impacto a corto plazo
     Eigen::MatrixXd obtenerMatriz(QString);
+
+    //Funcion para crear un diccionario con los totales por cuenta en Ma
+    void totalesEncadenamientoMa();
 
     //Funcion para crear una nueva pestaña
