RT#38533: One click re-send refund,payment receipt, invoice [v3 merge]
authorJonathan Prykop <jonathan@freeside.biz>
Sat, 24 Oct 2015 01:46:01 +0000 (20:46 -0500)
committerJonathan Prykop <jonathan@freeside.biz>
Thu, 29 Oct 2015 04:22:23 +0000 (23:22 -0500)
httemplate/elements/popup_link_onclick.html
httemplate/misc/send-invoice.cgi
httemplate/view/cust_main.cgi
httemplate/view/cust_main/payment_history.html
httemplate/view/cust_main/payment_history/invoice.html
httemplate/view/cust_main/payment_history/payment.html
httemplate/view/cust_main/payment_history/refund.html

index 09ce93e..783e7a2 100644 (file)
@@ -9,12 +9,13 @@ Example:
     #required
     'action'         => 'content.html', # uri for content of popup
 
-    #alternately, use instead of action
-    'js_action'      => 'url',          # javascript variable or expression
-   
     #strongly recommended
     'actionlabel     => 'You clicked',  # popup title
    
+    #alternately, use instead of action, values will be passed unquoted to overlib
+    'js_action'      => 'url',          # javascript variable or expression
+    'js_actionlabel' => 'actionlabel',  # javascript variable or expression   
+
     #opt
     'width'          => 540,
     'height'         => 336,
@@ -50,9 +51,10 @@ if (ref($_[0]) eq 'HASH') {
   $params = { @_ };
 }
 
-$action      = q(') . $params->{'action'} . q(') if exists $params->{'action'};
+$action      = q(') . $params->{'action'} . q(');
 $action      = $params->{'js_action'}   if exists $params->{'js_action'};
-$actionlabel = $params->{'actionlabel'} if exists $params->{'actionlabel'};
+$actionlabel = q(') . $params->{'actionlabel'} . q(');
+$actionlabel = $params->{'js_actionlabel'} if exists $params->{'js_actionlabel'};
 $width       = $params->{'width'}       if exists $params->{'width'};
 $height      = $params->{'height'}      if exists $params->{'height'};
 $color       = $params->{'color'}       if exists $params->{'color'};
@@ -66,7 +68,7 @@ my $popup_name = 'popup-'.random_id();
 
 my $onclick =
   "overlib( OLiframeContent($action, $width, $height, '$popup_name', 0, '$scrolling' ), ".
-    "CAPTION, '$actionlabel', STICKY, AUTOSTATUSCAP, MIDX, 0, MIDY, 0, ".
+    "CAPTION, $actionlabel, STICKY, AUTOSTATUSCAP, MIDX, 0, MIDY, 0, ".
     "DRAGGABLE, CLOSECLICK, ".
     "BGCOLOR, '$color', CGCOLOR, '$color', CLOSETEXT, '$closetext'".
     ( $frame ? ", FRAME, $frame" : '' ).
