Giter VIP home page Giter VIP logo

admin-cfdi's Introduction

admin-cfdi

Autores:Ver archivo contributors.txt
Fecha:07/12/2015
Ultima Versión:0.3.0

Descripción

Administrador de CFDIs / Proyecto de colaboración con PythonCabal

Pequeño sistema para administrar CFDIs; facturas electrónicas de México. Entre sus funcionalidades están:

  • Descarga facturas del SAT, tanto emitidas como recibidas.
  • Descarga facturas de correos electrónicos.
  • Organiza las facturas en carpetas y las puede renombrar.
  • Valida las facturas en el SAT y valida los sellos.
  • Generar los PDF de las facturas.
  • Reportea directamente de las facturas.

Requerimientos

  • Python 3.2+
  • Tk si usas Linux. Si usas Windows, ya lo integra Python.
  • Firefox para la automatización de la descarga del SAT.
  • Selenium para la automatización de la descarga del SAT.
  • PyGubu para la interfaz gráfica.
  • LibreOffice si usas la plantilla ODS.
  • Extensiones win32 para Python si usas Windows.

Instalación

Si tienes instalado correctamente Python 3.2+, puedes instalar con Pip.

GNU & LInux

sudo python setup.py install
admin-cfdi

Linux Mint

sudo apt-get install python3-pip python3-tk
sudo python setup.py install
admin-cfdi

Windows

Si usas Windows, asegúrate de abrir el script con el ejecutable pythonw.exe localizado en la carpeta de instalación de Python.

python setup.py install

Ligas

Mauricio Baeza
https://github.com/mauriciobaeza
PythonCabal
http://wiki.cabal.mx/wiki/PythonCabal

admin-cfdi's People

Contributors

arksega avatar jjlopez avatar mimex avatar mr-e avatar pixelead0 avatar ppaez avatar renich avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

admin-cfdi's Issues

Tengo problemas para descargar las facturas del SAT

Hola,

Tengo problemas para descargar las facturas del SAT.

Hasta antes de las actualizaciones de firefox funcionaba bien la opcion de descargar facturas recibidas y emitidas.

Con la ultima actualización de firefox v46.0.1 cuando le doy en descargar abre el navegador con una pagina en blanco, es decir no abre ninguna url y en el programa se queda la leyenda 'Abriendo Firefox'

He intentado debugear, pero no se en donde empezar.

Linux Mint 17.2
Firefox 46.0.1
Selenium 2.48.0

Saludos

Descargar xml mediante peticiones HTTP

Hola a todos.

Desde hace un par de semanas he estado trabajando en una librería para descargar los xml del servicio del SAT mediante peticiones HTTP utilizando Requests(http://docs.python-requests.org/en/latest/), pensando en que se pueda integrar a admin-cfdi esta nueva funcionalidad.

El estado actual del desarrollo es que ya se puede realizar la descarga de los CFDI filtrando por fecha.

La dirección del repositorio es la siguiente:
https://github.com/jjlopez/descargar-cfdi

Cualquier sugerencia es bienvenida.

¡Saludos a todos!

Encriptar archivo de credenciales

Python no es a prueba de "crackers" cuando se tiene acceso al código. Y no es bueno tener una falsa sensación de seguridad, pero las credenciales en texto plano son 0% seguras.

Admin-cfdi podría soportar dos opciones, con ambas encriptar las credenciales:
a) Usar una llave automatica (archivo)
b) Usar una llave manual (contraseña)

a) Admin-cfdi podría generar una "llave" al ser instalado y usar esta para encriptar-desencriptar las credenciales.

Si se borra la "llave" ¿como proceder? (solo 1de 2):

  1. Generar la misma "llave" siempre, asi se pueden seguir usando las credenciales.
  2. Generar una "llave" nueva pero borrando las credenciales almacenadas (avisando al usuario) y claro se deben de recapturar y volver a configurar cada una de las credenciales.

b) Pedir que el usuario tecleé una llave maestra. Se puede usar como parametro para efectos de automatizar la descarga. El uso de la llave manual de manera visible no es tan malo que ver las credenciales en texto plano, claro que el usuario-avanzado puede imprimir las credenciales desencriptadas desde el código.

