josemmo / Facturae-PHP

📝 Genera, firma, envía y recibe facturas electrónicas sin necesidad de ninguna librería adicional
https://josemmo.github.io/Facturae-PHP/
MIT License
219 stars 98 forks source link

Bug en función getRegisteredInvoices de la clase Faceb2bTrait #98

Closed MeloAndroid closed 2 years ago

MeloAndroid commented 2 years ago

Hola,

En primer lugar quería agradecer el trabajo por crear esta librería.

En segundo lugar, creo que he encontrado un bug en la clase Face/Traits/Faceb2bTrait, ya que el parámetro opcional se añade al request SI ES NULL, cuando debería ser SI NO ES NULL

public function getRegisteredInvoices($receivingUnit=null) { $req = '<web:GetRegisteredInvoices><request>'; if (is_null($receivingUnit)) { $req .= '<receivingUnit>' . $receivingUnit . '</receivingUnit>'; } $req .= '</request></web:GetRegisteredInvoices>'; return $this->request($req); }

El if (is_null($receivingUnit)) debería ser if (!is_null($receivingUnit)).

Por otro lado, aún haciendo esa corrección, me encuentro con que el método (en el entorno de pruebas del portal) me devuelve siempre todas las facturas registradas, sin filtrar la unidad receptora indicada, es más me devuelve lo mismo aunque ponga un código de unidad inexistente, cualquier cosa. ¿es normal? entiendo que esto ya será más cosa del Servicio Web ¿puede que en producción no ocurra?

Saludos.

josemmo commented 2 years ago

Hola @MeloAndroid,

Cierto, debería ser !is_null($receivingUnit), gracias por reportarlo.


Por otro lado, aún haciendo esa corrección, me encuentro con que el método (en el entorno de pruebas del portal) me devuelve siempre todas las facturas registradas

Sobre esto otro problema, parece que es cosa del webservice de FaceB2B que ya no hace caso al parámetro "receivingUnit". En el manual oficial viene este ejemplo de uso que confirma que debería funcionar:

<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:web="https://webservice.faceb2b.gob.es">
 <soapenv:Header/>
 <soapenv:Body>
 <web:GetRegisteredInvoices>
 <request>
 <!--<receivingUnit>51558103JES0001</receivingUnit>-->
 </request>
 </web:GetRegisteredInvoices>
 </soapenv:Body>
</soapenv:Envelope>

Sin embargo, algo han cambiado desde el Ministerio de Hacienda porque el WSDL actual ya no recoge este parámetro.