Esempio n. 1
0
        public override void Editar()
        {
            ICliente cliente = new Cliente(GUID);
            cliente.NomeFantasia = "Pessoa Estrangeira";
            cliente.RazaoSocial = "Pessoa Estrangeira";
            cliente.Fisica.Passaporte = "45435";

            cliente.Save();
        }
Esempio n. 2
0
        public override void Gravar()
        {
            IFisica fisica = new Fisica();
            fisica.CPF = "005.911.969-13";
            fisica.RG = "7.513.903-9";
            fisica.RGEmissao = new DateTime(1990, 10, 10);
            fisica.RGEstado = new Estado().Find<Model.Cadastro.Endereco.IEstado>(new Where { Limit = new Limit(1) })[0];
            fisica.RGOrgao = "SSP";
            fisica.PaiNome = "Estrangeira Pai";
            fisica.MaeNome = "Estrangeira Mae";
            fisica.Passaporte = "564564654654646";
            fisica.RGTipoVisto = "Teste";

            Model.Cadastro.Endereco.IEndereco endereco = new OpenPOS.Data.Cadastro.Endereco.Endereco().Find<Model.Cadastro.Endereco.IEndereco>(new Where { Limit = new Limit(1) })[0];
            endereco.CEP = "87.707-070";
            endereco.Bairro = new Bairro().Find<Model.Cadastro.Endereco.IBairro>(new Where { Limit = new Limit(1) })[0];
            endereco.Continente = new Continente().Find<Model.Cadastro.Endereco.IContinente>(new Where { Limit = new Limit(1) })[0];
            endereco.Cidade = new Cidade().Find<Model.Cadastro.Endereco.ICidade>(new Where { Limit = new Limit(1) })[0];
            endereco.Endereco = "Endereco";
            endereco.Estado = new Estado().Find<Model.Cadastro.Endereco.IEstado>(new Where { Limit = new Limit(1) })[0];
            endereco.Logradouro = new Logradouro().Find<Model.Cadastro.Endereco.ILogradouro>(new Where { Limit = new Limit(1) })[0];
            endereco.Municipio = new Municipio().Find<Model.Cadastro.Endereco.IMunicipio>(new Where { Limit = new Limit(1) })[0];
            endereco.Pais = new Pais().Find<Model.Cadastro.Endereco.IPais>(new Where { Limit = new Limit(1) })[0];
            endereco.Automatico = false;

            Model.Cadastro.Pessoa.IEndereco enderecoCliente = new OpenPOS.Data.Cadastro.Pessoa.Endereco();
            enderecoCliente.Endereco = endereco;
            enderecoCliente.Numero = "120";
            enderecoCliente.CaixaPostal = "";
            enderecoCliente.Complemento = "Proximo ao supermercado";
            enderecoCliente.Proximidade = "Proximo ao supermercado";
            enderecoCliente.Principal = true;

            ICliente cliente = new Cliente();
            cliente.NomeFantasia = "Estrangeira";
            cliente.RazaoSocial = "Estrangeira";
            cliente.FisicaJuridica = Enuns.Cadastro.Pessoa.FisicaJuridica.Fisica;
            cliente.Fisica = fisica;
            cliente.Enderecos.Add(enderecoCliente);
            cliente.CanaisComunicacao.Add(new OpenPOS.Data.Cadastro.Pessoa.CanalComunicacao()
            {
                TipoCanal = Enuns.Cadastro.Pessoa.TipoCanal.Telefone,
                NomeContato = "Estrangeira",
                IdentificadorCanal = "3423-4041",
                Observacao = "Observação",
                Principal = true,
                Ramal = ""
            });

            GUID = cliente.Save();
        }
        public static ICliente NovoCliente()
        {
            ICliente cliente = new Cliente();
            cliente.RazaoSocial = new Random().NextString();
            cliente.NomeFantasia = new Random().NextString();
            cliente.FisicaJuridica = Enuns.Cadastro.Pessoa.FisicaJuridica.Fisica;
            cliente.Fisica = new Fisica().Find<IFisica>(new Where { Limit = 1 })[0];
            cliente.Enderecos.Add(new Endereco().Find<IEndereco>(new Where { Limit = 1 })[0]);
            cliente.CanaisComunicacao.Add(new CanalComunicacao()
            {
                NomeContato = new Random().NextString(),
                IdentificadorCanal = "3423-5050",
                TipoCanal = Enuns.Cadastro.Pessoa.TipoCanal.Telefone,
                Principal = true
            });

            cliente.Save();

            return cliente;
        }
Esempio n. 4
0
        public override void Gravar()
        {
            #region DAV

            #region Vendedor
            IVendedor vendedor = new Vendedor().Find<IVendedor>(new Where { Limit = new Limit(1) })[0];
            #endregion

            #region DadoPessoa
            IDadoPessoa dadoPessoa = new DadoPessoa();

            ICanalComunicacao canal = new CanalComunicacao();
            canal.NomeContato = "Cliente";
            canal.IdentificadorCanal = "3423-5051";
            canal.TipoCanal = Enuns.Cadastro.Pessoa.TipoCanal.Telefone;
            canal.Principal = true;

            Cliente cliente = new Cliente()
            {
                FisicaJuridica = Enuns.Cadastro.Pessoa.FisicaJuridica.Fisica,
                Fisica = new Fisica().Find<IFisica>(new Where { Limit = new Limit(1) })[0],
                NomeFantasia = "Luciano",
                RazaoSocial = "Luciano Leandro",
                TipoPessoa = Enuns.Cadastro.Pessoa.TipoPessoa.Cliente,
                Enderecos = new List<IEndereco> { new Endereco().Find<IEndereco>(new Where { Limit = new Limit(1) })[0] },
                CanaisComunicacao = new List<ICanalComunicacao> { canal },
                ValorLimiteCredto = 3000,
                PercentualRisco = 10,
                Situacao = Situacao.AAutorizar
            };
            cliente.Save();
            dadoPessoa.Cliente = cliente;

            #endregion

            dav.DadoPessoa = dadoPessoa;
            dav.TabelaPreco = new OpenPOS.Data.Cadastro.TabelaPreco.TabelaPreco().Find<Model.Cadastro.TabelaPreco.ITabelaPreco>(new Where { Limit = new Limit(1) })[0];
            dav.Descricao = "Orcamento de venda";

            #region Itens do DAV
            dav.Itens.Add(new OpenPOS.Data.Faturamento.Lancamento.Movimento.Item.DAV.Item
                {
                    Quantidade = 10,
                    ValorUnitarioBruto = 12.5,
                    DescricaoNF = "Produto de teste um",
                    Vendedor = vendedor,
                    TabelaPreco = dav.TabelaPreco,
                    ItemMovimentado = new OpenPOS.Data.Cadastro.Item.Produto.Acabado().Find<Model.Cadastro.Item.Produto.IAcabado>(new Where { Limit = new Limit(1) })[0]
                });

            dav.Itens.Add(new OpenPOS.Data.Faturamento.Lancamento.Movimento.Item.DAV.Item
            {
                Quantidade = 25,
                ValorUnitarioBruto = 15,
                DescricaoNF = "Produto de teste dois",
                Vendedor = vendedor,
                TabelaPreco = dav.TabelaPreco,
                ItemMovimentado = new OpenPOS.Data.Cadastro.Item.Produto.Acabado().Find<Model.Cadastro.Item.Produto.IAcabado>(new Where { Limit = new Limit(1) })[0]
            });

            dav.Itens.Add(new OpenPOS.Data.Faturamento.Lancamento.Movimento.Item.DAV.Item
            {
                Quantidade = 33,
                ValorUnitarioBruto = 17.5,
                DescricaoNF = "Produto de teste três",
                Vendedor = vendedor,
                TabelaPreco = dav.TabelaPreco,
                ItemMovimentado = new OpenPOS.Data.Cadastro.Item.Produto.Acabado().Find<Model.Cadastro.Item.Produto.IAcabado>(new Where { Limit = new Limit(1) })[0]
            });

            #endregion
            dav.Save();
            #endregion
        }
Esempio n. 5
0
 public override void Popular()
 {
     Cliente cliente = new Cliente(GUID);
     DumpElement(cliente);
     DumpElement(cliente.CanaisComunicacao);
 }
Esempio n. 6
0
        public void HasHashModificationTest()
        {
            Gravar();
            ICliente p1 = new Cliente(GUID);
            ICliente p2 = new Cliente(GUID);

            //alterar a forma 2, e comparar se houve modificação do HASH
            p2.NomeFantasia = "Teste de Modificação do HASH";
            Assert.AreNotEqual(p1.RecordHash, p2.RecordHash);
            Assert.IsTrue(p2.HasHashModification);

            //alterar a descrição, tem que ficar igual
            p2.NomeFantasia = p1.NomeFantasia;
            Assert.AreEqual(p1.RecordHash, p2.RecordHash);

            //alterar a forma 2, e comparar se houve modificação do HASH
            p2.RazaoSocial = "Teste de Modificação do HASH";
            Assert.AreNotEqual(p1.RecordHash, p2.RecordHash);
            Assert.IsTrue(p2.HasHashModification);

            //alterar a descrição, tem que ficar igual
            p2.RazaoSocial = p1.RazaoSocial;
            Assert.AreEqual(p1.RecordHash, p2.RecordHash);
        }
Esempio n. 7
0
 public override void Editar()
 {
     Cliente cliente = new Cliente(GUID);
     DumpElement(cliente);
     cliente.NomeFantasia = "Joaquim Silva Editado";
     cliente.Situacao = Situacao.Normal;
     cliente.Save();
     cliente = new Cliente(GUID);
     DumpElement(cliente);
 }
