Added a 'companyname' attribute in the Ledger.
authorArjen Baart <arjen@andromeda.nl>
Tue, 21 Dec 2010 15:23:06 +0000 (16:23 +0100)
committerArjen Baart <arjen@andromeda.nl>
Tue, 21 Dec 2010 15:23:06 +0000 (16:23 +0100)
The Ledger may now have attributes stated on lines of the form
  $name = value.
The attribute now implemented is 'companyname' which is subsequently
used in titles on XML generated reports.

Ledger
account.cpp
account.h
balans.xsl
profit.xsl
saldibalans.xsl

diff --git a/Ledger b/Ledger
index 005c484..c83e605 100644 (file)
--- a/Ledger
+++ b/Ledger
@@ -1,3 +1,5 @@
+$companyname = Voorbeeld en Test
+$companyurl = http://www.example.com/
 001.00 B  Onroerend goed
 002.00 B  Inventaris kantoor
 002.04 B  Inventaris werkplaats
 460.00 K  Div. kosten
 461.00 K  Koersverschillen
 480.00 K  Research kosten
+
 700.00 B  Voorraad produkten (#75-#79)
 701.00 K  Afschrijving produkten
 710.00 B  Voorraad supplies  (#80-#89)
 711.00 K  Afschrijving supplies
 720.00 B  Voorraad software  (#90-#99)
 721.00 K  Afschrijving software
+
 800.00 K  Inkoopprijs van de verkopen
 800.20 K  Inkoopprijs van de verkopen eigen produktie
 800.40 K  Inkoopprijs software
@@ -93,3 +97,4 @@
 840.61 K  Opbrengst Advies/ontwikkeling 0%
 840.80 K  Opbrengst reparaties
 910.00 K  Diverse baten en lasten
+
index ef1d0b8..ea071d6 100644 (file)
@@ -379,7 +379,7 @@ void Ledger::XML_saldi(std::ostream &s, date period_begin, date period_end)
    int  i;
 
    s << "<?xml version='1.0'?>\n";
-   s << "<accounting>\n";
+   s << "<accounting companyname='" << companyname << "'>\n";
    s << "<balance-sheet begin='" << period_begin << "' end='" << period_end << "'>\n";
    for (i=0; i<nr_accs; i++)
    {
@@ -575,6 +575,7 @@ void Ledger::read(char *filename)
 {
    std::ifstream   in(filename);
    Account   A;
+   char      line_begin;
 
    if (!in)
    {
@@ -583,9 +584,61 @@ void Ledger::read(char *filename)
    }
 
    nr_accs = 0;
-   while (in  >> A)
-      accs[nr_accs++] = A;
+   while (in)
+   {
+      in.get(line_begin);
+      if (isdigit(line_begin))
+      {
+         in.putback(line_begin);
+         in >> A;
+         accs[nr_accs++] = A;
+      }
+      else if (line_begin == '$')
+      {
+         // Optional attributes
+         String  attribute;
+         String  a_name, a_value;
+
+         in >> attribute;
+
+         int  separator = attribute.index('=');
+         do
+         {
+            separator--;
+         }
+         while (isspace(attribute[separator]));
+         a_name = attribute(0, separator+1);
+
+         separator = attribute.index('=');
+         do
+         {
+            separator++;
+         }
+         while (isspace(attribute[separator]));
+         a_value = attribute;
+         a_value(0, separator) = "";
+
+         if (a_name == "companyname")
+         {
+            companyname = a_value;
+         }
+         else
+         {
+            std::cerr << "Unrecognized attribute in Ledger: " << a_name << "\n";
+         }
+      }
+      else if (line_begin == '\n')
+      {
+         //  Ignore empty lines
+      }
+      else
+      {
+         //  Anything else is comment: eat it.
+         String comment;
 
+         in >> comment;
+      }
+   }
    accs[nr_accs].Name() = String("Rekening bestaat niet");
 
 }
index ea03a2c..133c82a 100644 (file)
--- a/account.h
+++ b/account.h
@@ -299,6 +299,8 @@ public:
 
 class Ledger
 {
+   String  companyname;
+
    Account accs[200];
    int     nr_accs;
    int     idx;
index e476b34..d77f3a0 100644 (file)
@@ -15,7 +15,7 @@
 
 </head>
 <body>
-   <h1>Balans per <xsl:value-of select='@end'/></h1>
+   <h1>Balans voor <xsl:value-of select='../@companyname'/> per <xsl:value-of select='@end'/></h1>
 
    <h2>Bezittingen</h2>
    <table>
index 26c44d4..08ce8e9 100644 (file)
@@ -14,7 +14,7 @@
   <title>Winst en Verlies rekening</title>
 </head>
 <body>
-   <h1>Winst en Verlies rekening</h1>
+   <h1>Winst en Verlies rekening <xsl:value-of select='../@companyname'/></h1>
    <h2>Periode van <xsl:value-of select='@begin'/> tot <xsl:value-of select='@end'/></h2>
 
    <h2>Opbrengsten</h2>
index 7e0ba7c..66a7776 100644 (file)
@@ -12,7 +12,7 @@
 <head>
 </head>
 <body>
-   <h1>Saldi Balans</h1>
+   <h1>Saldi Balans <xsl:value-of select='../@companyname'/></h1>
    <h2>Periode van <xsl:value-of select='@begin'/> tot <xsl:value-of select='@end'/></h2>
 
    <table border='1'>