1 | <?php |
||
35 | class Autorizacao extends Retorno |
||
36 | { |
||
37 | |||
38 | 8 | public function __construct($autorizacao = []) |
|
42 | |||
43 | public function toArray($recursive = false) |
||
44 | { |
||
45 | $autorizacao = parent::toArray($recursive); |
||
46 | return $autorizacao; |
||
47 | } |
||
48 | |||
49 | 8 | public function fromArray($autorizacao = []) |
|
50 | { |
||
51 | 8 | if ($autorizacao instanceof Autorizacao) { |
|
52 | $autorizacao = $autorizacao->toArray(); |
||
53 | 8 | } elseif (!is_array($autorizacao)) { |
|
54 | return $this; |
||
55 | } |
||
56 | 8 | parent::fromArray($autorizacao); |
|
57 | 8 | return $this; |
|
58 | } |
||
59 | |||
60 | 5 | private function getConteudo($dom) |
|
81 | |||
82 | 5 | public function envia($nota, $dom) |
|
83 | { |
||
84 | 5 | $envio = new Envio(); |
|
85 | 5 | $envio->setServico(Envio::SERVICO_AUTORIZACAO); |
|
86 | 5 | $envio->setAmbiente($nota->getAmbiente()); |
|
87 | 5 | $envio->setModelo($nota->getModelo()); |
|
88 | 5 | $envio->setEmissao($nota->getEmissao()); |
|
89 | 5 | $this->setVersao($envio->getVersao()); |
|
90 | 5 | $xml_content = $this->getConteudo($dom); |
|
91 | 5 | $dom_lote = $this->validar($xml_content); |
|
92 | 5 | $envio->setConteudo($dom_lote); |
|
93 | 5 | $resp = $envio->envia(); |
|
94 | $this->loadNode($resp); |
||
95 | if ($this->isProcessado()) { |
||
96 | $protocolo = new Protocolo(); |
||
97 | $protocolo->loadNode($resp); |
||
98 | if ($protocolo->isAutorizado()) { |
||
99 | $nota->setProtocolo($protocolo); |
||
100 | } |
||
101 | return $protocolo; |
||
102 | } elseif ($this->isRecebido()) { |
||
103 | $recibo = new Recibo($this->toArray()); |
||
104 | $recibo->setModelo($nota->getModelo()); |
||
105 | $recibo->loadNode($resp, Recibo::INFO_TAGNAME); |
||
106 | return $recibo; |
||
107 | } elseif ($this->isParalisado()) { |
||
108 | $config = SEFAZ::getInstance()->getConfiguracao(); |
||
109 | $config->setOffline(time()); |
||
110 | throw new \NFe\Exception\NetworkException('Serviço paralisado ou em manutenção', $this->getStatus()); |
||
111 | } |
||
112 | return $this; |
||
113 | } |
||
114 | |||
115 | public function loadNode($element, $name = null) |
||
121 | |||
122 | /** |
||
123 | * Valida o XML em lote |
||
124 | */ |
||
125 | 7 | public function validar($xml_content) |
|
149 | } |
||
150 |