[freeside-commits] branch master updated. fcb230261cbd138c1869f6db4a443ac7ae2a98a1

Ivan ivan at 420.am
Thu Dec 4 14:48:00 PST 2014


The branch, master has been updated
       via  fcb230261cbd138c1869f6db4a443ac7ae2a98a1 (commit)
       via  7dd8215a91ca6ca4a9988a0108647ada7f2a11d8 (commit)
      from  478c4c0029aca4a9b39ba908c04c8669cde3a6a4 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit fcb230261cbd138c1869f6db4a443ac7ae2a98a1
Merge: 7dd8215 478c4c0
Author: Ivan Kohler <ivan at freeside.biz>
Date:   Thu Dec 4 14:47:54 2014 -0800

    Merge branch 'master' of git.freeside.biz:/home/git/freeside


commit 7dd8215a91ca6ca4a9988a0108647ada7f2a11d8
Author: Ivan Kohler <ivan at freeside.biz>
Date:   Thu Dec 4 14:47:49 2014 -0800

    backdate credits, RT#32320

diff --git a/FS/FS/AccessRight.pm b/FS/FS/AccessRight.pm
index 92cede6..4a1f89a 100644
--- a/FS/FS/AccessRight.pm
+++ b/FS/FS/AccessRight.pm
@@ -217,6 +217,7 @@ tie my %rights, 'Tie::IxHash',
   ###
   'Customer credit and refund rights' => [
     'Post credit',
+    { rightname=>'Backdate credit', desc=>'Enable credits to be posted for days other than today.' },
     'Credit line items', #NEWNEWNEW
     'Apply credit', #NEWNEW
     { rightname=>'Unapply credit', desc=>'Enable "unapplication" of unclosed credits.' }, #aka unapplycredits
@@ -444,6 +445,7 @@ sub default_superuser_rights {
     'Credit card void',
     'Echeck void',
     'Void invoices',#people are overusing this when credits are more appropriate
+    'Backdate credit',
   );
 
   no warnings 'uninitialized';
diff --git a/FS/FS/access_right.pm b/FS/FS/access_right.pm
index ee0c494..e5a5781 100644
--- a/FS/FS/access_right.pm
+++ b/FS/FS/access_right.pm
@@ -249,6 +249,7 @@ sub _upgrade_data { # class method
     'Edit package definition costs' => 'View package definition costs',
     'List prospects' => 'List contacts',
     'List customers' => 'List contacts',
+    'Backdate payment' => 'Backdate credit',
   );
 
 #  foreach my $old_acl ( keys %onetime ) {
diff --git a/httemplate/edit/cust_credit.cgi b/httemplate/edit/cust_credit.cgi
index 29801ef..18416c5 100755
--- a/httemplate/edit/cust_credit.cgi
+++ b/httemplate/edit/cust_credit.cgi
@@ -6,15 +6,25 @@
 <INPUT TYPE="hidden" NAME="crednum" VALUE="">
 <INPUT TYPE="hidden" NAME="custnum" VALUE="<% $custnum |h %>">
 <INPUT TYPE="hidden" NAME="paybatch" VALUE="">
-<INPUT TYPE="hidden" NAME="_date" VALUE="<% $_date %>">
 <INPUT TYPE="hidden" NAME="credited" VALUE="">
 
 <% ntable("#cccccc", 2) %>
 
-  <TR>
-    <TD ALIGN="right"><% mt('Date') |h %></TD>
-    <TD BGCOLOR="#ffffff"><% time2str($date_format, $_date) %></TD>
-  </TR>
+% my %date_args = (
+%   'name'   =>  '_date',
+%   'label'  => emt('Date'),
+%   'value'  => $_date,
+%   'format' => $date_format. ' %r',
+% );
+% if ( $FS::CurrentUser::CurrentUser->access_right('Backdate credit') ) {
+
+  <& /elements/tr-input-date-field.html, \%date_args &>
+
+% } else {
+
+  <& /elements/tr-fixed-date.html, \%date_args &>
+
+% }
 
   <TR>
     <TD ALIGN="right"><% mt('Amount') |h %></TD>
diff --git a/httemplate/edit/cust_pay.cgi b/httemplate/edit/cust_pay.cgi
index ec7391b..888335f 100755
--- a/httemplate/edit/cust_pay.cgi
+++ b/httemplate/edit/cust_pay.cgi
@@ -23,37 +23,26 @@
 <% mt('Payment') |h %> 
 <% ntable("#cccccc", 2) %>
 
+% my %date_args = (
+%   'name'    =>  '_date',
+%   'label'   => emt('Date'),
+%   'value'   => $_date,
+%   'format'  => $date_format. ' %r',
+%   'colspan' => 2,
+% );
 % if ( $FS::CurrentUser::CurrentUser->access_right('Backdate payment') ) {
-<TR>
-  <TD ALIGN="right"><% mt('Date') |h %></TD>
-  <TD COLSPAN=2>
-    <INPUT TYPE="text" NAME="_date" ID="_date_text" VALUE="<% time2str($date_format.' %r',$_date) %>">
-    <IMG SRC="../images/calendar.png" ID="_date_button" STYLE="cursor: pointer" TITLE="<% mt('Select date') |h %>">
-  </TD>
-</TR>
 
-<SCRIPT TYPE="text/javascript">
-  Calendar.setup({
-    inputField: "_date_text",
-    ifFormat:   "<% $date_format %>",
-    button:     "_date_button",
-    align:      "BR"
-  });
-</SCRIPT>
-% }
-% else {
-<TR>
-  <TD ALIGN="right"><% mt('Date') |h %></TD>
-  <TD COLSPAN=2>
-    <% time2str($date_format.' %r',$_date) %>
-  </TD>
-</TR>
+  <& /elements/tr-input-date-field.html, \%date_args &>
+
+% } else {
+
+  <& /elements/tr-fixed-date.html, \%date_args &>
+
 % }
 
 <TR>
   <TD ALIGN="right"><% mt('Amount') |h %></TD>
-  <TD BGCOLOR="#ffffff" ALIGN="right"><% $money_char %></TD>
-  <TD><INPUT TYPE="text" NAME="paid" ID="paid" VALUE="<% $paid %>" SIZE=8 MAXLENGTH=9> <% mt('by') |h %> <B><% mt(FS::payby->payname($payby)) |h %></B></TD>
+  <TD BGCOLOR="#ffffff"><% $money_char |h %><INPUT TYPE="text" NAME="paid" ID="paid" VALUE="<% $paid %>" SIZE=8 MAXLENGTH=9> <% mt('by') |h %> <B><% mt(FS::payby->payname($payby)) |h %></B></TD>
 </TR>
 
 % if ( $conf->exists('part_pkg-term_discounts') ) {
diff --git a/httemplate/edit/process/cust_credit.cgi b/httemplate/edit/process/cust_credit.cgi
index e442d7f..39c6f19 100755
--- a/httemplate/edit/process/cust_credit.cgi
+++ b/httemplate/edit/process/cust_credit.cgi
@@ -42,11 +42,20 @@ if (!$reasonnum) {
 }
 $cgi->param('reasonnum', $reasonnum) unless $error;
 
+my $_date;
+if ( $FS::CurrentUser::CurrentUser->access_right('Backdate credit') ) {
+  $_date = parse_datetime($cgi->param('_date'));
+}
+else {
+  $_date = time;
+}
+
+my @fields = grep { $_ ne '_date' } fields('cust_credit');
+
 unless ($error) {
   my $new = new FS::cust_credit ( {
-    map {
-      $_, scalar($cgi->param($_));
-    } fields('cust_credit')
+    _date  => $_date,
+    map { $_ => scalar($cgi->param($_)) } @fields
   } );
   $error = $new->insert;
 }
diff --git a/httemplate/elements/tr-fixed-date.html b/httemplate/elements/tr-fixed-date.html
index 716e5ce..ef59979 100644
--- a/httemplate/elements/tr-fixed-date.html
+++ b/httemplate/elements/tr-fixed-date.html
@@ -1,12 +1,18 @@
 <% include('tr-fixed.html', %opt ) %>
 <%init>
 
-my %opt = @_;
+my %opt;
+if ( ref($_[0]) ) {
+  my $hashref = shift;
+  %opt = %$hashref;
+} else {
+  %opt = @_;
+}
 
 my $value = $opt{'curr_value'} || $opt{'value'};
 
 my $conf = new FS::Conf;
-my $date_format = $conf->config('date_format') || '%m/%d/%Y';
+my $date_format = $opt{'format'} || $conf->config('date_format') || '%m/%d/%Y';
 
 $opt{'formatted_value'} = time2str($date_format, $value);
 

-----------------------------------------------------------------------

Summary of changes:
 FS/FS/AccessRight.pm                    |    2 ++
 FS/FS/access_right.pm                   |    1 +
 httemplate/edit/cust_credit.cgi         |   20 ++++++++++++----
 httemplate/edit/cust_pay.cgi            |   39 +++++++++++--------------------
 httemplate/edit/process/cust_credit.cgi |   15 +++++++++---
 httemplate/elements/tr-fixed-date.html  |   10 ++++++--
 6 files changed, 52 insertions(+), 35 deletions(-)




More information about the freeside-commits mailing list