예제 #1
0
        internal static TNFeInfNFeTransp GetTransporte(NotaFiscal notaFiscal)
        {
            var transp = new TNFeInfNFeTransp();

            transp.modFrete = (TNFeInfNFeTranspModFrete)(int)notaFiscal.Transporte.ModalidadeFrete;

            if (notaFiscal.Transporte.Transportadora != null)
            {
                var transportadora = notaFiscal.Transporte.Transportadora;

                transp.transporta                 = new TNFeInfNFeTranspTransporta();
                transp.transporta.Item            = transportadora.CpfCnpj;
                transp.transporta.ItemElementName =
                    transportadora.CpfCnpj.Length == 14 ? ItemChoiceType6.CNPJ : ItemChoiceType6.CPF;
                transp.transporta.xNome       = transportadora.Nome;
                transp.transporta.IE          = transportadora.InscricaoEstadual;
                transp.transporta.xEnder      = transportadora.EnderecoCompleto;
                transp.transporta.xMun        = transportadora.Municipio;
                transp.transporta.UF          = TUfConversor.ToTUf(transportadora.SiglaUF);
                transp.transporta.UFSpecified = true;

                if (notaFiscal.Transporte.Veiculo != null)
                {
                    var veiculo = new TVeiculo
                    {
                        placa = notaFiscal.Transporte.Veiculo.Placa,
                        UF    = TUfConversor.ToTUf(notaFiscal.Transporte.Veiculo.SiglaUF)
                    };
                    transp.Items            = new object[] { veiculo };
                    transp.ItemsElementName = new[] { ItemsChoiceType5.veicTransp };
                }
            }

            return(transp);
        }
예제 #2
0
        private Transporte GetTransporte(Retorno.TNFe nfe)
        {
            var transportadoraNFe = nfe.infNFe.transp.transporta;

            if (transportadoraNFe != null)
            {
                var uf = TUfConversor.ToSiglaUf((TUf)(int)transportadoraNFe.UF);

                var modelo         = nfe.infNFe.ide.mod == Retorno.TMod.Item55 ? Modelo.Modelo55 : Modelo.Modelo65;
                var transportadora = new Transportadora(transportadoraNFe.Item, transportadoraNFe.xEnder,
                                                        transportadoraNFe.IE, transportadoraNFe.xMun, uf, transportadoraNFe.xNome);

                if (nfe.infNFe.transp.Items.Length <= 0)
                {
                    return(new Transporte(modelo, transportadora, null));
                }
                var veiculoNFe = (Retorno.TVeiculo)nfe.infNFe.transp.Items[0];
                var veiculo    = new Veiculo(veiculoNFe.placa, TUfConversor.ToSiglaUf(veiculoNFe.UF));

                return(new Transporte(modelo, transportadora, veiculo));
            }

            return(nfe.infNFe.transp.modFrete == Retorno.TNFeInfNFeTranspModFrete.Item9
                ? new Transporte(Modelo.Modelo65, null, null)
                : null);
        }
예제 #3
0
        internal static TNFeInfNFeDet[] GetDetalhamentoProdutos(NotaFiscal notaFiscal)
        {
            var detList = new List <TNFeInfNFeDet>();

            for (var i = 0; i < notaFiscal.Produtos.Count; i++)
            {
                var newDet = new TNFeInfNFeDet();
                newDet.prod        = new TNFeInfNFeDetProd();
                newDet.prod.cProd  = notaFiscal.Produtos[i].Codigo;
                newDet.prod.cEAN   = "SEM GTIN";
                newDet.prod.xProd  = notaFiscal.Produtos[i].Descricao;
                newDet.prod.NCM    = notaFiscal.Produtos[i].Ncm;
                newDet.prod.CEST   = notaFiscal.Produtos[i].Cest; //Não usado em produção
                newDet.prod.uCom   = notaFiscal.Produtos[i].UnidadeComercial;
                newDet.prod.qCom   = notaFiscal.Produtos[i].QtdeUnidadeComercial.ToString();
                newDet.prod.vUnCom = notaFiscal.Produtos[i].ValorUnidadeComercial
                                     .ToString("F", CultureInfo.InvariantCulture);
                newDet.prod.vProd    = notaFiscal.Produtos[i].ValorTotal.ToString("F", CultureInfo.InvariantCulture);
                newDet.prod.cEANTrib = "SEM GTIN";
                newDet.prod.uTrib    = notaFiscal.Produtos[i].UnidadeComercial;
                newDet.prod.qTrib    = notaFiscal.Produtos[i].QtdeUnidadeComercial.ToString();
                newDet.prod.vUnTrib  = notaFiscal.Produtos[i].ValorUnidadeComercial
                                       .ToString("F", CultureInfo.InvariantCulture);
                newDet.prod.CFOP   = notaFiscal.Produtos[i].Cfop.ToString().Replace("Item", string.Empty);
                newDet.prod.indTot = TNFeInfNFeDetProdIndTot.Item1;

                //tratamento de produtos específico (combustíveis)

                if (notaFiscal.Identificacao.Modelo != Modelo.Modelo65 && notaFiscal.Produtos[i].Ncm.Equals("27111910"))
                {
                    var comb = new TNFeInfNFeDetProdComb();
                    comb.cProdANP = "210203001";
                    comb.UFCons   = TUfConversor.ToTUf(notaFiscal.Destinatario.Endereco.UF);
                    comb.descANP  = "GLP";
                    comb.pGLP     = "100.00";
                    comb.vPart    =
                        (notaFiscal.Produtos[i].ValorUnidadeComercial / 13).ToString("F", CultureInfo.InvariantCulture);

                    newDet.prod.uTrib = "KG";
                    newDet.prod.Items = new object[] { comb };
                }

                newDet.imposto = GetImposto(notaFiscal.Produtos[i]);
                newDet.nItem   = (i + 1).ToString();

                detList.Add(newDet);
            }

            return(detList.ToArray());
        }
예제 #4
0
 public void Should_Throw_Exception_When_String_Invalid()
 {
     Assert.Throws <InvalidOperationException>(() => TUfConversor.ToTUf("GBO"));
 }
예제 #5
0
 public void Should_Return_Correct_String_Value_When_Enum_Is_Valid_Other_Type(string expected, Retorno.TUf entry)
 {
     Assert.Equal(expected, TUfConversor.ToSiglaUf(entry));
 }
예제 #6
0
 public void Should_Return_Correct_Enum_Value_When_String_Is_Valid(string uf, TUf expected)
 {
     Assert.Equal(expected, TUfConversor.ToTUf(uf));
 }