public ResultadoEntidad AgregarTemporalAccesorio(TemporalAccesorioEntidad TemporalAccesorioObjetoEntidad, TemporalActivoEntidad TemporalActivoObjetoEntidad)
        {
            string CadenaConexion  = string.Empty;
            bool   ExisteAccesorio = false;
            TemporalActivoProceso TemporalActivoProcesoNegocio = new TemporalActivoProceso();
            ResultadoEntidad      Resultado = new ResultadoEntidad();
            ResultadoEntidad      BusquedaAccesorioResultado = new ResultadoEntidad();
            SqlTransaction        Transaccion;
            SqlConnection         Conexion;

            CadenaConexion = SeleccionarConexion(ConstantePrograma.DefensoriaDB_Activos);

            // Primero se busca que no haya un accesorio de ese tipo (excepto si es Activo Fijo) en el Activo temporal
            // Con esto se valida que todos los acesorios que no sean activos fijos solo se puedan agregar uno de cada uno por vehiculo
            ExisteAccesorio = BuscarAccesorioAregadoAActivo(TemporalAccesorioObjetoEntidad, TemporalActivoObjetoEntidad);

            if (ExisteAccesorio == false)
            {
                // Se busca si el accesorio ya se agregó en la compra temporal actual (no solo en este activo)
                BusquedaAccesorioResultado = BuscarAccesorioAregadoACompra(TemporalAccesorioObjetoEntidad, TemporalActivoObjetoEntidad);

                if (BusquedaAccesorioResultado.ResultadoDatos.Tables[0].Rows.Count == 0)
                {
                    // Se busca que no exista ya un Accesorio de ese tipo y con esa descripcion en caso de que el Accesorio no sea un Activo Fijo
                    ExisteAccesorio = BuscarAccesorioNoActivoFijo(TemporalAccesorioObjetoEntidad);

                    if (ExisteAccesorio == false)
                    {
                        Conexion = new SqlConnection(CadenaConexion);
                        Conexion.Open();

                        Transaccion = Conexion.BeginTransaction();

                        // Se verifica si ya se creo el activo temporal
                        if (TemporalActivoObjetoEntidad.TemporalActivoId == 0)
                        {
                            Resultado = TemporalActivoProcesoNegocio.GuardarTemporalActivo(Conexion, Transaccion, TemporalActivoObjetoEntidad);

                            TemporalActivoObjetoEntidad.TemporalActivoId    = Resultado.NuevoRegistroId;
                            TemporalAccesorioObjetoEntidad.TemporalActivoId = TemporalActivoObjetoEntidad.TemporalActivoId;
                        }

                        // Si el activo temporal fue creado exitosamente o ya existia se inserta el accesorio temporal
                        if (Resultado.ErrorId == (int)ConstantePrograma.TemporalActivo.TemporalActivoGuardadoCorrectamente || Resultado.ErrorId == 0)
                        {
                            Resultado = InsertarTemporalAccesorio(Conexion, Transaccion, TemporalAccesorioObjetoEntidad);

                            // Si se inserto el accesorio temporal exitosamente termina la transaccion
                            if (Resultado.ErrorId == (int)ConstantePrograma.TemporalAccesorio.TemporalAccesorioGuardadoCorrectamente)
                            {
                                Transaccion.Commit();
                                Resultado.NuevoRegistroId = TemporalActivoObjetoEntidad.TemporalActivoId;
                            }
                            else
                            {
                                Transaccion.Rollback();
                            }
                        }
                        else
                        {
                            Transaccion.Rollback();
                        }

                        Conexion.Close();
                    }
                    else
                    {
                        Resultado.DescripcionError = TextoError.AccesorioExistente;
                    }
                }
                else
                {
                    Resultado.DescripcionError = TextoError.AccesorioRepetido;
                }
            }
            else
            {
                Resultado.DescripcionError = TextoError.AccesorioRepetido;
            }

            return(Resultado);
        }
