LinuxCabal / admin-cfdi

Administrador de CFDIs / Proyecto de colaboración con PythonCabal
https://facturalibre.net/servicios/
34 stars 39 forks source link

Cuando el folio trae letras se cicla #14

Closed mr-E closed 9 years ago

mr-E commented 9 years ago

Hoy me encontre un comprobante que trae letras en el folio. Debido a que necesitamos el folio para buscar el archivo para otros procesos posteriores, tuve que modificar el código de esta manera en pyutil.py funcion get_name: Hace poco vi un comprobante que en el campo "Moneda" signos "M/N" lo cual haria fallar la plantilla que use el campo "Moneda".

    def get_name(self, path, PRE, format1='', format2=''):
        xml = ET.parse(path).getroot()
        data = xml.attrib.copy()
        del data['sello']
        del data['certificado']
        pre = PRE[data['version']]
        if not 'serie' in data:
            data['serie'] = ''
        data['fecha'] = data['fecha'].partition('T')[0]
        # mrE, plantilla a usar: {emisor_rfc}_{tipoDeComprobante}_{fecha}_{uuid}_{serie}{folio}-{Moneda}
        if not 'Moneda' in data:
            data['Moneda'] = 'MXN'
        else:
            data['Moneda'] = data['Moneda'].replace('/', '')
        #
        if 'folio' in data:
            try:
                data['folio'] = int(data['folio'])
            except:
                 # MrE - bug, cuando trae letras en el folio, ej. Z8256 se cicla
                 # se podría dejar en cero
                 # data['folio'] = 0
                 # queda en texto, para poder buscar el archivo por serie+folio
                data['folio'] = data['folio']
        else:
            data['folio'] = 0
ghost commented 9 years ago

Puedes deberías de rechazarlo, del Anexo 20

Folio Descripción Atributo opcional para control interno del contribuyente que acepta un valor numérico entero superior a 0 que expresa el folio del comprobante.

El problema con el SAT, es que obliga a los partners a aceptar CFDI técnicamente válidos, que pueden ser fiscalmente inválidos. Este es un dato opcional, pero me parece un error del emisor, totalmente.

mr-E commented 9 years ago

Totalmente de acuerdo.

Si hubieramos detectado antes de pagar podriamos detener el pago hasta recibir la corrección. :'(

Otro ejemplo, nos llego un comprobante hace 15 dias del que solo pagamos IVA, y el emisor hizo una locura con los impuestos, paso el IVA trasladado al total de retenciones:

<cfdi:Impuestos totalImpuestosRetenidos="1234.00000">
    <cfdi:Traslados>
      <cfdi:Traslado impuesto="IVA" importe="1234" tasa="16.00000" />
    </cfdi:Traslados>
  </cfdi:Impuestos> 

Total, ahora estoy batallando para que "nos hagan el favor" de enviar la corrección.

ghost commented 9 years ago

Te muestro un ejemplo que acado de recibir:

nombre="HOMERO JAVIER PEREZ PEREZ TEL.12345678  PERSONA FISICA CON ACTIVIDAD EMPRESARIAL.  CENTRO DE DISTRIBUCION DE TABLAROCA, DUROCK, ACABADOS."

He cambiado los datos reales para no balconear a nadie, pero la flojera de los programadores de separar los datos correctamente y de los emisores de no revisar bien sus datos

Deberíamos de hacer una lista de como NO debe hacerse

Saludos

mr-E commented 9 years ago

Ese ejemplo esta para llorar. Estaba por escribir puras quejas y algo constructivo, pero mejor en otra oportunidad y lugar :) no quiero abusar de GitHub y de tu atención. Gracias!

mimex commented 9 years ago

Estoy de acuerdo en que los CFDs fiscalmente inválidos se rechacen pero creo que la aplicación no debe colgarse y menos sin enviar antes una notificación.

Si les parece bien, puedo reabrir el issue y trabajar en un hotfix basándome en la solución que propuso @mr-E.

mr-E commented 9 years ago

Por cierto, que en donde lo usamos lo deje como "texto" y ademas le añado una cadena que diga "_error" para asi saber que le pusieron (mmh como decirlo) "burradas" en el folio.

ghost commented 9 years ago

Solo para precisar... NO se hace ningúna validación fiscal... estas son "harto" complicadas por la cantidad de variantes que puede tener un contribuyente, solo se hacen validaciones técnicas.

ghost commented 9 years ago

Me dio curiosidad este tema, hice una prueba de timbrado usando letras en el folio, esta es la respuesta del PAC.

┌─[elmau][mau]->{~/Documents/test/cfdi-test}
└──> python3 solo_timbrar.py fac_test.xml
16/03/2015 11:53:17-CFDI-INFO - Transaccion ID: 1426528397
16/03/2015 11:53:19-CFDI-DEBUG - Error en el campo folio, no es un valor númerico entero

Que es lo correcto, el trabajo del PAC, es rechazar las facturas técnicamente inválidas.

ghost commented 9 years ago

Arreglado en #60