Merge branch 'master' of git.freeside.biz:/home/git/freeside
[freeside.git] / httemplate / view / cust_main / packages / package.html
index 1c8db15..8aa6403 100644 (file)
@@ -1,7 +1,6 @@
-<TD CLASS="inv package" BGCOLOR="<% $bgcolor %>" VALIGN="top" <%$style%>>
+<TD CLASS="inv package" BGCOLOR="<% $bgcolor %>" VALIGN="top">
+  <% join('', @marker ) %>
   <TABLE CLASS="inv package"> 
-
-
     <TR>
       <TD COLSPAN=2>
         <% $opt{before_pkg_callback}
@@ -10,9 +9,36 @@
         %>
         <A NAME="cust_pkg<% $cust_pkg->pkgnum %>"
            ID  ="cust_pkg<% $cust_pkg->pkgnum %>"
-        ><% $curuser->option('show_pkgnum') ? $cust_pkg->pkgnum.': ' : '' %><B><% $part_pkg->pkg |h %></B></A>
-        - 
-        <% $part_pkg->custom_comment |h %>
+        ><% $opt{show_pkgnum} ? $cust_pkg->pkgnum.': ' : '' %><B><% $part_pkg->pkg |h %></B></A>
+%
+%       my $custom_comment;
+%       if ( 0 && FS::part_pkg::flat->can('price_info') eq $part_pkg->can('price_info') ) {
+%         #perf hack / disabled in 4.x (feature pricing / cust_pkg_usageprice incompatible, well, harder)
+%
+%         $part_pkg->{"_$_"} = $part_pkg->option($_) || 0
+%           foreach grep !defined($part_pkg->{"_$_"} ), qw(setup_fee recur_fee);
+%           
+%         my $str = '';
+%         $str = $opt{money_char} . $part_pkg->{_setup_fee}.
+%                ($part_pkg->{_recur_fee} ? ' setup' : ' one-time')
+%           if $part_pkg->{_setup_fee};
+%         $str .= ', ' if $part_pkg->{_setup_fee} && $part_pkg->{_recur_fee};
+%         $str .= $opt{money_char}. $part_pkg->{_recur_fee}.
+%                 '/'. $part_pkg->freq_pretty
+%           if $part_pkg->{_recur_fee};
+%         $str;
+%
+%         $custom_comment = 
+%           ( $part_pkg->custom ? '(CUSTOM) ' : '' ).
+%           $part_pkg->comment.
+%           ( ($part_pkg->custom || $part_pkg->comment) ? ' - ' : '' ).
+%           ($str || 'No charge');
+%
+%       } else {
+%         $custom_comment = $part_pkg->custom_comment('cust_pkg'=>$cust_pkg);
+%       }
+        <% $custom_comment ? ' - ' : '' %>
+        <% $custom_comment |h %>
       </TD>
     </TR>
 
       <TD COLSPAN=2>
         <FONT SIZE=-1>
 
