Suivez et participez au développement du nouvel OpenCellar : PLOC.co
Page d'accueil
 
Français  English  
Open Cellar Home Edition - 1.2 - Le logiciel gratuit pour gérér efficacement votre cave à vins sous Windows. Open Cellar Mobile Edition - Beta 2 - La gestion de cave à vins a enfin sa solution Mobile sur Pocket PC. Open Cellar Cross Platform - Beta 1 - La gestion gratuite de vins disponible sous Mac OSX et Linux. Mon Open Cellar Les forums d'Open Cellar Place des vins
Rechercher : Bienvenue (se connecter - créer un compte)
Facebook


Nuage de tags
Rapports - livre de cave
10/12/2007
Répondre
Rapports - livre de cave
sempels
2 posts
Bonjour,
Je découvre votre logiciel et vous félicite pour cette réussite. Je suis en train de passer de ma vielle base access à ce nouvel outil.
Juste une question : Avant, j'imprimais régulièrement la liste de mes vins triés par pays, puis couleur, puis région, puis appelation.
Apparaissaient ensuite le nom du vin, le millésime, le nombre de bouteilles restantes et la localisation dans la cave.
Existe-t-il un rapport qui me donnerait une liste similaire ?
Merci et bonne continuation.
Stéphan
 

10/12/2007
Répondre
Re : Rapports - livre de cave
Thewolf
99 posts
Bonjour.

Le script ci-dessous doit correspondre à ce que vous souhaitez. Il ne prend en compte que les vins encore présents en cave (stock non nul) et j'ai ajouté le format de bouteille (si vous avez des demis, magnums, ...).

Malheureusement, je ne sais pas comment récupérer l'information sur l'endroit où est stocké le vin (emplacement). Si quelqu'un le sait, il faut, vers la fin du script, remplacer "row[8] = "???";" par le code adéquat.

Christian

Script à copier/coller :

if(App.ActiveCellar == null)
{
MessageBox.Show("Aucune cave ouverte");
return;
}

App.SetCursor(true);

//
// Modifiez ici le titre du rapport
//
string reportName = "Liste des vins";

//
// Creation entete rapport
//
ReportTable rt = new ReportTable(reportName);

//
// Pays
//
ReportColumn rcCountry = rt.NewColumn("Pays");
rcCountry.Size = 60;

//
// Couleur
//
ReportColumn rcColor = rt.NewColumn("Couleur");
rcColor.Size = 50;

//
// Région
//
ReportColumn rcArea = rt.NewColumn("Region");
rcArea.Size = 100;

//
// Appellation
//
ReportColumn rcApp = rt.NewColumn("Appellation");
rcApp.Size = 130;

//
// Nom
//
ReportColumn rcName = rt.NewColumn("Nom");
rcName.Size = 215;

//
// Millésime
//
ReportColumn rcYear = rt.NewColumn("Mill.");
rcYear.Size = 35;
rcYear.ContentAlignment = ReportContentAlignment.Right;
rcYear.DataType = ReportColumnType.Numeric;

//
// Nombre de bouteilles
//
ReportColumn rcBottles = rt.NewColumn("Qte");
rcBottles.Size = 40;
rcBottles.ContentAlignment = ReportContentAlignment.Right;
rcBottles.DataType = ReportColumnType.Numeric;

// Format
ReportColumn rcFormat = rt.NewColumn("Format");
rcFormat.Size = 50;

//
// Localisation
//
ReportColumn rcLocalisation = rt.NewColumn("Empl.");
rcLocalisation.Size = 80;

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

