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 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]));
99 void read_journal(char *journal_file)
108 std::ifstream i(journal_file);
123 if (date(B) < date(b[n_b - 1]))
125 std::cerr << "The date of booking " << B.number() << " is out of sequence.\n";
127 if (B.number() < b[n_b - 1].number())
129 std::cerr << "The number of booking " << B.number() << " is out of sequence.\n";
133 for (int j = 0; j < n_mut; j++)
138 std::cerr << "Booking nr. " << B.number()
139 << " is out of balance: " << bal << "\n";
146 //std::cerr << B << "\n"; // Provide visual check
150 M[n_mut] = Mutation(B.number());
152 //std::cerr << " > " << M[n_mut] << "\n"; // Provide visual check
160 std::cerr << "Input error at #" << B.number() << "\n";
165 case '\n' : break; // Ignore linefeeds
175 for (int j = 0; j < n_mut; j++)
181 void renumber_journal(char *journal_file, unsigned long renumber)
183 std::ifstream i(journal_file);
186 bool started = false;
192 int c = line.index(' ');
193 String nr = line(1,c-1);
194 unsigned long b_nr = nr.dec();
195 line(0,c) = String("");
203 if (b_nr == renumber)
209 std::cout << "#" << std::setw(4) << std::setfill('0') << b_nr;
210 std::cout << line << "\n";
214 std::cout << line << "\n";
221 for (int mi = 0; mi < n_m; mi++)
223 std::cout << m[mi] << "\n";