1.0.239 • Published 19 days ago

facturacionelectronicapy-xmlgen v1.0.239

Weekly downloads
-
License
MIT
Repository
github
Last release
19 days ago

Facturación Electrónica - Generación de XML para la SET (Paraguay)

Módulo NodeJS que genera el archivo XML para enviar a la SET (Subsecretaria de Estado de Tributación del Ministerio de Hacienda) para el proceso y generación del documento electrónico, a partir de una estructura de datos en formato JSON.

Versión del Manual Técnico: 150

Este paquete pretende servir de modelo de transferencia estandarizado para la comunicación con la SET contemplando la totalidad de los campos exigidos para cada bloque y tipos de documentos electrónicos.

El mismo es utilizado y mantenido por el autor y otorgado a la comunidad de desarrolladores de forma gratuita bajo licencia MIT

El módulo está preparado de forma a proveer una fácil integración dentro de su entorno NodeJS y para con cualquier otro lenguaje, sistema o librería que requiera, por ejemplo publicando el médoto desde un REST.

Características

  • Genera el CDC automáticamente de acuerdo a los datos del documento electrónico
  • Implementa el Algoritmo del dígito verificador del CDC
  • Permite sobreescribir el valor del código de seguridad, de acuerdo a las necesidades del implementador
  • Realiza la validación de los datos de entrada conforme el menual técnico de la SET

Instalación

Para instalar el módulo en su proyecto node, ejecute el siguiente comando:

  npm install facturacionelectronicapy-xmlgen

El método requiere 2 argumentos tipo JSON para general el XML. El primero es un argumento params con las informaciones estáticas del Contribuyente emisor, y el segundo es un data con los datos variables para cada documento electrónico a generar.

La promesa devuelve el documento XML con los datos generados.

Ejemplos de Uso:

Javascript:

  const xmlgen = require('facturacionelectronicapy-xmlgen');
  //O const xmlgen = require('facturacionelectronicapy-xmlgen').default;
  
  xmlgen.generateXMLDE(params, data, options).then(xml => {
      console.log(xml);
  }).catch(error => {
      console.log(error);
  });     

TypeScript:

  import xmlgen from 'facturacionelectronicapy-xmlgen';

  xmlgen.generateXMLDE(params, data, options).then(xml => {
      console.log(xml);
  }).catch(error => {
      console.log(error);
  }); 

Ambos parámetros params y data pueden ser proveidos a partir de una vista de base de datos, leyendo datos de un CSV o proceso generado por otro sistema, para lograr una fácil integración

Al final podrá encontrar la estructura completa para el PARAMS y el JSON

Estructura completa del params JSON de Ejemplo

{
  "version" : 150,
  "ruc" : "80069563-1",
  "razonSocial" : "DE generado en ambiente de prueba - sin valor comercial ni fiscal",
  "nombreFantasia" : "TIPS S.A. TECNOLOGIA Y SERVICIOS",
  "actividadesEconomicas" : [{
    "codigo": "1254",
    "descripcion": "Desarrollo de Software",
  }],   
  "timbradoNumero" : "12558946",
  "timbradoFecha" : "2022-08-25",
  "tipoContribuyente" : 2, 
  "tipoRegimen" : 8, 
  "establecimientos" : [{
    "codigo" : "001",
    "direccion" : "Barrio Carolina", 
    "numeroCasa" : "0", 
    "complementoDireccion1" : "Entre calle 2", 
    "complementoDireccion2" : "y Calle 7",
    "departamento" : 11,
    "departamentoDescripcion" : "ALTO PARANA",
    "distrito" : 145,
    "distritoDescripcion" : "CIUDAD DEL ESTE",
    "ciudad" : 3432,
    "ciudadDescripcion" : "PUERTO PTE.STROESSNER (MUNIC)",
    "telefono" : "0973-527155",
    "email" : "tips@tips.com.py, tips@gmail.com",
    "denominacion" : "Sucursal 1",
  }]
}

El campo Email, si bien puede informarse mas de 1 (uno), en el Sifen solamente será enviado el primero

Estructura completa del data JSON de Ejemplo