Exemplo n.º 2
0
        public ResultadoEntidad GuardarRecepcion(CompraEntidad CompraObjetoEntidad, Int16 TipoMovimientoId)
        {
            string                CadenaConexion               = string.Empty;
            ResultadoEntidad      Resultado                    = new ResultadoEntidad();
            ResultadoEntidad      ResultadoTemporalActivo      = new ResultadoEntidad();
            TemporalActivoEntidad TemporalActivoObjetoEntidad  = new TemporalActivoEntidad();
            ActivoEntidad         ActivoObjetoEntidad          = new ActivoEntidad();
            TemporalActivoProceso TemporalActivoProcesoNegocio = new TemporalActivoProceso();
            ActivoProceso         ActivoProcesoNegocio         = new ActivoProceso();
            SqlTransaction        Transaccion;
            SqlConnection         Conexion;

            if (BuscarCompraPorFolio(CompraObjetoEntidad) == true)
            {   // Se busca si ya existe una compra de ese proveedor con ese mismo tipo de documento y ese mismo folio
                Resultado.ErrorId          = (int)ConstantePrograma.Compra.DocumentoDuplicado;
                Resultado.DescripcionError = TextoError.RecepcionDocumentoDuplicado;
                return(Resultado);
            }

            //Se seleccionan todos los activos temporales
            TemporalActivoObjetoEntidad.TemporalCompraId = CompraObjetoEntidad.TemporalCompraId;

            ResultadoTemporalActivo = TemporalActivoProcesoNegocio.SeleccionarTemporalActivo(TemporalActivoObjetoEntidad);

            CadenaConexion = SeleccionarConexion(ConstantePrograma.DefensoriaDB_Activos);

            Conexion = new SqlConnection(CadenaConexion);
            Conexion.Open();

            Transaccion = Conexion.BeginTransaction();

            Resultado = GuardarCompra(Conexion, Transaccion, CompraObjetoEntidad);

            // Si la compra fue guardada correctamente, se obtiene su ID
            if (Resultado.ErrorId == (int)ConstantePrograma.Compra.CompraGuardadoCorrectamente)
            {
                CompraObjetoEntidad.CompraId = (Int16)Resultado.NuevoRegistroId;

                // Ahora se barren los activos temporales para insertarlos uno por uno
                Resultado = GuardarActivo(Conexion, Transaccion, CompraObjetoEntidad, ResultadoTemporalActivo.ResultadoDatos, TipoMovimientoId);

                if (Resultado.ErrorId == (int)ConstantePrograma.Activo.ActivoGuardadoCorrectamente ||
                    Resultado.ErrorId == (int)ConstantePrograma.Accesorio.AccesorioGuardadoCorrectamente)
                {
                    Transaccion.Commit();
                    Resultado.ErrorId = (int)ConstantePrograma.Compra.RecepcionGuardadoCorrectamente;

                    //// Si se insertaron los activos y los accesorios exitosamente, se editan los estatus de los activos acesorios a Asignado
                    //ActivoObjetoEntidad.TemporalCompraId = CompraObjetoEntidad.TemporalCompraId;
                    //ActivoObjetoEntidad.EstatusId = (Int16)ConstantePrograma.EstatusActivos.Asignado;

                    //Resultado = ActivoProcesoNegocio.ActualizarActivoEstatus(Conexion, Transaccion, ActivoObjetoEntidad);

                    //// Si se edito los activos exitosamente termina la transaccion
                    //if (Resultado.ErrorId == (int)ConstantePrograma.Activo.ActivoAsignadoCorrectamente)
                    //{
                    //    Transaccion.Commit();
                    //    Resultado.ErrorId = (int)ConstantePrograma.Compra.RecepcionGuardadoCorrectamente;
                    //}
                    //else
                    //{
                    //    Transaccion.Rollback();
                    //}
                }
                else
                {
                    Transaccion.Rollback();
                }
            }
            else
            {
                Transaccion.Rollback();
            }

            Conexion.Close();

            return(Resultado);
        }