source: mmcs/mainwindow.H @ f1e8de0

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

Agregado el total en los encadenamientos como double

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