Compare commits
4 Commits
092b925b68
...
develop
| Author | SHA1 | Date | |
|---|---|---|---|
| f12e5c05a1 | |||
| 3b9db43f0d | |||
| 8df9be825f | |||
| d0fc473134 |
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1,3 +1,4 @@
|
||||
secrets.env
|
||||
pdfs/
|
||||
output/
|
||||
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -13,6 +13,10 @@ extract_table_settings = {
|
||||
}
|
||||
|
||||
|
||||
class ExtractError(Exception):
|
||||
pass
|
||||
|
||||
|
||||
def extract_date(page_text):
|
||||
"""Extract date from a page
|
||||
|
||||
@@ -123,12 +127,10 @@ def extract_save(pdf_file, dest, save=[]):
|
||||
pdf_file = Path(pdf_file)
|
||||
xlss = extract_plan(pdf_file, dest)
|
||||
|
||||
if save != []:
|
||||
dfs = from_pdf(pdf_file)
|
||||
|
||||
for s in save:
|
||||
dfs[s].to_excel(xlss[s], sheet_name=s, index=False)
|
||||
logging.info(f"{xlss[s]} saved")
|
||||
return {k: v for k, v in xlss.items() if k in save}
|
||||
|
||||
return xlss
|
||||
return {k: v for k, v in xlss.items() if k in save}
|
||||
|
||||
@@ -75,6 +75,7 @@ def fsm():
|
||||
line = yield
|
||||
elif current_state == "add_totaux":
|
||||
if line[0] == "Totaux":
|
||||
if line[6] is None:
|
||||
row.update(
|
||||
{
|
||||
"Loyers": line[2],
|
||||
@@ -86,6 +87,18 @@ def fsm():
|
||||
"Impayés": line[9],
|
||||
}
|
||||
)
|
||||
else:
|
||||
row.update(
|
||||
{
|
||||
"Loyers": line[2],
|
||||
"Taxes": line[3],
|
||||
"Provisions": line[4],
|
||||
"Divers": line[5],
|
||||
"Total": line[6],
|
||||
"Réglés": line[7],
|
||||
"Impayés": line[8],
|
||||
}
|
||||
)
|
||||
line = yield row
|
||||
row = {}
|
||||
current_state = "new_row"
|
||||
|
||||
@@ -42,12 +42,41 @@ def extract():
|
||||
@extract.command()
|
||||
@click.argument("pdf_file", required=1)
|
||||
@click.option("--dest", help="Où mettre les fichiers produits", default="")
|
||||
def on(pdf_file, dest):
|
||||
@click.option(
|
||||
"--only-plan",
|
||||
help="Ne produit rien mais indique les changements",
|
||||
default=False,
|
||||
is_flag=True,
|
||||
)
|
||||
@click.option(
|
||||
"--force",
|
||||
help="Écrase les fichiers produits précédemment",
|
||||
default=False,
|
||||
is_flag=True,
|
||||
)
|
||||
def on(pdf_file, dest, force, only_plan):
|
||||
pdf_file = Path(pdf_file)
|
||||
if not dest:
|
||||
pdf_path = Path(pdf_file)
|
||||
dest = pdf_path.parent
|
||||
else:
|
||||
dest = Path(dest)
|
||||
|
||||
extract_save(pdf_file, dest)
|
||||
assert pdf_file.exists()
|
||||
logging.info(f"Found {pdf_file}")
|
||||
|
||||
plan_dest = extract_plan(pdf_file, dest)
|
||||
save = []
|
||||
for k, p in plan_dest.items():
|
||||
if not p.exists() or force:
|
||||
save.append(k)
|
||||
|
||||
if only_plan:
|
||||
for s in save:
|
||||
logging.info(f"Planing to create {plan_dest[s]}")
|
||||
else:
|
||||
dest.mkdir(parents=True, exist_ok=True)
|
||||
extract_save(pdf_file, dest, save)
|
||||
|
||||
|
||||
@extract.command()
|
||||
|
||||
Reference in New Issue
Block a user