Actualizar Documentos
Actualizar Documentos
Section titled “Actualizar Documentos”Dominio: https://test-api-factura.edw-dev.com
Dominio: https://api-financiero.e-dinky.com
Este endpoint permite actualizar documentos existentes en el sistema. Solo se pueden actualizar documentos que estén en estado draft
(borrador).
Endpoint
Section titled “Endpoint”Actualizar Documento
Section titled “Actualizar Documento”PUT /api/v1/documents/{id}/update
Actualiza un documento existente con nueva información.
Headers Requeridos
Section titled “Headers Requeridos”Content-Type: application/jsonAccept: application/jsonAuthorization: Bearer {token}
Parámetros de Ruta
Section titled “Parámetros de Ruta”Parámetro | Tipo | Descripción |
---|---|---|
id | string | ID del documento a actualizar |
Cuerpo de la Solicitud
Section titled “Cuerpo de la Solicitud”{ "id": "1339329970", "sri_code_document": "01", "customer": { "identification_number": "9999999999001", "name": "Final", "lastname": "Consumidor 2", "identification_type": "RUC", "address": "Guayaquil" }, "document": { "date": "2024-10-24" }, "items": [ { "code": "ICE-001", "description": "ITEM PRUEBAS ICE 2", "rate": 100, "quantity": 1, "subtotal": 100, "total_tax": 26.5, "total": 126.5, "taxes": [ { "code": "3", "percentaje_code": "3053", "percentaje_tax": 10, "total_tax": 10 }, { "code": "2", "percentaje_code": "4", "percentaje_tax": 15, "total_tax": 16.50 } ] } ], "aditional_fields": [ { "key": "Telefono", "value": "099999", "type": "sri" } ]}
Respuesta Exitosa (200 OK)
Section titled “Respuesta Exitosa (200 OK)”{ "message": "Documento actualizado", "status": "UPDATED", "payload": { "id": 1339329970, "environment": "TEST", "number": 4, "date": "2024-10-24", "due_date": null, "discount_amount": "0.00", "subtotal": "200.00", "tax_amount": "53.00", "tip": "0.00", "total": "253.00", "payment_date": null, "notes": null, "terms": null, "status": "draft", "type": "invoice", "parent_id": null, "customer": { "id": 1783700761, "full_name": "Consumidor 2 Final", "identification_type": "ruc", "identification_number": "9999999999001" }, "sri": { "access_key": null, "key_where_generated": "local", "status": null, "has_been_sent": false, "has_pdf": false, "sequential_doc": null, "establishment": "001", "point_emi": "004", "number_document": null, "type_document": "FACTURA", "title_document": "Factura", "code_document": "01", "date_sent": null, "authorization_date": null, "send_automatic": true }, "items": [ { "position": 1, "code": "ICE-001", "description": "ITEM PRUEBAS ICE 2", "rate": "100.00", "unit": null, "quantity": "1.00", "rate_before_discount": "100.00", "discount_percent": "0.0", "discount_value": "0.00", "subtotal": "100.00", "total_tax": "26.50", "total": "126.50", "taxes": [ { "type": "ICE", "name": "ICE Bebidas Gaseosas con Alto Contenido de Azúcar", "code": "3", "percentaje_code": "3053", "rate_before_tax": "100.00", "percentaje_tax": "10.00", "total_tax": "10.00", "rate_after_tax": "110.00" }, { "type": "IVA", "name": "15%", "code": "2", "percentaje_code": "4", "rate_before_tax": "110.00", "percentaje_tax": "15.00", "total_tax": "16.50", "rate_after_tax": "126.50" } ] } ], "taxes": [ { "tax_type": "ICE", "tax_name": "ICE Bebidas Gaseosas con Alto Contenido de Azúcar", "tax_rate": "20.00", "tax_subtotal": "200.00", "tax_code": "3", "tax_code_sri": "3053" }, { "tax_type": "IVA", "tax_name": "15%", "tax_rate": "33.00", "tax_subtotal": "220.00", "tax_code": "2", "tax_code_sri": "4" } ], "payments": [ { "date": "2024-10-27", "amount": "24.00", "method": "SIN UTILIZACIÓN DEL SISTEMA FINANCIERO", "code": "01", "transaction_id": null } ], "aditional_fields": [ { "key": "Telefono", "value": "099999", "type": "sri" } ] }}
Ejemplos de Implementación
Section titled “Ejemplos de Implementación”curl -X PUT "https://dev-facturacion.e-dinky.test/api/v1/documents/1339329970/update" \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -H "Authorization: Bearer {token}" \ -d '{ "id": "1339329970", "sri_code_document": "01", "customer": { "identification_number": "9999999999001", "name": "Final", "lastname": "Consumidor 2", "identification_type": "RUC", "email": "[email protected]", "address": "Guayaquil" }, "document": { "date": "2024-10-24" }, "items": [ { "code": "ICE-001", "description": "ITEM PRUEBAS ICE 2", "rate": 100, "quantity": 1, "subtotal": 100, "total_tax": 26.5, "total": 126.5, "taxes": [ { "code": "3", "percentaje_code": "3053", "percentaje_tax": 10, "total_tax": 10 }, { "code": "2", "percentaje_code": "4", "percentaje_tax": 15, "total_tax": 16.50 } ] } ], "aditional_fields": [ { "key": "Telefono", "value": "099999", "type": "sri" } ]}'
<?php
use Illuminate\Support\Facades\Http;
$documentId = '1339329970';$token = 'your-api-token';
$response = Http::withHeaders([ 'Content-Type' => 'application/json', 'Accept' => 'application/json', 'Authorization' => 'Bearer ' . $token,])->put("https://dev-facturacion.e-dinky.test/api/v1/documents/{$documentId}/update", [ 'id' => '1339329970', 'sri_code_document' => '01', 'customer' => [ 'identification_number' => '9999999999001', 'name' => 'Final', 'lastname' => 'Consumidor 2', 'identification_type' => 'RUC', 'address' => 'Guayaquil' ], 'document' => [ 'date' => '2024-10-24' ], 'items' => [ [ 'code' => 'ICE-001', 'description' => 'ITEM PRUEBAS ICE 2', 'rate' => 100, 'quantity' => 1, 'subtotal' => 100, 'total_tax' => 26.5, 'total' => 126.5, 'taxes' => [ [ 'code' => '3', 'percentaje_code' => '3053', 'percentaje_tax' => 10, 'total_tax' => 10 ], [ 'code' => '2', 'percentaje_code' => '4', 'percentaje_tax' => 15, 'total_tax' => 16.50 ] ] ] ], 'aditional_fields' => [ [ 'key' => 'Telefono', 'value' => '099999', 'type' => 'sri' ] ]]);
if ($response->successful()) { $document = $response->json(); echo "Documento actualizado: " . $document['payload']['id'];} else { echo "Error: " . $response->body();}
const axios = require('axios');
const updateDocument = async () => { const documentId = '1339329970'; const token = 'your-api-token';
const config = { method: 'put', url: `https://dev-facturacion.e-dinky.test/api/v1/documents/${documentId}/update`, headers: { 'Content-Type': 'application/json', 'Accept': 'application/json', 'Authorization': `Bearer ${token}` }, data: { id: '1339329970', sri_code_document: '01', customer: { identification_number: '9999999999001', name: 'Final', lastname: 'Consumidor 2', identification_type: 'RUC', address: 'Guayaquil' }, document: { date: '2024-10-24' }, items: [ { code: 'ICE-001', description: 'ITEM PRUEBAS ICE 2', rate: 100, quantity: 1, subtotal: 100, total_tax: 26.5, total: 126.5, taxes: [ { code: '3', percentaje_code: '3053', percentaje_tax: 10, total_tax: 10 }, { code: '2', percentaje_code: '4', percentaje_tax: 15, total_tax: 16.50 } ] } ], aditional_fields: [ { key: 'Telefono', value: '099999', type: 'sri' } ] } };
try { const response = await axios(config); console.log('Documento actualizado:', response.data.payload.id); return response.data; } catch (error) { console.error('Error:', error.response?.data || error.message); throw error; }};
// UsoupdateDocument() .then(result => console.log('Éxito:', result)) .catch(error => console.error('Error:', error));
Campos Requeridos
Section titled “Campos Requeridos”Documento
Section titled “Documento”id
: ID del documento (debe coincidir con el ID de la URL)sri_code_document
: Código del tipo de documento SRI
Cliente
Section titled “Cliente”identification_number
: Número de identificaciónname
: Nombre del clientelastname
: Apellido del clienteidentification_type
: Tipo de identificación (RUC, CEDULA, PASAPORTE)email
: Correo electrónicoaddress
: Dirección
code
: Código del producto/serviciodescription
: Descripción del itemrate
: Precio unitarioquantity
: Cantidadsubtotal
: Subtotal del itemtotal_tax
: Total de impuestostotal
: Total del itemtaxes
: Array de impuestos aplicados
Impuestos (por item)
Section titled “Impuestos (por item)”code
: Código del impuestopercentaje_code
: Código del porcentajepercentaje_tax
: Porcentaje del impuestototal_tax
: Total del impuesto
Respuestas de Error
Section titled “Respuestas de Error”404 - Documento No Encontrado
Section titled “404 - Documento No Encontrado”{ "message": "Documento 94892482 no encontrado", "status": "ERROR", "payload": null, "error": "Documento 94892482 no encontrado"}
422 - Error de Validación
Section titled “422 - Error de Validación”{ "message": "El ID del documento en la URL no coincide con el ID en el cuerpo de la solicitud", "status": "ERROR", "payload": null, "errors": { "id": ["El ID debe coincidir con el parámetro de la URL"] }}
Validaciones Importantes
Section titled “Validaciones Importantes”- ID Coincidente: El ID en la URL debe coincidir con el ID en el cuerpo de la solicitud
- Estado del Documento: Solo se pueden actualizar documentos en estado
draft
- Autorización: Se requiere token de autenticación válido
- Campos Obligatorios: Todos los campos marcados como requeridos deben estar presentes
- Formato de Datos: Los datos deben cumplir con el formato esperado
Códigos de Error Comunes
Section titled “Códigos de Error Comunes”Código | Descripción |
---|---|
200 | Documento actualizado exitosamente |
401 | Token de autenticación inválido |
404 | Documento no encontrado |
422 | Error de validación en los datos |
500 | Error interno del servidor |
Notas Importantes
Section titled “Notas Importantes”- Solo se pueden actualizar documentos que no hayan sido enviados al SRI
- Los documentos en estado
authorized
osent
no pueden ser modificados - La actualización recalcula automáticamente los totales e impuestos
- Los campos adicionales (
aditional_fields
) son opcionales - Se mantiene el historial de cambios del documento