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
personnalisation des rapports
03/10/2007
Reply
personnalisation des rapports
ramus
13 posts
Bonjour,
J'ai commencé à me familiariser avec l'édition de scripts de manière à essayer de produire un format de rapport qui réponde à mes besoins.

Premièrement une remarque sur un 'feature': l'éditeur de scripts a pour répertoire par défaut "Scripts", ce qui est logique. Mais les scripts de rapport vont tout aussi logiquement dans le répertoire "Reports", sans parler des AddIns. Or même après avoir ouvert ou sauvé un script dans Reports, l'éditeur continue à s'ouvrir dans Scripts. Je trouverais plus agréable qu'il s'ouvre dans le dernier répertoire exploré (comme la plupart des logiciels).

Ensuite des questions:
- j'ai à peu près compris la logique de l'utilisation d'attributs des vins comme Year, Bottles, Price, etc. dans les rapports. Mais où peut-on trouver la liste de tous les attributs utilisables? J'en ai trouvé quelques-uns dans winegrid.xml et griddefault.xml, mais ils ne sont que partiellement identiques, et je me demande s'il n'y en a pas d'autres ailleurs. Pouvez-vous fournir une liste complète?
- trois attributs supplémentaires qu'il m'intéresserait particulièrement d'inclure dans mes rapports sont 1) le nombre total de bouteilles achetées, 2) le nombre de bouteilles consommées, 3) la date de la dernière dégustation. Est-ce possible? Si oui, quels sont leurs noms?
- pour économiser du papier j'aimerais imprimer des rapports plus condensés, en diminuant notamment la taille de la police. Mais je ne vois pas cette variable dans les rapports standards. Ne peut-on pas la modifier?
- je m'attendais à ce que les rapports "maisons" s'affichent dans le menu Rapports Supplémentaires, mais cela ne semble pas être le cas. Y a-t-il un truc pour les faire apparaître?

cordialement,
Franck
 

04/10/2007
Reply
Re : personnalisation des rapports
AdministrateurView your blog
3099 posts
Bonsoir,

Le dossier Scripts est destiné a recevoir l'ensemble des scripts (qu'ils soient de type reports, fenetres....) le dossier Reports n'est pas encore utilisé et est reservé à une utilisation future. C'est pourquoi la fenetre s'ouvre automatiquement sur ce dossier.

"Mais où peut-on trouver la liste de tous les attributs utilisables?"
Il n'y a pas encore de documentation officielle (j'en vois deja qui sourit :-p) je vous invite a parcourir le centre d'aide en ligne et le sdk (www.open-cellar.com/sdk.zip).

Il n'est pas possible de modifier la taille de la police mais pourquoi pas :-)(ajouté à la 1.2)

Le menu Rapports supplémentaires est exploitable via les compléments. Petite astuce tous les scripts (extension .ocs) présents dans le repertoire scripts sont repris dans le menu Préférences -> Scripts de configuration

le nombre total de bouteilles achetées :

int ret = 0;
for (int j = 0; j < wine.Purchases.Count; j++)
{
PurchaseSales psales = (PurchaseSales)wine.Purchases[j];
ret += psales.PurchaseBottles;
}

le nombre total de bouteilles consommées :

int ret = 0;

for (int j = 0; j < wine.Purchases.Count; j++)
{
PurchaseSales psales = (PurchaseSales)wine.Purchases[j];
ret += psales.ConsumeBottles;
}

// Date derniere fiche
if(wine.Notes.Count > 0)
{
// Les notes sont triées automatiquement par date décroissante
string date = wine.Notes[0].CreationTime.ToString();
}

Matthieu
 

16/10/2007
Reply
Re : personnalisation des rapports
ramus
13 posts
Merci pour tous ces indices.

Pour la partie:
// Date derniere fiche
if(wine.Notes.Count > 0)
{
// Les notes sont triées automatiquement par date décroissante
string date = wine.Notes[0].CreationTime.ToString();
}

