Olá a Todos!!
Segue, no minimo interessante e um apoio para construção de algum programa:
http://temdetudoprogramas.com/item/Codigo-Fontes-em-Java-do-sistema-de--Nota-Fiscal-Eletronica.html
abraço a todos.
Mostrando postagens com marcador Nfe. Mostrar todas as postagens
Mostrando postagens com marcador Nfe. Mostrar todas as postagens
terça-feira, 3 de maio de 2016
quinta-feira, 29 de novembro de 2012
Nota Técnica 2011 Cancelamento da NF da Nota Fiscal Eletrônica Manual de Integração 2011/006 NF-e como Evento Versão 1.00a Março 2012 - Contribuinte
Para ajudar quem está se preparando para a nota de cancelamento como evendo
Gerando o arquivo em C#
///
/// gera o arquivo xml para envio no evento
///
/// diretorio a ser salvo o arquivo
/// codigo da empresa
/// tipo ambiente nfe
/// numero da nota
/// serie nfe
/// vesão nfe
/// justificativa digitada
/// tipo do evento exemplo Carta de Correcao ou Cancelamento
/// prefixo inicial do nome do arquivo exemplo CCE (Carta de Correcao) ou CNFE (cancelamento)
private void GeraArquivoXmlEvento(string DiretorioEnviar, int idEmpresa
, int tpAmb, string NumNota, string Serie, string VersaoNF
, string Justificativa, string Evento, string prefixoInicialArquivo)
{
UTF8Encoding _utf8 = new UTF8Encoding();
DataTable _infoNfe = new DataTable(); //informações da nfe
int _seqEvento = 0;
string _cnpjEmi = string.Empty, _caminhoxml = string.Empty, _tipoEvento = string.Empty;
try
{
//retorna a nota fiscal
_infoNfe =retorna um datatable contendo a nota fiscal;
//formata cnpj
_cnpjEmi = pega o cnpj do emitente da nota.ToString().Replace(".", "").Replace("-", "").Replace("/", "");
//prepara caminho
_caminhoxml = DiretorioEnviar + @"\" + prefixoInicialArquivo + _infoNfe.Rows[0]["chNFe"].ToString() + ".xml";
//busca o tipo do evento
_tipoEvento = TipoEvento(Evento);
if (File.Exists(_caminhoxml))
{
File.Delete(_caminhoxml);
}
int _i = RetornaSeqEvento(_infoNfe.Rows[0]["chNFe"].ToString(),Evento);
_seqEvento = _i > 0 ? _i : 1;
XmlTextWriter _xml = new XmlTextWriter(_caminhoxml, _utf8);
_xml.WriteStartDocument();
_xml.WriteStartElement("envEvento");
if (tpAmb == 1)
{
_xml.WriteStartAttribute("xmlns");
_xml.WriteString("http://www.portalfiscal.inf.br/nfe");
_xml.WriteEndAttribute();
_xml.WriteStartAttribute("versao");
_xml.WriteString("1.00");
_xml.WriteEndAttribute();
}
_xml.WriteStartElement("idLote");//num lote
_xml.WriteString(_infoNfe.Rows[0]["idlote"].ToString());// numero lote
_xml.WriteEndElement();
_xml.WriteStartElement("evento");
_xml.WriteStartAttribute("xmlns");
_xml.WriteString("http://www.portalfiscal.inf.br/nfe");
_xml.WriteEndAttribute();
_xml.WriteStartAttribute("versao");
_xml.WriteString("1.00");
_xml.WriteEndAttribute();
_xml.WriteStartElement("infEvento");
_xml.WriteStartAttribute("Id");
_xml.WriteString("ID" + _tipoEvento + _infoNfe.Rows[0]["chNFe"].ToString() + _seqEvento.ToString("00"));//
_xml.WriteEndAttribute();
#region itensInternos
_xml.WriteStartElement("cOrgao");//num uf ibge
_xml.WriteString(_infoNfe.Rows[0]["cUF"].ToString());// numero da UF ibge
_xml.WriteEndElement();
_xml.WriteStartElement("tpAmb");//num uf ibge
_xml.WriteString(tpAmb.ToString());// numero da UF ibge
_xml.WriteEndElement();
_xml.WriteStartElement("CNPJ");//cnpj emitente
_xml.WriteString(_cnpjEmi);//
_xml.WriteEndElement();
_xml.WriteStartElement("chNFe");//Chave da Nfe 44 posiçoes (nfe antes) NFexxx...
_xml.WriteString(_infoNfe.Rows[0]["chNFe"].ToString());//
_xml.WriteEndElement();
_xml.WriteStartElement("dhEvento");//Serie NFe
_xml.WriteString(string.Format("{0:yyyy-MM-ddTHH:mm:sszzz}", DateTime.Now));//
_xml.WriteEndElement();
_xml.WriteStartElement("tpEvento");//
_xml.WriteString(_tipoEvento);//
_xml.WriteEndElement();
_xml.WriteStartElement("nSeqEvento");//
_xml.WriteString(_seqEvento.ToString());//
_xml.WriteEndElement();
_xml.WriteStartElement("verEvento");//
_xml.WriteString("1.00");// fixo por hora
_xml.WriteEndElement();
_xml.WriteStartElement("detEvento");//abre tag da descrição do envento
_xml.WriteStartAttribute("versao");//versão
_xml.WriteString("1.00");// fixo por hora
_xml.WriteEndAttribute();
_xml.WriteStartElement("descEvento");//descrição do tipo do envento
_xml.WriteString(Evento);//
_xml.WriteEndElement();
//define a mesnagem e campos conforme evento
switch (Evento)
{
case "Carta de Correcao":
/// a sequencia de um mesmo eventdo de cce não pode ser maior que 20 correções
if (_seqEvento < 20)
{
_xml.WriteStartElement("xCorrecao");//Justividativa escrita da cce
_xml.WriteString(_comp.RemoveSpecialCharactersXml(Justificativa, true));//
_xml.WriteEndElement();
_xml.WriteStartElement("xCondUso");//Justividativa escrita da cce
_xml.WriteString("A Carta de Correcao e disciplinada pelo paragrafo 1o-A do art. 7o do Convenio S/N," +
" de 15 de dezembro de 1970 e pode ser utilizada para regularizacao de erro ocorrido " +
"na emissao de documento fiscal, desde que o erro nao esteja relacionado com: I - as " +
"variaveis que determinam o valor do imposto tais como: base de calculo, aliquota, " +
"diferenca de preco, quantidade, valor da operacao ou da prestacao; II - a correcao de " +
"dados cadastrais que implique mudanca do remetente ou do destinatario; III - a data de emissao ou de saida.");//
_xml.WriteEndElement();
}
else
{
throw new Exception("Sequência de correções ultrapassou o limite de 20 para esta nota");
}
break;
case "Cancelamento":
_xml.WriteStartElement("nProt");//Numero do protocolo quando aceita a nfe no sefaz
_xml.WriteString(_infoNfe.Rows[0]["nProt"].ToString());//
_xml.WriteEndElement();
_xml.WriteStartElement("xJust");//Justividativa escrita do cancelmaento
_xml.WriteString(Justificativa);//
_xml.WriteEndElement();
break;
}
#endregion
_xml.WriteEndElement();//detEvento
_xml.WriteEndElement();//infEvento
_xml.WriteEndElement();//Evento
_xml.WriteEndElement();//envEvento
_xml.Close();
}
catch (Exception ex)
{
throw ex;
}
finally
{
_infoNfe.Dispose();
}
}
Comentem se usarem...e melhorem também...
att
Fernando
terça-feira, 20 de março de 2012
Deletar .pdf ou .gif de um diretório
///
/// deleta registros .pdf e .gif gerados para o envio das danfes aos clientes via email
///
///
caminho do diretório
public static void DeletaPdfGif(string Diretorio)
{
DirectoryInfo d;
try
{
//limpar arquivos no CaminhoXmlTemp com data < 3 meses da data de hoje;
d = new DirectoryInfo(Diretorio);
foreach (FileInfo item in d.GetFiles("*.pdf"))
{
item.Delete();
}
foreach (FileInfo item in d.GetFiles("*.gif"))
{
item.Delete();
}
}
catch (Exception ex)
{
throw (ex);
}
finally
{
d = null;
}
}
terça-feira, 17 de janeiro de 2012
Gerar Arquivo Xml Inutilizacao NFE C#
///
/// gera o arquivo xml para solicitar Inutilização da nfe., você precisara enviar algumas informações ///criando uma função que retorna o datatable com os dados necessários para gerar o arquivo.
///
///
///
///
///
///
public void GerarArquivoXmlInutilizacao(string DiretorioEnviarInut,
int idEmpresa, string NumNota, string Serie, string Justificativa)
{
UTF8Encoding _utf8 = new UTF8Encoding();
string _cnpjEmi = string.Empty;
DataTable _infoNfe = new DataTable(); //informações da nfe
try
{
_infoNfe = this.RetornarNfeCabecVisCom(idEmpresa, NumNota, Serie);
_cnpjEmi = _infoNfe.Rows[0]["CNPJ"].ToString().Replace(".", "").Replace("-", "").Replace("/", "");
XmlTextWriter _xml = new XmlTextWriter(DiretorioEnviarInut +
@"\NFe" + _cnpjEmi +
_infoNfe.Rows[0]["sc_numnota"].ToString() +
_infoNfe.Rows[0]["sc_serie"].ToString(), _utf8);
_xml.WriteStartDocument();
_xml.WriteStartElement("inutNFe");
_xml.WriteStartAttribute("xsi:schemaLocation");
_xml.WriteString("http://www.portalfiscal.inf.br/nfe inutNFe_v2.00.xsd");
_xml.WriteEndAttribute();
_xml.WriteStartAttribute("xmlns:xsi");
_xml.WriteString("http://www.w3.org/2001/XMLSchema-instance");
_xml.WriteEndAttribute();
_xml.WriteStartAttribute("versao");
_xml.WriteString("2.0");
_xml.WriteEndAttribute();
_xml.WriteStartAttribute("xmlns");
_xml.WriteString("http://www.portalfiscal.inf.br/nfe");
_xml.WriteEndAttribute();
#region infInut
_xml.WriteStartElement("infInut");
_xml.WriteStartAttribute("Id");
_xml.WriteString("ID" + _infoNfe.Rows[0]["SC_IDNFE"].ToString());
#region internos
_xml.WriteStartElement("tpAmb");//num uf ibge
_xml.WriteString(_infoNfe.Rows[0][""].ToString());// numero da UF ibge
_xml.WriteEndElement();
_xml.WriteStartElement("xServ");//cnpj emitente
_xml.WriteString("INUTILIZAR");//
_xml.WriteEndElement();
_xml.WriteStartElement("UF");//num uf ibge
_xml.WriteString(_infoNfe.Rows[0]["cUF"].ToString());// numero da UF ibge
_xml.WriteEndElement();
_xml.WriteStartElement("ano");//ano da emissao da nota
_xml.WriteString(Convert.ToDateTime(_infoNfe.Rows[0]["dEmi"]).ToString("yy"));//
_xml.WriteEndElement();
_xml.WriteStartElement("CNPJ");//cnpj emitente
_xml.WriteString(_infoNfe.Rows[0]["CNPJ"].ToString());//
_xml.WriteEndElement();
_xml.WriteStartElement("mod");//Modelo nota
_xml.WriteString(_infoNfe.Rows[0][""].ToString());//
_xml.WriteEndElement();
_xml.WriteStartElement("serie");//Serie da nfe
_xml.WriteString(Justificativa);//
_xml.WriteEndElement();
_xml.WriteStartElement("nNFIni");//Numero nota inicio
_xml.WriteString(_infoNfe.Rows[0]["nNF"].ToString());//sem formatação
_xml.WriteEndElement();
_xml.WriteStartElement("nNFFin");//Numero numero nota fim
_xml.WriteString(_infoNfe.Rows[0]["nNF"].ToString());// sem formatação
_xml.WriteEndElement();
_xml.WriteStartElement("xJust");//Justificativa escrita da inutilização
_xml.WriteString(Justificativa);//
_xml.WriteEndElement();
#endregion
_xml.WriteEndElement();//infInut
#endregion
_xml.WriteEndElement();//inutNFe
_xml.Close();
}
catch (Exception ex)
{
throw ex;
}
finally
{
_infoNfe.Dispose();
}
}
segunda-feira, 24 de outubro de 2011
Report Viewer Pdf
Olá a todos.
Neste projeto, é passado uma dataset dinamicamente, onde no reportviewe, ira preencher os produtos, o cabeçalho e demais itens são preenchidos por parametros configurados no reportviewer, e logo depois converte para pdf.
string a = Server.MapPath("Logo/Logo.jpg");
string b = Server.MapPath("~/Temp/");
ReportViewer1.LocalReport.EnableExternalImages = true;
ReportViewer1.LocalReport.DataSources.Clear();
ReportViewer1.LocalReport.SetParameters(_danfe.RetornaParametrosRptWEB(Convert.ToString(Session["XMLNFe"]), out _DsNFe, Server.MapPath("Logo/Logo.jpg"), Server.MapPath("~/Temp/")));
ReportViewer1.LocalReport.DataSources.Add(new ReportDataSource("DsNFe_DetalheNfe", _DsNFe.Tables[0]));
//ReportViewer1.LocalReport.Refresh();
//converte para pdf.
byte[] exportBytes = ReportViewer1.LocalReport.Render("PDF", null, out mimeType, out encoding, out fileNameExtension, out streamids, out warnings);
HttpContext.Current.Response.Buffer = true;
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.ContentType = mimeType;
HttpContext.Current.Response.AddHeader("content-disposition", ("inline; filename=ExportedReport." + fileNameExtension));
HttpContext.Current.Response.BinaryWrite(exportBytes);
HttpContext.Current.Response.Flush();
Neste projeto, é passado uma dataset dinamicamente, onde no reportviewe, ira preencher os produtos, o cabeçalho e demais itens são preenchidos por parametros configurados no reportviewer, e logo depois converte para pdf.
string a = Server.MapPath("Logo/Logo.jpg");
string b = Server.MapPath("~/Temp/");
ReportViewer1.LocalReport.EnableExternalImages = true;
ReportViewer1.LocalReport.DataSources.Clear();
ReportViewer1.LocalReport.SetParameters(_danfe.RetornaParametrosRptWEB(Convert.ToString(Session["XMLNFe"]), out _DsNFe, Server.MapPath("Logo/Logo.jpg"), Server.MapPath("~/Temp/")));
ReportViewer1.LocalReport.DataSources.Add(new ReportDataSource("DsNFe_DetalheNfe", _DsNFe.Tables[0]));
//ReportViewer1.LocalReport.Refresh();
//converte para pdf.
byte[] exportBytes = ReportViewer1.LocalReport.Render("PDF", null, out mimeType, out encoding, out fileNameExtension, out streamids, out warnings);
HttpContext.Current.Response.Buffer = true;
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.ContentType = mimeType;
HttpContext.Current.Response.AddHeader("content-disposition", ("inline; filename=ExportedReport." + fileNameExtension));
HttpContext.Current.Response.BinaryWrite(exportBytes);
HttpContext.Current.Response.Flush();
segunda-feira, 16 de maio de 2011
C# NFe Danfe, Retornando DataSet de Produtos
Olá!
Este procedimento abaixo retorna um dataset com os produtos pronto para serem usados na geração da Danfe, ou seja, já retorna no formato correto para preencher o grid de uma Danfe feita por exemplo com o Report Viwer.
Ele recebe o arquivo xml, e varre as tags gerando um Ds com as mesmas.
private DataSet GeraDsProd(string caminhoXml)
{
DataSet _ds = new DataSet();
DataTable _dt = new DataTable("DetalheNFe");
//Instancia doc com o xml
XmlDocument doc = new XmlDocument();
try
{
//le o xml no caminho correto
doc.Load(caminhoXml);
//le o elemento a ser trabalhado
XmlNodeList No = doc.GetElementsByTagName("prod");
//cria as colunas para serem colocandas no dataset.
_dt.Columns.Add("cProd");
_dt.Columns.Add("xProd");
_dt.Columns.Add("NCM");
_dt.Columns.Add("CFOP");
_dt.Columns.Add("uCom");
_dt.Columns.Add("qCom");
_dt.Columns.Add("vUnCom");
_dt.Columns.Add("vProd");
_dt.Columns.Add("vUnTrib");
_dt.Columns.Add("CST");
_dt.Columns.Add("vBC");
_dt.Columns.Add("pICMS");
_dt.Columns.Add("vICMS");
_dt.Columns.Add("vIPI");
_dt.Columns.Add("pIPI");
//carrega o dataset
_ds.Tables.Add(_dt);
//Leitura dos nos selecionados
foreach (XmlNode book in No)
{
//Criando Registros
DataRow _row;
_row = _dt.NewRow();
_dt.Rows.Add(_row);
for (int i = 0; i < book.ChildNodes.Count; i++)
{
//Verifica o nome do no correspondente a ser colocado na dataset
switch (book.ChildNodes.Item(i).Name)
{
case "cProd":
_row["cProd"] = book.ChildNodes.Item(i).InnerXml;
break;
case "xProd":
_row["xProd"] = book.ChildNodes.Item(i).InnerXml;
break;
case "NCM":
_row["NCM"] = book.ChildNodes.Item(i).InnerXml;
break;
case "CFOP":
_row["CFOP"] = book.ChildNodes.Item(i).InnerXml;
break;
case "uCom":
_row["uCom"] = book.ChildNodes.Item(i).InnerXml;
break;
case "qCom":
_row["qCom"] = string.Format("{0:d}", (book.ChildNodes.Item(i).InnerXml));
break;
case "vUnCom":
_row["vUnCom"] = string.Format("{0:d}", book.ChildNodes.Item(i).InnerXml);
break;
case "vProd":
_row["vProd"] = string.Format("{0:d}", (book.ChildNodes.Item(i).InnerXml));
break;
case "vUnTrib":
_row["vUnTrib"] = string.Format("{0:d}", (book.ChildNodes.Item(i).InnerXml));
break;
}
}
_row["vBC"] = "0.00";
_row["pICMS"] = "0.00";
_row["vICMS"] = "0.00";
_row["vIPI"] = "0.00";
_row["pIPI"] = "0.00";
if (book.NextSibling.Name.ToString() == "imposto")
{
for (int i = 0; i < book.NextSibling.ChildNodes.Count; i++)
{
switch (book.NextSibling.ChildNodes.Item(i).Name.ToString())
{
case "ICMS":
//verifica quantos filhos de icms estao dentro do pai
for (int ii = 0; ii < book.NextSibling.ChildNodes.Item(i).ChildNodes.Count; ii++)
{
for (int iii = 0; iii < book.NextSibling.ChildNodes.Item(i).ChildNodes.Item(ii).ChildNodes.Count; iii++)
{
switch (book.NextSibling.ChildNodes.Item(i).ChildNodes.Item(ii).ChildNodes.Item(iii).Name.ToString())
{
case "CSOSN":
//if (_dsAux.Tables[0].Columns.Contains("CST"))
//{
_row["CST"] = String.Format("{0:000}", Convert.ToInt32(book.NextSibling.ChildNodes.Item(i).ChildNodes.Item(ii).ChildNodes.Item(iii).InnerXml));
//}
break;
case "CST":
//if (_dsAux.Tables[0].Columns.Contains("CST"))
//{
_row["CST"] = String.Format("{0:000}", Convert.ToInt32(book.NextSibling.ChildNodes.Item(i).ChildNodes.Item(ii).ChildNodes.Item(iii).InnerXml));
//}
break;
case "vBC":
if (book.NextSibling.ChildNodes.Item(i).ChildNodes.Item(ii).ChildNodes.Item(iii).InnerXml != string.Empty)
{
_row["vBC"] = book.NextSibling.ChildNodes.Item(i).ChildNodes.Item(ii).ChildNodes.Item(iii).InnerXml;
}
break;
case "pICMS":
if (book.NextSibling.ChildNodes.Item(i).ChildNodes.Item(ii).ChildNodes.Item(iii).InnerXml != string.Empty)
{
_row["pICMS"] = book.NextSibling.ChildNodes.Item(i).ChildNodes.Item(ii).ChildNodes.Item(iii).InnerXml;
}
break;
case "vICMS":
if (book.NextSibling.ChildNodes.Item(i).ChildNodes.Item(ii).ChildNodes.Item(iii).InnerXml != string.Empty)
{
_row["vICMS"] = book.NextSibling.ChildNodes.Item(i).ChildNodes.Item(ii).ChildNodes.Item(iii).InnerXml;
}
break;
}
}
}
break;
case "IPI":
//verifica quantos filhos de icms estao dentro do pai
for (int ii = 0; ii < book.NextSibling.ChildNodes.Item(i).ChildNodes.Count; ii++)
{
for (int iii = 0; iii < book.NextSibling.ChildNodes.Item(i).ChildNodes.Item(ii).ChildNodes.Count; iii++)
{
switch (book.NextSibling.ChildNodes.Item(i).ChildNodes.Item(ii).ChildNodes.Item(iii).Name.ToString())
{
case "vIPI":
if (book.NextSibling.ChildNodes.Item(i).ChildNodes.Item(ii).ChildNodes.Item(iii).InnerXml != string.Empty)
{
_row["vIPI"] = book.NextSibling.ChildNodes.Item(i).ChildNodes.Item(ii).ChildNodes.Item(iii).InnerXml;
}
break;
case "pIPI":
if (book.NextSibling.ChildNodes.Item(i).ChildNodes.Item(ii).ChildNodes.Item(iii).InnerXml != string.Empty)
{
_row["pIPI"] = book.NextSibling.ChildNodes.Item(i).ChildNodes.Item(ii).ChildNodes.Item(iii).InnerXml;
}
break;
}
}
}
break;
}
}//for imposto
}//if imposto
}
return _ds;
}
catch (Exception ex)
{
throw ex;
}
}
Grande Abraço a Todos
Fernando Valota
Este procedimento abaixo retorna um dataset com os produtos pronto para serem usados na geração da Danfe, ou seja, já retorna no formato correto para preencher o grid de uma Danfe feita por exemplo com o Report Viwer.
Ele recebe o arquivo xml, e varre as tags gerando um Ds com as mesmas.
private DataSet GeraDsProd(string caminhoXml)
{
DataSet _ds = new DataSet();
DataTable _dt = new DataTable("DetalheNFe");
//Instancia doc com o xml
XmlDocument doc = new XmlDocument();
try
{
//le o xml no caminho correto
doc.Load(caminhoXml);
//le o elemento a ser trabalhado
XmlNodeList No = doc.GetElementsByTagName("prod");
//cria as colunas para serem colocandas no dataset.
_dt.Columns.Add("cProd");
_dt.Columns.Add("xProd");
_dt.Columns.Add("NCM");
_dt.Columns.Add("CFOP");
_dt.Columns.Add("uCom");
_dt.Columns.Add("qCom");
_dt.Columns.Add("vUnCom");
_dt.Columns.Add("vProd");
_dt.Columns.Add("vUnTrib");
_dt.Columns.Add("CST");
_dt.Columns.Add("vBC");
_dt.Columns.Add("pICMS");
_dt.Columns.Add("vICMS");
_dt.Columns.Add("vIPI");
_dt.Columns.Add("pIPI");
//carrega o dataset
_ds.Tables.Add(_dt);
//Leitura dos nos selecionados
foreach (XmlNode book in No)
{
//Criando Registros
DataRow _row;
_row = _dt.NewRow();
_dt.Rows.Add(_row);
for (int i = 0; i < book.ChildNodes.Count; i++)
{
//Verifica o nome do no correspondente a ser colocado na dataset
switch (book.ChildNodes.Item(i).Name)
{
case "cProd":
_row["cProd"] = book.ChildNodes.Item(i).InnerXml;
break;
case "xProd":
_row["xProd"] = book.ChildNodes.Item(i).InnerXml;
break;
case "NCM":
_row["NCM"] = book.ChildNodes.Item(i).InnerXml;
break;
case "CFOP":
_row["CFOP"] = book.ChildNodes.Item(i).InnerXml;
break;
case "uCom":
_row["uCom"] = book.ChildNodes.Item(i).InnerXml;
break;
case "qCom":
_row["qCom"] = string.Format("{0:d}", (book.ChildNodes.Item(i).InnerXml));
break;
case "vUnCom":
_row["vUnCom"] = string.Format("{0:d}", book.ChildNodes.Item(i).InnerXml);
break;
case "vProd":
_row["vProd"] = string.Format("{0:d}", (book.ChildNodes.Item(i).InnerXml));
break;
case "vUnTrib":
_row["vUnTrib"] = string.Format("{0:d}", (book.ChildNodes.Item(i).InnerXml));
break;
}
}
_row["vBC"] = "0.00";
_row["pICMS"] = "0.00";
_row["vICMS"] = "0.00";
_row["vIPI"] = "0.00";
_row["pIPI"] = "0.00";
if (book.NextSibling.Name.ToString() == "imposto")
{
for (int i = 0; i < book.NextSibling.ChildNodes.Count; i++)
{
switch (book.NextSibling.ChildNodes.Item(i).Name.ToString())
{
case "ICMS":
//verifica quantos filhos de icms estao dentro do pai
for (int ii = 0; ii < book.NextSibling.ChildNodes.Item(i).ChildNodes.Count; ii++)
{
for (int iii = 0; iii < book.NextSibling.ChildNodes.Item(i).ChildNodes.Item(ii).ChildNodes.Count; iii++)
{
switch (book.NextSibling.ChildNodes.Item(i).ChildNodes.Item(ii).ChildNodes.Item(iii).Name.ToString())
{
case "CSOSN":
//if (_dsAux.Tables[0].Columns.Contains("CST"))
//{
_row["CST"] = String.Format("{0:000}", Convert.ToInt32(book.NextSibling.ChildNodes.Item(i).ChildNodes.Item(ii).ChildNodes.Item(iii).InnerXml));
//}
break;
case "CST":
//if (_dsAux.Tables[0].Columns.Contains("CST"))
//{
_row["CST"] = String.Format("{0:000}", Convert.ToInt32(book.NextSibling.ChildNodes.Item(i).ChildNodes.Item(ii).ChildNodes.Item(iii).InnerXml));
//}
break;
case "vBC":
if (book.NextSibling.ChildNodes.Item(i).ChildNodes.Item(ii).ChildNodes.Item(iii).InnerXml != string.Empty)
{
_row["vBC"] = book.NextSibling.ChildNodes.Item(i).ChildNodes.Item(ii).ChildNodes.Item(iii).InnerXml;
}
break;
case "pICMS":
if (book.NextSibling.ChildNodes.Item(i).ChildNodes.Item(ii).ChildNodes.Item(iii).InnerXml != string.Empty)
{
_row["pICMS"] = book.NextSibling.ChildNodes.Item(i).ChildNodes.Item(ii).ChildNodes.Item(iii).InnerXml;
}
break;
case "vICMS":
if (book.NextSibling.ChildNodes.Item(i).ChildNodes.Item(ii).ChildNodes.Item(iii).InnerXml != string.Empty)
{
_row["vICMS"] = book.NextSibling.ChildNodes.Item(i).ChildNodes.Item(ii).ChildNodes.Item(iii).InnerXml;
}
break;
}
}
}
break;
case "IPI":
//verifica quantos filhos de icms estao dentro do pai
for (int ii = 0; ii < book.NextSibling.ChildNodes.Item(i).ChildNodes.Count; ii++)
{
for (int iii = 0; iii < book.NextSibling.ChildNodes.Item(i).ChildNodes.Item(ii).ChildNodes.Count; iii++)
{
switch (book.NextSibling.ChildNodes.Item(i).ChildNodes.Item(ii).ChildNodes.Item(iii).Name.ToString())
{
case "vIPI":
if (book.NextSibling.ChildNodes.Item(i).ChildNodes.Item(ii).ChildNodes.Item(iii).InnerXml != string.Empty)
{
_row["vIPI"] = book.NextSibling.ChildNodes.Item(i).ChildNodes.Item(ii).ChildNodes.Item(iii).InnerXml;
}
break;
case "pIPI":
if (book.NextSibling.ChildNodes.Item(i).ChildNodes.Item(ii).ChildNodes.Item(iii).InnerXml != string.Empty)
{
_row["pIPI"] = book.NextSibling.ChildNodes.Item(i).ChildNodes.Item(ii).ChildNodes.Item(iii).InnerXml;
}
break;
}
}
}
break;
}
}//for imposto
}//if imposto
}
return _ds;
}
catch (Exception ex)
{
throw ex;
}
}
Grande Abraço a Todos
Fernando Valota
Assinar:
Postagens (Atom)
