Esempio n. 1
0
 public NFeBuilder AddPagamento(PagamentoNFe pagamento)
 {
     NFe.infNFe.pag.Add(pagamento.Pag);
     return(this);
 }
Esempio n. 2
0
        public NotaFiscal ToNFCe()
        {
            var ret = new NotaFiscal();

            // InfNFe
            ret.InfNFe.versao = "4.0";

            //Identificação
            ret.Identificacao.natOp       = "Venda de Mercadoria";
            ret.Identificacao.indPag      = IndicadorPagamento.ipVista;
            ret.Identificacao.mod         = ModeloNFe.moNFCe;
            ret.Identificacao.serie       = Serie.ToString();
            ret.Identificacao.nNF         = Numero;
            ret.Identificacao.dhEmi       = Data;
            ret.Identificacao.tpNF        = TipoNFe.tnSaida;
            ret.Identificacao.finNFe      = FinalidadeNFe.fnNormal;
            ret.Identificacao.idDest      = DestinoOperacao.doInterna;
            ret.Identificacao.indFinal    = ConsumidorFinal.cfConsumidorFinal;
            ret.Identificacao.indPres     = PresencaComprador.pcPresencial;
            ret.Identificacao.indIntermed = IndIntermed.iiSemOperacao;
            ret.Identificacao.tpImp       = TipoDANFE.tiNFCe;
            ret.Identificacao.tpAmb       = TipoAmbiente.taHomologacao;

            //Emitente
            ret.Emitente.CRT     = Configuracao.Instance.Emitente.CRT;
            ret.Emitente.CNPJCPF = Configuracao.Instance.Emitente.CNPJ.OnlyNumbers();
            ret.Emitente.IE      = Configuracao.Instance.Emitente.IE.OnlyNumbers();
            ret.Emitente.xNome   = Configuracao.Instance.Emitente.Razao;
            ret.Emitente.xFant   = Configuracao.Instance.Emitente.Fantasia;
            ret.Emitente.Fone    = Configuracao.Instance.Emitente.Fone;
            ret.Emitente.CEP     = Configuracao.Instance.Emitente.CEP;
            ret.Emitente.xLgr    = Configuracao.Instance.Emitente.Logradouro;
            ret.Emitente.nro     = Configuracao.Instance.Emitente.Numero;
            ret.Emitente.xCpl    = Configuracao.Instance.Emitente.Complemento;
            ret.Emitente.xBairro = Configuracao.Instance.Emitente.Bairro;
            ret.Emitente.cMun    = Configuracao.Instance.Emitente.CidadeCod.ToInt32();
            ret.Emitente.xMun    = Configuracao.Instance.Emitente.Cidade;
            ret.Emitente.UF      = Configuracao.Instance.Emitente.UF;

            //Destinatario
            ret.Destinatario.indIEDest = IndicadorIE.inNaoContribuinte;
            if (!string.IsNullOrEmpty(Cliente.Documento))
            {
                ret.Destinatario.CNPJCPF = Cliente.Documento.OnlyNumbers();
            }
            if (!string.IsNullOrEmpty(Cliente.Nome))
            {
                ret.Destinatario.xNome = Cliente.Nome;
            }

            foreach (var item in Items)
            {
                if (item.Cancelado)
                {
                    continue;
                }
                var produto = new ProdutoNFe
                {
                    CFOP      = "5.102",
                    cProd     = item.Produto.Codigo,
                    cEAN      = "SEM GTIN",
                    xProd     = item.Produto.Descricao,
                    NCM       = "84719012",
                    uCom      = item.Produto.Unidade,
                    qCom      = item.Quantidade,
                    vUnCom    = item.Produto.Valor,
                    vProd     = item.ValorTotal,
                    vDesc     = 0M,
                    vFrete    = 0M,
                    vSeg      = 0M,
                    vOutro    = 0M,
                    indEscala = IndEscala.ieNaoRelevante,
                    CNPJFab   = "05481336000137",
                    uTrib     = item.Produto.Unidade,
                    cEANTrib  = "SEM GTIN"
                };

                produto.ICMS.CSOSN       = CSOSNIcms.csosn900;
                produto.ICMS.orig        = OrigemMercadoria.oeNacional;
                produto.ICMS.vBC         = 100M;
                produto.ICMS.pICMS       = 10M;
                produto.ICMS.vICMS       = 10M;
                produto.ICMS.pCredSN     = 0M;
                produto.ICMS.vCredICMSSN = 0M;
                produto.ICMS.modBCST     = DeterminacaoBaseIcmsST.dbisMargemValorAgregado;
                produto.ICMS.vBCST       = 0M;
                produto.ICMS.pICMSST     = 0M;
                produto.ICMS.vICMSST     = 0M;
                produto.ICMS.pRedBC      = 0M;
                produto.ICMS.vBCFCP      = 0M;
                produto.ICMS.pFCP        = 0M;
                produto.ICMS.vFCP        = 0M;

                produto.PIS.CST  = CSTPIS.pis01;
                produto.PIS.vBC  = 0M;
                produto.PIS.pPIS = 0M;
                produto.PIS.vPIS = 0M;

                produto.COFINS.CST     = CSTCofins.cof01;
                produto.COFINS.vBC     = 0M;
                produto.COFINS.pCOFINS = 0M;
                produto.COFINS.vCOFINS = 0M;

                produto.IPI.CST  = CSTIPI.ipi53;
                produto.IPI.vBC  = 0M;
                produto.IPI.pIPI = 0M;
                produto.IPI.vIPI = 0M;

                ret.Produtos.Add(produto);
            }

            ret.Total.vBC        = (100 * Items.Count);
            ret.Total.vICMS      = (10 * Items.Count);
            ret.Total.vICMSDeson = 0M;
            ret.Total.vBCST      = 0M;
            ret.Total.vST        = 0M;
            ret.Total.vProd      = Items.Sum(x => x.ValorTotal).RoundABNT();
            ret.Total.vFrete     = 0M;
            ret.Total.vSeg       = 0M;
            ret.Total.vDesc      = 0M;
            ret.Total.vIPI       = 0M;
            ret.Total.vPIS       = 0M;
            ret.Total.vCOFINS    = 0M;
            ret.Total.vOutro     = 0M;
            ret.Total.vNF        = Items.Sum(x => x.ValorTotal).RoundABNT();
            ret.Total.vFCP       = 0M;

            ret.DadosAdicionais.infCpl = "";
            ret.Transportador.modFrete = ModalidadeFrete.mfSemFrete;

            for (var i = 0; i < Pagamentos.Count; i++)
            {
                var pagamento = new PagamentoNFe
                {
                    tPag = Pagamentos[i].TipoNFe,
                    vPag = Pagamentos[i].Valor
                };

                if (i == 0 && Troco > 0)
                {
                    pagamento.vTroco = Troco;
                }

                ret.Pagamentos.Add(pagamento);
            }

            return(ret);
        }