source: mmcs/mainwindow.H

Last change on this file was 9a5ec40, checked in by rudmanmrrod <rudman22@…>, 7 years ago

Solventado problema con los modelos de precios homogeneos, tanto clasico como no clasico

  • Property mode set to 100755
File size: 13.9 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;
[9b2ca78]110    QAction actionCompararDescomposicion;
[b0c244f]111
[b1ef0b1]112    QAction actionSeleccionarTabla;
113
[dfabbb4]114    //Acciones del manú de ayuda
[dfddb27]115    QAction actionManual;
116    QAction actionAcercaDe;
117
[44d1e60]118    QTableWidget * tableWidget;
[9dd61b1]119    QTabWidget * tabWidget;
120    QMap<QString,QStringList> diccCuentasExogenas;
[8daa049]121    QMap<int,QVector<QString> > diccCuentasEndogenas;
122    QMap<int,QVector<QString> > espacioCuentasExogenas;
[32f758e]123    QMap<int, QMap<QString,QStringList> > diccCuentasComponentes;
124    QMap<int, QMap<QString,QStringList> > diccCuentasEncadenamientos;
[fc268a0]125    QMap<QString,double> totalCuentas;
[f6d90ed]126    QMap<QString,QVector<double> > totalCuentasEncadenamiento;
[fc268a0]127
128    QStringList ComponentesEndogenos;
[9dd61b1]129
[96b0c4a]130    QTableWidget *MatrizExgEnd;
131
[9dd61b1]132    stackVariablesExogenas *stackVE;
[8daa049]133    stackEncadenamientos *stackEncadenamiento;
[04999c9]134    StackPreciosNoHomogeneos *stackPNH;
[9dd61b1]135
[61e2bc2]136    //Matriz con la tabla principal
137    Eigen::MatrixXd PrincipalTable;
138    //Tabla de Exogenas y Endogenas
139    Eigen::MatrixXd EndogenasyExogenas;
140    //Tabla del sector B (exogena/endogena)
141    Eigen::MatrixXd ExoEndo;
142    //Matriz del Coeficiente Técnico
143    Eigen::MatrixXd An;
144    Eigen::MatrixXd MBn;
145    //Matrices de los múltiplicadores de lontief
[96b0c4a]146    Eigen::MatrixXd MatrixMa;
147    Eigen::MatrixXd MatrixMb;
[fc268a0]148    Eigen::MatrixXd MatrizMat;
[cfbc36f]149    Eigen::MatrixXd MatrizMbt;
[b0c244f]150    //Matrices para la descomposicion
151    Eigen::MatrixXd A0;
152    Eigen::MatrixXd M1;
153    Eigen::MatrixXd M2;
154    Eigen::MatrixXd M3;
155    Eigen::MatrixXd T;
156    Eigen::MatrixXd O;
157    Eigen::MatrixXd C;
[96b0c4a]158
[44d1e60]159    QString csvFilePath;
160    char csvSeparator;
161    int numAccounts;
162    int matrixSize;
[96b0c4a]163    int precission;
[bd5e45b]164
[04999c9]165    QString componentePNH;
166
[4d3d740]167    Eigen::MatrixXd MatrizEndogenaEndogena;
[8daa049]168
[bd5e45b]169    int opcionCuentaExogena;
170    int opcionVentanaExogena;
171    int opcionExportarMatriz;
[8daa049]172    int opcionEncadenamientos;
173    int opcionCuentaEncadenamientos;
[fa3f7a3]174    int opcionMa;
[cfbc36f]175    int opcionMb;
[fa3f7a3]176    int opcionFormCompararResultados;
[96b0c4a]177    int opcionFormCompararResultadosMNC;
[fc268a0]178    int opcionMAT;
[cfbc36f]179    int opcionMBT;
[04999c9]180    int opcionPNHT;
181    int opcionFormPNH;
[fa3f7a3]182
183    QVector<double> subtotalEnd;
184    QVector<double> subtotalExog;
[96b0c4a]185    QVector<double> subtotalExogEnd;
[fc268a0]186    QVector<double> Vpond;
[dfabbb4]187    //Son los vectores que almacenrán los totales del vectorFila y vectorColumna para An
188    QVector<double> vFila;
189    QVector<double> vColumna;
[8daa049]190
[b1ef0b1]191    int cantidadSelecciones;
[8daa049]192    int cantidadEncadenamientos;
[fa3f7a3]193    int cantidadEscenarios;
194    int cantidadResultados;
[96b0c4a]195    int cantidadMNC;//Cantidad de Modelos No Clasicos
196    int cantidadResultadosMNC;
[04999c9]197    //Cantidad de resultados de incidencia en modelo de precios homogéneos clásico
[fc268a0]198    int cantidadPHCindidenciaiCuenta;
199    int cantidadPHCindidenciaiComponente;
[04999c9]200    //Cantidad de resultados de incidencia en modelo de precios homogéneos no clásico
[cfbc36f]201    int cantidadPHNCindidenciaiCuenta;
202    int cantidadPHNCindidenciaiComponente;
[04999c9]203    //Cantidad de resultados de incidencia en modelo de precios no homogéneos
204    int cantidadPNHincidencia100;
205    int cantidadPNHincidenciaiCuenta;
206    int cantidadPNHincidenciaiComponente;
[8f1b6a6]207    //Cantidad de impactos a corto plazo
208    int cantidadImpactos;
[9b2ca78]209    //Cantidad de comparaciones de impactos
210    int comparacionImpactos;
[44d1e60]211
212    FormLoadMatrix * formLoadMatrix;
[e62517a]213    FormMatrixView * formViewMatrix;
[9dd61b1]214    FormVariablesExogenas * formVariablesExogenas;
[bd5e45b]215    FormExportMatrix * formExportMatriz;
[8daa049]216    FormEncadenamientos * formEncadenamientos;
[fa3f7a3]217    FormCompararResultados *formCompararResultados;
[96b0c4a]218    FormCompararMNC *formCompararMNC;
[fc268a0]219    FormIncidenciaI *FI;
[04999c9]220    FormPreciosNoHomogeneos * formPreciosNoHomogeneos;
[b0c244f]221    FormDescomposicion *formdescomposicion;
[8f1b6a6]222    FormCortoPlazo *formcortoplazo;
[44d1e60]223
224    void initGUI();
225
226    void createCentralWidget();
227    void createMatrixCentralWidget();
[588814f]228    void loadsAccounts(QTableWidget *);
229    void hideStackedWidget();
[44d1e60]230
231    void createMenuBar();
[9dd61b1]232    void matricesMenuBar();
[44d1e60]233    void populateTable(QTableWidget *);
[95d916c]234
[32f758e]235    void CalcularTotales(QTableWidget *, int inicio, bool &);
[61e2bc2]236    void TotalPrincipalTable(QTableWidget *, Eigen::MatrixXd & , int init);
[95d916c]237    bool comprobarNombreCuenta(QString, int indice);
[9dd61b1]238    void clonarTabla(QTableWidget *,QTableWidget *, int cantidad);
239    void setAccountTitle(QTableWidget *);
240    void insertremoveRowCol(QTableWidget *, int rowcol, bool opcion);
[8daa049]241    void crearDiccionario(QTableWidget *, bool endogena=true);
242    QStringList obtenerCuentasEndogenas(QTableWidget *,QStringList);
243    QStringList obtenerCuentasExogenas(QTableWidget *,QStringList );
244    void spanEndogenaCell(QTableWidget *, int inicio, int celda, bool endex=true);
245    void spanExogenaCell(QTableWidget *,int celda);
[9dd61b1]246
[61e2bc2]247    void TotalEndoExoTable(int elementos, int cantidad);
248
[9dd61b1]249    void setEndogenaExogenaCell(QTableWidget *, int inicioExogena, int elementos,bool condicion);
[67c9f67]250    void CalcularAn(QTableWidget *, QTableWidget *, QTableWidget *, int count, bool endogena = false);
[bd5e45b]251    QString Separador(QTableWidgetItem *,bool quitar);
[aa628c3]252    void EndogenaAn();
[9dd61b1]253
[fc268a0]254    void calcularTotalCuentas(QTableWidget *);
[b1ef0b1]255    void estimarVectorPonderacion();
[fc268a0]256
[8daa049]257    void obtenerCuentaComponentes();
258    void crearMatrizEncadenamiento(QTableWidget *, QTableWidget *);
[4c71262]259    void crearMatrizEncadenamientoEndogena(QTableWidget *, QTableWidget *, Eigen::MatrixXd Matrix);
[8daa049]260    void calcularTotalesEncadenamientos(QTableWidget *);
[32f758e]261    void cuentacomponentesEncadenamiento(QTableWidget *, int count);
[8daa049]262
[cfbc36f]263    void calcularSubtotal(QTableWidget *,int inicio, int fin,int exogena);
[8f1b6a6]264    void llenarEscenario(QTableWidget *, int clasico=0);
265    void calcularFinEscenario(QTableWidget *, QString, Eigen::MatrixXd matrix);
266    QVector<double> obtenerResultadoEscenario(QVector<double>, QString, Eigen::MatrixXd matrix);
[9b2ca78]267    QStringList obtenerNombreResultadoEscenario(int cantidad, QString nombre);
[96b0c4a]268    void cuentacomponentesResultado(QTableWidget *, int count, bool clasico = true);
[fa3f7a3]269
[67c9f67]270    void obtenerMatrizExgEnd();
271    void crearMatrizExgEnd(QTableWidget *,QTableWidget *,int elementos,int inicioExogena);
272    void calcularMatrizExgEnd(QTableWidget *);
273    void ctvMatrizExgEnd(QTableWidget *, QTableWidget *);
274    void titlespanMatrizExgEnd(QTableWidget *);
275    void estimarMb(QTableWidget *, QTableWidget *);
[96b0c4a]276    void calcularSubtotalEndExg();
277    QVector<double> obtenerResultadoEscenarioMNC(QVector<double>);
278    void calcularFinEscenarioMNC(QTableWidget *);
279    QStringList obtenerNombreResultadoEscenarioMNC();
[67c9f67]280
[8daa049]281    void restarIdentidadAn(QTableWidget *);
282    void titleEndogena(QTableWidget *);
[9dd61b1]283
[fc268a0]284    void calcularMaT();
285    void calcularPHCIncidencia100(QTableWidget *);
[9a5ec40]286    void calcularPHCIncidenciaI(QTableWidget *, QMap<QString, double>, bool clasico = true);
287    void calcularPHCIncidenciaIComponente(QTableWidget *, QTableWidget *, bool clasico = true);
[fc268a0]288
[cfbc36f]289    void calcularMbT();
290    void calcularMb();
[04999c9]291    void calcularPHNCIncidencia100(QTableWidget *);
292    void calcularVectorSend(QString componente, QVector<double> &);
293    void multiplicarMatricesPNH(QTableWidget *, QVector<double>);
294    void calcularPNHIncidencia100(QTableWidget *, Eigen::MatrixXd Diagonal);
295    void crearFormularioPNH();
[32f758e]296    QStringList obtenerCuentas();
[cfbc36f]297
[dfabbb4]298    //Función estimar los vectores fila y columna para la clasificación en los encadenamientos
299    void estimarVIFVC();
300    //Función para estimar la clasificación de las cuentas por CW o Rassmusen
[f6d90ed]301    void estimarClasificador(double &, double &, int index, QString nombre);
[dfabbb4]302    //Función para determinar los clasificadores
[f6d90ed]303    void determinarClasificador(QTableWidget *, int index_table, int element, QString nombre);
[dfabbb4]304
[b0c244f]305    //Función para validar la cuenta producto/actividad
306    bool validarDescomposicion(QStringList);
307
308    //Funciones referentes a la descomposicion
309    void calcularA0(QVector<double>);
310    void calcularAuxiliares();
311    void calcularMatricesDescomposicion();
[8f1b6a6]312    //Funciones referentes al impacto a corto plazo
313    Eigen::MatrixXd obtenerMatriz(QString);
[b0c244f]314
[f6d90ed]315    //Funcion para crear un diccionario con los totales por cuenta en Ma
316    void totalesEncadenamientoMa();
317
[b0c244f]318    //Funcion para crear una nueva pestaña
319    void createTab(QString , QTableWidget *,bool current=false);
320
[9dd61b1]321    bool ComprobarCuentas();
322    int ObtenerIndice(QString );
323
324    QStringList ObtenerNombreCuenta(int contador);
325    QList<int> ObtenerLimitesCuenta(int contador,int opccion);
[44d1e60]326
327protected:
328    void closeEvent(QCloseEvent *);
329
330private slots:
[fc268a0]331    void slotNuevoProyecto();
[44d1e60]332    void slotLoadMatrix();
333    void slotExportMatrix();
[50550b0]334
[96b0c4a]335    void slotFormLoadMatrixAccepted(const QString &, int, int);
[44d1e60]336    void slotFormLoadMatrixClosed();
[588814f]337    void slotOnlyaccount();
338    void slotOnlycomponent();
[44d1e60]339
[9dd61b1]340    void AgregarCuenta();
341    void RestaurarCeldas();
342    void FinalizarCuentas();
343    void ModificarCuenta();
344    void slotCoeficienteHorizontal();
345    void slotCoeficienteVertical();
[67c9f67]346    void slotAccChange();
[9dd61b1]347
[e62517a]348    //Slots para las variables exógenas
[9dd61b1]349    void slotVariableExogena();
350    void slotCloseExogena();
351    void slotAgregarExogena();
352    void slotFinalizarExogena();
353    void slotDeshacerExogena();
[fa3f7a3]354
355    void slotMa();
[9dd61b1]356
[e62517a]357    //Slots para encadenamientos
[8daa049]358    void slotEncadenamientos();
359    void slotCloseEncadenamiento();
360    void slotAgregarEncadenamiento();
361    void slotVerEncadenamiento();
362
[e62517a]363    //Slots para reportes
364    void slotEncadenamientoReport();
[b23848e]365    void slotGenerarEncadenamientoReport(QString,bool);
366
367    //Slots para gráfico
368    void slotEncadenamientoGraphic();
[e62517a]369
370    //Slots para exportar
[bd5e45b]371    void slotCloseExport();
372    void slotSaveExport();
373    void slotSearchExport();
374
[e62517a]375    //Slots para el modelo clásico
[fa3f7a3]376    void slotModeloClasico();
[8f1b6a6]377    void calcularEscenario(int clasico = 0);
[fa3f7a3]378    void finalizarEscenario();
379
[e62517a]380    //Slots para el modelo no clásico
[67c9f67]381    void slotModeloNoClasico();
[96b0c4a]382    void calcularEscenarioNC();
383    void finalizarEscenarioNC();
384
[b0c244f]385    //Slot para descomposicion
386    void slotDescomposicion();
387    void slotAgregarDescomposicion();
[8f1b6a6]388    void slotCortoPlazoForm();
389    void slotAgregarCortoPlazo();
390    void calcularEscenarioImpacto();
391    void finalizarImpacto();
[b0c244f]392
[9b2ca78]393    //Slots para comparar resultados en el modelo no clásico
[96b0c4a]394    void slotCompararResultadosMNC();
395    void slotVerResultadoMNC();
[67c9f67]396
[9b2ca78]397    //Slots para precios homogeneos
[fc268a0]398    void slotPHCIncidencia100();
399    void slotPHCIncidenciaiCuenta();
400    void slotCalcularPHCIncidenciaiCuenta();
401    void slotPHCIncidenciaiComponente();
402    void slotCalcularPHCIncidenciaiComponente();
403
[9b2ca78]404    //Slots para comparar resultados en los precios homogeneos
[fa3f7a3]405    void slotCompararResultados();
406    void slotVerResultado();
407
[9b2ca78]408    //Slots para precios no homogeneos
[cfbc36f]409    void slotPHNCIncidencia100();
410    void slotPHNCIncidenciaiCuenta();
411    void slotCalcularPHNCIncidenciaiCuenta();
412    void slotPHNCIncidenciaiComponente();
413    void slotCalcularPHNCIncidenciaiComponente();
414
[04999c9]415    void slotPNHIncudencia100();
416    void slotCloseformPNH();
417    void slotSelectPNH();
418    void slotPNHIncidenciaiCuenta();
419    void slotPNHIncidenciaiComponente();
420    void slotSelectPNHi();
421    void slotCalcularPNHIncidenciaiCuenta();
422    void slotSelectPNHic();
423    void slotCalcularPNHIncidenciaiComponente();
424
[b1ef0b1]425    void slotSeleccionarTabla();
426
[9b2ca78]427    //Slots para comparar resultados de descomposicion
428    void slotFormResultadosDescomposicion();
429    void slotVerResultadoDescomposicion();
430
[e62517a]431    //Slots del menú de ayuda
[dfddb27]432    void abrirManual();
433    void acercaDe();
434
[44d1e60]435public:
436    MainWindow();
437    QString numberFormat(double &);
438};
439
440#endif // MAINWINDOW_H
Note: See TracBrowser for help on using the repository browser.