├── .gitignore ├── Makefile ├── README.md ├── composer.json ├── doc ├── book │ ├── .gitkeep │ ├── cle │ │ ├── bookdown.json │ │ ├── exemplos.md │ │ ├── intro.md │ │ └── referencias.md │ ├── common │ │ ├── bookdown.json │ │ ├── exemplos.md │ │ ├── intro.md │ │ └── referencias.md │ ├── conduct.md │ ├── configurando.md │ ├── contribuing.md │ ├── cte │ │ ├── bookdown.json │ │ ├── exemplos.md │ │ ├── intro.md │ │ └── referencias.md │ ├── documentando.md │ ├── efd │ │ ├── bookdown.json │ │ ├── exemplos.md │ │ ├── intro.md │ │ └── referencias.md │ ├── efinanceira │ │ ├── bookdown.json │ │ ├── exemplos.md │ │ ├── intro.md │ │ └── referencias.md │ ├── esocial │ │ ├── bookdown.json │ │ ├── exemplos.md │ │ ├── intro.md │ │ └── referencias.md │ ├── estrutura.md │ ├── index.md │ ├── iniciando.md │ ├── mdfe │ │ ├── bookdown.json │ │ ├── exemplos.md │ │ ├── intro.md │ │ └── referencias.md │ ├── nfe │ │ ├── bookdown.json │ │ ├── exemplos.md │ │ ├── intro.md │ │ └── referencias.md │ ├── nfephp.md │ ├── nfephp │ │ ├── bookdown.json │ │ ├── exemplos.md │ │ ├── intro.md │ │ └── referencias.md │ └── posprint │ │ ├── bookdown.json │ │ ├── exemplos.md │ │ ├── intro.md │ │ └── referencias.md ├── bookdown.json └── theme.json └── mkdocs.yml /.gitignore: -------------------------------------------------------------------------------- 1 | .buildpath 2 | .DS_Store 3 | .idea 4 | .project 5 | .settings/ 6 | .*.sw* 7 | .*.un~ 8 | nbproject 9 | tmp/ 10 | local 11 | doc/html/ 12 | composer.lock 13 | vendor -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | # sped-docs 2 | # 3 | # O propósito deste script é gerar o arquivo mkdocs.yml a aprtir do arquivo fonte doc/book/bookdown.json. 4 | # 5 | # Variaveis configuraveis: 6 | # - BOOKDOWN2MKDOCS - especifica o caminho para o executável "bookdown2mkdocs"; 7 | # a opção defaults aponta para ./vendor/bin/bookdown2mkdocs 8 | # 9 | # Opções disponíveis: 10 | # - mkdocs - regenera o arquivo mkdocs.yml 11 | # - all - sinomimo para mkdocs 12 | # 13 | # bootstrap 14 | # readthedocs 15 | # amelia 16 | # ceruleam 17 | # cosmo 18 | # cyborg 19 | # flatly 20 | # journal 21 | # readable 22 | # simplex 23 | # slate 24 | # spacelab 25 | # united 26 | # yeti 27 | 28 | 29 | BOOKDOWN2MKDOCS?=$(CURDIR)/vendor/bin/bookdown2mkdocs.php 30 | 31 | .PHONY : all mkdocs bookdown2mkdocs 32 | 33 | all : mkdocs 34 | 35 | mkdocs : 36 | @echo "Gerando mkdocs.yml a partir do bookdown.json..." 37 | -$(BOOKDOWN2MKDOCS) convert --site-name=NFePHP --repo-url=https://github.com/nfephp-org/sped-docs --copyright-url=http://www.nfephp.org/ --copyright-author="NFePHP" --mkdocs='{"theme": "readthedocs"}' 38 | @echo "[FEITO]" 39 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # NFePHP - Documentação da API 2 | NFePHP é uma API para gerenciamento das comunicações entre o emitente de documentos fiscais eletrônicos do projeto SPED e os serviços dos SEFAZ estaduais e Receita Federal. 3 | Inteiramente construído em PHP para rodar sob qualquer sistema operacional. 4 | 5 | ** Acompanhe o nosso forum e não deixe de se cadastrar no [grupo de discussão do NFePHP](https://groups.google.com/forum/#!forum/nfephp)! muitas de suas duvidas podem ser resolvida lá.** 6 | 7 | ## Condicionantes para usar e entender a API 8 | Para usar essa API é necessário conhecimento em programação PHP, bem como conhecer os padrões atuais da linguagem e ter bases de legislação fiscal. É extremanente recomendável que seja estudado o conteúdo dos seguintes sites. 9 | 10 | ### Documentação Oficial do Projeto Sped 11 | * [Documentação do Funcionamento do sistema NFe](http://www.nfe.fazenda.gov.br/portal/principal.aspx) 12 | * [Documentação do Funcionamento do sistema CTe](http://www.cte.fazenda.gov.br/) 13 | * [Documentação do Funcionamento do sistema MDFe](https://mdfe-portal.sefaz.rs.gov.br/) 14 | * [Documentação do Funcionamento do sistema CLe](http://cle.sefaz.am.gov.br/portal/) 15 | * [Documentação do Funcionamento do sistema GNRE](http://www.gnre.pe.gov.br/gnre/portal/GNRE_Principal.jsp) 16 | * [Documentação do Funcionamento do sistema eFinanceira](http://sped.rfb.gov.br/projeto/show/1179) 17 | * [Documentação do Funcionamento do sistema eSocial](http://sped.rfb.gov.br/projeto/show/1048) 18 | * [Documentação do Funcionamento do sistema EFD ICMS IPI](http://sped.rfb.gov.br/projeto/show/274) 19 | 20 | ### Uso da linguagem de programação PHP 21 | * [Composer Documentação Construção do composer.json](http://composer.json.jolicode.com/) 22 | * [IMPORTANTE PHP do Jeito Certo](http://br.phptherightway.com/) 23 | * [Coding Style Guide PSR-2](http://www.php-fig.org/psr/psr-2/) 24 | * [Autoload PSR-4](http://www.php-fig.org/psr/psr-4/) 25 | > NOTA: A NFSe Nota Fiscal de Serviços Eletrônica, não tem padrão único, e a API tem somente alguns exemplos de montagem de um sistema para esse fim, mas nenhuma API realmente funcional para esse tipo de documentos fiscais. 26 | 27 | ## Objetivo 28 | 29 | A API permite que um programa emissor se comunique com a SEFAZ. A API não foi criada para ela própria emitir dos documentos relativos ao projeto Sped, tendo em vista a enorme quantidade de informações necessárias e as características e especificidades de cada emitente. 30 | Portanto é a sua aplicação quem deve definir que dados devem ser colocados no XML do documento fiscal eletrÔnico e não a API. Em principio a API não fará ou terá nenhum tipo de filtro ou validador interno, apenas aquele baseado nos schemas fornecidos pela SEFAZ. 31 | 32 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "require": { 3 | "phly/bookdown2mkdocs": "^0.1.2" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /doc/book/.gitkeep: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /doc/book/cle/bookdown.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "sped-cle", 3 | "content": [ 4 | {"Intro": "intro.md"}, 5 | {"Exemplos": "exemplos.md"}, 6 | {"Referencias": "referencias.md"} 7 | ] 8 | } 9 | -------------------------------------------------------------------------------- /doc/book/cle/exemplos.md: -------------------------------------------------------------------------------- 1 | # EXEMPLOS 2 | -------------------------------------------------------------------------------- /doc/book/cle/intro.md: -------------------------------------------------------------------------------- 1 | # INTRODUÇÃO 2 | -------------------------------------------------------------------------------- /doc/book/cle/referencias.md: -------------------------------------------------------------------------------- 1 | # REFERÊNCIAS 2 | 3 | -------------------------------------------------------------------------------- /doc/book/common/bookdown.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "sped-common", 3 | "content": [ 4 | {"Intro": "intro.md"}, 5 | {"Exemplos": "exemplos.md"}, 6 | {"Referencias": "referencias.md"} 7 | ] 8 | } 9 | -------------------------------------------------------------------------------- /doc/book/common/exemplos.md: -------------------------------------------------------------------------------- 1 | # EXEMPLOS 2 | -------------------------------------------------------------------------------- /doc/book/common/intro.md: -------------------------------------------------------------------------------- 1 | # INTRODUÇÃO 2 | -------------------------------------------------------------------------------- /doc/book/common/referencias.md: -------------------------------------------------------------------------------- 1 | # REFERÊNCIAS 2 | 3 | -------------------------------------------------------------------------------- /doc/book/conduct.md: -------------------------------------------------------------------------------- 1 | # Código de Conduta Contributor 2 | 3 | Como contribuidores e mantenedores deste projeto, e no interesse de promover uma comunidade aberta e acolhedora, nós nos comprometemos a respeitar todas as pessoas que contribuem através do registro de falhas, postando pedidos de funcionalidades, atualizando a documentação, submetendo "pull requests" ou patches, e outras atividades. 4 | 5 | Estamos empenhados em tornar a participação neste projecto uma experiência livre de assédio para todos, independentemente do nível de experiência, sexo, identidade de gênero e expressão, orientação sexual, deficiência, aparência pessoal, tamanho corporal, raça, etnia, idade, religião ou nacionalidade. 6 | 7 | Exemplos de comportamento inaceitável pelos participantes incluem: 8 | 9 | * O uso de linguagem sexualizada ou imagens 10 | * Ataques pessoais 11 | * Ataques ou insinuações / comentários depreciativos 12 | * Assédio público ou privado 13 | * Publicar informações privadas e/ou pessoais, como endereços físicos ou eletrônicos, sem a permissão explícita 14 | * Outras condutas antiéticas ou não profissionais. 15 | 16 | Os mantenedores do projeto têm o direito e a responsabilidade de remover, editar, ou rejeitar comentários, comitar, códificar, editas wikis, problemas e outras contribuições que não estejam alinhadas a este Código de Conduta. Ao adotar este Código de Conduta, os mantenedores do projeto se comprometem a forma justa e coerente a aplicar estes princípios a todos os aspectos da gestão do projeto. mantenedores do projeto que não seguem ou não fazem cumprir esse Código de Conduta podem ser permanentemente removidos da equipe do projeto. 17 | 18 | Este código de conduta aplica-se tanto dentro dos espaços do projeto e em espaços públicos quando um indivíduo está representando o projeto ou sua comunidade em uma ação direta ou pessoal. Pontos de vista pessoais, crenças e valores dos indivíduos não refletem necessariamente os da organização ou outros indivíduos e organizações afiliadas. 19 | 20 | Instâncias de assédio ou comportamento abusivo, de outro modo inaceitáveis ​​podem ser relatados através da abertura de uma ISSUE ou entrar em contato com um ou mais dos mantenedores do projeto. 21 | 22 | Este Código de Conduta é uma adaptação do [Contribuinte Aliança] (http://contributor-covenant.org), versão 1.2.0, disponível em [http://contributor-covenant.org/version/1/2/0/ ] (http://contributor-covenant.org/version/1/2/0/) 23 | 24 | > Agradecemos "The League of Extraordinary Packages" pelas orientações e estruturas disponibilizadas em seu repositório thephpleague/skeleton 25 | 26 | # *Contributor Code of Conduct* 27 | 28 | *As contributors and maintainers of this project, and in the interest of fostering an open and welcoming community, we pledge to respect all people who contribute through reporting issues, posting feature requests, updating documentation, submitting pull requests or patches, and other activities.* 29 | 30 | *We are committed to making participation in this project a harassment-free experience for everyone, regardless of level of experience, gender, gender identity and expression, sexual orientation, disability, personal appearance, body size, race, ethnicity, age, religion, or nationality.* 31 | 32 | *Examples of unacceptable behavior by participants include:* 33 | 34 | * *The use of sexualized language or imagery* 35 | * *Personal attacks* 36 | * *Trolling or insulting/derogatory comments* 37 | * *Public or private harassment* 38 | * *Publishing other's private information, such as physical or electronic addresses, without explicit permission* 39 | * *Other unethical or unprofessional conduct.* 40 | 41 | *Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct. By adopting this Code of Conduct, project maintainers commit themselves to fairly and consistently applying these principles to every aspect of managing this project. Project maintainers who do not follow or enforce the Code of Conduct may be permanently removed from the project team.* 42 | 43 | *This code of conduct applies both within project spaces and in public spaces when an individual is representing the project or its community in a direct capacity. Personal views, beliefs and values of individuals do not necessarily reflect those of the organisation or affiliated individuals and organisations.* 44 | 45 | *Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by opening an issue or contacting one or more of the project maintainers.* 46 | 47 | *This Code of Conduct is adapted from the [Contributor Covenant](http://contributor-covenant.org), version 1.2.0, available at [http://contributor-covenant.org/version/1/2/0/](http://contributor-covenant.org/version/1/2/0/)* 48 | 49 | > *Thanks The League of Extraordinary Packages for the guidelines and structures available in your repository thephpleague / skeleton* 50 | 51 | 52 | -------------------------------------------------------------------------------- /doc/book/configurando.md: -------------------------------------------------------------------------------- 1 | # Configurando a API 2 | 3 | A configuração da API é feita através de um arquivo ou até de um array no formato JSON. 4 | 5 | Esse array-JSON contêm os dados necessários para que a API saiba onde estão os arquivos importantes, como os certificados digitais e outras informações relevantes. 6 | 7 | Abaixo vamos descrever o conteúdo desse array-JSON, mas antes alguns esclarecimentos. 8 | 9 | 1. Porque usar o formato JSON e não um array do PHP ? 10 | > Apenas por facilidade de passar os parametros por vários meios, até mesmo por GET ou POST e também pode ser bem legível por humanos. 11 | 12 | 2. Porque tem tantos dados sobre CTe ou MDFe, se eu só vou usar NFe ? 13 | > O mesmo arquivo de configuração poderá ser usado em todos os pacotes que fazem parte do SPED, seja NFe, CTe, MDFe, CLe, e até NFSe. 14 | 15 | A seguir temos um exemplo preenchido desse array-JSON 16 | 17 | ```json 18 | { 19 | "atualizacao":"2016-02-02 08:01:21", 20 | "tpAmb":2, 21 | "pathXmlUrlFileNFe":"nfe_ws3_mod55.xml", 22 | "pathXmlUrlFileCTe":"cte_ws1.xml", 23 | "pathXmlUrlFileMDFe":"mdfe_ws1.xml", 24 | "pathXmlUrlFileCLe":"cle_ws1.xml", 25 | "pathXmlUrlFileNFSe":"", 26 | "pathNFeFiles":"\/MyApp\/nfe", 27 | "pathCTeFiles":"\/MyApp\/cte", 28 | "pathMDFeFiles":"\/MyApp\/mdfe", 29 | "pathCLeFiles":"\/MyApp\/cle", 30 | "pathNFSeFiles":"\/MyApp\/nfse", 31 | "pathCertsFiles":"\/MyApp\/certs\/", 32 | "siteUrl":"http:\/\/myapp.local", 33 | "schemesNFe":"PL_008h2", 34 | "schemesCTe":"PL_CTE_104", 35 | "schemesMDFe":"MDFe_100", 36 | "schemesCLe":"CLe_100", 37 | "schemesNFSe":"", 38 | "razaosocial":"Fulano de tal Ltda", 39 | "siglaUF":"AM", 40 | "cnpj":"547678524000133", 41 | "tokenIBPT":"AAAAAAA", 42 | "tokenNFCe":"GPB0JBWLUR6HWFTVEAS6RJ69GPCROFPBBB8G", 43 | "tokenNFCeId":"000002", 44 | "certPfxName":"myapp_2016.pfx", 45 | "certPassword":"JIO&$@2990_zx", 46 | "certPhrase":"tajomstvo", 47 | "aDocFormat":{ 48 | "format":"P", 49 | "paper":"A4", 50 | "southpaw":"1", 51 | "pathLogoFile":"\/MyApp\/publico\/images\/logo.jpg", 52 | "logoPosition":"L", 53 | "font":"Times", 54 | "printer":"hpteste"}, 55 | "aMailConf":{ 56 | "mailAuth":"1", 57 | "mailFrom":"roberto@myapp.local", 58 | "mailSmtp":"smtp.myapp.local", 59 | "mailUser":"roberto@myapp.local", 60 | "mailPass":"heslo$", 61 | "mailProtocol":"ssl", 62 | "mailPort":"587", 63 | "mailFromMail":null, 64 | "mailFromName":null, 65 | "mailReplayToMail":null, 66 | "mailReplayToName":null, 67 | "mailImapHost":null, 68 | "mailImapPort":null, 69 | "mailImapSecurity":null, 70 | "mailImapNocerts":null, 71 | "mailImapBox":null}, 72 | "aProxyConf":{ 73 | "proxyIp":"", 74 | "proxyPort":"", 75 | "proxyUser":"", 76 | "proxyPass":""} 77 | } 78 | ``` 79 | Esclarecendo alguns detalhes desses campos do arquivo de configuração: 80 | 81 | Onde encontramos "\/" indica que temos que apontar o path completo, isso pode ser diferente em ambiente Windows, então teste e fique atento. Esses paths apontam para uma pasta na raiz do servidor Linux denominada "MyApp" essa é, no caso, a pasta raiz da aplicação mapeada no VirtualHost do Apache ou do Nginx, mas poderiam ser em qualquer local do servidor. É importante salientar que essas pastas devem ter PERMISSÃO DE ESCRITA pelo usuário do servidor Web (Apache ou do Nginx). Ou seja, as pasta onde estão os certificados e as pastas onde serão mantidos os XML serão acessadas e escritas pelo servidor Web. **É importante que a pasta onde são mantidos esses documentos não fiquem ao alcance externo, então não deixe nada disso em pastas PUBLICAS**. 82 | 83 | 84 | Explicando as variáveis: 85 | 86 | - **"atualizacao"** - apenas contê a data e hora da ultima alteração desses dados. 87 | 88 | - **"tpAmb"** - tipo de ambiente, sendo 2 homologação e 1 produção. CUIDADO com isso pois se estiver em produção seus dados e qualquer operação com a SEFAZ será considerada REAL com implicações FISCAIS. 89 | 90 | - **pathXmlUrlFile???"** - aqui são colocados os nomes dos arquivos usados para acessar as listas de endereçoes dos webservices de cada um dos componentes do SPED, estes arquivos xml são distribuidos junto com a API e estão na pasta "vendor/nfephp-org/sped-nfe/config" ou equivalente, não indique o path completo nesses casos apenas o nome do arquivo. 91 | 92 | - **Os damais casos, acredito que sejam auto explicativos.** 93 | 94 | ## Instanciando com a configuração 95 | 96 | ```php 97 | $config = ''; 98 | $tools = new NFePHP\Tools($config); 99 | ``` 100 | Para instanciar as classes de comunicação basta passar esse arquivo json ou uma string que contenha esses dados em formato Json. Por exemplo que seu sistema tem várias empresas é só colocar essa configuração em um campo da base de dados e usar qunado necessário, ou denominar os arquivos e paths da forma que você quiser. 101 | 102 | -------------------------------------------------------------------------------- /doc/book/contribuing.md: -------------------------------------------------------------------------------- 1 | # Contribuindo (*Contributing*) 2 | 3 | Todas as contribuições são **bem vindas** e serão totalmente **creditadas** aos seus autores. 4 | >*Contributions are **welcome** and will be fully **credited**.* 5 | 6 | Nós aceitamos contribuições via "pull request" através do repositório no [GitHub](https://github.com/nfephp-org). 7 | >*We accept contributions via Pull Requests on [Github](https://github.com/nfephp-org).* 8 | 9 | 10 | ## Pull Requests 11 | 12 | - **[PSR-2 Coding Standard](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md)** - A forma mais facil de aplicar as convenções é atraves do PHP Code Sniffer. 13 | > *The easiest way to apply the conventions is to install [PHP Code Sniffer](http://pear.php.net/package/PHP_CodeSniffer).* 14 | 15 | - **Adicione testes unitários!** - Seus patch não serão aceitos caso não tenham testes. 16 | > *Your patch won't be accepted if it doesn't have tests.* 17 | 18 | - **Documente qualquer alteração de comportamento** - Tenha certeza de manter o `README.md` e qualquer outra documentação relevante atualizada com o seu patch. 19 | > *Make sure the `README.md` and any other relevant documentation are kept up-to-date.* 20 | 21 | - **Considere nosso ciclo de versões** - Nós tentamos seguir a especificação SemVer v2.0.0. Quebrar aleatóriamente uma API publica não é uma opção. 22 | > *We try to follow [SemVer v2.0.0](http://semver.org/). Randomly breaking public APIs is not an option.* 23 | 24 | - **Use as branchs disponíveis** - Não nos peça para puxar do seu branch master. 25 | > *Don't ask us to pull from your master branch.* 26 | 27 | - **Apenas um pull request por facilidade/correção** - Se você quiser fazer mais de uma coisa, envie várias solicitações de pull, não coloque tudo de uma vez. 28 | > *If you want to do more than one thing, send multiple pull requests.* 29 | 30 | - **Faça commits coerentes** - Certifique-se que cada commit individual em seu pull request é significativo. Se você tivesse que fazer várias commits intermediários durante o desenvolvimento, por favor junte antes de submeter. 31 | > *Make sure each individual commit in your pull request is meaningful. If you had to make multiple intermediate commits while developing, please [squash them](http://www.git-scm.com/book/en/v2/Git-Tools-Rewriting-History#Changing-Multiple-Commit-Messages) before submitting.* 32 | 33 | 34 | ## Running Tests 35 | 36 | ``` bash 37 | $ composer test 38 | ``` 39 | 40 | 41 | **Happy coding**! -------------------------------------------------------------------------------- /doc/book/cte/bookdown.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "sped-cte", 3 | "content": [ 4 | {"Intro": "intro.md"}, 5 | {"Exemplos": "exemplos.md"}, 6 | {"Referencias": "referencias.md"} 7 | ] 8 | } 9 | -------------------------------------------------------------------------------- /doc/book/cte/exemplos.md: -------------------------------------------------------------------------------- 1 | # EXEMPLOS 2 | -------------------------------------------------------------------------------- /doc/book/cte/intro.md: -------------------------------------------------------------------------------- 1 | # INTRODUÇÃO 2 | -------------------------------------------------------------------------------- /doc/book/cte/referencias.md: -------------------------------------------------------------------------------- 1 | # REFERÊNCIAS 2 | 3 | -------------------------------------------------------------------------------- /doc/book/documentando.md: -------------------------------------------------------------------------------- 1 | # Documentando 2 | 3 | Aqui devem ser montadas as documentações basicas e estabelecidas as estruturas do projeto 4 | NFePHP e suas partes "sped" 5 | 6 | Para essa documentação será utilizado o padrão Markdown usando o pacote Bookdown2Mkdocs 7 | 8 | ``` 9 | composer global require phly/bookdown2mkdocs 10 | ``` 11 | 12 | Esse pacote converte um conjunto de paginas .md e sua definição em um arquivo .json em uma estrutura legivel e convertiver diretamente pelo padrão mkdocs.yml para então permitir a atualização automática em um repositório do "Read The Docs". 13 | 14 | Toda a documentação, em principio estará concentrada no repositorio [sped-docs](https://github.com/nfephp-org/sped-docs), mas este formato poderá ser alterado futuramente abrindo condições para separar també a documentação de cada bloco de projeto. 15 | 16 | 17 | ## Colaboração 18 | 19 | - Registro e manutenção do domínio "nfephp.org" (Raphael Canguçu). 20 | 21 | 22 | -------------------------------------------------------------------------------- /doc/book/efd/bookdown.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "sped-efd", 3 | "content": [ 4 | {"Intro": "intro.md"}, 5 | {"Exemplos": "exemplos.md"}, 6 | {"Referencias": "referencias.md"} 7 | ] 8 | } 9 | -------------------------------------------------------------------------------- /doc/book/efd/exemplos.md: -------------------------------------------------------------------------------- 1 | # EXEMPLOS 2 | -------------------------------------------------------------------------------- /doc/book/efd/intro.md: -------------------------------------------------------------------------------- 1 | # INTRODUÇÃO 2 | -------------------------------------------------------------------------------- /doc/book/efd/referencias.md: -------------------------------------------------------------------------------- 1 | # REFERÊNCIAS 2 | 3 | -------------------------------------------------------------------------------- /doc/book/efinanceira/bookdown.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "sped-efinanceira", 3 | "content": [ 4 | {"Intro": "intro.md"}, 5 | {"Exemplos": "exemplos.md"}, 6 | {"Referencias": "referencias.md"} 7 | ] 8 | } 9 | -------------------------------------------------------------------------------- /doc/book/efinanceira/exemplos.md: -------------------------------------------------------------------------------- 1 | # EXEMPLOS 2 | -------------------------------------------------------------------------------- /doc/book/efinanceira/intro.md: -------------------------------------------------------------------------------- 1 | # INTRODUÇÃO 2 | -------------------------------------------------------------------------------- /doc/book/efinanceira/referencias.md: -------------------------------------------------------------------------------- 1 | # REFERÊNCIAS 2 | 3 | -------------------------------------------------------------------------------- /doc/book/esocial/bookdown.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "sped-esocial", 3 | "content": [ 4 | {"Intro": "intro.md"}, 5 | {"Exemplos": "exemplos.md"}, 6 | {"Referencias": "referencias.md"} 7 | ] 8 | } 9 | -------------------------------------------------------------------------------- /doc/book/esocial/exemplos.md: -------------------------------------------------------------------------------- 1 | # EXEMPLOS 2 | -------------------------------------------------------------------------------- /doc/book/esocial/intro.md: -------------------------------------------------------------------------------- 1 | # INTRODUÇÃO 2 | -------------------------------------------------------------------------------- /doc/book/esocial/referencias.md: -------------------------------------------------------------------------------- 1 | # REFERÊNCIAS 2 | 3 | -------------------------------------------------------------------------------- /doc/book/estrutura.md: -------------------------------------------------------------------------------- 1 | # Estrutura 2 | 3 | A partir da versão 4.1 a API NFePHP foi dividida em vários pacotes menores com o objetivo de facilitar a sua manutenção e permitir aos interessados contribuir para aqueles conjuntos que mais lhe interessem. 4 | Outra vantagem dessa estrutura é que o desenvolvedor da aplicação irá instalar apenas aqueles pacotes que efetivamente irá utilizar em sua aplicação. Selecionando via composer apenas aquilo que lhe interesse. 5 | 6 | Essa nova estrutura é composta de: 7 | 8 | ## sped-nfe 9 | 10 | O sped-nfe contêm as classes principais e arquivos especificos para a operação com NFe e seu composer.json faz referência ou estabelece dependências de outros pacotes da API. 11 | 12 | ## sped-cte 13 | 14 | O sped-cte contêm as classes principais e arquivos especificos para a operação com CTe e seu composer.json faz referência ou estabelece dependências de outros pacotes da API. 15 | 16 | ## sped-mdfe 17 | 18 | O sped-mdfe contêm as classes principais e arquivos especificos para a operação com MDFe e seu composer.json faz referência ou estabelece dependências de outros pacotes da API. 19 | 20 | ## sped-cle 21 | 22 | O sped-cle contêm as classes principais e arquivos especificos para a operação com CLe e seu composer.json faz referência ou estabelece dependências de outros pacotes da API. 23 | 24 | ## sped-nfse 25 | 26 | O sped-nfse contêm as classes principais e arquivos especificos para a operação com NFSe e seu composer.json faz referência ou estabelece dependências de outros pacotes da API. 27 | 28 | ## sped-gnre 29 | 30 | O sped-gnre contêm as classes principais e arquivos especificos para a operação com GNRE, usando o serviço GNRE de Pernambuco, que serve todas as unidades da federação, exceto SP, RJ e ES, e seu composer.json faz referência ou estabelece dependências de outros pacotes da API. 31 | 32 | ## sped-common 33 | 34 | O pacote sped-common contêm as classes basicas para as operações de todos os pacotes principais. Como SOAP, PKCS12, Files, Strings, etc. 35 | Este pacote não tem função por sí só é apenas uma dependencia dos pacotes principais, mas é onde estão inclusas todas as classes que acessam os serviços e os certificados digitais. 36 | 37 | ## sped-efd 38 | 39 | O pacote sped-efd contêm as classes principais para a geração dos arquivos SPED Fiscal, que compõe uma das obrigações fiscais assessórias da grande maioria das empresas. Sua finalidade é auxiliar na montagem dos arquivos de texto que devem ser encaminhados à Receita e ao SEFAZ periódicamente. E alḿe de auxiliar na montagem desse arquivo deve também permitir a pré-validação dos dados, como forma de acelerar o processo de validação e correção. O arquivo do SPED Fiscal em si, somente é enviado a Receita usando o programa transmissor (TED) fornecido pela Receita Federal. 40 | 41 | > NOTA: Não existe webservice para essa operação 42 | 43 | ## sped-efinanceira 44 | 45 | O pacote sped-common contêm as classe necessárias para montar os xml dos eventos da eFinanceira e realizar a comunicação com os respsctivos webservices. 46 | 47 | ## sped-esocial 48 | 49 | O pacote contêm as classes principais para monatr os xml da eSocial e realizar as comunicações com os webservices. 50 | 51 | ## sped-console 52 | 53 | O pacote sped-console, como o próprio nome diz, fornece uma função para linha de comando que permite a geração de classes "modelo" para cada um dos XML que compõe esses documentos eletrônicos (NFe, CTe, MDFe, etc.). 54 | Dessa forma facilitando a criação dessas classes a partir dos seus schemas (XSD). Assim a cada novo pacote de schemas liberados pela SEFAZ, basta um unico comando no console para que as classes "modelo" sejam recicriadas já contemplando todas as alterações inclusas. 55 | 56 | ## sped-da 57 | 58 | O sped-da contêm as classes principais para a geração e impressão dos documentos auxiliares utilizados pelos pacotes principais. 59 | Esse pacote é apenas sugerido como uma dependência e poderá ou não ser instalado na sua aplicação, pois não é dependência de nenhum pacote principal. 60 | 61 | ## sped-serializer 62 | 63 | O sped-serializer provê uma forma simples para passa os dados do XML de um dos documentos eletrônicos do SPED para sua classe construtora "modelo" criada pelo sped-console, e vice-versa. 64 | 65 | ## posprint 66 | 67 | O projeto posprint provê o acesso as impressoras térmicas, seja via USB, Serial, IPP, Ethernet, Web, etc. 68 | Além de possuir as classes para a criação dos documentos RAW na linguagem especifica de cada marca de impressora POS (Point Of Sales). 69 | -------------------------------------------------------------------------------- /doc/book/index.md: -------------------------------------------------------------------------------- 1 | ../../README.md -------------------------------------------------------------------------------- /doc/book/iniciando.md: -------------------------------------------------------------------------------- 1 | # Iniciando 2 | Para começar a usar a API, o programador deve ter uma boa base em programação PHP e conhecer as práticas e ferramentas mais atuais. E deve ter em mente que esse pacote receberá **MUITAS** modificações ao longo to tempo. Ou seja, sempre que novas alterações ocorrerem nas regras da SEFAZ, haverão alterações nesses pacotes. Além disso existe um grande esforço pessoal em identificar e remover os **BUGS** do código, e portanto fique sempre ligado na versão atual dos pacotes e mantenha atualizado. 3 | 4 | ## Repositório 5 | Todos os códigos são mantidos em repositórios separados no [GitHub](https://github.com/nfephp-org), bem como essa documentação. 6 | 7 | ## Versionamento 8 | Para fins de transparência e discernimento sobre nosso ciclo de lançamentos, e procurando manter compatibilidade com versões anteriores, o número de versão de cada pacote da API NFePHP, será mantida, tanto quanto possível, respeitando o padrão abaixo. 9 | 10 | Cada repositório terá duas branches: 11 | 12 | * `` - essa branch contêm as versão de desenvolvimento atual 13 | * ``- essa branch contêm a versão seguinte de desenvolvimento 14 | 15 | A cada correção ou alteração são criadas novas TAGs que são numeradas com o seguinte formato: 16 | 17 | `..` 18 | 19 | Com as seguintes orientações: 20 | 21 | * Quebra de compatibilidade com versões anteriores, **avança o ``**. 22 | * Adição de novas funcionalidades sem quebrar compatibilidade com versões anteriores, **avança o ``**. 23 | * Correção de bugs e outras alterações menores, **avança ``**. 24 | 25 | Para mais informações, por favor visite . 26 | 27 | ## Requisitos 28 | A API tem vários pré-requisitos principalmente com referência ao ambiente PHP, isso se refere aos modulos do PHP que não são compilados diretamente em seu nucleo, mas em pacotes separados que podem ser instalados a qualquer tempo. 29 | Cada distribuição do PHP compila e fornece esses modulos de forma mais ou menos automática, e caso não tenham sido instalados será necessário instala-los manualmente e ativá-los no php.ini ou por linha de comando. 30 | 31 | **Módulos Requeridos do PHP** 32 | 33 | - php-mcrypt 34 | - php-curl 35 | - php-gd 36 | - php-dom 37 | - php-xml 38 | - php-xmlreader 39 | - php-soap 40 | - php-openssl 41 | - php-zip 42 | - php-zlib 43 | - php-fileinfo 44 | - php-iconv 45 | - php-mbstring 46 | 47 | > A versão atual da API está sendo refatorada para uso do PHP 7 e portanto podem ocorrer problemas caso seja instalado em um ambiente com PHP cuja versão seja menor. Mas a mínima versão aceitável para uso, seria PHP 5.6, porém sem garantias que funcione e permaneça funcionando nesse ambiente *obsoleto*. 48 | 49 | > Existe o cuidado durante o desenvolvimento, de não incluir classes ou funções especificas a um sistema operacional, portanto em tese, a **API NFePHP** deve funcionar sem problemas seja em ambiente Windows, Apple OSx ou Linux. Pessoalmente, eu desenvolvo e aplico os testes sempre em ambiente Linux, mais especificamente usando versões do Debian e Ubuntu. 50 | 51 | ## Instalação 52 | A instalação dos pacotes deve ser feita com o uso do [Composer](https://getcomposer.org/), para quem não conhece, o Composer é um gerenciador de pacotes do PHP que ajuda enormemente a terefa de distribuir, instalar e localizar as classes, nesse caso usando os recursos do [PSR-0](http://www.php-fig.org/psr/psr-0/pt-br/) e do [PSR-4](http://www.php-fig.org/psr/psr-4/) e do autoload. Todos os pacotes disponíves para instalação pelo Composer você encontra no [Packagist](https://packagist.org/). 53 | Para fazer a instalação via composer vá para a raiz do seu aplicativo e execute o comando do composer. Ou complemente o seu próprio "composer.json" 54 | 55 | No primeiro caso: 56 | 57 | #### Para instalar o pacote de NFe 58 | ```bash 59 | composer require sped-nfe 60 | ``` 61 | #### Para instalar o pacote de CTe 62 | ```bash 63 | composer require sped-cte 64 | ``` 65 | #### Para instalar o pacote de MDFe 66 | ```bash 67 | composer require sped-mdfe 68 | ``` 69 | 70 | E assim por diante, veja mais detalhes na documentação. 71 | 72 | Já se tiver o seu próprio composer.json, inclua o pacote desejado como dependência da sua aplicação. 73 | ```json 74 | "require": { 75 | "nfephp-org/sped-nfe": "^4.1.0", 76 | 77 | ``` 78 | **IMPORTANTE: sempre deixe a versão da API no seu composer.json marcada com o "circunflexo" assim sempre que houver uma atualização do pacote o composer será capaz de usa-la, por exemplo se estiver na versão 4.1.2 e você der o comando de atualização dos pacotes essa nova versão do pacote será baixada e instalada automaticamente.** 79 | 80 | 81 | > É possivel sim usar as classes sem o composer, porém é um enorme disperdício de tempo e irá criar dificuldades para atualizar as classes, e isso não é _recomendado_. 82 | 83 | > _**Mas eu só queria usar as classes agora vou ter que estudar e saber usar o composer, autoload e PSR**_ ? 84 | 85 | > É, e não é só isso não, para poder usar a API adequadamente terá que estudar muito mais do que isso. E se não conhece o **Composer** e o **autoload**, sugiro **FORTEMENTE** que aprenda antes de tentar usar. 86 | -------------------------------------------------------------------------------- /doc/book/mdfe/bookdown.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "sped-mdfe", 3 | "content": [ 4 | {"Intro": "intro.md"}, 5 | {"Exemplos": "exemplos.md"}, 6 | {"Referencias": "referencias.md"} 7 | ] 8 | } 9 | -------------------------------------------------------------------------------- /doc/book/mdfe/exemplos.md: -------------------------------------------------------------------------------- 1 | # EXEMPLOS 2 | -------------------------------------------------------------------------------- /doc/book/mdfe/intro.md: -------------------------------------------------------------------------------- 1 | # INTRODUÇÃO 2 | -------------------------------------------------------------------------------- /doc/book/mdfe/referencias.md: -------------------------------------------------------------------------------- 1 | # REFERÊNCIAS 2 | 3 | -------------------------------------------------------------------------------- /doc/book/nfe/bookdown.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "sped-nfe", 3 | "content": [ 4 | {"Intro": "intro.md"}, 5 | {"Exemplos": "exemplos.md"}, 6 | {"Referencias": "referencias.md"} 7 | ] 8 | } 9 | -------------------------------------------------------------------------------- /doc/book/nfe/exemplos.md: -------------------------------------------------------------------------------- 1 | # EXEMPLOS 2 | -------------------------------------------------------------------------------- /doc/book/nfe/intro.md: -------------------------------------------------------------------------------- 1 | # INTRODUÇÃO 2 | -------------------------------------------------------------------------------- /doc/book/nfe/referencias.md: -------------------------------------------------------------------------------- 1 | # REFERÊNCIAS 2 | 3 | -------------------------------------------------------------------------------- /doc/book/nfephp.md: -------------------------------------------------------------------------------- 1 | # NFePHP 2 | 3 | NFePHP é uma API para gerenciamento das comunicações entre o emitente de NFe, CTe, MDFe, CLe e GNRE e os serviços dos SEFAZ estaduais. Inteiramente construído em PHP para rodar sob qualquer sistema operacional. 4 | E ainda fornece meios para a geração dos arquivos do SPED EFD (Fiscal), e a impressão dos documentos auxilires estabelecidos para esses documentos fiscais eletrônicos. 5 | 6 | *** 7 | 8 | ## NFe 9 | 10 | ## NFCe 11 | 12 | ## NFSe 13 | 14 | ## CTe 15 | 16 | ## MDFe 17 | 18 | ## CLe 19 | 20 | ## GNRE 21 | O GNRE é o Guia Nacional de Recolhimento de Tributos Estaduais, uma especie de "boleto" usado para o recolhimento de impostos estaduais. Praticamente todos os estados da federação utilizam o sistema desenvolvido pela SEFAZ PE para a geração desse documento, exceto para os estados de SP, RJ e ES que pussuem serviços próprios. 22 | 23 | Essas guias de recolhimento são usadas principalmente quando é necessário o pagamento de ICMS em um estado onde o "Devedor" não possue Inscrição Estadual. Objetivamente, a partir de janeiro de 2016 e devido a "Emenda Constitucional 87/2015", todas as operações interestaduais devem realizar a partilha dos valores do ICMS entre o estado do "vendedor" e o estado do "comprador", bem como já eram utilizadas para o pagamento na venda interestadual de produtos sujeitos a Substituição Tributária. 24 | 25 | Normalmente essa guia deve ser emitida após a emissão da NFe ou CTe, onde haja recolhimento de ICMS para outro estado e os valores devem ser recolhidos e documentados antes da expedição da mercadoria. Por exemplo será anexada a GNRE com o comprovante de pagamento à DANFE (ou DACTE) antes do embarque. 26 | 27 | > NOTA: Caso seja inspecionada a mercadoria na fronteira e a GNRE não estiver anexada ou não tiver sido paga, existe a possibilidade retenção e multa. 28 | 29 | ## EFD 30 | 31 | -------------------------------------------------------------------------------- /doc/book/nfephp/bookdown.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "nfephp v4.0", 3 | "content": [ 4 | {"Intro": "intro.md"}, 5 | {"Exemplos": "exemplos.md"}, 6 | {"Referencias": "referencias.md"} 7 | ] 8 | } 9 | -------------------------------------------------------------------------------- /doc/book/nfephp/exemplos.md: -------------------------------------------------------------------------------- 1 | # EXEMPLOS 2 | -------------------------------------------------------------------------------- /doc/book/nfephp/intro.md: -------------------------------------------------------------------------------- 1 | # INTRODUÇÃO 2 | -------------------------------------------------------------------------------- /doc/book/nfephp/referencias.md: -------------------------------------------------------------------------------- 1 | # REFERÊNCIAS 2 | 3 | -------------------------------------------------------------------------------- /doc/book/posprint/bookdown.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "posprint", 3 | "content": [ 4 | {"Intro": "intro.md"}, 5 | {"Exemplos": "exemplos.md"}, 6 | {"Referencias": "referencias.md"} 7 | ] 8 | } 9 | -------------------------------------------------------------------------------- /doc/book/posprint/exemplos.md: -------------------------------------------------------------------------------- 1 | # EXEMPLOS 2 | -------------------------------------------------------------------------------- /doc/book/posprint/intro.md: -------------------------------------------------------------------------------- 1 | # INTRODUÇÃO 2 | -------------------------------------------------------------------------------- /doc/book/posprint/referencias.md: -------------------------------------------------------------------------------- 1 | # REFERÊNCIAS 2 | 3 | -------------------------------------------------------------------------------- /doc/bookdown.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "NFePHP: API para comunicação com a SEFAZ, geração e controle dos documentos fiscais estabelecidos pelo Projeto SPED", 3 | "content": [ 4 | {"Intro": "../README.md"}, 5 | {"Documentando": "book/documentando.md"}, 6 | {"Cod. Conduta": "book/conduct.md"}, 7 | {"Contribuindo": "book/contribuing.md"}, 8 | {"API": "book/nfephp.md"}, 9 | {"Estrutura": "book/estrutura.md"}, 10 | {"Iniciando": "book/iniciando.md"}, 11 | {"Configurando": "book/configurando.md"}, 12 | "book/nfephp/bookdown.json", 13 | "book/nfe/bookdown.json", 14 | "book/cte/bookdown.json", 15 | "book/mdfe/bookdown.json", 16 | "book/cle/bookdown.json", 17 | "book/efinanceira/bookdown.json", 18 | "book/esocial/bookdown.json", 19 | "book/efd/bookdown.json", 20 | "book/common/bookdown.json", 21 | "book/posprint/bookdown.json" 22 | ], 23 | "target": "./html" 24 | } 25 | -------------------------------------------------------------------------------- /doc/theme.json: -------------------------------------------------------------------------------- 1 | { 2 | "theme": "readthedocs" 3 | } 4 | -------------------------------------------------------------------------------- /mkdocs.yml: -------------------------------------------------------------------------------- 1 | docs_dir: doc/book 2 | site_dir: doc/html 3 | pages: 4 | - index.md 5 | - { Documentando: documentando.md } 6 | - { API: nfephp.md } 7 | - { Estrutura: estrutura.md } 8 | - { Iniciando: iniciando.md } 9 | - { Configurando: configurando.md } 10 | - { Código de Conduta: conduct.md } 11 | - { Contribuindo: contribuing.md } 12 | - { nfephpv4.0: [{ Intro: nfephp/intro.md }, { Exemplos: nfephp/exemplos.md }, { Referencias: nfephp/referencias.md }] } 13 | - { sped-nfe: [{ Intro: nfe/intro.md }, { Exemplos: nfe/exemplos.md }, { Referencias: nfe/referencias.md }] } 14 | - { sped-cte: [{ Intro: cte/intro.md }, { Exemplos: cte/exemplos.md }, { Referencias: cte/referencias.md }] } 15 | - { sped-mdfe: [{ Intro: mdfe/intro.md }, { Exemplos: mdfe/exemplos.md }, { Referencias: mdfe/referencias.md }] } 16 | - { sped-cle: [{ Intro: cle/intro.md }, { Exemplos: cle/exemplos.md }, { Referencias: cle/referencias.md }] } 17 | - { sped-common: [{ Intro: common/intro.md }, { Exemplos: common/exemplos.md }, { Referencias: common/referencias.md }] } 18 | - { sped-efd: [{ Intro: efd/intro.md }, { Exemplos: efd/exemplos.md }, { Referencias: efd/referencias.md }] } 19 | - { sped-efinanceira: [{ Intro: efinanceira/intro.md }, { Exemplos: efinanceira/exemplos.md }, { Referencias: efinanceira/referencias.md }] } 20 | - { sped-esocial: [{ Intro: esocial/intro.md }, { Exemplos: esocial/exemplos.md }, { Referencias: esocial/referencias.md }] } 21 | - { posprint: [{ Intro: posprint/intro.md }, { Exemplos: posprint/exemplos.md }, { Referencias: posprint/referencias.md }] } 22 | 23 | theme: readthedocs 24 | site_name: NFePHP 25 | site_description: 'NFePHP: API para comunicação com a SEFAZ, geração e controle dos documentos fiscais estabelecidos pelo Projeto SPED' 26 | repo_url: 'https://github.com/nfephp-org/sped-docs' 27 | copyright: 'Copyright (c) 2016 NFePHP' 28 | --------------------------------------------------------------------------------