public DataTable GetSelectDatoM(eDatoM o,out int total_column)
        {
            int DBtotRow = 0;
            DataTable dt = new DataTable();
            String[] column = {"FEC_INI","FEC_FIN","ANIO","DEVENGUE","CONTABLE","ABONO","PRIMA"};
            for(int i= 0;i<column.Length;i++){
                dt.Columns.Add(column[i]);
            }
            try
            {
                conexion.Open();
                SqlCommand sqlcmd = new SqlCommand();
                sqlcmd.Connection = conexion;
                sqlcmd.CommandType = CommandType.StoredProcedure;
                sqlcmd.CommandText = _db.sSelectDatoM;

                sqlcmd.Parameters.Clear();
                sqlcmd.Parameters.Add("@TIPO_INFO", SqlDbType.Char).Value = o._tipo_info;
                sqlcmd.Parameters.Add("@NRO_CONTRATO", SqlDbType.Char).Value = o._nro_Contrato;
                sqlcmd.Parameters.Add("@COD_RAMO", SqlDbType.Char).Value = o._cod_Ramo;
                sqlcmd.Parameters.Add("@COD_PRODUCTO", SqlDbType.Char).Value = o._cod_Producto;
                sqlcmd.Parameters.Add("@TOTAL_COLUMN", SqlDbType.Int).Direction = ParameterDirection.Output;

                SqlDataReader dr = sqlcmd.ExecuteReader();
                while (dr.Read())
                {
                    object[] obj = new object[7];
                    obj[0] = dr.GetDateTime(0);
                    obj[1] = dr.GetDateTime(1);
                    obj[2] = dr.GetInt32(2);
                    obj[3] = dr.GetInt32(3);
                    obj[4] = dr.GetInt32(4);
                    obj[5] = dr.GetDecimal(5);
                    obj[6] = dr.GetDecimal(6);
                    dt.Rows.Add(obj);
                }
                dr.Close();
                DBtotRow = (int)sqlcmd.Parameters["@TOTAL_COLUMN"].Value;
            }
            catch (Exception ex)
            {

            }
            finally
            {
                conexion.Close();
            }
            total_column = DBtotRow;
            return dt;
        }
        public DataTable GetSelectDatoMGrid(eDatoM o)
        {
            DataTable dt = new DataTable();
            String[] column = {"ID","MONTO","PRIMA"};
            for (int i = 0; i < column.Length; i++)
            {
                dt.Columns.Add(column[i]);
            }
            try
            {
                conexion.Open();
                SqlCommand sqlcmd = new SqlCommand();
                sqlcmd.Connection = conexion;
                sqlcmd.CommandType = CommandType.StoredProcedure;
                sqlcmd.CommandText = _db.sSelectDatoMGrid;

                sqlcmd.Parameters.Clear();
                sqlcmd.Parameters.Add("@NRO_CONTRATO", SqlDbType.VarChar).Value = o._nro_Contrato;
                sqlcmd.Parameters.Add("@TIPO_INFO", SqlDbType.Char).Value = o._tipo_info;
                sqlcmd.Parameters.Add("@MES_CONTABLE", SqlDbType.Int).Value = o._mes_Contable;
                sqlcmd.Parameters.Add("@COD_RAMO", SqlDbType.Char).Value = o._cod_Ramo;

                SqlDataReader dr = sqlcmd.ExecuteReader();
                while (dr.Read())
                {
                    Object[] obj = new Object[3];
                    obj[0] = dr.GetInt32(0);
                    obj[1] = dr.GetDecimal(1);
                    obj[2] = dr.GetDecimal(2);
                    dt.Rows.Add(obj);
                }
            }
            catch (Exception ex)
            {

            }
            finally
            {
                conexion.Close();
            }
            return dt;
        }
        protected void btn_detalle_Click(object sender, EventArgs e)
        {
            int tabSelected  = Int32.Parse(menuTabs.SelectedItem.Value);
            if (tabSelected == 0)
            {
                eDatoM edm = new eDatoM();
                edm._nro_Contrato = ddl_contrato_p.SelectedItem.Value;
                edm._tipo_info = "07";
                edm._cod_Producto = ddl_producto_p.SelectedItem.Value;
                edm._cod_Ramo = ddl_ramo_p.SelectedItem.Value;
                edm._anio_Vigente = anio_vigente_session;
                edm._mes_Vigente = mes_vigente_session;
                edm._Formato_Moneda = formato_moneda;

                bRegistroDatoVC ba = new bRegistroDatoVC();
                gvDatoM.Caption = "Registro "+ddl_ramo_p.SelectedItem.Text;
                gvDatoM.DataSource = ba.GetSelectdatoM(edm, out totalContable, out totalDevengue);
                gvDatoM.DataBind();
                Page.ClientScript.RegisterStartupScript(this.GetType(), "clientscript", "document.getElementById('divPopPup').style.visibility = 'visible';", true);
                lbl_totAbono.Text = totalContable;
                lbl_totDevengue.Text = totalDevengue;
            }
            else {

                eDatoM edm = new eDatoM();
                edm._nro_Contrato = ddl_contrato_ib.SelectedItem.Value;
                edm._tipo_info = "08";
                edm._cod_Producto = ddl_producto_ib.SelectedItem.Value;
                edm._cod_Ramo = ddl_ramo_ib.SelectedItem.Value;
                edm._mes_Vigente = mes_vigente_session;
                edm._Formato_Moneda = formato_moneda;

                bRegistroDatoVC ba = new bRegistroDatoVC();
                gvDatoM.Caption = "Registro "+ddl_ramo_ib.SelectedItem.Text;
                gvDatoM.DataSource = ba.GetSelectdatoM(edm, out totalContable, out totalDevengue);
                gvDatoM.DataBind();
                Page.ClientScript.RegisterStartupScript(this.GetType(), "clientscript", "document.getElementById('divPopPup').style.visibility = 'visible';", true);
                lbl_toto_Abono_ib.Text = totalContable;
                lbl_tot_devengue_ib.Text = totalDevengue;
            }
        }
        public Int32 SetEliminarDatoM(eDatoM o)
        {
            Int32 resp = 0;
            try
            {
                String query = "DELETE FROM DATO_M WHERE NRO_CONTRATO = " + o._nro_Contrato + " AND TIPO_INFO = " + o._tipo_info + " AND COD_RAMO = " + o._cod_Ramo + " AND MES_CONTABLE = " + o._mes_Contable;
                conexion.Open();
                SqlCommand sqlcmd = new SqlCommand();
                sqlcmd.Connection = conexion;
                sqlcmd.CommandType = CommandType.Text;
                sqlcmd.CommandText = query;

                resp = sqlcmd.ExecuteNonQuery();
            }
            catch (Exception ex)
            {

            }
            finally
            {
                conexion.Close();
            }
            return resp;
        }
        public Int32 SetActualizarDatoM(eDatoM o)
        {
            Int32 _bool = 0;
            try
            {
                conexion.Open();

                SqlCommand sqlcmd = new SqlCommand();
                sqlcmd.Connection = conexion;
                sqlcmd.CommandType = CommandType.StoredProcedure;
                sqlcmd.CommandText = _db.sSactualizarDatoM;

                sqlcmd.Parameters.Add("@IDE_DATA_M", SqlDbType.Int).Value = o._ide_Data_M;
                sqlcmd.Parameters.Add("@TIPO_INFO", SqlDbType.Char).Value = o._tipo_info;
                sqlcmd.Parameters.Add("@NRO_CONTRATO", SqlDbType.VarChar).Value = o._nro_Contrato;
                sqlcmd.Parameters.Add("@ANIO_VIGENTE", SqlDbType.Int).Value = o._anio_Vigente;
                sqlcmd.Parameters.Add("@COD_RAMO", SqlDbType.Char).Value = o._cod_Ramo;
                sqlcmd.Parameters.Add("@COD_PRODUCTO", SqlDbType.Char).Value = o._cod_Producto;
                sqlcmd.Parameters.Add("@MTO_ABONADO", SqlDbType.Decimal).Value = o._mto_Abonado;
                sqlcmd.Parameters.Add("@MTO_PRIMA_EST", SqlDbType.Decimal).Value = o._mto_Prima_Est;
                sqlcmd.Parameters.Add("@ESTADO", SqlDbType.Char).Value = o._estado;
                sqlcmd.Parameters.Add("@USU_MOD", SqlDbType.VarChar).Value = o._usu_mod;

                _bool = sqlcmd.ExecuteNonQuery();
            }

            catch (Exception ex)
            {

            }
            finally
            {
                conexion.Close();
            }
            return _bool;
        }
        //funciones de grabado de primas Y ibnr
        private Boolean SetInsertarDataM(Int32 tab_selected)
        {
            eContratoVC ecn = new eContratoVC();
            ecn._inicio = 0;
            ecn._fin = 1000000;
            ecn._orderby = "IDE_CONTRATO ASC";
            if(tab_selected == 0)
                ecn._nro_Contrato = ddl_contrato_p.SelectedItem.Value;
            else
                ecn._nro_Contrato = ddl_contrato_ib.SelectedItem.Value;
            ecn._estado = "A";

            bContratoVC bcn = new bContratoVC();
            List<eContratoVC> list = bcn.GetSelecionarContrato(ecn,out totalContrato);
            DateTime inicio_contrato = list[0]._fec_Ini_Vig;
            DateTime fin_contrato = list[0]._fec_Fin_Vig;

            Int32 mes_vigente = inicio_contrato.Month;

            bRegistroDatoVC dm = new bRegistroDatoVC();
            Int32 total_mes_contrato = dm.CalcularMesesDeDiferencia(inicio_contrato, fin_contrato);

            List<eDatoM> listdm = new List<eDatoM>();
            for (int m = 0; m <= total_mes_contrato; m++) {
                if (mes_vigente > 12) {
                    mes_vigente = 1;
                }
                eDatoM p = new eDatoM();
                if (tab_selected == 0)
                {
                    p._id_Empresa = Convert.ToInt32(Session["idempresa"]);
                    p._tipo_info = "07";
                    p._nro_Contrato = ddl_contrato_p.SelectedItem.Value;
                    p._anio_Vigente = anio_vigente_session;
                    p._mes_Vigente = SetCalculaMesDevengue(inicio_contrato.Year, inicio_contrato.Month, m, mes_vigente);
                    p._mes_Contable = SetConcatenarMesAnioContable();
                    p._cod_Ramo = ddl_ramo_p.SelectedItem.Value;
                    p._cod_Producto = ddl_producto_p.SelectedItem.Value;
                    p._mto_Abonado = 0.00m;
                    p._mto_Prima_Est = 0.00m;
                    p._Formato_Moneda = formato_moneda;
                    p._estado = "A";
                    p._usu_reg = Session["username"].ToString();
                }
                else {
                    p._id_Empresa = Convert.ToInt32(Session["idempresa"]);
                    p._nro_Contrato = ddl_contrato_ib.SelectedItem.Value;
                    p._tipo_info = "08";
                    p._anio_Vigente = anio_vigente_session;
                    p._mes_Vigente = SetCalculaMesDevengue(inicio_contrato.Year, inicio_contrato.Month, m, mes_vigente);
                    p._mes_Contable = SetConcatenarMesAnioContable();
                    p._cod_Ramo = ddl_ramo_ib.SelectedItem.Value;
                    p._cod_Producto = ddl_producto_ib.SelectedItem.Value;
                    p._mto_Abonado = 0.00m;
                    p._mto_Prima_Est = 0.00m;
                    p._estado = "A";
                    p._usu_reg = Session["username"].ToString();
                }

                listdm.Add(p);
                mes_vigente++;
            }
            if (dm.SetInsertarDatoM(listdm) > 0)
                return true;
            else
                return false;
        }
 private eDatoM SetEntityDatoM(Int32 tab_selected)
 {
     eDatoM p = new eDatoM();
     if (tab_selected == 0)
     {
         p._nro_Contrato = ddl_contrato_p.SelectedItem.Value;
         p._tipo_info = "07";
         p._mes_Contable = SetConcatenarMesAnioContable();
         p._cod_Ramo = ddl_ramo_p.SelectedItem.Value;
         p._Formato_Moneda = formato_moneda;
     }
     else {
         p._nro_Contrato = ddl_contrato_ib.SelectedItem.Value;
         p._tipo_info = "08";
         p._mes_Contable = SetConcatenarMesAnioContable();
         p._cod_Ramo = ddl_ramo_ib.SelectedItem.Value;
         p._Formato_Moneda = formato_moneda;
     }
     return p;
 }
        private void SetEliminarDatoM(Int32 tabIdex)
        {
            try
            {
                eDatoM edm = new eDatoM();
                if (tabIdex == 0)
                {
                    edm._nro_Contrato = ddl_contrato_p.SelectedItem.Value;
                    edm._tipo_info = "07";
                    edm._cod_Producto = ddl_producto_p.SelectedItem.Value;
                    edm._cod_Ramo = ddl_ramo_p.SelectedItem.Value;
                    edm._mes_Contable = SetConcatenarMesAnioContable();
                }
                else if (tabIdex == 1)
                {
                    edm._nro_Contrato = ddl_contrato_ib.SelectedItem.Value;
                    edm._tipo_info = "08";
                    edm._cod_Producto = ddl_producto_ib.SelectedItem.Value;
                    edm._cod_Ramo = ddl_ramo_ib.SelectedItem.Value;
                    edm._mes_Contable = SetConcatenarMesAnioContable();
                }

                bRegistroDatoVC brd = new bRegistroDatoVC();
                Int32 resp = brd.SetEliminarDatoM(edm);
                if (resp != 0)
                {
                    MessageBox(resp + " Registro (s) Eliminado (s) Correctamente");
                    if (tabIdex == 0)
                    {
                        gvPrima.DataSource = this.GetDatasourceGrid(edm, tabIdex);
                        gvPrima.DataBind();
                    }
                    else {
                        gvIbnr.DataSource = this.GetDatasourceGrid(edm, tabIdex);
                        gvIbnr.DataBind();
                    }
                }
                else
                {
                    MessageBox("Ocurrio un Error en el Servidor!");
                }
            }
            catch (Exception e)
            {
                MessageBox("ERROR =>" + e.Message);
            }
        }
 private DataTable GetDatasourceGrid(eDatoM o, Int32 tab_selected)
 {
     bRegistroDatoVC rdm = new bRegistroDatoVC();
     DataTable dtr = rdm.GetSelectDatoMGrid(o);
     return dtr;
 }
        protected void gvPrima_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
            eDatoM p = new eDatoM();
            GridViewRow row = gvPrima.Rows[e.RowIndex];

            p._id_Empresa = Convert.ToInt32(Session["idempresa"]);
            p._ide_Data_M = Convert.ToInt32(((TextBox)(row.Cells[2].Controls[0])).Text.ToString());
            p._tipo_info = "07";
            p._nro_Contrato = ddl_contrato_p.SelectedItem.Value;
            p._anio_Vigente = anio_vigente_session;
            p._mes_Contable = SetConcatenarMesAnioContable();
            p._cod_Ramo = ddl_ramo_p.SelectedItem.Value;
            p._cod_Producto = ddl_producto_p.SelectedItem.Value;
            p._mto_Abonado = Convert.ToDecimal(((TextBox)(row.Cells[3].Controls[0])).Text.ToString());
            p._mto_Prima_Est = Convert.ToDecimal(((TextBox)(row.Cells[4].Controls[0])).Text.ToString());
            p._Formato_Moneda = formato_moneda;
            p._estado = "A";
            p._usu_mod = Session["username"].ToString();

            gvPrima.EditIndex = -1;

            bRegistroDatoVC ba = new bRegistroDatoVC();
            Int32 resp = ba.SetActualizarDatoM(p);
            if (resp > 0)
            {
                gvPrima.DataSource = GetDatasourceGrid(p, 0);
                gvPrima.DataBind();
            }
        }
        public DataTable GetSelectdatoM(eDatoM ent,out String totalContable,out String totalDevengue)
        {
            Int32 total_column;
            dSqlRegistroDatoVC dm = new dSqlRegistroDatoVC();
            var dt = dm.GetSelectDatoM(ent, out total_column);

            DataTable piramide = new DataTable();
            if (dt.Rows.Count != 0)
            {
                //variables
                //String[] cabecera = {"INICIO","FIN","AÑO VIGENTE","MES DEVENGUE","MES CONTABLE","MONTO ABONADO","MTO PRIMA EST."};
                DataTable dtHidden = new DataTable();
                DateTime fec_fin_vig = Convert.ToDateTime(dt.Rows[0]["FEC_FIN"]);
                DateTime fec_ini_vig = Convert.ToDateTime(dt.Rows[0]["FEC_INI"]);

                //funcion de llenado de columnas dinamicas
                int anio_inicio, anio_fin;
                int mes_inicio, mes_fin,mes_devengue_inicial;
                int meses_del_contrat = (1 + CalcularMesesDeDiferencia(fec_ini_vig, fec_fin_vig));

                //int total
                anio_inicio = fec_ini_vig.Year;
                anio_fin = fec_fin_vig.Year;

                mes_fin = fec_fin_vig.Month;
                mes_inicio = fec_ini_vig.Month;

                //FOR PARA CALCULAR COLUMNAS DE LA TABLA
                for (int cl = 0; cl < total_column; cl++) {
                    if (mes_inicio > 12) {
                        mes_inicio = 1;
                    }

                    if (cl == 0)
                    {
                        piramide.Columns.Add(mes[0]);
                        dtHidden.Columns.Add("0");
                    }
                    piramide.Columns.Add(SetCalcularMesDevengueString(anio_inicio, fec_ini_vig.Month, cl, mes_inicio));
                    dtHidden.Columns.Add(SetCalculaMesDevengue(anio_inicio, fec_ini_vig.Month, cl, mes_inicio));
                    mes_inicio++;
                }
                piramide.Columns.Add(mes[13]);
                dtHidden.Columns.Add(mes[13]);

                object[] obj = new object[piramide.Columns.Count];

                /* Llena Grilla con datos resumen */
                mes_devengue_inicial = fec_ini_vig.Month;
                int nregistro = 0;
                /*for (int o = 1; o < (meses_del_contrat + 2); o++)
                {
                    obj[o] = String.Format(ent._Formato_Moneda, 0.00m).Substring(3);
                }*/
                int Max_filas = meses_del_contrat;
                for (int nfila = 0; nfila < Max_filas; nfila++)
                {
                    if (nregistro < dt.Rows.Count)
                    {
                        if(mes_devengue_inicial > 12)
                               mes_devengue_inicial = 1;

                        obj[0] = SetCalcularMesDevengueString(fec_ini_vig.Year, fec_ini_vig.Month, nfila, mes_devengue_inicial);
                        Decimal costo_fila = 0.00m;
                        for (int ncolumna = 1; ncolumna < (piramide.Columns.Count -1); ncolumna++)
                        {
                            if (nregistro < dt.Rows.Count)
                            {
                                if (Convert.ToString(dt.Rows[nregistro][4]) == Convert.ToString(dtHidden.Columns[ncolumna]))
                                {
                                    obj[ncolumna] = String.Format(ent._Formato_Moneda, Convert.ToDecimal(dt.Rows[nregistro][5])).Substring(3);
                                    obj[piramide.Columns.Count - 1] = String.Format(ent._Formato_Moneda, costo_fila += Convert.ToDecimal(dt.Rows[nregistro][5])).Substring(3);
                                    nregistro++;
                                }
                                else
                                {
                                    obj[ncolumna] = String.Format(ent._Formato_Moneda, 0.00m).Substring(3);
                                }
                            }
                            else
                            {
                                break;
                            }

                        }
                    }
                    else
                    {
                        break;
                    }
                    //if (nregistro >= dt.Rows.Count) {break; }

                    piramide.Rows.Add(obj);
                    mes_devengue_inicial++;
                }
                for (int rt = 1; rt < piramide.Columns.Count; rt++)
                {
                    obj[0] = "TOT ABONO";
                    Decimal suma = 0;
                    for (int ct = 0; ct < piramide.Rows.Count; ct++)
                    {
                        suma += Convert.ToDecimal(piramide.Rows[ct][rt]);
                    }
                    obj[rt] = String.Format(ent._Formato_Moneda, suma).Substring(3);
                }

                piramide.Rows.Add(obj);

                //calcular variable total del mes
                Decimal mes_devengue = 0;
                Decimal mes_contable = 0;
                String condicion_mes_vigente;
                if (ent._mes_Vigente < 10)
                {
                    condicion_mes_vigente = Convert.ToString(ent._anio_Vigente + "0" + ent._mes_Vigente);
                }
                else {
                    condicion_mes_vigente = Convert.ToString(ent._anio_Vigente +""+ ent._mes_Vigente);
                }

                for (int l = 0; l < dt.Rows.Count; l++) {
                    if (Convert.ToString(condicion_mes_vigente) == Convert.ToString(dt.Rows[l][4]))
                    {
                        mes_devengue += Convert.ToDecimal(dt.Rows[l][5]);
                    }
                }
                for (int f = 0; f < dt.Rows.Count; f++) {
                    if (Convert.ToString(condicion_mes_vigente) == Convert.ToString(dt.Rows[f][3]))
                    {
                        mes_contable += Convert.ToDecimal(dt.Rows[f][5]);
                    }
                }
                    //añadiendo valor a las variables de salida
                totalContable = String.Format(ent._Formato_Moneda, mes_contable).Substring(3);
                totalDevengue = String.Format(ent._Formato_Moneda, mes_devengue).Substring(3);
            }
            else {
                totalContable = "0";
                totalDevengue = "0";
            }
              return piramide;
        }
 public Int32 SetEliminarDatoM(eDatoM o)
 {
     dSqlRegistroDatoVC dm = new dSqlRegistroDatoVC();
     return dm.SetEliminarDatoM(o);
 }
 public Int32 SetActualizarDatoM(eDatoM o)
 {
     dSqlRegistroDatoVC dm = new dSqlRegistroDatoVC();
     return dm.SetActualizarDatoM(o);
 }
        public DataTable GetSelectDatoMGrid(eDatoM o)
        {
            int totalContrato;
            dSqlRegistroDatoVC dr = new dSqlRegistroDatoVC();
            DataTable dtm = dr.GetSelectDatoMGrid(o);
            DataTable dtedit = new DataTable();
            if (dtm.Rows.Count > 0)
            {
                eContratoVC ecn = new eContratoVC();
                ecn._inicio = 0;
                ecn._fin = 1000000;
                ecn._orderby = "IDE_CONTRATO ASC";
                ecn._nro_Contrato = o._nro_Contrato;
                ecn._estado = "A";

                bContratoVC bcn = new bContratoVC();
                List<eContratoVC> list = bcn.GetSelecionarContrato(ecn, out totalContrato);
                DateTime inicio_contrato = list[0]._fec_Ini_Vig;
                DateTime fin_contrato = list[0]._fec_Fin_Vig;

                Int32 mes_vigente = inicio_contrato.Month;

                for (int c = 0; c < 4; c++) {
                    dtedit.Columns.Add(column[c]);
                }
                for (int r = 0; r < dtm.Rows.Count; r++) {
                    if(mes_vigente > 12){
                        mes_vigente = 1;
                    }
                    Object[] row = new Object[dtedit.Columns.Count];
                    row[0] = SetCalcularMesDevengueString(inicio_contrato.Year, inicio_contrato.Month, r, mes_vigente);
                    for (int cl = 1; cl < dtedit.Columns.Count; cl++) {
                        if (cl == 1)
                            row[cl] = dtm.Rows[r][cl - 1];
                        else
                            row[cl] = String.Format(o._Formato_Moneda, Convert.ToDecimal(dtm.Rows[r][cl-1])).Substring(3);
                    }
                    dtedit.Rows.Add(row);
                    mes_vigente++;
                }
            }
            return dtedit;
        }