public void InserirNotaFiscal(NotaFiscal nf) { Type tipo = nf.GetType(); PropertyInfo[] propriedades = tipo.GetProperties(); ProcParam p = new ProcParam(); p.paramsColection = new List <ProcAttr>(); foreach (PropertyInfo prop in propriedades) { ProcAttr attr = new ProcAttr(); if (prop.Name != "ItensDaNotaFiscal") { attr.attrName = prop.Name; recuperarSQLDBType(ref attr.attrType, prop.PropertyType.Name); attr.attrValue = prop.GetValue(nf, null); p.paramsColection.Add(attr); } } conexao.ExecutarProcedure("P_NOTA_FISCAL", p.paramsColection, out NfId); }
private bool PersistirNotaFiscal(NotaFiscal nf) { StringWriter sw = new StringWriter(); XmlTextWriter tw = null; bool retorno; try { XmlSerializer serializer = new XmlSerializer(nf.GetType()); tw = new XmlTextWriter(sw); serializer.Serialize(tw, nf); } catch (Exception e) { } finally { if (sw.ToString() != string.Empty) { retorno = true; } else { retorno = false; } } return(retorno); }
private void SalvarXml(NotaFiscal notaFiscal, string caminhoXml) { XmlSerializer serializador = new XmlSerializer(notaFiscal.GetType()); StreamWriter stream = new StreamWriter(caminhoXml + String.Format("NotaFiscal-{0}.xml", notaFiscal.NomeCliente)); serializador.Serialize(stream, notaFiscal); stream.Close(); }
public bool GerarXMLNota(string diretorio, NotaFiscal nota) { try { if (!diretorio.EndsWith("\\")) { diretorio = diretorio + "\\"; } diretorio = diretorio + nota.NumeroNotaFiscal.ToString() + " - " + nota.NomeCliente.ToString() + ".xml"; if (!File.Exists(diretorio)) { XmlTextWriter xmlArquivo = new XmlTextWriter(diretorio, Encoding.GetEncoding("ISO-8859-1")); XmlSerializer x = new XmlSerializer(nota.GetType()); x.Serialize(xmlArquivo, nota); if (File.Exists(diretorio)) { return(true); } else { return(false); } } else { return(false); } } catch (Exception e) { return(false); throw new Exception(e.Message); } }
public Domain.NotaFiscal GerarNotaFiscal(Domain.Pedido pedido) { // Geração da Nota Fiscal com base no pedido // Alteração do local do código por interpretação da responsabilidade das classes // A nova codificação exige uma consulta no banco e forçaria uma depencia if (pedido.NomeCliente.Trim().Length == 0) { throw new ServiceException("Nome do cliente não informado"); } if (pedido.ItensDoPedido.Count == 0) { throw new ServiceException("Nenhum item adicionado ao pedido"); } Domain.NotaFiscal notaFiscal = new NotaFiscal(); notaFiscal.NumeroNotaFiscal = notaFiscalRepository.MaxNumeroNotaFiscal() + 1; notaFiscal.Serie = new Random().Next(Int32.MaxValue); notaFiscal.NomeCliente = pedido.NomeCliente; notaFiscal.EstadoOrigem = pedido.EstadoOrigem.Sigla; notaFiscal.EstadoDestino = pedido.EstadoDestino.Sigla; Data.EstadoCFOPRepository estadoCFOPRepository = new Data.EstadoCFOPRepository(); Domain.EstadoCFOP estadoCfop = estadoCFOPRepository.CarregarEstadoCFOP(notaFiscal.EstadoOrigem, notaFiscal.EstadoDestino); if (estadoCfop == null) { throw new ServiceException("Os estados de origem e destino selecionados não são permitidos"); } foreach (PedidoItem itemPedido in pedido.ItensDoPedido) { NotaFiscalItem notaFiscalItem = new NotaFiscalItem(); notaFiscalItem.Cfop = estadoCfop.CFOP.Codigo; if (notaFiscal.EstadoDestino == notaFiscal.EstadoOrigem) { notaFiscalItem.TipoIcms = "60"; notaFiscalItem.AliquotaIcms = 0.18; } else { notaFiscalItem.TipoIcms = "10"; notaFiscalItem.AliquotaIcms = 0.17; } notaFiscalItem.BaseIcms = itemPedido.ValorItemPedido * estadoCfop.CFOP.FatorBase; notaFiscalItem.BaseIpi = itemPedido.ValorItemPedido; notaFiscalItem.AliquotaIpi = 0.1; if (itemPedido.Brinde) { notaFiscalItem.TipoIcms = "60"; notaFiscalItem.AliquotaIcms = 0.18; notaFiscalItem.AliquotaIpi = 0; } notaFiscalItem.ValorIcms = notaFiscalItem.BaseIcms * notaFiscalItem.AliquotaIcms; notaFiscalItem.ValorIpi = notaFiscalItem.BaseIpi * notaFiscalItem.AliquotaIpi; notaFiscalItem.Desconto = itemPedido.Desconto; notaFiscalItem.NomeProduto = itemPedido.NomeProduto; notaFiscalItem.CodigoProduto = itemPedido.CodigoProduto; notaFiscal.ItensDaNotaFiscal.Add(notaFiscalItem); } // Geração do arquivo XML try { if (!Directory.Exists(DirXMLNotaFiscal)) { Directory.CreateDirectory(DirXMLNotaFiscal); } string fileName = String.Format("{0}{1}.xml", DirXMLNotaFiscal, notaFiscal.NumeroNotaFiscal); FileStream notaFiscalStream = File.Open(fileName, FileMode.Create); XmlSerializer notaFiscalSerializer = new XmlSerializer(notaFiscal.GetType()); notaFiscalSerializer.Serialize(notaFiscalStream, notaFiscal); notaFiscalStream.Close(); } catch (Exception e) { throw new ServiceException("Falha ao gerar arquivo XML", e); } // Gravar Nota Fiscal no banco de dados try { notaFiscalRepository.Salvar(notaFiscal); } catch (Exception e) { throw new ServiceException("Falha ao gravar no banco de dados", e); } return(notaFiscal); }