IRC logs of #tryton-fr for Thursday, 2011-05-12

chat.freenode.net #tryton-fr log beginning Thu May 12 00:00:02 CEST 2011
2011-05-12 05:19 -!- yangoon(~mathiasb@p549F29F3.dip.t-dialin.net) has joined #tryton-fr
2011-05-12 09:49 -!- cedk(~ced@gentoo/developer/cedk) has joined #tryton-fr
2011-05-12 09:51 -!- nicoe(~nicoe@62.58.29.41) has joined #tryton-fr
2011-05-12 10:07 -!- bechamel(~user@cismwks02-virtual1.cism.ucl.ac.be) has joined #tryton-fr
2011-05-12 14:48 -!- sisalp(~dominique@annecy.sisalp.net) has joined #tryton-fr
2011-05-12 14:49 <nicoe> voila
2011-05-12 14:49 <sisalp> salut la question est donc : est il utile d'avoir des produits à prix de vente= 0
2011-05-12 14:50 <sisalp> et les techniciens traduisent comment détecter que le prix est à 0 ou inconnu
2011-05-12 14:50 <sisalp> c'est ça ?
2011-05-12 14:50 <cedk> oui c'est nico qui est parti en vrille
2011-05-12 14:51 <cedk> en fait, on a un problème qui est qu'on ne sait pas vendre des produits avec un prix de zero
2011-05-12 14:51 <sisalp> Sisalp propose des abonnements gratuits et je dois les gérer, savoir à qui j'en ai livrés
2011-05-12 14:51 <cedk> sisalp: tu fais une facture pour ça ?
2011-05-12 14:52 <sisalp> on ne sait pas vendre ou on ne sait pas créer ?
2011-05-12 14:52 <cedk> sisalp: on ne sait pas créer car il y a une contrainte
2011-05-12 14:52 <cedk> sisalp: mais cette contrainte est là pour se prémunir de l'encodage par erreur de ligne gratuit
2011-05-12 14:52 <sisalp> ok donc j'ai un problème et je ne le savais pas ;-)
2011-05-12 14:53 <cedk> sisalp: mais la contrainte est trop fort
2011-05-12 14:53 <cedk> sisalp: c'est pour ça que j'ai proposer d'ajouter une check box qui donnerait l'autorisation d'encoder une ligne à 0
2011-05-12 14:53 <sisalp> oui mais 0 est peut être une erreur, mais 100 ou mille peuvent aussi être faux
2011-05-12 14:54 <cedk> sisalp: pour en revenir à tes abonements, est-ce que tu fais une facture pour les gratuits ?
2011-05-12 14:54 <sisalp> un client orange a reçu une facture de 70 M€
2011-05-12 14:54 <cedk> sisalp: faut leur vendre une install Tryton :-)
2011-05-12 14:54 <sisalp> je pourrais la faire si je vends un service avec
2011-05-12 14:54 <sisalp> le gratuit fait partie de contrat
2011-05-12 14:55 <cedk> sisalp: c'est contournable avec quelque ligne de code
2011-05-12 14:55 <nicoe> ACTION écrit une livre "De l'utilité de la différence entre 0 et NULL"
2011-05-12 14:55 <cedk> sisalp: le problème du zéro, c'est qu'il est la valeur par defaut
2011-05-12 14:55 <sisalp> pourquoi 0 est plus suspect qu'une autre valeur ?
2011-05-12 14:55 <cedk> sisalp: 0 = valeur par defaut
2011-05-12 14:56 <sisalp> ok
2011-05-12 14:56 <cedk> sisalp: si tu ne met pas de produit par example
2011-05-12 14:56 <sisalp> la check box est dans la vente ?
2011-05-12 14:56 <cedk> sisalp: oui
2011-05-12 14:56 <sisalp> mais le prix est dans le produit ?
2011-05-12 14:57 <cedk> sisalp: je pense que si le prix du produit est zero alors la checkbox doit etre cochée automatiquement
2011-05-12 14:57 <sisalp> une case pour forer une ligne à 0 dans la vente semble ok alors
2011-05-12 14:58 <sisalp> la valeur par défaut de la checkbox est indifférente a mon avis
2011-05-12 14:58 <sisalp> forcer
2011-05-12 14:58 <cedk> de plus, on peut modifier le prix qui vient du produit
2011-05-12 14:58 <cedk> sisalp: je dirai pas cocher pour garder le comportement actuel
2011-05-12 14:59 <sisalp> ce qui est bizarre c'est qu'il est idiot de décocher la checkbox
2011-05-12 14:59 <sisalp> elle est donc décochée par défaut dans tous les cas
2011-05-12 15:00 <cedk> sisalp: oui
2011-05-12 15:01 <cedk> sisalp: elle sert juste à vérifier que l'utilisateur a vraiment bien réfléchit avant de mettre un prix de 0
2011-05-12 15:01 <sisalp> ne faut il pas considérer qu'une valeur float est toujours valide et que des contrôles de saisie peuvent être ajoutées selon le masque de saisie ?
2011-05-12 15:02 <sisalp> par exemple import de données
2011-05-12 15:02 <sisalp> il y a une notion de controle de saisie dans tryton ?
2011-05-12 15:03 <cedk> sisalp: on a pas encore de masque de saisie
2011-05-12 15:03 <sisalp> la vue n'en est pas un ?
2011-05-12 15:04 <sisalp> btw un prix négatif pourrait aussi être "warné"
2011-05-12 15:05 <cedk> sisalp: ca dépend du produit, ça peut etre un produit de réduction
2011-05-12 15:05 <sisalp> ou une erreur ;-)
2011-05-12 15:06 <bechamel> ACTION pense aussi que 0 != None
2011-05-12 15:07 <sisalp> moi je pense plutôt de None n'existe pas dans l'ensemble des reels
2011-05-12 15:07 <nicoe> ACTION se dit qu'on peut maintenant soumettre la question au vote lors d'une AG de B2CK ;)
2011-05-12 15:07 <sisalp> ça va chier
2011-05-12 15:09 <sisalp> est ce qu'il existe une valeur non valide dans la représentation d'un float ?
2011-05-12 15:09 <nicoe> N'importe quelle valeur peut être une erreur en fait ... C'est pourquoi avoir un champs vide que l'utilisateur est obligé de remplir (ou qui est rempli automatiquement) c'est bien ...
2011-05-12 15:10 <sisalp> nicoe: mais dans ce cas tu dois avoir les actions remplir et vider ?
2011-05-12 15:11 <sisalp> quand même, si on oublie de faire payer, on ne mérite pas de vovre , non ?
2011-05-12 15:11 <bechamel> 0 est une valeur comme une autre, None c'est l'absence de valeur (est-ce qu'on a pas déjà fait une modif du même ordre pour les booleén??)
2011-05-12 15:11 <sisalp> vovre
2011-05-12 15:11 <sisalp> vivre
2011-05-12 15:12 <nicoe> Ben comme c'est un champs numérique on sait que s'il contient la chaine vide alors c'est qu'il est vide ...
2011-05-12 15:12 <nicoe> sisalp: ou qu'on est très généreux avec ses clients
2011-05-12 15:13 <sisalp> plus sérieux, on doit vérifier le total d'un devis avant de l'envoyer.
2011-05-12 15:14 <sisalp> nicoe : oui, mais None ne sert qu'a semer la pagaille il me semble
2011-05-12 15:15 <sisalp> je ne rensigne pas le prix. cas 1 je donne au client ce que je voulais lui vendre, cas 2 Traceback "c'est cet imbécile"
2011-05-12 15:18 <sisalp> moi je préfère cas 1
2011-05-12 15:19 <sisalp> le required tryton est une contrainte en base ?
2011-05-12 15:19 <sisalp> on peut l'ajouter par la suite ?
2011-05-12 15:21 <cedk> bechamel: pour les booleen, on a just mis une contraint pour n'avoir que True/False et pas de None
2011-05-12 15:22 <cedk> sisalp: le required est de base dans sale line
2011-05-12 15:22 <sisalp> cedk: comment c'est possible de ne pas avoir True/False ?
2011-05-12 15:23 <cedk> sisalp: non seulement True/False
2011-05-12 15:24 <cedk> En fait, pouvoir gérer des None dans les Float c'est une envie d'informaticien
2011-05-12 15:25 <cedk> dans la pratique c'est pas tres utile
2011-05-12 15:27 <nicoe> C'est juste utile dans les lignes de vente et de facture, des trucs d'informaticiens quoi ;)
2011-05-12 15:27 <cedk> bechamel: on a déjà eu cette discussion, il y a ~2 ans si tu te rappel bien
2011-05-12 15:27 <bechamel> cedk: oui oui
2011-05-12 15:28 <cedk> sisalp: pour les controles dont tu parle, je pense qu'on pourrait faire un module de warning pour quand on encode un prix de vente qui s'écarte de x% du prix par defaut
2011-05-12 15:31 <cedk> ACTION n'aurait jamais du faire entrer plus d'informaticien que d'ingénieur dans B2CK
2011-05-12 15:32 <sisalp> cedk: les controles de saisie devraient être paramétrables, en fonction des erreurs qu'on souhaite éviter
2011-05-12 15:32 <sisalp> par exemple mettre acide et base dans un même carton
2011-05-12 15:33 <sisalp> c'est fonctionnel, pas structurel
2011-05-12 15:33 <cedk> sisalp: oui x serait définit dans une config
2011-05-12 15:34 <sisalp> dans ce cas, on pourrait faire un controle assisté par ordi des grilles de saisie
2011-05-12 15:34 <nicoe> ACTION pense qu' un ingénieur c'est un mec qui a eu un VRAI cours de math
2011-05-12 15:34 <sisalp> sur des notes de frais, par exemple, ça serait super intéressant
2011-05-12 15:36 <sisalp> nicoe : comment on représente l'infini en float ?
2011-05-12 15:36 <cedk> sisalp: float('inf')
2011-05-12 15:37 <sisalp> et pourquoi c'est pas la valeur None ?
2011-05-12 15:37 <bechamel> en fait, dans le cas qui nous occupe le problème c'est pas vraiment la DB mais l'interface graphique
2011-05-12 15:37 <nicoe> None c'est undefined, c'est à dire même pas un concept mathématique
2011-05-12 15:37 <cedk> bechamel: +1
2011-05-12 15:37 <sisalp> bechamel : +1
2011-05-12 15:37 <bechamel> ont n'accepte de toute façon pas none, c'est juste qu'on veut aussi accepter zero
2011-05-12 15:38 <sisalp> oui mais un prix float('inf'), c'est sur que c'est une erreur
2011-05-12 15:38 <cedk> sisalp: je suis pas sur qu'on peut le mettre dans la DB float('inf')
2011-05-12 15:39 <sisalp> postgres ne sait pas stocker la taille de l'univers ?
2011-05-12 15:39 <sisalp> raté alors
2011-05-12 15:40 <cedk> ACTION ce serait cool de faire une vente avec un prix ∞
2011-05-12 15:40 <sisalp> et une ristourne du meêm montant :-)
2011-05-12 15:41 <nicoe> sisalp: postgres sait le contenir, il faut just choisir la bonne unité
2011-05-12 15:41 <sisalp> nicoe: lol
2011-05-12 15:42 <sisalp> on le trouve où le caractère infini ?
2011-05-12 15:43 <bechamel> http://www.postgresql.org/docs/8.2/static/datatype-numeric.html#AEN4068
2011-05-12 15:43 <bechamel> qui donne comme exemple : UPDATE table SET x = 'Infinity'
2011-05-12 15:44 <bechamel> sinon, j'ai testé, "SELECT sum(amount) .." retourne bien la somme des non-null
2011-05-12 15:45 <bechamel> mais c'est vrai que pour monsieur tout-le-monde ce genre de subtilité est à éviter
2011-05-12 15:46 <cedk> bechamel: mais "SELECT a + b" si un des deux est null pose problème
2011-05-12 15:47 <cedk> bechamel: est les clause du genre > 0 ?
2011-05-12 15:47 <bechamel> cedk: oui ça retourne null, mais c'est logique
2011-05-12 15:48 <cedk> bechamel: je dis pas que c'est pas logique
2011-05-12 15:48 <cedk> bechamel: mais que c'est un problème qu'on risque de rencontrer si on autorise NULL pour les float
2011-05-12 15:51 <nicoe> Écrit-on tant de query sql ?
2011-05-12 15:51 <nicoe> Même si avec pysql il pourrait y en avoir plus, c'est quand même un truc à éviter
2011-05-12 15:51 <nicoe> non ?
2011-05-12 15:52 <cedk> nicoe: non
2011-05-12 15:55 <nicoe> Je pense que si tu dois utiliser une valeur dans ton calcul c'est que le champs doit avoir reçu une valeur
2011-05-12 15:55 <bechamel> sinon pour en revenir au problème du début, est-ce que ce n'est pas mieux de mettre la checkbox qui authorise un prix de zéro directement sur le produit ?
2011-05-12 15:55 <cedk> nicoe: donc comme on utilise toujours les champs qu'on crée, ils doivent tous avoir une valuer :-) CQFD
2011-05-12 15:56 <nicoe> ben non
2011-05-12 15:56 <cedk> bechamel: pourquoi?
2011-05-12 15:57 <bechamel> cedk: ben je sais pas, j'imagine qu'on ne vend à zéro que certain produit particulier
2011-05-12 15:57 <nicoe> cedk: tu préconises donc de rendre tous les champs requis si j'ai bien compris ;)
2011-05-12 15:57 <bechamel> du coup, ça facilite l'encodage des lignes
2011-05-12 15:58 <cedk> bechamel: quid du produit que tu offres
2011-05-12 15:58 <cedk> nicoe: non seulement les Float comme c'est maintenant
2011-05-12 16:00 <bechamel> oui en fait si on veut faire le truc a font il faut le faire sur les deux, la checkbox sur le produit donne la valeur par defaut de la checkbox sur la ligne
2011-05-12 16:01 <bechamel> cedk: les float, integer et boolean non ?
2011-05-12 16:01 <nicoe> sauf que comme c'est maintenant c'est buggé
2011-05-12 16:05 <nicoe> le simple exemple de l'encodage des enfants pour un formulaire d'assurance le montre
2011-05-12 16:06 <nicoe> Et puis, si tu fais ta query en sql, normallement tu connais l'existence de coalesce
2011-05-12 16:07 <cedk> nicoe: tu peux utiliser -1 comme valeur
2011-05-12 16:12 <nicoe> comme valeur pour quoi ? -1 pour moi c'est -1, pas autre chose
2011-05-12 16:13 <cedk> nicoe: -1 enfant ça n'existe pas
2011-05-12 16:16 <nicoe> On a pas -1 enfants Christine et moi mais 0. Et si par exemple l'assurance nous rembourse leur décès au pro rata de leur nombre ben je veux pas leur devoir de l'argent (la peine étant déjà bien assez lourde)
2011-05-12 16:17 <cedk> nicoe: ben tu met zero si tu a zero enfant
2011-05-12 16:19 <cedk> en fait, tu ne sais rien faire avec des None
2011-05-12 16:19 <cedk> il n'y a aucune information
2011-05-12 16:20 <cedk> donc je pense que dans ton example, il faudra une validation du formulaire et donc une valeur sera donnée
2011-05-12 16:20 <cedk> bechamel: je vois pas trop l'interet de la checkbox sur le produit
2011-05-12 16:24 <nicoe> C'est un champs requis, je peux pas mettre 0
2011-05-12 16:24 <cedk> nicoe: pq ?
2011-05-12 16:25 <nicoe> t'es borné c'est fou
2011-05-12 16:27 <bechamel> cedk: ben si tu a un produit cadeau que tu donne systématiquement ça évite de cliquer la checkbox sur la ligne de vente
2011-05-12 16:30 <cedk> bechamel: relit plus haut
2011-05-12 16:34 <bechamel> ben je lis "Sisalp propose des abonnements gratuits" dans ce cas j'imagine que c'est plus simple de mettre la checvkbox sur le produit (qui a lui-même sont prix unitaire à zero) -> mais effectivement je lis plus bas la regle du % qui résoud le problème.
2011-05-12 16:35 <cedk> bechamel: non, si le list price est 0 alors on check automatiquement la checkbox
2011-05-12 16:37 <cedk> nicoe: "patch is welcome" mais alors pour la consistance du system il faut qu'on puisse mettre un NULL dans tous les champs
2011-05-12 16:37 <bechamel> cedk: je trouve la règle du % plus élégante (interface plus simple + gère plus de situations)
2011-05-12 16:37 <cedk> et il faudrait avoir un nonzero, nonempty etc.
2011-05-12 16:38 <cedk> et il faudra aussi un system pour différencier un Many2One vide d'un pas connu
2011-05-12 16:38 <cedk> pareil pour les M2M
2011-05-12 16:38 <nicoe> Mais c'est n'importe quoi
2011-05-12 16:38 <nicoe> Tu refuses une amélioration sous le prétexte qu'il faudrait la faire pour tous les champs
2011-05-12 16:39 <bechamel> en fait j'ai naturellement tendance à favoriser la gestion des null, mais je suis incapable de trouver une situation où c'est vraiment utile
2011-05-12 16:39 <cedk> nicoe: non s'il y a un interet à avoir une valeur NULL pour un float alors il y a aussi le meme interet pour les autres champs
2011-05-12 16:40 <cedk> bechamel: je pense que le module de % est une extention et ne doit pas etre de base
2011-05-12 16:40 <cedk> bechamel: le cas du zero du prix de vente et un cas particulier
2011-05-12 16:41 <cedk> bechamel: pas gérable par un %
2011-05-12 16:41 <bechamel> cedk: pq pas ?
2011-05-12 16:41 <nicoe> Il y a un intérêt pour les autres champs, on peut d'ailleurs le faire pour le booléen
2011-05-12 16:41 <bechamel> faut juste faire un test pour éviter la division par zero
2011-05-12 16:42 <cedk> bechamel: ben l'ecart en % d'un prix par rapport à zéro n'existe pas
2011-05-12 16:43 <bechamel> cedk: ben un produit dont le prix de base est non-null qui est vendu pour 0 est considéré comme depassant l'écart (peut importe ça valeu), ça me semble naturel
2011-05-12 16:44 <nicoe> Je propose donc que pour la consistance du système on décide d'une valeur par défaut pour les champs date
2011-05-12 16:44 <bechamel> nicoe: quel exemple concret vois-tu où la gestion du null apporterait qqch de mieux ?
2011-05-12 16:44 <cedk> bechamel: du coup tu ne sais pas donner des produits
2011-05-12 16:44 <nicoe> Je te l'ai déjà donné 1000x
2011-05-12 16:44 <bechamel> cedk: ben si mais tu a un warning
2011-05-12 16:44 <cedk> bechamel: oauis
2011-05-12 16:44 <nicoe> Et même pour le unit_price à 0 ça donne quelque chose aussi d'ailleurs
2011-05-12 16:46 <bechamel> nicoe: ben le seul que je vois c'est le nombre d'enfant, mais pour moi c'est un contre-exemple. tu a effectivement 0 enfant. null pourrait être intérressant pour modéliser le fait que tu ne connais pas le nombre d'enfant.
2011-05-12 16:46 <cedk> bechamel: y a aussi qu'on a pas toujours un produit dans une vente
2011-05-12 16:46 <nicoe> Et le unit_price à 0 ?
2011-05-12 16:46 <bechamel> cedk: damn !
2011-05-12 16:47 <nicoe> ne me réponds pas par un workaround, je sais qu'il existe ...
2011-05-12 16:51 <cedk> en fait, ce que veut nicoe c'est splitter le concept de required en deux:
2011-05-12 16:51 <cedk> - notnull
2011-05-12 16:51 <cedk> - notzero/false
2011-05-12 16:51 <cedk> .. notzero/false/empty
2011-05-12 16:54 <cedk> mais perso, je pense que les gens aiment bien développer dans Tryton/OE parce que justement des choix on été fait qui simplifie la vie dans la grosse majorité des cas
2011-05-12 16:55 <nicoe> pour moi required == notnull en effet
2011-05-12 16:56 <cedk> nicoe: ce qui est faut pour la mojorité de fields de Tryton
2011-05-12 16:56 <cedk> s/faut/faux/
2011-05-12 16:57 <cedk> en fait required actuellement c'est: ne doit pas etre evaluer à False en Python
2011-05-12 16:57 <nicoe> Ce qui est stupide pour les nombres, car 0 est un nombre comme un autre
2011-05-12 16:57 <cedk> nicoe: ask Guido
2011-05-12 16:58 <nicoe> Guido n'a rien à voir là dedans
2011-05-12 21:14 -!- bechamel(~user@host-85-201-144-79.brutele.be) has joined #tryton-fr
2011-05-12 21:17 -!- cedk(~ced@gentoo/developer/cedk) has joined #tryton-fr

Generated by irclog2html.py 2.17.3 by Marius Gedminas - find it at https://mg.pov.lt/irclog2html/!