Recomendación cambiar la clave de las credenciales periodicamente y más cuando se tiene rotación de personal.

ImportError: DLL load failed

Hola,

Tratando de correr Admin-CFDI, recibo el error:
C:\AdminCFDI_v0.2.2>pythonw admincfdi.py

C:\AdminCFDI_v0.2.2>python admincfdi.py
Traceback (most recent call last):
File "admincfdi.py", line 17, in
from pyutil import Util
File "C:\AdminCFDI_v0.2.2\pyutil.py", line 47, in
from win32com.client import Dispatch
File "C:\Users\gabriela\AppData\Local\Programs\Python\Python35\lib\site-packages\win32com__init__.py", line 5, in
import win32api, sys, os
ImportError: DLL load failed: %1 no es una aplicación Win32 válida.

Mi entorno es:
Admin-CFDI v0.2.2
Windows 10 64bits
Python 3.5 (x64)

Al intentar con pythonw.exe, como lo recomiendan bajo Windows, no realiza ninguna acción, por eso intenté con python.exe, también me parece que recomiendan la versión 3.4 de python, pero quise hacer pruebas con mi versión actual de python.

Éste error tiene que ver con el requerimiento de la versión de python?, también instalé:
pip install selenium pygubu / pywin32-219.win32-py3.5.

Qué puedo revisar?.

Gracias.

Saludos,
Javier

Cuando el folio trae letras se cicla

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

Descargar el mes completo

Hola tengo una problema al querer descargar el mes completo de abril, no se si requiero tener alguna versión de java o ya es una limitante que se puso, saludos.

Validar nombres de campos en reporte

Durante la reunión del miércoles ingresamos por error el nombre del campo UUID en minúsculas en el apartado de reportes, generando con esto que la interfaz gráfica quedara ciclada;

{uuid}|{fecha}|{serie}{folio}|{emisor_nombre}|{emisor_rfc}|{receptor_nombre}|{receptor_rfc}|{subTotal}|{traslado_iva_16}|{total}

La salida de la terminal es la siguiente;

ERROR:pygubu.builderobject:Failed to set property 'from_' on class '<class 'tkinter.Spinbox'>'. TclError: -to value must be greater than -from value
Exception in Tkinter callback
Traceback (most recent call last):
  File "/usr/lib/python3.4/tkinter/__init__.py", line 1490, in __call__
    return self.func(*args)
  File "admincfdi.py", line 1525, in button_generate_report_click
    line_csv = self._make_report(f, data)
  File "admincfdi.py", line 1537, in _make_report
    return self.util.get_info_report(path, data, self.g)
  File "/home/fipasoft/dev/admin-cfdi/pyutil.py", line 618, in get_info_report
    info = options['fields_report'].format(**data).split('|')
KeyError: 'uuid'

Considero que además de validar los nombres de los campos podríamos agregar a la interfaz un select multiple para establecer orden y aparición de los campos.

no descarga documentos sat

Hola Mauricio , estuve revisando tu desarrollo y funciona perfectamente, pero hace unos días dejo de descargar documentos , sabes si cambiaron algo en sat?

Para que funcione en python 3.2

Buen día, los requerimientos son python 3.4, pero en "ubuntu" tengo python 3.2.
Para hacer que funcione es necesario modificar el archivo "pyutil.py":

En la lineas