Esempio n. 8
0
        public static ICliente CriarCliente()
        {
            Cliente cliente = new Cliente();
            cliente.FisicaJuridica = Enuns.Cadastro.Pessoa.FisicaJuridica.Juridica;
            OpenPOS.Data.Cadastro.Pessoa.Fisica.Fisica fisica = new OpenPOS.Data.Cadastro.Pessoa.Fisica.Fisica();
            fisica.CPF = "05210438910";
            fisica.DataNascimento = new DateTime(1985, 07, 27);
            fisica.EstadoCivil = Enuns.Cadastro.Pessoa.EstadoCivil.Casado;
            fisica.MaeNome = "Teste";
            fisica.PaiNome = "Teste";
            fisica.RG = "90702343";
            fisica.RGEmissao = new DateTime(1995, 12, 12);
            fisica.RGEstado = new Estado().Find<Model.Cadastro.Endereco.IEstado>(new Where { Limit = new Limit(1) })[0];
            fisica.RGOrgao = "SSPPR";
            fisica.RGTipoVisto = "";
            fisica.Sexo = Enuns.Cadastro.Pessoa.Sexo.Masculino;

            OpenPOS.Data.Cadastro.Pessoa.Juridica.Juridica juridica = new OpenPOS.Data.Cadastro.Pessoa.Juridica.Juridica();
            juridica.CNPJ = "75480764000120";
            juridica.DataAbertura = new DateTime(1999, 10, 10);
            juridica.IM = "1205";
            juridica.ISuf = "";
            juridica.RamoAtividade = new RamoAtividade().Find<IRamoAtividade>()[0];
            juridica.CRT = CRT.SimplesNacional;
            juridica.IE = "0144527338395";

            cliente.Fisica = fisica;
            cliente.Juridica = juridica;
            cliente.NomeFantasia = "Cliente " + new Random().NextString();
            cliente.Observacao = "Observação do cliente";
            cliente.RazaoSocial = "Cliente " + new Random().NextString();

            #region Canais de comunicação
            cliente.CanaisComunicacao = new List<ICanalComunicacao>
            {
                new CanalComunicacao{
                    TipoCanal  = TipoCanal.Celular,
                    NomeContato = new Random().NextString(20),
                    Principal =true,
                    IdentificadorCanal  = "2918219219827",
                    Ramal ="",
                    Observacao  = ""
                },
                new CanalComunicacao{
                    TipoCanal  = TipoCanal.Facebook,
                    NomeContato = new Random().NextString(20),
                    Principal =false,
                    IdentificadorCanal  = "http://facebook.com",
                    Ramal ="",
                    Observacao  = ""
                }
            };
            #endregion

            #region Análise de crédito
            cliente.ValorLimiteCredto = 1000;
            cliente.PercentualRisco = 5.50;
            cliente.Situacao = Situacao.AAutorizar;
            cliente.ValorDocumentoAberto = 50;
            #endregion

            #region Endereço
            Model.Cadastro.Endereco.IEndereco endereco = new OpenPOS.Data.Cadastro.Endereco.Endereco();
            endereco.Logradouro = new Logradouro().Find<Model.Cadastro.Endereco.ILogradouro>(new Where { Limit = new Limit(1) })[0];
            endereco.Bairro = new Bairro().Find<Model.Cadastro.Endereco.IBairro>(new Where { Limit = new Limit(1) })[0];
            endereco.Cidade = new Cidade().Find<Model.Cadastro.Endereco.ICidade>(new Where { Limit = new Limit(1) })[0];
            endereco.Municipio = new Municipio().Find<Model.Cadastro.Endereco.IMunicipio>(new Where { Limit = new Limit(1) })[0];
            endereco.Estado = new Estado().Find<Model.Cadastro.Endereco.IEstado>(new Where { Limit = new Limit(1) })[0];
            endereco.Pais = new Pais().Find<Model.Cadastro.Endereco.IPais>(new Where { Limit = new Limit(1) })[0];
            endereco.Continente = new Continente().Find<Model.Cadastro.Endereco.IContinente>(new Where { Limit = new Limit(1) })[0];
            endereco.Endereco = "Rua: " + new Random().NextString();
            #endregion

            #region Endereço do cliente
            Model.Cadastro.Pessoa.IEndereco endCliente = new OpenPOS.Data.Cadastro.Pessoa.Endereco();
            endCliente.CaixaPostal = "123";
            endCliente.Cobranca = true;
            endCliente.Complemento = "teste";
            endCliente.Correspondencia = true;
            endCliente.Endereco = endereco;
            endCliente.Entrega = true;
            endCliente.Faturamento = true;
            endCliente.Numero = "1234";
            endCliente.Principal = true;
            endCliente.Proximidade = "Estado";
            endCliente.Retirada = true;
            #endregion

            cliente.Enderecos.Add(endCliente);

            return cliente;
        }
Esempio n. 9
0
        public override void Gravar()
        {
            PreVenda = new PreVenda();

            #region Vendedor
            Continente t = new Continente();
            t.Nome = "Europa";
            GUID guidContinente = t.Save();
            Pais p = new Pais();
            p.Nome = "Brasil";
            p.Abreviatura = "BR";
            p.CodBACEN = "1234";
            p.Continente = t;
            GUID guidPais = p.Save();
            Estado e = new Estado();
            e.Nome = "Europa";
            e.CodigoIBGE = "99";
            e.UF = "PR";
            e.Pais = p;
            GUID guidEstado = e.Save();
            Municipio m = new Municipio();
            m.Abreviatura = "PVI";
            m.CodigoIBGE = "123546";
            m.Estado = e;
            m.Nome = "Paranavaí";
            GUID guidMunicipio = m.Save();
            Cidade c = new Cidade();
            c.Abreviatura = "GR";
            c.Municipio = m;
            c.Nome = "Graciosa";
            GUID = c.Save();

            Logradouro l = new Logradouro();
            l.Descricao = "Avenida";
            l.Abreviatura = "Av";
            GUID guidLogradouro = l.Save();

            Bairro b = new Bairro();
            b.Cidade = c;
            b.Descricao = "Centro";
            GUID guidBairro = b.Save();

            OpenPOS.Data.Cadastro.Endereco.Endereco end = new OpenPOS.Data.Cadastro.Endereco.Endereco();
            end.Logradouro = l;
            end.CEP = "87704020";
            end.Endereco = "Joaquim da Silva";
            end.Bairro = b;
            string guidEndereco = end.Save();

            OpenPOS.Data.Cadastro.Pessoa.Fisica.Fisica fisica = new OpenPOS.Data.Cadastro.Pessoa.Fisica.Fisica();
            fisica.CPF = "05210438910";
            fisica.DataNascimento = new DateTime(1985, 07, 27);
            fisica.EstadoCivil = Enuns.Cadastro.Pessoa.EstadoCivil.Casado;
            fisica.MaeNome = "Teste";
            fisica.PaiNome = "Teste";
            fisica.RG = "90702343";
            fisica.RGEmissao = new DateTime(1995, 12, 12);
            Estado estado = new Estado(guidEstado);
            fisica.RGEstado = estado;
            fisica.RGOrgao = "SSPPR";
            fisica.RGTipoVisto = "";
            fisica.Sexo = Enuns.Cadastro.Pessoa.Sexo.Masculino;

            OpenPOS.Data.Cadastro.Pessoa.Juridica.Juridica juridica = new OpenPOS.Data.Cadastro.Pessoa.Juridica.Juridica();
            juridica.CNPJ = "75480764000120";
            juridica.DataAbertura = new DateTime(1999, 10, 10);
            juridica.IM = "1205";
            juridica.ISuf = "";
            juridica.RamoAtividade = new RamoAtividade().Find<IRamoAtividade>()[0];

            OpenPOS.Data.Cadastro.Pessoa.Endereco endereco = new OpenPOS.Data.Cadastro.Pessoa.Endereco();
            endereco.CaixaPostal = "123";
            endereco.Cobranca = true;
            endereco.Complemento = "teste";
            endereco.Correspondencia = true;
            endereco.Endereco = end;
            endereco.Entrega = true;
            endereco.Faturamento = true;
            endereco.Numero = "1234";
            endereco.Principal = true;
            endereco.Proximidade = "Estadio";
            endereco.Retirada = true;
            endereco.TipoEndereco = Enuns.Cadastro.Endereco.TipoEndereco.Principal;

            IVendedor vendedor = new Vendedor().Find<IVendedor>(new Where { Limit = new Limit(1, 1) })[0];
            #endregion

            #region DadoPessoa

            Model.Faturamento.Lancamento.Movimento.IDadoPessoa dadoPessoa =
                new Data.Faturamento.Lancamento.Movimento.DadoPessoa.DadoPessoa();

            ICliente cliente = new Cliente().Find<ICliente>(new Where { Limit = new Limit(1, 1) })[0];
            dadoPessoa.Cliente = cliente;

            #endregion

            PreVenda.TabelaPreco = new Data.Cadastro.TabelaPreco.TabelaPreco(Settings.TabelaPrecoPadrao.GUID);
            PreVenda.DadoPessoa = dadoPessoa;
            PreVenda.COO = 123457;

            #region Frete
            Frete frete = new Frete();
            frete.Descricao = "Frete";
            frete.Save();
            #endregion

            #region Desconto
            Desconto desconto = new Desconto();
            desconto.Descricao = "Desconto";
            desconto.Save();
            #endregion

            #region Encargos
            EncargoFinanceiro encargoFinanceiro = new EncargoFinanceiro();
            encargoFinanceiro.Descricao = "Encargo Financeiro";
            encargoFinanceiro.Save();
            #endregion

            #region CFOP
            ICFOP cfop = new CFOP().Find<ICFOP>(new Where { Limit = new Limit(1, 1) })[0];
            #endregion

            #region items

            for(int i = 0; i < 7; i++)
            {
                PreVenda.Itens.Add(new Item
                {
                    TabelaPreco = PreVenda.TabelaPreco,
                    Vendedor = vendedor,
                    Quantidade = new Random().NextDouble(7, 21),
                    ValorUnitarioBruto = new Random().NextDouble(7, 42),
                    DescricaoNF = "Produto de teste um",
                    ItemMovimentado = PreVenda.TabelaPreco.Itens[0].Item as Acabado,
                    Status = 0,
                    CFOP = cfop,
                    Conferido = true,
                    ItensEspeciais = new List<IEspecial> {
                    new Especial{
                        Ordem = 0,
                        ItemEspecial  = frete,
                        Valor = new Random().NextDouble(21, 77)
                    },
                    new Especial{
                        Ordem = 1,
                        ItemEspecial = desconto,
                        Valor = new Random().NextDouble(21, 77)
                    },
                    new Especial{
                        Ordem = 2,
                        ItemEspecial = encargoFinanceiro,
                        Valor = new Random().NextDouble(21, 77)
                    },
                }
                });
            }
            #endregion

            GUID = PreVenda.Save();
        }
