Skip to content
Extraits de code Groupes Projets
Valider 91bd2cfb rédigé par Julien - Le Filament's avatar Julien - Le Filament
Parcourir les fichiers

[ADD] add order export data

parent bcb5b82e
Aucune branche associée trouvée
Aucune étiquette associée trouvée
2 requêtes de fusion!414.0 new fields,!3[ADD] add some fields for import
...@@ -29,6 +29,11 @@ def export_xlsx(data_by_sheet): ...@@ -29,6 +29,11 @@ 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):
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) sheet.write(0, col_idx, header)
for row_idx, row in enumerate(rows, start=1): for row_idx, row in enumerate(rows, start=1):
...@@ -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)
programmes = request.env["sale.project.subvention"].search([])
file = {} file = {}
for project in projects: for programme in programmes:
file[project.name] = [{"test": "test"}] # 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)
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter