source: mmcs/mainwindow.H @ 8f1b6a6

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

Agregado primera aproximacion al impacto a corto plazo, solucionado bug al no mostrar la ultima fila/columna en la descomposicion

  • Property mode set to 100755
File size: 13.3 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
111    QAction actionSeleccionarTabla;
112
113    //Acciones del manú de ayuda
114    QAction actionManual;
115    QAction actionAcercaDe;
116
117    QTableWidget * tableWidget;
118    QTabWidget * tabWidget;
119    QMap<QString,QStringList> diccCuentasExogenas;
120    QMap<int,QVector<QString> > diccCuentasEndogenas;
121    QMap<int,QVector<QString> > espacioCuentasExogenas;
122    QMap<int, QMap<QString,QStringList> > diccCuentasComponentes;
123    QMap<int, QMap<QString,QStringList> > diccCuentasEncadenamientos;
124    QMap<QString,double> totalCuentas;
125
126    QStringList ComponentesEndogenos;
127
128    QTableWidget *MatrizExgEnd;
129
130    stackVariablesExogenas *stackVE;
131    stackEncadenamientos *stackEncadenamiento;
132    StackPreciosNoHomogeneos *stackPNH;
133
134    //Matriz con la tabla principal
135    Eigen::MatrixXd PrincipalTable;
136    //Tabla de Exogenas y Endogenas
137    Eigen::MatrixXd EndogenasyExogenas;
138    //Tabla del sector B (exogena/endogena)
139    Eigen::MatrixXd ExoEndo;
140    //Matriz del Coeficiente Técnico
141    Eigen::MatrixXd An;
142    Eigen::MatrixXd MBn;
143    //Matrices de los múltiplicadores de lontief
144    Eigen::MatrixXd MatrixMa;
145    Eigen::MatrixXd MatrixMb;
146    Eigen::MatrixXd MatrizMat;
147    Eigen::MatrixXd MatrizMbt;
148    //Matrices para la descomposicion
149    Eigen::MatrixXd A0;
150    Eigen::MatrixXd M1;
151    Eigen::MatrixXd M2;
152    Eigen::MatrixXd M3;
153    Eigen::MatrixXd T;
154    Eigen::MatrixXd O;
155    Eigen::MatrixXd C;
156
157    double total_ma;
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
210    FormLoadMatrix * formLoadMatrix;
211    FormMatrixView * formViewMatrix;
212    FormVariablesExogenas * formVariablesExogenas;
213    FormExportMatrix * formExportMatriz;
214    FormEncadenamientos * formEncadenamientos;
215    FormCompararResultados *formCompararResultados;
216    FormCompararMNC *formCompararMNC;
217    FormIncidenciaI *FI;
218    FormPreciosNoHomogeneos * formPreciosNoHomogeneos;
219    FormDescomposicion *formdescomposicion;
220    FormCortoPlazo *formcortoplazo;
221
222    void initGUI();
223
224    void createCentralWidget();
225    void createMatrixCentralWidget();
226    void loadsAccounts(QTableWidget *);
227    void hideStackedWidget();
228
229    void createMenuBar();
230    void matricesMenuBar();
231    void populateTable(QTableWidget *);
232
233    void CalcularTotales(QTableWidget *, int inicio, bool &);
234    void TotalPrincipalTable(QTableWidget *, Eigen::MatrixXd & , int init);
235    bool comprobarNombreCuenta(QString, int indice);
236    void clonarTabla(QTableWidget *,QTableWidget *, int cantidad);
237    void setAccountTitle(QTableWidget *);
238    void insertremoveRowCol(QTableWidget *, int rowcol, bool opcion);
239    void crearDiccionario(QTableWidget *, bool endogena=true);
240    QStringList obtenerCuentasEndogenas(QTableWidget *,QStringList);
241    QStringList obtenerCuentasExogenas(QTableWidget *,QStringList );
242    void spanEndogenaCell(QTableWidget *, int inicio, int celda, bool endex=true);
243    void spanExogenaCell(QTableWidget *,int celda);
244
245    void TotalEndoExoTable(int elementos, int cantidad);
246
247    void setEndogenaExogenaCell(QTableWidget *, int inicioExogena, int elementos,bool condicion);
248    void CalcularAn(QTableWidget *, QTableWidget *, QTableWidget *, int count, bool endogena = false);
249    QString Separador(QTableWidgetItem *,bool quitar);
250    void EndogenaAn();
251
252    void calcularTotalCuentas(QTableWidget *);
253    void estimarVectorPonderacion();
254
255    void obtenerCuentaComponentes();
256    void crearMatrizEncadenamiento(QTableWidget *, QTableWidget *);
257    void crearMatrizEncadenamientoEndogena(QTableWidget *, QTableWidget *, Eigen::MatrixXd Matrix);
258    void calcularTotalesEncadenamientos(QTableWidget *);
259    void cuentacomponentesEncadenamiento(QTableWidget *, int count);
260
261    void calcularSubtotal(QTableWidget *,int inicio, int fin,int exogena);
262    void llenarEscenario(QTableWidget *, int clasico=0);
263    void calcularFinEscenario(QTableWidget *, QString, Eigen::MatrixXd matrix);
264    QVector<double> obtenerResultadoEscenario(QVector<double>, QString, Eigen::MatrixXd matrix);
265    QStringList obtenerNombreResultadoEscenario();
266    void cuentacomponentesResultado(QTableWidget *, int count, bool clasico = true);
267
268    void obtenerMatrizExgEnd();
269    void crearMatrizExgEnd(QTableWidget *,QTableWidget *,int elementos,int inicioExogena);
270    void calcularMatrizExgEnd(QTableWidget *);
271    void ctvMatrizExgEnd(QTableWidget *, QTableWidget *);
272    void titlespanMatrizExgEnd(QTableWidget *);
273    void estimarMb(QTableWidget *, QTableWidget *);
274    void calcularSubtotalEndExg();
275    QVector<double> obtenerResultadoEscenarioMNC(QVector<double>);
276    void calcularFinEscenarioMNC(QTableWidget *);
277    QStringList obtenerNombreResultadoEscenarioMNC();
278
279    void restarIdentidadAn(QTableWidget *);
280    void titleEndogena(QTableWidget *);
281
282    void calcularMaT();
283    void calcularPHCIncidencia100(QTableWidget *);
284    void calcularPHCIncidenciaI(QTableWidget *, QMap<QString, double>);
285    void calcularPHCIncidenciaIComponente(QTableWidget *,QTableWidget *);
286
287    void calcularMbT();
288    void calcularMb();
289    void calcularPHNCIncidencia100(QTableWidget *);
290    void calcularVectorSend(QString componente, QVector<double> &);
291    void multiplicarMatricesPNH(QTableWidget *, QVector<double>);
292    void calcularPNHIncidencia100(QTableWidget *, Eigen::MatrixXd Diagonal);
293    void crearFormularioPNH();
294    QStringList obtenerCuentas();
295
296    //Función estimar los vectores fila y columna para la clasificación en los encadenamientos
297    void estimarVIFVC();
298    //Función para estimar la clasificación de las cuentas por CW o Rassmusen
299    void estimarClasificador(double &, double &, int index, double total = 0);
300    //Función para determinar los clasificadores
301    void determinarClasificador(QTableWidget *, int index_table, int element, double total = 0);
302
303    //Función para validar la cuenta producto/actividad
304    bool validarDescomposicion(QStringList);
305
306    //Funciones referentes a la descomposicion
307    void calcularA0(QVector<double>);
308    void calcularAuxiliares();
309    void calcularMatricesDescomposicion();
310    //Funciones referentes al impacto a corto plazo
311    Eigen::MatrixXd obtenerMatriz(QString);
312
313    //Funcion para crear una nueva pestaña
314    void createTab(QString , QTableWidget *,bool current=false);
315
316    bool ComprobarCuentas();
317    int ObtenerIndice(QString );
318
319    QStringList ObtenerNombreCuenta(int contador);
320    QList<int> ObtenerLimitesCuenta(int contador,int opccion);
321
322protected:
323    void closeEvent(QCloseEvent *);
324
325private slots:
326    void slotNuevoProyecto();
327    void slotLoadMatrix();
328    void slotExportMatrix();
329
330    void slotFormLoadMatrixAccepted(const QString &, int, int);
331    void slotFormLoadMatrixClosed();
332    void slotOnlyaccount();
333    void slotOnlycomponent();
334
335    void AgregarCuenta();
336    void RestaurarCeldas();
337    void FinalizarCuentas();
338    void ModificarCuenta();
339    void slotCoeficienteHorizontal();
340    void slotCoeficienteVertical();
341    void slotAccChange();
342
343    //Slots para las variables exógenas
344    void slotVariableExogena();
345    void slotCloseExogena();
346    void slotAgregarExogena();
347    void slotFinalizarExogena();
348    void slotDeshacerExogena();
349
350    void slotMa();
351
352    //Slots para encadenamientos
353    void slotEncadenamientos();
354    void slotCloseEncadenamiento();
355    void slotAgregarEncadenamiento();
356    void slotVerEncadenamiento();
357
358    //Slots para reportes
359    void slotEncadenamientoReport();
360    void slotGenerarEncadenamientoReport(QString,bool);
361
362    //Slots para gráfico
363    void slotEncadenamientoGraphic();
364
365    //Slots para exportar
366    void slotCloseExport();
367    void slotSaveExport();
368    void slotSearchExport();
369
370    //Slots para el modelo clásico
371    void slotModeloClasico();
372    void calcularEscenario(int clasico = 0);
373    void finalizarEscenario();
374
375    //Slots para el modelo no clásico
376    void slotModeloNoClasico();
377    void calcularEscenarioNC();
378    void finalizarEscenarioNC();
379
380    //Slot para descomposicion
381    void slotDescomposicion();
382    void slotAgregarDescomposicion();
383    void slotCortoPlazoForm();
384    void slotAgregarCortoPlazo();
385    void calcularEscenarioImpacto();
386    void finalizarImpacto();
387
388    void slotCompararResultadosMNC();
389    void slotVerResultadoMNC();
390
391    void slotPHCIncidencia100();
392    void slotPHCIncidenciaiCuenta();
393    void slotCalcularPHCIncidenciaiCuenta();
394    void slotPHCIncidenciaiComponente();
395    void slotCalcularPHCIncidenciaiComponente();
396
397    void slotCompararResultados();
398    void slotVerResultado();
399
400    void slotPHNCIncidencia100();
401    void slotPHNCIncidenciaiCuenta();
402    void slotCalcularPHNCIncidenciaiCuenta();
403    void slotPHNCIncidenciaiComponente();
404    void slotCalcularPHNCIncidenciaiComponente();
405
406    void slotPNHIncudencia100();
407    void slotCloseformPNH();
408    void slotSelectPNH();
409    void slotPNHIncidenciaiCuenta();
410    void slotPNHIncidenciaiComponente();
411    void slotSelectPNHi();
412    void slotCalcularPNHIncidenciaiCuenta();
413    void slotSelectPNHic();
414    void slotCalcularPNHIncidenciaiComponente();
415
416    void slotSeleccionarTabla();
417
418    //Slots del menú de ayuda
419    void abrirManual();
420    void acercaDe();
421
422public:
423    MainWindow();
424    QString numberFormat(double &);
425};
426
427#endif // MAINWINDOW_H
Note: See TracBrowser for help on using the repository browser.