Пример #1
0
        /// <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);
            }
        }