Je récupère un message d'erreur:
'OpenCellar.Framework.Core.BaseObject' ne contient pas de définition pour 'CreationTime'

kesako?

Franck
 

17/10/2007
Reply
Re : personnalisation des rapports
AdministrateurView your blog
3099 posts
Arf c'est ca d'aller trop vite..

Modifiez la ligne par :

string date = ((Note)wine.Notes[0]).CreationTime.ToString();

Matthieu
 

19/10/2007
Reply
Re : personnalisation des rapports
ramus
13 posts
Merci.
Cette fois plus de message d'erreur, mais ça ne m'affiche toujours pas les dates voulues. Après pas mal d'essais je viens de comprendre le problème: j'avais mal formulé ma demande. La variable qui m'intéresse, ce n'est pas la date de la dernière dégustation, en fait c'est la date de la dernière consommation... (dernière fiche achat/conso)
Comment s'appelle donc cette variable?
merci,
Franck
 

20/10/2007
Reply
Re : personnalisation des rapports
Thewolf
99 posts
Bonjour.

J'ai trouvé ça :
psales.Date.ToString()

cela donne la date des fiches achats-consos.

Christian
 

20/10/2007
Reply
Re : personnalisation des rapports
ramus
13 posts
merci.
malheureusement il semble que psales soit une variable intermédiaire résultat d'un calcul dans un autre script. Je l'ai retrouvée dans le script "Activer le mode de gestion manuelle' mais n'ai pas réussi à en reproduire le calcul. J'ai également trouvé Wine.Purchases mais n'arrive pas à en extraire l'information voulue...
Franck
 

20/10/2007
Reply
Re : personnalisation des rapports
Thewolf
99 posts
Pour faire votre rapport personnalisé, vous commencez sans doute par en définir la structure. Ensuite vous faites une boucle sur l'ensemble des vins pour "alimenter" ce rapport. Cela commence ainsi :

ObjectCollection wines = App.ActiveCellar.GetCollection((ushort)ObjectType.Wine);

for (int i = 0; i < wines.Count; i++)
{
Wine wine = (Wine)wines[i];
ReportRow row = rt.NewRow();

row[0] = wine.Area.Name;
...

A l'intérieur de cette boucle, vous devez faire une autre boucle balayant l'ensemble des fiches achats-consos du vin en cours de traitement (référencé par la variable wine). Quelque chose du genre :

for (int j = 0; j < wine.Purchases.Count; j++)
{
PurchaseSales psales = (PurchaseSales)wine.Purchases[j];

psales référence une fiche achats-consos. Vous devez tester qu'il s'agit d'une conso et non d'un achat (psales.ConsumeBottles > 0). Vous alimentez alors le rapport avec la date ...

J'espère que vous allez réussir avec ces infos.

Christian
 

20/10/2007
Reply
Re : personnalisation des rapports
ramus
13 posts
Merci!
Cette fois-ci ça marche après quelques ajustements supplémentaires. Pour les personnes intéressées voici la boucle qui fait le travail:
for (int j = 0; j < wine.Purchases.Count; j++)
{
PurchaseSales psales = (PurchaseSales)wine.Purchases[wine.Purchases.Count-j-1];
if(psales.ConsumeBottles > 0)
{row[7] = psales.Date.ToString();
}
}

Le truc est qu'on ne veut garder que la date de consommation la plus récente, et que les fiches sont numérotées en ordre inverse (0 est la plus récente, comme l'avait indiqué Matthieu), donc il faut parcourir les fiches par indice décroissant... Je ne sais pas si ma manière de le faire est la plus élégante mais ça marche!

Franck
 

20/10/2007
Reply
Re : personnalisation des rapports
Thewolf
99 posts
Il y a effectivement plus simple :

for (int j = 0; j < wine.Purchases.Count; j++)
{
PurchaseSales psales = (PurchaseSales)wine.Purchases[j];
if(psales.ConsumeBottles > 0)
{row[7] = psales.Date.ToString();
break;
}
}

Cela devrait accélérer le temps de traitement.
 

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