Esempio n. 1
0
        /// <summary>
        /// Método para consultar los datos completos de un registro de comisión agencia.
        /// </summary>
        /// <returns>Retorna un booleando indicando si el registro de comisión agencia existe.</returns>
        public bool Consultar()
        {
            DsComisionesAgencias ds = this.GetComisionesAgenciasDataSet();

            if (ds == null)
            {
                return(false);
            }

            DsComisionesAgencias.DatosRow dr = ds.Datos.FindByAgenciaIDConceptoComisionEntidadID(this.AgenciaID, this.ConceptoComisionEntidadID);
            if (dr == null)
            {
                return(false);
            }

            this.FechaAlta           = dr.FechaAlta;
            this.ComisionImporteFijo = dr.IsComisionImporteFijoNull() ? 0 : dr.ComisionImporteFijo;
            this.ComisionPorcentaje  = dr.IsComisionPorcentajeNull() ? 0 : dr.ComisionPorcentaje;
            this.BaseCalculo         = (SisPack.BaseCalculo)(dr.IsBaseCalculoIDNull() ? 0 : dr.BaseCalculoID);
            this.EstadoComision      = (SisPack.EstadoComision)dr.EstadoComisionID;

            return(true);
        }
        protected void dtgComisiones_Update(object sender, DataGridCommandEventArgs e)
        {
            this.dsComisionesAgencias = (DsComisionesAgencias)Session["dsComisionesAgenciasMasivo"];
            DsComisionesAgencias.DatosRow dr = (DsComisionesAgencias.DatosRow) this.dsComisionesAgencias.Datos.Rows[e.Item.DataSetIndex];

            RadioButton rbtPorcentaje = (RadioButton)e.Item.FindControl("rbtPorcentaje");

            if (rbtPorcentaje.Checked)
            {
                RequiredFieldValidator req;
                req         = (RequiredFieldValidator)((PlaceHolder)e.Item.FindControl("phValidBaseCalculo")).FindControl("ReqPorcentaje");
                req.Enabled = true;
                req.Validate();
                if (!req.IsValid)
                {
                    return;
                }

                BaseValidator valPtj = (BaseValidator)((PlaceHolder)e.Item.FindControl("phValidBaseCalculo")).FindControl("ValPorcentaje");
                valPtj.Enabled = true;
                valPtj.Validate();
                if (!valPtj.IsValid)
                {
                    return;
                }

                if (dr.ConfigurarConceptoComision)
                {
                    req         = (RequiredFieldValidator)((PlaceHolder)e.Item.FindControl("phValidBaseCalculo")).FindControl("ReqBaseCalculo");
                    req.Enabled = true;
                    req.Validate();
                    if (!req.IsValid)
                    {
                        return;
                    }
                }
            }
            else
            {
                RequiredFieldValidator req = (RequiredFieldValidator)((PlaceHolder)e.Item.FindControl("phValidBaseCalculo")).FindControl("ReqImporteFijo");
                req.Enabled = true;
                req.Validate();
                if (!req.IsValid)
                {
                    return;
                }

                BaseValidator valImp = (BaseValidator)((PlaceHolder)e.Item.FindControl("phValidBaseCalculo")).FindControl("ValImporteFijo");
                valImp.Enabled = true;
                valImp.Validate();
                if (!valImp.IsValid)
                {
                    return;
                }
            }

            Page.Validate();
            if (!Page.IsValid)
            {
                return;
            }

            IComisionAgencia comisionAgencia = ComisionAgenciaFactory.GetComisionAgencia();

            for (int j = lstAgencia.Items.Count - 1; j >= 0; j--)
            {
                if (lstAgencia.Items[j].Selected)
                {
                    comisionAgencia.AgenciasID.Add(Utiles.Validaciones.obtieneEntero(lstAgencia.Items[j].Value));
                }
            }

            comisionAgencia.ConceptoComisionEntidadID = dr.ConceptoComisionEntidadID;

            if (rbtPorcentaje.Checked)
            {
                comisionAgencia.ComisionPorcentaje  = dr.IsComisionPorcentajeNull() ? 0 : dr.ComisionPorcentaje;
                comisionAgencia.BaseCalculo         = (NegociosSisPackInterface.SisPack.BaseCalculo)(dr.IsBaseCalculoIDNull() || dr.ComisionPorcentaje == 0 ? 0 : dr.BaseCalculoID);
                comisionAgencia.ComisionImporteFijo = 0;

                //control de que la suma de porcentajes para ese concepto de comision no supere el maximo permitido
                if (dr.ConfigurarConceptoComision)
                {
                    //control de que la suma de porcentajes para ese concepto de comision no supere el maximo permitido
                    System.Data.DataRow[] drConceptoComisionEntidad = (System.Data.DataRow[]) this.dsConceptosComisionesEntidades.Tables[0].Select("ConceptoComisionEntidadID=" + dr.ConceptoComisionEntidadID);
                    if (drConceptoComisionEntidad.Length > 0)
                    {
                        if (Convert.ToInt32(drConceptoComisionEntidad[0]["EntidadComisionID"]) != 8) //hacemos el control si la entidad no es Andesmar
                        {
                            if (drConceptoComisionEntidad[0]["PorcentajeMaximo"] != System.DBNull.Value)
                            {
                                double porcentajeMaximo   = Convert.ToDouble(drConceptoComisionEntidad[0]["PorcentajeMaximo"]);
                                int    conceptoComisionID = Convert.ToInt32(drConceptoComisionEntidad[0]["ConceptoComisionID"]);
                                double suma = 0;

                                IConceptoComisionEntidad conceptoComisionEntidad = ConceptoComisionEntidadFactory.GetConceptoComisionEntidad();

                                foreach (DsComisionesAgencias.DatosRow drConceptoComisionAgencia in this.dsComisionesAgencias.Datos)
                                {
                                    conceptoComisionEntidad.ConceptoComisionEntidadID = drConceptoComisionAgencia.ConceptoComisionEntidadID;
                                    conceptoComisionEntidad.Consultar();

                                    if (((int)conceptoComisionEntidad.ConceptoComision) == conceptoComisionID && drConceptoComisionAgencia.ConceptoComisionEntidadID != dr.ConceptoComisionEntidadID && (int)conceptoComisionEntidad.EntidadComision != 8 /*8 = andesmar*/)
                                    {
                                        suma += drConceptoComisionAgencia.IsComisionPorcentajeNull() ? 0 : drConceptoComisionAgencia.ComisionPorcentaje;
                                    }
                                }
                                suma += dr.IsComisionPorcentajeNull() || (int)conceptoComisionEntidad.EntidadComision == 8 /*8 = andesmar*/ ? 0 : dr.ComisionPorcentaje;
                                if (suma > porcentajeMaximo)
                                {
                                    ((SisPacK.ErrorWeb) this.phErrores.Controls[0]).setMensaje("La sumatoria de los porcentajes de comisión para el concepto es mayor que el máximo permitido.");
                                    return;
                                }
                            }
                        }
                    }
                }
                else
                {
                    IConceptoFacturacion conceptoFacturacion = ConceptoFacturacionFactory.GetConceptoFacturacion();
                    conceptoFacturacion.GetOne(dr.ConceptoFacturacionID);

                    if (conceptoFacturacion.PorcentajeMaximoComision != null)
                    {
                        double porcentajeMaximo      = conceptoFacturacion.PorcentajeMaximoComision ?? 0;
                        int    conceptoFacturacionID = dr.ConceptoFacturacionID;
                        double suma = 0;

                        IConceptoComisionEntidad conceptoComisionEntidad = ConceptoComisionEntidadFactory.GetConceptoComisionEntidad();

                        foreach (DsComisionesAgencias.DatosRow drConceptoComisionAgencia in this.dsComisionesAgencias.Datos)
                        {
                            conceptoComisionEntidad.ConceptoComisionEntidadID = drConceptoComisionAgencia.ConceptoComisionEntidadID;
                            conceptoComisionEntidad.Consultar();

                            if (conceptoComisionEntidad.ConceptoFacturacionID == conceptoFacturacionID && drConceptoComisionAgencia.ConceptoComisionEntidadID != dr.ConceptoComisionEntidadID && (int)conceptoComisionEntidad.EntidadComision != 8 /*8 = andesmar*/)
                            {
                                suma += drConceptoComisionAgencia.IsComisionPorcentajeNull() ? 0 : drConceptoComisionAgencia.ComisionPorcentaje;
                            }
                        }
                        suma += dr.IsComisionPorcentajeNull() || (int)conceptoComisionEntidad.EntidadComision == 8 /*8 = andesmar*/ ? 0 : dr.ComisionPorcentaje;
                        if (suma > porcentajeMaximo)
                        {
                            ((SisPacK.ErrorWeb) this.phErrores.Controls[0]).setMensaje("La sumatoria de los porcentajes de comisión para el concepto es mayor que el máximo permitido.");
                            return;
                        }
                    }
                }
            }
            else
            {
                comisionAgencia.ComisionImporteFijo = dr.IsComisionImporteFijoNull() ? 0 : dr.ComisionImporteFijo;
                comisionAgencia.ComisionPorcentaje  = 0;
                comisionAgencia.BaseCalculo         = 0;

                //control de que la suma de importes fijos para ese concepto de comision no supere el maximo permitido
                if (dr.ConfigurarConceptoComision)
                {
                    //control de que la suma de importes fijos para ese concepto de comision no supere el maximo permitido
                    System.Data.DataRow[] drConceptoComisionEntidad = (System.Data.DataRow[]) this.dsConceptosComisionesEntidades.Tables[0].Select("ConceptoComisionEntidadID=" + dr.ConceptoComisionEntidadID);
                    if (drConceptoComisionEntidad.Length > 0)
                    {
                        if (Convert.ToInt32(drConceptoComisionEntidad[0]["EntidadComisionID"]) != 8) //hacemos el control si la entidad no es Andesmar
                        {
                            if (drConceptoComisionEntidad[0]["ImporteFijoMaximo"] != System.DBNull.Value)
                            {
                                double importeFijoMaximo  = Convert.ToDouble(drConceptoComisionEntidad[0]["ImporteFijoMaximo"]);
                                int    conceptoComisionID = Convert.ToInt32(drConceptoComisionEntidad[0]["ConceptoComisionID"]);
                                double suma = 0;

                                IConceptoComisionEntidad conceptoComisionEntidad = ConceptoComisionEntidadFactory.GetConceptoComisionEntidad();

                                foreach (DsComisionesAgencias.DatosRow drConceptoComisionAgencia in this.dsComisionesAgencias.Datos)
                                {
                                    conceptoComisionEntidad.ConceptoComisionEntidadID = drConceptoComisionAgencia.ConceptoComisionEntidadID;
                                    conceptoComisionEntidad.Consultar();

                                    if (((int)conceptoComisionEntidad.ConceptoComision) == conceptoComisionID && drConceptoComisionAgencia.ConceptoComisionEntidadID != dr.ConceptoComisionEntidadID && (int)conceptoComisionEntidad.EntidadComision != 8 /*8 = andesmar*/)
                                    {
                                        suma += drConceptoComisionAgencia.IsComisionImporteFijoNull() ? 0 : drConceptoComisionAgencia.ComisionImporteFijo;
                                    }
                                }
                                suma += dr.IsComisionImporteFijoNull() || (int)conceptoComisionEntidad.EntidadComision == 8 /*8 = andesmar*/ ? 0 : dr.ComisionImporteFijo;
                                if (suma > importeFijoMaximo)
                                {
                                    ((SisPacK.ErrorWeb) this.phErrores.Controls[0]).setMensaje("La sumatoria de los importes de comisión para el concepto es mayor que el máximo permitido.");
                                    return;
                                }
                            }
                        }
                    }
                }
                else
                {
                    // control de que la suma de porcentajes para ese concepto de facturación no supere el maximo permitido
                    IConceptoFacturacion conceptoFacturacion = ConceptoFacturacionFactory.GetConceptoFacturacion();
                    conceptoFacturacion.GetOne(dr.ConceptoFacturacionID);


                    if (conceptoFacturacion.ImporteMaximoComision != null)
                    {
                        double importeFijoMaximo     = conceptoFacturacion.ImporteMaximoComision ?? 0;
                        int    conceptoFacturacionID = dr.ConceptoFacturacionID;
                        double suma = 0;

                        IConceptoComisionEntidad conceptoComisionEntidad = ConceptoComisionEntidadFactory.GetConceptoComisionEntidad();

                        foreach (DsComisionesAgencias.DatosRow drConceptoComisionAgencia in this.dsComisionesAgencias.Datos)
                        {
                            conceptoComisionEntidad.ConceptoComisionEntidadID = drConceptoComisionAgencia.ConceptoComisionEntidadID;
                            conceptoComisionEntidad.Consultar();

                            if (conceptoComisionEntidad.ConceptoFacturacionID == conceptoFacturacionID && drConceptoComisionAgencia.ConceptoComisionEntidadID != dr.ConceptoComisionEntidadID && (int)conceptoComisionEntidad.EntidadComision != 8 /*8 = andesmar*/)
                            {
                                suma += drConceptoComisionAgencia.IsComisionImporteFijoNull() ? 0 : drConceptoComisionAgencia.ComisionImporteFijo;
                            }
                        }
                        suma += dr.IsComisionImporteFijoNull() || (int)conceptoComisionEntidad.EntidadComision == 8 /*8 = andesmar*/ ? 0 : dr.ComisionImporteFijo;
                        if (suma > importeFijoMaximo)
                        {
                            ((SisPacK.ErrorWeb) this.phErrores.Controls[0]).setMensaje("La sumatoria de los importes de comisión para el concepto es mayor que el máximo permitido.");
                            return;
                        }
                    }
                }
            }

            if (comisionAgencia.EstadoComision == NegociosSisPackInterface.SisPack.EstadoComision.Ninguno)
            {
                comisionAgencia.EstadoComision = NegociosSisPackInterface.SisPack.EstadoComision.Habilitada;
            }

            try
            {
                string script = "";
                if (comisionAgencia.GuardarMasivo(usuario))
                {
                    this.dtgComisiones.EditItemIndex      = -1;
                    Session["dsComisionesAgenciasMasivo"] = null;
                    this.BindGrilla();
                    this.txtRazonSocialBusqueda.Text = string.Empty;
                    BuscarAgencias();

                    script += "			alert('Los datos se guardaron correctamente.');\n";;
                    ScriptManager.RegisterClientScriptBlock(this.UpdatePanel1,
                                                            UpdatePanel1.GetType(),
                                                            "muestraMensaje",
                                                            script,
                                                            true);
                }
                else
                {
                    script += "			alert('Los datos no se guardaron debido a errores.');\n";;
                    ScriptManager.RegisterClientScriptBlock(this.UpdatePanel1,
                                                            UpdatePanel1.GetType(),
                                                            "muestraMensaje",
                                                            script,
                                                            true);
                }
            }
            catch (Exception ex)
            {
                string mensaje = ex.Message;
                try
                {
                    mensaje = this.TraducirTexto(ex.Message);
                    if (mensaje == "" || mensaje == null)
                    {
                        mensaje = ex.Message;
                    }
                }
                catch (Exception)
                {
                    mensaje = ex.Message;
                }
                ((SisPacK.ErrorWeb) this.phErrores.Controls[0]).setMensaje(mensaje);
            }
        }
        private void dtgComisiones_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
        {
            if (e.Item.ItemType == ListItemType.EditItem)
            {
                RadioButton rbtPorcentaje = (RadioButton)e.Item.FindControl("rbtPorcentaje");
                rbtPorcentaje.Attributes.Add("onclick", "ChangeTipoImporte();");

                RadioButton rbtImporteFijo = (RadioButton)e.Item.FindControl("rbtImporteFijo");
                rbtImporteFijo.Attributes.Add("onclick", "ChangeTipoImporte();");

                DropDownList ddlBaseCalculo = (DropDownList)e.Item.FindControl("ddlBaseCalculo");
                SisPackController.LlenarCombos.BaseCalculo(ddlBaseCalculo, this.TraducirTexto("Combos.ElijaBaseCalculo"));

                PlaceHolder ph = (PlaceHolder)e.Item.FindControl("phValidBaseCalculo");
                ph.Controls.Add(GenerarValidadores.Requerido("txtPorcentaje", this.TraducirTexto("Errores.Obligatorios.Porcentaje"), false, "ReqPorcentaje"));
                ph.Controls.Add(GenerarValidadores.Porcentaje("txtPorcentaje", this.TraducirTexto("Errores.Invalidos.Porcentaje"), false, "ValPorcentaje"));
                ph.Controls.Add(GenerarValidadores.Requerido("ddlBaseCalculo", this.TraducirTexto("Errores.Obligatorios.BaseCalculo"), false, "ReqBaseCalculo"));
                ph.Controls.Add(GenerarValidadores.Requerido("txtImporteFijo", this.TraducirTexto("Errores.Obligatorios.Importe"), false, "ReqImporteFijo"));
                ph.Controls.Add(GenerarValidadores.Decimal("txtImporteFijo", this.TraducirTexto("Errores.Invalidos.Importe"), false, "ValImporteFijo"));

                DsComisionesAgencias.DatosRow dr = (DsComisionesAgencias.DatosRow)((DataRowView)e.Item.DataItem).Row;

                rbtPorcentaje.Checked        = dr.TipoImporte == "Porcentaje";
                ddlBaseCalculo.SelectedValue = (dr.IsBaseCalculoIDNull() || dr.BaseCalculoID == 0) ? string.Empty : dr.BaseCalculoID.ToString();
                rbtImporteFijo.Checked       = dr.TipoImporte == "ImporteFijo";

                if (dr.IsConfigurarConceptoComisionNull() == false && dr.ConfigurarConceptoComision)
                {
                    ddlBaseCalculo.Style.Add("visibility", "visible");
                }
                else
                {
                    ddlBaseCalculo.Style.Add("visibility", "hidden");
                }

                rbtPorcentaje.InputAttributes.Add("data-baseCalculo", ddlBaseCalculo.ClientID);
                rbtPorcentaje.InputAttributes.Add("data-porcentaje", ((TextBox)e.Item.FindControl("txtPorcentaje")).ClientID);
                rbtPorcentaje.InputAttributes.Add("data-valPtj", ((PlaceHolder)e.Item.FindControl("phValidBaseCalculo")).FindControl("ReqPorcentaje").ClientID);
                rbtPorcentaje.InputAttributes.Add("data-importeFijo", ((TextBox)e.Item.FindControl("txtImporteFijo")).ClientID);
                rbtPorcentaje.InputAttributes.Add("data-reqImpF", ((PlaceHolder)e.Item.FindControl("phValidBaseCalculo")).FindControl("ReqImporteFijo").ClientID);
                rbtPorcentaje.InputAttributes.Add("data-valImpF", ((PlaceHolder)e.Item.FindControl("phValidBaseCalculo")).FindControl("ReqImporteFijo").ClientID);
                rbtImporteFijo.InputAttributes.Add("data-importeFijo", ((TextBox)e.Item.FindControl("txtImporteFijo")).ClientID);
                rbtImporteFijo.InputAttributes.Add("data-valImpF", ((PlaceHolder)e.Item.FindControl("phValidBaseCalculo")).FindControl("ReqImporteFijo").ClientID);
                rbtImporteFijo.InputAttributes.Add("data-baseCalculo", ddlBaseCalculo.ClientID);
                rbtImporteFijo.InputAttributes.Add("data-porcentaje", ((TextBox)e.Item.FindControl("txtPorcentaje")).ClientID);
                rbtImporteFijo.InputAttributes.Add("data-reqPtj", ((PlaceHolder)e.Item.FindControl("phValidBaseCalculo")).FindControl("ReqPorcentaje").ClientID);
                rbtImporteFijo.InputAttributes.Add("data-valPtj", ((PlaceHolder)e.Item.FindControl("phValidBaseCalculo")).FindControl("ValPorcentaje").ClientID);
                rbtImporteFijo.InputAttributes.Add("data-reqBC", ((PlaceHolder)e.Item.FindControl("phValidBaseCalculo")).FindControl("ReqBaseCalculo").ClientID);
            }

            /* ESTO IRÍA PARA COLOREAR LA COMISION QUE SE HAYA DEFINIDO EN ESTE NIVEL, CHEQUEAR, PORQUE NO SE SI ESTÁ COLOREANDO TODO
             * LO QUE DEBERÍA........ES UN NUEVO REQUISITO PARA LA ETAPA 3
             * else if (e.Item.ItemType == ListItemType.Item)
             * {
             * DsComisionesAgencias.DatosRow dr = (DsComisionesAgencias.DatosRow)((DataRowView)e.Item.DataItem).Row;
             *
             * if (dr.AgenciaID > 0)
             * {
             *    e.Item.BackColor = System.Drawing.Color.Red;
             * }
             * }
             */
        }