private void butTopes_Click(object sender, System.EventArgs e) { ITarifariosTopeCol tariTopes = tari.TopesCol; tariTopes.TarifarioID = tari.TarifarioID; string vol = ""; double importe, importeBultoExc; bool bul = false; bool bulKilo = false; bool isOK = true; /*SFE Se agrega validador de volumen para Bulto_Variable, a pedido de Carlos Marcon*/ if (tari.ValorizacionTarifario == SisPack.ValorizacionTarifario.Bulto || tari.ValorizacionTarifario == SisPack.ValorizacionTarifario.Bulto_Variable) { bul = true; } if (tari.ValorizacionTarifario == SisPack.ValorizacionTarifario.Bulto_Kilogramo) { bul = true; bulKilo = true; } // SFE: Borrar esto si no se usa. Es decir si no se muestra el excedente por bulto_variable // /*SFE Agregar Validador para Bulto Variable en el importe bulto excedente*/ // if(tari.ValorizacionTarifario == SisPack.ValorizacionTarifario.Bulto_Variable) // { // bulKilo = true; // } foreach (DataGridItem item in dtgTopesDisponibles.Items) { if (((CheckBox)item.FindControl("chkTopeDisp")).Checked) { if (bul) { BaseValidator valVolumen = (RegularExpressionValidator)((PlaceHolder)item.FindControl("phValidVol")).FindControl("valVolumen"); RequiredFieldValidator reqVolumen = (RequiredFieldValidator)((PlaceHolder)item.FindControl("phValidVol")).FindControl("reqVolumen"); valVolumen.Enabled = true; reqVolumen.Enabled = true; valVolumen.Validate(); reqVolumen.Validate(); if (!valVolumen.IsValid || !reqVolumen.IsValid) { isOK = false; } //} if (bulKilo) { BaseValidator valImporteBultoDisp = (RegularExpressionValidator)((PlaceHolder)item.FindControl("phValidImporteBultoDisp")).FindControl("valImporteBultoDisp"); RequiredFieldValidator reqImporteBultoDisp = (RequiredFieldValidator)((PlaceHolder)item.FindControl("phValidImporteBultoDisp")).FindControl("reqImporteBultoDisp"); valImporteBultoDisp.Enabled = true; reqImporteBultoDisp.Enabled = true; valImporteBultoDisp.Validate(); reqImporteBultoDisp.Validate(); if (!valImporteBultoDisp.IsValid || !reqImporteBultoDisp.IsValid) { isOK = false; } } } BaseValidator valImporteDisp = (RegularExpressionValidator)((PlaceHolder)item.FindControl("phValidImporteDisp")).FindControl("valImporteDisp"); RequiredFieldValidator reqImporteDisp = (RequiredFieldValidator)((PlaceHolder)item.FindControl("phValidImporteDisp")).FindControl("reqImporteDisp"); valImporteDisp.Enabled = true; reqImporteDisp.Enabled = true; valImporteDisp.Validate(); reqImporteDisp.Validate(); if (!valImporteDisp.IsValid || !reqImporteDisp.IsValid) { isOK = false; } } } if (!isOK) { return; } foreach (DataGridItem item in dtgTopesDisponibles.Items) { if (((CheckBox)item.FindControl("chkTopeDisp")).Checked) { importe = Convert.ToDouble(((TextBox)item.FindControl("txtImporteDisp")).Text); vol = ((TextBox)item.FindControl("txtVolumen")).Text; importeBultoExc = ((TextBox)item.FindControl("txtImporteBultoDisp")).Text == "" ? 0 : Convert.ToDouble(((TextBox)item.FindControl("txtImporteBultoDisp")).Text); ITarifarioTope oTariTope = tariTopes.AddTarifarioTope(); oTariTope.Tope.TopeID = Convert.ToInt32(dtgTopesDisponibles.DataKeys[item.DataSetIndex]); oTariTope.Tope.TopeKgHasta = Convert.ToInt32(((Label)item.FindControl("lblTopeKgHasta")).Text); /*SFE Asignar el item checkeado o no en la tabla TopesDisponibles*/ oTariTope.KgVariable = ((CheckBox)item.FindControl("chkTopeDispVar")).Checked; //oTariTope.Importe = Convert.ToDouble(((TextBox)item.FindControl("txtImporteDisp")).Text); if (bul) { oTariTope.Cm3Hasta = Convert.ToDouble(vol); } if (bulKilo) { oTariTope.ImporteBultoExc = importeBultoExc; } if (tari.TarifarioRefID != 0) { oTariTope.Importe = CalcularImporte(importe); if (bulKilo) { oTariTope.ImporteBultoExc = AdministrarTarifarios.CalcularImporte(importeBultoExc, tari.FactorAjuste, tari.PorcentajeAjuste, tari.ImporteAjuste); if (oTariTope.ImporteBultoExc < 0) { oTariTope.ImporteBultoExc = 0; } } } else { oTariTope.Importe = importe; if (bulKilo) { oTariTope.ImporteBultoExc = importeBultoExc; } } } } try { // Obtenemos el usuario que ejecuta la acción. IUsuarios usuarioConectado = UsuariosFactory.GetUsuario(); usuarioConectado.Login = this.UsuarioConectadoID; usuarioConectado.ConsultarByLogin(); tariTopes.Guardar(usuarioConectado.UsuarioID); this.BindGridTopesDisp(0); this.BindGridTopesTarif(0); //this.SetearPorTarifarioReferencia(); } catch (Exception ex) { throw ex; } Session["tarifario"] = tari; }
public static bool RecalcularImportesTarifarioRedespacho(ITarifario tariNuevo, int usuarioID) { //if (Clienteflete) //else{} ITarifario tariRef = TarifarioReDespachoFactory.GetTarifarioRedespacho("C"); ITarifariosTopeCol topesCol = tariNuevo.TopesCol; //Solo me interesa consultar los importes del tarifario de referencia //tariRef.TopesCol.TarifarioID = tariNuevo.TarifarioRefID; //tariRef.TopesCol.Consultar(); tariRef.TarifarioID = tariNuevo.TarifarioRefID; tariRef.Consultar(); bool esPorcentaje; if (tariNuevo.PorcentajeAjuste != 0) { esPorcentaje = true; } else { esPorcentaje = false; } //Calculo de importeKgExcedente para tarifario if (tariNuevo.FactorAjuste != "") { if (esPorcentaje) { if (tariNuevo.FactorAjuste == "+") { tariNuevo.ImporteKgExcedente = tariRef.ImporteKgExcedente + (tariRef.ImporteKgExcedente * (tariNuevo.PorcentajeAjuste / 100)); } else { tariNuevo.ImporteKgExcedente = tariRef.ImporteKgExcedente - (tariRef.ImporteKgExcedente * (tariNuevo.PorcentajeAjuste / 100)); if (tariNuevo.ImporteKgExcedente < 0) { tariNuevo.ImporteKgExcedente = 0; } } } else { if (tariNuevo.FactorAjuste == "+") { tariNuevo.ImporteKgExcedente = tariRef.ImporteKgExcedente + tariNuevo.ImporteAjusteKgExcedente; } else { tariNuevo.ImporteKgExcedente = tariRef.ImporteKgExcedente - tariNuevo.ImporteAjusteKgExcedente; if (tariNuevo.ImporteKgExcedente < 0) { tariNuevo.ImporteKgExcedente = 0; } } } } else { tariNuevo.ImporteKgExcedente = tariRef.ImporteKgExcedente; } //Iterar por la coleccion de importes de topes y asignar el importe que corresponda. for (int i = 0; i < topesCol.getCount(); i++) { //Recuperar el importe de Kg. Excedente del tope de referencia ITarifarioTope oTope = topesCol.GetTarifarioTope(i); ITarifarioTope oTopeRef = tariRef.TopesCol.GetTarifarioTopeByTopeID(oTope.Tope.TopeID); if (tariNuevo.FactorAjuste != "") { if (esPorcentaje) { if (tariNuevo.FactorAjuste == "+") { oTope.Importe = oTopeRef.Importe + (oTopeRef.Importe * (tariNuevo.PorcentajeAjuste / 100)); } else { oTope.Importe = oTopeRef.Importe - (oTopeRef.Importe * (tariNuevo.PorcentajeAjuste / 100)); if (oTope.Importe < 0) { oTope.Importe = 0; } } } else { if (tariNuevo.FactorAjuste == "+") { oTope.Importe = oTopeRef.Importe + tariNuevo.ImporteAjuste; } else { oTope.Importe = oTopeRef.Importe - tariNuevo.ImporteAjuste; if (oTope.Importe < 0) { oTope.Importe = 0; } } } } else { oTope.Importe = oTopeRef.Importe; } } /*try * { * * return true; * else * return false; * } * catch(Exception) * { * return false; * }*/ //Recalcular los importes del tarifario //Recorrer la col de zonastopes. Por cada Zona y tope, recuperar el importe del padre y aplicar try { if (tariNuevo.Guardar(usuarioID)) { if (tariNuevo.TopesCol.Guardar(usuarioID)) { return(true); } else { return(false); } } else { return(false); } } catch (Exception) { return(false); } }