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); }
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); }