public void AtualizarEstoque(int IDCompany, int IDUser, int IDProduto, TipoMovimentoEstoqueEnum Tipo, int Qtde, bool doCommit = false) { EstoqueEN estoqueEN = _repositoryEstoque.GetByID(IDProduto); if (estoqueEN != null) { int _qtde = estoqueEN.Qtde; if (Tipo == TipoMovimentoEstoqueEnum.Entrada) { _qtde += Qtde; } else { _qtde -= Qtde; } if (_qtde <= 0 && Tipo == TipoMovimentoEstoqueEnum.Saida) { ProdutoEN produtoEN = _repositoryProduto.GetByID(IDProduto); throw new DomainException($"Estoque do produto [{produtoEN.Nome}] Insuficiente"); } else { estoqueEN.UpdateProperties ( IDCompany, IDUser, IDProduto, _qtde ); } _repositoryEstoque.Edit(estoqueEN); } else { estoqueEN = new EstoqueEN ( IDCompany, IDUser, IDProduto, Qtde ); _repositoryEstoque.Save(estoqueEN); } if (doCommit) { _unitOfWork.Commit(); } }
public int Save(int IDProduto, int IDCompany, int IDUser, string SKU, string Nome, string Descricao, int IDFornecedor, int IDCategoria, int IDSubCategoria, decimal Preco) { int idProduto = 0; _unitOfWork.BeginTransaction(); try { ProdutoEN produtoEN = _repositoryProduto.GetByID(IDProduto); if (produtoEN != null) { produtoEN.UpdateProperties ( IDCompany, IDUser, SKU, Nome, Descricao, IDFornecedor, IDCategoria, IDSubCategoria, Preco ); _repositoryProduto.Edit(produtoEN); } else { produtoEN = new ProdutoEN ( IDCompany, IDUser, SKU, Nome, Descricao, IDFornecedor, IDCategoria, IDSubCategoria, Preco ); _repositoryProduto.Save(produtoEN); } _unitOfWork.Commit(); idProduto = produtoEN.IDProduto; _estoqueBU.AtualizarEstoque(IDCompany, IDUser, idProduto, TipoMovimentoEstoqueEnum.Entrada, 0, true); _unitOfWork.CommitTransaction(); } catch (DomainException ex) { Console.Write(ex); _unitOfWork.RollbackTransaction(); throw new DomainException(ex.Message); } catch (Exception ex) { Console.Write(ex); _unitOfWork.RollbackTransaction(); throw new DomainException("Erro ao salvar pedido. Tente novamente mais tarde"); } return(idProduto); }