Esempio n. 10
0
        public void GerarDevolucaoNFe()
        {
            #region variáveis

            OpenPOS.Data.Faturamento.Lancamento.Movimento.NFe.NFe nfe = null;
            Devolucao devolucao = null;
            IList<ICliente> clientes = new Cliente().Find<ICliente>(new Where() {
                    { "cad_Pessoa.nomefantasia", "NF-E EMITIDA EM AMBIENTE DE HOMOLOGACAO - SEM               "}
            });

            if (clientes.Count == 0)
                throw new Exception();

            #endregion

            #region Emitir a nfe

            nfe = new OpenPOS.Data.Faturamento.Lancamento.Movimento.NFe.NFe();
            nfe.QuantidadeVolume = 3;
            nfe.DadoPessoa = new DadoPessoa
            {
                Cliente = clientes[0]
            };

            nfe.Emitente = IndicadorProducao.Proprio;
            nfe.Situacao = SituacaoNotaFiscal.Normal;
            nfe.TabelaPreco = new OpenPOS.Data.Cadastro.TabelaPreco.TabelaPreco().Find<Model.Cadastro.TabelaPreco.ITabelaPreco>(new Where { Limit = new Limit(1) })[0];
            nfe.StatusNF = Status.LoteEmProcessamento;
            nfe.Motivo = "Teste";
            nfe.Chave = "12345678";
            nfe.InfProt = "123456";
            nfe.Modelo = "55";
            nfe.Serie = new OpenPOS.Data.Faturamento.Cadastro.Serie().Find<Model.Faturamento.Cadastro.ISerie>(new Where() { { "fat_Serie.Modelo = '55'"} })[0];
            nfe.InformacoesAdicionais.Add(new InfAdic() { Tipo = Enuns.Faturamento.Lancamento.Movimento.NF.InfCplTipo.Contribuinte, Campo = "Teste de CRUD" });
            nfe.InformacoesAdicionais.Add(new InfAdic() { Tipo = Enuns.Faturamento.Lancamento.Movimento.NF.InfCplTipo.ObsContribuinte, Campo = "Teste de CRUD Obs" });

            ITabelaPreco tabela = OpenPOS.Settings.TabelaPrecoPadrao;

            nfe.Itens.Add(new OpenPOS.Data.Faturamento.Lancamento.Movimento.Item.NFe.Item
            {
                Quantidade = 25,
                ValorUnitarioBruto = 15,
                DescricaoNF = "Produto de teste um",
                ItemMovimentado = tabela.Itens[0].Item,
                Conferido = true,
                TabelaPreco = tabela,
                InformacaoAdicional = "Informações adicionais dos produtos, mercadorias e serviços"
            });
            nfe.SaveTemp();

            #endregion

            #region enviar e autorizar a nfe

            string fileName = nfe.Chave + "-nfe.xml";
            string filePath = Path.Combine(OpenPOS.Settings.NFe.PastaEnvio, fileName);
            ((NFe.IGenerateNFe)nfe).GenerateXML().Save(filePath);

            OpenPOS.NFe.NFeResult result = ((OpenPOS.Data.Abstract.Faturamento.Lancamento.Movimento.NF.NFBase)nfe).ProcessaResposta();
            if (result.Success)
            {
                nfe.StatusNF = result.Status;
                nfe.Chave = result.Chave;
                nfe.InfProt = result.Protocolo;
                nfe.Motivo = result.Motivo;
                nfe.Save();
                MessageBox.Show(result.Motivo);
            }
            else
                nfe.Save();

            #endregion

            #region Emitir a devolução

            devolucao = new Devolucao();
            devolucao.MotivoDevolucao = "Não gostou da cor e com defeito";
            devolucao.Voucher = nfe;
            devolucao.TabelaPreco = new OpenPOS.Data.Cadastro.TabelaPreco.TabelaPreco().Find<OpenPOS.Model.Cadastro.TabelaPreco.ITabelaPreco>(new Where { Limit = new Limit(1) })[0];

            foreach (OpenPOS.Model.Faturamento.Lancamento.Movimento.Item.NF.IItem item in nfe.Itens)
            {
                Model.Faturamento.Lancamento.Movimento.Item.Devolucao.IDevolucaoItem i =
                    new OpenPOS.Data.Faturamento.Lancamento.Movimento.Item.Devolucao.Item()
                    {
                        ItemMovimentado = item.ItemMovimentado,
                        Quantidade = item.Quantidade,
                        ValorUnitarioBruto = item.ValorUnitarioBruto,
                        DescricaoNF = item.DescricaoNF,
                        MotivoDevolucao = "Com defeito",
                        QuantidadeDevol = item.Quantidade,
                        EstadoItem = Enuns.Faturamento.Lancamento.Movimento.Devolucao.EstadoItem.Defeito,
                        TabelaPreco = item.TabelaPreco
                    };
                devolucao.Itens.Add(i);
            }

            GUID = devolucao.SaveTemp();

            #endregion

            #region enviar e autorizar a devolução

            fileName = devolucao.Chave + "-nfe.xml";
            filePath = Path.Combine(OpenPOS.Settings.NFe.PastaEnvio, fileName);
            ((NFe.IGenerateNFe)devolucao).GenerateXML().Save(filePath);

            result = ((OpenPOS.Data.Abstract.Faturamento.Lancamento.Movimento.NF.NFBase)devolucao).ProcessaResposta();
            if (result.Success)
            {
                devolucao.StatusNF = result.Status;
                devolucao.Chave = result.Chave;
                devolucao.InfProt = result.Protocolo;
                devolucao.Motivo = result.Motivo;
                devolucao.Save();
                MessageBox.Show("NF-e Devolução: " + result.Motivo);
            }
            #endregion
        }
Esempio n. 11
0
 public override void Popular()
 {
     ICliente cliente = new Cliente(GUID);
     DumpElement(cliente);
 }
Esempio n. 12
0
 public override void Excluir()
 {
     ICliente cliente = new Cliente(GUID);
     cliente.Delete();
 }
