/// <summary>
        /// Insere um novo produto na base de dados
        /// </summary>
        /// <param name="produto"></param>
        /// <returns></returns>
        public Int64 Inserir(Produto produto)
        {
            try
            {
                if (produto.Nome.Trim().Equals(""))
                {
                    throw new NegocioException("O nome do produto não pode ficar em branco.");
                }
                else if (produto.QuantidadeEmbalagem <= 0)
                {
                    throw new NegocioException("A quantidade de produtos na embalagem deve ser maior que zero.");
                }
                else if (!produto.CodigoBarra.Trim().Equals("") && !produto.CodigoBarra.Trim().Equals("SEM GTIN"))
                {
                    if (ObterPorCodigoBarraExato(produto.CodigoBarra).Count() > 0)
                    {
                        throw new NegocioException("Já existe um produto cadastrado com esse código de barra. Favor verificar a possibilidade de ser o mesmo produto.");
                    }
                }

                ProdutoE _produtoE = new ProdutoE();
                Atribuir(produto, _produtoE);

                var repProduto = new RepositorioGenerico <ProdutoE>();
                repProduto.Inserir(_produtoE);
                repProduto.SaveChanges();

                ProdutoLoja produtoLoja = new ProdutoLoja();
                produtoLoja.CodProduto    = _produtoE.codProduto;
                produtoLoja.CodLoja       = Global.LOJA_PADRAO;
                produtoLoja.QtdEstoque    = 0;
                produtoLoja.QtdEstoqueAux = 0;

                GerenciadorProdutoLoja.GetInstance(null).Inserir(produtoLoja);

                return(_produtoE.codProduto);
            }
            catch (Exception e)
            {
                throw new DadosException("Produto", e.Message, e);
            }
        }
 /// <summary>
 /// Atribui entidade à entidade persistente
 /// </summary>
 /// <param name="produto"></param>
 /// <param name="_produtoE"></param>
 private static void Atribuir(Produto produto, ProdutoE _produtoE)
 {
     _produtoE.codCST                 = produto.CodCST;
     _produtoE.codFabricante          = produto.CodFabricante;
     _produtoE.codGrupo               = produto.CodGrupo;
     _produtoE.codigoBarra            = produto.CodigoBarra == null ? "" : produto.CodigoBarra;
     _produtoE.codSituacaoProduto     = Convert.ToSByte(produto.CodSituacaoProduto);
     _produtoE.codSubgrupo            = produto.CodSubgrupo;
     _produtoE.dataUltimoPedido       = produto.DataUltimoPedido;
     _produtoE.dataUltimaMudancaPreco = produto.DataUltimaMudancaPreco;
     _produtoE.desconto               = produto.Desconto;
     _produtoE.exibeNaListagem        = produto.ExibeNaListagem;
     _produtoE.frete                  = produto.Frete;
     _produtoE.icms                   = produto.Icms;
     _produtoE.icms_substituto        = produto.IcmsSubstituto;
     _produtoE.ipi                    = produto.Ipi;
     _produtoE.lucroPrecoVendaAtacado = produto.LucroPrecoVendaAtacado;
     _produtoE.lucroPrecoVendaVarejo  = produto.LucroPrecoVendaVarejo;
     _produtoE.lucroPrecoRevenda      = produto.LucroPrecoRevenda;
     _produtoE.ncmsh                  = produto.Ncmsh == null ? "" : produto.Ncmsh;
     _produtoE.nome                   = produto.Nome;
     _produtoE.nomeProdutoFabricante  = produto.NomeProdutoFabricante;
     _produtoE.precoVendaAtacado      = produto.PrecoVendaAtacado;
     _produtoE.precoVendaVarejo       = produto.PrecoVendaVarejo;
     _produtoE.precoRevenda           = produto.PrecoRevenda;
     _produtoE.qtdProdutoAtacado      = produto.QtdProdutoAtacado;
     _produtoE.quantidadeEmbalagem    = produto.QuantidadeEmbalagem;
     _produtoE.referenciaFabricante   = produto.ReferenciaFabricante;
     _produtoE.simples                = produto.Simples;
     _produtoE.temVencimento          = produto.TemVencimento;
     _produtoE.ultimaDataAtualizacao  = produto.UltimaDataAtualizacao;
     _produtoE.ultimoPrecoCompra      = produto.UltimoPrecoCompra;
     _produtoE.unidade                = produto.Unidade;
     _produtoE.unidadeCompra          = produto.UnidadeCompra;
     _produtoE.emPromocao             = produto.EmPromocao;
 }