Skip to content
Extraits de code Groupes Projets

[ADD] add some fields for import

Fusionnées
Julien - Le Filamentrequested to merge
14.0-new-fields into 14.0-ahp12
4 open threads
+ 83
12
@@ -29,7 +29,12 @@ def export_xlsx(data_by_sheet):
@@ -29,7 +29,12 @@ def export_xlsx(data_by_sheet):
headers = list(rows[0].keys())
headers = list(rows[0].keys())
for col_idx, header in enumerate(headers):
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 row_idx, row in enumerate(rows, start=1):
for col_idx, header in enumerate(headers):
for col_idx, header in enumerate(headers):
@@ -82,12 +87,73 @@ class ApExportController(http.Controller):
@@ -82,12 +87,73 @@ class ApExportController(http.Controller):
"""
"""
export commande
export commande
"""
"""
projects = request.env["sale.project"].search([("saison_id", "=", saison.id)])
# un onglet par programme (subvention)
file = {}
programmes = request.env["sale.project.subvention"].search([])
for project in projects:
file = {}
file[project.name] = [{"test": "test"}]
 
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
return file
def get_fin_data(self, saison):
def get_fin_data(self, saison):
@@ -118,13 +184,18 @@ class ApExportController(http.Controller):
@@ -118,13 +184,18 @@ class ApExportController(http.Controller):
"Télephone": project.partner_id.phone or "",
"Télephone": project.partner_id.phone or "",
"Email": project.partner_id.email or "",
"Email": project.partner_id.email or "",
"Commune intervention": inter.city or "",
"Commune intervention": inter.city or "",
"Geo latitude": str(inter.latitude).replace(',', '.'),
"Geo latitude": str(inter.latitude).replace(",", "."),
"Geo longitude": str(inter.longitude).replace(',', '.'),
"Geo longitude": str(inter.longitude).replace(",", "."),
"Bord de départementale": inter.near_road or "",
"Bord de départementale": inter.near_road or "",
"Forme juridique": project.partner_id.partner_company_type_id.name or "",
"Forme juridique": project.partner_id.partner_company_type_id.name
"Type de culture": project.partner_id.culture_type_id.name or "",
or "",
#todo format date
"Type de culture": project.partner_id.culture_type_id.name
"Date de première adhésion": project.partner_id.year_1st_membership or "",
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 "",
"Diffusion sur site internet": project.online or "",
"Longueur de haie": inter.intervention_length or "",
"Longueur de haie": inter.intervention_length or "",
"Nombre de plants": inter.plant_qty or "",
"Nombre de plants": inter.plant_qty or "",
@@ -134,7 +205,7 @@ class ApExportController(http.Controller):
@@ -134,7 +205,7 @@ class ApExportController(http.Controller):
"Implantation": inter.location_id.name or "",
"Implantation": inter.location_id.name or "",
"Objectif plantation": project.plant_goal_id.name or "",
"Objectif plantation": project.plant_goal_id.name or "",
"Avancement": project.admin_state_id.name,
"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)
file.get(sheet_name).append(project_data)
Chargement en cours