Skip to content
Extraits de code Groupes Projets
Valider 8d5a2067 rédigé par Benjamin - Le Filament's avatar Benjamin - Le Filament
Parcourir les fichiers

[WIP] remove fields & functions & wizard for new process

parent 3d137129
Aucune branche associée trouvée
Aucune étiquette associée trouvée
1 requête de fusion!5[WIP] remove fields & functions & wizard for new process
......@@ -27,7 +27,6 @@
"wizard/lm_renew_wizard.xml",
"wizard/lm_inscription_wizard.xml",
"wizard/lm_change_year_wizard.xml",
"wizard/lm_survey_import_wizard.xml",
# views
"views/assets.xml",
"views/scop_liste_ministere.xml",
......
Ce diff est replié.
......@@ -4,4 +4,3 @@
from . import lm_change_year_wizard
from . import lm_renew_wizard
from . import lm_inscription_wizard
from . import lm_survey_import_wizard
# © 2022 Le Filament (<http://www.le-filament.com>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
import base64
from io import BytesIO
from openpyxl import load_workbook
from odoo import _, fields, models
from odoo.exceptions import UserError
class LMSurveyImportWizard(models.TransientModel):
_name = "scop.lm.survey.import.wizard"
_description = "Import de LM d'ajustement"
file_lm_survey = fields.Binary("Fichier à importer")
filename_lm_survey = fields.Char("Nom du fichier")
# ------------------------------------------------------
# Button actions
# ------------------------------------------------------
def load_lm_survey_adjust(self):
"""
IMPORT AJUSTEMENT ETUDES
Load XLSX File and write LM and LF into the database
:return:
"""
# CHECK SI LE FICHIER EST UN .XLSX
self.check_peek()
# CHARGE LE WORKBOOK
wb = load_workbook(BytesIO(base64.b64decode(self.file_lm_survey)))
# INITIALISE LES VARIABLES
fields_lm = list(self.env["scop.liste.ministere"]._fields.keys())
fields_lf = ["revenue_cg", "av_cg", "wage_cg"]
to_be_created = 0
# CREE LE JOB BATCH
batch_name = (
fields.Datetime.to_string(fields.Datetime.now())
+ " Ajout des LM d'ajustement"
)
batch = self.env["queue.job.batch"].get_new_batch(batch_name)
# TRAITEMENT PAR WORKSHEET
for name in wb.sheetnames:
ws = wb[name]
# .. PREPARE LA LISTE DES CHAMPS HEADER
fields_lf_name = []
fields_lm_name = []
fields_error = []
# col_number = 0
col_lf_number = []
for cell in ws[1]:
if cell.value == "EOF":
break
# col_number += 1
if cell.value in fields_lf:
fields_lf_name.append(cell.value)
col_lf_number.append(cell.col_idx)
elif cell.value in fields_lm:
fields_lm_name.append(cell.value)
elif cell.value is None:
raise UserError(
_(
"Merci de supprimer les colonnes sans en-tête dans votre "
"fichier d'import. "
)
)
else:
fields_error.append(cell.value)
# .. CHECK SI ERREUR
if fields_error:
raise UserError(
_("Les champs %s ne sont pas reconnus sur Odoo" % fields_error)
)
# .. "ELSE" RECUPERE LES DONNEES
# row_number = 0
for row in ws:
# row_number += 1
if row[0].row > 2:
values_lm = {}
values_lf = {}
col_lm = 0
col_lf = 0
for r in row:
if not r.value == "EOF":
if r.col_idx in col_lf_number:
if r.value:
values_lf[fields_lf_name[col_lf]] = r.value
col_lf += 1
else:
if r.value:
values_lm[fields_lm_name[col_lm]] = r.value
col_lm += 1
if values_lm.get("siren", False) and values_lm.get("year", False):
self.env["scop.liste.ministere"].with_context(
job_batch=batch
).with_delay().create_lm_survey(values_lm, values_lf)
to_be_created += 1
batch.enqueue()
# RETURN UN WIZARD A TITRE INFORMATIF
message = (
"L'analyse du fichier s'est bien déroulée - %s "
"listes ministère sont en cours de traitement ..." % to_be_created
)
return {
"type": "ir.actions.act_window.message",
"title": _("LM en cours de création"),
"message": _(message),
"close_button_title": False,
"buttons": [
{
"type": "ir.actions.act_window_close",
"name": "Fermer",
},
],
}
# ------------------------------------------------------
# Business method
# ------------------------------------------------------
def check_peek(self):
"""
Return error if file is not .xlsx
"""
peek = self.filename_lm_survey[-4:]
if peek != "xlsx":
raise UserError(_("Ce fichier ne semble pas être un fichier .xlsx"))
def check_existing_liasse(self, type_liasse):
"""
Raise error if liasse already exists
"""
if (
len(
self.env["scop.liasse.fiscale"].search(
[
("year", "=", self.year),
("type_id", "=", type_liasse),
("partner_id", "=", self.partner_id.id),
]
)
)
>= 1
):
raise UserError(_("Cette liasse existe déjà !"))
def create_liasse(self, type_liasse):
"""
Generic function to create liasse
"""
liasse_values = {
"partner_id": self.partner_id.id,
"year": self.year,
"type_id": type_liasse,
}
return self.env["scop.liasse.fiscale"].create(liasse_values)
<?xml version="1.0" ?>
<!-- Copyright 2022 Le Filament
License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
<odoo>
<data>
<!-- FORM View-->
<record id="scop_load_liasse_form_view" model="ir.ui.view">
<field name="name">scop.lm.survey.import.wizard.form</field>
<field name="model">scop.lm.survey.import.wizard</field>
<field name="arch" type="xml">
<form string="Importer des LM d'ajustement">
<group name="file">
<field name="filename_lm_survey" invisible="1" />
<field
name="file_lm_survey"
filename="filename_lm_survey"
required="1"
/>
</group>
<footer>
<button
class="btn btn-primary"
name="load_lm_survey_adjust"
string="Importer"
type="object"
confirm="Êtes-vous sûr(e) de vouloir charger ce fichier ?"
/>
<button
class="btn btn-default"
special="cancel"
string="Fermer"
/>
</footer>
</form>
</field>
</record>
<!--ACTION view-->
<record id="scop_load_lm_survey_act_window" model="ir.actions.act_window">
<field name="name">Importer des LM d'ajustement</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">scop.lm.survey.import.wizard</field>
<field name="view_mode">form</field>
<field name="target">new</field>
</record>
</data>
</odoo>
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