/// <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; }
/// <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); } }