Suivez et participez au développement du nouvel OpenCellar : PLOC.co
Home Page
 
Français  English  
Open Cellar Home Edition - 1.2 - Windows 98, Me, 2000, XP and Vista. The free Windows wine cellar management software. Open Cellar Mobile Edition - Beta 2 (French version) - Pocket PC. The free Pocket PC wine cellar management software. Open Cellar Cross Platform - Beta 1 (French version) - Mac OSX and Linux. The free MacOS/Linux wine cellar management software. My Open Cellar Open Cellar Forums Place des vins
Search: Welcome (connect - create an account )
Nuage de tags
désactiver la gestion d'emplacements?
23/09/2007
Reply
désactiver la gestion d'emplacements?
ramus
13 posts
Bonjour,
grâce à l'importation csv j'ai réussi à importer l'essentiel de ma cave dans Open Cellar.
Pb: bien que les nombres de bouteilles achetées et consommées ait été correctement importés, le total de bouteilles restantes affiche toujours 0. Je soupçonne que c'est parce que mes bouteilles ne sont pas placées dans un emplacement.
Or je n'ai aucune envie de placer à la souris chacune de mes 600 bouteilles dans des petiites cases rondes! (entre nous je ne sais pas qui ce genre de jeu peut amuser ;-)
Peut-on désactiver la gestion des emplacements, et avoir le nombre de bouteilles = nb acheté - nb consommé tout simplement?
Accessoirement, je ne suis pas contre un champ "emplacement", mais tout ce qui m'importe c'est de savoir si ma bouteille est dans la cave ou dans le frigo (C ou F). J'aurais bien importé un tel champ mais ce n'est pas dispo en importation csv.
cordialement,
Franck
 

23/09/2007
Reply
Re : désactiver la gestion d'emplacements?
AdministrateurView your blog
3099 posts
Bonsoir,

Si vous ne souhaitez pas gérér visuellement vos bouteilles c'est aussi possible, dans ce cas et sur chaque fiche vin allez sous l'onglet "Achats-consos" puis cliquez sur la case "Gérer manuellement les bouteilles pour ce vin" dans la zone de saisie tapez le nombre de bouteilles.
Si ca vous interesse (et je pense que oui !) je peux vous envoyer un script qui vous fera le tout automatiquement.

Matthieu
 

23/09/2007
Reply
Re : désactiver la gestion d'emplacements?
ramus
13 posts
Pour le script, bien volontiers car j'ai 178 vins à traiter. Merci.

Ceci dit, il me semble avoir compris que dans la gestion manuelle des vins, on entre manuellement le nombre de bouteilles restantes, et donc qu'il n'y a pas de mise à jour automatique du nombre de bouteilles après chaque dégustation. Si c'est bien cela, je vais regretter cette fonction. N'est-il donc pas possible de calculer le nombre de bouteilles sans passer par les emplacements?

cordialement,
Franck
 

24/09/2007
Reply
Re : désactiver la gestion d'emplacements?
AdministrateurView your blog
3099 posts
Bonsoir,

Je vous joins le script demandé :
Pour ouvrir l'editeur de scripts, pointez sur le menu Préférences -> Editeur de scripts



Matthieu
 

24/09/2007
Reply
Re : désactiver la gestion d'emplacements?
ramus
13 posts
Formidable, merci!
Franck
 

24/09/2007
Reply
pour Matthieu
Thewolf
99 posts
Bonsoir.

Dans l'attente de la possibilité d'importation des emplacements, j'avais essayé de faire un script équivalent en m'inspirant des différents scripts que je commence à collectionner ...

Par manque de documentation (j'ai l'impression de me répéter !), je n'avais fait que la partie "achats " car je n'avais pas trouvé la variable "ConsumeBottles". Cependant, cela ne marchait pas car j'avais écrit, en reprenant le nom de vos variables, "int bottles" au lieu de "ushort bottles". Mes connaissance en programmation étant plutôt orientées Pascal(Delphi), je ne connaissais même pas le terme "ushort" !...

J'ai donc jeté mon œuvre inachevée pour la remplacer par le script que vous proposez et là, surprise !, cela ne marche pas. J'ai le message (que je connais maintenant trop bien) "impossible d'exécuter le script" !!!

Après divers tâtonnements, j'ai remplacé :

bottles += Convert.ToUInt16((int)psales.PurchaseBottles - (int)psales.ConsumeBottles);

à la syntaxe qui m'échappe quelque peu ...

par :

