Ejemplo n.º 1
0
        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;
            }
        }