6 static char helptext[] =
7 "Usage: account [options] journal\n"
11 " --renumber <start> : Renumber the booking numbers (start > 0)\n"
12 " --help : Print this helpful message\n"
14 " --version : Print the version number\n";
16 void read_journal(char *journal_file);
17 void renumber_journal(char *journal_file, unsigned long renumber);
26 static struct option long_options[] =
28 { "help", no_argument, 0, 'h' },
29 { "renumber", required_argument, 0, 'r' },
30 { "version", no_argument, 0, 'V' },
34 int main(int argc, char *argv[])
39 unsigned long renum = 0;
43 while ((c = getopt_long(argc, argv, "Vr:", long_options, &option_index)) != -1)
48 std::cout << helptext;
53 std::cout << "account version 1.4\n";
58 renum = String(optarg);
65 std::cerr << "Usage: account [options] journal_file\n";
71 renumber_journal(argv[optind], renum);
75 ledger.read((char *)"Ledger");
76 read_journal(argv[optind]);
81 while (a = ledger.next(), a != acc_nr(1000, 1000))
84 ledger.accounts_report("grootboek.ps");
86 // Calculate all accounts to create the final balance.
88 for (i = 0; i < n_m; i++)
93 ledger.saldi_report("saldibalans.ps", date(b[0]), date(b[n_b-1]));
95 std::ofstream saldi("saldi.xml");
96 ledger.XML_saldi(saldi, date(b[0]), date(b[n_b-1]));
101 void read_journal(char *journal_file)
110 std::ifstream i(journal_file);
125 if (date(B) < date(b[n_b - 1]))
127 std::cerr << "The date of booking " << B.number() << " is out of sequence.\n";
129 if (B.number() < b[n_b - 1].number())
131 std::cerr << "The number of booking " << B.number() << " is out of sequence.\n";
135 for (int j = 0; j < n_mut; j++)
140 std::cerr << "Booking nr. " << B.number()
141 << " is out of balance: " << bal << "\n";
148 //std::cerr << B << "\n"; // Provide visual check
152 M[n_mut] = Mutation(B.number());
154 //std::cerr << " > " << M[n_mut] << "\n"; // Provide visual check
162 std::cerr << "Input error at #" << B.number() << "\n";
167 case '\n' : break; // Ignore linefeeds
177 for (int j = 0; j < n_mut; j++)
183 void renumber_journal(char *journal_file, unsigned long renumber)
185 std::ifstream i(journal_file);
188 bool started = false;
194 int c = line.index(' ');
195 String nr = line(1,c-1);
196 unsigned long b_nr = nr.dec();
197 line(0,c) = String("");
205 if (b_nr == renumber)
211 std::cout << "#" << std::setw(4) << std::setfill('0') << b_nr;
212 std::cout << line << "\n";
216 std::cout << line << "\n";
223 for (int mi = 0; mi < n_m; mi++)
225 std::cout << m[mi] << "\n";