Exemplo n.º 1
0
        public override BaseNegocio CrearInstanciaHijo()
        {
            BaseNegocio b;

            b = new PresupuestoVersionDetalle();

            return(b);
        }
Exemplo n.º 2
0
        public override string Propiedad(string NombrePropiedad)
        {
            Decimal Total    = 0;
            double  Unidades = 0;
            string  est      = "";
            ColPresupuestoVersionDetalle cpvd;

            if (NombrePropiedad == "ESTILO_CSS")
            {
                return(CrearTablaHTMLTarifas.CSSTablaHTML);
            }

            if (NombrePropiedad == "TablaPresupuesto")
            {
                return((new CrearTablaHTMLTarifas()).CrearTabla(this));
            }

            if (NombrePropiedad == "Estado")
            {
                if ((bool)this["Principal"])
                {
                    est = "Principal";
                }
                else
                {
                    if ((bool)this["Ampliacion"])
                    {
                        est = "Ampliación";
                    }
                    else
                    {
                        est = "Versión";
                    }
                }

                if ((bool)this["Aceptado"])
                {
                    est += " - Aceptado";
                }

                return(est);
            }

            if (NombrePropiedad == "DescripcionCorta")
            {
                if ((bool)this["Principal"])
                {
                    est = "Principal";
                }
                else
                {
                    if ((bool)this["Ampliacion"])
                    {
                        est = "Ampliación";
                    }
                    else
                    {
                        est = "Versión";
                    }

                    est += " " + this["Version"].ToString();
                }

                return(est);
            }

            if (NombrePropiedad == "EsAmpliacionVersion")
            {
                if ((bool)this["Principal"])
                {
                    est = "";
                }
                else
                {
                    if ((bool)this["Ampliacion"])
                    {
                        est = "Ampliación " + this["Version"].ToString() + ". de tarifas unidades del presupuesto inicial: ";
                    }
                    else
                    {
                        est = "Versión " + this["Version"].ToString() + ". del presupuesto: ";
                    }
                }

                return(est);
            }

            if (NombrePropiedad == "NombreArchivoGenerado")
            {
                est = BaseSistemaNumeracion.DescripcionCodigoAnyoSinObra((BasePresupuesto)ObjetoAsociado("Presupuesto")).Replace('/', '_');

                if (!(bool)this["Principal"])
                {
                    if ((bool)this["Ampliacion"])
                    {
                        est += " Ampliación";
                    }
                    else
                    {
                        est += " Versión";
                    }

                    est += " " + this["Version"].ToString();
                }

                return("Presupuesto " + est);
            }

            if (NombrePropiedad == "SumaTotalPresupuesto")
            {
                //if (!(bool)this["Principal"])
                //{
                NombrePropiedad = "TotalVersionAceptado";
                //}
            }

            if (NombrePropiedad == "FechaEmision")
            {
                DateTime fe = new DateTime();

                if ((bool)this["Aceptado"])
                {
                    fe = (DateTime)this["FechaAceptacion"];
                }
                else
                {
                    fe = (DateTime)this["FechaEmision"];
                }

                return(Lib.FormateaFecha(fe));
            }

            if (NombrePropiedad == "FechaEmisionLarga")
            {
                DateTime fe = new DateTime();

                if ((bool)this["Aceptado"])
                {
                    fe = (DateTime)this["FechaAceptacion"];
                }
                else
                {
                    fe = (DateTime)this["FechaEmision"];
                }

                return(fe.Day.ToString() + " de " + fe.ToString("MMMM") + " de " + fe.Year.ToString());
            }

            if (NombrePropiedad == "TotalVersion" || NombrePropiedad == "TotalUnidades")
            {
                cpvd = (ColPresupuestoVersionDetalle)Coleccion("ColPresupuestoVersionDetalle");

                Total = cpvd.CalcularTotal(false, ref Unidades);

                if (NombrePropiedad == "TotalVersion")
                {
                    return(LCC.Negocio.Util.DarFormatoMonedaConDecimales(Total));
                }
                else
                {
                    return(Unidades.ToString("0.##"));
                }
            }
            if (NombrePropiedad == "TotalVersionAceptado" || NombrePropiedad == "TotalUnidadesAceptado" ||
                NombrePropiedad == "TotalConBonificacion")
            {
                cpvd = (ColPresupuestoVersionDetalle)Coleccion("ColPresupuestoVersionDetalle");

                Total = cpvd.CalcularTotal(true, ref Unidades);

                if (NombrePropiedad == "TotalVersionAceptado")
                {
                    return(LCC.Negocio.Util.DarFormatoMonedaConDecimales(Total));
                }
                else if (NombrePropiedad == "TotalConBonificacion")
                {
                    float porcentaje = (float)ObjetoAsociado("Presupuesto")["Descuento"];
                    if (porcentaje != 0)
                    {
                        decimal TotalConBonificacion = Total - ((Total * Lib.NoDecimalNulo(porcentaje)) / 100);
                        return("TOTAL PRESUPUESTO CON BONIFICACIÓN: " + LCC.Negocio.Util.DarFormatoMonedaConDecimales(TotalConBonificacion));
                    }
                }
                else
                {
                    return(Unidades.ToString("0.##"));
                }
            }

            //[Prop.Con1]	[Prop.NF1]	[Prop.Pr1]	[Prop.Importe1]     [Prop.Precio1]

            for (int p = 1; p <= 9; ++p)
            {
                if (NombrePropiedad == "Con" + p.ToString() || NombrePropiedad == "NF" + p.ToString() ||
                    NombrePropiedad == "Pr" + p.ToString() || NombrePropiedad == "Importe" + p.ToString() ||
                    NombrePropiedad == "Precio" + p.ToString())
                {
                    PresupuestoVersionDetalle det = null;

                    if (p <= Coleccion("ColPresupuestoVersionDetalle").Count)
                    {
                        det = (PresupuestoVersionDetalle)Coleccion("ColPresupuestoVersionDetalle")[p - 1];
                    }

                    if (det != null)
                    {
                        if (NombrePropiedad.StartsWith("NF"))
                        {
                            return(p.ToString());
                        }
                        if (NombrePropiedad.StartsWith("Con"))
                        {
                            return(det["Concepto"].ToString());
                        }
                        if (NombrePropiedad.StartsWith("Pr"))
                        {
                            return((det.TotalUnidades * 100).ToString("0") + "%");
                        }
                        if (NombrePropiedad.StartsWith("Importe"))
                        {
                            return(String.Format("{0:#,##0 €}", (decimal)det["Total"]));
                        }
                        if (NombrePropiedad.StartsWith("Precio"))
                        {
                            return(String.Format("{0:#,##0 €}", (decimal)det["Precio"]));
                        }
                    }

                    return("");
                }
            }

            return(ObjetoAsociado("Presupuesto").Propiedad(NombrePropiedad));
        }
