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
Rapports - livre de cave
10/12/2007
Reply
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
Reply
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
Reply
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
Reply
Re : Rapports - livre de cave
AdministrateurView your 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
Reply
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  Open Cellar official blog - All rights reserved - Last update: january 2014 | twitter