{
    "tipoDocumento" : 1,
    "establecimiento" : "001",
    "codigoSeguridadAleatorio" : "298398",
    "punto" : "001",
    "numero" : "0000001", 
    "descripcion" : "Aparece en el documento",
    "observacion" : "Cualquier informacion de marketing, publicidad, sorteos, promociones para el Receptor",
    "fecha" : "2022-08-14T10:11:00",
    "tipoEmision" : 1,
    "tipoTransaccion" : 1,
    "tipoImpuesto" : 1,
    "moneda" : "PYG",
    "condicionAnticipo" : 1,
    "condicionTipoCambio": 1,
    "descuentoGlobal": 0,
    "anticipoGlobal": 0,
    "cambio": 6700,
    "cliente" : {
        "contribuyente" : true,
        "ruc" : "2005001-1",
        "razonSocial" : "Marcos Adrian Jara Rodriguez",
        "nombreFantasia" : "Marcos Adrian Jara Rodriguez",
        "tipoOperacion" : 1,
        "direccion" : "Avda Calle Segunda y Proyectada",
        "numeroCasa" : "1515",
        "departamento" : 11,
        "departamentoDescripcion" : "ALTO PARANA",
        "distrito" : 143,
        "distritoDescripcion" : "DOMINGO MARTINEZ DE IRALA",
        "ciudad" : 3344,
        "ciudadDescripcion" : "PASO ITA (INDIGENA)",
        "pais" : "PRY",
        "paisDescripcion" : "Paraguay",
        "tipoContribuyente" : 1,
        "documentoTipo" : 1,
        "documentoNumero" : "2324234",
        "telefono" : "061-575903",
        "celular" : "0973-809103",
        "email" : "cliente@empresa.com, cliente@personal.com",
        "codigo" : "1548"
    },
    "usuario" : {
        "documentoTipo" : 1,
        "documentoNumero" : "157264",
        "nombre" : "Marcos Jara",
        "cargo" : "Vendedor"
    },
    "factura" : {
        "presencia" : 1,
        "fechaEnvio" : "2023-10-21",
        "dncp" : {
            "modalidad" : "ABC",
            "entidad" : 1,
            "año" : 2021,
            "secuencia" : 3377,
            "fecha" : "2022-09-14T10:11:00"
        }
    },
    "autoFactura" : {
        "tipoVendedor" : 1,
        "documentoTipo" : 1,
        "documentoNumero" : 1,
        "nombre" : "Vendedor autofactura",
        "direccion" : "Vendedor autofactura",
        "numeroCasa" : "Vendedor autofactura",
        "departamento" : 11,
        "departamentoDescripcion" : "ALTO PARANA",
        "distrito" : 143,
        "distritoDescripcion" : "DOMINGO MARTINEZ DE IRALA",
        "ciudad" : 3344,
        "ciudadDescripcion" : "PASO ITA (INDIGENA)",
        "transaccion" : {
            "lugar" : "Donde se realiza la transaccion",
            "departamento" : 11,
            "departamentoDescripcion" : "ALTO PARANA",
            "distrito" : 143,
            "distritoDescripcion" : "DOMINGO MARTINEZ DE IRALA",
            "ciudad" : 3344,
            "ciudadDescripcion" : "PASO ITA (INDIGENA)"
        }
    },
    "notaCreditoDebito" : {
        "motivo" : 1
    },
    "remision" : {
        "motivo" : 1,
        "tipoResponsable" : 1, 
        "kms" : 150,
        "fechaFactura" : "2022-08-21"
    },
    "condicion" : {
        "tipo" : 1,
        "entregas" : [{ 
            "tipo" : 1,
            "monto" : "150000",
            "moneda" : "PYG",
            "cambio" : 0
        }, { 
            "tipo" : 3,
            "monto" : "150000",
            "moneda" : "PYG",
            "cambio" : 0,
            "infoTarjeta" : {
                "tipo" : 1,
                "tipoDescripcion" : "Dinelco",
                "titular" : "Marcos Jara",
                "ruc" : "6969549654-1",
                "razonSocial" : "Bancard",
                "medioPago" : 1,
                "codigoAutorizacion" : 232524234
            }
        }, { 
            "tipo" : 2,
            "monto" : "150000",
            "moneda" : "PYG",
            "cambio" : 0,
            "infoCheque" : {
                "numeroCheque": "32323232",
                "banco" : "Sudameris"
            }
        }],
        "credito" : {
            "tipo" : 1,
            "plazo" : "30 días",
            "cuotas" : 2,
            "montoEntrega" : 1500000.00,
            "infoCuotas" : [{
                "moneda" : "PYG",
                "monto" : 800000.00,
                "vencimiento" : "2021-10-30"
            }, {
                "moneda" : "PYG",
                "monto" : 800000.00,
                "vencimiento" : "2021-11-30"
            }]
        }
    },
    "items" : [{
        "codigo" : "A-001",
        "descripcion": "Producto o Servicio", 
        "observacion": "Información adicional o complementaria sobre el producto", 
        "partidaArancelaria" : 4444,
        "ncm": "ABCD1234",
        "unidadMedida": 77,
        "cantidad": 10.5,
        "precioUnitario": 10800,
        "cambio": 0,
        "descuento": 0,
        "anticipo": 0,
        "pais" : "PRY",
        "paisDescripcion" : "Paraguay",
        "tolerancia" : 1,
        "toleranciaCantidad" : 1,
        "toleranciaPorcentaje" : 1,
        "cdcAnticipo" : "44digitos",
        "dncp" : {
            "codigoNivelGeneral" : "12345678",
            "codigoNivelEspecifico" : "1234",
            "codigoGtinProducto" : "12345678",
            "codigoNivelPaquete" : "12345678"
        },
        "ivaTipo" : 1,
        "ivaBase" : 100,
        "iva" : 5,
        "lote" : "A-001",
        "vencimiento" : "2022-10-30",
        "numeroSerie" : "",
        "numeroPedido" : "",
        "numeroSeguimiento" : "",
        "importador" : {
            "nombre" : "Importadora Parana S.A.",
            "direccion" : "Importadora Parana S.A.",
            "registroImportador" : "Importadora Parana S.A."
        },
        "registroSenave" : "323223",
        "registroEntidadComercial" : "RI-32/22",
        "sectorAutomotor" : {
            "tipo" : 1,
            "chasis" : "45252345235423532",
            "color" : "Rojo",
            "potencia" : 1500,
            "capacidadMotor" : 5,
            "capacidadPasajeros" : 5,
            "pesoBruto" : 10000,
            "pesoNeto" : 8000,
            "tipoCombustible" : 9,
            "tipoCombustibleDescripcion" : "Vapor",
            "numeroMotor" : "323234234234234234",
            "capacidadTraccion" : 151.01,
            "año" : 2009,
            "tipoVehiculo" : "Camioneta",
            "cilindradas" : "3500"
        }
    }],
    "sectorEnergiaElectrica" : {
        "numeroMedidor" : "132423424235425",
        "codigoActividad" : 125,
        "codigoCategoria" : "001",
        "lecturaAnterior" : 4,
        "lecturaActual" : 5
    },
    "sectorSeguros" : {
        "codigoAseguradora" : "",
        "codigoPoliza" : "AAAA",
        "numeroPoliza" : "BBBB",
        "vigencia" : 1,
        "vigenciaUnidad" : "año",
        "inicioVigencia" : "2021-10-01",
        "finVigencia" : "2022-10-01",
        "codigoInternoItem" : "A-001"
    },
    "sectorSupermercados" : {
        "nombreCajero" : "Juan Antonio Caceres",
        "efectivo" : 150000,
        "vuelto" : 30000,
        "donacion" : 1000,
        "donacionDescripcion" : "Donado para la caridad"
    },
    "sectorAdicional" : {
        "ciclo" : "Mensualidad",
        "inicioCiclo" : "2021-09-01",
        "finCiclo" : "2021-10-01",
        "vencimientoPago" : "2021-11-01",
        "numeroContrato" : "AF-2541",
        "saldoAnterior" : 1550000
    },
    "detalleTransporte" : {
        "tipo" : 1,
        "modalidad" : 1,
        "tipoResponsable" : 1,
        "condicionNegociacion" : "CFR",
        "numeroManifiesto" : "AF-2541",
        "numeroDespachoImportacion" : "153223232332",
        "inicioEstimadoTranslado" : "2021-11-01",
        "finEstimadoTranslado" : "2021-11-01",
        "paisDestino" : "PRY", 
        "paisDestinoNombre" : "Paraguay",
        "salida" : {
            "direccion" : "Paraguay",
            "numeroCasa" : "Paraguay",
            "complementoDireccion1" : "Entre calle 2", 
            "complementoDireccion2" : "y Calle 7",
            "departamento" : 11,
            "departamentoDescripcion" : "ALTO PARANA",
            "distrito" : 143,
            "distritoDescripcion" : "DOMINGO MARTINEZ DE IRALA",
            "ciudad" : 3344,
            "ciudadDescripcion" : "PASO ITA (INDIGENA)",
            "pais" : "PRY",
            "paisDescripcion" : "Paraguay",
            "telefonoContacto" : "097x"
        },
        "entrega" : {
            "direccion" : "Paraguay",
            "numeroCasa" : "Paraguay",
            "complementoDireccion1" : "Entre calle 2", 
            "complementoDireccion2" : "y Calle 7",
            "departamento" : 11,
            "departamentoDescripcion" : "ALTO PARANA",
            "distrito" : 143,
            "distritoDescripcion" : "DOMINGO MARTINEZ DE IRALA",
            "ciudad" : 3344,
            "ciudadDescripcion" : "PASO ITA (INDIGENA)",
            "pais" : "PRY",
            "paisDescripcion" : "Paraguay",
            "telefonoContacto" : "097x"
        },
        "vehiculo" : {
            "tipo" : 1,
            "marca" : "Nissan",
            "documentoTipo" : 1, 
            "documentoNumero" : "232323-1",
            "obs" : "",
            "numeroMatricula" : "ALTO PARANA",
            "numeroVuelo" : 143
        },
        "transportista" : {
            "contribuyente" : true,
            "nombre" : "Paraguay",
            "ruc" : "80068684-1", 
            "documentoTipo" : 1,
            "documentoNumero" : "99714584",
            "direccion" : "y Calle 7",
            "obs" : 11,
            "pais" : "PRY",
            "paisDescripcion" : "Paraguay",
            "chofer" : {
                "documentoNumero" : "",
                "nombre" : "Jose Benitez",
                "direccion" : "Jose Benitez"
            },
            "agente" : {
                "nombre" : "Jose Benitez",
                "ruc" : "515415-1",
                "direccion" : "Jose Benitez"
            }
        }
    },
    "complementarios" : {
        "ordenCompra" : "",
        "ordenVenta" : "",
        "numeroAsiento" : "",
        "carga" : {
            "ordenCompra" : "",
            "ordenVenta" : "",
            "numeroAsiento" : ""
        }
    },
    "documentoAsociado" : {
        "formato" : 1,
        "cdc" : "01800695631001001000000612021112917595714694",
        "tipo" : 1,
        "timbrado" : "32323",
        "establecimiento" : "001",
        "punto" : "001",
        "numero" : "00278211",
        "fecha" : "2022-09-14",
        "numeroRetencion" : "32323232",
        "resolucionCreditoFiscal" : "32323",
        "constanciaTipo" : 1,
        "constanciaNumero" : 32323,
        "constanciaControl" : "33232323"

    }
}

