Last active
August 29, 2015 13:57
-
-
Save felipehummel/9514328 to your computer and use it in GitHub Desktop.
erp webservice test
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
namespace Anima\Core\Services; | |
interface AnimaErpDataObject { | |
public function validate(); | |
public function toArray(); | |
} | |
class AnimaErpPayment implements AnimaErpDataObject | |
{ | |
//... | |
} | |
class AnimaErpServiceSent implements AnimaErpDataObject | |
{ | |
// ... | |
} | |
class AnimaErpClient implements AnimaErpDataObject | |
{ | |
var $indicadorTipoPessoa; // string | |
var $nomePessoa; // string | |
var $codigoDocumentoFederal; // string | |
var $dataImplantacaoCliente; // dateTime | |
var $codigoPaisNascimento; // string | |
var $codigoEstadoNascimento; // string | |
var $nomeLogradouroEndereco; // string | |
var $numeroLogradouroEndereco; // string | |
var $complementoEndereco; // string | |
var $nomeBairroEndereco; // string | |
var $codigoCidadeEndereco; // int | |
var $codigoPaisEndereco; // string | |
var $codigoCEPEndereco; // string | |
var $numeroTelefone; // string | |
var $numeroRamal; // string | |
var $enderecoEmail; // string | |
var $nomeEnderecoCobranca; // string | |
var $numeroEnderecoCobranca; // string | |
var $complementoEnderecoCobranca; // string | |
var $nomeBairroCobranca; // string | |
var $codigoCidadeCobranca; // int | |
var $codigoPaisCobranca; // string | |
var $codigoCEPCobranca; // string | |
var $numeroDocumentoEstadualFisica; // string | |
var $indicadorTipoPessoaJuridica; // string | |
var $orgaoEmissorDocumentoEstadual; // string | |
var $nomeMaePessoaFisica; // string | |
var $codigoUFEmissorDocumentoEstadual; // string | |
var $dataNascimentoPessoaFisica; // dateTime | |
var $nomeNacionalidadePessoaFisica; // string | |
var $nomeProfissaoPessoaFisica; // string | |
var $indicadorEstadoCivilPessoaFisica; // string | |
var $numeroInscricaoEstadual; // string | |
var $numeroInscricaoMunicipal; //string | |
public function validate() | |
{ | |
$cepRules = 'size:10|regex:/^[0-9]{2}\.[0-9]{3}-[0-9]{3}$/'; | |
$rules = array( | |
'indicadorTipoPessoa' => 'required|in:Fisica,Juridica', | |
'nomePessoa' => 'required|min:3|max:40', | |
// 'codigoDocumentoFederal' => 'required|min:11|max:20|regex:/[0-9]+/', // TODO: VER SE É 12 mesmo, e se tem a pontuação !!!TODO!! | |
'dataImplantacaoCliente' => 'required|date', | |
'codigoPaisNascimento' => 'max:3', | |
'codigoEstadoNascimento' => 'required|max:3', | |
'nomeLogradouroEndereco' => 'required|min:1|max:33', | |
'numeroLogradouroEndereco' => 'required|min:1|max:5', | |
'complementoEndereco' => 'max:10', | |
'nomeBairroEndereco' => 'required|min:1|max:20', | |
'codigoCidadeEndereco' => 'required|integer', // TODO: PRECISAMOS DA TABELA | |
'codigoPaisEndereco' => 'required|size:3', | |
'codigoCEPEndereco' => 'required|'.$cepRules, // FORMAT: 99.999-999 | |
'numeroTelefone' => 'max:20', | |
'numeroRamal' => 'max:7', | |
'enderecoEmail' => 'required|max:40|email', | |
'nomeEnderecoCobranca' => 'max:33', | |
'numeroEnderecoCobranca' => 'max:5', | |
'complementoEnderecoCobranca' => 'max:10', | |
'nomeBairroCobranca' => 'max:20', | |
'codigoCidadeCobranca' => 'integer', // TODO: PRECISAMOS DA TABELA | |
'codigoPaisCobranca' => 'max:3', | |
'nomeMaePessoaFisica' => 'max:40', // probably won't be used | |
'dataNascimentoPessoaFisica' => 'date', | |
'nomeNacionalidadePessoaFisica' => 'max:40', | |
'nomeProfissaoPessoaFisica' => 'max:40', | |
'indicadorEstadoCivilPessoaFisica' => 'max:10', | |
'codigoCEPCobranca' => $cepRules); | |
$validator = \Validator::make($this->toArray(), $rules); | |
$validator->sometimes('codigoDocumentoFederal', 'required|size:14/regex:/[0-9]+/', function ($input) | |
{ | |
return $this->isPJ($input); | |
}); | |
$validator->sometimes('codigoDocumentoFederal', 'required|size:11/regex:/[0-9]+/', function ($input) | |
{ | |
return $this->isPF($input); | |
}); | |
$validator->sometimes('numeroDocumentoEstadualFisica', 'required|in:ISENTO', function ($input) | |
{ | |
return $this->isPJ($input); | |
}); | |
$validator->sometimes('numeroDocumentoEstadualFisica', 'required|max:20', function ($input) | |
{ | |
return $this->isPF($input); | |
}); | |
$validator->sometimes('indicadorTipoPessoaJuridica', 'required|max:7|in:Publico,Privado', function ($input) | |
{ | |
return $this->isPJ($input); | |
}); | |
$validator->sometimes('orgaoEmissorDocumentoEstadual', 'required|max:10', function ($input) | |
{ | |
return $this->isPF($input); | |
}); | |
$validator->sometimes('codigoUFEmissorDocumentoEstadual', 'required|max:3', function ($input) | |
{ | |
return $this->isPF($input); | |
}); | |
$validator->sometimes('numeroInscricaoEstadual', 'required|in:ISENTO', function ($input) | |
{ | |
return $this->isPF($input); | |
}); | |
$validator->sometimes('numeroInscricaoEstadual', 'required|max:18', function ($input) | |
{ | |
return $this->isPJ($input); | |
}); | |
$validator->sometimes('numeroInscricaoMunicipal', 'required|in:ISENTO', function ($input) | |
{ | |
return $this->isPF($input); | |
}); | |
$validator->sometimes('numeroInscricaoMunicipal', 'required|max:18', function ($input) | |
{ | |
return $this->isPJ($input); | |
}); | |
return $validator; | |
} | |
private function isPF($input) | |
{ | |
return $input['indicadorTipoPessoa'] === 'Fisica'; | |
} | |
private function isPJ($input) | |
{ | |
return $input['indicadorTipoPessoa'] === 'Juridica'; | |
} | |
public function toArray() | |
{ | |
return array( | |
'indicadorTipoPessoa' => $this->indicadorTipoPessoa, | |
'nomePessoa' => $this->nomePessoa, | |
'codigoDocumentoFederal' => $this->codigoDocumentoFederal, | |
'dataImplantacaoCliente' => $this->dataImplantacaoCliente, | |
'codigoPaisNascimento' => $this->codigoPaisNascimento, | |
'codigoEstadoNascimento' => $this->codigoEstadoNascimento, | |
'nomeLogradouroEndereco' => $this->nomeLogradouroEndereco, | |
'numeroLogradouroEndereco' => $this->numeroLogradouroEndereco, | |
'complementoEndereco' => $this->complementoEndereco, | |
'nomeBairroEndereco' => $this->nomeBairroEndereco, | |
'codigoCidadeEndereco' => $this->codigoCidadeEndereco, | |
'codigoPaisEndereco' => $this->codigoPaisEndereco, | |
'codigoCEPEndereco' => $this->codigoCEPEndereco, | |
'numeroTelefone' => $this->numeroTelefone, | |
'numeroRamal' => $this->numeroRamal, | |
'enderecoEmail' => $this->enderecoEmail, | |
'nomeEnderecoCobranca' => $this->nomeEnderecoCobranca, | |
'numeroEnderecoCobranca' => $this->numeroEnderecoCobranca, | |
'complementoEnderecoCobranca' => $this->complementoEnderecoCobranca, | |
'nomeBairroCobranca' => $this->nomeBairroCobranca, | |
'codigoCidadeCobranca' => $this->codigoCidadeCobranca, | |
'codigoPaisCobranca' => $this->codigoPaisCobranca, | |
'codigoCEPCobranca' => $this->codigoCEPCobranca, | |
'numeroDocumentoEstadualFisica' => $this->numeroDocumentoEstadualFisica, | |
'indicadorTipoPessoaJuridica' => $this->indicadorTipoPessoaJuridica, | |
'orgaoEmissorDocumentoEstadual' => $this->orgaoEmissorDocumentoEstadual, | |
'nomeMaePessoaFisica' => $this->nomeMaePessoaFisica, | |
'codigoUFEmissorDocumentoEstadual' => $this->codigoUFEmissorDocumentoEstadual, | |
'dataNascimentoPessoaFisica' => $this->dataNascimentoPessoaFisica, | |
'nomeNacionalidadePessoaFisica' => $this->nomeNacionalidadePessoaFisica, | |
'nomeProfissaoPessoaFisica' => $this->nomeProfissaoPessoaFisica, | |
'indicadorEstadoCivilPessoaFisica' => $this->indicadorEstadoCivilPessoaFisica, | |
'numeroInscricaoEstadual' => $this->numeroInscricaoEstadual, | |
'numeroInscricaoMunicipal' => $this->numeroInscricaoMunicipal); | |
} | |
} | |
/** | |
* Service responsible for integrating with Anima's ERP (Datasul) | |
*/ | |
interface AnimaErpServiceInterface | |
{ | |
public function sendClient(AnimaErpClient $animaClient); | |
public function sendService(AnimaErpServiceSent $animaService); | |
public function sendPayment(AnimaErpPayment $animaPayment); | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
namespace Anima\Core\Services; | |
use Anima\Core\Services\AnimaErpServiceInterface, | |
Anima\Core\Services\AnimaErpClient; | |
/** | |
* Service responsible for integrating with Anima's ERP (Datasul) | |
*/ | |
class SoapAnimaErpService implements AnimaErpServiceInterface | |
{ | |
var $soapClient; | |
public function __construct() | |
{ | |
$this->soapClient = new \SoapClient(SoapAnimaErpService::SERVICE_URI.'?WSDL', array('trace' => true, 'soap_version' => SOAP_1_2)); | |
} | |
const SEND_CLIENT_FUNCTION = 'clienteEnviar'; | |
const SEND_SERVICE_FUNCTION = 'ServicoEnviar'; | |
const SEND_PAYMENT_FUNCTION = 'PagamentoEnviar'; | |
const SERVICE_URI = 'http://testeservicos.animaeducacao.com.br/PortalAnima/dsv/Service.asmx'; | |
public function sendClient(AnimaErpClient $animaClient) | |
{ | |
if ($this->validateDataObject($animaClient)) { | |
$result = $this->executeRemoteFunction(SoapAnimaErpService::SEND_CLIENT_FUNCTION, $animaClient); | |
$this->debugResult($result); | |
} | |
} | |
public function sendService(AnimaErpServiceSent $animaService) | |
{ | |
// ... | |
} | |
public function sendPayment(AnimaErpPayment $animaPayment) | |
{ | |
// ... | |
} | |
private function validateDataObject(AnimaErpDataObject $animaObj) | |
{ | |
$validator = $animaObj->validate(); | |
if ($validator->passes()) { | |
return true; | |
} | |
else { | |
throw new \Exception($validator->messages()->toJson()); | |
} | |
} | |
private function executeRemoteFunction($functionName, AnimaErpDataObject $argumentObject) | |
{ | |
$arguments= array($functionName => $argumentObject->toArray()); | |
$options = array('location' => SoapAnimaErpService::SERVICE_URI); | |
$result = $this->soapClient->__soapCall($functionName, $arguments, $options); | |
return $result; | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<? | |
$client = new SoapAnimaErpService(); | |
$animaClient = new AnimaErpClient(); | |
$animaClient->indicadorTipoPessoa = 'Fisica'; | |
$animaClient->nomePessoa = 'João Pedro'; | |
$animaClient->codigoEstadoNascimento = 10; | |
// $animaClient->codigoEstadoNascimento = 'AM'; | |
$animaClient->codigoDocumentoFederal = '93325959253'; | |
$animaClient->dataImplantacaoCliente = date('c', strtotime(date('Y-m-d H:i:s'))); | |
$animaClient->dataNascimentoPessoaFisica = date('c', strtotime(date('Y-m-d H:i:s'))); | |
$animaClient->nomeLogradouroEndereco = 'sei la rua, alguma coisa blabla'; | |
$animaClient->numeroLogradouroEndereco = '202'; | |
$animaClient->nomeBairroEndereco = 'vila madalena'; | |
$animaClient->codigoPaisEndereco = 'BRA'; | |
$animaClient->codigoCidadeEndereco = 10; | |
$animaClient->codigoCidadeCobranca = 10; | |
$animaClient->codigoCEPEndereco = '05.435-020'; | |
// $animaClient->codigoCEPCobranca = '05.435-020'; | |
$animaClient->enderecoEmail = '[email protected]'; | |
$animaClient->numeroDocumentoEstadualFisica = '19402180'; | |
$animaClient->orgaoEmissorDocumentoEstadual = 'SSP'; | |
$animaClient->codigoUFEmissorDocumentoEstadual = 'AM'; | |
$animaClient->numeroInscricaoEstadual = 'ISENTO'; | |
$animaClient->numeroInscricaoMunicipal = 'ISENTO'; | |
$client->sendClient($animaClient); | |
?> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment