protected void dtgComisiones_Update(object sender, DataGridCommandEventArgs e) { try { RadioButton rbtPorcentaje = (RadioButton)e.Item.FindControl("rbtPorcentaje"); if (rbtPorcentaje.Checked) { RequiredFieldValidator 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; } 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; } //this.dsComisionesVendedorUVenta = (DsComisionesVendedorUVenta)Session["dsComisionesVendedorUVenta"]; this.dsComisionesVendedorUVenta = (DsComisionesVendedorUVenta)this.dtgComisiones.DataSource; DsComisionesVendedorUVenta.DatosRow dr = (DsComisionesVendedorUVenta.DatosRow) this.dsComisionesVendedorUVenta.Datos.Rows[e.Item.DataSetIndex]; if (dr.MesDesde < 0) { throw new Exception("El mes inicial no es válido"); } if (dr.MesHasta < 0) { throw new Exception("El mes hasta no es válido"); } if (dr.MesDesde > dr.MesHasta) { throw new Exception("El mes inicial no puede ser mayor que el final"); } IComisionVendedorUVenta comisionVendedorUVenta = ComisionVendedorUVentaFactory.GetComisionVendedorUVenta(); comisionVendedorUVenta.VendedorID = Utiles.Validaciones.obtieneEntero(this.txtVendedorID.Text); //comisionVendedorUVenta.ConceptoComisionEntidadID = Utiles.Validaciones.obtieneEntero(((DropDownList)e.Item.FindControl("ddlConceptoComisionEntidad")).SelectedValue); //comisionVendedorUVenta.ConceptoComisionEntidadID = dr.ConceptoComisionEntidadID; int ccID = 0; int ecID = 0; if (this.txtConceptoComisionID.Text == "") { ccID = Utiles.Validaciones.obtieneEntero(((DropDownList)e.Item.FindControl("ddlConceptoComision")).SelectedValue); } else { ccID = Utiles.Validaciones.obtieneEntero(this.txtConceptoComisionID.Text); } if (this.txtEntidadComisionID.Text == "") { ecID = Utiles.Validaciones.obtieneEntero(((DropDownList)e.Item.FindControl("ddlEntidadComision")).SelectedValue); } else { ecID = Utiles.Validaciones.obtieneEntero(this.txtEntidadComisionID.Text); } IConceptoComisionEntidad cce = ConceptoComisionEntidadFactory.GetConceptoComisionEntidad(); System.Data.DataRow[] drCCE = (System.Data.DataRow[])cce.GetConceptosComisionesEntidadesDataSet().Datos.Select("ConceptoComisionID = " + ccID.ToString() + " AND EntidadComisionID=" + ecID.ToString()); comisionVendedorUVenta.ConceptoComisionEntidadID = Convert.ToInt32(drCCE[0]["ConceptoComisionEntidadID"]); comisionVendedorUVenta.MesDesde = Utiles.Validaciones.obtieneEntero(((TextBox)e.Item.FindControl("txtMesDesde")).Text); comisionVendedorUVenta.MesHasta = Utiles.Validaciones.obtieneEntero(((TextBox)e.Item.FindControl("txtMesHasta")).Text); comisionVendedorUVenta.ComisionVendedorUVentaID = Utiles.Validaciones.obtieneEntero(((Label)e.Item.FindControl("lblComisionVendedorUVentaID")).Text); if (rbtPorcentaje.Checked) { //comisionVendedorUVenta.ComisionPorcentaje = dr.IsComisionPorcentajeNull() ? 0 : dr.ComisionPorcentaje; comisionVendedorUVenta.ComisionPorcentaje = Utiles.Validaciones.obtieneDouble(((TextBox)e.Item.FindControl("txtPorcentaje")).Text); //comisionVendedorUVenta.BaseCalculoID = dr.IsBaseCalculoIDNull() || dr.ComisionPorcentaje == 0 ? 0 : dr.BaseCalculoID; comisionVendedorUVenta.BaseCalculoID = Utiles.Validaciones.obtieneEntero(((DropDownList)e.Item.FindControl("ddlBaseCalculo")).SelectedValue); //comisionVendedorUVenta.ComisionImporteFijo = 0; comisionVendedorUVenta.ComisionImporteFijo = 0; //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; if (comisionVendedorUVenta.BaseCalculoID == (int)NegociosSisPackInterface.SisPack.BaseCalculo.GananciaRedespacho && (conceptoComisionID != (int)NegociosSisPackInterface.SisPack.ConceptoComision.Redespacho || !(ecID == (int)NegociosSisPackInterface.SisPack.EntidadComision.Vendedor || ecID == (int)NegociosSisPackInterface.SisPack.EntidadComision.SupervisorGeneral || ecID == (int)NegociosSisPackInterface.SisPack.EntidadComision.SupervisorRegional))) { throw new Exception("La base de cálculo válida para el concepto " + NegociosSisPackInterface.SisPack.ConceptoComision.Redespacho.ToString() + " y la entidad " + NegociosSisPackInterface.SisPack.EntidadComision.Vendedor.ToString() + " es " + NegociosSisPackInterface.SisPack.BaseCalculo.GananciaRedespacho.ToString()); } IConceptoComisionEntidad conceptoComisionEntidad = ConceptoComisionEntidadFactory.GetConceptoComisionEntidad(); foreach (DsComisionesVendedorUVenta.DatosRow drConceptoComisionVendedorUVenta in this.dsComisionesVendedorUVenta.Datos) { conceptoComisionEntidad.ConceptoComisionEntidadID = drConceptoComisionVendedorUVenta.ConceptoComisionEntidadID; conceptoComisionEntidad.Consultar(); if (((int)conceptoComisionEntidad.ConceptoComision) == conceptoComisionID && drConceptoComisionVendedorUVenta.ConceptoComisionEntidadID != dr.ConceptoComisionEntidadID) { suma += drConceptoComisionVendedorUVenta.IsComisionPorcentajeNull() ? 0 : drConceptoComisionVendedorUVenta.ComisionPorcentaje; } } suma += dr.IsComisionPorcentajeNull() ? 0 : dr.ComisionPorcentaje; if (suma > porcentajeMaximo) { ((ErrorWeb)this.phErrores.Controls[0]).setMensaje(this.TraducirTexto("Errores.Invalidos.SumaPorcentajes")); return; } } } } } else { //comisionVendedorUVenta.ComisionImporteFijo = dr.IsComisionImporteFijoNull() ? 0 : dr.ComisionImporteFijo; comisionVendedorUVenta.ComisionImporteFijo = Utiles.Validaciones.obtieneDouble(((TextBox)e.Item.FindControl("txtImporteFijo")).Text); comisionVendedorUVenta.ComisionPorcentaje = 0; comisionVendedorUVenta.BaseCalculoID = 0; //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 (DsComisionesVendedorUVenta.DatosRow drConceptoComisionVendedorUVenta in this.dsComisionesVendedorUVenta.Datos) { conceptoComisionEntidad.ConceptoComisionEntidadID = drConceptoComisionVendedorUVenta.ConceptoComisionEntidadID; conceptoComisionEntidad.Consultar(); if (((int)conceptoComisionEntidad.ConceptoComision) == conceptoComisionID && drConceptoComisionVendedorUVenta.ConceptoComisionEntidadID != dr.ConceptoComisionEntidadID) { suma += drConceptoComisionVendedorUVenta.IsComisionImporteFijoNull() ? 0 : drConceptoComisionVendedorUVenta.ComisionImporteFijo; } } suma += dr.IsComisionImporteFijoNull() ? 0 : dr.ComisionImporteFijo; if (suma > importeFijoMaximo) { ((ErrorWeb)this.phErrores.Controls[0]).setMensaje(this.TraducirTexto("Errores.Invalidos.SumaImportes")); return; } } } } } if (comisionVendedorUVenta.EstadoComisionID == (int)NegociosSisPackInterface.SisPack.EstadoComision.Ninguno) { comisionVendedorUVenta.EstadoComisionID = (int)NegociosSisPackInterface.SisPack.EstadoComision.Habilitada; } try { char[] separador = { ',' }; string[] UVentaSel = this.txtUVentaID.Text.Split(separador); foreach (string unidadVta in UVentaSel) { comisionVendedorUVenta.UnidadVentaID = Convert.ToInt32(unidadVta); comisionVendedorUVenta.Guardar(usuario); } this.dtgComisiones.EditItemIndex = -1; Session["dsComisionesVendedorUVenta"] = null; this.BindGrilla(); this.txtConceptoComisionID.Text = ""; this.txtEntidadComisionID.Text = ""; } catch (Exception ex) { ManejaErrores(ex); } } catch (Exception ex) { ManejaErrores(ex); } }