Import of revision 19971210+
[mspang/plceo1.git] / cashbox.pl
1 #
2 # Date                  Name                            Modification
3 # ----          ----                ------------
4 # 94/09/14              Alex Brodsky            Split off from main ceo file
5 #
6
7
8 sub cashboxmenu
9 {
10     $menu = <<EOM;
11
12 This menu is _not_ for membership, quota, or novelty sales.
13
14 What kind of transaction?
15   (D)eposit into cash box
16   (W)ithdraw from cash box
17   (V)iew cash log
18   (S)ync cash box
19   (M)ain menu
20
21 (D,W,V,S,M): 
22 EOM
23     @opts = ('ddodeposit','wdowithdraw','vdocashlog','sdocashsync',
24         'mmainmenu');
25     $choice = &domenu($menu,@opts);
26     return $choice;
27 }
28
29 sub dodeposit
30 {
31     &Editscreen(<<EOS);
32 Amount to deposit (in dollars): 
33 Log entry for deposit         : 
34 EOS
35     &VI;
36     ($amount, $log) = split("\n",&Filterscreen);
37     $amount =~ s/[^\d\.]//g;
38     $amount = sprintf("%.2f", $amount+.0005);
39     if ($amount eq "" || $amount == 0)
40     {
41         print "\n${beep}No amount supplied - aborting.\n\n";
42         return;
43     }
44     if ($log !~ /\w/)
45     {
46         print "\n${beep}No log supplied - aborting.\n\n";
47         return;
48     }
49     $log =~ s/;/:/g;
50     &UpdateCashlog($amount,$log);
51 }
52
53 sub dowithdraw
54 {
55     &Editscreen(<<EOS);
56 Amount to withdraw (in dollars): 
57 Log entry for withdrawal       : 
58 EOS
59     &VI;
60     ($amount, $log) = split("\n",&Filterscreen);
61     $amount =~ s/[^\d\.]//g;
62     $amount = sprintf("%.2f", $amount+.0005);
63     if ($amount eq "" || $amount == 0)
64     {
65         print "\n${beep}No amount supplied - aborting.\n\n";
66         return;
67     }
68     if ($log !~ /\w/)
69     {
70         print "\n${beep}No log supplied - aborting.\n\n";
71         return;
72     }
73     $log =~ s/;/:/g;
74     &UpdateCashlog(-$amount,$log);
75 }
76
77 sub docashsync
78 {
79     open (CASH, $CASHLOG) || do
80     {
81         print "Error opening cash log file: $!\n";
82         return;
83     };
84     while(<CASH>)
85     {
86         next if /^\s*$/;
87         next if /^\s*#/;
88         $lastamount = (split(';'))[3];
89     }
90     close(CASH);
91     &Editscreen(<<EOS);
92 Amount of money actually in cashbox (in dollars): 
93 Your name                                       : 
94 EOS
95     &VI;
96     ($amount, $log) = split("\n",&Filterscreen);
97     $amount =~ s/[^\d\.]//g;
98     $amount = sprintf("%.2f", $amount+.0005);
99     if ($amount eq "" || $amount == 0)
100     {
101         print "\n${beep}No amount supplied - aborting.\n\n";
102         return;
103     }
104     if ($log !~ /\w/)
105     {
106         print "\n${beep}No name supplied - aborting.\n\n";
107         return;
108     }
109     $log =~ s/;/:/g;
110
111     chop($date = `date`);
112
113     open (CASH, ">>$CASHLOG") || do
114     {
115         print "Error writing cash log file: $!\n";
116         return;
117     };
118
119     $diff = sprintf("%.2f",0.0000001 + $amount - $lastamount);
120     print CASH "$date;$diff;Cashbox sync by $log;$amount\n";
121
122     close(CASH);
123     &Backup($CASHLOG);
124 }
125
126 sub UpdateCashlog
127 {
128     local($amount) = shift;
129     local($log) = shift;
130     open (CASH, $CASHLOG) || do
131     {
132         print "Error opening cash log file: $!\n";
133         return;
134     };
135     while(<CASH>)
136     {
137         next if /^\s*$/;
138         next if /^\s*#/;
139         $lastamount = (split(';'))[3];
140     }
141     close(CASH);
142
143     $amount = sprintf("%.2f", .0000001+$amount);
144     if ($amount < 0)
145     {
146         $amount = -$amount;
147         $amount = sprintf("%.2f", .0000001+$amount);
148         print "\n";
149         print "=========================================","=" x length($amount);
150         print "\n${beep}You may now withdraw \$$amount from the cash box.\n";
151         print "=========================================","=" x length($amount);
152         print "\n";
153         $amount = -$amount;
154         $amount = sprintf("%.2f", .0000001+$amount);
155     }
156     else
157     {
158         print "\n";
159         print "===================================","=" x length($amount);
160         print "\n${beep}Please deposit \$$amount into the cash box.\n";
161         print "===================================","=" x length($amount);
162         print "\n";
163     }
164
165     chop($date = `date`);
166
167     open (CASH, ">>$CASHLOG") || do
168     {
169         print "Error writing cash log file: $!\n";
170         return;
171     };
172
173     print CASH "$date;$amount;$log;";
174     printf CASH "%.2f\n", .0000001+$lastamount+$amount;
175
176     close(CASH);
177     &Backup($CASHLOG);
178 }
179
180
181 sub docashlog
182 {
183     open(CASHLOG, $CASHLOG) || do
184     {
185         print "\n${beep}Unable to open cash log: $!\n";
186         return;
187     };
188     open(SCRCASHLOG, ">$editfile") || do
189     {
190         print "\n${beep}Unable to open output file: $!\n";
191         close(CASHLOG);
192         return;
193     };
194     select(SCRCASHLOG);
195     $-=0;
196     $= = $ROWS - 1;
197     ##$_ = `stty size`; ($=) = /^(\d+)/; $= -= 2;
198     while(<CASHLOG>)
199     {
200         next if (/^\s*$/ || /^\s*#/);
201         ($cashdate, $cashamt0, $cashlog, $cashtot0) = split(/;/);
202         $cashamt = sprintf("%.2f",$cashamt0);
203         $cashtot = sprintf("%.2f",$cashtot0);
204         write;
205     }
206     close(CASHLOG);
207     select(STDOUT);
208     close(SCRCASHLOG);
209     &MORE;
210 }
211
212
213 1;
214