bottles +=psales.PurchaseBottles;
bottles -=psales.ConsumeBottles;

et là cela marche parfaitement ! Va savoir pourquoi ...

Par nature, j'aime comprendre de A à Z ce que je fais, c'est pourquoi je trouve cette approche par tâtonnements particulièrement frustrante.

Alors ayez pitié! Dites-moi comment je peux surmonter ces difficultés ...

Christian
 

24/09/2007
Reply
Re : désactiver la gestion d'emplacements?
AdministrateurView your blog
3099 posts
Pour vous aider au debuggage j'aurai du vous préciser que lorsqu'un script ne compile pas un fichier script.log est crée vous donnant accés aux erreurs rencontrées.

Le type ushort est un entier 16bits non signé (0 -> 65535)
Sous le framework les opérations (* - %...) renvoient par défaut un int et le ushort ne supportent pas les conversions implicitent d'ou le cast (type)valeur

Matthieu
 

24/09/2007
Reply
Re : désactiver la gestion d'emplacements?
Thewolf
99 posts
Va pour le script.log, cela m'aidera peut-être ...

Cependant 2 petites questions :

1) Comment pouvais-je savoir que wine.Bottles (variable interne à OC) demande un ushort dans l'affectation: "wine.Bottles = bottles;"

2) J'ai (à peu près) compris votre explication mais alors, comment se fait-il que le script que vous avez indiqué (avec le typecasting) ne marche pas (du moins sur mon ordi) alors que ma version "allégée", à savoir :
bottles +=psales.PurchaseBottles;
bottles -=psales.ConsumeBottles;
(sans typecasting)
fonctionne parfaitement. Là, je ne suis plus ...
 

24/09/2007
Reply
Re : désactiver la gestion d'emplacements?
Thewolf
99 posts
Pour info, contenu de script/log :

24/09/2007 23:49:20 -> Erreur :: Pile
24/09/2007 23:49:20 -> System.OverflowException: La valeur était trop grande ou trop petite pour un UInt16.
at System.Convert.ToUInt16(Int32 value)
at OpenCellar.Application.UserScript.Run(IApplication App)
at OpenCellar.Application.ScriptHost.Run()
 

27/09/2007
Reply
Re : désactiver la gestion d'emplacements?
AdministrateurView your blog
3099 posts
Bonjour,

Lorsque vous faites :
bottles +=psales.PurchaseBottles;
bottles -=psales.ConsumeBottles;

Ca fonctionne pafaitement car vous additionnez des byte & a un ushort.

Par contre ceci :
bottles += psales.PurchaseBottles - psales.ConsumeBottles;
ne fonctionnera pas car toutes les opérations mathématiques renvoient des int. Les int (ou Int32) ayant une plus grande capacité que les ushort le framework refuse la conversion implicite
d'ou le :
bottles += Convert.ToUInt16(psales.PurchaseBottles - psales.ConsumeBottles);

Note : le cast en (int) était inutile.

Matthieu
 

27/09/2007
Reply
Re : désactiver la gestion d'emplacements?
Thewolf
99 posts
Bonjour.

J'ai sasi la subtilité de la chose. En revanche, je vous confirme que le script que vous proposez ne fonctionne pas et je pense en avoir trouvé la raison :

supposons un vin pour lequel je fais tout d'abord un achat de 3 puis une conso de 1. Lorsque le script traite la fiche conso, il cherche à convertir -1 en ushort d'où le plantage, ushort allant de 0 à 65535...

La méthode que j'ai indiquée (avec 2 instructions) fonctionne bien que théoriquement invalide.
Dans l'exemple précité, le script, commençant par la fiche conso va ajouter successivement les valeurs suivantes : 0,-1,3,0 et la variable bottles prendra successivement les valeurs suivantes : 0, 65535 (!!!), 2, 2.

Je pense qu'une méthode plus correcte serait de faire les calculs en int et de faire la conversion en ushort au moment où l'on insère la valeur dans wine.Bottle.

Ce qui donne :

int bottles = 0;
Wine wine = (Wine)oc[i];
wine.ManualManagement = true;
// Fiches achats
for (int j = 0; j < wine.Purchases.Count; j++)
{
PurchaseSales psales = (PurchaseSales)wine.Purchases[j];
bottles += psales.PurchaseBottles - psales.ConsumeBottles;
}
wine.Bottles = (ushort)bottles;
wine.Save();
 

© 2006-2014 Matthieu DUCROCQ  Open Cellar official blog - All rights reserved - Last update: january 2014 | twitter