index dd9c3ad..4358753 100644 (file)
@@ -1,4 +1,12 @@
-% if ( $error ) {
+% if ($cgi->param('popup')) {
+%   my $title = $error ? 'Error sending invoice email' : 'Invoice email sent';
+<% include('/elements/header-popup.html', $title ) %>
+<DIV STYLE="text-align: center;">
+<SPAN STYLE="color: red; font-weight: bold;"><% $error %></SPAN><BR>
+<BUTTON TYPE="button" onClick="parent.cClick();">Close</BUTTON>
+</DIV>
+<% include('/elements/footer.html') %>
+% } elsif ( $error ) {
 %   errorpage($error);
 % } else {
 <% $cgi->redirect("${p}view/cust_main.cgi?$custnum") %>
index cd8b028..287658f 100755 (executable)
@@ -38,6 +38,14 @@ function areyousure(href, message) {
   if (confirm(message) == true)
     window.location.href = href;
 }
+function areyousure_popup(message, action, actionlabel) {
+  if (confirm(message) == true) {
+<% include('/elements/popup_link_onclick.html',
+     'js_action' => 'action',
+     'js_actionlabel' => 'actionlabel',
+   ) %>
+  }
+}
 </SCRIPT>
 
 
index 1cd8386..5418fb8 100644 (file)
@@ -430,7 +430,7 @@ my %opt = (
   #rights
   ( map { $_ => $curuser->access_right($_) }
       (
-        'View invoices', 'Void invoices', 'Unvoid invoices', 'Delete invoices',
+        'View invoices', 'Void invoices', 'Unvoid invoices', 'Delete invoices', 'Resend invoices',
         'Apply payment', 'Refund credit card payment', 'Refund Echeck payment',
         'Post refund', 'Post check refund', 'Post cash refund ', 'Refund payment',
         'Credit card void', 'Echeck void', 'Void payments', 'Unvoid payments',
@@ -444,6 +444,7 @@ my %opt = (
   #customer information
   'total_owed'              => $cust_main->total_owed,
   'total_unapplied_refunds' => $cust_main->total_unapplied_refunds,
+  'has_email_address'       => scalar($cust_main->invoicing_list_emailonly),
 );
 
 $opt{'date_format'} ||= '%m/%d/%Y';
index acb1d69..925b8b4 100644 (file)
@@ -1,4 +1,4 @@
-<% $link %><% $invoice %><% $link ? '</A>' : '' %><% "$void$delete$under" %>
+<% $link %><% $invoice %><% $link ? '</A>' : '' %><% "$email$void$delete$under" %>
 <%init>
 
 my( $cust_bill, %opt ) = @_;
@@ -42,6 +42,15 @@ $delete = areyousure_link("${p}misc/delete-cust_bill.html?$invnum",
                         )
     if ( $opt{'deleteinvoices'} && $opt{'Delete invoices'} );
 
+my $email = ($opt{'has_email_address'} && $opt{'Resend invoices'}) ? 
+  q! (<A HREF="javascript:void(0)" ONCLICK="areyousure_popup('Send email receipt for invoice #!.
+  $cust_bill->invnum.
+  q! to customer?','!.
+  "${p}misc/send-invoice.cgi?method=email;notice_name=Invoice;popup=1;invnum=".
+  $cust_bill->invnum.
+  q!','Email Invoice Receipt')" TITLE="Send email receipt">email&nbsp;receipt</A>)!
+  : '';
+
 my $events = '';
 if ( $cust_bill->num_cust_event
      && ($opt{'Billing event reports'} || $opt{'View customer billing events'})
index 0ed2f80..6520017 100644 (file)
@@ -1,5 +1,5 @@
 <% $payment. ' '.  $info. $desc.
-   $view. $change_pkg. $apply. $refund. $void. $delete. $unapply
+   $view. $email. $change_pkg. $apply. $refund. $void. $delete. $unapply
 %>
 <%init>
 
@@ -139,6 +139,13 @@ my $view =
                ).
    ')';
 
+my $email = $opt{'has_email_address'} ? 
+  q! (<A HREF="javascript:void(0)" ONCLICK="areyousure_popup('Send email receipt for payment to customer?','!.
+  "${p}view/cust_pay.html?link=email;paynum=".
+  $cust_pay->paynum.
+  q!','Email Payment Receipt')" TITLE="Send email receipt">email&nbsp;receipt</A>)!
+  : '';
+
 my $change_pkg = '';
 if ( $apply && $opt{'pkg-balances'} && $cust_pay->pkgnum ) {
   $change_pkg =
index fc2a5cc..e82df90 100644 (file)
@@ -1,6 +1,6 @@
 <% $refund %> 
 (<% "$payby$payinfo" %>)
-<% "$view$delete" %>
+<% "$view$email$delete" %>
 <%init>
 
 my( $cust_refund, %opt ) = @_;
@@ -26,6 +26,13 @@ my $view =
                ).
    ')';
 
+my $email = $opt{'has_email_address'} ? 
+  q! (<A HREF="javascript:void(0)" ONCLICK="areyousure_popup('Send email receipt for refund to customer?','!.
+  "${p}view/cust_refund.html?link=email;refundnum=".
+  $cust_refund->refundnum.
+  q!','Email Refund Receipt')" TITLE="Send email receipt">email&nbsp;receipt</A>)!
+  : '';
+
 my $delete = '';
 $delete = areyousure_link("${p}misc/delete-cust_refund.cgi?".$cust_refund->refundnum,
                            emt('Are you sure you want to delete this refund?'),