Skip to content

Commit

Permalink
Import from path (#20)
Browse files Browse the repository at this point in the history
* feat: import from path

* export facturi

* export import facturi pentru v2, actualizare minim brut pentru 2025
  • Loading branch information
ClimenteA authored Dec 14, 2024
1 parent 5be2f5b commit 42e8c6b
Show file tree
Hide file tree
Showing 7 changed files with 76 additions and 14 deletions.
4 changes: 1 addition & 3 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
.venv
stocare
stocare_v1
stocare_v2
stocare*
.vscode
.ipynb_checkpoints
.venv
Expand Down
2 changes: 2 additions & 0 deletions facturi/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -379,6 +379,8 @@ def get_localitate(localitate: str):

@staticmethod
def clean_entry(entry: str | None):
if isinstance(entry, int):
return entry
if entry is None:
return ""
entry = re.sub(r"\s{2,}", " ", unidecode(entry))
Expand Down
24 changes: 19 additions & 5 deletions setari/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ def post(self, request):
dim2.insert_incasari()
dim2.insert_cheltuieli()
dim2.insert_documente()
dim2.insert_facturi()

messages.add_message(
request,
Expand All @@ -55,7 +56,6 @@ def post(self, request):
return redirect("/setari/")



class SetariView(View):

def get(self, request):
Expand All @@ -71,7 +71,6 @@ def post(self, request, *args, **kwargs):
form = SetariForm(request.POST)

if not form.is_valid():
print("------", form.errors)
return render(
request,
"setari.html",
Expand Down Expand Up @@ -99,17 +98,32 @@ def post(self, request):
storage_path = os.path.join(extracts_path, "stocare")
os.makedirs(storage_path, exist_ok=True)

def save_model_to_csv(model, filename):
copyfile = lambda fp: shutil.copy2(fp, os.path.join(storage_path, os.path.basename(fp)))

def save_model_to_csv(model, filename: str):
data = model.objects.all()

if len(data) == 0:
return

for item in data:
shutil.copy2(item.fisier.path, os.path.join(storage_path, os.path.basename(item.fisier.path)))

if hasattr(item, "fisier"):
if item.fisier:
copyfile(item.fisier.path)
if hasattr(item, "fisier_efactura_xml"):
if item.fisier_efactura_xml:
copyfile(item.fisier_efactura_xml.path)
if hasattr(item, "fisier_factura_pdf"):
if item.fisier_factura_pdf:
copyfile(item.fisier_factura_pdf.path)

df = pd.DataFrame(data.values())
df.to_csv(os.path.join(storage_path, filename), index=False)

save_model_to_csv(CheltuialaModel, "Cheltuiala.csv")
save_model_to_csv(IncasariModel, "Incasari.csv")
save_model_to_csv(DocumenteModel, "Documente.csv")
save_model_to_csv(FacturaModel, "Factura.csv")

df = pd.DataFrame(SetariModel.objects.all().values())
df.to_csv(os.path.join(storage_path, "Setari.csv"), index=False)
Expand Down
2 changes: 1 addition & 1 deletion static/minim_brut_an_val.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,5 @@
"2022": 2550,
"2023": 3000,
"2024": 3300,
"2025": 3700
"2025": 4050
}
2 changes: 1 addition & 1 deletion static/versiune.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
2.0.2
2.0.3
6 changes: 2 additions & 4 deletions templates/setari.html
Original file line number Diff line number Diff line change
Expand Up @@ -70,10 +70,8 @@ <h1>⚙️ Setari</h1>
source: { local: localitati }
});">
<label>
Alege localitatea:
<input name="localitate" {% if setari_form.localitate.value %}
value="{{setari_form.localitate.value}}" {% endif %} x-ref="searchInputEl" autocomplete="off"
type="text" placeholder="Iasi...">
<span>Alege localitatea:</span>
<input name="localitate" {% if setari_form.localitate.value %} value="{{ setari_form.localitate.value }}" {% endif %} x-ref="searchInputEl" autocomplete="off" type="text" placeholder="Iasi...">
{{ setari_form.localitate.errors }}
</label>
</div>
Expand Down
50 changes: 50 additions & 0 deletions utils/data_import_v2.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
import os
import ast
import shutil
import pandas as pd
from documente.models import DocumenteModel
from incasari.models import IncasariModel
from cheltuieli.models import CheltuialaModel
from setari.models import SetariModel
from facturi.models import FacturaModel
from django.utils import timezone
from datetime import datetime
from core.settings import get_media_path
Expand Down Expand Up @@ -143,3 +145,51 @@ def insert_documente(self):
parse_tip_document=False,
)
instance.save()

def insert_facturi(self):

df = pd.read_csv(os.path.join("stocare", "Factura.csv"))
df = df.astype(object).where(df.notna(), None)
records = df.to_dict('records')
media_path = get_media_path()

for record in records:

if record["fisier_efactura_xml"]:
filepath_fisier_efactura_xml = os.path.join("stocare", record["fisier_efactura_xml"])
shutil.copy2(filepath_fisier_efactura_xml, os.path.join(media_path, record["fisier_efactura_xml"]))

if record["fisier_factura_pdf"]:
filepath_fisier_factura_pdf = os.path.join("stocare", record["fisier_factura_pdf"])
shutil.copy2(filepath_fisier_factura_pdf, os.path.join(media_path, record["fisier_factura_pdf"]))

instance = FacturaModel(
serie = record["serie"],
numar = record["numar"],
data_emitere = datetime.fromisoformat(record["data_emitere"]),
data_scadenta = datetime.fromisoformat(record["data_emitere"]),
tip_factura = record["tip_factura"],
# Client
nume = record["nume"],
cif = record["cif"],
nr_reg_com = record["nr_reg_com"],
localitate = record["localitate"],
adresa = record["adresa"],
email = record["email"],
telefon = record["telefon"],
# Plata
tip_tranzactie = record["tip_tranzactie"],
total_de_plata = record["total_de_plata"],
valuta = record["valuta"],
# Produse sau servicii
# id, numar_unitati, total_de_plata, nume_produs_sau_serviciu, cod_unitate, pret_pe_unitate, subtotal
produse_sau_servicii = ast.literal_eval(record["produse_sau_servicii"]),
nota = record["nota"],
data_inserarii = record["data_inserarii"],

# Fisiere
fisier_efactura_xml = record["fisier_factura_pdf"],
fisier_factura_pdf = record["fisier_factura_pdf"],
)
instance.save()

0 comments on commit 42e8c6b

Please sign in to comment.