Esempio n. 13
0
        internal static void Save()
        {
            OnSaving("Conectando com a base de dados local ...");

            Connection connection = null;

            try
            {
                connection = DbContext.CreateConnection();

                connection.BeginTransaction();

                if (CurrentConfig.TipoInstalacao == Enuns.TipoInstalacao.ServidorPostgreSQL ||
                    CurrentConfig.TipoInstalacao == Enuns.TipoInstalacao.ServidorSQLite)
                {
                    #region Settings
                    OnSaving("Salvando as configurações do TEF ...");

                    connection.ExecuteNonQuery(@"DELETE FROM cfg_Configuracao WHERE Propriedade = 'TEF_CodigoLoja';
                                             DELETE FROM cfg_Configuracao WHERE Propriedade = 'TEF_EnderecoIP';
                                             DELETE FROM cfg_Configuracao WHERE Propriedade = 'TEF_MultiplosCartoes';
                                             DELETE FROM cfg_Configuracao WHERE Propriedade = 'TEF_NumeroCartoes';
                                             DELETE FROM cfg_Configuracao WHERE Propriedade = 'TEF_NumeroTerminal';
                                             DELETE FROM cfg_Configuracao WHERE Propriedade = 'SH_NumeroLaudo';
                                             DELETE FROM cfg_Configuracao WHERE Propriedade = 'SH_Versao';
                                             DELETE FROM cfg_Configuracao WHERE Propriedade = 'SH_NomeApp';
                                             DELETE FROM cfg_Configuracao WHERE Propriedade = 'SH_CNPJ';
                                             DELETE FROM cfg_Configuracao WHERE Propriedade = 'SH_IE';
                                             DELETE FROM cfg_Configuracao WHERE Propriedade = 'SH_IM';
                                             DELETE FROM cfg_Configuracao WHERE Propriedade = 'SH_Nome';
                                             DELETE FROM cfg_Configuracao WHERE Propriedade = 'SH_ER_PAF_ECF';
                                             DELETE FROM cfg_Configuracao WHERE Propriedade = 'ConsumidorFinal';
                                             DELETE FROM cfg_Configuracao WHERE Propriedade = 'TEF_HabilitaCieloPremia';
                                             DELETE FROM cfg_Configuracao WHERE Propriedade = 'ECF_MensagemRodape';
                                             DELETE FROM cfg_Configuracao WHERE Propriedade = 'Server_EnderecoIP';
                                             DELETE FROM cfg_Configuracao WHERE Propriedade = 'Server_Porta';
                                             INSERT INTO cfg_Configuracao (GUID, Propriedade, Valor, Observacao)
                                                  VALUES ('" + GUID.Create() + "', 'EmpresaDefault', ' ', 'É a empresa padrão da aplicação');" +
                                                 " INSERT INTO cfg_Configuracao (GUID, Propriedade, Valor, Observacao)" +
                                                     " VALUES ('" + GUID.Create() + "', 'UsuarioDefault', ' ', 'É o usuário padrão da aplicação');");

                    Settings.Setting.Refresh();
                    #endregion

                    #region Empresa padrão
                    OnSaving("Criando empresa padrão ...");
                    Empresa.TipoEmpresa.Save();
                    Empresa.Juridica.RamoAtividade.Save();
                    Empresa.FisicaJuridica = FisicaJuridica.Juridica;
                    Empresa.Save();

                    //-------------------------------------------------------------------------
                    // O GUID desta empresa será o GUID padrão de empresas
                    //-------------------------------------------------------------------------
                    connection.ExecuteNonQuery(@"UPDATE cfg_Configuracao SET Valor = @valor WHERE Propriedade = @propriedade;",
                        new[]
                    {
                        new Parameter
                        {
                            ParameterName = "@valor",
                            Value = Empresa.GUID
                        },
                        new Parameter
                        {
                            ParameterName = "@propriedade",
                            Value = "EmpresaDefault"
                        }
                    });
                    #endregion

                    #region Usuário padrão
                    OnSaving("Criando usuário padrão ...");
                    //-------------------------------------------------------------------------
                    // Definir o tipo de usuário.
                    //-------------------------------------------------------------------------
                    Usuario.TiposUsuarios = new List<ITipoUsuario> { new TipoUsuario().Find<ITipoUsuario>()[0] };
                    Usuario.FisicaJuridica = FisicaJuridica.Fisica;
                    Usuario.Save();

                    //-------------------------------------------------------------------------
                    // O GUID deste usuário será o GUID padrão de usuários
                    //-------------------------------------------------------------------------
                    connection.ExecuteNonQuery(@"UPDATE cfg_Configuracao SET Valor = @valor WHERE Propriedade = @propriedade;",
                        new[]
                    {
                        new Parameter
                        {
                            ParameterName = "@valor",
                            Value = Usuario.GUID
                        },
                        new Parameter
                        {
                            ParameterName = "@propriedade",
                            Value = "UsuarioDefault"
                        }
                    });
                    #endregion

                    #region Definir propriedades
                    Settings.EmpresaAtual = Empresa;
                    Settings.UsuarioAtual = Usuario;
                    #endregion

                    #region Contas Correntes
                    #region empresa
                    ContaCorrente cc = new ContaCorrente();
                    cc.Tipo = OpenPOS.Enuns.Cadastro.Financeiro.TipoContaCorrente.PagarReceber;
                    cc.Descricao = String.IsNullOrEmpty(Empresa.RazaoSocial) ?
                        (String.IsNullOrEmpty(Empresa.NomeFantasia) ? Unimake.Convert.ToString(Empresa.EGUID) :
                                                                      Empresa.NomeFantasia) : Empresa.RazaoSocial;
                    cc.Save();

                    //vincular com a empresa

                    connection.ExecuteNonQuery("UPDATE cad_Pessoa SET GUIDContaCorrente = @cc WHERE GUID = @g",
                        new[]{
                        new Parameter{
                            ParameterName="@cc",
                            Value = cc.GUID,
                        },
                        new Parameter{
                            ParameterName="@g",
                            Value = Empresa.GUID,
                        }
                    });
                    #endregion

                    #region usuário
                    cc = new ContaCorrente();
                    cc.Tipo = OpenPOS.Enuns.Cadastro.Financeiro.TipoContaCorrente.PagarReceber;
                    cc.Descricao = String.IsNullOrEmpty(Usuario.RazaoSocial) ?
                        (String.IsNullOrEmpty(Usuario.NomeFantasia) ? Unimake.Convert.ToString(Usuario.EGUID) :
                                                                      Usuario.NomeFantasia) : Usuario.RazaoSocial;
                    cc.Save();

                    //vincular com o usuário

                    connection.ExecuteNonQuery("UPDATE cad_Pessoa SET GUIDContaCorrente = @cc WHERE GUID = @g",
                        new[]{
                        new Parameter{
                            ParameterName="@cc",
                            Value = cc.GUID,
                        },
                        new Parameter{
                            ParameterName="@g",
                            Value = Usuario.GUID,
                        }
                    });
                    #endregion
                    #endregion

                    #region Administrador
                    OnSaving("Salvando o Administrador da aplicação.");

                    #region Tipo de usuário
                    ITipoUsuario tipoAdministrador = new TipoUsuario()
                    {
                        Administrador = true,
                        Descricao = "Administrador da aplicação"
                    };

                    tipoAdministrador.Save();
                    #endregion

                    IUsuario administrador = new Usuario()
                    {
                        RazaoSocial = "Administrador",
                        NomeFantasia = "Administrador",
                        Fisica = Usuario.Fisica,
                        Enderecos = Usuario.Enderecos,
                        CanaisComunicacao = Usuario.CanaisComunicacao,
                        FisicaJuridica = FisicaJuridica.Fisica,
                        NomeLogin = "******",
                        Senha = "Administrador123#",
                        TiposUsuarios = new List<ITipoUsuario>() { tipoAdministrador }
                    };

                    //O Administrador do sistema tem que ter acesso a todas as funcionalidades da aplicação
                    INivelAcesso nivelAcesssoAdministrador = new NivelAcesso();
                    nivelAcesssoAdministrador.Descricao = "Nível de acesso do administrador da aplicação";
                    nivelAcesssoAdministrador.UsuarioCadastro = administrador;
                    nivelAcesssoAdministrador.Save();

                    administrador.NivelAcesso = nivelAcesssoAdministrador;

                    administrador.Save();
                    #endregion

                    #region Supervisor da aplicação
                    OnSaving("Salvando o supervisor da aplicação");
                    #region Tipo de usuário
                    ITipoUsuario tipoSupervisor = new TipoUsuario()
                    {
                        Administrador = false,
                        Descricao = "Supervisor da aplicação"
                    };

                    tipoSupervisor.Save();
                    #endregion

                    IUsuario supervisor = new Usuario()
                    {
                        RazaoSocial = "Supervisor",
                        NomeFantasia = "Supervisor",
                        Fisica = Usuario.Fisica,
                        Enderecos = Usuario.Enderecos,
                        CanaisComunicacao = Usuario.CanaisComunicacao,
                        FisicaJuridica = FisicaJuridica.Fisica,
                        NomeLogin = "******",
                        Senha = "Supervisor123#",
                        TiposUsuarios = new List<ITipoUsuario>() { tipoSupervisor }
                    };

                    #region Nível de acesso
                    INivelAcesso nivelAcessoSupervisor = new NivelAcesso();
                    nivelAcessoSupervisor.Descricao = "Nível de acesso do supervisor da aplicação";
                    nivelAcessoSupervisor.UsuarioCadastro = supervisor;

                    //Controles que o supervisor da aplicação não terá acesso
                    nivelAcessoSupervisor.Regras.Add(new NivelAcessoRegra() { NomeControle = "mnuCadastro" });
                    nivelAcessoSupervisor.Regras.Add(new NivelAcessoRegra() { NomeControle = "mnuFinanceiro" });
                    nivelAcessoSupervisor.Regras.Add(new NivelAcessoRegra() { NomeControle = "mnuRelatorio" });

                    nivelAcessoSupervisor.Save();

                    supervisor.NivelAcesso = nivelAcessoSupervisor;
                    #endregion

                    supervisor.Save();
                    #endregion

                    #region Consumidor Final
                    OnSaving("Criando Consumidor Final ...");
                    ICliente consumidorFinal = new Cliente
                    {
                        NomeFantasia = "Consumidor Final",
                        RazaoSocial = "Consumidor Final",
                        Enderecos = Usuario.Enderecos,
                        CanaisComunicacao = Usuario.CanaisComunicacao,
                        Fisica = Usuario.Fisica,
                        FisicaJuridica = FisicaJuridica.Fisica
                    };

                    consumidorFinal.Save();

                    CurrentConfig.SaveConfig("ConsumidorFinal", consumidorFinal.GUID, "Consumidor Final da aplicação");

                    #region Conta corrente
                    ContaCorrente conta = new ContaCorrente();
                    conta.Tipo = OpenPOS.Enuns.Cadastro.Financeiro.TipoContaCorrente.PagarReceber;
                    conta.Descricao = String.IsNullOrEmpty(consumidorFinal.RazaoSocial) ?
                        (String.IsNullOrEmpty(consumidorFinal.NomeFantasia) ? Unimake.Convert.ToString(consumidorFinal.EGUID) :
                                                                      consumidorFinal.NomeFantasia) : consumidorFinal.RazaoSocial;
                    conta.Save();

                    //vincular com a empresa

                    connection.ExecuteNonQuery("UPDATE cad_Pessoa SET GUIDContaCorrente = @cc WHERE GUID = @g",
                        new[]{
                        new Parameter{
                            ParameterName="@cc",
                            Value = conta.GUID,
                        },
                        new Parameter{
                            ParameterName="@g",
                            Value = consumidorFinal.GUID,
                        }
                    });
                    #endregion
                    #endregion

                    #region Analista de crédito
                    OnSaving("Criando o analista de crédito ...");

                    ITipoUsuario tipoAnalista = new TipoUsuario
                    {
                        Administrador = false,
                        Descricao = "Analista de crédito"
                    };

                    tipoAnalista.Save();

                    IUsuario analistaCredito = new Usuario
                    {
                        NomeFantasia = "Analista de crédito",
                        RazaoSocial = "Analista de crédito",
                        Fisica = Usuario.Fisica,
                        Enderecos = Usuario.Enderecos,
                        CanaisComunicacao = Usuario.CanaisComunicacao,
                        FisicaJuridica = FisicaJuridica.Fisica,
                        NomeLogin = "******",
                        Senha = "Analista123#",
                        TiposUsuarios = new List<ITipoUsuario>() { tipoAnalista }
                    };

                    analistaCredito.Save();

                    CurrentConfig.SaveConfig("AnalistaCredito", analistaCredito.GUID, "Pessoa responsável pela a análise de crédito do cliente nos faturamentos");
                    #endregion

                    #region Fiscal de caixa
                    OnSaving("Criando o fiscal de caixa ...");
                    ITipoUsuario tipoFiscal = new TipoUsuario
                    {
                        Administrador = false,
                        Descricao = "Fiscal de caixa"
                    };

                    tipoFiscal.Save();

                    IUsuario fiscalCaixa = new Usuario
                    {
                        NomeFantasia = "Fiscal de caixa",
                        RazaoSocial = "Fiscal de caixa",
                        Fisica = Usuario.Fisica,
                        Enderecos = Usuario.Enderecos,
                        CanaisComunicacao = Usuario.CanaisComunicacao,
                        FisicaJuridica = FisicaJuridica.Fisica,
                        NomeLogin = "******",
                        Senha = "Fiscal123#",
                        TiposUsuarios = new List<ITipoUsuario>() { tipoFiscal }

                    };

                    fiscalCaixa.Save();

                    CurrentConfig.SaveConfig("FiscalCaixa", fiscalCaixa.GUID, "É o fiscal de caixa da aplicação");
                    #endregion

                    #region Salvar itens especiais
                    new Data.Cadastro.Item.Especial.DespesaAcessoria().Save();
                    new Data.Cadastro.Item.Especial.Desconto().Save();
                    new Data.Cadastro.Item.Especial.EncargoFinanceiro().Save();
                    new Data.Cadastro.Item.Especial.Frete().Save();
                    new Data.Cadastro.Item.Especial.Seguro().Save();
                    #endregion

                    #region Tipo de instalação do terminal
                    if (TipoInstalacaoTerminal == TipoInstalacaoTerminal.PDV)
                    {
                        #region Configurações gerais
                        SaveConfig("TEF_CodigoLoja", TEFCodigoLoja, "Código de loja cadastrado no TEF.");
                        SaveConfig("TEF_EnderecoIP", TEFEnderecoIP, "Endereço de IP do servidor TEF.");
                        SaveConfig("TEF_MultiplosCartoes", TEFMultiplosCartoes ? 1 : 0, "Habilita o TEF para trabalhar com múltiplos cartões");
                        SaveConfig("TEF_Numerocartoes", TEFNumeroCartoes, "Especifica o número de cartões que a aplicação utilizará para pagamentos com TEF");
                        SaveConfig("TEF_NumeroTerminal", TEFNumeroTerminal, "Número de terminal do cliente TEF.");
                        SaveConfig("SH_NumeroLaudo", SHNumeroLaudo, "Número do laudo da homologação PAF-ECF");
                        SaveConfig("SH_Versao", SHVersao, "Versão da aplicação homologada no PAF-ECF");
                        SaveConfig("SH_NomeApp", SHNomeApp, "Nome da aplicação homologada para o PAF-ECF");
                        SaveConfig("SH_CNPJ", SHCNPJ, "CNPJ da empresa desenvolvedora do PAF");
                        SaveConfig("SH_IE", SHIE, "Inscrição Estadual da empresa desenvolvedora do PAF");
                        SaveConfig("SH_IM", SHIM, "Inscrição Municipal da empresa desenvolvedora do PAF");
                        SaveConfig("SH_Nome", SHNome, "Nome da empresa desenvolvedora do PAF");
                        SaveConfig("SH_ER_PAF_ECF", SHERPAFECF, "Versão da especificação do PAF-ECF");
                        SaveConfig("TEF_HabilitaCieloPremia", TEFHabilitaCieloPremia ? 1 : 0, "Este estabelecimento participa do Cielo Premia.");
                        SaveConfig("ECF_MensagemRodape", ECFMensagemRodape, "Mensagem de rodapé exibida ao final do cupom.");
                        #endregion

                        #region PDV

                        OnSaving("Criando PDV ...");

                        Impressora.PDV.Save();
                        #endregion

                        #region Impressora padrão
                        OnSaving("Criando Impressora ...");
                        Impressora.Save();
                        #endregion

                        #region Caixa
                        OnSaving("Criando cadastro de caixa...");
                        ICaixa caixa = new Caixa();
                        caixa.PDV = Impressora.PDV;
                        caixa.Descricao = Settings.MachineName;
                        caixa.Status = OpenPOS.Enuns.FrenteCaixa.Cadastro.Caixa.Status.Aberto;
                        #endregion

                        #region Operador de caixa
                        OnSaving("Criando operador de caixa padrão...");
                        ITipoUsuario tipoUsuario = new TipoUsuario
                        {
                            Administrador = false,
                            Descricao = "Operador de Caixa"
                        };

                        tipoUsuario.Save();

                        IOperadorCaixa operador = new OperadorCaixa
                        {
                            Fisica = Usuario.Fisica,
                            NomeFantasia = "Operador Padrão",
                            RazaoSocial = "Operador Padrão",
                            Enderecos = Usuario.Enderecos,
                            CanaisComunicacao = Usuario.CanaisComunicacao,
                            NomeLogin = "******",
                            Senha = "Oper123#",
                            FisicaJuridica = FisicaJuridica.Fisica,
                            TiposUsuarios = new List<ITipoUsuario> { tipoUsuario }
                        };

                        #region Nível de Acesso

                        INivelAcesso nivelAcessoOperadorDeCaixa = new NivelAcesso();

                        nivelAcessoOperadorDeCaixa.Descricao = "Operador de caixa";
                        nivelAcessoOperadorDeCaixa.UsuarioCadastro = operador;

                        // Controles que são negados para o usuário do
                        // tipo operador de caixa.
                        nivelAcessoOperadorDeCaixa.Regras.Add(new NivelAcessoRegra() { NomeControle = "mnuCadastro" });
                        nivelAcessoOperadorDeCaixa.Regras.Add(new NivelAcessoRegra() { NomeControle = "mnuLancamento" });
                        nivelAcessoOperadorDeCaixa.Regras.Add(new NivelAcessoRegra() { NomeControle = "mnuFinanceiro" });
                        nivelAcessoOperadorDeCaixa.Regras.Add(new NivelAcessoRegra() { NomeControle = "mnuRelatorio" });
                        nivelAcessoOperadorDeCaixa.Regras.Add(new NivelAcessoRegra() { NomeControle = "mnuCadastro" });
                        nivelAcessoOperadorDeCaixa.Regras.Add(new NivelAcessoRegra() { NomeControle = "optBarVenda" });
                        nivelAcessoOperadorDeCaixa.Regras.Add(new NivelAcessoRegra() { NomeControle = "optBarDAV" });
                        nivelAcessoOperadorDeCaixa.Regras.Add(new NivelAcessoRegra() { NomeControle = "tbtnDAV" });
                        nivelAcessoOperadorDeCaixa.Regras.Add(new NivelAcessoRegra() { NomeControle = "tbtnConsultas" });
                        nivelAcessoOperadorDeCaixa.Regras.Add(new NivelAcessoRegra() { NomeControle = "tbtnOutros" });
                        nivelAcessoOperadorDeCaixa.Regras.Add(new NivelAcessoRegra() { NomeControle = "tbtnVendas" });

                        nivelAcessoOperadorDeCaixa.Save();

                        operador.NivelAcesso = nivelAcessoOperadorDeCaixa;

                        #endregion

                        operador.Save();

                        CurrentConfig.SaveConfig("OperadorCaixa", tipoUsuario.GUID, "Define o tipo de operador de caixa.");
                        #endregion

                        #region Formas de pagamentos
                        OnSaving("Salvando formas de pagamento ...");
                        foreach (IImpressoraFormaPagto item in FormasPagto)
                        {
                            item.FormaPagamento.Save();
                            item.Impressora = Impressora;
                            item.Save();
                        }
                        #endregion

                        #region Alíquota da impressora fiscal
                        OnSaving("Salvando alíquotas da impressora fiscal ...");

                        foreach (object[] aliq in Aliquotas)
                        {
                            IAliquota aliquota = new Aliquota();
                            GUID guidAliquota = (GUID)aliq[3].ToString();

                            //Se não foi encontrado o GUID da AliquotaTributo não faz o vínculo
                            if (!guidAliquota.IsNullOrEmpty())
                            {
                                aliquota.TributoAliquota = new AliquotaTributo(guidAliquota);
                                aliquota.Impressora = Impressora;
                                aliquota.Indice = aliq[1].ToString();
                                aliquota.Aliquota = Unimake.Convert.ToDouble(aliquota.TributoAliquota.Valor);
                                aliquota.Save();
                            }
                        }
                        #endregion

                        #region Clisitef
                        SaveCliSiTef();
                        #endregion
                    }
                    #endregion
                }
                else if (CurrentConfig.TipoInstalacao == Enuns.TipoInstalacao.ClientePostgreSQL ||
                         CurrentConfig.TipoInstalacao == Enuns.TipoInstalacao.ClienteSQLite)
                {
                    #region Tipo de instalação do terminal
                    if (TipoInstalacaoTerminal == TipoInstalacaoTerminal.PDV)
                    {
                        #region PDV
                        OnSaving("Criando PDV ...");
                        Impressora.PDV.Save();
                        #endregion

                        #region Impressora padrão
                        OnSaving("Criando Impressora ...");
                        Impressora.Save();
                        #endregion

                        #region Caixa
                        OnSaving("Criando cadastro de caixa...");
                        ICaixa caixa = new Caixa();
                        caixa.PDV = Impressora.PDV;
                        caixa.Descricao = Settings.MachineName;
                        caixa.Status = OpenPOS.Enuns.FrenteCaixa.Cadastro.Caixa.Status.Aberto;
                        #endregion

                        #region Formas de pagamentos
                        OnSaving("Salvando formas de pagamento ...");
                        foreach (IImpressoraFormaPagto item in FormasPagto)
                        {
                            item.FormaPagamento.Save();
                            item.Impressora = Impressora;
                            item.Save();
                        }
                        #endregion

                        #region Alíquota da impressora fiscal
                        OnSaving("Salvando alíquotas da impressora fiscal ...");

                        foreach (object[] aliq in Aliquotas)
                        {
                            IAliquota aliquota = new Aliquota();
                            GUID guidAliquota = (GUID)aliq[3].ToString();

                            //Se não foi encontrado o GUID da AliquotaTributo não faz o vínculo
                            if (!guidAliquota.IsNullOrEmpty())
                            {
                                aliquota.TributoAliquota = new AliquotaTributo(guidAliquota);
                                aliquota.Impressora = Impressora;
                                aliquota.Indice = aliq[1].ToString();
                                aliquota.Aliquota = Unimake.Convert.ToDouble(aliquota.TributoAliquota.Valor);
                                aliquota.Save();
                            }
                        }
                        #endregion

                        #region Clisitef
                        SaveCliSiTef();
                        #endregion
                    }
                    #endregion
                }

                if (TipoInstalacao == Enuns.TipoInstalacao.ClientePostgreSQL || TipoInstalacao == TipoInstalacao.ServidorPostgreSQL)
                    UpdateAppConfig();

                connection.CommitTransaction();
            }
            catch
            {
                if (connection != null)
                {
                    if (connection.Transaction != null &&
                        connection.Transaction.State == TransactionState.Begin)
                        connection.RollbackTransaction();
                }
                throw;
            }
            finally
            {
                if (connection != null)
                    connection.Close();
            }
        }
