public void CalcularImporteConTarifario(TarifarioConceptoFacturable tarifario) { // Calculo el importe if (tarifario.EsTarifarioImporteFijo == false) { Double cantExcedente = 0; // Busco el tope a utilizar ITarifarioConceptoFacturableTope _tope = (from t in tarifario.LstTopes where (t.Tope ?? 0) >= (Tope ?? 0) select t).OrderBy(x => x.Tope).FirstOrDefault(); if (_tope == null) { // No se encontro un tope. Esto quiere decir que se exede el máximo definido. Se trabaja con el máximo tope y se cobra el excedente _tope = tarifario.LstTopes.OrderBy(x => x.Tope).LastOrDefault(); cantExcedente = (Tope ?? 0) - (_tope.Tope ?? 0); } if (_tope != null) { //if (tarifario.TarifarioConceptoFacturableRefID == null) if (tarifario.TipoTarifarioConceptoFacturableID == (int)SisPack.TipoTarifarioConceptoFacturable.Tarifariosporbultos) { if (cantExcedente > 0) { Importe = (_tope.Valor * (Tope - cantExcedente) ?? 0); Importe = Importe + (cantExcedente * (tarifario.ValorTopeAdicional ?? 0)); } else { Importe = (_tope.Valor * Tope ?? 0); } } else { //Modificado para que tome la modificacion de medida adicional Importe = (_tope.Valor ?? 0) + (Math.Ceiling((Math.Round(cantExcedente, 4) / tarifario.MedidaAdicional ?? 1)) * (tarifario.ValorTopeAdicional ?? 0)); //Importe = (_tope.Valor ?? 0) + (cantExcedente * (tarifario.ValorTopeAdicional ?? 0)); //Importe = (_tope.ValorConVaricionTarifarioRef ?? 0) + (cantExcedente * (tarifario.ValorTopeAdicional ?? 0)); } } else { throw new Exception("Error en el tarifario. No se encontró un tope a utilizar"); } } else { // Se trata de un tarifario con importe fijo if (tarifario.TarifarioConceptoFacturableRefID == null) { Importe = tarifario.ValorImporteFijo ?? 0; } else { //tarifario.GetImporteFijoTarifarioReferencia(tarifario.TarifarioConceptoFacturableRefID ?? 0); Importe = tarifario.ValorImporteFijoAjustado ?? 0; } } }
protected void gvImportesTarifario_RowDeleting(object sender, GridViewDeleteEventArgs e) { //// Marco el item como que está dado de baja //foreach (DsTarifarioConceptoFacturable.TarifarioConceptoFacturableTopeRow dr in dsTarifario.TarifarioConceptoFacturableTope) //{ // // Busco el tope a eliminar // if (dr.Tope == Convert.ToInt32(e.Keys["Tope"])) // { // dsTarifario.TarifarioConceptoFacturableTopeBaja.AddTarifarioConceptoFacturableTopeBajaRow(dr.TarifarioConceptoFacturableID, dr.Tope); // dsTarifario.TarifarioConceptoFacturableTope.Rows.Remove(dr); // break; // } //} ITarifarioConceptoFacturableTope tope = (from t in tarifario.LstTopes where t.Tope == Convert.ToInt32(e.Keys["Tope"].ToString()) select t).FirstOrDefault(); if (tope != null) { if (tope.TarifarioConceptoFacturableTopeID != null) { tarifario.LstTopesEliminados.Add(TarifarioConceptoFacturableTopeFactory.GetTarifarioTope(tope.TarifarioConceptoFacturableTopeID, tope.TarifarioConceptoFacturableID, tope.Tope, tope.Valor, tope.Baja, tope.RegistroNuevo)); } tarifario.LstTopes.Remove(tope); } //// Marco el item como que está dado de baja //foreach (DsTarifarioConceptoFacturable.TarifarioConceptoFacturableTopeRow dr in dsTarifario.TarifarioConceptoFacturableTope) //{ // // Busco el tope a eliminar // if (dr.Tope == Convert.ToInt32(e.Keys["Tope"])) // { // dsTarifario.TarifarioConceptoFacturableTopeBaja.AddTarifarioConceptoFacturableTopeBajaRow(dr.TarifarioConceptoFacturableID, dr.Tope); // dsTarifario.TarifarioConceptoFacturableTope.Rows.Remove(dr); // break; // } //} // Vuelvo a cargar la grilla BindGrid(); }
protected void gvImportesTarifario_RowUpdating(object sender, GridViewUpdateEventArgs e) { try { String auxValor = e.NewValues["Valor"].ToString(); // Valido los datos if (auxValor == "") { throw new Exception("Debe ingresar un valor"); } else { try { Convert.ToDouble(auxValor); } catch { throw new Exception("Valor incorrecto"); } } // Actualizo el item ITarifarioConceptoFacturableTope tope = (from t in tarifario.LstTopes where t.Tope == Convert.ToInt32(e.Keys["Tope"].ToString()) select t).FirstOrDefault(); if (tope != null) { tope.Valor = Convert.ToDouble(e.NewValues["Valor"].ToString()); } // Termino la edición y actualizo la grilla gvImportesTarifario.EditIndex = -1; BindGrid(); } catch (Exception ex) { throw ex; } }