Filtrar invoices(emitidas)

Hola buen día nuevamente, me ha surgido una nueva duda mientras estoy utilizando el api,
Tengo ya el flujo de mi aplicacion casi terminado, solo quisiera consultarles como es que dentro del endpont
de attachments(GET), puedo filtrar las facturas que solo sean emitidas por el rfc del usuario actual.
pues actualmente me envia facturas tanto de ingresos como egresos

Saludos y gracias

¡Qué tal!

Claro, esto es posible mediante el uso de Keywords. Para información detallada de todo lo que puedes lograr haciendo uso de Keywords te recomiendo que consultes este artículo:

Respondiendo tu pregunta directamente:

Podrías filtrar las facturas emitidas filtrando por el Keyword “emitidas”. Si estás haciendo uso de la librería de Sync en PHP podría ser algo como lo siguiente:

$options = [
‘keywords’ => ‘emitidas’,
];

$attachments = paybook\Attachment::get($session, null, null, null, $options);

Es IMPORTANTE que el parámetro $options lo pases en la posición quinta en los parámetros del método Attachment::get.

Si estás consumiendo el API de alguna otra forma la petición al API directamente sería algo como esto:

https://sync.paybook.com/v1/transactions?token={{token}}&keywords=emitidas

¡Saludos!

hola @hugo te agradezco mucho tu respuesta, quiza estoy haciendo algo mal, con los keywords pues al agregar la palabra ‘emitidas’, siempre me retorna un array vacio de adjunto la imagen, y como comentario, el cliente al que estoy intentando acceder si cuenta con facturas que emitio el dia de ayer 21 de marzo,
saludos nuevamente y gracias

Qué tal nuevamente.

Analizando el código que nos compartes me encantaría hacer un comentario:

Si estás haciendo una búsqueda sobre attachments no es necesario utilizar el filtro has_attachments puesto que ya estás trabajando con dicha colección. Attachments::get tiene la funcionalidad de traer todos los documentos que son archivos adjuntos i.e. attachments.

Sin embargo, entendiendo un poco más el flujo que deseas seguir te recomiendo que hagas una consulta previa en transacciones. Por ejemplo:

$options = [
‘has_attachment’ => true,
‘keywords’ => ‘emitidas’,
];
$transactions = paybook\Transaction::get($session, null, $options);

Importante: aquí options va en la tercera posición a diferencia de Attachments::get. Aquí si es necesario el filtro has_attachments puesto que estás haciendo una consulta en Transactions.

Una vez hecho esto puedes iterar en las transacciones y encontrarás que cada transacción tiene un atributo attachments. Podrías hacer algo como esto:

foreach ($transactions as $i => $transaction) {
$id_attachment = $transaction->attachments[0][‘id_attachment’]


}

Teniendo el objeto attachment, puedes descargar el archivo adjunto fácilmente:

$id_attachment = $attachment[‘id_attachment’];
$xml_parsed = paybook\Attachment::get($session, null, $id_attachment, $extra = true);

Tenemos un recurso en PHP que te puede ser de mucha utilidad, básicamente es un ejemplo de como descargar los archivos adjuntos ligados a transacciones:

https://github.com/Paybook/sync-php/tree/master/examples/json_invoices

Puedes tomar éste script como base y únicamente agregarle el filtro por keywords = ‘emitidas’.

Debe funcionar :slight_smile:

Hugo te Agradezco la ayuda que me has proporcionado, me ha sido de gran ayuda, en este momento
ya está funcionando Paybook con mi aplicación,
Adicionalmente me gustaría consultarte acerca de obtener las facturas que por alguna razón han sido canceladas y de este modo actualizar mi base de datos.
Gracias nuevamente

Hola!

Para obtener las facturas canceladas puedes aplicar el filtro con el parámetro is_disable, abajo un ejemplo:

Facturas Canceladas
https://sync.paybook.com/v1/transactions?token={{token}}& is_disable=1

En PHP:
$options = [
‘is_disable’ => 1,
];
$transactions = paybook\Transaction::get($session, null, $options);