summaryrefslogtreecommitdiff
path: root/httemplate/edit
diff options
context:
space:
mode:
Diffstat (limited to 'httemplate/edit')
-rwxr-xr-xhttemplate/edit/process/usage_elec_manual_input.cgi225
-rwxr-xr-xhttemplate/edit/usage_elec_manual_input.cgi213
2 files changed, 438 insertions, 0 deletions
diff --git a/httemplate/edit/process/usage_elec_manual_input.cgi b/httemplate/edit/process/usage_elec_manual_input.cgi
new file mode 100755
index 000000000..1a62c3937
--- /dev/null
+++ b/httemplate/edit/process/usage_elec_manual_input.cgi
@@ -0,0 +1,225 @@
+%
+%$cgi->param('svcnum') =~ /^(\d*)$/ or die "Illegal svcnum!";
+%my $svcnum =$1;
+%$svcnum = $cgi->param('svcnum');
+svcnum = <% $svcnum %><br>
+%
+%my $old = qsearchs('svc_external',{'svcnum'=>$svcnum}) if $svcnum;
+%
+%
+%### this is the field name for usage_elec with the exception of
+%### prev_date, curr_date, _date
+%my @field_name = qw / prev_read curr_read tdsp
+% meter_multiplier total_usage measured_demand
+% billed_demand svcnum meter_number /;
+%my ($prev_date, $curr_date, $_date);
+%
+%my %usage_hash = (
+% map {
+% ($_, scalar($cgi->param($_)))
+% } ( @field_name )
+% );
+%
+% my $error = '';
+%
+% # Some general rules regarding the data
+% # prev_date, curr_date -
+% # 8 digit in format of yyyymmdd (y-year m-month d-date)
+% # prev_read, curr_read - positive interger. curr_read > prev_read
+% # tdsp - an dollar amount w/wo cent
+% # meter_multiplier - positive integer
+% # total_usage -
+% # should equal (total_usage = (prev_read-curr_read) * meter_multiplier
+% # unless meter multiplier ignore value is set
+% # measured_demand - positive integer
+% # billed_demand - positive integer
+% # meter_number - alpha numeric value
+%
+% # prev_date, curr_date -
+% # 8 digit in format of yyyymmdd (y-year m-month d-date)
+% my ($pd, $cd) = ($cgi->param('prev_date'),$cgi->param('curr_date'));
+% if ( $pd =~ /^(\d{4})(\d{2})(\d{2})$/ ) {
+% my ($y,$m,$d) = ($1,$2,$3);
+% if ($m < 01 || $m > 12 || $d < 01 || $d > 31) {
+% $error = "error: previous date '$pd' must follow the rule"
+% ." of being 8 digit in format of yyyymmdd (y-year m-month d-date)";
+% $cgi->param('error', $error);
+% print $cgi->redirect(popurl(2). "usage_elec_manual_input.cgi?"
+% . $cgi->query_string );
+% }
+% }
+% else {
+% $error = "error: previous date '$pd' must follow the rule"
+% ." of being 8 digit in format of yyyymmdd (y-year m-month d-date)";
+% $cgi->param('error', $error);
+% print $cgi->redirect(popurl(2). "usage_elec_manual_input.cgi?"
+% . $cgi->query_string );
+% }
+% if ( ($cd =~ /^(\d{4})(\d{2})(\d{2})$/) ) {
+% my ($y,$m,$d) = ($1,$2,$3);
+% if ($m < 01 || $m > 12 || $d < 01 || $d > 31) {
+% $error = "error: previous date '$cd' must follow the rule"
+% ." of being 8 digit in format of yyyymmdd (y-year m-month d-date)";
+% $cgi->param('error', $error);
+% print $cgi->redirect(popurl(2). "usage_elec_manual_input.cgi?"
+% . $cgi->query_string );
+% }
+% }
+% else {
+% $error = "error: previous date '$cd' must follow the rule"
+% ." of being 8 digit in format of yyyymmdd (y-year m-month d-date)";
+% $cgi->param('error', $error);
+% print $cgi->redirect(popurl(2). "usage_elec_manual_input.cgi?"
+% . $cgi->query_string );
+% }
+%
+%
+% my $multiplier_ignore_flag = $cgi->param('ignore_meter_multiplier');
+%
+% # check prev_read and curr_read
+% my ($pr, $cr) = ($usage_hash{'prev_read'},$usage_hash{'curr_read'});
+% if ($pr =~ /^\d+$/ && $cr =~ /^\d+$/) {
+% # prev and curr are integer
+% if ( ($pr > $cr) && (!$multiplier_ignore_flag) ) {
+% # prev > current .. this is not possible unless meter change
+% $error = "error: previous reading '$pr' is greater than current reading"
+% ." '$cr'\n";
+% $cgi->param('error', $error);
+% print $cgi->redirect(popurl(2). "usage_elec_manual_input.cgi?"
+% . $cgi->query_string );
+% }
+% }
+% else {
+% $error = "error: previous reading '$pr' or current reading '$cr'"
+% ." need to follow the simple rule of being a positive integer.\n";
+% $cgi->param('error', $error);
+% print $cgi->redirect(popurl(2). "usage_elec_manual_input.cgi?"
+% . $cgi->query_string );
+% }
+%
+% # tdsp - an dollar amount w/wo cent
+% my $tdsp = $usage_hash{'tdsp'};
+% if ( $tdsp !~ /^(\d+|\d+\.\d{2})$/ ) {
+% $error = "error: tdsp '$tdsp' must follow the rule<br>"
+% ." of being a dollar amount w/wo cent value.<br>";
+% $cgi->param('error', $error);
+% print $cgi->redirect(popurl(2). "usage_elec_manual_input.cgi?"
+% . $cgi->query_string );
+% }
+%
+% # meter_multiplier - positive integer
+% my $mm = $usage_hash{'meter_multiplier'};
+% #if ( ($mm < 0) || ($mm !~ /^\d+$/) ) {
+% if ( ($mm < 0) || ($mm !~ /^\d+\.{0,1}\d*$/) ) {
+% $error = "error: meter multiplier '$mm' must follow the rule<br>"
+% ." of being a positive integer.<br>";
+% $cgi->param('error', $error);
+% print $cgi->redirect(popurl(2). "usage_elec_manual_input.cgi?"
+% . $cgi->query_string );
+% }
+%
+% # total_usage -
+% # should equal (total_usage = (curr_read-prev_read) * meter_multiplier
+% # unless meter multiplier ignore value is set
+% my $input_tu = $usage_hash{'total_usage'};
+% my $tu = ($cr-$pr)*$mm;
+% if ( ( ($tu != $input_tu) && (! $multiplier_ignore_flag)) ) {
+% # total usage didn't equal formula and there were no ignore set
+% $error = "error: total usage '$input_tu' '$tu' must follow the formula<br>"
+% ." total_usage = (current_reading - previous_reading) * meter_multiplier<br>"
+% ." unless the meter multiplier ignore flag '$multiplier_ignore_flag' is set.<br>";
+% $cgi->param('error', $error);
+% print $cgi->redirect(popurl(2). "usage_elec_manual_input.cgi?"
+% . $cgi->query_string );
+% }
+%
+% # measured_demand - positive integer
+% my $md = $usage_hash{'measured_demand'};
+% if ( ($md < 0) || ($md !~ /^\d+$/) ) {
+% $error = "error: measured demand '$md' must follow the rule<br>"
+% ." of being a positive integer.<br>";
+% $cgi->param('error', $error);
+% print $cgi->redirect(popurl(2). "usage_elec_manual_input.cgi?"
+% . $cgi->query_string );
+% }
+%
+% # billed_demand - positive integer
+% my $bd = $usage_hash{'billed_demand'};
+% if ( ($bd < 0) || ($bd !~ /^\d+$/) ) {
+% $error = "error: billed demand '$bd' must follow the rule<br>"
+% ." of being a positive integer.<br>";
+% $cgi->param('error', $error);
+% print $cgi->redirect(popurl(2). "usage_elec_manual_input.cgi?"
+% . $cgi->query_string );
+% }
+%
+% # meter_number - alpha numeric value
+% my $mn = $usage_hash{'meter_number'};
+% if ( $mn !~ /^[a-z0-9]+$/i ) {
+% $error = "error: meter number '$mn' must follow the rule<br>"
+% ." of being a alpha numeric value.<br>";
+% $cgi->param('error', $error);
+% print $cgi->redirect(popurl(2). "usage_elec_manual_input.cgi?"
+% . $cgi->query_string );
+% }
+%
+%
+%# convert the field date to it strtime
+%$prev_date = FS::usage_elec::to_usage_elec_time($cgi->param('prev_date'));
+%unless ($prev_date) {
+% $error = "error: unable to convert prev_date ".$cgi->param('prev_date')
+% ." to a usable time for usage_elec\n";
+% $cgi->param('error', $error);
+% print $cgi->redirect(popurl(2). "usage_elec_manual_input.cgi?"
+% . $cgi->query_string );
+%}
+%
+%$curr_date = FS::usage_elec::to_usage_elec_time($cgi->param('curr_date'));
+%unless ($curr_date) {
+% $error = "error: unable to convert curr_date ".$cgi->param('curr_date')
+% ." to a usable time for usage_elec\n";
+% $cgi->param('error', $error);
+% print $cgi->redirect(popurl(2). "usage_elec_manual_input.cgi?"
+% . $cgi->query_string );
+%}
+%
+%$_date = time;
+%
+%$usage_hash{prev_date} = $prev_date;
+%$usage_hash{curr_date} = $curr_date;
+%$usage_hash{_date} = $_date;
+%
+%my $new = new FS::usage_elec( \%usage_hash );
+%
+%if ( $svcnum ) {
+% $error = $new->insert_usage;
+%} else {
+% $error = "error: can't insert data into usage_elec table without a "
+% ."service number\n"
+%}
+%
+%if ($error) {
+% # handle can't insert data into usage_elec
+% $cgi->param('error', $error);
+% print $cgi->redirect(popurl(2). "usage_elec_manual_input.cgi?"
+% . $cgi->query_string );
+%} else {
+% # look like the data has been inserted into usage_elec successfully
+% # now let generate the bill
+% $error = FS::usage_elec::billing_call($new);
+% if ($error) {
+% # handle can't execute billing
+% $error = "error: Execution of billing failed.\n"
+% ."$error";
+% # delete the usage_elec that was just entered because billing failed
+% $new->delete;
+% $cgi->param('error', $error);
+% print $cgi->redirect(popurl(2). "usage_elec_manual_input.cgi?"
+% . $cgi->query_string );
+% }
+%
+% print $cgi->redirect(popurl(3). "view/svc_external.cgi?$svcnum");
+%}
+%
+%
+
diff --git a/httemplate/edit/usage_elec_manual_input.cgi b/httemplate/edit/usage_elec_manual_input.cgi
new file mode 100755
index 000000000..7f9d9fa72
--- /dev/null
+++ b/httemplate/edit/usage_elec_manual_input.cgi
@@ -0,0 +1,213 @@
+%my $debug=0; # toggle debug
+%my( $svcnum, $pkgnum, $svcpart, $part_svc, $svc_external );
+%my @field_descriptions = ( 'prev date', 'curr date', 'prev reading',
+% 'curr reading', 'tdsp', 'meter mult',
+% 'total usage', 'measured demand', 'billed demand',
+% 'svcnum', 'entry date', 'meter number' );
+%my @field_name = qw / prev_date curr_date prev_read curr_read tdsp
+% meter_multiplier total_usage measured_demand
+% billed_demand svcnum _date meter_number /;
+%my $date_exception = '(prev_date|curr_date|_date)';
+%
+%if ( $cgi->param('error') ) {
+% ### handle error call
+% $svcnum = $cgi->param('svcnum');
+%}
+%else {
+%
+% my($query) = $cgi->keywords;
+% $query =~ /^(\d+)$/ or die "unparsable svcnum";
+% $svcnum=$1;
+%
+%}
+%
+%# this is sample data for print in case no previous record of usage_elec
+%my @sample_data = ( '20070201', '20070228', '10000', '100100', '76.50',
+% '5', '500', '179', '220', "$svcnum", 'NA', '030234972LM');
+%
+%### this is where i start
+%###
+%### let gather all the info from usage_elec for the particular 'svcnum'
+%###
+%my $p1 = popurl(1);
+%
+%print qq!<FONT SIZE="+1" COLOR="#ff0000">Error: !, $cgi->param('error'),
+% "</FONT>"
+% if $cgi->param('error');
+%
+%print qq!<FORM ACTION="${p1}process/usage_elec_manual_input.cgi" METHOD=POST>!;
+%
+%# print header
+%print header("Manually Adding Record to usage_elec Table", '');
+%
+%#display
+%#
+%#
+<TABLE BORDER=1>
+%
+% # -ctran 04/10/08
+% # change getting previous 10 record to 13 so we can see at least 1 year
+% # worth of transaction
+% # get the previous 13 usage_elec items
+% my @usage_obj = FS::usage_elec::query_usage($svcnum, 13);
+%
+% # print the heading
+% print "<TR bgcolor=#88b2ce class='maintitle'>"
+% . join("\n", map("<TH>" . $_ . "</TH>", @field_descriptions))
+% . "</TR>\n";
+%
+% if (@usage_obj) {
+% foreach my $usage (@usage_obj) {
+% # fill @usage_ele with data order by @field_name
+% my @usage_ele = ();
+% foreach my $field (@field_name) {
+% if ( $field =~ /$date_exception/ ) {
+% # exception handling of converting time to string
+% push(@usage_ele,time2str("%Y%m%d",$usage->$field));
+% }
+% else {
+%#debug: field= <% $field %> = <% $usage->$field %><BR>
+% push(@usage_ele, $usage->$field);
+% }
+% }
+%
+% print "<TR bgcolor=#e8e8ea class='mainbody'>"
+% . join("\n", map("<TD>" . $_ . "</TD>", @usage_ele))
+% . "</TR>\n";
+% }
+% }
+%
+% ###
+% ### gathering pre-filled information
+% ###
+%
+% my ($h_prev_date, $h_prev_read, $h_tdsp, $h_meter_multiplier,
+% $h_measured_demand, $h_billed_demand, $h_svcnum, $h_meter_number);
+%
+% if (@usage_obj) {
+% # fill in all the history data
+% my $lindex = $#usage_obj;
+% $h_prev_date = time2str("%Y%m%d",$usage_obj[$lindex]->curr_date);
+% $h_prev_read = $usage_obj[$lindex]->curr_read;
+% $h_tdsp = $usage_obj[$lindex]->tdsp;
+% $h_meter_multiplier = $usage_obj[$lindex]->meter_multiplier;
+% $h_measured_demand = $usage_obj[$lindex]->measured_demand;
+% $h_billed_demand = $usage_obj[$lindex]->billed_demand;
+% $h_svcnum = $usage_obj[$lindex]->svcnum;
+% $h_meter_number = $usage_obj[$lindex]->meter_number;
+% }
+%
+% # this hash store info to configure the table with text box for input
+% # size - [int] how big textbox
+% # value - [alpha numeric] default value of the text box
+% # extra - [alpha numeric] other option for text box. I.E. READONLY
+% # mean the text box is a readonly
+% my %field_info = (
+% prev_date => {
+% 'size' => '8',
+% 'value' => $h_prev_date,
+% },
+% curr_date => { 'size' => '8' },
+% prev_read => {
+% 'size' => '8',
+% 'value' => $h_prev_read,
+% },
+% curr_read => { 'size' => '8' },
+% tdsp => {
+% 'size' => '8',
+% 'value' => $h_tdsp,
+% },
+% meter_multiplier => {
+% 'size' => '4',
+% 'value' => $h_meter_multiplier,
+% },
+% total_usage => { 'size' => '6' },
+% measured_demand => {
+% 'size' => '4',
+% 'value' => $h_measured_demand,
+% },
+% billed_demand => {
+% 'size' => '4',
+% 'value' => $h_billed_demand,
+% },
+% svcnum => {
+% 'size' => '6',
+% 'value' => $svcnum,
+% 'extra' => 'READONLY'
+% },
+% _date => {
+% 'size' => '8',
+% 'value' => 'N/A',
+% 'extra' => 'READONLY'
+% },
+% meter_number => {
+% 'size' => '14',
+% 'value' => $h_meter_number,
+% },
+% );
+%
+%
+% # input box for entry
+% print qq !<TR bgcolor=#e8e8ea class='mainbody'>!;
+% my $input_style = 'STYLE="color:#000000; background-color: #FFFFCC;"';
+% foreach my $field (@field_name) {
+% my $txt = '';
+% $txt .= ' SIZE=' . $field_info{$field}->{'size'}
+% if (exists($field_info{$field}->{'size'}));
+% $txt .= ' VALUE="' . $field_info{$field}->{'value'} . '"'
+% if (exists($field_info{$field}->{'value'}));
+% $txt .= ' ' . $field_info{$field}->{'extra'}
+% if (exists($field_info{$field}->{'extra'}));
+% if ($field eq 'meter_multiplier') {
+% print qq !
+% <TD>
+% <TABLE>
+% <TD>
+% <INPUT TYPE="text" $input_style NAME="$field" $txt>
+% </TD>
+% <TD>
+% <INPUT TYPE="checkbox" NAME="ignore_meter_multiplier">Ignore<P>
+% </TD>
+% </TABLE>
+% </TD>
+% !;
+% }
+% else {
+% print qq !
+% <TD>
+% <INPUT TYPE="text" $input_style NAME="$field" $txt>
+% </TD>
+% !;
+% }
+% }
+% print "</TR>\n";
+%
+
+</TABLE><BR>
+%print "<BR>measured demand = ",$h_measured_demand,"\n<BR>" if ($debug);
+%
+<INPUT TYPE="submit" VALUE="Submit">
+<INPUT TYPE="Reset" VALUE="Clear">
+<INPUT TYPE=BUTTON OnClick="$cgi->redirect(popurl(2)."view/svc_external.cgi?$svcnum")"
+ VALUE="Cancel">
+%
+% print qq !
+% <br><br>
+% prev_date, curr_date -
+% 8 digit in format of yyyymmdd (y-year m-month d-date)<br>
+% prev_read, curr_read - positive interger. Also, curr_read > prev_read
+% Unless meter multiplier ignore value is set. In
+% this case, this condition will be ignore.<br>
+% tdsp - an dollar amount w/wo cent<br>
+% meter_multiplier - positive integer<br>
+% total_usage -
+% should equal (total_usage = (prev_read-curr_read) * meter_multiplier)
+% unless meter multiplier ignore value is set<br>
+% measured_demand - positive integer<br>
+% billed_demand - positive integer<br>
+% !;
+%
+ </FORM>
+ </BODY>
+</HTML>
+