public ActionResult InserirNota() { var listaTipoNfe = new SelectList(_nfeDal.ListaTipoNfe(), "IdTipoNotaFiscal", "Nome"); var listaEmpresaFornecedora = new SelectList(_empresaDal.ListaEmpresas(1), "IdEmpresa", "RazaoSocial"); var listaEstado = new SelectList(_estadoDal.ListaEstados(), "EstadoId", "Sigla"); var listaCidade = new SelectList(_cidadeDal.ListaCidades(), "CidadeId", "Nome"); int quantidadeProduto = 0; NfeViewModels dadosNfe = new NfeViewModels(); dadosNfe.ListaRemessa = (from c in _produtoDal.ListaProdutos() where ((quantidadeProduto = c.Quantidade - _nfeDal.GetQuantidadeRemessaProduto(c.IdProduto)) > 0)select new ProdutoRemessa { IdProduto = c.IdProduto, Nome = c.Nome, Quantidade = quantidadeProduto }).ToList(); ViewBag.ListaTipoNfe = listaTipoNfe; ViewBag.ListEmpresaFornecedora = listaEmpresaFornecedora; ViewBag.ListaEstados = listaEstado; ViewBag.ListaCidades = listaCidade; return(View(dadosNfe)); }
public Nfe emitirTxtNfe(NfeViewModels dadosNfe, string codigoIbgeEstado, string codigoIbgeCidade, int ultimaNota) { if (Util.ValidaCPF(dadosNfe.CpfDestinatario.ToString().Replace(".", "").Replace("-", "")) == true) { StringBuilder escreverDados = new StringBuilder(); Random rndNumero = new Random(); double digitoVerificador = 0; int nUltimaNotaEmitida = ultimaNota; nUltimaNotaEmitida++; string codigoEstado = codigoIbgeEstado; string codigoCidade = codigoIbgeCidade; var mesEmissao = DateTime.Now.Month.ToString("d2"); var anoEmissao = DateTime.Now; var codigoNfe = rndNumero.Next(10000000, 99999999); double valorTotal = Convert.ToDouble(dadosNfe.Valor); //Descobrir o modelo e série da nota fiscal var chaveAcesso = codigoEstado.ToString() + mesEmissao + anoEmissao.ToString("yy") + CnpjEmitente + "55" + "001" + string.Format("{0:000000000}", nUltimaNotaEmitida) + "1" + codigoNfe.ToString(); int[] multiplicadores = { 2, 3, 4, 5, 6, 7, 8, 9 }; double somaValores = 0; int posicaoMultiplicador = 0; for (int a = chaveAcesso.Length - 1; a >= 0; a--) { if (posicaoMultiplicador >= 8) { posicaoMultiplicador = 0; } somaValores += (Convert.ToDouble(Convert.ToInt32(chaveAcesso[a].ToString())) * Convert.ToDouble(multiplicadores[posicaoMultiplicador])); posicaoMultiplicador++; } int resto = Convert.ToInt32(somaValores) / 11; resto = Convert.ToInt32(somaValores) - (resto * 11); if (resto == 0 || resto == 1) { digitoVerificador = 0; } else { digitoVerificador = 11 - resto; } chaveAcesso = chaveAcesso + digitoVerificador.ToString(); var cfop = dadosNfe.SiglaEstado.ToString() == "MG" ? 5102 : 6102; //LINHA 1 DO ARQUIVO - CABEÇALHO PADRÃO escreverDados.Insert(0, "NOTA FISCAL|" + 1 + "|\r\n"); //GRUPO "A" DO ARQUIVO - PADRÃO escreverDados.AppendFormat("A|3.10|NFe{0}\r\n", chaveAcesso); //GRUPO "B" DO ARQUIVO - INFORMAÇÕES DE IDENTIFICAÇÃO DA NFe var naturezaOperacao = "VENDA ARREMATE LEILÃO"; var idDestino = dadosNfe.SiglaEstado.ToString() == "MG" ? 1 : 2; var dataEmissao = string.Format( DateTime.Now.IsDaylightSavingTime() ? "{0:yyyy-MM-dd}T{0:HH}:{0:mm}:{0:ss}-02:00" : "{0:yyyy-MM-dd}T{0:HH}:{0:mm}:{0:ss}-03:00", DateTime.Now); escreverDados.AppendFormat("B|{0}|12587410|{2}|0|55|1|{3}|{4}|{4}|1|{5}|{6}|1|1|{9}|{7}|1|1|1|3|3.20.55|{4}|{8}\r\n", NumeroIbgeMg, codigoNfe, naturezaOperacao, nUltimaNotaEmitida, dataEmissao, idDestino, NumeroIbgeBh, IdAmbiente, "VENDA DE MERCADORIA EM LEILÃO", digitoVerificador); //GRUPO "C" DO ARQUIVO - IDENTIFICAÇÃO DO EMITENTE DA NFe escreverDados.AppendFormat("C|{0}||{1}||{2}||{3}|\r\n", emitente, InscricaoEstadual, InscricaoMunicipal, RegimeTributario); //GRUPO "C02" DO ARQUIVO - CNPJ DO EMITENTE escreverDados.AppendFormat("C02|{0}|\r\n", CnpjEmitente); //GRUPO CO5 - ENDEREÇO DO EMITENTE escreverDados.AppendFormat("C05|RUA MONTEIRO LOBATO|252|SALA 11|OURO PRETO|{0}|BELO HORIZONTE|MG|31310530|1058|BRASIL||\r\n", NumeroIbgeBh); //GRUPO E - IDENTIFICAÇÃO DO DESTINATÁRIO DA NFe escreverDados.AppendFormat("E|{0}|9|||||\r\n", dadosNfe.NomeCliente.ToString().ToUpper()); //GRUPO E02 - CPF DO DESTINATÁRIO DA NFe escreverDados.AppendFormat("E03|{0}|\r\n", dadosNfe.Cpf.ToString().Replace(".", "").Replace("-", "")); //GRUPO E05 - ENDEREÇO DO DESTINATÁRIO DA NFe escreverDados.AppendFormat("E05|{0}|{1}|{2}|{3}|{4}|{5}|{6}|{7}|1058|BRASIL||\r\n", dadosNfe.Endereco.ToString().ToUpper(), Convert.ToInt32(dadosNfe.Numero).ToString(), dadosNfe.Complemento.ToString() == "-" ? "" : dadosNfe.Complemento.ToString(), dadosNfe.Bairro.ToString(), codigoCidade, dadosNfe.Cidade.ToString(), dadosNfe.SiglaEstado.ToString(), dadosNfe.Cep.ToString().Replace("-", "").Replace(".", "")); //GRUPO H - DETALHAMENTO DE PRODUTOS E SERVIÇOS DA NFe escreverDados.AppendFormat("H|1||\r\n"); double valorUnitario = valorTotal / Convert.ToDouble(dadosNfe.QtdeProdutos); //GRUPO I - PRODUTOS E SERVIÇOS DA NFe escreverDados.AppendFormat( "I|CFOP{0}||PRODUTO SUCATEADO|00000000||{0}|UN|{1}|{2:0.0}|{3:0,00}||UN|{1}|{2:0.00}|||||1||1||\r\n", cfop, Convert.ToDouble(dadosNfe.QtdeProdutos).ToString("N2").Replace(",", "."), valorUnitario.ToString("N2").Replace(".", "").Replace(",", "."), valorTotal.ToString("N2").Replace(".", "").Replace(",", ".")); //GRUPO M - TRIBUTOS INCIDENTES NO PRODUTO OU SERVIÇO escreverDados.Append("M|\r\n"); //GRUPO N - ICMS NORMAL E ST escreverDados.Append("N|\r\n"); //GRUPO N10D - REGIME INTEGRALMENTE TRIBUTADO escreverDados.AppendFormat("N10d|0|102|\r\n"); //CST DO ICMS: 102 //GRUPO Q - PIS escreverDados.Append("Q|\r\n"); //GRUPO Q - PIS escreverDados.Append("Q05|99|0.00|\r\n"); //CST 99 escreverDados.Append("Q10|0.00|0.00|\r\n"); //CST 99 //GRUPO S - COFINS escreverDados.Append("S|\r\n"); escreverDados.Append("S05|99|0.00|0.00|0.00|\r\n"); //CST 99 TIPO CALCULO PERCENTUAL, VALOR DO IMPOSTO ZERAR escreverDados.Append("S07|0.00|0.00|\r\n"); //CST 99 TIPO CALCULO PERCENTUAL, VALOR DO IMPOSTO ZERAR //GRUPO W - TOTAL DA NF-E escreverDados.Append("W|\r\n"); escreverDados.AppendFormat("W02|0.00|0.00|0.00|0.00|0.00|{0:0.00}|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|{0:0.00}|0|\r\n", valorTotal.ToString("N2").Replace(".", "").Replace(",", ".")); //GRUPO X - INFORMAÇÕES DO TRANSPORTE DA NF-E escreverDados.AppendFormat("X|1|\r\n"); //GRUPO Z - INFORMAÇÕES ADICIONAIS escreverDados.AppendFormat("Z||REFERENTE AO DIA |\r\n", dadosNfe.DataEmissao); Nfe dadosNota = new Nfe(); dadosNota.ChaveAcesso = chaveAcesso; dadosNota.DataEmissao = Convert.ToDateTime(dataEmissao); dadosNota.RemetenteNota = emitente; dadosNota.CnpjRemetente = CnpjEmitente; dadosNota.NumeroNota = nUltimaNotaEmitida; escreverDados.ToString(); var nomeTxtVendas = string.Format("NFE_VENDAS_NUMERO_NOTA_ {0}.txt", nUltimaNotaEmitida); string pathArquivoNota = Path.Combine(@"C:\Users\joaopedro\Desktop\BDL\Nfe_Eletrobid", nomeTxtVendas); using (TextWriter tw = new StreamWriter(pathArquivoNota, false)) { tw.Write(escreverDados); tw.Close(); } return(dadosNota); } else { return(null); } }
public ActionResult InserirNota(NfeViewModels dadosNfe) { #region Trata nota do tipo venda if (dadosNfe.IdTipoNotaFiscal == 1) { if (!string.IsNullOrEmpty(dadosNfe.NomeCliente) && !string.IsNullOrWhiteSpace(dadosNfe.NomeCliente) && !string.IsNullOrEmpty(dadosNfe.CpfDestinatario) && !string.IsNullOrWhiteSpace(dadosNfe.CpfDestinatario) && !string.IsNullOrEmpty(dadosNfe.Endereco) && !string.IsNullOrWhiteSpace(dadosNfe.Endereco) && !string.IsNullOrEmpty(dadosNfe.Bairro) && !string.IsNullOrWhiteSpace(dadosNfe.Bairro) && !string.IsNullOrEmpty(dadosNfe.Cep) && !string.IsNullOrWhiteSpace(dadosNfe.Cep) && !string.IsNullOrEmpty(dadosNfe.Descricao) && !string.IsNullOrWhiteSpace(dadosNfe.Descricao)) { NfeVenda criarTxt = new NfeVenda(); Estado dadosEstado = _estadoDal.getEstado(dadosNfe.IdEstado); Cidade dadosCidade = _cidadeDal.getCidade(dadosNfe.IdCidade); dadosNfe.SiglaEstado = dadosEstado.Sigla; dadosNfe.Cidade = dadosCidade.Nome; int ultimaNota = _nfeDal.GetNumeroUltimaNfe(); Nfe dadosNota = criarTxt.emitirTxtNfe(dadosNfe, dadosNfe.SiglaEstado, dadosNfe.Cidade, ultimaNota); if (dadosNota != null) { dadosNota.CpfDestinatario = dadosNfe.CpfDestinatario.ToString().Replace(",", "").Replace(".", "").Replace("-", "").Replace(" ", ""); dadosNota.DestinatarioNota = dadosNfe.DestinatarioNota.ToString(); dadosNota.IdTipoNotaFiscal = 1; dadosNota.Valor = Convert.ToDouble(dadosNfe.Valor.ToString().Replace(",", ".")); dadosNota.QtdeProdutos = Convert.ToInt32(dadosNfe.QtdeProdutos.ToString()); _nfeDal.InserirNota(dadosNota); return(RedirectToAction("GerenciaNfe")); } else { return(View(dadosNfe)); } } else { return(View(dadosNfe)); } } #endregion #region Trata nota do tipo Remessa else if (dadosNfe.IdTipoNotaFiscal == 2) { return(View(dadosNfe)); } #endregion #region Trata nota do tipo Retorno else if (dadosNfe.IdTipoNotaFiscal == 3) { return(View(dadosNfe)); } #endregion #region Trata nota do tipo Entrada else if (dadosNfe.IdTipoNotaFiscal == 4) { return(View(dadosNfe)); } #endregion else { return(View(dadosNfe)); } }