public static bool RecalcularImportesTarifarioCliente(ITarifarioClienteFlete tariFleteNuevo, int usuarioID) { ITarifarioFleteZona tariZonaRef = TarifarioFleteZonaFactory.GetTarifarioFleteZona(); tariZonaRef.TarifarioFleteZonaID = tariFleteNuevo.TarifarioFleteZonaReferenciaID; tariZonaRef.Consultar(); //ITarifarioFlete ITarifariosFleteZonaTopeCol zonasTopes = TarifarioFleteZonaTopeColFactory.GetTarifarioFleteZonaTopeCol(); zonasTopes.TarifarioFleteID = tariZonaRef.TarifarioFleteID; zonasTopes.Consultar(); bool esPorcentaje; if (tariFleteNuevo.PorcentajeAjuste != 0) { esPorcentaje = true; } else { esPorcentaje = false; } //Iterar por la coleccion de importes de topes y asignar el importe que corresponda. ITarifariosClienteFleteTopeCol topesCol = tariFleteNuevo.TopesCol; for (int i = 0; i < topesCol.getCount(); i++) { //Recuperar el importe de referencia de la coleccion de topes ITarifarioClienteFleteTope oTope = topesCol.GetTarifarioFleteTope(i); //ITarifarioFleteZona oZona = zonasCol.GetTarifarioFleteZona(i); ITarifarioFleteZonaTope oZonaTope = zonasTopes.ConsultarExisteByZonaTopeID(oTope.Tope.TopeID, tariZonaRef.Zona.ZonaID); //ITarifarioFleteZona oZonaRef = tariRef.ZonasCol.GetTarifarioFleteZonaByZonaID (oZona.Zona.ZonaID); if (tariFleteNuevo.FactorAjuste != "") { if (esPorcentaje) { if (tariFleteNuevo.FactorAjuste == "+") { //oZona.ImporteKgExcedente = oZonaRef.ImporteKgExcedente + (oZonaRef.ImporteKgExcedente * (tariFleteNuevo.PorcentajeAjuste/100)) ; oTope.Importe = oZonaTope.Importe + (oZonaTope.Importe * (tariFleteNuevo.PorcentajeAjuste / 100)); if (tariFleteNuevo.ValorizacionTarifario == SisPack.ValorizacionTarifario.Bulto_Kilogramo) { oTope.ImporteBultoExc = oZonaTope.ImporteBultoExc + (oZonaTope.ImporteBultoExc * (tariFleteNuevo.PorcentajeAjuste / 100)); } } else { oTope.Importe = oZonaTope.Importe - (oZonaTope.Importe * (tariFleteNuevo.PorcentajeAjuste / 100)); if (oTope.Importe < 0) { oTope.Importe = 0; } if (tariFleteNuevo.ValorizacionTarifario == SisPack.ValorizacionTarifario.Bulto_Kilogramo) { oTope.ImporteBultoExc = oZonaTope.ImporteBultoExc - (oZonaTope.ImporteBultoExc * (tariFleteNuevo.PorcentajeAjuste / 100)); if (oTope.ImporteBultoExc < 0) { oTope.ImporteBultoExc = 0; } } } } else { if (tariFleteNuevo.FactorAjuste == "+") { oTope.Importe = oZonaTope.Importe + tariFleteNuevo.ImporteAjuste; if (tariFleteNuevo.ValorizacionTarifario == SisPack.ValorizacionTarifario.Bulto_Kilogramo) { oTope.ImporteBultoExc = oZonaTope.ImporteBultoExc + tariFleteNuevo.ImporteAjuste; } } else { oTope.Importe = oZonaTope.Importe - tariFleteNuevo.ImporteAjuste; if (oTope.Importe < 0) { oTope.Importe = 0; } if (tariFleteNuevo.ValorizacionTarifario == SisPack.ValorizacionTarifario.Bulto_Kilogramo) { oTope.ImporteBultoExc = oZonaTope.ImporteBultoExc - tariFleteNuevo.ImporteAjuste; if (oTope.ImporteBultoExc < 0) { oTope.ImporteBultoExc = 0; } } } } } else { oTope.Importe = oZonaTope.Importe; if (tariFleteNuevo.ValorizacionTarifario == SisPack.ValorizacionTarifario.Bulto_Kilogramo) { oTope.ImporteBultoExc = oZonaTope.ImporteBultoExc; } } } try { if (tariFleteNuevo.Guardar(usuarioID)) { if (tariFleteNuevo.TopesCol.Guardar(usuarioID)) { return(true); } else { return(false); } } else { return(false); } } catch (Exception) { return(false); } }
private void butTopes_Click(object sender, System.EventArgs e) { ITarifariosClienteFleteTopeCol tariTopes = tariFlete.TopesCol; tariTopes.TarifarioClienteFleteID = tariFlete.TarifarioClienteFleteID; string vol = ""; bool bul = false; bool bulKilo = false; bool isOK = true; double importe, importeBultoExc; /*SFE Se agrega validador de volumen para Bulto_Variable, a pedido de Carlos Marcon*/ if (tariFlete.ValorizacionTarifario == SisPack.ValorizacionTarifario.Bulto || tariFlete.ValorizacionTarifario == SisPack.ValorizacionTarifario.Bulto_Variable) { bul = true; } if (tariFlete.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(tariFlete.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); ITarifarioClienteFleteTope oTariTope = tariTopes.AddTarifarioFleteTope(); 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 (tariFlete.TarifarioFleteZonaReferenciaID != 0) { oTariTope.Importe = AdministrarTarifarios.CalcularImporte(importe, tariFlete.FactorAjuste, tariFlete.PorcentajeAjuste, tariFlete.ImporteAjuste); if (bulKilo) { oTariTope.ImporteBultoExc = AdministrarTarifarios.CalcularImporte(importeBultoExc, tariFlete.FactorAjuste, tariFlete.PorcentajeAjuste, tariFlete.ImporteAjuste); if (oTariTope.ImporteBultoExc < 0) { oTariTope.ImporteBultoExc = 0; } } if (oTariTope.Importe < 0) { oTariTope.Importe = 0; } } else { oTariTope.Importe = importe; if (bulKilo) { oTariTope.ImporteBultoExc = importeBultoExc; } } } } // Obtenemos el usuario que ejecuta la acción. IUsuarios usuarioConectado = UsuariosFactory.GetUsuario(); usuarioConectado.Login = this.UsuarioConectadoID; usuarioConectado.ConsultarByLogin(); try { tariTopes.Guardar(usuarioConectado.UsuarioID); this.BindGridTopesDisp(0); this.BindGridTopesTarif(0); this.SetearPorTarifarioReferencia(); } catch (Exception ex) { throw ex; } Session["tarifario"] = tariFlete; }