public NFCeViewModel(DestinatarioViewModel destinatarioViewModel, IDialogService dialogService, IEnviarNota enviarNotaController, INaturezaOperacaoService naturezaOperacaoService, IConfiguracaoService configuracaoService, IProdutoService produtoService, IDestinatarioService destinatarioService) { Pagamento = new PagamentoVO(); Produto = new ProdutoVO(); DestinatarioParaSalvar = new DestinatarioModel(); TransportadoraParaSalvar = new TransportadoraModel(); Destinatarios = new ObservableCollection <DestinatarioModel>(); Transportadoras = new ObservableCollection <TransportadoraModel>(); ProdutosCombo = new ObservableCollection <ProdutoEntity>(); AdicionarProdutoCmd = new RelayCommand <object>(AdicionarProdutoCmd_Execute, null); GerarPagtoCmd = new RelayCommand <object>(GerarPagtoCmd_Execute, null); EnviarNotaCmd = new RelayCommand <IClosable>(EnviarNotaCmd_Execute); LoadedCmd = new RelayCommand <string>(LoadedCmd_Execute, null); ClosedCmd = new RelayCommand(ClosedCmd_Execute, null); ExcluirProdutoNotaCmd = new RelayCommand <ProdutoVO>(ExcluirProdutoNotaCmd_Execute, null); ExcluirPagamentoCmd = new RelayCommand <PagamentoVO>(ExcluirPagamentoCmd_Execute, null); _dialogService = dialogService; _enviarNotaController = enviarNotaController; _naturezaOperacaoService = naturezaOperacaoService; _configuracaoService = configuracaoService; _produtoService = produtoService; _destinatarioService = destinatarioService; destinatarioViewModel.DestinatarioSalvoEvent += DestinatarioVM_DestinatarioSalvoEvent; Finalidades = new List <string>() { "Normal", "Complementar", "Ajuste", "Devolução" }; FormasPagamento = new Dictionary <string, string>() { { "Dinheiro", "Dinheiro" }, { "Cheque", "Cheque" }, { "CartaoCredito", "Cartão de Crédito" }, { "CartaoDebito", "Cartão de Débito" } //{ "CreditoLoja", "Crédito Loja" }, //{ "ValeAlimentacao", "Vale Alimentação" }, //{ "ValeRefeicao", "Vale Refeição" }, //{ "ValePresente", "Vale Presente"}, //{ "ValeCombustivel", "Vale Combustível"}, //{ "Outros", "Outros" } }; Parcelas = new List <int>() { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18 }; }
private void GerarPagtoCmd_Execute(object obj) { NotaFiscal.Pagamentos = NotaFiscal.Pagamentos ?? new ObservableCollection <PagamentoVO>(); Pagamento.ValidateModel(); if (!Pagamento.HasErrors) { NotaFiscal.Pagamentos.Add(Pagamento); Pagamento = new PagamentoVO(); } }
public void Deveria_limpar_lista_pagamentos_quando_produto_é_removido() { var configuracaoServiceMock = new Mock <IConfiguracaoService>(); configuracaoServiceMock .Setup(m => m.GetConfiguracao()) .Returns(new ConfiguracaoEntity()); var produtoServiceMock = new Mock <IProdutoService>(); produtoServiceMock .Setup(m => m.GetProdutosByNaturezaOperacao(It.IsAny <string>())) .Returns(new List <ProdutoEntity>() { _notaFiscalFixture.ProdutoEntity }); var destinatarioServiceMock = new Mock <IDestinatarioService>(); destinatarioServiceMock.Setup(m => m.GetAll()) .Returns(new List <DestinatarioEntity>()); var destinatario = new DestinatarioViewModel(new Mock <IEstadoService>().Object, new Mock <IEmissorService>().Object, destinatarioServiceMock.Object, new Mock <IMunicipioService>().Object); var nfce = new NFCeViewModel(destinatario, new Mock <IDialogService>().Object, new Mock <IEnviarNota>().Object, new Mock <INaturezaOperacaoService>().Object, configuracaoServiceMock.Object, produtoServiceMock.Object, destinatarioServiceMock.Object); var totalLiquido = 65; var produto = new ProdutoVO() { Descontos = 0, Descricao = "Botijão P13", Frete = 0, Outros = 0, ProdutoSelecionado = _notaFiscalFixture.ProdutoEntity, QtdeProduto = 1, Seguro = 0, TotalBruto = 0, ValorUnitario = 0 }; produto.TotalLiquido = totalLiquido; nfce.LoadedCmd.Execute("55"); nfce.Produto = produto; nfce.AdicionarProdutoCmd.Execute(null); var pagamento = new PagamentoVO() { FormaPagamento = "Dinheiro", QtdeParcelas = 1, ValorParcela = totalLiquido, ValorTotal = totalLiquido.ToString() }; nfce.Pagamento = pagamento; nfce.GerarPagtoCmd.Execute(null); nfce.ExcluirProdutoNotaCmd.Execute(produto); Assert.Equal(0, nfce.Pagamento.ValorParcela); Assert.Empty(nfce.NotaFiscal.Pagamentos); }
private void LoadedCmd_Execute(string modelo) { NotaFiscal = new NFCeModel(); if (modelo != null && modelo.Equals("55")) { _modelo = Modelo.Modelo55; NotaFiscal.IsImpressaoBobina = false; } else { _modelo = Modelo.Modelo65; } NotaFiscal.DestinatarioSelecionado = new DestinatarioModel(); Pagamento = new PagamentoVO(); Pagamento.FormaPagamento = "Dinheiro"; var config = _configuracaoService.GetConfiguracao(); NotaFiscal.Serie = config.IsProducao ? config.SerieNFCe : config.SerieNFCeHom; NotaFiscal.Numero = config.IsProducao ? config.ProximoNumNFCe : config.ProximoNumNFCeHom; NotaFiscal.ModeloNota = "NFC-e"; NotaFiscal.DataEmissao = DateTime.Now; NotaFiscal.HoraEmissao = DateTime.Now; NotaFiscal.DataSaida = DateTime.Now; NotaFiscal.HoraSaida = DateTime.Now; NotaFiscal.IndicadorPresenca = PresencaComprador.Presencial; NotaFiscal.Finalidade = "Normal"; var produtos = _produtoService.GetProdutosByNaturezaOperacao("Venda"); foreach (var produto in produtos) { ProdutosCombo.Add(produto); } var destinatarios = _destinatarioService.GetAll(); foreach (var destDB in destinatarios) { Destinatarios.Add((DestinatarioModel)destDB); } }
public void Deveria_excluir_pagamento_gerado() { var configuracaoServiceMock = new Mock <IConfiguracaoService>(); configuracaoServiceMock .Setup(m => m.GetConfiguracao()) .Returns(new ConfiguracaoEntity()); var produtoServiceMock = new Mock <IProdutoService>(); produtoServiceMock .Setup(m => m.GetProdutosByNaturezaOperacao(It.IsAny <string>())) .Returns(new List <ProdutoEntity>() { _notaFiscalFixture.ProdutoEntity }); var destinatarioServiceMock = new Mock <IDestinatarioService>(); destinatarioServiceMock.Setup(m => m.GetAll()) .Returns(new List <DestinatarioEntity>()); var destinatario = new DestinatarioViewModel(new Mock <IEstadoService>().Object, new Mock <IEmissorService>().Object, destinatarioServiceMock.Object, new Mock <IMunicipioService>().Object); var nfce = new NFCeViewModel(destinatario, new Mock <IDialogService>().Object, new Mock <IEnviarNota>().Object, new Mock <INaturezaOperacaoService>().Object, configuracaoServiceMock.Object, produtoServiceMock.Object, destinatarioServiceMock.Object); nfce.LoadedCmd.Execute("55"); var pagamento = new PagamentoVO() { FormaPagamento = "Dinheiro", QtdeParcelas = 1, ValorParcela = 10, ValorTotal = "10" }; nfce.Pagamento = pagamento; nfce.GerarPagtoCmd.Execute(null); nfce.ExcluirPagamentoCmd.Execute(pagamento); Assert.DoesNotContain(pagamento, nfce.NotaFiscal.Pagamentos); Assert.Empty(nfce.NotaFiscal.Pagamentos); Assert.Equal(pagamento.ValorParcela * pagamento.QtdeParcelas, nfce.Pagamento.ValorParcela); }
private void ExcluirPagamentoCmd_Execute(PagamentoVO pagamento) { NotaFiscal.Pagamentos.Remove(pagamento); Pagamento.ValorParcela += pagamento.ValorParcela * pagamento.QtdeParcelas; }
internal async void VisualizarNotaFiscal(NFCeModel notaFiscal) { NotaFiscal = notaFiscal; //falta preencher pagamentos NotaFiscal.Pagamentos = new ObservableCollection <PagamentoVO>(); NotaFiscal.DestinatarioSelecionado = new DestinatarioModel(); string xml = await GetNotaXmlAsync(); var notaFiscalBO = _notaFiscalRepository.GetNotaFiscalFromNfeProcXml(xml); _notaFiscalBO = notaFiscalBO; //Preenche pagamentos if (notaFiscalBO.Pagamentos != null) { foreach (var pagamento in notaFiscalBO.Pagamentos) { var pagamentoVO = new PagamentoVO(); pagamentoVO.FormaPagamento = pagamento.FormaPagamentoTexto; pagamentoVO.ValorTotal = pagamento.Valor.ToString("N2", new CultureInfo("pt-BR")); NotaFiscal.Pagamentos.Add(pagamentoVO); } } else { NotaFiscal.Pagamentos.Add(new PagamentoVO() { FormaPagamento = "N/A" }); } //Preenche documento destinatário if (notaFiscalBO.Destinatario != null) { DocumentoDestinatario = notaFiscalBO.Destinatario.Documento; IsDestinatarioEstrangeiro = notaFiscalBO.Destinatario.TipoDestinatario == TipoDestinatario.Estrangeiro; } NotaFiscal.Finalidade = notaFiscalBO.Identificacao.FinalidadeConsumidor == FinalidadeConsumidor.ConsumidorFinal ? "Consumidor Final" : "Normal"; NotaFiscal.NaturezaOperacao = notaFiscalBO.Identificacao.NaturezaOperacao; NotaFiscal.Serie = notaFiscalBO.Identificacao.Serie.ToString("D3"); //Preenche produtos NotaFiscal.Produtos = new ObservableCollection <ProdutoVO>(); foreach (var produto in notaFiscalBO.Produtos) { var produtoVO = new ProdutoVO(); produtoVO.QtdeProduto = produto.QtdeUnidadeComercial; produtoVO.Descricao = produto.Descricao; produtoVO.ValorUnitario = produto.ValorUnidadeComercial; produtoVO.Descontos = produto.ValorDesconto; produtoVO.TotalLiquido = produto.ValorTotal; NotaFiscal.Produtos.Add(produtoVO); } var app = Application.Current; var mainWindow = app.MainWindow; var window = new VisualizarNotaEnviadaWindow() { Owner = mainWindow }; window.ShowDialog(); }
private void LoadedCmd_Execute(string modelo) { NotaFiscal = new NFeModel(); if (modelo != null && modelo.Equals("55")) { _modelo = Modelo.Modelo55; NotaFiscal.IsImpressaoBobina = false; } else { _modelo = Modelo.Modelo65; } NotaFiscal.DestinatarioSelecionado = new DestinatarioModel(); Pagamento = new PagamentoVO(); Pagamento.FormaPagamento = "Dinheiro"; var config = _configuracaoService.GetConfiguracao(); NotaFiscal.Serie = config.IsProducao ? config.SerieNFe : config.SerieNFeHom; NotaFiscal.Numero = config.IsProducao ? config.ProximoNumNFe : config.ProximoNumNFeHom; NotaFiscal.ModeloNota = "NF-e"; NotaFiscal.DataEmissao = DateTime.Now; NotaFiscal.HoraEmissao = DateTime.Now; NotaFiscal.DataSaida = DateTime.Now; NotaFiscal.HoraSaida = DateTime.Now; NotaFiscal.IndicadorPresenca = PresencaComprador.Presencial; NotaFiscal.Finalidade = "Normal"; if (Destinatarios.Count <= 0) { var destinatarios = _destinatarioService.GetAll(); foreach (var destDB in destinatarios) { Destinatarios.Add((DestinatarioModel)destDB); } } if (Transportadoras.Count <= 0) { var transportadoras = _transportadoraService.GetAll(); foreach (var transpDB in transportadoras) { Transportadoras.Add((TransportadoraModel)transpDB); } } if (NaturezasOperacoes.Count <= 0) { var naturezasDB = _naturezaOperacaoService.GetAll(); foreach (var naturezaDB in naturezasDB) { var natModel = new NaturezaOperacaoModel() { Id = naturezaDB.Id, Descricao = naturezaDB.Descricao }; NaturezasOperacoes.Add(natModel); if (natModel.Descricao.Equals(DEFAULT_NATUREZA_OPERACAO)) { NaturezaOperacaoSelecionada = natModel; } } } else { NaturezaOperacaoSelecionada = NaturezasOperacoes.FirstOrDefault(n => n.Descricao.Equals(DEFAULT_NATUREZA_OPERACAO)); } }
public NFeViewModel(IEnviarNota enviarNotaController, IDialogService dialogService, IProdutoService produtoService, IEnviaNotaFiscalService enviaNotaFiscalService, IEstadoService estadoService, IEmissorService emissorService, IMunicipioService municipioService, TransportadoraService transportadoraService, IDestinatarioService destinatarioService, INaturezaOperacaoService naturezaOperacaoService, IConfiguracaoService configuracaoService, DestinatarioViewModel destinatarioViewModel, INotaFiscalRepository notaFiscalRepository) { Pagamento = new PagamentoVO(); Produto = new ProdutoVO(); var produtosDB = produtoService.GetAll(); DestinatarioParaSalvar = new DestinatarioModel(); TransportadoraParaSalvar = new TransportadoraModel(); Destinatarios = new ObservableCollection <DestinatarioModel>(); Transportadoras = new ObservableCollection <TransportadoraModel>(); NaturezasOperacoes = new ObservableCollection <NaturezaOperacaoModel>(); ProdutosCombo = new ObservableCollection <ProdutoEntity>(); _enviaNotaFiscalService = enviaNotaFiscalService; _estadoService = estadoService; _produtoService = produtoService; _emissorService = emissorService; _municipioService = municipioService; _transportadoraService = transportadoraService; _destinatarioService = destinatarioService; _naturezaOperacaoService = naturezaOperacaoService; _configuracaoService = configuracaoService; _destinatarioViewModel = destinatarioViewModel; _notaFiscalRepository = notaFiscalRepository; AdicionarProdutoCmd = new RelayCommand <object>(AdicionarProdutoCmd_Execute, null); GerarPagtoCmd = new RelayCommand <object>(GerarPagtoCmd_Execute, null); SalvarTransportadoraCmd = new RelayCommand <IClosable>(SalvarTransportadoraCmd_Execute, null); ExcluirTransportadoraCmd = new RelayCommand <TransportadoraModel>(ExcluirTransportadoraCmd_Execute, null); EnviarNotaCmd = new RelayCommand <IClosable>(EnviarNotaCmd_Execute); LoadedCmd = new RelayCommand <string>(LoadedCmd_Execute, null); ClosedCmd = new RelayCommand(ClosedCmd_Execute, null); ExcluirProdutoNotaCmd = new RelayCommand <ProdutoVO>(ExcluirProdutoNotaCmd_Execute, null); UfSelecionadoCmd = new RelayCommand(UfSelecionadoCmd_Execute, null); TransportadoraWindowLoadedCmd = new RelayCommand(TransportadoraWindowLoadedCmd_Execute, null); DestinatarioChangedCmd = new RelayCommand <DestinatarioModel>(DestinatarioChangedCmd_Execute, null); _enviarNotaController = enviarNotaController; _dialogService = dialogService; Estados = new ObservableCollection <EstadoEntity>(); Municipios = new ObservableCollection <MunicipioEntity>(); destinatarioViewModel.DestinatarioSalvoEvent += DestinatarioVM_DestinatarioSalvoEvent; foreach (var produtoDB in produtosDB) { ProdutosCombo.Add((ProdutoEntity)produtoDB); } IndicadoresPresenca = new List <string>() { "Não se Aplica", "Presencial", "Não Presencial, Internet", "Não Presencial, Teleatendimento", "Entrega a Domicílio", "Não Presencial, Outros" }; Finalidades = new List <string>() { "Normal", "Complementar", "Ajuste", "Devolução" }; FormasPagamento = new Dictionary <string, string>() { { "Dinheiro", "Dinheiro" }, { "Cheque", "Cheque" }, { "CartaoCredito", "Cartão de Crédito" }, { "CartaoDebito", "Cartão de Débito" } //{ "CreditoLoja", "Crédito Loja" }, //{ "ValeAlimentacao", "Vale Alimentação" }, //{ "ValeRefeicao", "Vale Refeição" }, //{ "ValePresente", "Vale Presente"}, //{ "ValeCombustivel", "Vale Combustível"}, //{ "Outros", "Outros" } }; EstadosUF = _estadoService.GetEstados().Select(e => e.Uf).ToList(); Parcelas = new List <int>() { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18 }; }