for (int i = 0; i < wines.Count; i++)
{
Wine wine = (Wine)wines[i];
int qte = 0;

if(wine.ManualManagement)
{
qte = wine.Bottles;
}
else
{
qte = wine.RackItems.Count;
}

if(qte == 0)
{
continue;
}

ReportRow row = rt.NewRow();

row[0] = wine.Country.Name;

row[1] = "Champagne";
if(wine.WineColor == ColorType.Red)
{
row[1] = "Rouge";
}
else if(wine.WineColor == ColorType.White)
{
row[1] = "Blanc";
}
else if(wine.WineColor == ColorType.Rosy)
{
row[1] = "Rosé";
}
else if(wine.WineColor == ColorType.Yellow)
{
row[1] = "Champagne";
}
else if(wine.WineColor == ColorType.LiqueurLike)
{
row[1] = "Liquoreux";
}
else if(wine.WineColor == ColorType.Misc)
{
row[1] = "Autre";
}

row[2] = wine.Area.Name;
row[3] = wine.Appellation.Name;
row[4] = wine.Name;


if(wine.Year != 0)
{
row[5] = wine.Year.ToString();
}

row[6] = qte.ToString();
row[7] = wine.BottleType.Name;

if(!wine.ManualManagement)
{
row[8] = "???";
}

}


// sort items
rt.Sort("0-0;1-0;2-0;3-0");

// GoOo
System.Collections.ArrayList list = new System.Collections.ArrayList();
list.Add(rt);

IReport report = App.ReportEngine.GetSystemReport(PredefinedReport.Grid);

string destFileName = App.Path + "Cache\\UserWinesGrid.pdf";
bool success = false;
try
{
report.Create(list, destFileName);
success = true;
}
catch(Exception ex)
{
MessageBox.Show("Error (1)");
}

// Show report
if(success)
{
IShellWindow shellWindow = (IShellWindow)App.GetWindow(WindowType.Shell, null);
if(shellWindow != null)
{
shellWindow.Start(destFileName);
}
}

App.SetCursor(false);
App.StopAnimate();
 

