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
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    QMap<QString,QVector<double> > totalCuentasEncadenamiento;
126
127    QStringList ComponentesEndogenos;
128
129    QTableWidget *MatrizExgEnd;
130
131    stackVariablesExogenas *stackVE;
132    stackEncadenamientos *stackEncadenamiento;
133    StackPreciosNoHomogeneos *stackPNH;
134
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
145    Eigen::MatrixXd MatrixMa;
146    Eigen::MatrixXd MatrixMb;
147    Eigen::MatrixXd MatrizMat;
148    Eigen::MatrixXd MatrizMbt;
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;
157
158    QString csvFilePath;
159    char csvSeparator;
160    int numAccounts;
161    int matrixSize;
162    int precission;
163
164    QString componentePNH;
165
166    Eigen::MatrixXd MatrizEndogenaEndogena;
167
168    int opcionCuentaExogena;
169    int opcionVentanaExogena;
170    int opcionExportarMatriz;
171    int opcionEncadenamientos;
172    int opcionCuentaEncadenamientos;
173    int opcionMa;
174    int opcionMb;
175    int opcionFormCompararResultados;
176    int opcionFormCompararResultadosMNC;
177    int opcionMAT;
178    int opcionMBT;
179    int opcionPNHT;
180    int opcionFormPNH;
181
182    QVector<double> subtotalEnd;
183    QVector<double> subtotalExog;
184    QVector<double> subtotalExogEnd;
185    QVector<double> Vpond;
186    //Son los vectores que almacenrán los totales del vectorFila y vectorColumna para An
187    QVector<double> vFila;
188    QVector<double> vColumna;
189
190    int cantidadSelecciones;
191    int cantidadEncadenamientos;
192    int cantidadEscenarios;
193    int cantidadResultados;
194    int cantidadMNC;//Cantidad de Modelos No Clasicos
195    int cantidadResultadosMNC;
196    //Cantidad de resultados de incidencia en modelo de precios homogéneos clásico
197    int cantidadPHCindidenciaiCuenta;
198    int cantidadPHCindidenciaiComponente;
199    //Cantidad de resultados de incidencia en modelo de precios homogéneos no clásico
200    int cantidadPHNCindidenciaiCuenta;
201    int cantidadPHNCindidenciaiComponente;
202    //Cantidad de resultados de incidencia en modelo de precios no homogéneos
203    int cantidadPNHincidencia100;
204    int cantidadPNHincidenciaiCuenta;
205    int cantidadPNHincidenciaiComponente;
206    //Cantidad de impactos a corto plazo
207    int cantidadImpactos;
208
209    FormLoadMatrix * formLoadMatrix;
210    FormMatrixView * formViewMatrix;
211    FormVariablesExogenas * formVariablesExogenas;
212    FormExportMatrix * formExportMatriz;
213    FormEncadenamientos * formEncadenamientos;
214    FormCompararResultados *formCompararResultados;
215    FormCompararMNC *formCompararMNC;
216    FormIncidenciaI *FI;
217    FormPreciosNoHomogeneos * formPreciosNoHomogeneos;
218    FormDescomposicion *formdescomposicion;
219    FormCortoPlazo *formcortoplazo;
220
221    void initGUI();
222
223    void createCentralWidget();
224    void createMatrixCentralWidget();
225    void loadsAccounts(QTableWidget *);
226    void hideStackedWidget();
227
228    void createMenuBar();
229    void matricesMenuBar();
230    void populateTable(QTableWidget *);
231
232    void CalcularTotales(QTableWidget *, int inicio, bool &);
233    void TotalPrincipalTable(QTableWidget *, Eigen::MatrixXd & , int init);
234    bool comprobarNombreCuenta(QString, int indice);
235    void clonarTabla(QTableWidget *,QTableWidget *, int cantidad);
236    void setAccountTitle(QTableWidget *);
237    void insertremoveRowCol(QTableWidget *, int rowcol, bool opcion);
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);
243
244    void TotalEndoExoTable(int elementos, int cantidad);
245
246    void setEndogenaExogenaCell(QTableWidget *, int inicioExogena, int elementos,bool condicion);
247    void CalcularAn(QTableWidget *, QTableWidget *, QTableWidget *, int count, bool endogena = false);
248    QString Separador(QTableWidgetItem *,bool quitar);
249    void EndogenaAn();
250
251    void calcularTotalCuentas(QTableWidget *);
252    void estimarVectorPonderacion();
253
254    void obtenerCuentaComponentes();
255    void crearMatrizEncadenamiento(QTableWidget *, QTableWidget *);
256    void crearMatrizEncadenamientoEndogena(QTableWidget *, QTableWidget *, Eigen::MatrixXd Matrix);
257    void calcularTotalesEncadenamientos(QTableWidget *);
258    void cuentacomponentesEncadenamiento(QTableWidget *, int count);
259
260    void calcularSubtotal(QTableWidget *,int inicio, int fin,int exogena);
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);
264    QStringList obtenerNombreResultadoEscenario();
265    void cuentacomponentesResultado(QTableWidget *, int count, bool clasico = true);
266
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 *);
273    void calcularSubtotalEndExg();
274    QVector<double> obtenerResultadoEscenarioMNC(QVector<double>);
275    void calcularFinEscenarioMNC(QTableWidget *);
276    QStringList obtenerNombreResultadoEscenarioMNC();
277
278    void restarIdentidadAn(QTableWidget *);
279    void titleEndogena(QTableWidget *);
280
281    void calcularMaT();
282    void calcularPHCIncidencia100(QTableWidget *);
283    void calcularPHCIncidenciaI(QTableWidget *, QMap<QString, double>);
284    void calcularPHCIncidenciaIComponente(QTableWidget *,QTableWidget *);
285
286    void calcularMbT();
287    void calcularMb();
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();
293    QStringList obtenerCuentas();
294
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
298    void estimarClasificador(double &, double &, int index, QString nombre);
299    //Función para determinar los clasificadores
300    void determinarClasificador(QTableWidget *, int index_table, int element, QString nombre);
301
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();
309    //Funciones referentes al impacto a corto plazo
310    Eigen::MatrixXd obtenerMatriz(QString);
311
312    //Funcion para crear un diccionario con los totales por cuenta en Ma
313    void totalesEncadenamientoMa();
314
315    //Funcion para crear una nueva pestaña
316    void createTab(QString , QTableWidget *,bool current=false);
317
318    bool ComprobarCuentas();
319    int ObtenerIndice(QString );
320
321    QStringList ObtenerNombreCuenta(int contador);
322    QList<int> ObtenerLimitesCuenta(int contador,int opccion);
323
324protected:
325    void closeEvent(QCloseEvent *);
326
327private slots:
328    void slotNuevoProyecto();
329    void slotLoadMatrix();
330    void slotExportMatrix();
331
332    void slotFormLoadMatrixAccepted(const QString &, int, int);
333    void slotFormLoadMatrixClosed();
334    void slotOnlyaccount();
335    void slotOnlycomponent();
336
337    void AgregarCuenta();
338    void RestaurarCeldas();
339    void FinalizarCuentas();
340    void ModificarCuenta();
341    void slotCoeficienteHorizontal();
342    void slotCoeficienteVertical();
343    void slotAccChange();
344
345    //Slots para las variables exógenas
346    void slotVariableExogena();
347    void slotCloseExogena();
348    void slotAgregarExogena();
349    void slotFinalizarExogena();
350    void slotDeshacerExogena();
351
352    void slotMa();
353
354    //Slots para encadenamientos
355    void slotEncadenamientos();
356    void slotCloseEncadenamiento();
357    void slotAgregarEncadenamiento();
358    void slotVerEncadenamiento();
359
360    //Slots para reportes
361    void slotEncadenamientoReport();
362    void slotGenerarEncadenamientoReport(QString,bool);
363
364    //Slots para gráfico
365    void slotEncadenamientoGraphic();
366
367    //Slots para exportar
368    void slotCloseExport();
369    void slotSaveExport();
370    void slotSearchExport();
371
372    //Slots para el modelo clásico
373    void slotModeloClasico();
374    void calcularEscenario(int clasico = 0);
375    void finalizarEscenario();
376
377    //Slots para el modelo no clásico
378    void slotModeloNoClasico();
379    void calcularEscenarioNC();
380    void finalizarEscenarioNC();
381
382    //Slot para descomposicion
383    void slotDescomposicion();
384    void slotAgregarDescomposicion();
385    void slotCortoPlazoForm();
386    void slotAgregarCortoPlazo();
387    void calcularEscenarioImpacto();
388    void finalizarImpacto();
389
390    void slotCompararResultadosMNC();
391    void slotVerResultadoMNC();
392
393    void slotPHCIncidencia100();
394    void slotPHCIncidenciaiCuenta();
395    void slotCalcularPHCIncidenciaiCuenta();
396    void slotPHCIncidenciaiComponente();
397    void slotCalcularPHCIncidenciaiComponente();
398
399    void slotCompararResultados();
400    void slotVerResultado();
401
402    void slotPHNCIncidencia100();
403    void slotPHNCIncidenciaiCuenta();
404    void slotCalcularPHNCIncidenciaiCuenta();
405    void slotPHNCIncidenciaiComponente();
406    void slotCalcularPHNCIncidenciaiComponente();
407
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
418    void slotSeleccionarTabla();
419
420    //Slots del menú de ayuda
421    void abrirManual();
422    void acercaDe();
423
424public:
425    MainWindow();
426    QString numberFormat(double &);
427};
428
429#endif // MAINWINDOW_H
Note: See TracBrowser for help on using the repository browser.