Esempio n. 14
0
        public void AnalisarCreditoCliente()
        {
            #region DAV

            #region Vendedor
            IVendedor vendedor = new Vendedor().Find<IVendedor>(new Where { Limit = new Limit(1) })[0];
            #endregion

            #region DadoPessoa
            ICliente cliente = new Cliente().Find<ICliente>(new Where { Limit = 1 })[0];
               // cliente.ValorLimiteCredto = 1000;
               // cliente.PercentualRisco = 10;
            cliente.Save();
            IDadoPessoa dadoPessoa = new DadoPessoa()
            {
                Cliente = cliente
            };
            #endregion

            dav.DadoPessoa = dadoPessoa;
            dav.TabelaPreco = new OpenPOS.Data.Cadastro.TabelaPreco.TabelaPreco().Find<Model.Cadastro.TabelaPreco.ITabelaPreco>(new Where { Limit = new Limit(1) })[0];
            dav.Descricao = "Orcamento de venda";

            ITabelaPreco tabela = OpenPOS.Settings.TabelaPrecoPadrao;
            #region Itens do DAV
            dav.Itens.Add(new OpenPOS.Data.Faturamento.Lancamento.Movimento.Item.DAV.Item
            {
                Quantidade = 25,
                ValorUnitarioBruto = 15,
                DescricaoNF = "Produto de teste um",
                ItemMovimentado = tabela.Itens[0].Item,
                Conferido = true,
                TabelaPreco = tabela,
                InformacaoAdicional = "Informações adicionais dos produtos, mercadorias e serviços"
            });

            GUID guidAnalista = (GUID)OpenPOS.Settings.Setting.AnalistaCredito;

            dav.AnaliseCredito = new AnaliseCredito()
            {
                Analista = new Usuario().Find<IUsuario>(new Where
                {
                    { "cad_PessoaUsuarioTipo.GUIDTipoUsuario", guidAnalista }
                })[0],
                DataHoraAnalise = System.DateTime.Now
            };

            #endregion

            GUID = dav.Save();
            #endregion

            #region Análise
            //-------------------------------------------------------------------------
            // Fazer a análise deste cliente
            // Iremos simular todas as situações
            //-------------------------------------------------------------------------

            //-------------------------------------------------------------------------
            // Cliente aprovado
            //-------------------------------------------------------------------------
            cliente.ValorLimiteCredto = dav.ValorTotalLiquido + 1000;
            AnaliseCreditoResult resultAnalise = AnalisarCredito.Analisar(dav);
            Assert.AreEqual(resultAnalise.Status, StatusAnaliseResult.Aprovado);

            //-------------------------------------------------------------------------
            // Aprovado Somente A Vista
            //-------------------------------------------------------------------------
            cliente.ValorLimiteCredto = dav.ValorTotalLiquido + 1000;
            cliente.Situacao = Situacao.SemCredito;
            resultAnalise = AnalisarCredito.Analisar(dav);
            Assert.AreEqual(resultAnalise.Status, StatusAnaliseResult.AprovadoSomenteAVista);

            //-------------------------------------------------------------------------
            // Aprovado Com Risco
            //-------------------------------------------------------------------------
            cliente.ValorLimiteCredto = dav.ValorTotalLiquido - 15.5;
            cliente.PercentualRisco = 10;
            resultAnalise = AnalisarCredito.Analisar(dav);
            Assert.AreEqual(resultAnalise.Status, StatusAnaliseResult.AprovadoComRisco);

            //-------------------------------------------------------------------------
            // Aguardar Analise
            //-------------------------------------------------------------------------
            cliente.ValorLimiteCredto = dav.ValorTotalLiquido + 1000;
            cliente.Situacao = Situacao.AAutorizar;
            resultAnalise = AnalisarCredito.Analisar(dav);
            Assert.AreEqual(resultAnalise.Status, StatusAnaliseResult.AguardarAnalise);

            //-------------------------------------------------------------------------
            // Aguardar analise 2
            //-------------------------------------------------------------------------
            cliente.ValorDocumentoAberto = 10000;
            cliente.ValorLimiteCredto = 1000;
            resultAnalise = AnalisarCredito.Analisar(dav);
            Assert.AreEqual(resultAnalise.Status, StatusAnaliseResult.AguardarAnalise);

            //-------------------------------------------------------------------------
            // Bloqueado
            //-------------------------------------------------------------------------
            cliente.ValorLimiteCredto = dav.ValorTotalLiquido + 1000;
            cliente.Situacao = Situacao.Bloqueado;
            resultAnalise = AnalisarCredito.Analisar(dav);
            Assert.AreEqual(resultAnalise.Status, StatusAnaliseResult.Bloqueado);

            //-------------------------------------------------------------------------
            // Cliente Nao Identificado
            //-------------------------------------------------------------------------
            cliente.ValorLimiteCredto = dav.ValorTotalLiquido + 1000;
            dav.DadoPessoa.Cliente = null;
            resultAnalise = AnalisarCredito.Analisar(dav);
            Assert.AreEqual(resultAnalise.Status, StatusAnaliseResult.ClienteNaoIdentificado);
            #endregion
        }
