/// <summary> /// Metodo para Guardar/Modificar una entidad Almacen /// </summary> /// <param name="info"></param> internal int Guardar(AlmacenInfo info) { try { Logger.Info(); var almacenDAL = new AlmacenDAL(); int result = info.AlmacenID; bool esModificacion = result > 0; using (var scope = new TransactionScope()) { if (info.AlmacenID == 0) { result = almacenDAL.Crear(info); } else { almacenDAL.Actualizar(info); } if (info.Proveedor != null && info.Proveedor.ProveedorID > 0) { var proveedorAlmacenDAL = new ProveedorAlmacenDAL(); var proveedorAlmacen = new ProveedorAlmacenInfo { Proveedor = info.Proveedor, Almacen = new AlmacenInfo { AlmacenID = result } }; if (esModificacion) { ProveedorAlmacenInfo proveedorAlmacenExiste = proveedorAlmacenDAL.ObtenerPorAlmacenID(result); if (info.Activo == EstatusEnum.Inactivo) { if (proveedorAlmacenExiste != null) { proveedorAlmacenExiste.Activo = EstatusEnum.Inactivo; proveedorAlmacenExiste.UsuarioModificacionID = info.UsuarioModificacionID; proveedorAlmacenDAL.Actualizar(proveedorAlmacenExiste); scope.Complete(); return(result); } } if (proveedorAlmacenExiste != null) { proveedorAlmacenExiste.UsuarioModificacionID = info.UsuarioModificacionID.HasValue ? info.UsuarioModificacionID.Value : 0; proveedorAlmacenExiste.Proveedor = info.Proveedor; proveedorAlmacenDAL.Actualizar(proveedorAlmacenExiste); scope.Complete(); return(result); } } else { proveedorAlmacen.UsuarioCreacionID = info.UsuarioCreacionID; } proveedorAlmacenDAL.Crear(proveedorAlmacen); } scope.Complete(); } return(result); } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }