Esempio n. 1
0
def descargar_paquete(self, pk):
    paquete = models.PaqueteDeDescarga.objects.get(pk=pk, activo=True)

    cer_der = paquete.solicitud_de_descarga.empresa.cer.read()
    key_der = paquete.solicitud_de_descarga.empresa.key.read()

    fiel = Fiel(cer_der, key_der,
                paquete.solicitud_de_descarga.empresa.contrasena)

    auth = Autenticacion(fiel)

    token = auth.obtener_token()

    descarga_masiva = DescargaMasiva(fiel)

    result = descarga_masiva.descargar_paquete(
        token, paquete.solicitud_de_descarga.empresa.rfc, paquete.id_paquete)

    paquete.cod_estatus = int(result['cod_estatus'])
    paquete.mensaje = result['mensaje']

    if int(result['cod_estatus']) == 5000:
        zip_file = ContentFile(base64.b64decode(result['paquete_b64']))
        paquete.paqueteb64.save('{}.zip'.format(paquete.id_paquete), zip_file)
        paquete.fecha_descarga = timezone.now()

    paquete.save()

    return True
Esempio n. 2
0
def validateFIELFiles(directory):
    global rfcFromFile, rfc_emisor, rfc_receptor, rfc_solicitante, fiel, FIEL_CER, FIEL_KEY, FIEL_PAS
    numFiles = len(os.listdir(directory))
    for file in os.listdir(directory):
        if file == "datos.txt":
            datostxt = open(directory + '/datos.txt', 'r')
            Lines = datostxt.readlines()
            count = 1
            for line in Lines:
                if line != "\n":
                    if count == 1:
                        rfcFromFile = line.strip()
                        rfc_emisor = rfcFromFile
                        rfc_receptor = rfcFromFile
                        rfc_solicitante = rfcFromFile
                        count += 1
                        continue
                    if count == 2:
                        #Don't strip the line for password, we had a case of "CURP ", which space is needed
                        FIEL_PAS = line
                        break

        if file.endswith('.key'):
            FIEL_KEY = file
            continue
        if file.endswith('.cer'):
            FIEL_CER = file
            continue
    if FIEL_CER != '' and FIEL_KEY != '':
        cer_der = open(directory + '/' + FIEL_CER, 'rb').read()
        key_der = open(directory + '/' + FIEL_KEY, 'rb').read()
        fiel = Fiel(cer_der, key_der, FIEL_PAS)

    return numFiles
Esempio n. 3
0
def verificar_solicitud_descarga(self, pk):
    solicitud = models.SolicitudDeDescarga.objects.get(pk=pk, activo=True)

    if solicitud.estado_solicitud and solicitud.estado_solicitud >= 3:
        return 'Solicitud en estado: {}'.format(
            solicitud.get_estado_solicitud_display())

    cer_der = solicitud.empresa.cer.read()
    key_der = solicitud.empresa.key.read()

    fiel = Fiel(cer_der, key_der, solicitud.empresa.contrasena)

    auth = Autenticacion(fiel)

    token = auth.obtener_token()

    verificador = VerificaSolicitudDescarga(fiel)

    result = verificador.verificar_descarga(token, solicitud.empresa.rfc,
                                            str(solicitud.id_solicitud))

    verificacion = models.VerificacionSolicitudDeDescarga()

    verificacion.solicitud_de_descarga = solicitud

    verificacion.fecha_verificacion = timezone.now()

    verificacion.cod_estatus = int(result['cod_estatus'])

    verificacion.mensaje = result['mensaje']

    verificacion.cod_estatus_solicitud = int(result['codigo_estado_solicitud'])

    verificacion.estado_solicitud = int(result['estado_solicitud'])

    verificacion.numero_cfdis = int(result['numero_cfdis'])

    solicitud.cod_estatus = verificacion.cod_estatus_solicitud

    solicitud.estado_solicitud = verificacion.estado_solicitud

    solicitud.fecha_ultima_verificacion = verificacion.fecha_verificacion

    solicitud.numero_cfdis = verificacion.numero_cfdis

    if solicitud.estado_solicitud == 3:
        solicitud.fecha_resolucion = verificacion.fecha_verificacion

        for paq in result['paquetes']:
            paquete = models.PaqueteDeDescarga()
            paquete.solicitud_de_descarga = solicitud
            paquete.id_paquete = paq
            paquete.save()
            descargar_paquete.delay(paquete.pk)

    verificacion.save()

    solicitud.save()

    return True
Esempio n. 4
0
# -*- coding: utf-8 -*-
from cfdiclient import DescargaMasiva
from cfdiclient import Fiel

FIEL_KEY = 'Claveprivada_FIEL_XAXX010101000_20180918_134149.key'
FIEL_CER = 'XAXX010101000.cer'
FIEL_PAS = '******'
cer_der = open(FIEL_CER, 'rb').read()
key_der = open(FIEL_KEY, 'rb').read()

fiel = Fiel(cer_der, key_der, FIEL_PAS)

descarga = DescargaMasiva(fiel)

token = 'eyJhbG'
rfc_solicitante = 'XAXX010101000'
id_paquete = '2d8bbdf1-c36d-4b51-a57c-c1744acdd89c_01'
result = descarga.descargar_paquete(token, rfc_solicitante, id_paquete)
print(result)
Esempio n. 5
0
    def post(self, request, empresa_pk):
        empresa = get_object_or_404(models.Empresa, pk=empresa_pk, user=self.request.user, activo=True)

        form = forms.SolicitudDeDescargaForm(request.POST)

        if form.is_valid():
            try:
                fecha_inicial = form.cleaned_data['fecha_inicial']
                fecha_final = form.cleaned_data['fecha_final']
                tipo = form.cleaned_data['tipo']
                tipo_solicitud = form.cleaned_data['tipo_solicitud']

                fecha_inicial = datetime.combine(fecha_inicial, datetime.min.time())
                fecha_final = datetime.combine(fecha_final, datetime.max.time())

                rfc_emisor = None
                rfc_receptor = None

                if tipo == 'E':
                    rfc_emisor = empresa.rfc
                elif tipo == 'R':
                    rfc_receptor = empresa.rfc

                cer_der = empresa.cer.read()
                key_der = empresa.key.read()

                fiel = Fiel(cer_der, key_der, empresa.contrasena)

                auth = Autenticacion(fiel)

                token = auth.obtener_token()

                descarga = SolicitaDescarga(fiel)

                result = descarga.solicitar_descarga(
                    token, empresa.rfc, fecha_inicial, fecha_final, rfc_emisor=rfc_emisor,
                    rfc_receptor=rfc_receptor, tipo_solicitud=tipo_solicitud
                )

                solicitud = models.SolicitudDeDescarga()

                solicitud.empresa = empresa

                solicitud.id_solicitud = result['id_solicitud']

                solicitud.fecha_inicial = fecha_inicial

                solicitud.fecha_final = fecha_final

                solicitud.rfc_receptor = rfc_receptor

                solicitud.rfc_emisor = rfc_emisor

                solicitud.tipo_solicitud = tipo_solicitud

                solicitud.cod_estatus = int(result['cod_estatus'])

                solicitud.mensaje = result['mensaje']

                solicitud.save()

                return redirect('descargadorweb:solicitud_de_descarga_detalle', empresa_pk=empresa.pk, pk=solicitud.pk)

            except Exception as e:
                form.add_error(None, str(e))

        return render(request, self.template_name, {'empresa': empresa, 'form': form})