10/12/2007
Répondre
Re : Rapports - livre de cave
Thewolf
99 posts
Finalement, j'ai trouvé une solution (un peu lourde, il y a peut-être mieux). Pour ne pas prendre trop de place, cela affiche uniquement l'emplacement (pas la place précise au sein de l'emplacement). De plus, si le vin est réparti sur plusieurs emplacements, cela n'en affiche qu'un (a priori le dernier trouvé).

Code :


if(App.ActiveCellar == null)
{
MessageBox.Show("Aucune cave ouverte");
return;
}

App.SetCursor(true);

//
// Modifiez ici le titre du rapport
//
string reportName = "Liste des vins";

//
// Creation entete rapport
//
ReportTable rt = new ReportTable(reportName);

//
// Pays
//
ReportColumn rcCountry = rt.NewColumn("Pays");
rcCountry.Size = 60;

//
// Couleur
//
ReportColumn rcColor = rt.NewColumn("Couleur");
rcColor.Size = 50;

//
// Région
//
ReportColumn rcArea = rt.NewColumn("Region");
rcArea.Size = 100;

//
// Appellation
//
ReportColumn rcApp = rt.NewColumn("Appellation");
rcApp.Size = 130;

//
// Nom
//
ReportColumn rcName = rt.NewColumn("Nom");
rcName.Size = 215;

//
// Millésime
//
ReportColumn rcYear = rt.NewColumn("Mill.");
rcYear.Size = 35;
rcYear.ContentAlignment = ReportContentAlignment.Right;
rcYear.DataType = ReportColumnType.Numeric;

//
// Nombre de bouteilles
//
ReportColumn rcBottles = rt.NewColumn("Qte");
rcBottles.Size = 40;
rcBottles.ContentAlignment = ReportContentAlignment.Right;
rcBottles.DataType = ReportColumnType.Numeric;

// Format
ReportColumn rcFormat = rt.NewColumn("Format");
rcFormat.Size = 50;

//
// Localisation
//
ReportColumn rcLocalisation = rt.NewColumn("Emplacement");
rcLocalisation.Size = 80;

// Create datasource
ObjectCollection wines = App.ActiveCellar.GetCollection((ushort)ObjectType.Wine);
ObjectCollection racks = App.ActiveCellar.GetCollection((ushort)ObjectType.Rack);

for (int i = 0; i < wines.Count; i++)
{
Wine wine = (Wine)wines[i];
int qte = 0;

if(wine.ManualManagement)
{
qte = wine.Bottles;
}
else
{
qte = wine.RackItems.Count;
}

if(qte == 0)
{
continue;
}

ReportRow row = rt.NewRow();

row[0] = wine.Country.Name;

row[1] = "Champagne";
if(wine.WineColor == ColorType.Red)
{
row[1] = "Rouge";
}
else if(wine.WineColor == ColorType.White)
{
row[1] = "Blanc";
}
else if(wine.WineColor == ColorType.Rosy)
{
row[1] = "Rosé";
}
else if(wine.WineColor == ColorType.Yellow)
{
row[1] = "Champagne";
}
else if(wine.WineColor == ColorType.LiqueurLike)
{
row[1] = "Liquoreux";
}
else if(wine.WineColor == ColorType.Misc)
{
row[1] = "Autre";
}

row[2] = wine.Area.Name;
row[3] = wine.Appellation.Name;
row[4] = wine.Name;


if(wine.Year != 0)
{
row[5] = wine.Year.ToString();
}

row[6] = qte.ToString();
row[7] = wine.BottleType.Name;

if(!wine.ManualManagement)
{
row[8] = "???";

for (int j = 0; j < racks.Count; j++)
{
Rack rack = (Rack)racks[j];
for (byte rowZ = 0; rowZ < rack.Rows; rowZ++)
{
for(byte column = 0; column < rack.Columns; column++)
{
RackItem ri = rack.Get((byte)column, (byte)rowZ);
if ((ri != null)&&(ri.Wine != null)&&(ri.Wine == wine))
{
row[8] = rack.Name.Trim();
}
}
}
}

}

}


// sort items
rt.Sort("0-0;1-0;2-0;3-0");

// GoOo
System.Collections.ArrayList list = new System.Collections.ArrayList();
list.Add(rt);

IReport report = App.ReportEngine.GetSystemReport(PredefinedReport.Grid);

string destFileName = App.Path + "Cache\\UserWinesGrid.pdf";
bool success = false;
try
{
report.Create(list, destFileName);
success = true;
}
catch(Exception ex)
{
MessageBox.Show("Error (1)");
}

// Show report
if(success)
{
IShellWindow shellWindow = (IShellWindow)App.GetWindow(WindowType.Shell, null);
if(shellWindow != null)
{
shellWindow.Start(destFileName);
}
}

App.SetCursor(false);
App.StopAnimate();
 

10/12/2007
Répondre
Re : Rapports - livre de cave
AdministrateurVoir son blog
3099 posts
Bien vu TheWolf :-)

Pour les emplacements de caves vous pouvez remplacer par ceci :

if(!wine.ManualManagement)
{
row[8] = "";

System.Collections.Specialized.StringCollection racksList = new System.Collections.Specialized.StringCollection();

for (int counter = 0; counter < wine.RackItems.Count; counter++)
{
RackItem item = (RackItem)wine.RackItems[counter];
if(!racksList.Contains(item.Parent.Name.Trim()))
{
racksList.Add(item.Parent.Name.Trim());
}
}

for(int counter = 0; counter < racksList.Count; counter++){
row[8] += racksList[counter];
if((counter + 1) < racksList.Count) {
row[8]+= " - ";
}
}

}

}


// sort items
rt.Sort("0-0;1-0;2-0;3-0");

Matthieu
 

10/12/2007
Répondre
Re : Rapports - livre de cave
sempels
2 posts
Merci à vous tous...
Jamais vu un suivi aussi rapide.
Si vous allez aussi vite pour boire vos vins, je voudrais faire partie de vos copains !
Stéphan
 

© 2006-2014 Matthieu DUCROCQ Blog officiel d'Open Cellar - Tous droits réservés - Dernière mise à jour : janvier 2014 | twitter | facebook