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
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 Python : Sélectionner tout - Visualiser dans une fenêtre à part
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 python : Sélectionner tout - Visualiser dans une fenêtre à part
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)
Partager