home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World 2000 February
/
PCWorld_2000-02_cd.bin
/
live
/
usr
/
X11R6
/
lib
/
X11
/
cbb
/
export.pl
< prev
next >
Wrap
Perl Script
|
1998-10-07
|
5KB
|
171 lines
#!/usr/bin/perl
# export.pl - functions to implement exporting data to other formats
#
# Written by Curtis Olson. Started October 19, 1994.
#
# Copyright (C) 1994 - 1997 Curtis L. Olson - curt@sledge.mn.org
#
# 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: export.pl,v 2.7 1997/04/23 18:07:28 curt Exp $
# (Log is kept at end of this file)
package CBB;
use strict; # don't take no guff
# save data in the CBB format
sub save_cbb {
# in: file base name
# out: result
my($file) = @_;
my($key);
if ($CBB::calced == 0) {
&calc_trans();
}
open(SAVE, ">$file.new");
if ($CBB::sorted_keys == 0) {
&sort_keys();
}
foreach $key (@CBB::KEYS) {
print (SAVE "$CBB::TRANS{$key}\n");
}
close(SAVE);
unlink("$file.bak");
rename("$file", "$file.bak");
rename("$file.new", "$file");
return "ok";
}
# Contributed by Christopher Browne, Oct. 18/94
# export a quicken export file (.qif)
sub export_qif {
# in: file
# out: result
my($file) = @_;
my($key);
my($date, $check, $desc, $debit, $credit, $cat, $split, $com, $cleared);
my($amount, $i, @SPLIT, $scom, $scat, $junk);
my($dy, $mo, $yr);
$CBB::sorted_keys = 0;
$CBB::calced = 0;
open(QIF, ">$file");
print QIF "Type:Bank\n"; # This will need to change,
# eventually, to handle other
# varieties of QUICKEN accounts.
# Credit cards, investments, etc.
# Later.
($date, $check, $desc, $debit, $credit, $cat, $split, $com,
$cleared) = ("", "", "", "", "", "", "", "", "");
foreach $key (keys (%CBB::TRANS)) {
($date, $check, $desc, $debit, $credit, $cat, $com, $cleared,
$junk) = split(/\t/, $CBB::TRANS{$key});
# Handle date
$yr = substr($date, 2, 2);
$mo = substr($date, 4, 2);
$dy = substr($date, 6, 2);
printf QIF "D%d/%2d/%2d\n", $mo, $dy, $yr;
# Handle amount
$amount = $credit-$debit;
printf QIF "T%.2lf\n", $amount;
printf QIF "C$cleared\n" unless ($cleared eq "");
# Handle Ref. #
print QIF "N$check\n" unless ($check eq "");
print QIF "P$desc\n" unless ($desc eq "");
# Replace underscores by blanks in transfer categories. (BW)
while (($cat =~ s/\[([^\]_]*)_([^\]]*)\]/\[$1 $2\]/g) != 0) {
}
print QIF "L$cat\n" unless (substr($cat, 0, 1) eq "\|"); # split txn
# Handle splitting of txn
if (substr($cat, 0, 1) eq "\|") {
# Take: |Salary|2434.70|Tax-Fed|-0.34|Tax-FICA|-33.25|Tax-State|-5.78|
@SPLIT = split(/\|/, $cat);
print QIF "L$SPLIT[1]\n";
# Pretend that the initial category is "the one"
for ($i = 1 ; $i <= $#SPLIT ; $i += 3) {
$scat = $SPLIT[$i];
print QIF "S$scat\n";
$scom = $SPLIT[$i+1];
print QIF "E$scom\n";
$amount = $SPLIT[$i+2];
print QIF "\$$amount\n";
}
} else {
}
print QIF "M$com\n" unless ($com eq "");
print QIF "^\n";
}
close(QIF);
return "ok";
}
1; # need to return a true value
# ----------------------------------------------------------------------------
# $Log: export.pl,v $
# Revision 2.7 1997/04/23 18:07:28 curt
# Patched these to make importing/exporting more seamless.
#
# Revision 2.6 1997/01/18 03:28:43 curt
# Added "use strict" pragma to enforce good scoping habits.
#
# Revision 2.5 1996/12/17 14:53:55 curt
# Updated copyright date.
#
# Revision 2.4 1996/12/16 04:18:16 curt
# Continuing the great overhaul of December 1996.
#
# Revision 2.3 1996/12/11 18:33:34 curt
# Ran a spell checker.
#
# Revision 2.2 1996/07/13 02:57:42 curt
# Version 0.65
# Packing Changes
# Documentation changes
# Changes to handle a value in both debit and credit fields.
#
# Revision 2.1 1996/02/27 05:35:41 curt
# Just stumbling around a bit with cvs ... :-(
#
# Revision 2.0 1996/02/27 04:42:54 curt
# Initial 2.0 revision. (See "Log" files for old history.)