Skip to content
Extraits de code Groupes Projets

[ADD] add some fields for import

1 file
+ 83
12
Comparer les modifications
  • Côte à côte
  • En ligne
+ 83
12
@@ -29,7 +29,12 @@ def export_xlsx(data_by_sheet):
headers = list(rows[0].keys())
for col_idx, header in enumerate(headers):
sheet.write(0, col_idx, header)
if header[:3] == "ROT":
cell_format = workbook.add_format()
cell_format.set_rotation(90)
sheet.write(0, col_idx, header[3:], cell_format)
else:
sheet.write(0, col_idx, header)
for row_idx, row in enumerate(rows, start=1):
for col_idx, header in enumerate(headers):
@@ -82,12 +87,73 @@ class ApExportController(http.Controller):
"""
export commande
"""
projects = request.env["sale.project"].search([("saison_id", "=", saison.id)])
file = {}
# un onglet par programme (subvention)
programmes = request.env["sale.project.subvention"].search([])
for project in projects:
file[project.name] = [{"test": "test"}]
file = {}
for programme in programmes:
# on créer l onglet du programme
file[programme.name] = []
page = file.get(programme.name)
# tout les projets sous ce programme pour la saison dont le devis est signé
projects = request.env["sale.project"].search(
[
("saison_id", "=", saison.id),
("project_subvention_id", "=", programme.id),
("sale_order_id.state", "=", "sale"),
]
)
interventions = request.env["sale.intervention"].search(
[("project_id", "in", projects.ids)]
)
plant_data = {}
seeders_list = []
for intervention in interventions:
seeders_list.append(intervention.partner_id)
for sequence in intervention.plant_sequence_ids:
plant = plant_data.setdefault(sequence.product_id, {})
if plant.get(f"ROT{intervention.partner_id.name}"):
plant[f"ROT{intervention.partner_id.name}"] += sequence.qty
else:
plant[f"ROT{intervention.partner_id.name}"] = sequence.qty
# format data for xls
# premiere ligne on va chercher les secteurs de plantation
first_line = {
"Article": "Secteur plantation",
"Nom latin": "",
"Nom de la catégorie": "",
"Numéro de pépiniesriste": "",
}
for seeder in set(seeders_list):
secteur_plat = (
request.env["sale.project"]
.search([("partner_id", "=", seeder.id)])
.mapped("plant_sector_id")
.mapped("name")
)
first_line[f"ROT{seeder.name}"] = ",".join(secteur_plat)
page.append(first_line)
for plant in plant_data:
line = {}
line.update(
{
"Article": plant.name,
"Nom latin": plant.latin_name or "",
"Nom de la catégorie": plant.categ_id.name or "",
"Numéro de pépiniériste": plant.categ_id.nurseryman_id or "",
}
)
qty = plant_data.get(plant)
for seeder in qty:
line[seeder] = qty[seeder]
page.append(line)
return file
def get_fin_data(self, saison):
@@ -118,13 +184,18 @@ class ApExportController(http.Controller):
"Télephone": project.partner_id.phone or "",
"Email": project.partner_id.email or "",
"Commune intervention": inter.city or "",
"Geo latitude": str(inter.latitude).replace(',', '.'),
"Geo longitude": str(inter.longitude).replace(',', '.'),
"Geo latitude": str(inter.latitude).replace(",", "."),
"Geo longitude": str(inter.longitude).replace(",", "."),
"Bord de départementale": inter.near_road or "",
"Forme juridique": project.partner_id.partner_company_type_id.name or "",
"Type de culture": project.partner_id.culture_type_id.name or "",
#todo format date
"Date de première adhésion": project.partner_id.year_1st_membership or "",
"Forme juridique": project.partner_id.partner_company_type_id.name
or "",
"Type de culture": project.partner_id.culture_type_id.name
or "",
"Date de première adhésion": (
project.partner_id.year_1st_membership.strftime("%d-%m-%Y")
if project.partner_id.year_1st_membership
else ""
),
"Diffusion sur site internet": project.online or "",
"Longueur de haie": inter.intervention_length or "",
"Nombre de plants": inter.plant_qty or "",
@@ -134,7 +205,7 @@ class ApExportController(http.Controller):
"Implantation": inter.location_id.name or "",
"Objectif plantation": project.plant_goal_id.name or "",
"Avancement": project.admin_state_id.name,
"Aides financières": self.get_financial_help(inter)
"Aides financières": self.get_financial_help(inter),
}
file.get(sheet_name).append(project_data)
Chargement en cours