Esempio n. 15
0
        public void CalcularPreco()
        {
            #region buscar clientes
            IList<ICliente> clientes = new Cliente().Find<ICliente>(new Where { Limit = new Limit(3, 0) });
            #endregion

            #region buscar itens
            IList<IAcabado> produtos = new Acabado().Find<IAcabado>(new Where { Limit = new Limit(3, 0) });

            Model.Faturamento.Lancamento.Movimento.Item.VendaCF.IItem item = new OpenPOS.Data.Faturamento.Lancamento.Movimento.Item.VendaCF.Item();
            item.ItemMovimentado = produtos[0];
            #endregion

            #region tabela de preço
            //-------------------------------------------------------------------------
            // Gravar um tabela de preços para garantir que iremos ter uma tabela
            //-------------------------------------------------------------------------
            TabelaPrecoTest precoTest = new TabelaPrecoTest();
            precoTest.Gravar();

            //-------------------------------------------------------------------------
            // Carregar esta tabela para uso futuro
            //-------------------------------------------------------------------------
            ITabelaPreco tabela = new TabelaPreco(precoTest.GUID);
            #endregion

            #region Regra com 10% desconto
            IDesconto desconto = new Desconto().Find<IDesconto>(new Where { Limit = new Limit(1, 0) })[0] as IDesconto;

            new PrecoRegra
            {
                Descricao = "Regra desconto 10% Geral",
                TabelaPreco = tabela,
                ItensEspeciais = new List<IPrecoRegraItemEspecial>{
                new PrecoRegraItemEspecial {
                    ItemEspecial  = desconto,
                    TipoValor = Enuns.Cadastro.TipoValor.Percentual,
                    Valor= 10
                }
            }
            }.Save();
            #endregion

            #region Regra com 25% desconto para o cliente posição 0
            desconto = new Desconto().Find<IEspecial>(new Where { Limit = new Limit(1, 0) })[0] as IDesconto;
            new PrecoRegra
            {
            Descricao = "Regra desconto 25% cliente posição 0",
            TabelaPreco = tabela,
            ItensEspeciais = new List<IPrecoRegraItemEspecial>{

                    new PrecoRegraItemEspecial {
                    ItemEspecial  = desconto,
                    TipoValor = Enuns.Cadastro.TipoValor.Percentual,
                    Valor= 25
                }
            }
            }.Save();
            #endregion

            #region Regra com 30% desconto para o cliente posição 0 e produto 0
            desconto = new Desconto().Find<IEspecial>(new Where { Limit = new Limit(1, 0) })[0] as IDesconto;

            new PrecoRegra
            {
                Descricao = "Regra desconto 30% cliente e produto posição 0",
                TabelaPreco = tabela,
                ItensEspeciais = new List<IPrecoRegraItemEspecial>{
                new PrecoRegraItemEspecial {
                    ItemEspecial  = desconto,
                    TipoValor = Enuns.Cadastro.TipoValor.Percentual,
                    Valor= 30
                }
            }
            }.Save();
            #endregion

            #region Regra com 35% desconto para o produto posição 0
            desconto = new Desconto().Find<IEspecial>(new Where { Limit = new Limit(1, 0) })[0] as IDesconto;

            new PrecoRegra
            {
                Descricao = "Regra desconto 35% cliente e produto posição 0",
                TabelaPreco = tabela,
                ItensEspeciais = new List<IPrecoRegraItemEspecial>{
                new PrecoRegraItemEspecial {
                    ItemEspecial  = desconto,
                    TipoValor = Enuns.Cadastro.TipoValor.Percentual,
                    Valor= 35
                }
            }
            }.Save();
            #endregion

            //-------------------------------------------------------------------------
            // Calcular o preço para o cliente na posição 0
            //-------------------------------------------------------------------------
            RegraPrecoResult preco = new CalcularPreco(item).ExecutarRegra(new RegraPrecoFilter
            {
                Pessoa = clientes[0]
            });

            WriteLine("Preço final: {0:C2}", preco.PrecoFinal);
            DumpElement(preco);

            //-------------------------------------------------------------------------
            // Calcular o preço para o cliente e produto na posição 0
            //-------------------------------------------------------------------------
            preco = new CalcularPreco(item).ExecutarRegra(new RegraPrecoFilter
            {
                Pessoa = clientes[0],
                GrupoItem = produtos[0].GrupoItem
            });

            WriteLine("Preço final: {0:C2}", preco.PrecoFinal);
            DumpElement(preco);

            //-------------------------------------------------------------------------
            // Calcular o preço para o produto na posição 0
            //-------------------------------------------------------------------------
            preco = new CalcularPreco(item).ExecutarRegra(new RegraPrecoFilter
            {
                GrupoItem = produtos[0].GrupoItem
            });

            WriteLine("Preço final: {0:C2}", preco.PrecoFinal);
            DumpElement(preco);

            //-------------------------------------------------------------------------
            // Calcular o preço com todo mundo nulo
            //-------------------------------------------------------------------------
            preco = new CalcularPreco(item).ExecutarRegra(new RegraPrecoFilter
            {
            });

            WriteLine("Preço final: {0:C2}", preco.PrecoFinal);
            DumpElement(preco);
        }
        public override void Gravar()
        {
            PreVenda pv = new PreVenda();

            #region Vendedor
            Model.Cadastro.Endereco.IEndereco end = new Data.Cadastro.Endereco.Endereco().Find<Model.Cadastro.Endereco.IEndereco>(new Where { Limit = 1 })[0];

            OpenPOS.Data.Cadastro.Pessoa.Fisica.Fisica fisica = new OpenPOS.Data.Cadastro.Pessoa.Fisica.Fisica();
            fisica.CPF = "05210438910";
            fisica.DataNascimento = new DateTime(1985, 07, 27);
            fisica.EstadoCivil = Enuns.Cadastro.Pessoa.EstadoCivil.Casado;
            fisica.MaeNome = "Teste";
            fisica.PaiNome = "Teste";
            fisica.RG = "90702343";
            fisica.RGEmissao = new DateTime(1995, 12, 12);
            fisica.RGEstado = end.Estado;
            fisica.RGOrgao = "SSPPR";
            fisica.RGTipoVisto = "";
            fisica.Sexo = Enuns.Cadastro.Pessoa.Sexo.Masculino;

            OpenPOS.Data.Cadastro.Pessoa.Juridica.Juridica juridica = new OpenPOS.Data.Cadastro.Pessoa.Juridica.Juridica();
            juridica.CNPJ = "75480764000120";
            juridica.DataAbertura = new DateTime(1999, 10, 10);
            juridica.IM = "1205";
            juridica.ISuf = "";
            juridica.RamoAtividade = new RamoAtividade().Find<IRamoAtividade>()[0];

            OpenPOS.Data.Cadastro.Pessoa.Endereco endereco = new OpenPOS.Data.Cadastro.Pessoa.Endereco();
            endereco.CaixaPostal = "123";
            endereco.Cobranca = true;
            endereco.Complemento = "teste";
            endereco.Correspondencia = true;
            endereco.Endereco = end;
            endereco.Entrega = true;
            endereco.Faturamento = true;
            endereco.Numero = "1234";
            endereco.Principal = true;
            endereco.Proximidade = "Estadio";
            endereco.Retirada = true;
            endereco.TipoEndereco = Enuns.Cadastro.Endereco.TipoEndereco.Principal;

            IVendedor vendedor = new Vendedor().Find<IVendedor>(new Where { Limit = new Limit(1, 1) })[0];
            #endregion

            #region DadoPessoa

            Model.Faturamento.Lancamento.Movimento.IDadoPessoa dadoPessoa =
                new Data.Faturamento.Lancamento.Movimento.DadoPessoa.DadoPessoa();

            ICliente cliente = new Cliente().Find<ICliente>(new Where { Limit = new Limit(1, 1) })[0];
            dadoPessoa.Cliente = cliente;
            #endregion

            pv.TabelaPreco = new Data.Cadastro.TabelaPreco.TabelaPreco().Find<Model.Cadastro.TabelaPreco.ITabelaPreco>(new Where { Limit = new Limit(1) })[0];
            pv.DadoPessoa = dadoPessoa;
            pv.COO = 123457;

            #region Frete
            Frete frete = new Frete();
            frete.Descricao = "Frete";
            frete.Save();
            #endregion

            #region Desconto
            Desconto desconto = new Desconto();
            desconto.Descricao = "Desconto";
            desconto.Save();
            #endregion

            #region Encargos
            EncargoFinanceiro encargoFinanceiro = new EncargoFinanceiro();
            encargoFinanceiro.Descricao = "Encargo Financeiro";
            encargoFinanceiro.Save();
            #endregion

            #region CFOP
            ICFOP cfop = new CFOP().Find<ICFOP>(new Where { Limit = new Limit(1, 1) })[0];
            #endregion

            #region items
            ProdutoAcabadoTest acabadoTest = new ProdutoAcabadoTest();

            for(int i = 0; i < 3; i++)
            {
                acabadoTest.Gravar();
                pv.Itens.Add(new Item
                {
                    Quantidade = new Random().NextDouble(7, 21),
                    ValorUnitarioBruto = new Random().NextDouble(7, 42),
                    DescricaoNF = "Produto de teste um",
                    Status = 0,
                    ItemMovimentado = new Acabado(acabadoTest.GUID),
                    CFOP = cfop,
                    Vendedor = vendedor,
                    ItensEspeciais = new List<IEspecial> {
                    new Especial{
                        Ordem = 0,
                        ItemEspecial  = frete,
                        Valor = 10
                    },
                    new Especial{
                        Ordem = 1,
                        ItemEspecial = desconto,
                        Valor = 10
                    },
                    new Especial{
                        Ordem = 2,
                        ItemEspecial = encargoFinanceiro,
                        Valor = 10
                    },
                }
                });
            }
            #endregion

            #region itens especiais
            pv.ItensEspeciais = new List<IEspecial> {
                    new Especial{
                        Ordem = 0,
                        ItemEspecial  = frete,
                        Valor = 12
                    },
                    new Especial{
                        Ordem = 1,
                        ItemEspecial = desconto,
                        Valor = 12
                    },
                    new Especial{
                        Ordem = 2,
                        ItemEspecial = desconto,
                        Valor = 12
                    },
                    new Especial{
                        Ordem = 3,
                        ItemEspecial = encargoFinanceiro,
                        Valor = 12
                    }};
            #endregion

            GUID = pv.Save();
        }
