#!/usr/local/bin/perl # yearend.pl - export all uncleared transactions to "uncleared.cbb" # Then DELETE these transactions from the original file! # # warning: This program is rather slow ... but hey, you only have # to run it occasionally and it gives the impression that # it is really working hard. :) # # Written by Curtis Olson. Started February 10, 1995. # # Copyright (C) 1995 - 1999 Curtis L. Olson - curt@me.umn.edu # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # $Id: yearend.pl,v 1.1.1.1 1999/12/18 02:06:13 curt Exp $ # (Log is kept at end of this file) package CBB; use strict; # don't take no guff my($key, $date, $check, $desc, $debit, $credit, $cat, $com, $cleared, $total); my($account, $cbb_incl_dir, $lastkey, $outfile, $response, $result); # specify the installed location of the necessary pieces. $CBB::cbb_incl_dir = ".."; unshift(@INC, $CBB::cbb_incl_dir); require "categories.pl"; require "engine.pl"; require "memorized.pl"; ($#ARGV >= 0) || die "Usage: yearend.pl account output-file"; print "This program will MOVE all uncleared transactions from the\n"; print "specified account to the specified export file. The uncleared\n"; print "transactions WILL BE DELETED from the specified account.\n"; print "You are strongly encouraged to make BACKUPS of all your data\n"; print "before attempting to do this.\n\n"; print "Do you wish to continue? (yes/no) "; $response = ; if ( $response =~ m/yes/i ) { print "Ok, continuing:\n\n"; } else { die "Bailing out ... nothing was done to your data.\n"; } $account = shift(@ARGV); (&load_trans($account) eq "ok") || die "Cannot open account: $account"; $outfile = shift(@ARGV); open(OUTPUT, ">$outfile"); $result = &first_trans(); while ( $result ne "none" ) { ($key, $date, $check, $desc, $debit, $credit, $cat, $com, $cleared, $total) = split(/\t/, $result); if ( $cleared ne "x" ) { print (OUTPUT "$CBB::TRANS{$key}\n"); print "."; &delete_trans($key); if ( defined($lastkey) ) { &find_trans($lastkey); } } else { $lastkey = $key; } $result = &next_trans(); } close(OUTPUT); (&save_trans("$account") eq "ok") || die "Cannot save account: $account"; print "\n"; # ---------------------------------------------------------------------------- # $Log: yearend.pl,v $ # Revision 1.1.1.1 1999/12/18 02:06:13 curt # Start of 0.8 branch # # Revision 1.1 1999/12/17 19:21:02 curt # Added to repository. # # Revision 2.6 1999/11/21 00:48:02 curt # Tweaks to copyright dates and email address. # # Revision 2.5 1998/08/14 14:28:46 curt # Added desc-pie graph. # Added option to eliminate splash screen. # Other misc. tweaks and bug fixes. # # Revision 2.4 1997/02/19 18:09:10 curt # Fixed some residual oversites from switching to "use strict". # # Revision 2.3 1997/01/18 17:26:40 curt # Added "use strict" pragma to enforce good scoping habits. # # Revision 2.2 1996/07/13 02:58:25 curt # Misc. changes. # # Revision 2.1 1996/02/27 05:36:06 curt # Just stumbling around a bit with cvs ... :-( # # Revision 2.0 1996/02/27 04:43:15 curt # Initial 2.0 revision. (See "Log" files for old history.)