source: mmcs/mainwindow.H @ f6d90ed

Last change on this file since f6d90ed was f6d90ed, checked in by rudmanmrrod <rudman22@…>, 8 years ago

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

  • Property mode set to 100755
File size: 13.4 KB
RevLine 
[44d1e60]1#ifndef MAINWINDOW_H
2#define MAINWINDOW_H
3
[e62517a]4#include <QtWidgets>
[8daa049]5
[44d1e60]6#include <formloadmatrix.H>
[e62517a]7#include <ui_formLoadMatrix.h>
[44d1e60]8#include <formviewmatrix.H>
[9dd61b1]9#include <formvariablesexogenas.h>
[8daa049]10#include <formexportmatrix.h>
11#include <formencadenamientos.h>
[fa3f7a3]12#include <ui_formcompararresultados.h>
13#include <formcompararresultados.h>
[b0c244f]14//Formulario para comparar el modelo no clasico
[96b0c4a]15#include <ui_formcompararmnc.h>
16#include <formcompararmnc.h>
[b0c244f]17//Formulario de incidencias
[fc268a0]18#include "ui_formincidenciai.h"
19#include <formincidenciai.h>
[04999c9]20#include <formpreciosnohomogeneos.h>
[b0c244f]21//Formulario para exportar reporte
[e62517a]22#include <formexportreport.h>
23#include <ui_formexportreport.h>
[b0c244f]24#include "accountwidget.H"
25//Formulario de descomposicon
26#include <formdescomposicion.h>
27#include <ui_formdescomposicion.h>
[8f1b6a6]28//Formulario de Impacto a Corto Plazo
29#include <formcortoplazo.h>
30#include <ui_formcortoplazo.h>
[f2dac89]31//Formulario de Carga
32#include <formcargando.h>
[b0c244f]33
34//Funciones genericas
[4c71262]35#include <genericFunctions.h>
[b0c244f]36//Librería de gráficos
[dfabbb4]37#include <qcustomplot.h>
[44d1e60]38#include <sstream>
39#include <stackwidget.H>
[9dd61b1]40#include <stackvariablesexogenas.h>
[8daa049]41#include <stackencadenamientos.h>
[04999c9]42#include <stackpreciosnohomogeneos.h>
[8daa049]43
44#include <QTabWidget>
45
[9dd61b1]46#include <QMap>
[8daa049]47#include <QVector>
[e62517a]48#include <QPrinter>
[8daa049]49
[96b0c4a]50#include <Eigen>
51
[44d1e60]52
53class MainWindow : public QMainWindow
54{
55    Q_OBJECT
56
57    QMenu menuFile;
58    QMenu menuTools;
59    QMenu menuViews;
60    QMenu menuHelp;
[07b8f66]61
62    QMenu CoeficientesTecnicos;
[b1ef0b1]63    QMenu Encadenamientos;
[fc268a0]64
[96b0c4a]65    QMenu Modelos;
[fc268a0]66    QMenu PHClasico;
67    QMenu PHClasicoIncidencia;
[cfbc36f]68    QMenu PHNoClasico;
69    QMenu PHNoClasicoIncidencia;
[04999c9]70    QMenu PreciosNH;
71    QMenu PreciosNHIncidencia;
[8f1b6a6]72    QMenu Descomposicion;
[9dd61b1]73
[dfabbb4]74    //Acciones principales
[44d1e60]75    QAction actionLoadMatrix;
76    QAction actionExportMatrix;
77    QAction actionQuit;
[fc268a0]78    QAction actionNewProject;
[9dd61b1]79
[dfabbb4]80    //Acciones del menú de coeficientes
[9dd61b1]81    QAction actionCH;
82    QAction actionCV;
83    QAction actionVariableExogena;
[fc268a0]84    QAction actionEncadenamiento;
85
[dfabbb4]86    //Acciones del Modelo clásico y no clásico
[fa3f7a3]87    QAction actionModeloClasico;
88    QAction actionCompararResultados;
[67c9f67]89    QAction actionModeloNoClasico;
[96b0c4a]90    QAction actionCompararResultadosMNC;
[9dd61b1]91
[dfabbb4]92    //Acciones de precios homógeneos por módelo clásico
[fc268a0]93    QAction actionPHClasicoIncidencia100;
94    QAction actionPHCIncidenciaCuenta;
95    QAction actionPHCIncidenciaComponente;
96
[dfabbb4]97    //Acciones de precios homógeneos por módelo no clásico
[cfbc36f]98    QAction actionPHNoClasicoIncidencia100;
99    QAction actionPHNCIncidenciaCuenta;
100    QAction actionPHNCIncidenciaComponente;
[9dd61b1]101
[dfabbb4]102    //Acciones de precios no homógeneos
[04999c9]103    QAction actionPNHIncidencia100;
104    QAction actionPNHIncidenciaCuenta;
105    QAction actionPNHIncidenciaComponente;
106
[b0c244f]107    //Acción para la descomposición
108    QAction actionDescomposicion;
[8f1b6a6]109    QAction actionCortoPlazo;
[b0c244f]110
[b1ef0b1]111    QAction actionSeleccionarTabla;
112
[dfabbb4]113    //Acciones del manú de ayuda
[dfddb27]114    QAction actionManual;
115    QAction actionAcercaDe;
116
[44d1e60]117    QTableWidget * tableWidget;
[9dd61b1]118    QTabWidget * tabWidget;
119    QMap<QString,QStringList> diccCuentasExogenas;
[8daa049]120    QMap<int,QVector<QString> > diccCuentasEndogenas;
121    QMap<int,QVector<QString> > espacioCuentasExogenas;
[32f758e]122    QMap<int, QMap<QString,QStringList> > diccCuentasComponentes;
123    QMap<int, QMap<QString,QStringList> > diccCuentasEncadenamientos;
[fc268a0]124    QMap<QString,double> totalCuentas;
[f6d90ed]125    QMap<QString,QVector<double> > totalCuentasEncadenamiento;
[fc268a0]126
127    QStringList ComponentesEndogenos;
[9dd61b1]128
[96b0c4a]129    QTableWidget *MatrizExgEnd;
130
[9dd61b1]131    stackVariablesExogenas *stackVE;
[8daa049]132    stackEncadenamientos *stackEncadenamiento;
[04999c9]133    StackPreciosNoHomogeneos *stackPNH;
[9dd61b1]134
[61e2bc2]135    //Matriz con la tabla principal
136    Eigen::MatrixXd PrincipalTable;
137    //Tabla de Exogenas y Endogenas
138    Eigen::MatrixXd EndogenasyExogenas;
139    //Tabla del sector B (exogena/endogena)
140    Eigen::MatrixXd ExoEndo;
141    //Matriz del Coeficiente Técnico
142    Eigen::MatrixXd An;
143    Eigen::MatrixXd MBn;
144    //Matrices de los múltiplicadores de lontief
[96b0c4a]145    Eigen::MatrixXd MatrixMa;
146    Eigen::MatrixXd MatrixMb;
[fc268a0]147    Eigen::MatrixXd MatrizMat;
[cfbc36f]148    Eigen::MatrixXd MatrizMbt;
[b0c244f]149    //Matrices para la descomposicion
150    Eigen::MatrixXd A0;
151    Eigen::MatrixXd M1;
152    Eigen::MatrixXd M2;
153    Eigen::MatrixXd M3;
154    Eigen::MatrixXd T;
155    Eigen::MatrixXd O;
156    Eigen::MatrixXd C;
[96b0c4a]157
[44d1e60]158    QString csvFilePath;
159    char csvSeparator;
160    int numAccounts;
161    int matrixSize;
[96b0c4a]162    int precission;
[bd5e45b]163
[04999c9]164    QString componentePNH;
165
[4d3d740]166    Eigen::MatrixXd MatrizEndogenaEndogena;
[8daa049]167
[bd5e45b]168    int opcionCuentaExogena;
169    int opcionVentanaExogena;
170    int opcionExportarMatriz;
[8daa049]171    int opcionEncadenamientos;
172    int opcionCuentaEncadenamientos;
[fa3f7a3]173    int opcionMa;
[cfbc36f]174    int opcionMb;
[fa3f7a3]175    int opcionFormCompararResultados;
[96b0c4a]176    int opcionFormCompararResultadosMNC;
[fc268a0]177    int opcionMAT;
[cfbc36f]178    int opcionMBT;
[04999c9]179    int opcionPNHT;
180    int opcionFormPNH;
[fa3f7a3]181
182    QVector<double> subtotalEnd;
183    QVector<double> subtotalExog;
[96b0c4a]184    QVector<double> subtotalExogEnd;
[fc268a0]185    QVector<double> Vpond;
[dfabbb4]186    //Son los vectores que almacenrán los totales del vectorFila y vectorColumna para An
187    QVector<double> vFila;
188    QVector<double> vColumna;
[8daa049]189
[b1ef0b1]190    int cantidadSelecciones;
[8daa049]191    int cantidadEncadenamientos;
[fa3f7a3]192    int cantidadEscenarios;
193    int cantidadResultados;
[96b0c4a]194    int cantidadMNC;//Cantidad de Modelos No Clasicos
195    int cantidadResultadosMNC;
[04999c9]196    //Cantidad de resultados de incidencia en modelo de precios homogéneos clásico
[fc268a0]197    int cantidadPHCindidenciaiCuenta;
198    int cantidadPHCindidenciaiComponente;
[04999c9]199    //Cantidad de resultados de incidencia en modelo de precios homogéneos no clásico
[cfbc36f]200    int cantidadPHNCindidenciaiCuenta;
201    int cantidadPHNCindidenciaiComponente;
[04999c9]202    //Cantidad de resultados de incidencia en modelo de precios no homogéneos
203    int cantidadPNHincidencia100;
204    int cantidadPNHincidenciaiCuenta;
205    int cantidadPNHincidenciaiComponente;
[8f1b6a6]206    //Cantidad de impactos a corto plazo
207    int cantidadImpactos;
[44d1e60]208
209    FormLoadMatrix * formLoadMatrix;
[e62517a]210    FormMatrixView * formViewMatrix;
[9dd61b1]211    FormVariablesExogenas * formVariablesExogenas;
[bd5e45b]212    FormExportMatrix * formExportMatriz;
[8daa049]213    FormEncadenamientos * formEncadenamientos;
[fa3f7a3]214    FormCompararResultados *formCompararResultados;
[96b0c4a]215    FormCompararMNC *formCompararMNC;
[fc268a0]216    FormIncidenciaI *FI;
[04999c9]217    FormPreciosNoHomogeneos * formPreciosNoHomogeneos;
[b0c244f]218    FormDescomposicion *formdescomposicion;
[8f1b6a6]219    FormCortoPlazo *formcortoplazo;
[44d1e60]220
221    void initGUI();
222
223    void createCentralWidget();
224    void createMatrixCentralWidget();
[588814f]225    void loadsAccounts(QTableWidget *);
226    void hideStackedWidget();
[44d1e60]227
228    void createMenuBar();
[9dd61b1]229    void matricesMenuBar();
[44d1e60]230    void populateTable(QTableWidget *);
[95d916c]231
[32f758e]232    void CalcularTotales(QTableWidget *, int inicio, bool &);
[61e2bc2]233    void TotalPrincipalTable(QTableWidget *, Eigen::MatrixXd & , int init);
[95d916c]234    bool comprobarNombreCuenta(QString, int indice);
[9dd61b1]235    void clonarTabla(QTableWidget *,QTableWidget *, int cantidad);
236    void setAccountTitle(QTableWidget *);
237    void insertremoveRowCol(QTableWidget *, int rowcol, bool opcion);
[8daa049]238    void crearDiccionario(QTableWidget *, bool endogena=true);
239    QStringList obtenerCuentasEndogenas(QTableWidget *,QStringList);
240    QStringList obtenerCuentasExogenas(QTableWidget *,QStringList );
241    void spanEndogenaCell(QTableWidget *, int inicio, int celda, bool endex=true);
242    void spanExogenaCell(QTableWidget *,int celda);
[9dd61b1]243
[61e2bc2]244    void TotalEndoExoTable(int elementos, int cantidad);
245
[9dd61b1]246    void setEndogenaExogenaCell(QTableWidget *, int inicioExogena, int elementos,bool condicion);
[67c9f67]247    void CalcularAn(QTableWidget *, QTableWidget *, QTableWidget *, int count, bool endogena = false);
[bd5e45b]248    QString Separador(QTableWidgetItem *,bool quitar);
[aa628c3]249    void EndogenaAn();
[9dd61b1]250
[fc268a0]251    void calcularTotalCuentas(QTableWidget *);
[b1ef0b1]252    void estimarVectorPonderacion();
[fc268a0]253
[8daa049]254    void obtenerCuentaComponentes();
255    void crearMatrizEncadenamiento(QTableWidget *, QTableWidget *);
[4c71262]256    void crearMatrizEncadenamientoEndogena(QTableWidget *, QTableWidget *, Eigen::MatrixXd Matrix);
[8daa049]257    void calcularTotalesEncadenamientos(QTableWidget *);
[32f758e]258    void cuentacomponentesEncadenamiento(QTableWidget *, int count);
[8daa049]259
[cfbc36f]260    void calcularSubtotal(QTableWidget *,int inicio, int fin,int exogena);
[8f1b6a6]261    void llenarEscenario(QTableWidget *, int clasico=0);
262    void calcularFinEscenario(QTableWidget *, QString, Eigen::MatrixXd matrix);
263    QVector<double> obtenerResultadoEscenario(QVector<double>, QString, Eigen::MatrixXd matrix);
[fa3f7a3]264    QStringList obtenerNombreResultadoEscenario();
[96b0c4a]265    void cuentacomponentesResultado(QTableWidget *, int count, bool clasico = true);
[fa3f7a3]266
[67c9f67]267    void obtenerMatrizExgEnd();
268    void crearMatrizExgEnd(QTableWidget *,QTableWidget *,int elementos,int inicioExogena);
269    void calcularMatrizExgEnd(QTableWidget *);
270    void ctvMatrizExgEnd(QTableWidget *, QTableWidget *);
271    void titlespanMatrizExgEnd(QTableWidget *);
272    void estimarMb(QTableWidget *, QTableWidget *);
[96b0c4a]273    void calcularSubtotalEndExg();
274    QVector<double> obtenerResultadoEscenarioMNC(QVector<double>);
275    void calcularFinEscenarioMNC(QTableWidget *);
276    QStringList obtenerNombreResultadoEscenarioMNC();
[67c9f67]277
[8daa049]278    void restarIdentidadAn(QTableWidget *);
279    void titleEndogena(QTableWidget *);
[9dd61b1]280
[fc268a0]281    void calcularMaT();
282    void calcularPHCIncidencia100(QTableWidget *);
283    void calcularPHCIncidenciaI(QTableWidget *, QMap<QString, double>);
284    void calcularPHCIncidenciaIComponente(QTableWidget *,QTableWidget *);
285
[cfbc36f]286    void calcularMbT();
287    void calcularMb();
[04999c9]288    void calcularPHNCIncidencia100(QTableWidget *);
289    void calcularVectorSend(QString componente, QVector<double> &);
290    void multiplicarMatricesPNH(QTableWidget *, QVector<double>);
291    void calcularPNHIncidencia100(QTableWidget *, Eigen::MatrixXd Diagonal);
292    void crearFormularioPNH();
[32f758e]293    QStringList obtenerCuentas();
[cfbc36f]294
[dfabbb4]295    //Función estimar los vectores fila y columna para la clasificación en los encadenamientos
296    void estimarVIFVC();
297    //Función para estimar la clasificación de las cuentas por CW o Rassmusen
[f6d90ed]298    void estimarClasificador(double &, double &, int index, QString nombre);
[dfabbb4]299    //Función para determinar los clasificadores
[f6d90ed]300    void determinarClasificador(QTableWidget *, int index_table, int element, QString nombre);
[dfabbb4]301
[b0c244f]302    //Función para validar la cuenta producto/actividad
303    bool validarDescomposicion(QStringList);
304
305    //Funciones referentes a la descomposicion
306    void calcularA0(QVector<double>);
307    void calcularAuxiliares();
308    void calcularMatricesDescomposicion();
[8f1b6a6]309    //Funciones referentes al impacto a corto plazo
310    Eigen::MatrixXd obtenerMatriz(QString);
[b0c244f]311
[f6d90ed]312    //Funcion para crear un diccionario con los totales por cuenta en Ma
313    void totalesEncadenamientoMa();
314
[b0c244f]315    //Funcion para crear una nueva pestaña
316    void createTab(QString , QTableWidget *,bool current=false);
317
[9dd61b1]318    bool ComprobarCuentas();
319    int ObtenerIndice(QString );
320
321    QStringList ObtenerNombreCuenta(int contador);
322    QList<int> ObtenerLimitesCuenta(int contador,int opccion);
[44d1e60]323
324protected:
325    void closeEvent(QCloseEvent *);
326
327private slots:
[fc268a0]328    void slotNuevoProyecto();
[44d1e60]329    void slotLoadMatrix();
330    void slotExportMatrix();
[50550b0]331
[96b0c4a]332    void slotFormLoadMatrixAccepted(const QString &, int, int);
[44d1e60]333    void slotFormLoadMatrixClosed();
[588814f]334    void slotOnlyaccount();
335    void slotOnlycomponent();
[44d1e60]336
[9dd61b1]337    void AgregarCuenta();
338    void RestaurarCeldas();
339    void FinalizarCuentas();
340    void ModificarCuenta();
341    void slotCoeficienteHorizontal();
342    void slotCoeficienteVertical();
[67c9f67]343    void slotAccChange();
[9dd61b1]344
[e62517a]345    //Slots para las variables exógenas
[9dd61b1]346    void slotVariableExogena();
347    void slotCloseExogena();
348    void slotAgregarExogena();
349    void slotFinalizarExogena();
350    void slotDeshacerExogena();
[fa3f7a3]351
352    void slotMa();
[9dd61b1]353
[e62517a]354    //Slots para encadenamientos
[8daa049]355    void slotEncadenamientos();
356    void slotCloseEncadenamiento();
357    void slotAgregarEncadenamiento();
358    void slotVerEncadenamiento();
359
[e62517a]360    //Slots para reportes
361    void slotEncadenamientoReport();
[b23848e]362    void slotGenerarEncadenamientoReport(QString,bool);
363
364    //Slots para gráfico
365    void slotEncadenamientoGraphic();
[e62517a]366
367    //Slots para exportar
[bd5e45b]368    void slotCloseExport();
369    void slotSaveExport();
370    void slotSearchExport();
371
[e62517a]372    //Slots para el modelo clásico
[fa3f7a3]373    void slotModeloClasico();
[8f1b6a6]374    void calcularEscenario(int clasico = 0);
[fa3f7a3]375    void finalizarEscenario();
376
[e62517a]377    //Slots para el modelo no clásico
[67c9f67]378    void slotModeloNoClasico();
[96b0c4a]379    void calcularEscenarioNC();
380    void finalizarEscenarioNC();
381
[b0c244f]382    //Slot para descomposicion
383    void slotDescomposicion();
384    void slotAgregarDescomposicion();
[8f1b6a6]385    void slotCortoPlazoForm();
386    void slotAgregarCortoPlazo();
387    void calcularEscenarioImpacto();
388    void finalizarImpacto();
[b0c244f]389
[96b0c4a]390    void slotCompararResultadosMNC();
391    void slotVerResultadoMNC();
[67c9f67]392
[fc268a0]393    void slotPHCIncidencia100();
394    void slotPHCIncidenciaiCuenta();
395    void slotCalcularPHCIncidenciaiCuenta();
396    void slotPHCIncidenciaiComponente();
397    void slotCalcularPHCIncidenciaiComponente();
398
[fa3f7a3]399    void slotCompararResultados();
400    void slotVerResultado();
401
[cfbc36f]402    void slotPHNCIncidencia100();
403    void slotPHNCIncidenciaiCuenta();
404    void slotCalcularPHNCIncidenciaiCuenta();
405    void slotPHNCIncidenciaiComponente();
406    void slotCalcularPHNCIncidenciaiComponente();
407
[04999c9]408    void slotPNHIncudencia100();
409    void slotCloseformPNH();
410    void slotSelectPNH();
411    void slotPNHIncidenciaiCuenta();
412    void slotPNHIncidenciaiComponente();
413    void slotSelectPNHi();
414    void slotCalcularPNHIncidenciaiCuenta();
415    void slotSelectPNHic();
416    void slotCalcularPNHIncidenciaiComponente();
417
[b1ef0b1]418    void slotSeleccionarTabla();
419
[e62517a]420    //Slots del menú de ayuda
[dfddb27]421    void abrirManual();
422    void acercaDe();
423
[44d1e60]424public:
425    MainWindow();
426    QString numberFormat(double &);
427};
428
429#endif // MAINWINDOW_H
Note: See TracBrowser for help on using the repository browser.