[freeside-commits] branch master updated. e95a28ea14289ffcfa652bff9b179d3820b56242

Ivan Kohler ivan at freeside.biz
Wed May 16 22:21:02 PDT 2018


The branch, master has been updated
       via  e95a28ea14289ffcfa652bff9b179d3820b56242 (commit)
       via  a8d1e0ab1d47170d29f847bcbb790a58c6eb435d (commit)
       via  483e8f097bff5067a62873e750070993b68163b0 (commit)
      from  827c717245d3374f4dacba7308002ecf64a88304 (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 e95a28ea14289ffcfa652bff9b179d3820b56242
Author: Ivan Kohler <ivan at freeside.biz>
Date:   Wed May 16 22:21:01 2018 -0700

    include batch payment and statement events in reports, RT#80156

diff --git a/FS/FS/cust_event.pm b/FS/FS/cust_event.pm
index 094c4fa8b..2884f1278 100644
--- a/FS/FS/cust_event.pm
+++ b/FS/FS/cust_event.pm
@@ -315,11 +315,16 @@ sub join_sql {
 
   "
        JOIN part_event USING ( eventpart )
+
   LEFT JOIN cust_bill ON ( eventtable = 'cust_bill' AND tablenum = invnum  )
   LEFT JOIN cust_pkg  ON ( eventtable = 'cust_pkg'  AND tablenum = pkgnum  )
   LEFT JOIN cust_pay  ON ( eventtable = 'cust_pay'  AND tablenum = paynum  )
+  LEFT JOIN cust_pay_batch ON ( eventtable = 'cust_pay_batch' AND tablenum = paybatchnum )
+  LEFT JOIN cust_statement ON ( eventtable = 'cust_statement' AND tablenum = cust_statement.statementnum )
+
   LEFT JOIN cust_svc  ON ( eventtable = 'svc_acct'  AND tablenum = svcnum  )
   LEFT JOIN cust_pkg AS cust_pkg_for_svc ON ( cust_svc.pkgnum = cust_pkg_for_svc.pkgnum )
+
   LEFT JOIN cust_main ON (
        ( eventtable = 'cust_main' AND tablenum = cust_main.custnum )
     OR ( eventtable = 'cust_bill' AND cust_bill.custnum = cust_main.custnum )
diff --git a/httemplate/search/cust_event.html b/httemplate/search/cust_event.html
index b1ba9090e..1766c1905 100644
--- a/httemplate/search/cust_event.html
+++ b/httemplate/search/cust_event.html
@@ -134,6 +134,12 @@ my $trigger_link = sub {
     my $pkgnum = $cust_event->tablenum;
     my $frag = "cust_pkg$pkgnum"; #hack for IE ignoring real #fragment
     [ "${p}view/cust_main.cgi?custnum=$custnum$show;fragment=$frag#cust_pkg", 'tablenum' ];
+  } elsif ( $eventtable eq 'cust_pay' ) {
+    [ "${p}view/$eventtable.html?paynum=", 'tablenum' ];
+  } elsif ( $eventtable eq 'cust_statement' ) {
+    [ "${p}view/$eventtable.html?", 'tablenum' ];
+  } elsif ( $eventtable eq 'cust_pay_batch' ) {
+    [ "${p}search/cust_pay_batch.cgi?batchnum=", 'cust_pay_batch_batchnum' ];
   } else {
     [ "${p}view/$eventtable.cgi?", 'tablenum' ];
   }
@@ -199,6 +205,7 @@ my $sql_query = {
                     'part_event.*',
                     #'cust_bill.custnum',
                     #'cust_bill._date AS cust_bill_date',
+                    'cust_pay_batch.batchnum AS cust_pay_batch_batchnum',
                     'cust_main.custnum AS cust_main_custnum',
                     FS::UI::Web::cust_sql_fields(),
                   ),
diff --git a/httemplate/search/report_cust_event.html b/httemplate/search/report_cust_event.html
index 7aa4ff9d7..d020de9fc 100644
--- a/httemplate/search/report_cust_event.html
+++ b/httemplate/search/report_cust_event.html
@@ -44,7 +44,7 @@
         'field'         => 'event_status',
         'multiple'      => 1,
         'all_selected'  => 1,
-        'size'          => 5,
+        'size'          => 6,
         'options'       => [ qw( done_Y done_S done_N failed new locked ) ],
         'option_labels' => { done_Y => 'Completed normally',
                              done_S => 'Completed, with an error',

commit a8d1e0ab1d47170d29f847bcbb790a58c6eb435d
Merge: 483e8f097 827c71724
Author: Ivan Kohler <ivan at freeside.biz>
Date:   Wed May 16 18:00:33 2018 -0700

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


commit 483e8f097bff5067a62873e750070993b68163b0
Author: Ivan Kohler <ivan at freeside.biz>
Date:   Tue May 15 14:53:25 2018 -0700

    more efficient invoice voiding, RT#80366

diff --git a/FS/FS/cust_bill_pkg.pm b/FS/FS/cust_bill_pkg.pm
index a36520b77..f6b40f6b2 100644
--- a/FS/FS/cust_bill_pkg.pm
+++ b/FS/FS/cust_bill_pkg.pm
@@ -365,8 +365,10 @@ sub void {
     return $error;
   }
 
+  #more efficiently than below, because there could be lots
+  $self->void_cust_bill_pkg_detail($reprocess_cdrs);
+
   foreach my $table (qw(
-    cust_bill_pkg_detail
     cust_bill_pkg_display
     cust_bill_pkg_discount
     cust_bill_pkg_tax_location
@@ -374,17 +376,13 @@ sub void {
     cust_tax_exempt_pkg
     cust_bill_pkg_fee
   )) {
-    my %delete_args = ();
-    $delete_args{'reprocess_cdrs'} = $reprocess_cdrs
-      if $table eq 'cust_bill_pkg_detail';
-
     foreach my $linked ( qsearch($table, { billpkgnum=>$self->billpkgnum }) ) {
 
       my $vclass = 'FS::'.$table.'_void';
       my $void = $vclass->new( {
         map { $_ => $linked->get($_) } $linked->fields
       });
-      my $error = $void->insert || $linked->delete(%delete_args);
+      my $error = $void->insert || $linked->delete;
       if ( $error ) {
         $dbh->rollback if $oldAutoCommit;
         return $error;
@@ -406,6 +404,40 @@ sub void {
 
 }
 
+sub void_cust_bill_pkg_detail {
+  my( $self, $reprocess_cdrs ) = @_;
+
+  my $from_cust_bill_pkg_detail =
+    'FROM cust_bill_pkg_detail WHERE billpkgnum = ?';
+  my $where_detailnum =
+    "WHERE detailnum IN ( SELECT detailnum $from_cust_bill_pkg_detail )";
+
+  if ( $reprocess_cdrs ) {
+    #well, technically this could have been on other invoices / termination
+    # partners... separate flag?
+    $self->scalar_sql(
+      "DELETE FROM cdr_termination
+         WHERE acctid IN ( SELECT acctid FROM cdr $where_detailnum )
+      ",
+      $self->billpkgnum
+    );
+  }
+
+  my $setstatus = $reprocess_cdrs ? ', freesidestatus = NULL' : '';
+  $self->scalar_sql(
+    "UPDATE cdr SET detailnum = NULL $setstatus $where_detailnum",
+    $self->billpkgnum
+  );
+
+  $self->scalar_sql("INSERT INTO cust_bill_pkg_detail_void
+                       SELECT * $from_cust_bill_pkg_detail",
+                    $self->billpkgnum
+                   );
+
+  $self->scalar_sql("DELETE $from_cust_bill_pkg_detail", $self->billpkgnum);
+
+}
+
 =item delete
 
 Not recommended.
@@ -716,6 +748,7 @@ Returns the customer (L<FS::cust_main> object) for this line item.
 =cut
 
 sub cust_main {
+  carp "->cust_main called" if $DEBUG;
   # required for cust_main_Mixin equivalence
   # and use cust_bill instead of cust_pkg because this might not have a 
   # cust_pkg

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

Summary of changes:
 FS/FS/cust_bill_pkg.pm                   | 45 +++++++++++++++++++++++++++-----
 FS/FS/cust_event.pm                      |  5 ++++
 httemplate/search/cust_event.html        |  7 +++++
 httemplate/search/report_cust_event.html |  2 +-
 4 files changed, 52 insertions(+), 7 deletions(-)




More information about the freeside-commits mailing list