Skip to content

Commit fd357b3

Browse files
authored
Merge pull request #36 from lunasoft/feature/regenerate_pdf
Feature/regenerate pdf
2 parents a8cc5d5 + 2946a30 commit fd357b3

File tree

6 files changed

+157
-2
lines changed

6 files changed

+157
-2
lines changed

README.md

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -803,7 +803,7 @@ public class App {
803803
HashMap<String, String> observaciones = new HashMap<String, String>();
804804
observaciones.put("Observaciones", "Entregar de 9am a 6pm");
805805

806-
//Realizamos la petición de cancelación al servicio.
806+
//Realizamos la petición de generacion al servicio.
807807
PdfResponse response = pdf.getPdf("cfdi33", xmlcontent, observaciones);
808808

809809
System.out.println(response.getStatus());
@@ -816,6 +816,46 @@ public class App {
816816
}
817817
}
818818
```
819+
820+
# Regenerar PDF #
821+
El servicio podrá generar o regenerar un PDF de un CFDI previamente timbrados y podrá guardar o remplazar el archivo PDF para ser visualizado posteriormente desde el portal de Smarter. Puede ser consumido ingresando tu usuario y contraseña así como tambien ingresando solo el token. Este método recibe los siguientes parámetros:
822+
823+
- Url servicios SW(cuando se añaden usuario y contraseña)
824+
- Url Api
825+
- UUID
826+
**Ejemplo de consumo de la librería para la utilización**
827+
```java
828+
import java.nio.file.Files;
829+
import java.nio.file.Paths;
830+
import java.util.HashMap;
831+
import mx.com.sw.services.pdf.Pdf;
832+
import mx.com.sw.services.pdf.responses.PdfResponse;
833+
834+
public class App {
835+
836+
public static void main(String[] args)
837+
{
838+
try
839+
{
840+
//Creamos una instancia de tipo PDF
841+
//A esta le pasamos la Url y el token
842+
Pdf pdf = new Pdf("https://api.test.sw.com.mx", "T2lYQ0t4L0R....ReplaceForRealToken", null, 0);
843+
844+
//Realizamos la petición de regenerar el pdf pasando el UUID del CFDI que queremos regenerar.
845+
PdfResponse response = pdf.regeneratePdf(UUID.fromString("21348cb0-a94a-466c-a8e0-abef7f35a71b"));
846+
847+
//Obtenemos el detalle de la respuesta
848+
System.out.println(response.getStatus());
849+
System.out.println(response.getMessage());
850+
}
851+
catch (Exception e)
852+
{
853+
System.out.println(e);
854+
}
855+
}
856+
}
857+
```
858+
819859
# Reenvio Email #
820860
Este servicio realiza el reenvío de un xml y/o pdf existente mediante su UUID
821861
a través de correo electrónico.

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<modelVersion>4.0.0</modelVersion>
44
<groupId>mx.com.sw</groupId>
55
<artifactId>sdk-java18</artifactId>
6-
<version>0.0.4.1</version>
6+
<version>0.0.5.1</version>
77
<packaging>jar</packaging>
88
<properties>
99
<maven.compiler.source>1.8</maven.compiler.source>

resources/pdfresult.pdf

-4.25 KB
Binary file not shown.

src/main/java/mx/com/sw/services/pdf/Pdf.java

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package mx.com.sw.services.pdf;
22

33
import java.util.Map;
4+
import java.util.UUID;
5+
46
import mx.com.sw.exceptions.ServicesException;
57
import mx.com.sw.helpers.GeneralHelpers;
68
import mx.com.sw.services.pdf.responses.PdfResponse;
@@ -130,4 +132,29 @@ public PdfResponse getPdf(String templateid, String xmlcontent, String logo, Map
130132
return handler.handleException(e);
131133
}
132134
}
135+
/**
136+
* Metodo para el consumo de la regeneracion de PDF
137+
* @param uuid String uuid.
138+
* @return PdfResponse
139+
* @see PdfResponse
140+
*/
141+
public PdfResponse regeneratePdf(UUID uuid){
142+
try {
143+
Map<String, String> headers = getHeaders();
144+
String path = String.format("pdf/v1/api/RegeneratePdf/%s",uuid);
145+
RequestConfig config = GeneralHelpers.setProxyAndTimeOut(getProxy(), getProxyPort());
146+
String urlService = GeneralHelpers.stringEmptyOrNull(getUrlapi()) ? getUrl() : getUrlapi();
147+
PdfResponse response = handler.postHTTPJson(urlService, path ,headers, null, config,
148+
PdfResponse.class);
149+
if(response.getMessage().equals("Solicitud se proceso correctamente.")){
150+
response.setStatus("Success");
151+
}
152+
else{
153+
response.setStatus("Error");
154+
}
155+
return response;
156+
} catch (ServicesException e) {
157+
return handler.handleException(e);
158+
}
159+
}
133160
}

src/main/java/mx/com/sw/services/pdf/PdfService.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
import com.google.gson.GsonBuilder;
55
import java.util.HashMap;
66
import java.util.Map;
7+
import java.util.UUID;
8+
79
import mx.com.sw.exceptions.ServicesException;
810
import mx.com.sw.helpers.GeneralHelpers;
911
import mx.com.sw.services.Services;
@@ -95,4 +97,5 @@ protected String requestPDF(String templateid, String xmlcontent, String logo,
9597

9698
abstract PdfResponse getPdf(String templateid, String xmlcontent, String logo, Map<String, String> extras);
9799

100+
abstract PdfResponse regeneratePdf(UUID uuid);
98101
}

src/test/java/mx/com/sw/services/pdf/PdfTest.java

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
import java.nio.file.Path;
66
import java.nio.file.Paths;
77
import java.util.Base64;
8+
import java.util.UUID;
9+
810
import mx.com.sw.exceptions.ServicesException;
911
import mx.com.sw.helpers.BuildSettings;
1012
import mx.com.sw.services.pdf.responses.PdfResponse;
@@ -203,4 +205,87 @@ private void writePDF(String b64) {
203205
e.printStackTrace();
204206
}
205207
}
208+
209+
//------------------------------------------
210+
//Pruebas unitarias del metodo Regenerar PDF
211+
//-------------------------------------------
212+
/**
213+
* Método de UT consume servicio regenerar PDF, con token.
214+
*/
215+
@Test
216+
public void testRegeneratePdf_Success(){
217+
try {
218+
Pdf pdf = new Pdf(settings.getUrlServicesSW(), settings.getTokenSW(), null, 0);
219+
PdfResponse response = pdf.regeneratePdf(UUID.fromString("5bb78a5c-9fd7-4100-8fac-9b51b585e22f"));
220+
Assertions.assertNotNull(response);
221+
Assertions.assertTrue(!response.getMessage().isEmpty());
222+
Assertions.assertTrue("Success".equalsIgnoreCase(response.getStatus()));
223+
Assertions.assertTrue("Solicitud se proceso correctamente.".equalsIgnoreCase(response.getMessage()));
224+
} catch (ServicesException ex) {
225+
Assertions.assertNotNull(ex);
226+
}
227+
}
228+
/**
229+
* Método de UT consume servicio regenerar PDF, con Usuario y contraseña.
230+
*/
231+
@Test
232+
public void testRegeneratePdf_AuthSuccess(){
233+
try {
234+
Pdf pdf = new Pdf(settings.getUrlSW(), settings.getUrlServicesSW(), settings.getUserSW(),settings.getPasswordSW(), null, 0);
235+
PdfResponse response = pdf.regeneratePdf(UUID.fromString("5bb78a5c-9fd7-4100-8fac-9b51b585e22f"));
236+
Assertions.assertNotNull(response);
237+
Assertions.assertTrue(!response.getMessage().isEmpty());
238+
Assertions.assertTrue("Success".equalsIgnoreCase(response.getStatus()));
239+
Assertions.assertTrue("Solicitud se proceso correctamente.".equalsIgnoreCase(response.getMessage()));
240+
} catch (ServicesException ex) {
241+
Assertions.assertNotNull(ex);
242+
}
243+
}
244+
/**
245+
* Método de UT consume servicio regenerar PDF, error en el usuario.
246+
*/
247+
@Test
248+
public void testRegeneratePdf_ErrorAuth(){
249+
try {
250+
String msgError = "AU2000 - El usuario y/o contraseña son inválidos, no se puede autenticar el servicio.";
251+
Pdf pdf = new Pdf(settings.getUrlSW(), settings.getUrlServicesSW(), "user",settings.getPasswordSW(), null, 0);
252+
PdfResponse response = pdf.regeneratePdf(UUID.fromString("5bb78a5c-9fd7-4100-8fac-9b51b585e22f"));
253+
Assertions.assertNotNull(response);
254+
Assertions.assertTrue(!response.getMessage().isEmpty());
255+
Assertions.assertTrue("Error".equalsIgnoreCase(response.getStatus()));
256+
Assertions.assertTrue(msgError.equalsIgnoreCase(response.getMessage()));
257+
} catch (ServicesException ex) {
258+
Assertions.assertNotNull(ex);
259+
}
260+
}
261+
/**
262+
* Método de UT consume servicio regenerar PDF, Error con el UUID no encontrado.
263+
*/
264+
@Test
265+
public void testRegeneratePdf_ErrorUUIDNull(){
266+
try {
267+
Pdf pdf = new Pdf(settings.getUrlSW(), settings.getUrlServicesSW(), settings.getUserSW(),settings.getPasswordSW(), null, 0);
268+
PdfResponse response = pdf.regeneratePdf(null);
269+
Assertions.assertNotNull(response);
270+
Assertions.assertTrue("Error".equalsIgnoreCase(response.getStatus()));
271+
} catch (ServicesException ex) {
272+
Assertions.assertNotNull(ex);
273+
}
274+
}
275+
/**
276+
* Método de UT consume servicio regenerar PDF, Error con el UUID no encontrado.
277+
*/
278+
@Test
279+
public void testRegeneratePdf_ErrorUUID(){
280+
try {
281+
Pdf pdf = new Pdf(settings.getUrlSW(), settings.getUrlServicesSW(), settings.getUserSW(),settings.getPasswordSW(), null, 0);
282+
PdfResponse response = pdf.regeneratePdf(UUID.fromString("21348cb0-a94a-466c-a8e0-abef7f35a71b"));
283+
Assertions.assertNotNull(response);
284+
Assertions.assertTrue("error".equalsIgnoreCase(response.getStatus()));
285+
Assertions.assertTrue(!response.getMessage().isEmpty());
286+
Assertions.assertTrue("No se encontro el UUID.".equalsIgnoreCase(response.getMessage()));
287+
} catch (ServicesException ex) {
288+
Assertions.assertNotNull(ex);
289+
}
290+
}
206291
}

0 commit comments

Comments
 (0)