1371:data += u’\n\nAlumno: %s\nCURP: %s’ % (
1373:data += u’\nAcuerdo de incorporación ante la SEP %s %s’ % (

eliminar la "u", quedando así:

1371: data += ‘\n\nAlumno: %s\nCURP: %s’ % (
1373: data += ‘\nAcuerdo de incorporación ante la SEP %s %s’ % (

En el mismo archivo, python 3.2 falla en la línea #28, la comenté y cambie por:

#from subprocess import DEVNULL
from subprocess import Popen, PIPE, STDOUT
try:
from subprocess import DEVNULL # py3k
except ImportError:
import os
DEVNULL = open(os.devnull, 'wb')

Saludos!

No funciona en ArchLinux

Después de la ultima actualizacion de Firefox en ArchLinux, Admin-CFDI dejo de funcionar. Abre el navegador, pero se queda en la página de Firefox cuando actualiza y ni siquiera a la página de inicio accede. ¿Alguien puede confirmar?

Gracias

Rama developer aplicación "no responde"

Por fin logré entender y hacer funcionar la nueva rama developer.
Estoy en windows 8.1 32 bits (virtualbox)

Prueba: Descargar por "RFC" las facturas recibidas en 2014/07 (todo el mes).
La aplicación inicia Firefox y descarga correctamente (espero) los xml encontrados.

Problema #1: La aplicación principal deja de responder y por lo mismo no se ven los mensajes en la aplicación.

Este efecto #1: ¿Es intencional? : Descarga el xml y deja archivos de la forma:

xxxxx-yyyy-zzzz-4444-95EF72D1234.xml:Zone.Identifier

Con el contenido:

[ZoneTransfer]
ZoneId=3

** Nota: Este w8.1 de pruebas esta en VirtualBox y desde este descargo a una carpeta compartida en un disco externo conectado a un host ubuntu 12.04, la carpeta es un enlace simbolico y lo comparto a equipo virtual desde ubuntu. Todo para poder llevar el disco y el almacen desde trabajo/hogar, fue lo mejor que se me ocurrio, sin usar algun servicio como dropbox, etc.

(no logro anexar la imagen)

Mejora: resumen descargados y no descargados

A partir de que el SAT impide la descarga de los CFDi cancelados ha sido un poco complicado darle seguimiento a si es falla o no el ver "n CFDis" y que luego algunos no se descarguen.

Esta idea es "prestada" de otro lugar:
Generar un archivo resumen al terminar la descarga por "día" indicando:

__ comprobantes encontrados
__ no descargados
uuid1
uuid2
uuid..n

Al final colocar los UUIDs de los comprobantes no descargados.
El archivo podría grabarse con el nombre:

YYYYMMDD_yyyymmdd_hhmmss.log
donde:
YYYYMMDD = fecha del día descargado
yyyymmdd_hhmmss = fecha y hora actual del equipo

Con esto podríamos comparar y verificar si se descargo "X" dia y si estuvo completo o no, y si luego alguien intenta descargar de nuevo (a veces es necesario repetirlo, por fallas o cuanta situación que hemos visto) y así podemos darle seguimiento al día problematico.
Saludos

Selección de un día, se desconecta sin descargar cuando hay comprobantes.

Al seleccionar un día con comprobantes, la aplicación abre Firefox e inicia sesión, localiza el día, muestra los comprobantes, al iniciar la descarga (a veces no se observa) de manera automatica vuelve a buscar el día y hace click en buscar, lo que ocasiona que se cierre la sesión y aparece ciclado el mensaje "Desconectando"

Coloque unos mensajes 'msg_user' despues de cada "click" para ver en que momento despues de comenzar a descargar hacia la segunda busqueda del día y veo que en la línea #501 hay un aviso de Bug del SAT, para desactivarlo lo comenté hasta antes del try.

admincfdi.py:

            # Bug del SAT - MrE - se esta desconectado al correr este código.
            '''
            if data['type_invoice'] != 1 and data['search_day'] != '00':
                combo = browser.find_element_by_id(self.g.SAT['day'])
                sb = combo.get_attribute('sb')
                combo = browser.find_element_by_id(
                    'sbToggle_{}'.format(sb))
                combo.click()
                self._set('msg_user', 'DEBUG 9...', True)
                self.util.sleep(2)
                if data['search_month'] == data['search_day']:
                    links = browser.find_elements_by_link_text(
                        data['search_day'])
                    for l in links:
                        p = l.find_element_by_xpath(
                            '..').find_element_by_xpath('..')
                        sb2 = p.get_attribute('id')
                        if sb in sb2:
                            link = l
                            break
                else:
                    link = browser.find_element_by_link_text(
                        data['search_day'])
                link.click()
                self._set('msg_user', 'DEBUG 10...', True)
                self.util.sleep(2)
                browser.find_element_by_id(self.g.SAT['submit']).click()
                self.util.sleep(sec)
            elif data['type_invoice'] == 2 and data['sat_month']:
                return self._download_sat_month(data, browser)
            '''
            try:

Con esto logré descargar todas las del día, pero no estoy seguro que sea correcto desactivar ese bloque de código, quizás algo dentro del Bug debe de correrse para que funcione correctamente al terminar.

Quizás el SAT quito su "BUG" y esto ahora genera el problema.

Plantilla ejemplo para renombrar XML organizados

Quiero usar una plantilla como la siguiente para organizar mejor mis archivos:
{emisor_rfc}{fecha}{uuid}_{serie}{folio}

Pero el resultado es muy distinto a lo esperado, me quedan nombres como:
001304_2015-01-12_EJE87052MPLO.xml
CLJ123491161_2015-01-28_EJE87052MPLO.xml
CLJ123491191_2015-01-28_EJE87052MPLO.xml

¿Como debe ser la plantilla para que resulte algo asi?:
CLJ123491161_2015-01-28_40xxx1x-2360-2x6x-9x17-4xx3881558xx_ABC1234xml

Saludos y gracias por la herramienta.

Documentación

Es necesario tener documentación del proyecto.

Necesitamos:

  • Documentación técnica para development.
  • Documentación técnica para documentar.
  • Documentación para colaboradores de diferentes tipos (técnicos, administrativos, promotores, etc.)
  • Lineamientos (no reglas).
  • Guía de estilo de codificación.

Elemento total en CFDI sin punto decimal

cfdi2pdf da un error si el valor del elemento total no tiene punto decimal. ¿Es requisito en los CFDI que este valor tenga punto decimal? Uno de los CFDI con los que hice las pruebas trae subTotal="0", total="0", valorUnitario="0" e importe="0". Si cambio a total="0.0", el error ya no ocurre. Parece que el que los otros elementos no tengan decimales no afecta, es solo en total donde se examina cuántos decimales tiene. El traceback es:

Generando: ../cfdi-descarga/BD73CA92-2684-4672-A782-D4D76A41F0D4.xml
Traceback (most recent call last):
  File "./cfdi2pdf", line 56, in <module>
    main()
  File "./cfdi2pdf", line 50, in main
    pdf = CSVPDF(f, args.plantilla)
  File "/home/pp/admin-cfdi/admincfdi/pyutil.py", line 2073, in __init__
    decimales = len(self.xml.attrib['total'].split('.')[1])
IndexError: list index out of range

No descarga mes completo

Estoy tratando de descargar un mes y en lugar de descargar las 29 facturas del mes, solo descarga 24.

Script admin-cfdi en Windows no se puede relacionar a pythonw.exe

En Windows, para poder relacionar un archivo para apertura con un programa, el archivo debe tener una extensión, el archivo admin-cfdi no la tiene, por lo tanto no se puede relacionar con el ejecutable pythonw.exe para abrirse y poder dejar un acceso directo para el usuario final.

¿fallo con version 36 de firefox?

Se me actualizo Firefox a la versión 36 la semana pasada.

Y me comentan que desde el sabado no funciona la aplicación, abre firefox pero no se ve que intente logearse. Ya lo comprobe en mi equipo tengo todo el dpia intentando cada hora aprox.

¿Alguien puede corroborar esta falla o solo es de nuestro lado?
¿Quizas cambio la url donde se debe de logear el contribuyente?

Error al renombrar xml al usar plantilla

en la versión 0.3.0 utilizando linux mint.

aparece el siguiente error en la terminal:
fdi/pyutil.py", line 587, in get_name
name = format1.format(**data)
ValueError: Unknown format code 'd' for object of type 'str'

Esto solo sucede al usar la opción renombrar usar plantilla.

Gracias.

Separar las funciones de descarga

Para el punto 1. de la reunión de 2015-02-25, se propone agregar en pyutil.py una nueva clase que incluya las dos funciones download_sat() y download_sat_month() existentes en admin-cfdi.py:

class DescargaSAT(object):

    def __init__(self, data, progress_callback=print):
        ...

    def download_sat(self):
        ...

    def download_sat_month(self):
        ...

Un script utilizaría la descarga así:

descarga = pyutil.DescargaSAT(data)
descarga.download_sat()

Los textos de avance irán a stdout del script. Opcionalmente el script puede usar progress_callback para anotar el tiempo de cada avance y obtener métricas.

admin-cfdi.py la usaría con el segundo parámetro, para que los textos de avance aparezcan en la interfase gráfica como lo hacen ahora:

class Application(pygubu.TkApplication):
    ...

    def msg_user(self, msg):
        self._set('msg_user', msg, True)

    def button_download_sat_click(self):
       ...
       descarga = pyutil.DescargaSAT(data, progress_callback=msg_user)
       descarga.download_sat()

¿Tienen alguna sugerencia, qué más hay que incluir o algo a modificar? Una vez de acuerdo con la definición, lo que sigue será:

  1. Crear pruebas unitarias e,implementar
  2. Crear una o más pruebas funcionales
  3. Usar en admin-cfdi.py y remover las funciones ya existentes
  4. Probar explicit waits y otras mejoras, comparando las métricas obtenidas de pruebas mediante script.

Ejemplo de "Campos"

Mientras se ponen de acuerdo en la documentación, a mi me gustaría saber que es lo que se pone en Campos en la sección de Usuarios y reportes de la pestaña Reporte y validación.

Con un ejemplo es más que suficiente.

Instalación en ambiente virtual falla

Se creó un ambiente virtual de Python 3.3 en Fedora 20, Se instalaron pygubu, selenium y uno. Al ejecutar admin-cfdi.py da este mensaje:

(pyenv3) pp@g6:~/admin-cfdi$ python admincfdi.py 
Traceback (most recent call last):
  File "admincfdi.py", line 17, in <module>
    from pyutil import Util
  File "/home/pp/admin-cfdi/pyutil.py", line 49, in <module>
    import uno
  File "/home/pp/admin-cfdi/pyenv3/lib/python3.3/site-packages/uno/__init__.py", line 4, in <module>
    from base import Element, Css, Payload, UnoBaseFeature, UnoBaseField
ImportError: No module named 'base

Opción de que archivos de salida no sean solo pdf sino también ods

Si necesitara crear el archivo ods para una factura, no el pdf. Hay alguna clase que lo haga.

He estado revisando el código pero no logro dar como. hacerlo.

He visto que tienen una clase que hace los reportes pero no parece ser la adecuada.
Gracias de antemano.
Saludos

Generar un logo, poster y slogan del proyecto

Se discutió en la reunión de hoy (abril 22, 2015) la generacióñ de un logo, el slogan y un poster del proyecto para darle mayor difusión a usuarios e invitar a colaboradores (programar, documentar, correr pruebas, etc.).

Informacion para entregar a diseñador(a):

1. Nombre del programa; admin-cfdi

2. Frases que describen el programa:

      - Descarga, organiza y valida tus facturas electronicas
      - Proveer las herramientas para la administración de CFDIs en México

3. Frases para el poster o invitacion a colaborar

      - Cambiando la forma en que las personas en México administran sus CFDIs
      - Mejora tus habilidades de programacion en Python
      - Aprende a trabajar en equipo usando herramientas de control de versiones como Git
      - Participa en un proyecto de software libre local
        Mejorando la colaboración de proyectos de software libre local

4. Capturas de pantalla

5. Video donde se demuestra el funcionamiento del programa

6. Propuestas de Slogan

     - Cambiando la forma de manejar tus facturas electrónicas

La idea es agregar ideas de todos, y una vez definidos los entregables, invitar a un(a) diseñador(a) a ayudarnos en la realización.

Usabilidad de descarga.py

En la reunión de 2015-03-04 se hicieron sugerencias de mejoras:

  1. Renombrar archivo predeterminado pwd -a credenciales o credenciales.conf
  2. Agregar --solicitar-credenciales que pregunte las credenciales al inicio
  3. Cambiar --mes-completo por --mes-completo-por-dia para evitar ambigüedad
  4. --carpeta-destino que su valor por omisión sea ~/cfdi-descarga

Si hay más sugerencias, por favor comenten para tomarlas en cuenta.

¿No se descargan los cancelados?

Recuerdo que en dias pasados se descargaban los xml activos e incluso los cancelados, ya que una vez descargados los proceso uno a uno, compruebo su vigencia y los registro en una BD con su estatus (activo, cancelado, no encontrado).

Aunque sospecho que un comprobante lo pude descargar activo y cuando los procese días despúes, seguro lo cancelaron (esa seria una explicación).

Lo comento porque el día de hoy, una vez actualizado selenium, la aplicación me indica 142 comprobantes en feb-27, pero solo descarga 140, despues de mucho probar hice una lista de uuids (guarde cada pagina de ese dia) la ordene y la compare con el listado de la carpeta ordenados por uuid en una hoja de calculo. Y detecté que los faltantes son dos comprobantes cancelados.

Luego intente descargar cada uno por el uuid desde la aplicación, y aunque lo encuentra y todo, no lo descarga.

A nosotros nos conviene tener los xmls activos y cancelados, es muy conveniente para saber detectar si pagamos algo que luego nos cancele el proveedor. Porque ese es el gran problema que cancelen despues de haber pagado, (ya me imagino el siguiente "parche" del sat para prevenir esto: ¿comprobantes por pagos?).

Timeout en DescargaSAT.search()

Documentando el error que comentamos durante la reunión. Sucede en pocas ocasiones, lo estamos analizando para prevenirlo, es un timeout porque la expected condition no se da. Este es el mensaje:

(env34) pp@g6:~/admin-cfdi$ py -m unittest functional_DescargaSAT.DescargaSAT.test_emitidas
E
======================================================================
ERROR: test_emitidas (functional_DescargaSAT.DescargaSAT)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/pp/admin-cfdi/functional_DescargaSAT.py", line 162, in test_emitidas
    facturas_emitidas=True)
  File "/home/pp/admin-cfdi/admincfdi/pyutil.py", line 1891, in search
    wait.until(EC.staleness_of(results_table))
  File "/home/pp/admin-cfdi/env34/lib/python3.4/site-packages/selenium-2.45.0-py3.4.egg/selenium/webdriver/support/wait.py", line 75, in until
    raise TimeoutException(message, screen, stacktrace)
selenium.common.exceptions.TimeoutException: Message:

----------------------------------------------------------------------
Ran 1 test in 29.429s

Problemas al generar PDF con información aduanera

En la pestaña "Generar PDF" se omiten las facturas con "Información Aduanera" cuando no definen el campo "Aduana" (que de acuerdo al cfdv32.xsd es opcional):

<cfdi:Concepto cantidad="1" unidad="pz" descripcion="EJEMPLO 1" valorUnitario="990.000000" importe="990.00">
      <cfdi:InformacionAduanera numero="00001" fecha="2015-01-09" />
 </cfdi:Concepto>

El mismo concepto pero con el campo aduana funciona sin problemas:

<cfdi:Concepto cantidad="1" unidad="pz" descripcion="EJEMPLO 2" valorUnitario="990.000000" importe="990.00">
      <cfdi:InformacionAduanera numero="00001" fecha="2015-01-09" aduana="1234"/>
 </cfdi:Concepto>

Estuve revisando el código de pyutil.py para corregir el error pero aún no tengo claro que parte es la que debe modificarse, sigo revisando...

Febrero 12 - el SAT no muestra ningun comprobante

Esta no es falla de la aplicación pero es un caso que no habia visto desde que uso esta aplicación.

Se que hay comprobantes para nuestro receptor, porque al menos hemos recibido un correo con un comprobante con fecha de hoy 12 de febrero. Pero el SAT no lo muestra (en su portal ni con la aplicación), es más no muestra ni los comprobantes que hemos generado nosotros. Pude descargar los dias 10 y 11, pero durante varios intentos en este día ninguno del dia 12.

Ojala que sea un evento "esporadico" y que no se vaya a eliminar este servicio que apuntaba a ser útil.
"Sueños guajiros" ojala el SAT implemente un web service para descargar los comprobantes, seria genial.

Duda: ¿Porque no puedo añadir flags?

Organizar XML's

Hola:

Despues de bajar los CFDI del correo no me organiza los archivos, me dice XML encotrados 5 XML organizados 0. Hice 2 pruebas una en Linux Mint y otra en Windows.

Tambien me gustaria saber si al momento de organizar por carpeta se pueden organizar los CFDI con la Razon Social, en las primeras veces que use pocos XML para hacer pruebas note que organizaba por Carpeta (Nombrada por RFC EMISOR), SubCarpeta (Nombrada por el Year), SubCarpeta (nombrada por el Mes), solo me gustaria que hubiera la opcion para que la primer Carpeta sea nombrada por Razon Social Emisor en lugar de RFC Emisor, todo esto para una busqueda mas sencilla para los usuarios.

Saludos

Rama develop en Win 7 y 10

Con esta rama trabajo muy bien en Linux, pero hoy he intentado descargar desde Win 7 y Win 10 obteniendo el mismo resultado...

En los dos se usa Firefox 44

Abre correctamente la ventana de acceso. Se identifica correctamente. Se queda en la ventana donde dice: se ha identificado correctamente y su sesión será válida 10 minutos. No hace nada más, después de unos momentos se cierra, pero no da ningún error.

¿Alguien puede validar este comportamiento?

Gracias

Error en lectura de credenciales.conf

Al correr descarga-cfdi, Firefox se detiene en la pantalla de login del SAT, después se cierra y la aplicación termina. Reportado al final de #64 por @MauricioBaeza y reproducido.

Varios editores agregan LF (LF CR o CF LF dependiendo del sistema operativo) al final del texto cuando crean un nuevo archivo. descarga-cfdi y las pruebas funcionales usan readline() para leer la línea del archivo credenciales.conf y descartan el último caracter asumiendo que es LF. readline() incluye el LF en GNU/Linux, pero no en otros sistemas operativos.

Voy a agregar una función de lectura de credenciales en el módulo pyutil.py, que la usen tanto descarga-cfdi como las pruebas funcionales, que evite este problema y además maneje cuando no existe el archivo o no encuentre los dos valores esperados. Envío un Pull Request a la rama develop cuando esté listo.

Puntos de mejora en la documentación

Aquí van algunas ideas para hacer la documentación más útil, a ver qué les parecen:

  • Agregar contenido a la introducción, es lo primero que se ve y puede funcionar como carta de presentación
  • Dar de alta la rama develop en http://readthedocs.org/ para que la documentación se genere y cualquiera pueda verla sin necesidad de instalar el proyecto
  • Dar de alta la rama master en read the docs.
  • Includir al final del capítulo Instalación instrucciones para el sistema operativo de las ventanas
  • Mover lo que está en el wiki en Cómo colaborar en este proyecto a una sección en la documentación. Mejor que esté junto con el resto si va a ser visible en read the docs.
  • En Uso -> admin-cfdi agregar una sección que explique cada función: descargar, descargar de correos, organizar, generar PDF, validar. Qué se puede hacer y las opciones; podemos tomar de lo que ya han preguntado los usuarios antes aquí.

Si tienen más sugerencias, podemos comentarlas aquí y agregarlas para que nos acordemos, e ir palomeando según se vayan realizando.

[Bug] Descarga Masiva Facturas emitidas

Al intentar descargar las facuras emitidas, no logro hacerlo.
Se loguea satisfactoriamente al SAT, pero al parecer al 'seleccionar' la fecha se pierde, porque el formulario es diferente al de 'facturas recibidas'.

Esto provoca que no encuentre facturas emitidas en el mes seleccionado.

emisor separado en dos

Hola,
cuando genero un reporte de los XMLs, corre y abre el CSV,
pero me separa el {nombre_emisor} cuando el nombre tiene una coma.

Pero ejemplo, si tengo algo como EMPRESA, S.A. de C.V., el CSV sale como EMPRESA y en otra celda el
S.A. de C.V.

Estuve navegando por el codigo pero no encontre en donde podria ser.
Se puede ajustar algo para que no se separe el nombre del emisor cuando tenga comas y el csv
tenga una sola linea por xml procesado?

abriendo firefox....

he estado tratando de bajar los xml pero ocurre el siguiente error:
click descarga -> "msj" abriendo firefox. pero no se abre.

pd: uso linux mint basado en ubuntu 16.04

saludos!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.