Exemplo n.º 3
0
        /// <summary>
        /// Realiza llamadas a Métodos de la clase por nombre.
        /// Se pueden realizar cosas como pag.Response.Redirect para abrir otras ventanas.
        /// ErrorMensaje se presentará al usuario.
        /// </summary>
        /// <param name="pag">Objeto Pagina ASPX, mejorable.</param>
        /// <param name="Nombre">Nombre de Método.</param>
        public override void Metodo(System.Web.UI.Page pag, string Nombre)
        {
            if (Nombre == "DespuesDeModificarTarifas")
            {
                Presupuesto pres = (Presupuesto)ProveedorListas.ObjetoProveedorNegocio.RecuperaObjeto("Presupuesto", this["IDPresupuesto"].ToString());

                pres.Coleccion("ColPresupuestoYTarifa").Reset();
                pres.Coleccion("ColPresupuestoYTarifa").Usar();
                pres.Coleccion("ColPresupuestoVersion").Reset();
                pres.Coleccion("ColPresupuestoVersion").Usar();

                pres.Guardar();

                pres.ActualizarPresupuestoEnBaseAntigua(false, false, true);
            }

            if (Nombre == "ModificarConceptoPrecioTarifas")
            {
                // Importa el precio
                // Contar cuantas facturas existen con este IDPyT.
                bool   TieneFacturas            = false;
                bool   PasadasAcontabilidad     = false;
                bool   sePuedeModificarElPrecio = false;
                string ResultadoLog             = "";

                this.IDActual[0] = CambiarIDPyT;
                this.Leer();

                //El concepto se puede cambiar siempre
                string ConceptoAntiguo = (string)this["Concepto"];
                if (ConceptoAntiguo != CambiarConcepto)
                {
                    Datos.Instancia().executeSQL("UPDATE PresupuestoYTarifa SET Concepto = '" + CambiarConcepto.Replace("'", "''")
                                                 + "' WHERE IDPyT = " + this["IDPyT"].ToString());

                    ResultadoLog = "Presupuesto: " + this.ObjetoAsociado("Presupuesto").DescripcionNormal
                                   + ". Tarifa Modificada: " + this.ObjetoAsociado("Tarifa")["Codigo"].ToString();

                    ResultadoLog += ". Concepto Antiguo: " + ConceptoAntiguo.ToString()
                                    + ". Concepto Nuevo: " + CambiarConcepto.ToString();

                    mensajeMetodosModificar = "Se ha modificado el concepto. " + Datos.CRLF;

                    PROT.NegocioGeneral.Log.Log.GrabarLog(UsuarioActual, PROT.NegocioGeneral.Log.LogTipoEnum.CambiosEnTarifas, ResultadoLog);
                }

                decimal PrecioAntiguo = (decimal)this["Precio"];
                if (PrecioAntiguo != CambiarPrecio)
                {
                    string    sql = "SELECT DISTINCT IDFactura FROM FacturaDetalle WHERE IDPYT = " + this.IDActual[0];
                    DataTable dt  = Datos.Instancia().getDataTable(sql);

                    if (dt.Rows.Count != 0)
                    {
                        TieneFacturas = true;
                    }

                    // Se puede modificar cuando.
                    // - No hay facturas.
                    // - Existen facturas, pero tiene permiso para modificar y no están pasadas a contabilidad
                    // - Existen facturas, tiene permiso para modificar y además un permiso especial para cuando están pasadas a contabilidad

                    if (!TieneFacturas || UsuarioActual.Permiso("MET", "Presupuesto", "ModificarTarifasConFacturas"))
                    {
                        if (TieneFacturas)
                        {
                            foreach (DataRow dr in dt.Rows)
                            {
                                LCC.Negocio.Facturas.Factura fac = new LCC.Negocio.Facturas.Factura();
                                fac.IDActual[0] = (int)dr[0];
                                fac.Leer();

                                if ((bool)fac["Contabilidad"])
                                {
                                    PasadasAcontabilidad = true;
                                    break;
                                }
                            }

                            // - Existen facturas, pero tiene permiso para modificar y no están pasadas a contabilidad
                            if (!PasadasAcontabilidad)
                            {
                                sePuedeModificarElPrecio = true;
                            }

                            // - Existen facturas, tiene permiso para modificar y además un permiso especial para cuando están pasadas a contabilidad
                            if (PasadasAcontabilidad && UsuarioActual.Permiso("MET", "Presupuesto", "ModificarTarifasConFacturasContabilidad"))
                            {
                                sePuedeModificarElPrecio = true;
                            }
                        }
                        else
                        {
                            // - No hay facturas.
                            sePuedeModificarElPrecio = true;
                        }
                    }

                    //Modificación del precio
                    if (sePuedeModificarElPrecio)
                    {
                        ResultadoLog = "Presupuesto: " + this.ObjetoAsociado("Presupuesto").DescripcionNormal
                                       + ". Tarifa Modificada: " + this.ObjetoAsociado("Tarifa")["Codigo"].ToString();

                        Datos.Instancia().executeSQL("UPDATE PresupuestoYTarifa SET Precio = " + CambiarPrecio.ToString().Replace(",", ".")
                                                     + " WHERE IDPyT = " + this["IDPyT"].ToString());

                        ResultadoLog += ". Precio Antiguo: " + PrecioAntiguo.ToString()
                                        + ". Precio Nuevo: " + CambiarPrecio.ToString();

                        mensajeMetodosModificar += "Se ha modificado el precio. ";

                        PROT.NegocioGeneral.Log.Log.GrabarLog(UsuarioActual, PROT.NegocioGeneral.Log.LogTipoEnum.CambiosEnTarifas, ResultadoLog);

                        //Regenera las facturas
                        if (TieneFacturas)
                        {
                            foreach (DataRow dr in dt.Rows)
                            {
                                LCC.Negocio.Facturas.Factura fac = new LCC.Negocio.Facturas.Factura();
                                fac.IDActual[0] = (int)dr[0];
                                fac.Leer();
                                fac.Guardar();
                            }
                        }
                    }
                    else
                    {
                        mensajeMetodosModificar += "No se puede modificar el precio porque existen facturas.";
                    }
                }
            }

            if (Nombre == "ModificarUnidadesTarifas")
            {
                //Las unidades y el divisior se pueden cambiar siempre.
                double UnidadesAntiguo;
                object DivisorAntiguo;
                string ResultadoLog = "";

                PresupuestoVersionDetalle pv = new PresupuestoVersionDetalle();
                pv.IDActual[0] = CambiarIDPresupuestoVersion;
                pv.IDActual[1] = (int)this["IDPyT"];
                pv.Leer();

                if (CambiarDivisor == null)
                {
                    CambiarDivisor = DBNull.Value;
                }

                UnidadesAntiguo = (double)pv["Unidades"];
                DivisorAntiguo  = pv["DivisorUnidades"];

                if (UnidadesAntiguo != CambiarUnidades || DivisorAntiguo != CambiarDivisor)
                {
                    pv["Unidades"]        = CambiarUnidades;
                    pv["DivisorUnidades"] = CambiarDivisor;

                    pv.Guardar(false);

                    ResultadoLog += ". Unidades Antiguas: " + UnidadesAntiguo.ToString()
                                    + ". Unidades Nuevas: " + CambiarUnidades.ToString()
                                    + ". Divisor Antiguo: " + DivisorAntiguo.ToString()
                                    + ". Divisor Nuevo: " + CambiarDivisor.ToString();

                    PROT.NegocioGeneral.Log.Log.GrabarLog(UsuarioActual, PROT.NegocioGeneral.Log.LogTipoEnum.CambiosEnTarifas, ResultadoLog);

                    mensajeMetodosModificar += "Se ha modificado las unidades de la tarifa " + ObjetoAsociado("Tarifa")["Codigo"].ToString()
                                               + Datos.CRLF;
                }
            }

            if (Nombre == "Restaurar")
            {
                if (this.PermisoModificar)
                {
                    this["Concepto"] = DBNull.Value;
                }

                return;
            }

            base.Metodo(pag, Nombre);
        }