Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implementada consulta ao método que retorna a configuração atual dos campos obrigatórios de acordo com a Receita e UF informadas. #25

Merged
merged 2 commits into from
Apr 14, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
84 changes: 84 additions & 0 deletions exemplos/consulta-config-uf.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
<?php

require '../vendor/autoload.php';

class MySetup extends Sped\Gnre\Configuration\Setup
{

public function getBaseUrl()
{

}

public function getCertificateCnpj()
{

}

public function getCertificateDirectory()
{

}

public function getCertificateName()
{

}

public function getCertificatePassword()
{

}

public function getCertificatePemFile()
{

}

public function getEnvironment()
{

}

public function getPrivateKey()
{

}

public function getProxyIp()
{

}

public function getProxyPass()
{

}

public function getProxyPort()
{

}

public function getProxyUser()
{

}
}

$minhaConfiguracao = new MySetup();

$config = new \Sped\Gnre\Sefaz\ConfigUf;

/**
* Qual ambiente sera realizada a consulta
*/
$config->setEnvironment(1);
$config->setReceita(100099);
$config->setEstado('PR');

$webService = new Sped\Gnre\Webservice\Connection($minhaConfiguracao, $config->getHeaderSoap(), $config->toXml());

$consulta = $webService->doRequest($config->soapAction());
echo '<pre>';
echo htmlspecialchars($consulta);
127 changes: 127 additions & 0 deletions lib/Sped/Gnre/Sefaz/ConfigUf.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
<?php

/**
* Este arquivo é parte do programa GNRE PHP
* GNRE PHP é um software livre; você pode redistribuí-lo e/ou
* modificá-lo dentro dos termos da Licença Pública Geral GNU como
* publicada pela Fundação do Software Livre (FSF); na versão 2 da
* Licença, ou (na sua opinião) qualquer versão.
* Este programa é distribuído na esperança de que possa ser útil,
* mas SEM NENHUMA GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer
* MERCADO ou APLICAÇÃO EM PARTICULAR. Veja a
* Licença Pública Geral GNU para maiores detalhes.
* Você deve ter recebido uma cópia da Licença Pública Geral GNU
* junto com este programa, se não, escreva para a Fundação do Software
* Livre(FSF) Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/

namespace Sped\Gnre\Sefaz;

/**
* Classe utilzada para gerar o envelope SOAP para ser enviado ao web service
* da SEFAZ para realizar a operação de consulta das configurações da UF.
* @package gnre
* @subpackage sefaz
* @author Renan Delmonico <[email protected]>
* @license http://www.gnu.org/licenses/gpl-howto.html GPL
* @version 1.0.0
*/
class ConfigUf extends ConsultaConfigUf
{

/**
* @var int
*/
private $ambienteDeTeste = false;

/**
* Retorna o header da requisição SOAP
* @return array
*/
public function getHeaderSoap()
{
$action = $this->ambienteDeTeste ?
'http://www.testegnre.pe.gov.br/webservice/GnreConfigUF' :
'http://www.gnre.pe.gov.br/webservice/GnreConfigUF';

return array(
'Content-Type: application/soap+xml;charset=utf-8;action="' . $action . '"',
'SOAPAction: consultar'
);
}

/**
* Retorna a action da requisição SOAP
* @return string
*/
public function soapAction()
{
return $this->ambienteDeTeste ?
'https://www.testegnre.pe.gov.br/gnreWS/services/GnreConfigUF' :
'https://www.gnre.pe.gov.br/gnreWS/services/GnreConfigUF';
}

/**
* Retorna o XML que será enviado na requisição SOAP
* @return string
*/
public function toXml()
{
$gnre = new \DOMDocument('1.0', 'UTF-8');
$gnre->formatOutput = false;
$gnre->preserveWhiteSpace = false;

$consulta = $gnre->createElement('TConsultaConfigUf');
$consulta->setAttribute('xmlns', 'http://www.gnre.pe.gov.br');

$ambiente = $gnre->createElement('ambiente', $this->getEnvironment());
$estado = $gnre->createElement('uf', $this->getEstado());
$receita = $gnre->createElement('receita', $this->getReceita());

$consulta->appendChild($ambiente);
$consulta->appendChild($estado);
$consulta->appendChild($receita);

$this->getSoapEnvelop($gnre, $consulta);

return $gnre->saveXML();
}

/**
* Retorna o envelope que sera enviado na requisicao SOAP
* @return string
*/
public function getSoapEnvelop($gnre, $consulta)
{
$soapEnv = $gnre->createElement('soap12:Envelope');
$soapEnv->setAttribute('xmlns:soap12', 'http://www.w3.org/2003/05/soap-envelope');
$soapEnv->setAttribute('xmlns:gnr', 'http://www.gnre.pe.gov.br/webservice/GnreConfigUF');

$gnreCabecalhoSoap = $gnre->createElement('gnr:gnreCabecMsg');
$gnreCabecalhoSoap->appendChild($gnre->createElement('gnr:versaoDados', '1.00'));

$soapHeader = $gnre->createElement('soap12:Header');
$soapHeader->appendChild($gnreCabecalhoSoap);

$soapEnv->appendChild($soapHeader);
$gnre->appendChild($soapEnv);

$gnreDadosMsg = $gnre->createElement('gnr:gnreDadosMsg');
$gnreDadosMsg->appendChild($consulta);

$soapBody = $gnre->createElement('soap12:Body');
$soapBody->appendChild($gnreDadosMsg);

$soapEnv->appendChild($soapBody);
}

/**
* Define se será utilizado o ambiente de testes ou não
* @param boolean $ambiente Ambiente
*/
public function utilizarAmbienteDeTeste($ambiente = false)
{
$this->ambienteDeTeste = $ambiente;
}

}
105 changes: 105 additions & 0 deletions lib/Sped/Gnre/Sefaz/ConsultaConfigUf.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
<?php