El email del Cliente, si bien puede enviarse mas de 1 (uno), en SIFEN solamente será enviado el primero.

Eventos

Para la invocación de Eventos de la SET se debe utilizar como primer parámetro, el mismo params utilizado en la Generación de XML.

El segundo parámetro data debe ser pasado en el siguiente formato, dependiendo del evento a ser invocado. A continuación los ejemplos para cada evento.

Evento de Cancelación

{
    "cdc": "01800695631001001000000612021112917595714694",
    "motivo": "Se cancela este CDC"
}

Evento de Inutilización

{
    "tipoDocumento": 1,
    "establecimiento": "001",
    "punto": "001",
    "desde": 10,
    "hasta": 12,
    "motivo": "Se inutiliza la numeración"
}

Evento de Conformidad

{
    "cdc": "01800695631001001000000812021112910953738413",
    "tipoConformidad": 1,
    "fechaRecepcion": "2022-01-31T00:01:01"
}

Evento de Disconformidad

{
    "cdc": "01800695631001001000000812021112910953738413",
    "motivo": "Se informa de una disconformidad"
}

Evento de Desconocimiento

{
    "cdc": "01800695631001003000013712022010619364760029",
    "fechaEmision" : "2022-01-31T00:01:01",
    "fechaRecepcion" : "2022-01-31T00:01:01",
    "tipoReceptor" : 1,
    "nombre": "BRASIL CRESCENCIO",
    "ruc": "50062360-0",
    "documentoTipo": 1,
    "documentoNumero" : "",
    "motivo": "teste"
}

