Skip to content

Commit

Permalink
Merge pull request #12 from tecnospeed/MAN-187
Browse files Browse the repository at this point in the history
Adicionando suporte a rota Empresa; Adicionando IE para o Prestador.
  • Loading branch information
ribeiro-thiago authored Jun 16, 2020
2 parents 78e2ef7 + 73a92b2 commit 977afb0
Show file tree
Hide file tree
Showing 6 changed files with 147 additions and 25 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ composer.phar
/vendor/
/report/
teste.php
.phpunit.result.cache
# Commit your application's lock file https://getcomposer.org/doc/01-basic-usage.md#commit-your-composer-lock-file-to-version-control
# You may choose to ignore a library lock file http://getcomposer.org/doc/02-libraries.md#lock-file
# composer.lock
Expand Down
14 changes: 10 additions & 4 deletions examples/nfse.prestador.create.php
Original file line number Diff line number Diff line change
@@ -1,25 +1,31 @@
<?php

require '../vendor/autoload.php';
require '/home/thiago_ribeiro/Projetos/github.com/plugnotas-php/vendor/autoload.php';

use TecnoSpeed\Plugnotas\Nfse\Prestador;
use TecnoSpeed\Plugnotas\Configuration;
use TecnoSpeed\Plugnotas\Communication\CallApi;

