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 }
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 }
/// <summary> /// Instancia este objeto e apenas inicia as variáveis, não carrega nenhum dado da base de dados /// </summary> public MovimentoBase() : base() { DataEmissao = DateTime.Now; DataHoraCadastro = DateTime.Now; DataHoraMovimento = DateTime.Now; Itens = new List<IItem>(); Emitente = IndicadorProducao.Proprio; Situacao = SituacaoNotaFiscal.Normal; DadoPessoa = new DadoPessoa(); Impressora = new Impressora(); Registro04 = new Registro04(); AnaliseCredito = new AnaliseCredito(); Parcelas = new List<IParcela>(); ItensEspeciais = new List<IEspecial>(); CondicaoPagamento = new CondicaoPagamento(); MovimentosVinculados = new List<IMovimento>(); MovimentosMesclados = new List<IMovimento>(); Ocorrencias = new List<Model.Faturamento.Lancamento.Movimento.Ocorrencia.IOcorrencia>(); Baixa = new Data.Faturamento.Lancamento.Movimento.Baixa.Baixa(); Serie = new Data.Faturamento.Cadastro.Serie(); }