Evento de Notificación

{
    "cdc": "01800695631001003000013712022010619364760029",  
    "fechaEmision" : "2022-01-31T00:01:01",
    "fechaRecepcion" : "2022-01-31T00:01:01",
    "tipoReceptor" : 1,
    "nombre": "BRASIL CRESCENCIO",
    "ruc": "50062360-0",
    "documentoTipo": 1,
    "documentoNumero" : "",
    "totalPYG": 1550000
}

Ejemplos de Uso de invocación de evento de Cancelación:

Javascript:

  const xmlgen = require('facturacionelectronicapy-xmlgen');
  // O const xmlgen = require('facturacionelectronicapy-xmlgen').default;
  
  xmlgen.generateXMLEventoCancelacion(id, params, data).then(xml => {
      console.log(xml);
  }).catch(error => {
      console.log(error);
  });

TypeScript:

  import xmlgen from 'facturacionelectronicapy-xmlgen';

  xmlgen.generateXMLEventoCancelacion(id, params, data).then(xml => {
      console.log(xml);
  }).catch(error => {
      console.log(error);
  }); 

Siendo, los demás eventos disponibles:

generateXMLEventoInutilizacion(id, params, data);

generateXMLEventoConformidad(id, params, data);

generateXMLEventoDisconformidad(id, params, data);

