コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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();
        }
コード例 #4
0
ファイル: NotaFiscalService.cs プロジェクト: wra1984/net-lab
        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);
            }
        }
コード例 #5
0
        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);
        }