Esempio n. 17
0
 public static ICliente CriarClienteNaoDefinido()
 {
     Cliente cliente = new Cliente(GUID.NaoDefinido);
     IList<IEndereco> ends = cliente.Enderecos;
     cliente.Fisica.CPF = "14804754326";
     return cliente;
 }
Esempio n. 18
0
        ICliente CriarCliente()
        {
            Continente t = new Continente();
            t.Nome = "Europa";
            GUID guidContinente = t.Save();
            Pais p = new Pais();
            p.Nome = "Brasil";
            p.Abreviatura = "BR";
            p.CodBACEN = "1234";
            p.Continente = t;
            GUID guidPais = p.Save();
            Estado e = new Estado();
            e.Nome = "Europa";
            e.CodigoIBGE = "41256";
            e.UF = "PR";
            e.Pais = p;
            GUID guidEstado = e.Save();
            Municipio m = new Municipio();
            m.Abreviatura = "PVI";
            m.CodigoIBGE = "123546";
            m.Estado = e;
            m.Nome = "Paranavaí";
            GUID guidMunicipio = m.Save();
            Cidade c = new Cidade();
            c.Abreviatura = "GR";
            c.Municipio = m;
            c.Nome = "Graciosa";
            GUID = c.Save();

            Logradouro l = new Logradouro();
            l.Descricao = "Avenida";
            l.Abreviatura = "Av";
            GUID guidLogradouro = l.Save();

            Bairro b = new Bairro();
            b.Cidade = c;
            b.Descricao = "Centro";
            GUID guidBairro = b.Save();

            OpenPOS.Data.Cadastro.Endereco.Endereco end = new OpenPOS.Data.Cadastro.Endereco.Endereco();
            end.Logradouro = l;
            end.CEP = "87704020";
            end.Endereco = "Joaquim da Silva";
            end.Bairro = b;
            GUID = end.Save();

            Cliente cliente = new Cliente();
            cliente.FisicaJuridica = Enuns.Cadastro.Pessoa.FisicaJuridica.Fisica;
            OpenPOS.Data.Cadastro.Pessoa.Fisica.Fisica fisica = new OpenPOS.Data.Cadastro.Pessoa.Fisica.Fisica();
            fisica.CPF = "05210438910";
            fisica.DataNascimento = new DateTime(1985, 07, 27);
            fisica.EstadoCivil = Enuns.Cadastro.Pessoa.EstadoCivil.Casado;
            fisica.MaeNome = "Teste";
            fisica.PaiNome = "Teste";
            fisica.RG = "90702343";
            fisica.RGEmissao = new DateTime(1995, 12, 12);
            Estado estado = new Estado(guidEstado);
            fisica.RGEstado = estado;
            fisica.RGOrgao = "SSPPR";
            fisica.RGTipoVisto = "";
            fisica.Sexo = Enuns.Cadastro.Pessoa.Sexo.Masculino;

            OpenPOS.Data.Cadastro.Pessoa.Juridica.Juridica juridica = new OpenPOS.Data.Cadastro.Pessoa.Juridica.Juridica();
            juridica.CNPJ = "75480764000120";
            juridica.DataAbertura = new DateTime(1999, 10, 10);
            juridica.IM = "1205";
            juridica.ISuf = "";
            juridica.RamoAtividade = new RamoAtividade().Find<IRamoAtividade>()[0];

            OpenPOS.Data.Cadastro.Pessoa.Endereco endereco = new OpenPOS.Data.Cadastro.Pessoa.Endereco();
            endereco.CaixaPostal = "123";
            endereco.Cobranca = true;
            endereco.Complemento = "teste";
            endereco.Correspondencia = true;
            endereco.Endereco = end;
            endereco.Entrega = true;
            endereco.Faturamento = true;
            endereco.Numero = "1234";
            endereco.Principal = true;
            endereco.Proximidade = "Estadio";
            endereco.Retirada = true;
            endereco.TipoEndereco = Enuns.Cadastro.Endereco.TipoEndereco.Principal;
            cliente.Enderecos = new List<IEndereco> { endereco };
            cliente.Fisica = fisica;
            cliente.Juridica = juridica;
            cliente.NomeFantasia = "Teste";
            cliente.Observacao = "teste unitário";
            cliente.RazaoSocial = "Teste";

            #region Canais de comunicação
            cliente.CanaisComunicacao = new List<ICanalComunicacao>
            {
                new CanalComunicacao{
                    TipoCanal  = TipoCanal.Celular,
                    NomeContato = new Random().NextString(20),
                    Principal =true,
                    IdentificadorCanal  = "2918219219827",
                    Ramal ="",
                    Observacao  = ""
                },
                new CanalComunicacao{
                    TipoCanal  = TipoCanal.Facebook,
                    NomeContato = new Random().NextString(20),
                    Principal =false,
                    IdentificadorCanal  = "http://facebook.com",
                    Ramal ="",
                    Observacao  = ""
                }
            };
            #endregion

            #region Análise de crédito
            cliente.ValorLimiteCredto = 1000;
            cliente.PercentualRisco = 5.50;
            cliente.Situacao = Situacao.AAutorizar;
            #endregion

            cliente.Save();
            return cliente;
        }
