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/!