try {
$prestador = Prestador::fromArray([
'cpfCnpj' => '00.000.000/0001-91',
'cpfCnpj' => '80.681.272/0001-33',
'inscricaoMunicipal' => '123456',
'razaoSocial' => 'Razao Social do Prestador',
'simplesNacional' => true,
'endereco' => [
'logradouro' => 'Rua de Teste',
'numero' => '1234',
'codigoCidade' => '4115200',
'cep' => '87.050-800'
'cep' => '87.050-800',
'estado' => 'PR',
'bairro' => 'CENTRO'
],
'nfse' => [
'ativo' => true
]
]);

$configuration = new Configuration();
$configuration = new Configuration(Configuration::TYPE_ENVIRONMENT_SANDBOX);
$response = $prestador->send($configuration);

var_dump($response);
Expand Down
52 changes: 52 additions & 0 deletions src/Common/Nfse.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
<?php

namespace TecnoSpeed\Plugnotas\Common;

use TecnoSpeed\Plugnotas\Abstracts\BuilderAbstract;
use TecnoSpeed\Plugnotas\Error\ValidationError;
use Respect\Validation\Validator as v;

class Nfse extends BuilderAbstract
{
private $ativo;
private $tipoContrato;

public function setAtivo($ativo)
{
if (
is_null($ativo) ||
!v::boolVal()->validate($ativo)
) {
throw new ValidationError(
'Ativo é requerido para o cadastro de NFS-e.'
);
}

$this->ativo = $ativo;
}

public function getAtivo()
{
return $this->ativo;
}

public function setTipoContrato($tipoContrato)
{
if (
!is_null($tipoContrato) &&
!($tipoContrato === 0 ||
$tipoContrato === 1)
){
throw new ValidationError(
'Valor inválido para o TipoContrato. Valores aceitos: null, 0, 1'
);
}

$this->tipoContrato = $tipoContrato;
}

public function getTipoContrato()
{
return $this->tipoContrato;
}
}
35 changes: 28 additions & 7 deletions src/Nfse/Prestador.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
use TecnoSpeed\Plugnotas\Error\RequiredError;
use TecnoSpeed\Plugnotas\Error\ValidationError;
use TecnoSpeed\Plugnotas\Traits\Communication;
use TecnoSpeed\Plugnotas\Common\Nfse;

class Prestador extends BuilderAbstract
{
Expand All @@ -25,12 +26,14 @@ class Prestador extends BuilderAbstract
private $incentivadorCultural;
private $incentivoFiscal;
private $inscricaoMunicipal;
private $inscricaoEstadual;
private $nomeFantasia;
private $razaoSocial;
private $regimeTributario;
private $regimeTributarioEspecial;
private $simplesNacional;
private $telefone;
private $nfse;

public function setCertificado($certificado)
{
Expand Down Expand Up @@ -107,6 +110,16 @@ public function getEndereco()
return $this->endereco;
}

public function setNfse(Nfse $nfse)
{
$this->nfse = $nfse;
}

public function getNfse()
{
return $this->nfse;
}

public function setIncentivadorCultural($incentivadorCultural)
{
$this->incentivadorCultural = $incentivadorCultural;
Expand All @@ -129,11 +142,6 @@ public function getIncentivoFiscal()

public function setInscricaoMunicipal($inscricaoMunicipal)
{
if (is_null($inscricaoMunicipal)) {
throw new ValidationError(
'Inscrição municipal é requerida para NFSe.'
);
}
$this->inscricaoMunicipal = $inscricaoMunicipal;
}

Expand All @@ -142,6 +150,16 @@ public function getInscricaoMunicipal()
return $this->inscricaoMunicipal;
}

public function setInscricaoEstadual($inscricaoEstadual)
{
$this->inscricaoEstadual = $inscricaoEstadual;
}

public function getInscricaoEstadual()
{
return $this->inscricaoEstadual;
}

public function setNomeFantasia($nomeFantasia)
{
$this->nomeFantasia = $nomeFantasia;
Expand Down Expand Up @@ -229,6 +247,10 @@ public static function fromArray($data)
$data['endereco'] = Endereco::fromArray($data['endereco']);
}

if (array_key_exists('nfse', $data)) {
$data['nfse'] = Nfse::fromArray($data['nfse']);
}

return Hydrate::toObject(self::class, $data);
}

Expand All @@ -238,7 +260,6 @@ public function validate()
if(
!v::allOf(
v::keyNested('cpfCnpj'),
v::keyNested('inscricaoMunicipal'),
v::keyNested('razaoSocial'),
v::keyNested('simplesNacional'),
v::keyNested('endereco.logradouro'),
Expand All @@ -260,6 +281,6 @@ public function send(Configuration $configuration)
$this->validate();

$communication = $this->getCallApiInstance($configuration);
return $communication->send('POST', '/nfse/prestador', $this->toArray(true));
return $communication->send('POST', '/empresa', $this->toArray(true));
}
}
1 change: 1 addition & 0 deletions tests/Builders/NfseBuilderTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
use TecnoSpeed\Plugnotas\Builders\NfseBuilder;
use TecnoSpeed\Plugnotas\Common\Endereco;
use TecnoSpeed\Plugnotas\Common\Telefone;
use TecnoSpeed\Plugnotas\Common\Nfse;
use TecnoSpeed\Plugnotas\Error\InvalidTypeError;
use TecnoSpeed\Plugnotas\Error\ValidationError;
use TecnoSpeed\Plugnotas\Nfse\CidadePrestacao;
Expand Down
69 changes: 55 additions & 14 deletions tests/Nfse/PrestadorTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
use PHPUnit\Framework\TestCase;
use TecnoSpeed\Plugnotas\Common\Endereco;
use TecnoSpeed\Plugnotas\Common\Telefone;
use TecnoSpeed\Plugnotas\Common\Nfse;
use TecnoSpeed\Plugnotas\Communication\CallApi;
use TecnoSpeed\Plugnotas\Configuration;
use TecnoSpeed\Plugnotas\Error\InvalidTypeError;
Expand Down Expand Up @@ -85,17 +86,6 @@ public function testWithNullRazaoSocial()
$prestador->setRazaoSocial(null);
}

/**
* @covers TecnoSpeed\Plugnotas\Nfse\Prestador::setInscricaoMunicipal
*/
public function testWithNullIncricaoMunicipal()
{
$this->expectException(ValidationError::class);
$this->expectExceptionMessage('Inscrição municipal é requerida para NFSe.');
$prestador = new Prestador();
$prestador->setInscricaoMunicipal(null);
}

