summaryrefslogtreecommitdiff
path: root/httemplate/search/report_prepaid_income.cgi
blob: 1677591a3d74aa137a8b223c0c44a62051553974 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
<!-- mason kludge -->
<%

  #doesn't yet deal with daily/weekly packages

  #needs to be re-written in sql for efficiency

  my $time = time;

  my $now = $cgi->param('date') && str2time($cgi->param('date')) || $time;
  $now =~ /^(\d+)$/ or die "unparsable date?";
  $now = $1;

  my( $total, $total_legacy ) = ( 0, 0 );

  my @cust_bill_pkg =
    grep { $_->cust_pkg && $_->cust_pkg->part_pkg->freq !~ /^([01]|\d+[dw])$/ }
      qsearch( 'cust_bill_pkg', {
                                  'recur' => { op=>'!=', value=>0 },
                                  'edate' => { op=>'>', value=>$now },
                                }, );

  my @cust_pkg = 
    grep { $_->part_pkg->recur != 0
           && $_->part_pkg->freq !~ /^([01]|\d+[dw])$/
         }
      qsearch ( 'cust_pkg', {
                              'bill' => { op=>'>', value=>$now }
                            } );

  foreach my $cust_bill_pkg ( @cust_bill_pkg) { 
    my $period = $cust_bill_pkg->edate - $cust_bill_pkg->sdate;

    my $elapsed = $now - $cust_bill_pkg->sdate;
    $elapsed = 0 if $elapsed < 0;

    my $remaining = 1 - $elapsed/$period;

    my $unearned = $remaining * $cust_bill_pkg->recur;
    $total += $unearned;

  }

  foreach my $cust_pkg ( @cust_pkg ) {
    my $period = $cust_pkg->bill - $cust_pkg->last_bill;

    my $elapsed = $now - $cust_pkg->last_bill;
    $elapsed = 0 if $elapsed < 0;

    my $remaining = 1 - $elapsed/$period;

    my $unearned = $remaining * $cust_pkg->part_pkg->recur; #!! only works for flat/legacy
    $total_legacy += $unearned;

  }

  $total = sprintf('%.2f', $total);
  $total_legacy = sprintf('%.2f', $total_legacy);

%>

<%= header( 'Prepaid Income (Unearned Revenue) Report',
            menubar( 'Main Menu'=>$p, ) )               %>
<%= table() %>
  <TR>
    <TH>Actual Unearned Revenue</TH>
    <TH>Legacy Unearned Revenue</TH>
  </TR>
  <TR>
    <TD ALIGN="right">$<%= $total %>
    <TD ALIGN="right">
      <%= $now == $time ? "\$$total_legacy" : '<i>N/A</i>'%>
    </TD>
  </TR>

</TABLE>
<BR>
Actual unearned revenue is the amount of unearned revenue Freeside has  
actually invoiced for packages with longer-than monthly terms.
<BR><BR>
Legacy unearned revenue is the amount of unearned revenue represented by 
customer packages.  This number may be larger than actual unearned 
revenue if you have imported longer-than monthly customer packages from
a previous billing system.
</BODY>
</HTML>