Modificar una factura existente
Ejemplo para actualizar una factura con id=90. Prácticamente todos los elementos son opcionales, y solo aquellos que estén presentes en el xml serán actualizados.
Si algún elemento es obligatorio y no existe en el xml, el sistema devolverá un mensaje de error con una pequeña descripción indicando el motivo del error.
curl -u 03334b0a261a2c355ae2db022a963d8e:x -X PUT -H 'Accept: application/xml' -H 'Content-Type: application/xml'
-d "<?xml version='1.0' encoding='UTF-8'?>
<invoice>
<id>90</id>
<draft>false</draft>
<sent>true</sent>
<invoiceLines>
<invoiceLine>
<productCode><![CDATA[T2]]></productCode>
<description><![CDATA[Servicio de transporte urgente europa (hasta 40Kb)]]></description>
<quantity>3.00</quantity>
<unitPrice>25.00</unitPrice>
<totalPrice>75.00</totalPrice>
</invoiceLine>
<invoiceLine>
<productCode><![CDATA[T1]]></productCode>
<description><![CDATA[Servicio de transporte rápido peninsular (hasta 30Kg)]]></description>
<quantity>1.50</quantity>
<unitPrice>10.00</unitPrice>
<discountRate>10.00</discountRate>
<totalPrice>13.50</totalPrice>
<applyTax1>true</applyTax1>
</invoiceLine>
</invoiceLines>
<payments>
<payment>
<id>4</id>
<dueDate>20110401</dueDate>
<referenceNumber><![CDATA[Example A]]></referenceNumber>
<comment><![CDATA[Example Comment A]]></comment>
<paymentMean>02</paymentMean>
<paymentDate>20110430</paymentDate>
<amount>0.93</amount>
</payment>
<payment>
<id>5</id>
<referenceNumber><![CDATA[Example B]]></referenceNumber>
<comment><![CDATA[Example Comment B]]></comment>
<paymentMean>02</paymentMean>
<dueDate>20110501</dueDate>
<paymentDate></paymentDate>
<amount>90.00</amount>
</payment>
</payments>
</invoice>"
https://[ACCOUNT_NAME].facturadirecta.com/api/invoices/90.xml
Cosas a tener en cuenta al modificar una factura
En una modificación de factura, la mayoría de campos son OPCIONALES.
- Si se desean modificar lineas de factura (invoiceLines), siempre es necesario enviar toda la información de todos los invoiceLines de la factura. Ya que la factura para realizar modificaciones en estos datos regenera completamente la estructura.
- Si se desean indicar que una factura pasa de estado borrado a estado definitivo, debe indicarse: <draft>false</draft>. En este momento, si la factura no tiene un número asignado (invoiceNumber), el sistema le asignará automáticamente un número correlativo teniendo en cuenta la serie de la factura.
- Los vencimientos/pagos (payments) deben indicarse con su ID correcto si se desea hacer alguna modificación y es siempre necesario que LA SUMA DE TODOS LOS IMPORTES DE LOS VENCIMIENTOS SUMEN EL TOTAL DE LA FACTURA (en un futuro próximo se incluirá un nuevo atributo en los vencimientos que permita indicar el porcentaje del total de la factura asociado al vencimiento y así evitar tener que calcular el importe final del pago).
- Para indicar el medio de pago (paymentMean) será necesario utilizar los códigos que se muestran en una lista en el siguiente capítulo.