/**
* @covers TecnoSpeed\Plugnotas\Nfse\Prestador::setEmail
*/
Expand All @@ -121,6 +111,7 @@ public function testWithInvalidEmail()
* @covers TecnoSpeed\Plugnotas\Nfse\Prestador::getRegimeTributarioEspecial
* @covers TecnoSpeed\Plugnotas\Nfse\Prestador::getSimplesNacional
* @covers TecnoSpeed\Plugnotas\Nfse\Prestador::getTelefone
* @covers TecnoSpeed\Plugnotas\Nfse\Prestador::getNfse
* @covers TecnoSpeed\Plugnotas\Nfse\Prestador::setCertificado
* @covers TecnoSpeed\Plugnotas\Nfse\Prestador::setCpfCnpj
* @covers TecnoSpeed\Plugnotas\Nfse\Prestador::setEmail
Expand All @@ -134,6 +125,7 @@ public function testWithInvalidEmail()
* @covers TecnoSpeed\Plugnotas\Nfse\Prestador::setRegimeTributarioEspecial
* @covers TecnoSpeed\Plugnotas\Nfse\Prestador::setSimplesNacional
* @covers TecnoSpeed\Plugnotas\Nfse\Prestador::setTelefone
* @covers TecnoSpeed\Plugnotas\Nfse\Prestador::setNfse
*/
public function testValidPrestadorCreation()
{
Expand All @@ -151,6 +143,10 @@ public function testValidPrestadorCreation()

$telefone = new Telefone('44', '1234-1234');

$nfse = new Nfse();
$nfse->setAtivo(true);
$nfse->setTipoContrato(1);

$prestador = new Prestador();
$prestador->setCertificado('5b855b0926ddb251e0f0ef42');
$prestador->setCpfCnpj('00.000.000/0001-91');
Expand All @@ -165,7 +161,8 @@ public function testValidPrestadorCreation()
$prestador->setRegimeTributarioEspecial(0);
$prestador->setSimplesNacional(0);
$prestador->setTelefone($telefone);

$prestador->setNfse($nfse);

$this->assertSame($prestador->getCertificado(), '5b855b0926ddb251e0f0ef42');
$this->assertSame($prestador->getCpfCnpj(), '00000000000191');
$this->assertSame($prestador->getEmail(), '[email protected]');
Expand All @@ -179,7 +176,9 @@ public function testValidPrestadorCreation()
$this->assertSame($prestador->getRegimeTributarioEspecial(), 0);
$this->assertSame($prestador->getSimplesNacional(), 0);
$this->assertSame($prestador->getTelefone()->getDdd(), '44');
$this->assertSame($prestador->getTelefone()->getNumero(), '12341234');
$this->assertSame($prestador->getTelefone()->getNumero(), '12341234');
$this->assertSame($prestador->getNfse()->getAtivo(), true);
$this->assertSame($prestador->getNfse()->getTipoContrato(), 1);
}

/**
Expand All @@ -193,6 +192,44 @@ public function testBuildFromArray()
$this->assertSame($prestador->getCertificado(), '5b855b0926ddb251e0f0ef42');
}

/**
* @covers TecnoSpeed\Plugnotas\Nfse\Prestador::fromArray
*/
public function testBuildFromArrayWithNfse()
{
$data = [
'certificado' => '5b855b0926ddb251e0f0ef42',
'nfse' => [
'ativo' => true,
'tipoContrato' => 1
]
];
$prestador = Prestador::fromArray($data);
$this->assertInstanceOf(Prestador::class, $prestador);
$this->assertSame($prestador->getCertificado(), '5b855b0926ddb251e0f0ef42');
$this->assertInstanceOf(Nfse::class, $prestador->getNfse());
}

/**
* @covers TecnoSpeed\Plugnotas\Nfse\Prestador::fromArray
*/
public function testBuildFromArrayWithNfseInvalid()
{
$this->expectExceptionMessage(
'Valor inválido para o TipoContrato. Valores aceitos: null, 0, 1'
);

$data = [
'certificado' => '5b855b0926ddb251e0f0ef42',
'nfse' => [
'ativo' => true,
'tipoContrato' => 3
]
];
$prestador = Prestador::fromArray($data);
$prestador->validate();
}

/**
* @covers TecnoSpeed\Plugnotas\Nfse\Prestador::fromArray
*/
Expand Down Expand Up @@ -248,7 +285,6 @@ public function testValidateWithValidObject()
{
$data = [
'cpfCnpj' => '00.000.000/0001-91',
'inscricaoMunicipal' => '123456',
'razaoSocial' => 'Razao Social do Prestador',
'simplesNacional' => false,
'endereco' => [
Expand Down Expand Up @@ -295,10 +331,15 @@ public function testSend()
'codigoCidade' => '4115200',
'cep' => '87.050-800'
]);
$nfse = Nfse::fromArray([
'ativo' => true,
'tipoContrato' => 1
]);
$prestador->setCpfCnpj('00.000.000/0001-91');
$prestador->setInscricaoMunicipal('123456');
$prestador->setRazaoSocial('Razao Social do Prestador');
$prestador->setEndereco($endereco);
$prestador->setNfse($nfse);
$prestador->setSimplesNacional(false);
$response = $prestador->send($configuration);

Expand Down

0 comments on commit 977afb0

Please sign in to comment.