### Create Servico for NFSe Source: https://github.com/tecnospeed/plugnotas-php/blob/master/README.md Example code for creating a 'Servico' (service) entity. This defines the service being provided and is necessary for NFSe creation. ```php // Example code for creating a Servico // $servico = new Servico(); // $servico->setCodigo('0101'); // $servico->setDescricao('Exemplo de servico'); // $servico->setValor(10.00); // $servico->setAliquota(0.05); // $servico->setCofins(0.00); // $servico->setCsll(0.00); // $servico->setInss(0.00); // $servico->setIr(0.00); // $servico->setIss(0.00); // $servico->setIssRetido(false); // $servico->setMunicipioServico('3550308'); // // $response = $servico->create(); ``` -------------------------------- ### Create Prestador for NFSe Source: https://github.com/tecnospeed/plugnotas-php/blob/master/README.md Example code for creating a 'Prestador' (issuer) entity, which is a prerequisite for sending an NFSe. This simplifies sending notes by pre-registering issuer details. ```php // Example code for creating a Prestador // $prestador = new Prestador(); // $prestador->setCnpj('00000000000000'); // $prestador->setInscricaoMunicipal('123456'); // $prestador->setRazaoSocial('Nome da sua empresa'); // $prestador->setFantasia('Nome Fantasia'); // $prestador->setEmail('email@tecnospeed.com.br'); // $prestador->setTelefone($telefone); // $prestador->setEndereco($endereco); // // $response = $prestador->create(); ``` -------------------------------- ### Create Tomador for NFSe Source: https://github.com/tecnospeed/plugnotas-php/blob/master/README.md Example code for creating a 'Tomador' (recipient) entity. Pre-registering recipient details can simplify the NFSe sending process. ```php // Example code for creating a Tomador // $tomador = new Tomador(); // $tomador->setCpfCnpj('00000000000000'); // $tomador->setEmail('email@tomador.com.br'); // $tomador->setRazaoSocial('Nome do Tomador'); // $tomador->setEndereco($endereco); // // $response = $tomador->create(); ``` -------------------------------- ### Register Digital Certificate in PHP Source: https://context7.com/tecnospeed/plugnotas-php/llms.txt Uploads and registers an A1 digital certificate (.pfx file) for signing notes. Handle specific validation and requirement errors to ensure correct setup. ```php setConfiguration($configuration); $certificado->setFile(__DIR__.'/certificado.pfx', 'certificado.pfx'); $certificado->setPassword('senha-do-certificado'); $response = $certificado->create(); echo "Certificado cadastrado. ID: " . $response->getBody()['id']; // Use este ID para vincular ao prestador } catch (ValidationError $e) { echo "Erro de validação: " . $e->getMessage(); } catch (RequiredError $e) { echo "Campo obrigatório: " . $e->getMessage(); } catch (\Exception $e) { echo "Erro: " . $e->getMessage(); } ``` -------------------------------- ### Add Plugnotas Package via Composer Source: https://github.com/tecnospeed/plugnotas-php/blob/master/README.md Install the Plugnotas PHP package using Composer. This command adds the package to your project's dependencies. ```bash php composer.phar require tecnospeedsa/plugnotas:~1.4 ``` -------------------------------- ### Send NFSe with Objects (Full Mode) Source: https://context7.com/tecnospeed/plugnotas-php/llms.txt Instantiate individual objects to maintain granular control over all NFSe fields. Requires proper configuration of Prestador, Tomador, Servico, and Rps objects. ```php setTipoLogradouro('Avenida'); $enderecoPrestador->setLogradouro('Duque de Caxias'); $enderecoPrestador->setNumero('882'); $enderecoPrestador->setComplemento('17 andar'); $enderecoPrestador->setBairro('Zona 7'); $enderecoPrestador->setCodigoCidade('4115200'); $enderecoPrestador->setDescricaoCidade('Maringá'); $enderecoPrestador->setEstado('PR'); $enderecoPrestador->setCep('87.020-025'); // Configurar prestador $prestador = new Prestador(); $prestador->setCpfCnpj('00.000.000/0001-91'); $prestador->setInscricaoMunicipal('8214100099'); $prestador->setRazaoSocial('Empresa Teste LTDA'); $prestador->setNomeFantasia('Empresa Teste'); $prestador->setSimplesNacional(true); $prestador->setRegimeTributario(0); $prestador->setEndereco($enderecoPrestador); $prestador->setTelefone(new Telefone('44', '1234-1234')); $prestador->setEmail('teste@plugnotas.com.br'); // Configurar tomador $tomador = new Tomador(); $tomador->setCpfCnpj('00.000.000/0001-91'); $tomador->setRazaoSocial('Cliente LTDA'); $tomador->setEmail('cliente@email.com.br'); // Configurar serviço com ISS e valor $iss = new Iss(); $iss->setTipoTributacao(1); $iss->setExigibilidade(1); $iss->setRetido(false); $iss->setAliquota(0.03); $valor = new Valor(); $valor->setServico(1500.00); $valor->setBaseCalculo(1500.00); $servico = new Servico(); $servico->setCodigo('1.02'); $servico->setDiscriminacao('Desenvolvimento de software'); $servico->setCnae('4751201'); $servico->setIss($iss); $servico->setValor($valor); // Configurar RPS $rps = new Rps(); $rps->setDataEmissao(new \DateTime('now')); $rps->setCompetencia(new \DateTime('now')); // Configurar cidade de prestação $cidadePrestacao = new CidadePrestacao(); $cidadePrestacao->setCodigo('4115200'); $cidadePrestacao->setDescricao('MARINGA'); // Criar e enviar NFSe $configuration = new Configuration(); $nfse = new Nfse(); $nfse->setIdIntegracao('ABC12345678910'); $nfse->setEnviarEmail(true); $nfse->setPrestador($prestador); $nfse->setTomador($tomador); $nfse->setServico([$servico->toArray()]); $nfse->setRps($rps); $nfse->setCidadePrestacao($cidadePrestacao); $nfse->setDescricao("Descrição dos serviços prestados."); $response = $nfse->send($configuration); echo "Status: " . $response->getStatusCode() . "\n"; echo "Corpo: " . json_encode($response->getBody()); } catch (ValidationError $e) { echo "Erro de validação: " . $e->getMessage(); } catch (RequiredError $e) { echo "Campo obrigatório: " . $e->getMessage(); } catch (\Exception $e) { echo "Erro: " . $e->getMessage(); } ``` -------------------------------- ### Configure API Environment Source: https://context7.com/tecnospeed/plugnotas-php/llms.txt Initialize the configuration object with your API key and environment type before making requests. ```php setNfseDownloadDirectory('./downloads/'); echo "URL da API: " . $configuration->getUrl(); // Sandbox: https://api.sandbox.plugnotas.com.br // Produção: https://api.plugnotas.com.br ``` -------------------------------- ### Create NFSe using Builder Source: https://github.com/tecnospeed/plugnotas-php/blob/master/README.md Utilize the NfseBuilder class to easily construct an NFSe object by chaining methods for setting various components like issuer, recipient, and service details. ```php // Example usage of NfseBuilder // $nfse = (new NfseBuilder()) // ->withTomador($tomador) // ->withPrestador($prestador) // ->withServico($servico) // ->withRps($rps) // ->withImpressao($impressao) // ->withCidadePrestacao($cidade) // ->build(); // $response = $nfse->send(); ``` -------------------------------- ### Download NFSe PDF Source: https://context7.com/tecnospeed/plugnotas-php/llms.txt Downloads the NFSe PDF to a configured directory. Ensure the target directory has write permissions. ```php setNfseDownloadDirectory('./downloads/'); $nfse = new Nfse(); $nfse->setConfiguration($configuration); // Download por ID - salva como: ./downloads/5c3118127ab98414de5e2bd6.pdf $download = $nfse->downloadPdf('5c3118127ab98414de5e2bd6'); // Download por CNPJ e ID Integração - salva como: ./downloads/00000000000191-ABC123.pdf $download = $nfse->downloadPdfByCnpjAndIdIntegracao('00000000000191', 'ABC123'); echo "Download concluído: " . $download->getStatusCode(); } catch (\Exception $e) { echo "Erro: " . $e->getMessage(); } ``` -------------------------------- ### Configure and Send NFSe Source: https://context7.com/tecnospeed/plugnotas-php/llms.txt Defines the NFSe structure using an associative array and sends it using the Nfse class and Configuration object. ```php 'municipal' => 5.00, 'estadual' => 0, 'federal' => 10.00 ] ] ] ] ], 'cargaTributaria' => [ 'valor' => 150.00, 'percentual' => 10.00, 'fonte' => 'IBPT' ], 'impressao' => [ 'camposCustomizados' => [ 'inscricaoMunicipalTomador' => '123456' ] ], 'camposExtras' => [ 'copiasEmail' => ['copia1@email.com', 'copia2@email.com'] ], 'parcelas' => [ 'tipoPagamento' => 1, 'numero' => 1, 'dataVencimento' => '2024-02-15T00:00:00', 'valor' => 1500.00 ] ]; // Criar NFSe a partir do array completo use TecnoSpeed\Plugnotas\Nfse; use TecnoSpeed\Plugnotas\Configuration; $nfse = Nfse::fromArray($nfseCompleta); $configuration = new Configuration(); $response = $nfse->send($configuration); ``` -------------------------------- ### Register Service Taker in PHP Source: https://context7.com/tecnospeed/plugnotas-php/llms.txt Registers a service taker for reuse in multiple NFSe documents. Requires a valid configuration object and taker details. ```php '00.000.000/0001-91', 'razaoSocial' => 'Empresa Cliente LTDA', 'email' => 'cliente@email.com.br', 'endereco' => [ 'logradouro' => 'Av. Brasil', 'numero' => '500', 'codigoCidade' => '4115200', 'cep' => '87.050-000', 'estado' => 'PR', 'bairro' => 'Centro' ] ]); $configuration = new Configuration(); $response = $tomador->send($configuration); echo "Tomador cadastrado: " . json_encode($response->getBody()); } catch (\Exception $e) { echo "Erro: " . $e->getMessage(); } ``` -------------------------------- ### Send NFSe using NfseBuilder Source: https://context7.com/tecnospeed/plugnotas-php/llms.txt Utilize the NfseBuilder for a fluent interface to construct and send NFSe documents. ```php withPrestador([ 'cpfCnpj' => '00.000.000/0001-91', 'inscricaoMunicipal' => '123456', 'razaoSocial' => 'Razao Social do Prestador', 'endereco' => [ 'logradouro' => 'Rua de Teste', 'numero' => '1234', 'codigoCidade' => '4115200', 'cep' => '87.050-800' ] ]) ->withTomador([ 'cpfCnpj' => '000.000.001-91', 'razaoSocial' => 'Razao Social do Tomador' ]) ->withServicos([ [ 'codigo' => '1.02', 'discriminacao' => 'Desenvolvimento de software', 'cnae' => '4751201', 'iss' => [ 'aliquota' => '3' ], 'valor' => [ 'servico' => 1500.03 ] ] ]) ->build([]); $nfse->validate(); $configuration = new Configuration(); $response = $nfse->send($configuration); var_dump($response->getBody()); // Retorna: { "id": "...", "protocolo": "...", "status": "..." } } catch (\Exception $e) { echo "Erro: " . $e->getMessage(); } ``` -------------------------------- ### Register Service Provider Source: https://context7.com/tecnospeed/plugnotas-php/llms.txt Registers a new service provider in the platform to facilitate future NFSe submissions. ```php '80.681.272/0001-33', 'inscricaoMunicipal' => '123456', 'razaoSocial' => 'Empresa Prestadora LTDA', 'simplesNacional' => true, 'endereco' => [ 'logradouro' => 'Rua de Teste', 'numero' => '1234', 'codigoCidade' => '4115200', 'cep' => '87.050-800', 'estado' => 'PR', 'bairro' => 'CENTRO' ], 'nfse' => [ 'ativo' => true ] ]); $configuration = new Configuration(Configuration::TYPE_ENVIRONMENT_SANDBOX); $response = $prestador->send($configuration); echo "Prestador cadastrado: " . json_encode($response->getBody()); } catch (\Exception $e) { echo "Erro: " . $e->getMessage(); } ``` -------------------------------- ### Download NFSe XML Source: https://context7.com/tecnospeed/plugnotas-php/llms.txt Downloads the XML file for an NFSe document. ```php setNfseDownloadDirectory('./downloads/'); $nfse = new Nfse(); $nfse->setConfiguration($configuration); // Download XML por ID - salva como: ./downloads/{id}.xml $download = $nfse->downloadXml('5c3118127ab98414de5e2bd6'); // Download XML por CNPJ e ID Integração $download = $nfse->downloadXmlByCnpjAndIdIntegracao('00000000000191', 'ABC123'); echo "XML baixado com sucesso"; } catch (\Exception $e) { echo "Erro: " . $e->getMessage(); } ``` -------------------------------- ### Include Composer Autoloader Source: https://github.com/tecnospeed/plugnotas-php/blob/master/README.md Include the Composer autoloader to enable class loading for the Plugnotas package and other project dependencies. ```php require 'vendor/autoload.php;' ``` -------------------------------- ### Manually Add Plugnotas to composer.json Source: https://github.com/tecnospeed/plugnotas-php/blob/master/README.md Manually specify the Plugnotas package requirement in your composer.json file. Ensure you run `composer update` afterwards. ```json { "require": { "tecnospeedsa/plugnotas": "~1.4" } } ``` -------------------------------- ### Complete NFSe Data Structure in PHP Source: https://context7.com/tecnospeed/plugnotas-php/llms.txt This array represents the full structure for creating an NFSe. Ensure all required fields are populated according to the latest legislation. ```php 'ID-UNICO-SEU-SISTEMA', 'enviarEmail' => true, 'naturezaTributacao' => 1, // 1-6 conforme legislação 'descricao' => 'Descrição geral da nota', 'informacoesComplementares' => 'Informações adicionais', 'rps' => [ 'dataEmissao' => '2024-01-15T10:00:00', 'competencia' => '2024-01-15T10:00:00' ], 'cidadePrestacao' => [ 'codigo' => '4115200', 'descricao' => 'MARINGA', 'tipoLogradouro' => 'Rua', 'logradouro' => 'Local do serviço', 'numero' => '100', 'complemento' => 'Sala 1', 'bairro' => 'Centro', 'estado' => 'PR', 'cep' => '87010-000' ], 'prestador' => [ 'cpfCnpj' => '00000000000191', 'inscricaoMunicipal' => '123456', 'inscricaoEstadual' => '1234567890', 'razaoSocial' => 'Empresa Prestadora LTDA', 'nomeFantasia' => 'Empresa Prestadora', 'simplesNacional' => true, 'regimeTributario' => 0, 'incentivoFiscal' => false, 'incentivadorCultural' => false, 'regimeTributarioEspecial' => 0, 'endereco' => [ 'tipoLogradouro' => 'Avenida', 'logradouro' => 'Brasil', 'numero' => '1000', 'complemento' => '10 andar', 'tipoBairro' => 'Bairro', 'bairro' => 'Centro', 'codigoPais' => 1058, 'descricaoPais' => 'Brasil', 'codigoCidade' => '4115200', 'descricaoCidade' => 'Maringá', 'estado' => 'PR', 'cep' => '87020-025' ], 'telefone' => [ 'ddd' => '44', 'numero' => '3030-3030' ], 'email' => 'contato@empresa.com.br' ], 'tomador' => [ 'cpfCnpj' => '00000000000191', 'inscricaoMunicipal' => '654321', 'inscricaoEstadual' => '0987654321', 'inscricaoSuframa' => '12345678', 'indicadorInscricaoEstadual' => 9, 'razaoSocial' => 'Cliente LTDA', 'nomeFantasia' => 'Cliente', 'orgaoPublico' => false, 'endereco' => [ 'logradouro' => 'Rua Cliente', 'numero' => '500', 'bairro' => 'Centro', 'codigoCidade' => '4115200', 'estado' => 'PR', 'cep' => '87020-000' ], 'telefone' => [ 'ddd' => '44', 'numero' => '9999-9999' ], 'email' => 'cliente@email.com' ], 'intermediario' => [ 'tipo' => 0, 'cpfCnpj' => '00000000000191', 'razaoSocial' => 'Intermediário LTDA', 'inscricaoMunicipal' => '111111' ], 'servico' => [ [ 'codigo' => '1.02', 'idIntegracao' => 'SERV001', 'discriminacao' => 'Desenvolvimento de software personalizado', 'codigoTributacao' => '4115200', 'cnae' => '4751201', 'codigoCidadeIncidencia' => '4115200', 'descricaoCidadeIncidencia' => 'MARINGA', 'unidade' => 1, 'quantidade' => 1, 'tributavel' => true, 'responsavelRetencao' => 2, 'iss' => [ 'tipoTributacao' => 1, 'exigibilidade' => 1, 'retido' => false, 'aliquota' => 0.03, 'valor' => 45.00, 'valorRetido' => 0, 'processoSuspensao' => '' ], 'valor' => [ 'servico' => 1500.00, 'baseCalculo' => 1500.00, 'deducoes' => 0, 'descontoCondicionado' => 0, 'descontoIncondicionado' => 0, 'liquido' => 1500.00, 'unitario' => 1500.00, 'valorAproximadoTributos' => 150.00 ], 'deducao' => [ 'tipo' => 99, 'descricao' => 'Descrição da dedução' ], 'retencao' => [ 'pis' => ['aliquota' => 0.65, 'valor' => 9.75, 'cst' => '01'], 'cofins' => ['aliquota' => 3.00, 'valor' => 45.00, 'cst' => '01'], 'csll' => ['aliquota' => 1.00, 'valor' => 15.00], 'inss' => ['aliquota' => 11.00, 'valor' => 165.00], 'irrf' => ['aliquota' => 1.50, 'valor' => 22.50], 'outrasRetencoes' => 0, 'cpp' => ['aliquota' => 0, 'valor' => 0] ], 'obra' => [ 'art' => '6270201', 'codigo' => '21', 'cei' => '12345678910' ], 'ibpt' => [ 'simplificado' => ['aliquota' => 15.00], 'detalhado' => [ 'aliquota' => [ ``` -------------------------------- ### Consult NFSe by ID or Protocol Source: https://github.com/tecnospeed/plugnotas-php/blob/master/README.md Retrieve an NFSe using its unique ID or the protocol number generated during its submission. This is a direct way to fetch a specific NFSe. ```php // Example code for consulting NFSe by ID or Protocol // $nfse = new Nfse(); // $nfse->setConfiguration($configuration); // // $response = $nfse->findByIdOrProtocol('ID_OR_PROTOCOL'); ``` -------------------------------- ### Consult NFSe by CNPJ and Integration ID Source: https://github.com/tecnospeed/plugnotas-php/blob/master/README.md Query an NFSe using the issuer's CNPJ and the integration ID. This method is useful when you have these specific identifiers. ```php // Example code for consulting NFSe by CNPJ and Integration ID // $nfse = new Nfse(); // $nfse->setConfiguration($configuration); // // $response = $nfse->findByCnpjAndIdIntegracao('00000000000000', 'INTEGRATION_ID'); ``` -------------------------------- ### Update Digital Certificate in PHP Source: https://context7.com/tecnospeed/plugnotas-php/llms.txt Updates an existing digital certificate by providing the certificate ID and the new file path. ```php setConfiguration($configuration); $certificado->setFile(__DIR__.'/novo-certificado.pfx', 'certificado.pfx'); $certificado->setPassword('nova-senha'); // Passar o ID do certificado a ser atualizado $response = $certificado->update('5c3118127ab98414de5e2bd6'); echo "Certificado atualizado com sucesso"; } catch (\Exception $e) { echo "Erro: " . $e->getMessage(); } ``` -------------------------------- ### Cancel NFSe Source: https://context7.com/tecnospeed/plugnotas-php/llms.txt Cancels an issued NFSe and allows checking the cancellation status via a protocol. ```php setConfiguration($configuration); // Cancelar por ID da nota $cancelamento = $nfse->cancel('5c3118127ab98414de5e2bd6'); // Ou cancelar por CNPJ e ID Integração $cancelamento = $nfse->cancelByCnpjAndIdIntegracao('00000000000191', 'ABC123'); // Consultar status do cancelamento com o protocolo retornado $protocolo = $cancelamento->getBody()['protocolo']; $status = $nfse->cancelStatus($protocolo); print_r($status->getBody()); } catch (\Exception $e) { echo "Erro: " . $e->getMessage(); } ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.