/* Agregue este código a su POM
***** CONTENIDO DEL POM *****
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
// Clase donde se ejecuta el request
<mainClass>Program</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>10</source>
<target>10</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
// Agregar dependencia de UniRest para manejar los request
<dependency>
<groupId>com.konghq</groupId>
<artifactId>unirest-java</artifactId>
<version>3.1.00</version>
</dependency>
// Agregar dependencia de GSON para serializar los objetos de Java a JSON
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.5</version>
</dependency>
</dependencies>
*/
// **** Clase donde se ejecuta el request ****
import com.google.gson.*;
import kong.unirest.*;
/*
* /notes-cr/habilitation/{testSetId}:
* - Enviar una nota crédito en modo habilitación
* - Añada las dependencias de UniRest y GSON a su POM como se muestra en el código de la parte superior
*/
public class Program {
public static void main(String[] args) {
// Crear objeto de nota crédito
JsonObject isvInvoiceNoteCr = new JsonObject();
isvInvoiceNoteCr.addProperty("format", "Estandar");
isvInvoiceNoteCr.addProperty("emailSender", "");
isvInvoiceNoteCr.addProperty("concept", "1");
isvInvoiceNoteCr.addProperty("consecutive", 8);
isvInvoiceNoteCr.addProperty("externalNumber", "54554");
isvInvoiceNoteCr.addProperty("currencyCode", "COP");
isvInvoiceNoteCr.addProperty("currencyRate", 0);
isvInvoiceNoteCr.addProperty("date", "2020-1-20");
isvInvoiceNoteCr.addProperty("dateStart", "2020-1-20");
isvInvoiceNoteCr.addProperty("dateEnd", "2020-1-25");
isvInvoiceNoteCr.addProperty("typeOfOperation", "01");
isvInvoiceNoteCr.addProperty("terms", "");
isvInvoiceNoteCr.addProperty("remark", "");
isvInvoiceNoteCr.addProperty("observation", "");
isvInvoiceNoteCr.addProperty("invoicePrefix", "inv");
isvInvoiceNoteCr.addProperty("invoiceConsecutive", 990004331);
isvInvoiceNoteCr.addProperty("invoiceCufe", "cufe");
isvInvoiceNoteCr.addProperty("invoiceDate", "2020-1-18");
JsonObject branchObj = new JsonObject();
branchObj.addProperty("name", "");
branchObj.addProperty("address", "");
branchObj.addProperty("phone", "");
branchObj.addProperty("countryCode", "");
branchObj.addProperty("countryName", "");
branchObj.addProperty("departmentCode", "");
branchObj.addProperty("departmentName", "");
branchObj.addProperty("cityCode", "");
branchObj.addProperty("cityName", "");
isvInvoiceNoteCr.add("branch", branchObj);
JsonObject resolutionObj = new JsonObject();
resolutionObj.addProperty("resolutionKey", "fc8eac422eba16e22ffd8c6f94b3f40a6e38162c");
resolutionObj.addProperty("resolutionPrefix", "SETP");
resolutionObj.addProperty("resolutionNumber", 18760000001f); // La 'f' indica tipo float
resolutionObj.addProperty("resolutionRangeInitial", 990000000);
resolutionObj.addProperty("resolutionRangeFinal", 995000000);
resolutionObj.addProperty("resolutionValidFrom", "2019-01-19");
resolutionObj.addProperty("resolutionValidUntil", "2030-01-19");
isvInvoiceNoteCr.add("resolution", resolutionObj);
JsonObject customerObj = new JsonObject();
customerObj.addProperty("companyName", "Customer");
customerObj.addProperty("personType", "1");
customerObj.addProperty("regimeType", "04");
customerObj.addProperty("firstName", "Customer");
customerObj.addProperty("lastName", "Customer");
customerObj.addProperty("identification", "000000001");
customerObj.addProperty("digitCheck", "8");
customerObj.addProperty("identificationTypeCode", "13");
customerObj.addProperty("email", "");
customerObj.addProperty("phone", "0000001");
customerObj.addProperty("merchantRegistration", "");
customerObj.addProperty("responsibleFor", "ZZ");
customerObj.addProperty("responsibilities", "R-99-PN");
customerObj.addProperty("economicActivities", "2817;3092");
customerObj.addProperty("billingAddress", "KR con Calle");
customerObj.addProperty("billingCountryName", "Colombia");
customerObj.addProperty("billingCountryCode", "CO");
customerObj.addProperty("billingRegionName", "Cundinamarca");
customerObj.addProperty("billingRegionCode", "25");
customerObj.addProperty("billingCityName", "Chipaque");
customerObj.addProperty("billingCityCode", "25178");
customerObj.addProperty("billingPostalCode", "");
customerObj.addProperty("billingNeighborhood", "");
customerObj.addProperty("billingPhone", "");
customerObj.addProperty("billingContactName", "");
customerObj.addProperty("shippingAddress", "");
customerObj.addProperty("shippingCountryName", "");
customerObj.addProperty("shippingCountryCode", "");
customerObj.addProperty("shippingRegionName", "");
customerObj.addProperty("shippingRegionCode", "");
customerObj.addProperty("shippingCityName", "");
customerObj.addProperty("shippingCityCode", "");
customerObj.addProperty("shippingPostalCode", "");
customerObj.addProperty("shippingNeighborhood", "");
customerObj.addProperty("shippingPhone", "");
customerObj.addProperty("shippingContactName", "");
isvInvoiceNoteCr.add("customer", customerObj);
JsonArray invoiceNoteDetailsArr = new JsonArray();
JsonObject invoiceNoteDetailsObj = new JsonObject();
invoiceNoteDetailsObj.addProperty("standardType", "");
invoiceNoteDetailsObj.addProperty("standardCode", "");
invoiceNoteDetailsObj.addProperty("itemCode", "0001");
invoiceNoteDetailsObj.addProperty("itemName", "Item");
invoiceNoteDetailsObj.addProperty("itemModel", "");
invoiceNoteDetailsObj.addProperty("description", "Item prueba");
invoiceNoteDetailsObj.addProperty("brandName", "");
invoiceNoteDetailsObj.addProperty("itemCodeSupplier", "");
invoiceNoteDetailsObj.addProperty("isPresent", false);
invoiceNoteDetailsObj.addProperty("unitMeasurementCode", "");
invoiceNoteDetailsObj.addProperty("unitMeasurementName", "");
invoiceNoteDetailsObj.addProperty("price", 25);
invoiceNoteDetailsObj.addProperty("quantity", 2);
invoiceNoteDetailsArr.add(invoiceNoteDetailsObj);
JsonArray discountsArr = new JsonArray();
JsonObject discountsObj = new JsonObject();
discountsObj.addProperty("name", "");
discountsObj.addProperty("type", "V");
discountsObj.addProperty("rate", 1);
discountsObj.addProperty("amount", 1);
discountsArr.add(discountsObj);
invoiceNoteDetailsObj.add("discounts", discountsArr);
JsonArray chargesArr = new JsonArray();
JsonObject chargesObj = new JsonObject();
chargesObj.addProperty("name", "");
chargesObj.addProperty("type", "V");
chargesObj.addProperty("rate", 10);
chargesObj.addProperty("amount", 10);
chargesArr.add(chargesObj);
invoiceNoteDetailsObj.add("charges", chargesArr);
JsonArray taxesArr = new JsonArray();
JsonObject taxesObj = new JsonObject();
taxesObj.addProperty("name", "Iva");
taxesObj.addProperty("code", "01");
taxesObj.addProperty("type", "P");
taxesObj.addProperty("rate", 19);
taxesObj.addProperty("amount", 6.46);
taxesArr.add(taxesObj);
invoiceNoteDetailsObj.add("taxes", taxesArr);
JsonArray withholdingsArr = new JsonArray();
JsonObject withholdingsObj = new JsonObject();
withholdingsObj.addProperty("name", "ReteFuente");
withholdingsObj.addProperty("code", "06");
withholdingsObj.addProperty("type", "P");
withholdingsObj.addProperty("rate", 10);
withholdingsObj.addProperty("amount", 3.4);
withholdingsArr.add(withholdingsObj);
invoiceNoteDetailsObj.add("withholdings", withholdingsArr);
JsonObject isvMandanteObj = new JsonObject();
isvMandanteObj.addProperty("name", "Mandante");
isvMandanteObj.addProperty("identification", "0014");
isvMandanteObj.addProperty("digitCheck", "8");
isvMandanteObj.addProperty("identificationTypeCode", "13");
invoiceNoteDetailsObj.add("isvMandante", isvMandanteObj);
isvInvoiceNoteCr.add("invoiceNoteDetails", invoiceNoteDetailsArr);
JsonObject totals = new JsonObject();
totals.addProperty("amount", 68);
totals.addProperty("amount", 68);
totals.addProperty("prepaymentAmount", 0);
isvInvoiceNoteCr.add("totals", totals);
JsonArray isvInvoiceNoteDbDiscountsArr = new JsonArray();
JsonObject isvInvoiceNoteDbDiscountsObj = new JsonObject();
isvInvoiceNoteDbDiscountsObj.addProperty("type", "");
isvInvoiceNoteDbDiscountsObj.addProperty("rate", 0);
isvInvoiceNoteDbDiscountsObj.addProperty("amount", 0);
isvInvoiceNoteDbDiscountsArr.add(isvInvoiceNoteDbDiscountsObj);
isvInvoiceNoteCr.add("discounts", isvInvoiceNoteDbDiscountsArr);
JsonArray isvInvoiceNoteDbChargesArr = new JsonArray();
JsonObject isvInvoiceNoteDbChargesObj = new JsonObject();
isvInvoiceNoteDbChargesObj.addProperty("type", "");
isvInvoiceNoteDbChargesObj.addProperty("rate", 0);
isvInvoiceNoteDbChargesObj.addProperty("amount", 0);
isvInvoiceNoteDbChargesArr.add(isvInvoiceNoteDbChargesObj);
isvInvoiceNoteCr.add("charges", isvInvoiceNoteDbChargesArr);
JsonArray customFieldsArr = new JsonArray();
JsonObject customFieldsObj = new JsonObject();
customFieldsObj.addProperty("666", "invoiceId");
customFieldsArr.add(customFieldsObj);
isvInvoiceNoteCr.add("customFields", customFieldsArr);
/*
* - Realizar request con TestId ejemplo 4bf6673a-7a71-496e-8cfd-f7246067e4ca, cambie este TestId por el que
* usted generó en la DIAN para habilitarse como facturador electrónico, si va realizar pruebas de conexión a
* la API puede realizarlo con el que esta en este ejemplo
* - Realizar request por metodo POST
*/
HttpRequestWithBody request = Unirest.post("https://isv.aliaddo.net/api/v1/public/documents/notes-cr/habilitation/4bf6673a-7a71-496e-8cfd-f7246067e4ca");
// Adicionar cabeceras de autenticación con token Bearer generado en el panel izquierdo
request.header("x-api-key", "{{x-api-key}}");
// Tipo de requerimiento formato json
request.header("content-type", "application/json");
request.header("cache-control", "no-cache");
request.header("accept", "application/json");
// Añadir el objeto de nota crédito
request.body(isvInvoiceNoteCr).asJson()
// Manejar respuesta o error si hay alguno
.ifSuccess(response -> System.out.println("Response: " + "status -> " + response.getStatus() + " Body -> " + response.getBody()))
.ifFailure(response -> {
System.out.println("Oh No! Status " + response.getStatus());
response.getParsingError().ifPresent(e -> {
System.out.println("Parsing Exception: " + e);
System.out.println("Original body: " + e.getOriginalBody());
});
});
}
}