Bonjour
J'ai besoin de faire un calcul entre date
J'aimerai d'abord décoder la date en Jour mois année et puis la reformer en jj/mm/aaaa.
J'aurai besoin de vos lumières
Merci
Version imprimable
Bonjour
J'ai besoin de faire un calcul entre date
J'aimerai d'abord décoder la date en Jour mois année et puis la reformer en jj/mm/aaaa.
J'aurai besoin de vos lumières
Merci
Salut,
Le module datetime est là pour ça.
Regarde aussi timedelta qui fait peut-être ce que tu recherches.
Merci de cette piste
J'ai essayé
Vous pouvez me dire si cela est bon
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 # -*- coding: utf-8 -*- from openerp import models, fields, api from datetime import datetime class bxmenu(models.Model): _name = 'bxmenu.bxmenu' date_controle = fields.Date(string="Date de controle",required=True) date_futur = fields.Date(string="Date futur") def date_futur(): jour=date_controle.day mois=date_controle.month annee=date_controle.year annee=annee+5 return date_futur.date(jour,mois,annee)
Heu, non c'est pas bon.
Ta classe hérite de Model, il faut l'initialiser avec super()
date_controle et date_futur sont des attributs de classe dont la valeur est partagée entre les différentes instances de cette classe. Est-ce voulu ?
À quel niveau se trouve la fonction date_futur ? Dans l'espace global ou dans la classe bxmenu ? De toutes manières date_controle est inconnu dans cette fonction, tu auras une erreur.
Il faut éviter d'utiliser un même nom (date_futur) pour deux usages différent (attribut et fonction)
openerp, c'est encore distribué ça ?
Oui, openerp est le coeur odoo (le nouveau nom) mais les modules utilises encore cette base.
la def je l'ai changé par un onchange_datefutur() pour qui me calcule la future date car il y avait un conflit.
Les dates sous OpenERP / Odoo sont stockées sous forme de chaînes de caractères (comme YYYY-MM-JJ).
Odoo offre des méthodes pour faciliter la conversion de chaîne vers objet date Python et inversement (sous fields.Date).
Votre champ date_futur devrait être un champ calculé (computed) dépendant de date_controle, se mettant donc à jour automatiquement dès que date_controle sera modifié.
Le code suivant devrait être plus juste (je ne l'ai pas testé) :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 # -*- coding: utf-8 -*- from datetime import date from openerp import models, fields, api class bxmenu(models.Model): _name = 'bxmenu.bxmenu' date_controle = fields.Date(string="Date de controle",required=True) date_futur = fields.Date(string="Date futur", compute='_compute_date_futur') @api.depends('date_controle') def _compute_date_futur(self): for menu in self: dt_controle = fields.Date.from_string(menu.date_controle) dt_futur = date(dt_controle.year + 5, dt_controle.month, dt_controle.day) menu.date_futur = fields.Date.to_string(dt_futur)