コード例 #1
0
        public NotaFiscal(
            int numeroNotaFiscal,
            int serie,
            string nomeCliente,
            EstadoDestino estadoDestino,
            EEstados estadoOrigem
            )
        {
            NumeroNotaFiscal = numeroNotaFiscal;
            Serie            = serie;
            NomeCliente      = nomeCliente;
            EstadoDestino    = estadoDestino;
            EstadoOrigem     = estadoOrigem;

            AddNotifications(estadoDestino);

            AddNotifications(new Contract()
                             .Requires()
                             .IsGreaterThan(NumeroNotaFiscal, 0, "NotaFiscal.NumeroNotaFiscal", "O Numero da Nota Fiscal deve ser maior que 0")
                             .IsGreaterThan(Serie, 0, "NotaFiscal.Serie", "O Numero da Nota Fiscal deve ser maior que 0")
                             .HasMinLen(NomeCliente, 3, "NotaFiscal.NomeCliente", "O Nome do Cliente não pode ter menos de 3 caracteres")
                             .IsNotNull(estadoOrigem, "NotaFiscal.EstadoOrigem", "O Campo EstadoOrigem é obrigatório")
                             .AreNotEquals(estadoOrigem.ToString(), EEstados.Selecione.ToString(), "NotaFiscal.EstadoOrigem", "O Campo EstadoOrigem Precisa ser um estado válido")
                             );

            ItensDaNotaFiscal = new List <NotaFiscalItem>();
        }
コード例 #2
0
        public NotaFiscalItem(EEstados origem, EstadoDestino destino, double valorItemPedido, bool brinde, string nomeProduto, string codigoProduto)
        {
            Origem             = origem;
            Destino            = destino;
            this.NomeProduto   = nomeProduto;
            this.CodigoProduto = codigoProduto;

            AddNotifications(new Contract()
                             .Requires()
                             .HasMinLen(NomeProduto, 3, "NotaFiscalItem.NomeProduto", "O Campo NomeProduto não pode ter menos de 3 caracteres")
                             .HasMinLen(CodigoProduto, 3, "NotaFiscalItem.CodigoProduto", "O Campo CodigoProduto não pode ter menos de 3 caracteres")
                             .IsNotNull(Origem, "NotaFiscalItem.EstadoOrigem", "O Campo EstadoOrigem é obrigatório")
                             .AreNotEquals(Origem.ToString(), EEstados.Selecione.ToString(), "NotaFiscalItem.EstadoOrigem", "O Campo EstadoOrigem Precisa ser um estado válido")
                             .IsGreaterThan(valorItemPedido, 0, "NotaFiscalItem.ValorItemPedido", "O Campo valorItemPedido deve ser maior que zero")
                             );
            AddNotifications(Destino);

            this.CalcularAlicotas(valorItemPedido, brinde);
        }
コード例 #3
0
        public void EmitirNotaFiscal(Pedido pedido)
        {
            this.NumeroNotaFiscal = 99999;
            this.Serie            = new Random().Next(Int32.MaxValue);
            this.NomeCliente      = pedido.NomeCliente;

            this.EstadoDestino = pedido.EstadoOrigem;
            this.EstadoOrigem  = pedido.EstadoDestino;
            string[] descontoSudeste = { "SP", "RJ", "MG", "ES" };

            foreach (PedidoItem itemPedido in pedido.ItensDoPedido)
            {
                NotaFiscalItem notaFiscalItem = new NotaFiscalItem();
                notaFiscalItem.Cfop = GetCpof(EstadoDestino);

                if (notaFiscalItem.Cfop == "6.009")
                {
                    notaFiscalItem.BaseIcms = itemPedido.ValorItemPedido * 0.90; //redução de base
                }
                else
                {
                    notaFiscalItem.BaseIcms = itemPedido.ValorItemPedido;
                }

                if (this.EstadoDestino == this.EstadoOrigem)
                {
                    notaFiscalItem.TipoIcms     = "60";
                    notaFiscalItem.AliquotaIcms = 0.18;
                }
                else
                {
                    notaFiscalItem.TipoIcms     = "10";
                    notaFiscalItem.AliquotaIcms = 0.17;
                }

                notaFiscalItem.ValorIcms = notaFiscalItem.BaseIcms * notaFiscalItem.AliquotaIcms;
                notaFiscalItem.BaseIpi   = itemPedido.ValorItemPedido;

                if (itemPedido.Brinde)
                {
                    notaFiscalItem.TipoIcms     = "60";
                    notaFiscalItem.AliquotaIcms = 0.18;
                    notaFiscalItem.ValorIcms    = notaFiscalItem.BaseIcms * notaFiscalItem.AliquotaIcms;
                    notaFiscalItem.AliquotaIpi  = 0;
                }
                else
                {
                    notaFiscalItem.AliquotaIpi = 0.1;
                }

                notaFiscalItem.ValorIpi = notaFiscalItem.BaseIpi * notaFiscalItem.AliquotaIpi;
                if (descontoSudeste.Contains(EstadoDestino.ToUpper()))
                {
                    itemPedido.ValorItemPedido = itemPedido.ValorItemPedido - (itemPedido.ValorItemPedido * 0.1);
                }

                notaFiscalItem.NomeProduto   = itemPedido.NomeProduto;
                notaFiscalItem.CodigoProduto = itemPedido.CodigoProduto;
                (ItensDaNotaFiscal as List <NotaFiscalItem>).Add(notaFiscalItem);
            }
        }
コード例 #4
0
        public void ShouldReturnErrorWhenEstadoDestinoIsValid()
        {
            var obj = new EstadoDestino(EEstados.SP);

            Assert.IsTrue(obj.Valid);
        }
コード例 #5
0
        public void ShouldReturnErrorWhenEstadoDestinoIsInvalid(EEstados estados)
        {
            var obj = new EstadoDestino(estados);

            Assert.IsTrue(obj.Invalid);
        }