diff --git a/exemplos/consulta-config-uf.php b/exemplos/consulta-config-uf.php new file mode 100644 index 0000000..a46135e --- /dev/null +++ b/exemplos/consulta-config-uf.php @@ -0,0 +1,84 @@ +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 '
'; +echo htmlspecialchars($consulta); diff --git a/lib/Sped/Gnre/Sefaz/ConfigUf.php b/lib/Sped/Gnre/Sefaz/ConfigUf.php new file mode 100644 index 0000000..116ba3a --- /dev/null +++ b/lib/Sped/Gnre/Sefaz/ConfigUf.php @@ -0,0 +1,127 @@ + + * @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; + } + +} diff --git a/lib/Sped/Gnre/Sefaz/ConsultaConfigUf.php b/lib/Sped/Gnre/Sefaz/ConsultaConfigUf.php new file mode 100644 index 0000000..4f654b0 --- /dev/null +++ b/lib/Sped/Gnre/Sefaz/ConsultaConfigUf.php @@ -0,0 +1,105 @@ + + * @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; + } + +}