コード例 #1
0
        public Result GerarNotaFiscal(Pedido pedido)
        {
            var notaFiscal = MontarNotaFiscal(pedido);

            var result = _writer.Record(notaFiscal.NumeroNotaFiscal.ToString(), notaFiscal);

            if (result)
            {
                var idNotaFiscal = _notaFiscalRepository.InsertNotaFiscal(notaFiscal.NumeroNotaFiscal, notaFiscal.Serie,
                                                                          notaFiscal.NomeCliente, notaFiscal.EstadoDestino, notaFiscal.EstadoOrigem);

                foreach (var item in notaFiscal.ItensDaNotaFiscal)
                {
                    _notaFiscalRepository.InsertNotaFiscalItem(idNotaFiscal, item.Cfop,
                                                               item.TipoIcms, item.BaseIcms, item.AliquotaIcms, item.ValorIcms,
                                                               item.NomeProduto, item.CodigoProduto, item.BaseIpi, item.AliquotaIpi, item.ValorIpi, item.Desconto);
                }
            }

            return(new Result()
            {
                Status = result,
                Message = result ? "Operação efetuada com sucesso" : "Erro ao efetuar a operação"
            });
        }
コード例 #2
0
        public void GerarNotaFiscal_HavingGeneratedAValidXml_ShouldPersistNotaFiscalInDataBase()
        {
            // arrange
            var pedido = A.Dummy <Pedido>();

            pedido.ItensDoPedido.Add(A.Dummy <PedidoItem>());

            A.CallTo(() => _xmlWriter.Record(A <string> .Ignored, A <NotaFiscal> .Ignored)).Returns(true);

            A.CallTo(() => _notaFiscalRepository.GetNextIdNotaFiscal()).Returns(A.Dummy <int>());

            A.CallTo(() => _notaFiscalRepository.GetLastIdNotaFiscalItem()).Returns(A.Dummy <int>());

            A.CallTo(() => _notaFiscalRepository.InsertNotaFiscal(A <int> .Ignored, A <int> .Ignored,
                                                                  A <string> .Ignored, A <string> .Ignored, A <string> .Ignored)).Returns(1);

            A.CallTo(() => _notaFiscalRepository.InsertNotaFiscalItem(A <int> .Ignored, A <string> .Ignored, A <string> .Ignored,
                                                                      A <double> .Ignored, A <double> .Ignored, A <double> .Ignored, A <string> .Ignored, A <string> .Ignored, A <double> .Ignored, A <double> .Ignored, A <double> .Ignored, A <double> .Ignored));

            // act
            var notaFiscalService = new NotaFiscalService(_xmlWriter, _notaFiscalRepository);
            var result            = notaFiscalService.GerarNotaFiscal(pedido);

            // assert
            A.CallTo(() => _xmlWriter.Record(A <string> .Ignored, A <NotaFiscal> .Ignored))
            .MustHaveHappenedOnceExactly();

            A.CallTo(() => _notaFiscalRepository.GetNextIdNotaFiscal()).MustHaveHappenedOnceExactly();

            A.CallTo(() => _notaFiscalRepository.GetLastIdNotaFiscalItem()).MustHaveHappenedOnceExactly();

            A.CallTo(() => _notaFiscalRepository.InsertNotaFiscal(A <int> .Ignored, A <int> .Ignored,
                                                                  A <string> .Ignored, A <string> .Ignored, A <string> .Ignored)).MustHaveHappenedOnceExactly();

            A.CallTo(() => _notaFiscalRepository.InsertNotaFiscalItem(A <int> .Ignored, A <string> .Ignored, A <string> .Ignored,
                                                                      A <double> .Ignored, A <double> .Ignored, A <double> .Ignored, A <string> .Ignored, A <string> .Ignored, A <double> .Ignored,
                                                                      A <double> .Ignored, A <double> .Ignored, A <double> .Ignored)).MustHaveHappenedOnceOrMore();

            Assert.IsTrue(result.Status);
        }