/**
* Este arquivo é parte do programa GNRE PHP
* GNRE PHP é um software livre; você pode redistribuí-lo e/ou
* modificá-lo dentro dos termos da Licença Pública Geral GNU como
* publicada pela Fundação do Software Livre (FSF); na versão 2 da
* Licença, ou (na sua opinião) qualquer versão.
* Este programa é distribuído na esperança de que possa ser útil,
* mas SEM NENHUMA GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer
* MERCADO ou APLICAÇÃO EM PARTICULAR. Veja a
* Licença Pública Geral GNU para maiores detalhes.
* Você deve ter recebido uma cópia da Licença Pública Geral GNU
* junto com este programa, se não, escreva para a Fundação do Software
* Livre(FSF) Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/

namespace Sped\Gnre\Sefaz;

/**
* Classe que possui os métodos fundamentais para se realizar uma consulta
* ao webservice da sefaz
* @package gnre
* @subpackage sefaz
* @author Renan Delmonico <[email protected]>
* @license http://www.gnu.org/licenses/gpl-howto.html GPL
* @version 1.0.0
*/
abstract class ConsultaConfigUf implements ObjetoSefaz
{

/**
* O número representa qual ambiente deve ser realizada a consulta
* 1 - produção 2 - homologação
* @var int
*/
private $environment;

/**
* UF do estado
* @var string
*/
private $estado;

/**
* Código da receita
* @var int
*/
private $receita;

/**
* Retorna a UF que deve ser consultada
* @return string
*/
public function getEstado()
{
return $this->estado;
}

/**
* Define a UF que deve ser consultada
* @param string $uf UF
*/
public function setEstado($estado)
{
$this->estado = $estado;
}

/**
* Retorna a receita que deve ser consultada
* @return int
*/
public function getReceita()
{
return $this->receita;
}

/**
* Define a receita que deve ser consultada
* @param int $receita Código da receita
*/
public function setReceita($receita)
{
$this->receita = $receita;
}

/**
* Retorna em qual ambiente deve ser consultado
* @return int
*/
public function getEnvironment()
{
return $this->environment;
}

/**
* Define em qual ambiente deve ser consultado
* @param int $environment O número do ambiente que se deseja consultar. 1 = produção - 2 = homologação
*/
public function setEnvironment($environment)
{
$this->environment = $environment;
}

}