Changeset f6d90ed in mmcs


Ignore:
Timestamp:
Nov 4, 2016, 1:35:29 PM (8 years ago)
Author:
rudmanmrrod <rudman22@…>
Branches:
master
Children:
9b2ca78
Parents:
b9d5f5e
Message:

Cambiada la forma de exportar a PDF, agregrada funcion para estimar los totales por cuenta en los encadenamientos de MA, e implementados en la clasificacion

Files:
3 edited

Legend:

Unmodified
Added
Removed
  • mainwindow.C

    rb9d5f5e rf6d90ed  
    23732373    QTableWidget *tw = findChild<QTableWidget *>("MatrizAn");
    23742374    restarIdentidadAn(tw);
     2375    totalesEncadenamientoMa();
    23752376}
    23762377
     
    24842485    else
    24852486    {
    2486         total_ma = MatrixMa.sum();
    24872487        QTableWidget *tablaMa = new QTableWidget;
    24882488        tablaMa->setObjectName("MatrizMa");
     
    29812981            opcionCuentaEncadenamientos=2;//Se establece un valor para la variable de la opcion
    29822982        }
    2983 
    29842983    }
    29852984
     
    32143213                            enTable->setItem(columna,3,valorAdelante);
    32153214                            //Se estiman los clasificadores
    3216                             determinarClasificador(enTable,columna,j-2,total_ma);
     3215                            determinarClasificador(enTable,columna,j-2,titulo);
    32173216                            columna++;
    32183217                        }
     
    32683267    @param <index> Recibe la ubicación del vector de donde se extraerá el valor
    32693268*/
    3270 void MainWindow::estimarClasificador(double &fila, double &columna, int index, double total)
    3271 {
    3272     qDebug("Clasificadores");
    3273     qDebug()<<vFila;
    3274     qDebug()<<vColumna;
     3269void MainWindow::estimarClasificador(double &fila, double &columna, int index, QString nombre)
     3270{
    32753271    //Se buscan los botones para saber si se estimó por coeficientes técnicos o Ma
    32763272    QRadioButton *rbCT = findChild<QRadioButton *>("CTButton");
     
    32993295    else if(rbMa->isChecked())
    33003296    {
    3301         columna = (vFila.at(index)*vFila.count())/total;
    3302         fila = (vColumna.at(index)*vColumna.count())/total;
    3303     }
    3304 }
    3305 
    3306 
    3307 /**
    3308     @brief Función que hace el trabajo de calcular y determinar los clasificadores
     3297        columna = (vFila.at(index)*vFila.count())/totalCuentasEncadenamiento[nombre][0];
     3298        qDebug()<<"Columna:"<<vFila.at(index)<<"*"<<vFila.count()<<"/"<<totalCuentasEncadenamiento[nombre][0];
     3299        fila = (vColumna.at(index)*vColumna.count())/totalCuentasEncadenamiento[nombre][1];
     3300        qDebug()<<"Fila:"<<vColumna.at(index)<<"*"<<vColumna.count()<<"/"<<totalCuentasEncadenamiento[nombre][1];
     3301    }
     3302}
     3303
     3304
     3305/**
     3306    @ brief Función que hace el trabajo de calcular y determinar los clasificadores
    33093307    @date 08/09/2016
    33103308    @author Rodrigo Boet
     
    33133311    @param <element> Recibe el indice de donde se extraerá el valor para calcular el clasificador
    33143312*/
    3315 void MainWindow::determinarClasificador(QTableWidget *tw, int index_table, int element, double total)
     3313void MainWindow::determinarClasificador(QTableWidget *tw, int index_table, int element, QString nombre)
    33163314{
    33173315    QString value;
     
    33193317    double elementColumna;
    33203318    double elementFila;
    3321     estimarClasificador(elementFila,elementColumna,element,total);
     3319    estimarClasificador(elementFila,elementColumna,element,nombre);
    33223320    //Elementos de la clasificación columna
    33233321    QTableWidgetItem *clasificacionColumna = new QTableWidgetItem(QString::number(elementColumna,'f',precission));
     
    34263424    for(int i=2;i<countEndogena;i++)
    34273425    {
     3426        QString title = tw->item(i,0)->text();
    34283427        double sumaColumna = 0;
    34293428        double sumaFila = 0;
     
    34503449        enTable->setItem(columna,3,valorAdelante);
    34513450        //Se estiman los clasificadores
    3452         determinarClasificador(enTable,columna,i-2,total_ma);
     3451        determinarClasificador(enTable,columna,i-2,title);
    34533452        columna++;
    34543453    }
     
    36283627    QVector<double> x, y;
    36293628    QStringList myHtml;
    3630     myHtml.append("<table>");
    3631     for(int i=0;i<row;i++)
    3632     {
    3633         myHtml.append("<tr>");
    3634         for(int j=0;j<col;j++)
    3635         {
    3636             QString item = tw->item(i,j)->text();
    3637             QString limit = tw->item(i,0)->text();
    3638             //Comprende las filas superiores
    3639             if(i==0 and j>1)
    3640             {
    3641                 myHtml.append("<td align='center' style='font-weight:bold;background-color:LightGrey;'>"+item+"</td>");
    3642             }
    3643             //Comprende las cuentas en la parte izquierda
    3644             else if((i>0 and !limit.isEmpty()) and j==0)
    3645             {
    3646                 myHtml.append("<td style='background-color:steelblue;color:white'>"+item+"</td>");
    3647             }
    3648             //Comprende las subcuentas en la parte izquierda
    3649             else if((i>0 and !limit.isEmpty())and j==1)
    3650             {
    3651                 myHtml.append("<td align='center' style='background-color:LightGrey'>"+item+"</td>");
    3652             }
    3653             //Comprende la última fila
    3654             else if(i>0 and limit.isEmpty())
    3655             {
    3656                 myHtml.append("<td align='center' style='font-weight:bold'>"+item+"</td>");
    3657             }
    3658             //Comprende el resto de los elementos
    3659             else
    3660             {
    3661                 myHtml.append("<td align='center'>"+item+"</td>");
    3662             }
    3663             if((i>0 and i<row-1) and (j>3 and j<col-1))
    3664             {
    3665                 QString titem = Separador(tw->item(i,j),true);
    3666                 double valor = titem.toDouble();
    3667                 if(j==4)
     3629    QStringList encadenamientos_totales;
     3630    int end = 0;
     3631    if(report)
     3632    {
     3633        myHtml.append("<table style='font-size:small;'><caption align='center'><h3>Encadenamientos</h3></caption>");
     3634        encadenamientos_totales.append("<table style='font-size:small;'><caption align='center'><h3>Totales por Cuenta</h3></caption><tr><td></td><td></td>");
     3635        encadenamientos_totales.append("<td align='center' style='font-weight:bold;background-color:LightGrey;'>Encadenamiento Parcial hacia atrás</td>");
     3636        encadenamientos_totales.append("<td align='center' style='font-weight:bold;background-color:LightGrey;'>Encadenamiento Parcial hacia adelante</td></tr><tr>");
     3637        for(int i=0;i<row;i++)
     3638        {
     3639            myHtml.append("<tr>");
     3640            if(end!=0)
     3641            {
     3642                encadenamientos_totales.append("<tr>");
     3643            }
     3644            for(int j=0;j<col;j++)
     3645            {
     3646                QString item = tw->item(i,j)->text();
     3647                QString limit = tw->item(i,0)->text();
     3648                //Comprende las filas superiores
     3649                if(i==0 and j>1)
    36683650                {
    3669                     x.append(valor);
     3651                    myHtml.append("<td align='center' style='font-weight:bold;background-color:LightGrey;'>"+item+"</td>");
    36703652                }
     3653                //Comprende las cuentas en la parte izquierda
     3654                else if((i>0 and !limit.isEmpty()) and j==0)
     3655                {
     3656                    myHtml.append("<td style='background-color:steelblue;color:white'>"+item+"</td>");
     3657                }
     3658                //Comprende las subcuentas en la parte izquierda
     3659                else if((i>0 and !limit.isEmpty())and j==1)
     3660                {
     3661                    myHtml.append("<td align='center' style='background-color:LightGrey'>"+item+"</td>");
     3662                }
     3663                //Comprende la última fila
     3664                else if(i>0 and limit.isEmpty())
     3665                {
     3666                    if(end==0)
     3667                    {
     3668                        end = i;
     3669                    }
     3670                    if(j==1)
     3671                    {
     3672                        encadenamientos_totales.append("<td align='center' style='font-weight:bold;background-color:steelblue;'>"+item+"</td>");
     3673                    }
     3674                    else
     3675                    {
     3676                        encadenamientos_totales.append("<td align='center' style='font-weight:bold'>"+item+"</td>");
     3677                    }
     3678                }
     3679                //Comprende el resto de los elementos
    36713680                else
    36723681                {
    3673                     y.append(valor);
     3682                    myHtml.append("<td align='center'>"+item+"</td>");
    36743683                }
    3675             }
    3676         }
    3677         myHtml.append("</tr>");
    3678     }
    3679     myHtml.append("</table>");
     3684                if((i>0 and i<row-1) and (j>3 and j<col-1))
     3685                {
     3686                    QString titem = Separador(tw->item(i,j),true);
     3687                    double valor = titem.toDouble();
     3688                    if(j==4)
     3689                    {
     3690                        x.append(valor);
     3691                    }
     3692                    else
     3693                    {
     3694                        y.append(valor);
     3695                    }
     3696                }
     3697            }
     3698            myHtml.append("</tr>");
     3699            if(end!=0)
     3700            {
     3701                encadenamientos_totales.append("</tr>");
     3702            }
     3703        }
     3704        myHtml.append("</table>");
     3705        encadenamientos_totales.append("</table>");
     3706    }
    36803707    //Máximos y Mínimos
    36813708    double max = 3;
     
    37533780    //Se generan los cambios en el grafico
    37543781    customPlot->replot();
    3755 
    37563782    QString reportText;
    37573783    //Se evalua si es un reporte
    37583784    if(report){
    37593785        QTextDocument report;
    3760         report.setHtml(myHtml.join(""));
     3786        report.setHtml(myHtml.join("")+encadenamientos_totales.join(""));
    37613787        QTextCursor cursor(&report);
    37623788        QPixmap pm = customPlot->toPixmap();
     
    37643790        cursor.movePosition(QTextCursor::End, QTextCursor::MoveAnchor);
    37653791        cursor.insertImage(img);
    3766         QPrinter printer( QPrinter::HighResolution );
    3767         printer.setOutputFileName(filename);
    3768         printer.setOutputFormat(QPrinter::PdfFormat);
    3769         report.print(&printer);
     3792        QPdfWriter pdf(filename);
     3793        report.print(&pdf);
    37703794        reportText = "Se generó con éxito el reporte\n en "+filename;
    37713795    }
     
    39323956    @author Rodrigo Boet
    39333957    @param <tw> Recibe el widget de la tabla
    3934     @param <clasico> Recibe un booleano (Verdadero si para el modelo clásico, Falso en caso contrario)
     3958    @param <clasico> Recibe un int para buscar la tabla
    39353959*/
    39363960void MainWindow::calcularEscenario(int clasico)
     
    65276551    }
    65286552}
     6553
     6554/**
     6555    @brief Función para obtener los totales de encademientos de Ma y almacenarlos en un diccionario
     6556    @date 04/11/2015
     6557    @author Rodrigo Boet
     6558*/
     6559void MainWindow::totalesEncadenamientoMa()
     6560{
     6561    QTableWidget *tw = findChild<QTableWidget *>("MatrizMa");
     6562    int count = tw->rowCount();
     6563    for(int i=2;i<count;i++)
     6564    {
     6565        QString title = tw->item(i,0)->text();
     6566        double sumaColumna = 0;
     6567        double sumaFila = 0;
     6568        double EncadenamientoAtras;
     6569        double EncadenamientoAdelante;
     6570        for(int j=2;j<count;j++)
     6571        {
     6572            EncadenamientoAtras = MatrixMa(j-2,i-2);
     6573            EncadenamientoAdelante = MatrixMa(i-2,j-2);
     6574            sumaColumna+=EncadenamientoAtras;
     6575            sumaFila+=EncadenamientoAdelante;
     6576        }
     6577        if(!totalCuentasEncadenamiento.contains(title))
     6578        {
     6579            QVector<double> valores;
     6580            valores.append(sumaColumna);
     6581            valores.append(sumaFila);
     6582            totalCuentasEncadenamiento.insert(title,valores);
     6583        }
     6584        else
     6585        {
     6586            totalCuentasEncadenamiento[title][0]+=sumaColumna;
     6587            totalCuentasEncadenamiento[title][1]+=sumaFila;
     6588        }
     6589    }
     6590    qDebug()<<totalCuentasEncadenamiento;
     6591}
  • mainwindow.H

    r8f1b6a6 rf6d90ed  
    123123    QMap<int, QMap<QString,QStringList> > diccCuentasEncadenamientos;
    124124    QMap<QString,double> totalCuentas;
     125    QMap<QString,QVector<double> > totalCuentasEncadenamiento;
    125126
    126127    QStringList ComponentesEndogenos;
     
    155156    Eigen::MatrixXd C;
    156157
    157     double total_ma;
    158 
    159158    QString csvFilePath;
    160159    char csvSeparator;
     
    297296    void estimarVIFVC();
    298297    //Función para estimar la clasificación de las cuentas por CW o Rassmusen
    299     void estimarClasificador(double &, double &, int index, double total = 0);
     298    void estimarClasificador(double &, double &, int index, QString nombre);
    300299    //Función para determinar los clasificadores
    301     void determinarClasificador(QTableWidget *, int index_table, int element, double total = 0);
     300    void determinarClasificador(QTableWidget *, int index_table, int element, QString nombre);
    302301
    303302    //Función para validar la cuenta producto/actividad
     
    310309    //Funciones referentes al impacto a corto plazo
    311310    Eigen::MatrixXd obtenerMatriz(QString);
     311
     312    //Funcion para crear un diccionario con los totales por cuenta en Ma
     313    void totalesEncadenamientoMa();
    312314
    313315    //Funcion para crear una nueva pestaña
Note: See TracChangeset for help on using the changeset viewer.