-%         unless ( $cust_pkg->get('cancel') || $opt{no_links} ) {
+%         if ( $part_pkg->freq eq '0' and !$opt{no_links} ) {
+%           # One-time charge.  Nothing you can do with this, unless:
+%           if ( $curuser->access_right('Modify one-time charge') ) {
+                (&nbsp;<%onetime_change_link($cust_pkg)%>&nbsp;)
+%           }
+%           # also, you can discount it
+%           if ( $curuser->access_right('Discount customer package')
+%                && ! scalar($cust_pkg->cust_pkg_discount_active)
+%                && ! scalar($cust_pkg->part_pkg->part_pkg_discount)
+%              ) {
+              (&nbsp;<%pkg_discount_link($cust_pkg)%>&nbsp;)
+%           }
+          <BR>
+%
+%         } elsif ( !$cust_pkg->get('cancel') and !$opt{no_links} ) {
 %
 %           if ( $change_from ) {
 %             # This is the target package for a future change.
 %             # Nothing you can do with it besides modify/cancel the 
 %             # future change, and that's on the current package.
-%           } elsif ( $supplemental or $part_pkg->freq eq '0' ) {
+%           } elsif ( $supplemental ) {
 %             # Supplemental packages can't be changed independently.
-%             # One-time charges don't need to be changed.
-%             # For both of those, we only show "Add comments",
-%             # and "Add invoice details".
+%             # Show only "Add comments" and "Add invoice details".
 %           } else {
 %             # the usual case: links to change package definition,
 %             # discount, and customization
 %
 %             if ( $curuser->access_right('Discount customer package')
 %                  && $part_pkg->can_discount
-%                  && ! scalar($cust_pkg->cust_pkg_discount_active)
-%                  && ! scalar($cust_pkg->part_pkg->part_pkg_discount)
+%                  && ! scalar( @{ $cust_pkg->{_cust_pkg_discount_active} } )
+%                  && (    ! $opt{'term_discounts'}
+%                       || ! scalar($cust_pkg->part_pkg->part_pkg_discount)
+%                     )
 %                )
 %             {
 %               $br=1;
               <% $br ? '<BR>' : '' %>
 %           } 
 
-%           if ( $cust_pkg->num_cust_event
-%                && (    $curuser->access_right('Billing event reports')
+%           if (    (    $curuser->access_right('Billing event reports')
 %                     || $curuser->access_right('View customer billing events')
 %                   )
+%                && $cust_pkg->exists_cust_event
 %              ) {
               (&nbsp;<%pkg_event_link($cust_pkg)%>&nbsp;)
 %           }
-%         } #!$supplemental
+%         } # a canceled recurring package, or else no_links is in effect
 
         </FONT>
       </TD>
 %     $trstyle = ' CLASS="shared"' if $part->shared;
     <TR<%$trstyle%>>
       <TD ALIGN="right"><% $part->description %>: </TD>
-      <TD <%$color%> ALIGN="right"><% $usage->minutes %></TD>
+      <TD <%$color%> ALIGN="right"><% sprintf('%.1f', $usage->minutes) %></TD>
       <TD <%$color%>> / </TD>
       <TD <%$color%>><% $part->minutes %></TD>
 %     if ( $part->shared ) {
   </TABLE>
 % }
 
+  <% join('', map '</DIV>', @marker ) %>
 </TD>
 
 <%init>
@@ -276,16 +317,12 @@ my $statedefault   = $opt{'statedefault'}
 # if this package is somehow special
 my $supplemental = $opt{'supplemental'} || 0;
 my $change_from = $opt{'change_from'} || 0;
-my $style = '';
-if ( $supplemental or $change_from ) {
-  $style = 'border-left-width: '.($supplemental + $change_from)*30 . 'px; '.
-           'border-color: ';
-  if ( $supplemental ) {
-    $style .= '#bbbbff';
-  } elsif ( $change_from ) {
-    $style .= '#bbffbb';
-  }
-  $style = qq!STYLE="$style"!;
+my @marker;
+if ( $supplemental ) {
+  push @marker, '<DIV CLASS="package-marker-supplemental">';
+}
+if ( $change_from ) {
+  push @marker, '<DIV CLASS="package-marker-change_from">';
 }
 
 $cust_pkg->pkgnum =~ /^(\d+)$/;
@@ -316,7 +353,20 @@ sub pkg_change_link {
     'actionlabel' => emt('Change'),
     'cust_pkg'    => $cust_pkg,
     'width'       => 960,
-    'height'      => 490,
+    'height'      => 538,
+  );
+}
+
+sub onetime_change_link {
+  my $cust_pkg = shift;
+  my $pkgnum = $cust_pkg->pkgnum;
+  include( '/elements/popup_link-cust_pkg.html',
+    'action'      => $p. "edit/quick-charge.html?change_pkgnum=$pkgnum",
+    'label'       => emt('Modify one-time charge'),
+    'actionlabel' => emt('Modify'),
+    'cust_pkg'    => $cust_pkg,
+    'width'       => 690,
+    'height'      => 440,
   );
 }