Esempio n. 1
0
        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
            };
        }
Esempio n. 2
0
        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();
            }
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
            }
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
 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();
        }
Esempio n. 8
0
        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));
            }
        }
Esempio n. 9
0
        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
            };
        }