예제 #1
0
        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();
            }
        }
예제 #2
0
        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);
        }