[freeside-commits] branch master updated. aad287228dfbe5ef01be73ebaaa9a06dfbe11226

Ivan Kohler ivan at freeside.biz
Thu Nov 29 09:53:33 PST 2018


The branch, master has been updated
       via  aad287228dfbe5ef01be73ebaaa9a06dfbe11226 (commit)
      from  697a8343f7ef80f69c1b974515550afc6b794010 (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 aad287228dfbe5ef01be73ebaaa9a06dfbe11226
Author: Ivan Kohler <ivan at freeside.biz>
Date:   Thu Nov 29 09:53:30 2018 -0800

    svc_group, RT#81628

diff --git a/FS/FS/Mason.pm b/FS/FS/Mason.pm
index 7f883dec1..5b8242b77 100644
--- a/FS/FS/Mason.pm
+++ b/FS/FS/Mason.pm
@@ -423,6 +423,7 @@ if ( -e $addl_handler_use_file ) {
   use FS::svc_realestate;
   use FS::saved_search;
   use FS::sector_coverage;
+  use FS::svc_group;
   # Sammath Naur
 
   if ( $FS::Mason::addl_handler_use ) {
diff --git a/FS/FS/Schema.pm b/FS/FS/Schema.pm
index 169d22ac8..7cc84a9f0 100644
--- a/FS/FS/Schema.pm
+++ b/FS/FS/Schema.pm
@@ -7666,11 +7666,11 @@ sub tables_hashref {
       ],
     },
 
-    realestate_location => {
+    'realestate_location' => {
       'columns' => [
         'realestatelocnum', 'serial',  '',     '',      '', '',
         'agentnum',         'int',     'NULL', '',      '', '',
-       'location_title',   'varchar', '',     $char_d, '', '',
+        'location_title',   'varchar', '',     $char_d, '', '',
         'address1',         'varchar', 'NULL', $char_d, '',  '',
         'address2',         'varchar', 'NULL', $char_d, '',  '',
         'city',             'varchar', 'NULL', $char_d, '',  '',
@@ -7678,23 +7678,39 @@ sub tables_hashref {
         'zip',              'char',    'NULL', 5,       '',  '',
         'disabled',         'char',    'NULL', 1,       '',  '',
       ],
-      primary_key  => 'realestatelocnum',
-      'unique'     => [ ['location_title'] ],
-      'index'      => [ ['agentnum'], ['disabled'] ],
+      'primary_key'  => 'realestatelocnum',
+      'unique'       => [ ['location_title'] ],
+      'index'        => [ ['agentnum'], ['disabled'] ],
       'foreign_keys' => [
         {columns => ['agentnum'], table => 'agent'},
       ],
     },
 
-    svc_realestate => {
-      columns => [
+    'svc_realestate' => {
+      'columns' => [
         'svcnum',        'serial',  '',     '',      '', '',
         'realestatenum', 'int',     'NULL', '',      '', '',
       ],
-      primary_key => 'svcnum',
-      index => [],
+      'primary_key' => 'svcnum',
+      'index'       => [],
+    },
+
+    'svc_group' => {
+      'columns' => [
+        'svcnum',          'int', '', '', '', '', 
+        'max_accounts',    'int', '', '', '', '',
+      ],
+      'primary_key'  => 'svcnum',
+      'unique'       => [],
+      'index'        => [],
+      'foreign_keys' => [
+                          { columns    => [ 'svcnum' ],
+                            table      => 'cust_svc',
+                          },
+                        ],
     },
 
+
     # name type nullability length default local
 
     #'new_table' => {
diff --git a/FS/FS/h_svc_group.pm b/FS/FS/h_svc_group.pm
new file mode 100644
index 000000000..7da4a8a9a
--- /dev/null
+++ b/FS/FS/h_svc_group.pm
@@ -0,0 +1,29 @@
+package FS::h_svc_group;
+
+use strict;
+use base qw( FS::h_Common FS::svc_group );
+
+sub table { 'h_svc_group' };
+
+=head1 NAME
+
+FS::h_svc_group - Historical installed group service objects
+
+=head1 SYNOPSIS
+
+=head1 DESCRIPTION
+
+An FS::h_svc_group object represents a historical group service.
+FS::h_svc_group inherits from FS::h_Common and FS::svc_group.
+
+=head1 BUGS
+
+=head1 SEE ALSO
+
+L<FS::h_Common>, L<FS::svc_group>, L<FS::Record>, schema.html from the base
+documentation.
+
+=cut
+
+1;
+
diff --git a/FS/FS/svc_group.pm b/FS/FS/svc_group.pm
new file mode 100644
index 000000000..8d7789310
--- /dev/null
+++ b/FS/FS/svc_group.pm
@@ -0,0 +1,203 @@
+package FS::svc_group;
+use base qw( FS::svc_Common );
+
+use strict;
+#use FS::Record qw( qsearch qsearchs );
+#use FS::cust_svc;
+
+=head1 NAME
+
+FS::svc_group - Object methods for svc_group records
+
+=head1 SYNOPSIS
+
+  use FS::svc_group;
+
+  $record = new FS::svc_group \%hash;
+  $record = new FS::svc_group { 'column' => 'value' };
+
+  $error = $record->insert;
+
+  $error = $new_record->replace($old_record);
+
+  $error = $record->delete;
+
+  $error = $record->check;
+
+  $error = $record->suspend;
+
+  $error = $record->unsuspend;
+
+  $error = $record->cancel;
+
+=head1 DESCRIPTION
+
+An FS::svc_group object represents a group.  FS::svc_group inherits from
+FS::svc_Common.  The following fields are currently supported:
+
+=over 4
+
+=item max_accounts - Maximum number of group members
+
+=back
+
+=head1 METHODS
+
+=over 4
+
+=item new HASHREF
+
+Creates a new group.  To add the group to the database, see L<"insert">.
+
+Note that this stores the hash reference, not a distinct copy of the hash it
+points to.  You can ask the object for a copy with the I<hash> method.
+
+=cut
+
+sub table { 'svc_group'; }
+
+sub table_info {
+  {
+    'name' => 'Group',
+    'name_plural' => 'Groups', #optional,
+    'longname_plural' => 'Groups', #optional
+    'sorts' => 'svcnum', # optional sort field (or arrayref of sort fields, main first)
+    'display_weight' => 100,
+    'cancel_weight'  => 100,
+    'fields' => {
+      'svcnum'       => { label => 'Service' },
+      'max_accounts' => { 
+                           'label'     => 'Maximum number of accounts',
+			   'type'      => 'text',
+			   'disable_inventory' => 1,
+			 },
+
+    },
+  };
+}
+
+=item search_sql STRING
+
+Class method which returns an SQL fragment to search for the given string.
+
+=cut
+
+#if we only have a quantity, then there's nothing to search on except svcnum
+sub search_sql {
+  my($class, $string) = @_;
+  $class->search_sql_field('svcnum', $string);
+}
+
+
+=item label
+
+Returns a meaningful identifier for this group
+
+=cut
+
+sub label {
+  my $self = shift;
+  $self->svcnum; #i guess?
+}
+
+=item insert
+
+Adds this record to the database.  If there is an error, returns the error,
+otherwise returns false.
+
+The additional fields pkgnum and svcpart (see L<FS::cust_svc>) should be 
+defined.  An FS::cust_svc record will be created and inserted.
+
+=cut
+
+#sub insert {
+#  my $self = shift;
+#  my $error;
+#
+#  $error = $self->SUPER::insert;
+#  return $error if $error;
+#
+#  '';
+#}
+
+=item delete
+
+Delete this record from the database.
+
+=cut
+
+#sub delete {
+#  my $self = shift;
+#  my $error;
+#
+#  $error = $self->SUPER::delete;
+#  return $error if $error;
+#
+#  '';
+#}
+
+
+=item replace OLD_RECORD
+
+Replaces the OLD_RECORD with this one in the database.  If there is an error,
+returns the error, otherwise returns false.
+
+=cut
+
+#sub replace {
+#  my ( $new, $old ) = ( shift, shift );
+#  my $error;
+#
+#  $error = $new->SUPER::replace($old);
+#  return $error if $error;
+#
+#  '';
+#}
+
+=item suspend
+
+Called by the suspend method of FS::cust_pkg (see L<FS::cust_pkg>).
+
+=item unsuspend
+
+Called by the unsuspend method of FS::cust_pkg (see L<FS::cust_pkg>).
+
+=item cancel
+
+Called by the cancel method of FS::cust_pkg (see L<FS::cust_pkg>).
+
+=item check
+
+Checks all fields to make sure this is a valid group.  If there is
+an error, returns the error, otherwise returns false.  Called by the insert
+and repalce methods.
+
+=cut
+
+sub check {
+  my $self = shift;
+
+  my $x = $self->setfixed;
+  return $x unless ref($x);
+  my $part_svc = $x;
+
+  my $error =  $self->ut_numbern('svcnum')
+            || $self->ut_number('max_accounts');
+  return $error if $error;
+
+  $self->SUPER::check;
+}
+
+=back
+
+=head1 BUGS
+
+=head1 SEE ALSO
+
+L<FS::svc_Common>, L<FS::Record>, L<FS::cust_svc>, L<FS::part_svc>,
+L<FS::cust_pkg>, schema.html from the base documentation.
+
+=cut
+
+1;
+
diff --git a/FS/MANIFEST b/FS/MANIFEST
index 81087dea7..17100cdf9 100644
--- a/FS/MANIFEST
+++ b/FS/MANIFEST
@@ -877,3 +877,5 @@ FS/access_user_session_log.pm
 t/access_user_session_log.t
 FS/access_user_session_log.pm
 t/access_user_session_log.t
+FS/svc_group.pm
+FS/h_svc_group.pm
diff --git a/httemplate/docs/part_svc-table.html b/httemplate/docs/part_svc-table.html
index 56a4d0e8c..b1cd0b1cc 100644
--- a/httemplate/docs/part_svc-table.html
+++ b/httemplate/docs/part_svc-table.html
@@ -5,6 +5,7 @@
     <TH ALIGN="left">Generic</TH>
     <TH ALIGN="left">Access</TH>
     <TH ALIGN="left">Telephony</TH>
+    <TH ALIGN="left">Video</TH>
 <!--    <TH>Hosting</TH>
     <TH>Colocation</TH>
 -->
@@ -15,23 +16,31 @@
         <LI><B>svc_acct</B>: Accounts - anything with a username (mailbox, shell, RADIUS, etc.)
         <LI><B>svc_hardware</B>: Equipment supplied to customers
         <LI><B>svc_external</B>: Externally-tracked service
+        <LI><B>svc_group</B>: Generic group service
       </UL>
     </TD>
     <TD VALIGN="top">
       <UL STYLE="margin:0">
         <LI><B>svc_dsl</B>: DSL
-        <LI><B>svc_broadband</B>: Wireless broadband
+        <LI><B>svc_broadband</B>: Fixed wireless broadband
         <LI><B>svc_cable</B>: Cable
-        <LI><B>svc_dish</B>: DISH Network
+        <LI><B>svc_fiber</B>: Fiber-to-the-premise service
       </UL>
     </TD>
     <TD VALIGN="top">
       <UL STYLE="margin:0">
         <LI><B>svc_phone</B>: Customer phone number
         <LI><B>svc_pbx</B>: Customer PBX
+        <LI><B>svc_conferencing</B>: Conferencing service
         <LI><B>svc_circuit</B>: Phone circuits other than DSL
       </UL>
     </TD>
+    <TD VALIGN="top">
+      <UL STYLE="margin:0">
+        <LI><B>svc_video</B>: IPTV or video-on-demand service
+        <LI><B>svc_dish</B>: DISH Network
+      </UL>
+    </TD>
   </TR>
 </TABLE>
 <BR>
@@ -39,6 +48,7 @@
   <TR>
     <TH ALIGN="left">Hosting</TH>
     <TH ALIGN="left">Colocation</TH>
+    <TH ALIGN="left">Alarm</TH>
     <TH ALIGN="left">Real Estate</TH>
   </TR>
     <TD VALIGN="top">
@@ -57,14 +67,16 @@
     </TD>
     <TD VALIGN="top">
       <UL STYLE="margin:0">
+        <LI><B>svc_alarm</B>: Alarm service
+      </UL>
+    </TD>
+    <TD VALIGN="top">
+      <UL STYLE="margin:0">
         <LI><B>svc_realestate</B>: Real estate properties
       </UL>
     </TD>
   </TR>
 <TABLE>
-<!--   <LI>svc_charge - One-time charges (Partially unimplemented)
-       <LI>svc_wo - Work orders (Partially unimplemented)
--->
 
 </BODY>
 </HTML>
diff --git a/httemplate/edit/part_svc.cgi b/httemplate/edit/part_svc.cgi
index 49c1c03d8..b80118f89 100755
--- a/httemplate/edit/part_svc.cgi
+++ b/httemplate/edit/part_svc.cgi
@@ -251,11 +251,11 @@ my $help = '';
 unless ( $hashref->{svcpart} ) {
   $help = ' '.
           include('/elements/popup_link.html',
-                    'action' => $p.'docs/part_svc-table.html',
-                    'label'  => 'help',
+                    'action'      => $p.'docs/part_svc-table.html',
+                    'label'       => 'help',
                     'actionlabel' => 'Service table help',
-                    'width'       => 763,
-                    #'height'      => 400,
+                    'width'       => 960,
+                    'height'      => 400,
                   );
 }
 

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

Summary of changes:
 FS/FS/Mason.pm                                 |   1 +
 FS/FS/Schema.pm                                |  34 +++++--
 FS/FS/h_svc_group.pm                           |  29 ++++++
 eg/table_template-svc.pm => FS/FS/svc_group.pm | 118 +++++++++++--------------
 FS/MANIFEST                                    |   2 +
 httemplate/docs/part_svc-table.html            |  22 +++--
 httemplate/edit/part_svc.cgi                   |   8 +-
 7 files changed, 132 insertions(+), 82 deletions(-)
 create mode 100644 FS/FS/h_svc_group.pm
 copy eg/table_template-svc.pm => FS/FS/svc_group.pm (54%)




More information about the freeside-commits mailing list