Esempio n. 19
0
        public override void Gravar()
        {
            #region DAV

            DAV dav = new DAV();

            #region Vendedor
            Continente t = new Continente();
            t.Nome = "Europa";
            GUID guidContinente = t.Save();
            Pais p = new Pais();
            p.Nome = "Brasil";
            p.Abreviatura = "BR";
            p.CodBACEN = "1234";
            p.Continente = t;
            GUID guidPais = p.Save();
            Estado e = new Estado();
            e.Nome = "Europa";
            e.CodigoIBGE = "41256";
            e.UF = "PR";
            e.Pais = p;
            GUID guidEstado = e.Save();
            Municipio m = new Municipio();
            m.Abreviatura = "PVI";
            m.CodigoIBGE = "123546";
            m.Estado = e;
            m.Nome = "Paranavaí";
            GUID guidMunicipio = m.Save();
            Cidade c = new Cidade();
            c.Abreviatura = "GR";
            c.Municipio = m;
            c.Nome = "Graciosa";
            GUID = c.Save();

            Logradouro l = new Logradouro();
            l.Descricao = "Avenida";
            l.Abreviatura = "Av";
            GUID guidLogradouro = l.Save();

            Bairro b = new Bairro();
            b.Cidade = c;
            b.Descricao = "Centro";
            GUID guidBairro = b.Save();

            OpenPOS.Data.Cadastro.Endereco.Endereco end = new OpenPOS.Data.Cadastro.Endereco.Endereco();
            end.Logradouro = l;
            end.CEP = "87704020";
            end.Endereco = "Joaquim da Silva";
            end.Bairro = b;
            string guidEndereco = end.Save();

            IVendedor vendedor = new Vendedor();
            vendedor.FisicaJuridica = Enuns.Cadastro.Pessoa.FisicaJuridica.Fisica;
            OpenPOS.Data.Cadastro.Pessoa.Fisica.Fisica fisica = new OpenPOS.Data.Cadastro.Pessoa.Fisica.Fisica();
            fisica.CPF = "05210438910";
            fisica.DataNascimento = new DateTime(1985, 07, 27);
            fisica.EstadoCivil = Enuns.Cadastro.Pessoa.EstadoCivil.Casado;
            fisica.MaeNome = "Teste";
            fisica.PaiNome = "Teste";
            fisica.RG = "90702343";
            fisica.RGEmissao = new DateTime(1995, 12, 12);
            Estado estado = new Estado(guidEstado);
            fisica.RGEstado = estado;
            fisica.RGOrgao = "SSPPR";
            fisica.RGTipoVisto = "";
            fisica.Sexo = Enuns.Cadastro.Pessoa.Sexo.Masculino;

            OpenPOS.Data.Cadastro.Pessoa.Juridica.Juridica juridica = new OpenPOS.Data.Cadastro.Pessoa.Juridica.Juridica();
            juridica.CNPJ = "75480764000120";
            juridica.DataAbertura = new DateTime(1999, 10, 10);
            juridica.IM = "1205";
            juridica.ISuf = "";
            juridica.RamoAtividade = new RamoAtividade().Find<IRamoAtividade>()[0];

            OpenPOS.Data.Cadastro.Pessoa.Endereco endereco = new OpenPOS.Data.Cadastro.Pessoa.Endereco();
            // endereco.GUID = guidEndereco;
            endereco.CaixaPostal = "123";
            endereco.Cobranca = true;
            endereco.Complemento = "teste";
            endereco.Correspondencia = true;
            endereco.Endereco = end;
            endereco.Entrega = true;
            endereco.Faturamento = true;
            endereco.Numero = "1234";
            endereco.Principal = true;
            endereco.Proximidade = "Estadio";
            endereco.Retirada = true;
            endereco.TipoEndereco = Enuns.Cadastro.Endereco.TipoEndereco.Principal;
            vendedor.Enderecos = new List<IEndereco> { endereco };
            vendedor.Fisica = fisica;
            vendedor.Juridica = juridica;
            vendedor.NomeFantasia = "Teste";
            vendedor.Observacao = "teste unitario";
            vendedor.RazaoSocial = "Teste";
            vendedor.TipoPessoa = Enuns.Cadastro.Pessoa.TipoPessoa.Vendedor;
            GUID guidVendedor = vendedor.Save();

            #endregion

            #region DadoPessoa

            Model.Faturamento.Lancamento.Movimento.IDadoPessoa dadoPessoa = new Data.Faturamento.Lancamento.Movimento.DadoPessoa.DadoPessoa();

            Cliente cliente = new Cliente()
            {
                FisicaJuridica = Enuns.Cadastro.Pessoa.FisicaJuridica.Fisica,
                Fisica = fisica,
                NomeFantasia = "Luciano",
                RazaoSocial = "Luciano Leandro",
                TipoPessoa = Enuns.Cadastro.Pessoa.TipoPessoa.Cliente,
                Enderecos = new List<IEndereco> { endereco }
            };
            cliente.Save();
            dadoPessoa.Cliente = cliente;

            #endregion
            dav.DadoPessoa = dadoPessoa;
            Item item1 = new Item()
            {
                Quantidade = 10,
                ValorUnitarioBruto = 12.5,
                DescricaoNF = "Produto de teste um",
                Vendedor = vendedor
            };
            dav.Itens.Add(item1);
            GUID guidDav = dav.Save();

            #endregion

            PreVenda pv = new PreVenda();

            OpenPOS.Data.Faturamento.Lancamento.Movimento.Item.PreVenda.Item itempv1 = new OpenPOS.Data.Faturamento.Lancamento.Movimento.Item.PreVenda.Item()
            {
                Quantidade = 10,
                ValorUnitarioBruto = 12.5,
                DescricaoNF = "Produto de teste um",
                Status = 0,

            };
            itempv1.Parent = pv;
            itempv1.ItensParent.Add((Item)dav.Itens[0].Clone());
            pv.Itens.Add(itempv1);

            guidPv = pv.Save();

            VendaCF v = new VendaCF();

            OpenPOS.Data.Faturamento.Lancamento.Movimento.Item.VendaCF.Item itemVCF = new OpenPOS.Data.Faturamento.Lancamento.Movimento.Item.VendaCF.Item
            {
                Quantidade = 25,
                ValorUnitarioBruto = 15,
                DescricaoNF = "Produto de teste um",
            };
            itemVCF.Parent = v;
            itemVCF.ItensParent.Add((Data.Faturamento.Lancamento.Movimento.Item.PreVenda.Item)pv.Itens[0].Clone());
            v.Itens.Add(itemVCF);
            GUID = v.Save();
        }