generateXMLEventoDesconocimiento(id, params, data);

generateXMLEventoNotificacion(id, params, data);

Serie Técnica sobre Facturación Electrónica - YouTube

Para más información sobre el proceso que llevó a la generación de éste módulo visite la lista de reproducción "Serie técnica sobre Facturación Electrónica" en el canal de youtube del autor https://www.youtube.com/channel/UC05xmdC5i3Ob7XnYbQDiBTQ

Todos los proyectos

Generación de XML Firma de XML Generación de QR API de la SET Generación KUDE

Empresas que utilizan éstos proyectos

FacturaSend JHF Ingeniería Informática JR Ingeniería y Servicios Datamex Factupar Globe Informatica FZ Sistemas de Gestion


Todos los derechos reservados - 2021

1.0.239

19 days ago

1.0.238

1 month ago

1.0.237

1 month ago

1.0.236

2 months ago

1.0.235

2 months ago

1.0.234

2 months ago

1.0.233

3 months ago

1.0.232

3 months ago

1.0.231

4 months ago

1.0.230

5 months ago

1.0.229

5 months ago

1.0.228

6 months ago

1.0.227

6 months ago

1.0.226

6 months ago

1.0.225

6 months ago

1.0.224

7 months ago

1.0.223

7 months ago

1.0.220

9 months ago

1.0.222

9 months ago

1.0.221

9 months ago

1.0.217

9 months ago

1.0.216

9 months ago

1.0.219

9 months ago

1.0.218

9 months ago

1.0.215

9 months ago

1.0.208

11 months ago

1.0.211

10 months ago

1.0.210

10 months ago

1.0.212

10 months ago

1.0.214

10 months ago

1.0.209

10 months ago

1.0.206

12 months ago

1.0.205

12 months ago

1.0.207

11 months ago

1.0.204

12 months ago

1.0.200

1 year ago

1.0.202

1 year ago

1.0.201

1 year ago

1.0.203

1 year ago

1.0.198

1 year ago

1.0.197

1 year ago

1.0.199

1 year ago

1.0.194

1 year ago

1.0.193

1 year ago

1.0.196

1 year ago

1.0.195

1 year ago

1.0.187

1 year ago

1.0.186

1 year ago

1.0.189

1 year ago

1.0.183

1 year ago

1.0.182

1 year ago

1.0.185

1 year ago

1.0.184

1 year ago

1.0.181

1 year ago

1.0.180

1 year ago

1.0.178

1 year ago

1.0.177

1 year ago

1.0.179

1 year ago

1.0.143

1 year ago

1.0.142

1 year ago

1.0.145

1 year ago

1.0.144

1 year ago

1.0.141

1 year ago

1.0.140

2 years ago

1.0.147

1 year ago

1.0.146

1 year ago

1.0.148

1 year ago

1.0.132

2 years ago

1.0.131

2 years ago

1.0.134

2 years ago

1.0.133

2 years ago

1.0.130

2 years ago

1.0.139

2 years ago

1.0.136

2 years ago

1.0.135

2 years ago

1.0.138

2 years ago

1.0.137

2 years ago

1.0.165

1 year ago

1.0.164

1 year ago

1.0.167

1 year ago

1.0.166

1 year ago

1.0.161

1 year ago

1.0.160

1 year ago

1.0.163

1 year ago

1.0.162

1 year ago

1.0.169

1 year ago

1.0.168

1 year ago

1.0.153

1 year ago

1.0.156

