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