herramientaenvioestupendo 1.0.30 → 1.0.32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -40,7 +40,7 @@
40
40
  "Shell Script.estupendo.executor": "Run",
41
41
  "git-widget-placeholder": "main",
42
42
  "kotlin-language-version-configured": "true",
43
- "last_opened_file_path": "C:/Users/santi/Downloads/Santiago/ESTUPENDO/Herramientas/EstupendoCLI"
43
+ "last_opened_file_path": "C:/Users/santi/Downloads/Santiago/ESTUPENDO/EntregaFirma/FirmadorDocumentos"
44
44
  }
45
45
  }</component>
46
46
  <component name="RunManager">
package/README.md CHANGED
@@ -14,7 +14,7 @@ Para instalar el aplicativo CLI, deben realizar el siguiente procedimiento :
14
14
  ```npm i -g herramientaenvioestupendo```
15
15
 
16
16
  - Luego de esto deben validar la version de la herramienta :
17
- ```estupendo --version```, si esta indica que es la 1.0.30 es la correcta.
17
+ ```estupendo --version```, si esta indica que es la 1.0.32 es la correcta.
18
18
 
19
19
  - Para conocer que opciones tienen de comandos solo deben ingresar en su CMD :
20
20
  ```estupendo --help```
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "herramientaenvioestupendo",
3
- "version": "1.0.30",
3
+ "version": "1.0.32",
4
4
  "private": false,
5
5
  "description": "Proyecto para envio documentos masivos",
6
6
  "keywords": [],
package/src/index.js CHANGED
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
  import { program } from "commander"
3
- import { sendTxt, sendXml, sendAttached } from "./services.js"
3
+ import { sendTxt, sendXml, sendAttached, sendJson } from "./services.js"
4
4
 
5
5
 
6
- program.name("estupendo").version("1.0.30")
6
+ program.name("estupendo").version("1.0.32")
7
7
 
8
8
  program.command("send_xml")
9
9
  .requiredOption("-d, --directory <char>", "Directorio donde se encuentran los documentos XML")
@@ -22,6 +22,12 @@ program.command("send_attached")
22
22
  .option("-p, --prod", "Producción, si no es enviado recibe el api pruebas")
23
23
  .description("Envio masivo attachedPdf")
24
24
  .action(sendAttached)
25
+
26
+ program.command("send_json")
27
+ .requiredOption("-d, --directory <char>", "Directorio donde se encuentran los documentos json nomina")
28
+ .option("-p, --prod", "Producción, si no es enviado recibe el api pruebas")
29
+ .description("Envio masivo json nomina")
30
+ .action(sendJson)
25
31
 
26
32
 
27
33
 
package/src/services.js CHANGED
@@ -214,8 +214,90 @@ const sendAttached = async (options) => {
214
214
  console.log('Los resultados han sido guardados en Output_attached.json');
215
215
  }
216
216
  });
217
+ }
217
218
 
219
+ //envio aumaticos XML
220
+ const sendJson = async (options) => {
221
+ if (!fs.existsSync(options.directory)) {
222
+ console.error("La carpeta no existe")
223
+ return
224
+ }
225
+ const archivos = fs.readdirSync(options.directory)
226
+ const pattern = /.json$/
227
+ const txts = archivos.filter(archivo => pattern.test(archivo))
228
+ let urlBase = "https://pruebas.estupendo.com.co/api"
229
+ if (options.prod) {
230
+ urlBase = "https://app.estupendo.com.co/api"
231
+ }
232
+ const urlApiConsulta = `${urlBase}/CYP/consultarEstadoDocumento`;
233
+ const urlApi = `${urlBase}/CYP/nomina`;
234
+ const output = [];
235
+ const pdfDir = path.join(process.cwd(), "pdfs");
236
+ const xmlDir = path.join(process.cwd(), "xmls");
237
+ const procesadosDir = path.join(process.cwd(), "procesados");
218
238
 
239
+ // Crear carpetas si no existen
240
+ if (!fs.existsSync(pdfDir)) fs.mkdirSync(pdfDir);
241
+ if (!fs.existsSync(xmlDir)) fs.mkdirSync(xmlDir);
242
+ if (!fs.existsSync(procesadosDir)) fs.mkdirSync(procesadosDir);
243
+ console.log("Procesando...")
244
+ for (let archivo of txts) {
245
+ const name = path.join(options.directory, archivo)
246
+ const content = fs.readFileSync(name, { encoding: "utf-8" })
247
+ console.log(`Procesando Archivo: ${archivo}`);
248
+
249
+ try {
250
+ const data =await request(urlApi, content)
251
+ console.log(data)
252
+ if (data.status === "ok" ) {
253
+ console.log(urlApiConsulta)
254
+
255
+ const urlConSufijo = `${urlApiConsulta}/${data.numeral}`;
256
+ const dataconsult =await request(urlConSufijo, {nit: "891400754", tipo_documento: "102"})
257
+ console.log(dataconsult)
258
+
259
+ if (dataconsult.estado === 2) {
260
+ const pdfUrl = dataconsult.pdf;
261
+ const pdfPath = path.join(pdfDir, `${data.numeral}.pdf`);
262
+ try {
263
+ const response = await axios.get(pdfUrl, { responseType: 'arraybuffer' });
264
+ fs.writeFileSync(pdfPath, response.data);
265
+ console.log(`PDF guardado: ${pdfPath}`);
266
+ } catch (error) {
267
+ console.error(`Error descargando PDF de ${data.documento_id}:`, error.message);
268
+ }
269
+
270
+ const xmlUrl = dataconsult.xml;
271
+ const xmlPath = path.join(xmlDir, `${data.documento_id}.xml`);
272
+ try {
273
+ const response = await axios.get(xmlUrl, { responseType: 'arraybuffer' });
274
+ fs.writeFileSync(xmlPath, response.data);
275
+ console.log(`XML guardado: ${xmlPath}`);
276
+ } catch (error) {
277
+ console.error(`Error descargando XML de ${data.documento_id}:`, error.message);
278
+ }
279
+
280
+ // Mover archivo .txt a carpeta "procesados"
281
+ const destino = path.join(procesadosDir, archivo);
282
+ fs.renameSync(name, destino);
283
+ console.log(`Archivo movido a: ${destino}`);
284
+ }
285
+
286
+ } else {
287
+ console.log(`Documento no autorizado o con estado diferente de 2. Archivo: ${archivo}`);
288
+ }
289
+ output.push(data)
290
+ } catch (error) {
291
+ console.error(`Error al procesar el archivo ${archivo}:`, error);
292
+ }
293
+
294
+
295
+ }
296
+ const now = new Date();
297
+ const fecha = now.toISOString().slice(0, 19).replace("T", "_").replace(/:/g, "-");
298
+ const filenameDate = `Output_txt_${fecha}.json`;
299
+ const ruta = path.join(process.cwd(), filenameDate)
300
+ fs.appendFile(ruta, JSON.stringify(output, null, 4), () => { })
219
301
  }
220
302
 
221
- export { sendTxt, sendXml, sendAttached }
303
+ export { sendTxt, sendXml, sendAttached, sendJson }