Пример #1
0
 /// <summary>
 /// Atribui a entidade para entidade persistente
 /// </summary>
 /// <param name="entradaProduto"></param>
 /// <param name="_entradaProdutoE"></param>
 private static void Atribuir(EntradaProduto entradaProduto, EntradaProdutoE _entradaProdutoE)
 {
     _entradaProdutoE.baseCalculoICMS   = entradaProduto.BaseCalculoICMS;
     _entradaProdutoE.baseCalculoICMSST = entradaProduto.BaseCalculoICMSST;
     _entradaProdutoE.cfop                  = entradaProduto.Cfop;
     _entradaProdutoE.codCST                = entradaProduto.CodCST;
     _entradaProdutoE.codEntrada            = entradaProduto.CodEntrada;
     _entradaProdutoE.codEntradaProduto     = entradaProduto.CodEntradaProduto;
     _entradaProdutoE.codProduto            = entradaProduto.CodProduto;
     _entradaProdutoE.data_validade         = entradaProduto.DataValidade;
     _entradaProdutoE.desconto              = entradaProduto.Desconto;
     _entradaProdutoE.preco_custo           = entradaProduto.PrecoCusto;
     _entradaProdutoE.quantidade            = entradaProduto.Quantidade;
     _entradaProdutoE.quantidadeEmbalagem   = entradaProduto.QuantidadeEmbalagem == 0 ? 1 : entradaProduto.QuantidadeEmbalagem;
     _entradaProdutoE.quantidade_disponivel = entradaProduto.QuantidadeDisponivel;
     _entradaProdutoE.unidadeCompra         = entradaProduto.UnidadeCompra;
     _entradaProdutoE.valorICMS             = entradaProduto.ValorICMS;
     _entradaProdutoE.valorICMSST           = entradaProduto.ValorICMSST;
     _entradaProdutoE.valorIPI              = entradaProduto.ValorIPI;
     _entradaProdutoE.valorTotal            = entradaProduto.ValorTotal;
     _entradaProdutoE.valorUnitario         = entradaProduto.ValorUnitario;
 }
Пример #2
0
        /// <summary>
        /// Insere uma novo produto na entrada
        public Int64 Inserir(EntradaProduto entradaProduto, int codTipoEntrada)
        {
            if (entradaProduto.Quantidade == 0)
            {
                throw new NegocioException("A quantidade do produto não pode ser igual a zero.");
            }
            else if (entradaProduto.PrecoVendaVarejo <= 0)
            {
                throw new NegocioException("O preço de venda deve ser maior que zero.");
            }
            else if (entradaProduto.QuantidadeEmbalagem <= 0)
            {
                throw new NegocioException("A quantidade de produtos em cada embalagem deve ser maior que zero.");
            }

            Produto produto = GerenciadorProduto.GetInstance().Obter(new ProdutoPesquisa()
            {
                CodProduto = entradaProduto.CodProduto
            });

            Cst cstEntrada = new Cst()
            {
                CodCST = entradaProduto.CodCST
            };

            bool ehTributacaoIntegral = cstEntrada.EhTributacaoIntegral;

            if (!produto.EhTributacaoIntegral && ehTributacaoIntegral)
            {
                throw new NegocioException("Esse produto não pode voltar a ser tributação Normal. Favor colocar CST com Substituição Tributária e CUIDADO no cálculo do preço. Verifique se o o DAE de encerramento de fase da nota já chegou.");
            }

            if (ehTributacaoIntegral && (entradaProduto.Icms <= 0))
            {
                throw new NegocioException("O campo % CRED ICMS não pode ser menor ou igual a zero quando o produto possui tributação normal.");
            }
            else if ((ehTributacaoIntegral == false) && (entradaProduto.IcmsSubstituto <= 0) &&
                     (!entradaProduto.CodCST.Substring(1).Equals(Cst.ST_SUBSTITUICAO_ICMS_COBRADO)) && !cstEntrada.EhTributacaoSimples)
            {
                throw new NegocioException("O campo % ICMS ST não pode ser menor ou igual a zero quando o produto possui substituição tributária.");
            }


            //if (entradaProduto.CodCST.Length > 3)
            //{
            //    entradaProduto.CodCST = entradaProduto.CodCST.Substring(1);
            //}

            try
            {
                EntradaProdutoE _entradaProdutoE = new EntradaProdutoE();
                Atribuir(entradaProduto, _entradaProdutoE);

                saceContext.AddToEntradaProdutoSet(_entradaProdutoE);
                saceContext.SaveChanges();

                if ((codTipoEntrada == Entrada.TIPO_ENTRADA) || (codTipoEntrada == Entrada.TIPO_ENTRADA_AUX))
                {
                    // Incrementa o estoque na loja principal
                    GerenciadorProdutoLoja.GetInstance(saceContext).AdicionaQuantidade((entradaProduto.Quantidade * entradaProduto.QuantidadeEmbalagem), 0, Global.LOJA_PADRAO, entradaProduto.CodProduto);

                    Atribuir(entradaProduto, produto);
                    produto.CodSituacaoProduto = SituacaoProduto.DISPONIVEL;
                    produto.ExibeNaListagem    = true;

                    // Atualiza os dados do produto se não foi na entrada padrão
                    if (entradaProduto.CodEntrada != Global.ENTRADA_PADRAO)
                    {
                        GerenciadorProduto.GetInstance().Atualizar(produto);
                    }
                }
                return(_entradaProdutoE.codEntrada);
            }
            catch (Exception e)
            {
                throw new DadosException("EntradaProduto", e.Message, e);
            }
        }