source: mmcs/mainwindow.H @ b0c244f

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

Agregado el modulo de descomposicion

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