1 year ago

1.0.155

1 year ago

1.0.150

1 year ago

1.0.152

1 year ago

1.0.151

1 year ago

1.0.158

1 year ago

1.0.157

1 year ago

1.0.159

1 year ago

1.0.176

1 year ago

1.0.175

1 year ago

1.0.172

1 year ago

1.0.171

1 year ago

1.0.174

1 year ago

1.0.173

1 year ago

1.0.170

1 year ago

1.0.123

2 years ago

1.0.129

2 years ago

1.0.128

2 years ago

1.0.125

2 years ago

1.0.124

2 years ago

1.0.127

2 years ago

1.0.126

2 years ago

1.0.121

2 years ago

1.0.120

2 years ago

1.0.122

2 years ago

1.0.117

2 years ago

1.0.119

2 years ago

1.0.114

2 years ago

1.0.116

2 years ago

1.0.115

2 years ago

1.0.107

2 years ago

1.0.106

2 years ago

1.0.109

2 years ago

1.0.108

2 years ago

1.0.103

2 years ago

1.0.102

2 years ago

1.0.105

2 years ago

1.0.112

2 years ago

1.0.111

2 years ago

1.0.113

2 years ago

1.0.73

2 years ago

1.0.77

2 years ago

1.0.76

2 years ago

1.0.75

2 years ago

1.0.74

2 years ago

1.0.79

2 years ago

1.0.78

2 years ago

1.0.101

2 years ago

1.0.100

2 years ago

1.0.80

2 years ago

1.0.84

2 years ago

1.0.83

2 years ago

1.0.82

2 years ago

1.0.81

2 years ago

1.0.88

2 years ago

1.0.87

2 years ago

1.0.86

2 years ago

1.0.85

2 years ago

1.0.89

2 years ago

1.0.91

2 years ago

1.0.90

2 years ago

1.0.95

2 years ago

1.0.94

2 years ago

1.0.93

2 years ago

1.0.92

2 years ago

1.0.99

2 years ago

1.0.98

2 years ago

1.0.97

2 years ago

1.0.96

2 years ago

1.0.69

2 years ago

1.0.68

2 years ago

1.0.72

2 years ago

1.0.71

2 years ago

1.0.70

2 years ago

1.0.62

2 years ago

1.0.61

2 years ago

1.0.66

2 years ago

1.0.65

2 years ago

1.0.64

2 years ago

1.0.63

2 years ago

1.0.67

2 years ago

1.0.60

2 years ago

1.0.55

2 years ago

1.0.59

2 years ago

1.0.58

2 years ago

1.0.57

2 years ago

1.0.56

2 years ago

1.0.19

2 years ago

1.0.18

2 years ago

1.0.17

2 years ago

1.0.16

2 years ago

1.0.9

2 years ago

1.0.8

2 years ago

1.0.22

2 years ago

1.0.21

2 years ago

1.0.20

2 years ago

1.0.26

2 years ago

1.0.25

2 years ago

1.0.23

2 years ago

1.0.29

2 years ago

1.0.28

2 years ago

1.0.27

2 years ago

1.0.33

2 years ago

1.0.32

2 years ago

1.0.31

2 years ago

1.0.30

2 years ago

1.0.37

2 years ago

1.0.36

2 years ago

1.0.35

2 years ago

1.0.34

2 years ago

1.0.39

2 years ago

1.0.38

2 years ago

1.0.40

2 years ago

1.0.44

2 years ago

1.0.42

2 years ago

1.0.41

2 years ago

1.0.48

2 years ago

1.0.47

2 years ago

1.0.46

2 years ago

1.0.45

2 years ago

1.0.49

2 years ago

1.0.51

2 years ago

1.0.50

2 years ago

1.0.11

2 years ago

1.0.54

2 years ago

1.0.10

2 years ago

1.0.53

2 years ago

1.0.52

2 years ago

1.0.15

2 years ago

1.0.14

2 years ago

1.0.13

2 years ago

1.0.12

2 years ago

1.0.2

2 years ago

1.0.7

2 years ago

1.0.6

2 years ago

1.0.5

2 years ago

1.0.4

2 years ago

1.0.3

2 years ago

1.0.1

3 years ago

1.0.0

3 years ago

0.0.8

3 years ago

0.0.7

3 years ago

0.0.6

3 years ago

0.0.5

3 years ago

0.0.4

3 years ago

0.0.2

3 years ago

0.0.1

3 years ago