From 8656ec69485b5fe91645db5845e1b66ce93971cf Mon Sep 17 00:00:00 2001 From: Mateo Morinigo <84980263+matemorinigo@users.noreply.github.com> Date: Sun, 19 Dec 2021 20:44:31 -0300 Subject: [PATCH 01/15] =?UTF-8?q?A=C3=B1adido=20testing.py=20y=20.gitignor?= =?UTF-8?q?e?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Archivos locales con los que estuve trabajando --- .gitignore | 2 ++ testing.py | 82 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 84 insertions(+) create mode 100644 .gitignore create mode 100644 testing.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6bf5235 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +archivos +**/*.xlsx diff --git a/testing.py b/testing.py new file mode 100644 index 0000000..fbfc2b0 --- /dev/null +++ b/testing.py @@ -0,0 +1,82 @@ +from openpyxl import workbook +from openpyxl import load_workbook +from openpyxl import cell + +global run +run = True + +while run == True: + ruta1 = str(input("Ubicacion del libro : ")) + archivo = load_workbook(ruta1) #Abre el archivo Excel del libro a utilizar + hoja = archivo.active + mes = int(input('Mes a cargar (insertar nº del 1-12): ')) + año = str(input('Año del libro (ejemplo: 2020): ')) + + global totalmes + if mes == 1: + totalmes = f"TOTALES AL 31/01/{año}" + elif mes == 2: + totalmes = f"TOTALES AL 28/02/{año}" + elif mes == 3: + totalmes = f"TOTALES AL 31/03/{año}" + elif mes == 4: + totalmes = f"TOTALES AL 30/04/{año}" + elif mes == 5: + totalmes = f"TOTALES AL 31/05/{año}" + elif mes == 6: + totalmes = f"TOTALES AL 30/06/{año}" + elif mes == 7: + totalmes = f"TOTALES AL 31/07{año}" + elif mes == 8: + totalmes = f"TOTALES AL 31/08/{año}" + elif mes == 9: + totalmes = f"TOTALES AL 30/09/{año}" + elif mes == 10: + totalmes = f"TOTALES AL 31/10/{año}" + elif mes == 11: + totalmes = f"TOTALES AL 30/11/{año}" + elif mes == 12: + totalmes = f"TOTALES AL 31/12/{año}" + else: + print("Error en el mes (linea 12-37)") + + + for celda in hoja['A']: #Recorre la columna A en busca de la fila donde estan los valores + if celda.value == totalmes: + fila = celda.row + netogravado = hoja[f"E{fila}"].value + iva = hoja[f"F{fila}"].value + importetotal = hoja[f"G{fila}"].value + else: + if celda.value == f"TOTALES AL 29/02/{año}": + fila = celda.row + netogravado = hoja[f"E{fila}"].value + iva = hoja[f"F{fila}"].value + importetotal = hoja[f"G{fila}"].value + + + ruta2 = input("Ubicacion del archivo DDJJ Ganancias: ") + archivo2 = load_workbook(ruta2) + + libro = int(input('Libro (ventas=1, compras=2): ')) + + if libro == 1: + hoja2 = archivo2['VENTAS'] + if mes == 1: + hoja2.cell(row=8, column=5).value = netogravado + archivo2.save(ruta2) + elif libro == 2: + hoja2 = archivo2['COMPRAS'] + + global notError + notError = False + while notError == False: + sigLibro = int(input('¿Desea ingresar otro libro?(Si=1, No=2): ')) + if sigLibro == 1: + run = True + notError = True + elif sigLibro == 2: + run = False + notError = True + else: + notError = False From 1efaf5683e57289ec5f8a432e9e5f7f51eb4ad1b Mon Sep 17 00:00:00 2001 From: Mateo Morinigo Date: Sun, 19 Dec 2021 21:35:49 -0300 Subject: [PATCH 02/15] V1.1 con notas --- testing.py | 48 +++++++++++++++++++++++++----------------------- 1 file changed, 25 insertions(+), 23 deletions(-) diff --git a/testing.py b/testing.py index fbfc2b0..c1e3d9c 100644 --- a/testing.py +++ b/testing.py @@ -3,7 +3,7 @@ from openpyxl import cell global run -run = True +run = True #Crea una variable para que el script siga corriendo siempre que el usuario quiera while run == True: ruta1 = str(input("Ubicacion del libro : ")) @@ -12,7 +12,7 @@ mes = int(input('Mes a cargar (insertar nº del 1-12): ')) año = str(input('Año del libro (ejemplo: 2020): ')) - global totalmes + global totalmes #Crea la variable donde se alojaran los totales de los meses, para asi encontrar mas facilmente los datos necesarios if mes == 1: totalmes = f"TOTALES AL 31/01/{año}" elif mes == 2: @@ -41,14 +41,14 @@ print("Error en el mes (linea 12-37)") - for celda in hoja['A']: #Recorre la columna A en busca de la fila donde estan los valores - if celda.value == totalmes: + for celda in hoja['A']: #Recorre la columna A en busca de la fila donde estan los valores, gracias a la variable totalmes + if celda.value == totalmes: fila = celda.row - netogravado = hoja[f"E{fila}"].value + netogravado = hoja[f"E{fila}"].value #Busca los valores del neto gravado, el IVA, y el total en base a la fila donde encontro a la variable totalmes iva = hoja[f"F{fila}"].value importetotal = hoja[f"G{fila}"].value else: - if celda.value == f"TOTALES AL 29/02/{año}": + if celda.value == f"TOTALES AL 29/02/{año}": #Evita que el script se rompa, en el caso de que un libro sea de un año bisiesto fila = celda.row netogravado = hoja[f"E{fila}"].value iva = hoja[f"F{fila}"].value @@ -56,27 +56,29 @@ ruta2 = input("Ubicacion del archivo DDJJ Ganancias: ") - archivo2 = load_workbook(ruta2) + archivo2 = load_workbook(ruta2) #Busca y abre el archivo donde se alojaran los datos del libro + global notError1 + notError1 = False #Evita errores en el caso de que el usuario inserte mal el numero + while notError1 == False: + libro = int(input('Libro (ventas=1, compras=2): ')) #El usuario decide si va a cargar un libro de Ventas o de compras) + if libro == 1: + hoja2 = archivo2['VENTAS'] + if mes == 1: + hoja2.cell(row=8, column=5).value = netogravado + archivo2.save(ruta2) + notError1 = True + elif libro == 2: + hoja2 = archivo2['COMPRAS'] - libro = int(input('Libro (ventas=1, compras=2): ')) - - if libro == 1: - hoja2 = archivo2['VENTAS'] - if mes == 1: - hoja2.cell(row=8, column=5).value = netogravado - archivo2.save(ruta2) - elif libro == 2: - hoja2 = archivo2['COMPRAS'] - - global notError - notError = False - while notError == False: + global notError2 + notError2 = False + while notError2 == False: sigLibro = int(input('¿Desea ingresar otro libro?(Si=1, No=2): ')) if sigLibro == 1: run = True - notError = True + notError2 = True elif sigLibro == 2: run = False - notError = True + notError2 = True else: - notError = False + notError2 = False From c9528e42c1f63b90c810699c314fb7ae4a72765e Mon Sep 17 00:00:00 2001 From: Mateo Morinigo Date: Mon, 20 Dec 2021 11:41:38 -0300 Subject: [PATCH 03/15] Agrega algoritmo para buscar donde cambiar los datos --- testing.py | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/testing.py b/testing.py index c1e3d9c..5c11d8b 100644 --- a/testing.py +++ b/testing.py @@ -11,31 +11,44 @@ hoja = archivo.active mes = int(input('Mes a cargar (insertar nº del 1-12): ')) año = str(input('Año del libro (ejemplo: 2020): ')) - + + global nombremes global totalmes #Crea la variable donde se alojaran los totales de los meses, para asi encontrar mas facilmente los datos necesarios if mes == 1: + nombremes = "ENERO" totalmes = f"TOTALES AL 31/01/{año}" elif mes == 2: + nombremes = "FEBRERO" totalmes = f"TOTALES AL 28/02/{año}" elif mes == 3: + nombremes = "MARZO" totalmes = f"TOTALES AL 31/03/{año}" elif mes == 4: + nombremes = "ABRIL" totalmes = f"TOTALES AL 30/04/{año}" elif mes == 5: + nombremes = "MAYO" totalmes = f"TOTALES AL 31/05/{año}" elif mes == 6: + nombremes = "JUNIO" totalmes = f"TOTALES AL 30/06/{año}" elif mes == 7: + nombremes = "JULIO" totalmes = f"TOTALES AL 31/07{año}" elif mes == 8: + nombremes = "AGOSTO" totalmes = f"TOTALES AL 31/08/{año}" elif mes == 9: + nombremes = "SEPTIEMBRE" totalmes = f"TOTALES AL 30/09/{año}" elif mes == 10: + nombremes = "OCTUBRE" totalmes = f"TOTALES AL 31/10/{año}" elif mes == 11: + nombremes = "NOVIEMBRE" totalmes = f"TOTALES AL 30/11/{año}" elif mes == 12: + nombremes = "DICIEMBRE" totalmes = f"TOTALES AL 31/12/{año}" else: print("Error en el mes (linea 12-37)") @@ -57,14 +70,28 @@ ruta2 = input("Ubicacion del archivo DDJJ Ganancias: ") archivo2 = load_workbook(ruta2) #Busca y abre el archivo donde se alojaran los datos del libro + global notError1 notError1 = False #Evita errores en el caso de que el usuario inserte mal el numero + while notError1 == False: libro = int(input('Libro (ventas=1, compras=2): ')) #El usuario decide si va a cargar un libro de Ventas o de compras) if libro == 1: hoja2 = archivo2['VENTAS'] if mes == 1: - hoja2.cell(row=8, column=5).value = netogravado + for celda in hoja2['A']: + if celda.value == nombremes: + global columna + fila = celda.row + for celda2 in hoja2['E']: + if celda2.value == "gravado": + columna = celda2.column + else: + for celda3 in hoja2['C']: + if celda3.value == "$": + columna = celda3.column + hoja2.cell(row= fila, column= columna) + archivo2.save(ruta2) notError1 = True elif libro == 2: @@ -72,6 +99,7 @@ global notError2 notError2 = False + while notError2 == False: sigLibro = int(input('¿Desea ingresar otro libro?(Si=1, No=2): ')) if sigLibro == 1: From 4d8f0e1556983157868fa578dc83aa8cfeaa4857 Mon Sep 17 00:00:00 2001 From: Mateo Morinigo Date: Mon, 20 Dec 2021 12:19:19 -0300 Subject: [PATCH 04/15] Algoritmo reparado --- testing.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/testing.py b/testing.py index 5c11d8b..be9f590 100644 --- a/testing.py +++ b/testing.py @@ -90,7 +90,7 @@ for celda3 in hoja2['C']: if celda3.value == "$": columna = celda3.column - hoja2.cell(row= fila, column= columna) + hoja2.cell(row= fila, column= columna).value = netogravado archivo2.save(ruta2) notError1 = True From c8863da3c1588b5423285c41311da355b07b338f Mon Sep 17 00:00:00 2001 From: Mateo Morinigo Date: Mon, 20 Dec 2021 13:40:55 -0300 Subject: [PATCH 05/15] Algoritmo sin terminar --- testing.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/testing.py b/testing.py index be9f590..865a3c2 100644 --- a/testing.py +++ b/testing.py @@ -84,12 +84,12 @@ global columna fila = celda.row for celda2 in hoja2['E']: - if celda2.value == "gravado": + if celda2.value == str("gravado"): columna = celda2.column - else: + """elif celda2.value == str("gravado"): for celda3 in hoja2['C']: if celda3.value == "$": - columna = celda3.column + columna = celda3.column""" hoja2.cell(row= fila, column= columna).value = netogravado archivo2.save(ruta2) From 62cd64c22512ce4be28dc21d2a3de454132ab697 Mon Sep 17 00:00:00 2001 From: Mateo Morinigo Date: Wed, 22 Dec 2021 11:48:19 -0300 Subject: [PATCH 06/15] Ventas con funcion --- testing.py | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/testing.py b/testing.py index 865a3c2..d172777 100644 --- a/testing.py +++ b/testing.py @@ -4,6 +4,24 @@ global run run = True #Crea una variable para que el script siga corriendo siempre que el usuario quiera +ruta2 = input("Ubicacion del archivo DDJJ Ganancias: ") + +def ventas(hojaV, mes): + global fila2 + global columna + for celda in hojaV['A']: + if celda.value == mes: + fila2 = celda.row + for celda2 in hojaV['C']: + if celda2.value == "$": + if hojaV.cell(row=fila2, column=5).value == "gravado": + columna = 5 + return columna + break + else: + columna = celda2.column + return columna + return fila2 while run == True: ruta1 = str(input("Ubicacion del libro : ")) @@ -81,15 +99,10 @@ if mes == 1: for celda in hoja2['A']: if celda.value == nombremes: - global columna fila = celda.row for celda2 in hoja2['E']: if celda2.value == str("gravado"): columna = celda2.column - """elif celda2.value == str("gravado"): - for celda3 in hoja2['C']: - if celda3.value == "$": - columna = celda3.column""" hoja2.cell(row= fila, column= columna).value = netogravado archivo2.save(ruta2) From f298be54993c35ba87fa4e16c8739f4f764fb726 Mon Sep 17 00:00:00 2001 From: Mateo Morinigo Date: Wed, 22 Dec 2021 12:16:05 -0300 Subject: [PATCH 07/15] Parte ventas terminada y funcional --- testing.py | 74 +++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 62 insertions(+), 12 deletions(-) diff --git a/testing.py b/testing.py index d172777..c1c0768 100644 --- a/testing.py +++ b/testing.py @@ -8,12 +8,14 @@ def ventas(hojaV, mes): global fila2 + global fila1 global columna for celda in hojaV['A']: if celda.value == mes: - fila2 = celda.row + fila1 = celda.row for celda2 in hojaV['C']: if celda2.value == "$": + fila2 = celda2.row if hojaV.cell(row=fila2, column=5).value == "gravado": columna = 5 return columna @@ -21,7 +23,8 @@ def ventas(hojaV, mes): else: columna = celda2.column return columna - return fila2 + break + return fila1 while run == True: ruta1 = str(input("Ubicacion del libro : ")) @@ -85,8 +88,6 @@ def ventas(hojaV, mes): iva = hoja[f"F{fila}"].value importetotal = hoja[f"G{fila}"].value - - ruta2 = input("Ubicacion del archivo DDJJ Ganancias: ") archivo2 = load_workbook(ruta2) #Busca y abre el archivo donde se alojaran los datos del libro global notError1 @@ -97,14 +98,63 @@ def ventas(hojaV, mes): if libro == 1: hoja2 = archivo2['VENTAS'] if mes == 1: - for celda in hoja2['A']: - if celda.value == nombremes: - fila = celda.row - for celda2 in hoja2['E']: - if celda2.value == str("gravado"): - columna = celda2.column - hoja2.cell(row= fila, column= columna).value = netogravado - + ventas(hoja2, nombremes) + hoja2.cell(row=fila1, column=columna).value = netogravado + archivo2.save(ruta2) + notError1 = True + elif mes == 2: + ventas(hoja2, nombremes) + hoja2.cell(row=fila1, column=columna).value = netogravado + archivo2.save(ruta2) + notError1 = True + elif mes == 3: + ventas(hoja2, nombremes) + hoja2.cell(row=fila1, column=columna).value = netogravado + archivo2.save(ruta2) + notError1 = True + elif mes == 4: + ventas(hoja2, nombremes) + hoja2.cell(row=fila1, column=columna).value = netogravado + archivo2.save(ruta2) + notError1 = True + elif mes == 5: + ventas(hoja2, nombremes) + hoja2.cell(row=fila1, column=columna).value = netogravado + archivo2.save(ruta2) + notError1 = True + elif mes == 6: + ventas(hoja2, nombremes) + hoja2.cell(row=fila1, column=columna).value = netogravado + archivo2.save(ruta2) + notError1 = True + elif mes == 7: + ventas(hoja2, nombremes) + hoja2.cell(row=fila1, column=columna).value = netogravado + archivo2.save(ruta2) + notError1 = True + elif mes == 8: + ventas(hoja2, nombremes) + hoja2.cell(row=fila1, column=columna).value = netogravado + archivo2.save(ruta2) + notError1 = True + elif mes == 9: + ventas(hoja2, nombremes) + hoja2.cell(row=fila1, column=columna).value = netogravado + archivo2.save(ruta2) + notError1 = True + elif mes == 10: + ventas(hoja2, nombremes) + hoja2.cell(row=fila1, column=columna).value = netogravado + archivo2.save(ruta2) + notError1 = True + elif mes == 11: + ventas(hoja2, nombremes) + hoja2.cell(row=fila1, column=columna).value = netogravado + archivo2.save(ruta2) + notError1 = True + elif mes == 12: + ventas(hoja2, nombremes) + hoja2.cell(row=fila1, column=columna).value = netogravado archivo2.save(ruta2) notError1 = True elif libro == 2: From 32e0ada57d162dfeba18cc308e117609c4e6d7ef Mon Sep 17 00:00:00 2001 From: Mateo Morinigo Date: Wed, 22 Dec 2021 12:26:15 -0300 Subject: [PATCH 08/15] Eliminadas lineas de codigo que no servian --- testing.py | 64 ++++-------------------------------------------------- 1 file changed, 4 insertions(+), 60 deletions(-) diff --git a/testing.py b/testing.py index c1c0768..552c580 100644 --- a/testing.py +++ b/testing.py @@ -97,66 +97,10 @@ def ventas(hojaV, mes): libro = int(input('Libro (ventas=1, compras=2): ')) #El usuario decide si va a cargar un libro de Ventas o de compras) if libro == 1: hoja2 = archivo2['VENTAS'] - if mes == 1: - ventas(hoja2, nombremes) - hoja2.cell(row=fila1, column=columna).value = netogravado - archivo2.save(ruta2) - notError1 = True - elif mes == 2: - ventas(hoja2, nombremes) - hoja2.cell(row=fila1, column=columna).value = netogravado - archivo2.save(ruta2) - notError1 = True - elif mes == 3: - ventas(hoja2, nombremes) - hoja2.cell(row=fila1, column=columna).value = netogravado - archivo2.save(ruta2) - notError1 = True - elif mes == 4: - ventas(hoja2, nombremes) - hoja2.cell(row=fila1, column=columna).value = netogravado - archivo2.save(ruta2) - notError1 = True - elif mes == 5: - ventas(hoja2, nombremes) - hoja2.cell(row=fila1, column=columna).value = netogravado - archivo2.save(ruta2) - notError1 = True - elif mes == 6: - ventas(hoja2, nombremes) - hoja2.cell(row=fila1, column=columna).value = netogravado - archivo2.save(ruta2) - notError1 = True - elif mes == 7: - ventas(hoja2, nombremes) - hoja2.cell(row=fila1, column=columna).value = netogravado - archivo2.save(ruta2) - notError1 = True - elif mes == 8: - ventas(hoja2, nombremes) - hoja2.cell(row=fila1, column=columna).value = netogravado - archivo2.save(ruta2) - notError1 = True - elif mes == 9: - ventas(hoja2, nombremes) - hoja2.cell(row=fila1, column=columna).value = netogravado - archivo2.save(ruta2) - notError1 = True - elif mes == 10: - ventas(hoja2, nombremes) - hoja2.cell(row=fila1, column=columna).value = netogravado - archivo2.save(ruta2) - notError1 = True - elif mes == 11: - ventas(hoja2, nombremes) - hoja2.cell(row=fila1, column=columna).value = netogravado - archivo2.save(ruta2) - notError1 = True - elif mes == 12: - ventas(hoja2, nombremes) - hoja2.cell(row=fila1, column=columna).value = netogravado - archivo2.save(ruta2) - notError1 = True + ventas(hoja2, nombremes) + hoja2.cell(row=fila1, column=columna).value = netogravado + archivo2.save(ruta2) + notError1 = True elif libro == 2: hoja2 = archivo2['COMPRAS'] From ac4124340a3a0fa3ff98e5f44c3908b688e882cf Mon Sep 17 00:00:00 2001 From: Mateo Morinigo Date: Fri, 24 Dec 2021 12:34:07 -0300 Subject: [PATCH 09/15] Funcion compras creada --- testing.py | 31 ++++++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/testing.py b/testing.py index 552c580..e755ab3 100644 --- a/testing.py +++ b/testing.py @@ -1,13 +1,11 @@ -from openpyxl import workbook -from openpyxl import load_workbook -from openpyxl import cell +from openpyxl import workbook, cell, load_workbook global run run = True #Crea una variable para que el script siga corriendo siempre que el usuario quiera ruta2 = input("Ubicacion del archivo DDJJ Ganancias: ") -def ventas(hojaV, mes): - global fila2 + +def ventas(hojaV, mes): #Crea una funcion que busca dentro del archivo DDJJ Ganancias la fila y la columna en la cual debera ubicar los datos global fila1 global columna for celda in hojaV['A']: @@ -26,6 +24,26 @@ def ventas(hojaV, mes): break return fila1 +gastos = ["BCO.CREDICOOP - ARGENCARD", "BANCO CREDICOOP - CABAL", "EDENOR SA", "TELEFONICA", + "AMERICAN EXPRESS SA", "REDGUARD SA"] + +def compras(hojaC, mesC): + global valor1 + global valor2 + global gastoTotal + for celda in hojaC['D']: + for gasto in gastos: + if celda.value == gasto: + row = celda.row + 1 + row2 = celda.row + 2 + valor1 = hojaC.cell(row=row, column=1).value + valor2 = hojaC.cell(row=row2, column=1).value + if valor2 == None: + gastoTotal =+ valor1 + elif type(valor1) and type(valor2) == float: + gastoTotal =+ valor1 + valor2 + return gastoTotal + while run == True: ruta1 = str(input("Ubicacion del libro : ")) archivo = load_workbook(ruta1) #Abre el archivo Excel del libro a utilizar @@ -103,6 +121,9 @@ def ventas(hojaV, mes): notError1 = True elif libro == 2: hoja2 = archivo2['COMPRAS'] + compras(hoja, nombremes) + print(gastoTotal) + notError1 = True global notError2 notError2 = False From 4e7594a473235eadbaff3b927faba1159f64e556 Mon Sep 17 00:00:00 2001 From: Mateo Morinigo Date: Fri, 24 Dec 2021 12:53:29 -0300 Subject: [PATCH 10/15] =?UTF-8?q?A=C3=B1adida=20explicacion=20con=20coment?= =?UTF-8?q?arios?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- testing.py | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/testing.py b/testing.py index e755ab3..4381631 100644 --- a/testing.py +++ b/testing.py @@ -12,7 +12,7 @@ def ventas(hojaV, mes): #Crea una funcion que busca dentro del archivo DDJJ Gana if celda.value == mes: fila1 = celda.row for celda2 in hojaV['C']: - if celda2.value == "$": + if celda2.value == "$": #La diferencia entre "$" y "gravado" es que en algunos archivos aparece una, y en otros aparecen ambas. Por eso es una solucion global. fila2 = celda2.row if hojaV.cell(row=fila2, column=5).value == "gravado": columna = 5 @@ -22,7 +22,7 @@ def ventas(hojaV, mes): #Crea una funcion que busca dentro del archivo DDJJ Gana columna = celda2.column return columna break - return fila1 + return fila1 gastos = ["BCO.CREDICOOP - ARGENCARD", "BANCO CREDICOOP - CABAL", "EDENOR SA", "TELEFONICA", "AMERICAN EXPRESS SA", "REDGUARD SA"] @@ -32,17 +32,17 @@ def compras(hojaC, mesC): global valor2 global gastoTotal for celda in hojaC['D']: - for gasto in gastos: - if celda.value == gasto: - row = celda.row + 1 - row2 = celda.row + 2 - valor1 = hojaC.cell(row=row, column=1).value + for gasto in gastos: #Busca cada uno de los gastos definidos en la lista de la linea 27 + if celda.value == gasto: #Compara el valor de la celda con los gastos + row = celda.row + 1 #Al tener uno o dos valores (ya que hay importes con un iva de 10,5% y otros con 21%) + row2 = celda.row + 2 #Busca los valores de las 2 filas siguientes a donde se encuentra el concepto gasto + valor1 = hojaC.cell(row=row, column=1).value #Como los valores siempre estan en la columna A (o column=1), toma esos valores valor2 = hojaC.cell(row=row2, column=1).value - if valor2 == None: + if valor2 == None: #Evita el error por NoneType, ya que si encuentra que el segundo valor es nulo, solo suma el valor1 gastoTotal =+ valor1 elif type(valor1) and type(valor2) == float: gastoTotal =+ valor1 + valor2 - return gastoTotal + return gastoTotal #Te devuelve la suma de los gastos totales while run == True: ruta1 = str(input("Ubicacion del libro : ")) @@ -51,7 +51,7 @@ def compras(hojaC, mesC): mes = int(input('Mes a cargar (insertar nº del 1-12): ')) año = str(input('Año del libro (ejemplo: 2020): ')) - global nombremes + global nombremes #Crea la variable donde se alojara el nombre del mes, para asi encontrar en el archivo de DDJJ la fila donde debera ubicar los datos global totalmes #Crea la variable donde se alojaran los totales de los meses, para asi encontrar mas facilmente los datos necesarios if mes == 1: nombremes = "ENERO" @@ -116,8 +116,8 @@ def compras(hojaC, mesC): if libro == 1: hoja2 = archivo2['VENTAS'] ventas(hoja2, nombremes) - hoja2.cell(row=fila1, column=columna).value = netogravado - archivo2.save(ruta2) + hoja2.cell(row=fila1, column=columna).value = netogravado #Carga el valor obtenido en la fila y la columna segun la funcion ventas() + archivo2.save(ruta2) #Sobreescribe el archivo original, con los datos obtenidos notError1 = True elif libro == 2: hoja2 = archivo2['COMPRAS'] From badd3e82fd77dd92ada8626bad9c38c82d08cfca Mon Sep 17 00:00:00 2001 From: Mateo Morinigo Date: Mon, 27 Dec 2021 18:02:07 -0300 Subject: [PATCH 11/15] Funcion compras terminada --- testing.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/testing.py b/testing.py index 4381631..3718675 100644 --- a/testing.py +++ b/testing.py @@ -27,10 +27,11 @@ def ventas(hojaV, mes): #Crea una funcion que busca dentro del archivo DDJJ Gana gastos = ["BCO.CREDICOOP - ARGENCARD", "BANCO CREDICOOP - CABAL", "EDENOR SA", "TELEFONICA", "AMERICAN EXPRESS SA", "REDGUARD SA"] -def compras(hojaC, mesC): +def compras(hojaC, hojaG, mes, neto): global valor1 global valor2 global gastoTotal + global rowC for celda in hojaC['D']: for gasto in gastos: #Busca cada uno de los gastos definidos en la lista de la linea 27 if celda.value == gasto: #Compara el valor de la celda con los gastos @@ -42,7 +43,10 @@ def compras(hojaC, mesC): gastoTotal =+ valor1 elif type(valor1) and type(valor2) == float: gastoTotal =+ valor1 + valor2 - return gastoTotal #Te devuelve la suma de los gastos totales + for celda2 in hojaG['A']: + if celda2.value == mes: + rowC = celda2.row + return gastoTotal and rowC while run == True: ruta1 = str(input("Ubicacion del libro : ")) @@ -121,8 +125,10 @@ def compras(hojaC, mesC): notError1 = True elif libro == 2: hoja2 = archivo2['COMPRAS'] - compras(hoja, nombremes) - print(gastoTotal) + compras(hoja, hoja2, nombremes, netogravado) + hoja2.cell(row=rowC, column= 7).value = gastoTotal + hoja2.cell(row=rowC, column= 5).value = netogravado - gastoTotal + archivo2.save(ruta2) notError1 = True global notError2 From 846787afc3771e263e0515cb35d385961848a85c Mon Sep 17 00:00:00 2001 From: Mateo Morinigo Date: Wed, 29 Dec 2021 11:21:43 -0300 Subject: [PATCH 12/15] Ultimas versiones --- testing.py | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/testing.py b/testing.py index 3718675..0dfe346 100644 --- a/testing.py +++ b/testing.py @@ -1,9 +1,25 @@ +from datetime import datetime from openpyxl import workbook, cell, load_workbook global run run = True #Crea una variable para que el script siga corriendo siempre que el usuario quiera ruta2 = input("Ubicacion del archivo DDJJ Ganancias: ") +def alicuota(hoja, hoja2, mes, año): + global valoresIVA + valoresIVA = [] + for celda in hoja['B']: + if celda.value == 21: + valoresIVA.append("IVA 21%") + elif celda.value == 10.5: + valoresIVA.append("IVA 10.5%") + elif celda.value == 27: + valoresIVA.append("IVA 27%") + for celda2 in hoja2['A']: + if celda2.value == datetime(int(año), mes, 1, 0, 0, 0): + lista = str(set(valoresIVA)) + hoja2.cell(row=celda2.row, column=8).value = lista + def ventas(hojaV, mes): #Crea una funcion que busca dentro del archivo DDJJ Ganancias la fila y la columna en la cual debera ubicar los datos global fila1 @@ -22,12 +38,15 @@ def ventas(hojaV, mes): #Crea una funcion que busca dentro del archivo DDJJ Gana columna = celda2.column return columna break + elif celda2.value == "gravadas": + columna = celda2.column + return columna return fila1 gastos = ["BCO.CREDICOOP - ARGENCARD", "BANCO CREDICOOP - CABAL", "EDENOR SA", "TELEFONICA", "AMERICAN EXPRESS SA", "REDGUARD SA"] -def compras(hojaC, hojaG, mes, neto): +def compras(hojaC, hojaG, mes): global valor1 global valor2 global gastoTotal @@ -60,6 +79,7 @@ def compras(hojaC, hojaG, mes, neto): if mes == 1: nombremes = "ENERO" totalmes = f"TOTALES AL 31/01/{año}" + fecha = "1/1/2020" elif mes == 2: nombremes = "FEBRERO" totalmes = f"TOTALES AL 28/02/{año}" @@ -101,13 +121,11 @@ def compras(hojaC, hojaG, mes, neto): if celda.value == totalmes: fila = celda.row netogravado = hoja[f"E{fila}"].value #Busca los valores del neto gravado, el IVA, y el total en base a la fila donde encontro a la variable totalmes - iva = hoja[f"F{fila}"].value importetotal = hoja[f"G{fila}"].value else: if celda.value == f"TOTALES AL 29/02/{año}": #Evita que el script se rompa, en el caso de que un libro sea de un año bisiesto fila = celda.row netogravado = hoja[f"E{fila}"].value - iva = hoja[f"F{fila}"].value importetotal = hoja[f"G{fila}"].value archivo2 = load_workbook(ruta2) #Busca y abre el archivo donde se alojaran los datos del libro @@ -121,13 +139,15 @@ def compras(hojaC, hojaG, mes, neto): hoja2 = archivo2['VENTAS'] ventas(hoja2, nombremes) hoja2.cell(row=fila1, column=columna).value = netogravado #Carga el valor obtenido en la fila y la columna segun la funcion ventas() + alicuota(hoja, hoja2, mes, año) archivo2.save(ruta2) #Sobreescribe el archivo original, con los datos obtenidos notError1 = True elif libro == 2: hoja2 = archivo2['COMPRAS'] - compras(hoja, hoja2, nombremes, netogravado) + compras(hoja, hoja2, nombremes) hoja2.cell(row=rowC, column= 7).value = gastoTotal hoja2.cell(row=rowC, column= 5).value = netogravado - gastoTotal + alicuota(hoja, hoja2, mes, año) archivo2.save(ruta2) notError1 = True From 3107545413123013b5288d8be6a873fdc35d3a63 Mon Sep 17 00:00:00 2001 From: Mateo Morinigo Date: Wed, 29 Dec 2021 15:18:25 -0300 Subject: [PATCH 13/15] Solucionado problema neto gravado --- testing.py | 45 +++++++++++++++++++++++++++++++-------------- 1 file changed, 31 insertions(+), 14 deletions(-) diff --git a/testing.py b/testing.py index 0dfe346..b760d35 100644 --- a/testing.py +++ b/testing.py @@ -5,7 +5,29 @@ run = True #Crea una variable para que el script siga corriendo siempre que el usuario quiera ruta2 = input("Ubicacion del archivo DDJJ Ganancias: ") -def alicuota(hoja, hoja2, mes, año): +def libroF(hoja, mes, año, libro): + global netogravado + for celda in hoja['A']: #Recorre la columna A en busca de la fila donde estan los valores, gracias a la variable totalmes + if celda.value == mes: + fila = celda.row + if libro == 1: + netogravado = hoja[f"D{fila}"].value #Busca los valores del neto gravado, el IVA, y el total en base a la fila donde encontro a la variable totalmes + importetotal = hoja[f"F{fila}"].value + elif libro == 2: + netogravado = hoja[f"E{fila}"].value + importetotal = hoja[f"G{fila}"].value + else: + if celda.value == f"TOTALES AL 29/02/{año}": #Evita que el script se rompa, en el caso de que un libro sea de un año bisiesto + fila = celda.row + if libro == 1: + netogravado = hoja[f"D{fila}"].value + importetotal = hoja[f"F{fila}"].value + elif libro == 2: + netogravado = hoja[f"E{fila}"].value + importetotal = hoja[f"G{fila}"].value + return netogravado and importetotal + +def alicuota(hoja, hoja2, mes, año, libro): global valoresIVA valoresIVA = [] for celda in hoja['B']: @@ -18,7 +40,10 @@ def alicuota(hoja, hoja2, mes, año): for celda2 in hoja2['A']: if celda2.value == datetime(int(año), mes, 1, 0, 0, 0): lista = str(set(valoresIVA)) - hoja2.cell(row=celda2.row, column=8).value = lista + if libro == 1: + hoja2.cell(row=celda2.row, column=9).value = lista + elif libro == 2: + hoja2.cell(row=celda2.row, column=7).value = lista def ventas(hojaV, mes): #Crea una funcion que busca dentro del archivo DDJJ Ganancias la fila y la columna en la cual debera ubicar los datos @@ -117,16 +142,6 @@ def compras(hojaC, hojaG, mes): print("Error en el mes (linea 12-37)") - for celda in hoja['A']: #Recorre la columna A en busca de la fila donde estan los valores, gracias a la variable totalmes - if celda.value == totalmes: - fila = celda.row - netogravado = hoja[f"E{fila}"].value #Busca los valores del neto gravado, el IVA, y el total en base a la fila donde encontro a la variable totalmes - importetotal = hoja[f"G{fila}"].value - else: - if celda.value == f"TOTALES AL 29/02/{año}": #Evita que el script se rompa, en el caso de que un libro sea de un año bisiesto - fila = celda.row - netogravado = hoja[f"E{fila}"].value - importetotal = hoja[f"G{fila}"].value archivo2 = load_workbook(ruta2) #Busca y abre el archivo donde se alojaran los datos del libro @@ -138,16 +153,18 @@ def compras(hojaC, hojaG, mes): if libro == 1: hoja2 = archivo2['VENTAS'] ventas(hoja2, nombremes) + libroF(hoja, totalmes, año, libro) hoja2.cell(row=fila1, column=columna).value = netogravado #Carga el valor obtenido en la fila y la columna segun la funcion ventas() - alicuota(hoja, hoja2, mes, año) + alicuota(hoja, hoja2, mes, año, libro) archivo2.save(ruta2) #Sobreescribe el archivo original, con los datos obtenidos notError1 = True elif libro == 2: hoja2 = archivo2['COMPRAS'] compras(hoja, hoja2, nombremes) + libroF(hoja, totalmes, año, libro) hoja2.cell(row=rowC, column= 7).value = gastoTotal hoja2.cell(row=rowC, column= 5).value = netogravado - gastoTotal - alicuota(hoja, hoja2, mes, año) + alicuota(hoja, hoja2, mes, año, libro) archivo2.save(ruta2) notError1 = True From 5e537801f8904a5b9f464e52f1c36954d2719965 Mon Sep 17 00:00:00 2001 From: Mateo Morinigo Date: Thu, 30 Dec 2021 19:32:06 -0300 Subject: [PATCH 14/15] Version final, sin errores --- testing.py | 53 +++++++++++++++++++++++++++++++++-------------------- 1 file changed, 33 insertions(+), 20 deletions(-) diff --git a/testing.py b/testing.py index b760d35..43a46c2 100644 --- a/testing.py +++ b/testing.py @@ -1,31 +1,40 @@ from datetime import datetime from openpyxl import workbook, cell, load_workbook -global run run = True #Crea una variable para que el script siga corriendo siempre que el usuario quiera ruta2 = input("Ubicacion del archivo DDJJ Ganancias: ") def libroF(hoja, mes, año, libro): global netogravado + global nogravado + global regEsp + global importetotal + global fila for celda in hoja['A']: #Recorre la columna A en busca de la fila donde estan los valores, gracias a la variable totalmes if celda.value == mes: fila = celda.row if libro == 1: netogravado = hoja[f"D{fila}"].value #Busca los valores del neto gravado, el IVA, y el total en base a la fila donde encontro a la variable totalmes importetotal = hoja[f"F{fila}"].value + return netogravado and importetotal elif libro == 2: - netogravado = hoja[f"E{fila}"].value - importetotal = hoja[f"G{fila}"].value - else: - if celda.value == f"TOTALES AL 29/02/{año}": #Evita que el script se rompa, en el caso de que un libro sea de un año bisiesto - fila = celda.row - if libro == 1: - netogravado = hoja[f"D{fila}"].value - importetotal = hoja[f"F{fila}"].value - elif libro == 2: - netogravado = hoja[f"E{fila}"].value - importetotal = hoja[f"G{fila}"].value - return netogravado and importetotal + netogravado = hoja[f"E{fila}"].value #Cambia las celdas en las que se encuentran los valores deseados segun el libro donde se busque, debido a que esto ocasiono un error en el programa + nogravado = hoja[f"B{fila}"].value + regEsp = hoja[f"C{fila}"].value + importetotal = hoja[f"G{fila}"].value + return netogravado, nogravado, regEsp, importetotal + elif celda.value == f"TOTALES AL 29/02/{año}": + fila = celda.row + if libro == 1: + netogravado = hoja[f"D{fila}"].value + importetotal = hoja[f"F{fila}"].value + return netogravado and importetotal + elif libro == 2: + netogravado = hoja[f"E{fila}"].value + nogravado = hoja[f"B{fila}"].value + regEsp = hoja[f"C{fila}"].value + importetotal = hoja[f"G{fila}"].value + return netogravado, nogravado, regEsp, importetotal def alicuota(hoja, hoja2, mes, año, libro): global valoresIVA @@ -69,13 +78,14 @@ def ventas(hojaV, mes): #Crea una funcion que busca dentro del archivo DDJJ Gana return fila1 gastos = ["BCO.CREDICOOP - ARGENCARD", "BANCO CREDICOOP - CABAL", "EDENOR SA", "TELEFONICA", - "AMERICAN EXPRESS SA", "REDGUARD SA"] + "AMERICAN EXPRESS SA", "REDGUARD SA", "BANCO CREDICOOP", "POSNET SRL", "CULLIGAN ARG SA", "EUROTIME SA", "posnet srl"] def compras(hojaC, hojaG, mes): global valor1 global valor2 global gastoTotal global rowC + global columnC for celda in hojaC['D']: for gasto in gastos: #Busca cada uno de los gastos definidos en la lista de la linea 27 if celda.value == gasto: #Compara el valor de la celda con los gastos @@ -90,21 +100,24 @@ def compras(hojaC, hojaG, mes): for celda2 in hojaG['A']: if celda2.value == mes: rowC = celda2.row - return gastoTotal and rowC + columnasPosibles = [hojaG['G6'], hojaG['H6']] + for columna in columnasPosibles: + if columna.value == "Gastos" or "gastos": + columnC = columna.column + return gastoTotal, rowC and columnC +año = str(input('Año de los libros (ejemplo: 2020): ')) while run == True: ruta1 = str(input("Ubicacion del libro : ")) archivo = load_workbook(ruta1) #Abre el archivo Excel del libro a utilizar hoja = archivo.active mes = int(input('Mes a cargar (insertar nº del 1-12): ')) - año = str(input('Año del libro (ejemplo: 2020): ')) global nombremes #Crea la variable donde se alojara el nombre del mes, para asi encontrar en el archivo de DDJJ la fila donde debera ubicar los datos global totalmes #Crea la variable donde se alojaran los totales de los meses, para asi encontrar mas facilmente los datos necesarios if mes == 1: nombremes = "ENERO" totalmes = f"TOTALES AL 31/01/{año}" - fecha = "1/1/2020" elif mes == 2: nombremes = "FEBRERO" totalmes = f"TOTALES AL 28/02/{año}" @@ -122,7 +135,7 @@ def compras(hojaC, hojaG, mes): totalmes = f"TOTALES AL 30/06/{año}" elif mes == 7: nombremes = "JULIO" - totalmes = f"TOTALES AL 31/07{año}" + totalmes = f"TOTALES AL 31/07/{año}" elif mes == 8: nombremes = "AGOSTO" totalmes = f"TOTALES AL 31/08/{año}" @@ -162,8 +175,8 @@ def compras(hojaC, hojaG, mes): hoja2 = archivo2['COMPRAS'] compras(hoja, hoja2, nombremes) libroF(hoja, totalmes, año, libro) - hoja2.cell(row=rowC, column= 7).value = gastoTotal - hoja2.cell(row=rowC, column= 5).value = netogravado - gastoTotal + hoja2.cell(row=rowC, column= (columnC)).value = gastoTotal + hoja2.cell(row=rowC, column= (columnC - 2)).value = (netogravado - gastoTotal) alicuota(hoja, hoja2, mes, año, libro) archivo2.save(ruta2) notError1 = True From 7237a5d75b307454e44b4ad97df50f7901c1fe8e Mon Sep 17 00:00:00 2001 From: mate Date: Thu, 17 Feb 2022 18:09:41 -0300 Subject: [PATCH 15/15] Version AUTOMATIZADA --- testing.py | 241 +++++++++++++++++++++++++++-------------------------- 1 file changed, 125 insertions(+), 116 deletions(-) diff --git a/testing.py b/testing.py index 43a46c2..de99341 100644 --- a/testing.py +++ b/testing.py @@ -1,8 +1,10 @@ -from datetime import datetime +from datetime import date, datetime from openpyxl import workbook, cell, load_workbook +from os import listdir + +run = True # Crea una variable para que el script siga corriendo siempre que el usuario quiera +ganancias = input("Ubicacion del archivo DDJJ Ganancias: ") -run = True #Crea una variable para que el script siga corriendo siempre que el usuario quiera -ruta2 = input("Ubicacion del archivo DDJJ Ganancias: ") def libroF(hoja, mes, año, libro): global netogravado @@ -10,31 +12,35 @@ def libroF(hoja, mes, año, libro): global regEsp global importetotal global fila - for celda in hoja['A']: #Recorre la columna A en busca de la fila donde estan los valores, gracias a la variable totalmes - if celda.value == mes: + # Recorre la columna A en busca de la fila donde estan los valores, gracias a la variable totalmes + for celda in hoja['A']: + if celda.value == mes: fila = celda.row - if libro == 1: - netogravado = hoja[f"D{fila}"].value #Busca los valores del neto gravado, el IVA, y el total en base a la fila donde encontro a la variable totalmes + if libro == 1: + # Busca los valores del neto gravado, el IVA, y el total en base a la fila donde encontro a la variable totalmes + netogravado = hoja[f"D{fila}"].value importetotal = hoja[f"F{fila}"].value return netogravado and importetotal elif libro == 2: - netogravado = hoja[f"E{fila}"].value #Cambia las celdas en las que se encuentran los valores deseados segun el libro donde se busque, debido a que esto ocasiono un error en el programa + # Cambia las celdas en las que se encuentran los valores deseados segun el libro donde se busque, debido a que esto ocasiono un error en el programa + netogravado = hoja[f"E{fila}"].value nogravado = hoja[f"B{fila}"].value - regEsp = hoja[f"C{fila}"].value - importetotal = hoja[f"G{fila}"].value - return netogravado, nogravado, regEsp, importetotal + regEsp = hoja[f"C{fila}"].value + importetotal = hoja[f"G{fila}"].value + return netogravado, nogravado, regEsp, importetotal elif celda.value == f"TOTALES AL 29/02/{año}": fila = celda.row - if libro == 1: + if libro == 1: netogravado = hoja[f"D{fila}"].value importetotal = hoja[f"F{fila}"].value return netogravado and importetotal elif libro == 2: netogravado = hoja[f"E{fila}"].value nogravado = hoja[f"B{fila}"].value - regEsp = hoja[f"C{fila}"].value + regEsp = hoja[f"C{fila}"].value importetotal = hoja[f"G{fila}"].value - return netogravado, nogravado, regEsp, importetotal + return netogravado, nogravado, regEsp, importetotal + def alicuota(hoja, hoja2, mes, año, libro): global valoresIVA @@ -53,16 +59,16 @@ def alicuota(hoja, hoja2, mes, año, libro): hoja2.cell(row=celda2.row, column=9).value = lista elif libro == 2: hoja2.cell(row=celda2.row, column=7).value = lista - -def ventas(hojaV, mes): #Crea una funcion que busca dentro del archivo DDJJ Ganancias la fila y la columna en la cual debera ubicar los datos + +def ventas(hojaV, mes): # Crea una funcion que busca dentro del archivo DDJJ Ganancias la fila y la columna en la cual debera ubicar los datos global fila1 global columna for celda in hojaV['A']: if celda.value == mes: fila1 = celda.row for celda2 in hojaV['C']: - if celda2.value == "$": #La diferencia entre "$" y "gravado" es que en algunos archivos aparece una, y en otros aparecen ambas. Por eso es una solucion global. + if celda2.value == "$": # La diferencia entre "$" y "gravado" es que en algunos archivos aparece una, y en otros aparecen ambas. Por eso es una solucion global. fila2 = celda2.row if hojaV.cell(row=fila2, column=5).value == "gravado": columna = 5 @@ -74,11 +80,13 @@ def ventas(hojaV, mes): #Crea una funcion que busca dentro del archivo DDJJ Gana break elif celda2.value == "gravadas": columna = celda2.column - return columna - return fila1 + return columna + return fila1 + gastos = ["BCO.CREDICOOP - ARGENCARD", "BANCO CREDICOOP - CABAL", "EDENOR SA", "TELEFONICA", - "AMERICAN EXPRESS SA", "REDGUARD SA", "BANCO CREDICOOP", "POSNET SRL", "CULLIGAN ARG SA", "EUROTIME SA", "posnet srl"] + "AMERICAN EXPRESS SA", "REDGUARD SA", "BANCO CREDICOOP", "POSNET SRL", "CULLIGAN ARG SA", "EUROTIME SA", "posnet srl"] + def compras(hojaC, hojaG, mes): global valor1 @@ -87,110 +95,111 @@ def compras(hojaC, hojaG, mes): global rowC global columnC for celda in hojaC['D']: - for gasto in gastos: #Busca cada uno de los gastos definidos en la lista de la linea 27 - if celda.value == gasto: #Compara el valor de la celda con los gastos - row = celda.row + 1 #Al tener uno o dos valores (ya que hay importes con un iva de 10,5% y otros con 21%) - row2 = celda.row + 2 #Busca los valores de las 2 filas siguientes a donde se encuentra el concepto gasto - valor1 = hojaC.cell(row=row, column=1).value #Como los valores siempre estan en la columna A (o column=1), toma esos valores + for gasto in gastos: # Busca cada uno de los gastos definidos en la lista de la linea 27 + if celda.value == gasto: # Compara el valor de la celda con los gastos + # Al tener uno o dos valores (ya que hay importes con un iva de 10,5% y otros con 21%) + row = celda.row + 1 + # Busca los valores de las 2 filas siguientes a donde se encuentra el concepto gasto + row2 = celda.row + 2 + # Como los valores siempre estan en la columna A (o column=1), toma esos valores + valor1 = hojaC.cell(row=row, column=1).value valor2 = hojaC.cell(row=row2, column=1).value - if valor2 == None: #Evita el error por NoneType, ya que si encuentra que el segundo valor es nulo, solo suma el valor1 - gastoTotal =+ valor1 + if valor2 == None: # Evita el error por NoneType, ya que si encuentra que el segundo valor es nulo, solo suma el valor1 + gastoTotal = + valor1 elif type(valor1) and type(valor2) == float: - gastoTotal =+ valor1 + valor2 + gastoTotal = + valor1 + valor2 for celda2 in hojaG['A']: if celda2.value == mes: rowC = celda2.row columnasPosibles = [hojaG['G6'], hojaG['H6']] for columna in columnasPosibles: - if columna.value == "Gastos" or "gastos": + if columna.value == "Gastos": columnC = columna.column - return gastoTotal, rowC and columnC - -año = str(input('Año de los libros (ejemplo: 2020): ')) -while run == True: - ruta1 = str(input("Ubicacion del libro : ")) - archivo = load_workbook(ruta1) #Abre el archivo Excel del libro a utilizar - hoja = archivo.active - mes = int(input('Mes a cargar (insertar nº del 1-12): ')) - - global nombremes #Crea la variable donde se alojara el nombre del mes, para asi encontrar en el archivo de DDJJ la fila donde debera ubicar los datos - global totalmes #Crea la variable donde se alojaran los totales de los meses, para asi encontrar mas facilmente los datos necesarios - if mes == 1: - nombremes = "ENERO" - totalmes = f"TOTALES AL 31/01/{año}" - elif mes == 2: - nombremes = "FEBRERO" - totalmes = f"TOTALES AL 28/02/{año}" - elif mes == 3: - nombremes = "MARZO" - totalmes = f"TOTALES AL 31/03/{año}" - elif mes == 4: - nombremes = "ABRIL" - totalmes = f"TOTALES AL 30/04/{año}" - elif mes == 5: - nombremes = "MAYO" - totalmes = f"TOTALES AL 31/05/{año}" - elif mes == 6: - nombremes = "JUNIO" - totalmes = f"TOTALES AL 30/06/{año}" - elif mes == 7: - nombremes = "JULIO" - totalmes = f"TOTALES AL 31/07/{año}" - elif mes == 8: - nombremes = "AGOSTO" - totalmes = f"TOTALES AL 31/08/{año}" - elif mes == 9: - nombremes = "SEPTIEMBRE" - totalmes = f"TOTALES AL 30/09/{año}" - elif mes == 10: - nombremes = "OCTUBRE" - totalmes = f"TOTALES AL 31/10/{año}" - elif mes == 11: - nombremes = "NOVIEMBRE" - totalmes = f"TOTALES AL 30/11/{año}" - elif mes == 12: - nombremes = "DICIEMBRE" - totalmes = f"TOTALES AL 31/12/{año}" - else: - print("Error en el mes (linea 12-37)") - - - - archivo2 = load_workbook(ruta2) #Busca y abre el archivo donde se alojaran los datos del libro - - global notError1 - notError1 = False #Evita errores en el caso de que el usuario inserte mal el numero + return gastoTotal, rowC and columnC + elif columna.value == "gastos": + columnC = columna.column + return gastoTotal, rowC and columnC - while notError1 == False: - libro = int(input('Libro (ventas=1, compras=2): ')) #El usuario decide si va a cargar un libro de Ventas o de compras) - if libro == 1: - hoja2 = archivo2['VENTAS'] - ventas(hoja2, nombremes) - libroF(hoja, totalmes, año, libro) - hoja2.cell(row=fila1, column=columna).value = netogravado #Carga el valor obtenido en la fila y la columna segun la funcion ventas() - alicuota(hoja, hoja2, mes, año, libro) - archivo2.save(ruta2) #Sobreescribe el archivo original, con los datos obtenidos - notError1 = True - elif libro == 2: - hoja2 = archivo2['COMPRAS'] - compras(hoja, hoja2, nombremes) - libroF(hoja, totalmes, año, libro) - hoja2.cell(row=rowC, column= (columnC)).value = gastoTotal - hoja2.cell(row=rowC, column= (columnC - 2)).value = (netogravado - gastoTotal) - alicuota(hoja, hoja2, mes, año, libro) - archivo2.save(ruta2) - notError1 = True +def mes(libro, type): + global mesL + if type == 1: + num1 = int(libro[-6]) + try: + num2 = int(libro[-7]) + mesL = f"{num2}{num1}" + return str(mesL) + except: + mesL = num1 + return str(mesL) + elif type == 2: + num1 = int(libro[-6]) + try: + num2 = int(libro[-7]) + mesL = f"{num2}{num1}" + return str(mesL) + except: + mesL = num1 + return str(mesL) - global notError2 - notError2 = False +año = str(input('Año de los libros (ejemplo: 2020): ')) +pathV = input("Inserte el directorio donde se encuentren los libros de ventas: ") +pathC = input("Inserte el directorio donde se encuentren los libros de compras: ") +librosV = listdir(pathV) +librosC = listdir(pathC) - while notError2 == False: - sigLibro = int(input('¿Desea ingresar otro libro?(Si=1, No=2): ')) - if sigLibro == 1: - run = True - notError2 = True - elif sigLibro == 2: - run = False - notError2 = True - else: - notError2 = False +total_mes = { + "1": f"TOTALES AL 31/01/{año}", + "2": f"TOTALES AL 28/02/{año}", + "3": f"TOTALES AL 31/03/{año}", + "4": f"TOTALES AL 30/04/{año}", + "5": f"TOTALES AL 31/05/{año}", + "6": f"TOTALES AL 30/06/{año}", + "7": f"TOTALES AL 31/07/{año}", + "8": f"TOTALES AL 31/08/{año}", + "9": f"TOTALES AL 30/09/{año}", + "10": f"TOTALES AL 31/10/{año}", + "11": f"TOTALES AL 30/11/{año}", + "12": f"TOTALES AL 31/12/{año}" +} +nombre_mes = { + 1: "ENERO", + 2: "FEBRERO", + 3: "MARZO", + 4: "ABRIL", + 5: "MAYO", + 6: "JUNIO", + 7: "JULIO", + 8: "AGOSTO", + 9: "SEPTIEMBRE", + 10: "OCTUBRE", + 11: "NOVIEMBRE", + 12: "DICIEMBRE", +} +while run == True: + for libro in librosV: + total = total_mes[mes(libro, 1)] + nombre = nombre_mes[int(mes(libro, 1))] + archivo = load_workbook(f"{pathV}{libro}") + archivo2 = load_workbook(ganancias) + hoja = archivo.active + libroF(hoja, total, año, 1) + hoja2 = archivo2['VENTAS'] + ventas(hoja2, nombre) + hoja2.cell(row=fila1, column=columna).value = netogravado + alicuota(hoja, hoja2, int(mes(libro, 1)), año, 1) + archivo2.save(ganancias) + for libro in librosC: + total = total_mes[mes(libro, 2)] + nombre = nombre_mes[int(mes(libro, 2))] + archivoC = load_workbook(f"{pathC}{libro}") + archivo2 = load_workbook(ganancias) + hojaC = archivoC.active + hoja2 = archivo2['COMPRAS'] + compras(hojaC, hoja2, nombre) + print(rowC, columnC) + libroF(hojaC, total, año, 2) + hoja2.cell(row=rowC, column= (columnC)).value = gastoTotal + hoja2.cell(row=rowC, column= (columnC - 2)).value = (netogravado - gastoTotal) + alicuota(hojaC, hoja2, int(mes(libro, 2)), año, 2) + archivo2.save(ganancias) + break \ No newline at end of file