[freeside-commits] branch master updated. 8baa8e46e67f00f297d7e10dad02c131d286f40e

Ivan ivan at 420.am
Mon Dec 9 14:43:56 PST 2013


The branch, master has been updated
       via  8baa8e46e67f00f297d7e10dad02c131d286f40e (commit)
       via  a3bc8ae55eb80d4517c64eaeb4b08df3ddf867f6 (commit)
       via  49a0b5d01cfa15be787539edfff5ba4875ca3c3e (commit)
      from  701888cb344e68274df2f95494a5c48b0773d908 (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 8baa8e46e67f00f297d7e10dad02c131d286f40e
Merge: a3bc8ae 701888c
Author: Ivan Kohler <ivan at freeside.biz>
Date:   Mon Dec 9 14:43:43 2013 -0800

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


commit a3bc8ae55eb80d4517c64eaeb4b08df3ddf867f6
Author: Ivan Kohler <ivan at freeside.biz>
Date:   Mon Dec 9 14:43:35 2013 -0800

    alarm systems, types, central stations, RT#25994

diff --git a/FS/FS/alarm_station.pm b/FS/FS/alarm_station.pm
new file mode 100644
index 0000000..ee173e5
--- /dev/null
+++ b/FS/FS/alarm_station.pm
@@ -0,0 +1,117 @@
+package FS::alarm_station;
+
+use strict;
+use base qw( FS::Record );
+use FS::Record; # qw( qsearch qsearchs );
+use FS::agent;
+
+=head1 NAME
+
+FS::alarm_station - Object methods for alarm_station records
+
+=head1 SYNOPSIS
+
+  use FS::alarm_station;
+
+  $record = new FS::alarm_station \%hash;
+  $record = new FS::alarm_station { 'column' => 'value' };
+
+  $error = $record->insert;
+
+  $error = $new_record->replace($old_record);
+
+  $error = $record->delete;
+
+  $error = $record->check;
+
+=head1 DESCRIPTION
+
+An FS::alarm_station object represents an alarm system central station.
+FS::alarm_station inherits from FS::Record.  The following fields are currently
+supported:
+
+=over 4
+
+=item alarmstationnum
+
+primary key
+
+=item agentnum
+
+agentnum
+
+=item stationname
+
+stationname
+
+=item disabled
+
+disabled
+
+
+=back
+
+=head1 METHODS
+
+=over 4
+
+=item new HASHREF
+
+Creates a new central station.  To add the central station 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 { 'alarm_station'; }
+
+=item insert
+
+Adds this record to the database.  If there is an error, returns the error,
+otherwise returns false.
+
+=item delete
+
+Delete this record from the database.
+
+=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.
+
+=item check
+
+Checks all fields to make sure this is a valid central station.  If there is
+an error, returns the error, otherwise returns false.  Called by the insert
+and replace methods.
+
+=cut
+
+sub check {
+  my $self = shift;
+
+  my $error = 
+    $self->ut_numbern('alarmstationnum')
+    || $self->ut_foreign_keyn('agentnum', 'agent', 'agentnum')
+    || $self->ut_text('stationname')
+    || $self->ut_enum('disabled', ['', 'Y'])
+  ;
+  return $error if $error;
+
+  $self->SUPER::check;
+}
+
+=back
+
+=head1 BUGS
+
+=head1 SEE ALSO
+
+L<FS::svc_alarm>, L<FS::Record>
+
+=cut
+
+1;
+
diff --git a/FS/FS/alarm_system.pm b/FS/FS/alarm_system.pm
new file mode 100644
index 0000000..8320384
--- /dev/null
+++ b/FS/FS/alarm_system.pm
@@ -0,0 +1,117 @@
+package FS::alarm_system;
+
+use strict;
+use base qw( FS::Record );
+use FS::Record; # qw( qsearch qsearchs );
+use FS::agent;
+
+=head1 NAME
+
+FS::alarm_system - Object methods for alarm_system records
+
+=head1 SYNOPSIS
+
+  use FS::alarm_system;
+
+  $record = new FS::alarm_system \%hash;
+  $record = new FS::alarm_system { 'column' => 'value' };
+
+  $error = $record->insert;
+
+  $error = $new_record->replace($old_record);
+
+  $error = $record->delete;
+
+  $error = $record->check;
+
+=head1 DESCRIPTION
+
+An FS::alarm_system object represents an alarm system vendor.  FS::alarm_system
+inherits from FS::Record.  The following fields are currently supported:
+
+=over 4
+
+=item alarmsystemnum
+
+primary key
+
+=item agentnum
+
+agentnum
+
+=item systemname
+
+systemname
+
+=item disabled
+
+disabled
+
+
+=back
+
+=head1 METHODS
+
+=over 4
+
+=item new HASHREF
+
+Creates a new vendor.  To add the vendor 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
+
+# the new method can be inherited from FS::Record, if a table method is defined
+
+sub table { 'alarm_system'; }
+
+=item insert
+
+Adds this record to the database.  If there is an error, returns the error,
+otherwise returns false.
+
+=item delete
+
+Delete this record from the database.
+
+=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.
+
+=item check
+
+Checks all fields to make sure this is a valid vendor.  If there is
+an error, returns the error, otherwise returns false.  Called by the insert
+and replace methods.
+
+=cut
+
+sub check {
+  my $self = shift;
+
+  my $error = 
+    $self->ut_numbern('alarmsystemnum')
+    || $self->ut_foreign_keyn('agentnum', 'agent', 'agentnum')
+    || $self->ut_text('systemname')
+    || $self->ut_enum('disabled', ['', 'Y'])
+  ;
+  return $error if $error;
+
+  $self->SUPER::check;
+}
+
+=back
+
+=head1 BUGS
+
+=head1 SEE ALSO
+
+L<FS::svc_alarm>, L<FS::Record>
+
+=cut
+
+1;
+
diff --git a/FS/FS/alarm_type.pm b/FS/FS/alarm_type.pm
new file mode 100644
index 0000000..f225bec
--- /dev/null
+++ b/FS/FS/alarm_type.pm
@@ -0,0 +1,131 @@
+package FS::alarm_type;
+
+use strict;
+use base qw( FS::Record );
+use FS::Record; # qw( qsearch qsearchs );
+use FS::agent;
+
+=head1 NAME
+
+FS::alarm_type - Object methods for alarm_type records
+
+=head1 SYNOPSIS
+
+  use FS::alarm_type;
+
+  $record = new FS::alarm_type \%hash;
+  $record = new FS::alarm_type { 'column' => 'value' };
+
+  $error = $record->insert;
+
+  $error = $new_record->replace($old_record);
+
+  $error = $record->delete;
+
+  $error = $record->check;
+
+=head1 DESCRIPTION
+
+An FS::alarm_type object represents an alarm system type (number of inputs and
+outputs).  FS::alarm_type inherits from FS::Record.  The following fields are
+currently supported:
+
+=over 4
+
+=item alarmtypenum
+
+primary key
+
+=item agentnum
+
+agentnum
+
+=item inputs
+
+inputs
+
+=item outputs
+
+outputs
+
+=item disabled
+
+disabled
+
+=back
+
+=head1 METHODS
+
+=over 4
+
+=item new HASHREF
+
+Creates a new type.  To add the type 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 { 'alarm_type'; }
+
+=item insert
+
+Adds this record to the database.  If there is an error, returns the error,
+otherwise returns false.
+
+=item delete
+
+Delete this record from the database.
+
+=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.
+
+=item check
+
+Checks all fields to make sure this is a valid type.  If there is
+an error, returns the error, otherwise returns false.  Called by the insert
+and replace methods.
+
+=cut
+
+sub check {
+  my $self = shift;
+
+  my $error = 
+    $self->ut_numbern('alarmtypenum')
+    || $self->ut_foreign_keyn('agentnum', 'agent', 'agentnum')
+    || $self->ut_number('inputs')
+    || $self->ut_number('outputs')
+    || $self->ut_enum('disabled', ['', 'Y'])
+  ;
+  return $error if $error;
+
+  $self->SUPER::check;
+}
+
+=item typename
+
+inputs x outputs
+
+=cut
+
+sub typename {
+  my $self = shift;
+  $self->inputs. 'x'. $self->outputs;
+}
+
+=back
+
+=head1 BUGS
+
+=head1 SEE ALSO
+
+L<FS::svc_alarm>, L<FS::Record>
+
+=cut
+
+1;
+
diff --git a/FS/t/alarm_station.t b/FS/t/alarm_station.t
new file mode 100644
index 0000000..9fc36f8
--- /dev/null
+++ b/FS/t/alarm_station.t
@@ -0,0 +1,5 @@
+BEGIN { $| = 1; print "1..1\n" }
+END {print "not ok 1\n" unless $loaded;}
+use FS::alarm_station;
+$loaded=1;
+print "ok 1\n";
diff --git a/FS/t/alarm_system.t b/FS/t/alarm_system.t
new file mode 100644
index 0000000..f835c4a
--- /dev/null
+++ b/FS/t/alarm_system.t
@@ -0,0 +1,5 @@
+BEGIN { $| = 1; print "1..1\n" }
+END {print "not ok 1\n" unless $loaded;}
+use FS::alarm_system;
+$loaded=1;
+print "ok 1\n";
diff --git a/FS/t/alarm_type.t b/FS/t/alarm_type.t
new file mode 100644
index 0000000..2bbdf63
--- /dev/null
+++ b/FS/t/alarm_type.t
@@ -0,0 +1,5 @@
+BEGIN { $| = 1; print "1..1\n" }
+END {print "not ok 1\n" unless $loaded;}
+use FS::alarm_type;
+$loaded=1;
+print "ok 1\n";
diff --git a/httemplate/browse/alarm_station.html b/httemplate/browse/alarm_station.html
new file mode 100644
index 0000000..8fa2846
--- /dev/null
+++ b/httemplate/browse/alarm_station.html
@@ -0,0 +1,37 @@
+<& elements/browse.html,
+     'title'              => 'Alarm central stations',
+     'html_init'          => $html_init,
+     'name_singlar'       => 'central station',
+     'disableable'        => 1,
+     'disabled_statuspos' => 1,
+     'agent_virt'         => 1,
+     'agent_null_right'   => 'Alarm global configuration',
+     'agent_pos'          => 1,
+     'query'              => { 'table'     => 'alarm_station',
+                               'hashref'   => {},
+                               'order_by' => 'ORDER BY stationname',
+                             },
+     'count_query'        => $count_query,
+     'header'             => $header,
+     'fields'             => $fields,
+     'links'              => $links,
+&>
+<%init>
+
+die "access denied"
+  unless $FS::CurrentUser::CurrentUser->access_right('Alarm configuration')
+      || $FS::CurrentUser::CurrentUser->access_right('Alarm global configuration');
+
+
+my $html_init =
+  qq!<A HREF="${p}edit/alarm_station.html"><I>Add an alarm central station</I></A><BR><BR>!;
+
+my $count_query = 'SELECT COUNT(*) FROM alarm_station';
+
+my $link = [ $p.'edit/alarm_station.html?', 'alarmstationnum' ];
+
+my $header = [ 'Central station' ];
+my $fields = [ 'stationname' ];
+my $links  = [ $link ];
+
+</%init>
diff --git a/httemplate/browse/alarm_system.html b/httemplate/browse/alarm_system.html
new file mode 100644
index 0000000..9cd104d
--- /dev/null
+++ b/httemplate/browse/alarm_system.html
@@ -0,0 +1,36 @@
+<& elements/browse.html,
+     'title'              => 'Alarm system vendors',
+     'html_init'          => $html_init,
+     'name_singular'      => 'vendor',
+     'disableable'        => 1,
+     'disabled_statuspos' => 1,
+     'agent_virt'         => 1,
+     'agent_null_right'   => 'Alarm global configuration',
+     'agent_pos'          => 1,
+     'query'              => { 'table'     => 'alarm_system',
+                               'hashref'   => {},
+                               'order_by' => 'ORDER BY systemname',
+                             },
+     'count_query'        => $count_query,
+     'header'             => $header,
+     'fields'             => $fields,
+     'links'              => $links,
+&>
+<%init>
+
+die "access denied"
+  unless $FS::CurrentUser::CurrentUser->access_right('Alarm configuration')
+      || $FS::CurrentUser::CurrentUser->access_right('Alarm global configuration');
+
+my $html_init =
+  qq!<A HREF="${p}edit/alarm_system.html"><I>Add an alarm system vendor</I></A><BR><BR>!;
+
+my $count_query = 'SELECT COUNT(*) FROM alarm_system';
+
+my $link = [ $p.'edit/alarm_system.html?', 'alarmsystemnum' ];
+
+my $header = [ 'Vendor' ];
+my $fields = [ 'systemname' ];
+my $links  = [ $link ];
+
+</%init>
diff --git a/httemplate/browse/alarm_type.html b/httemplate/browse/alarm_type.html
new file mode 100644
index 0000000..35def96
--- /dev/null
+++ b/httemplate/browse/alarm_type.html
@@ -0,0 +1,36 @@
+<& elements/browse.html,
+     'title'              => 'Alarm system types',
+     'html_init'          => $html_init,
+     'name_singular'      => 'type',
+     'disableable'        => 1,
+     'disabled_statuspos' => 1,
+     'agent_virt'         => 1,
+     'agent_null_right'   => 'Alarm global configuration',
+     'agent_pos'          => 1,
+     'query'              => { 'table'     => 'alarm_type',
+                               'hashref'   => {},
+                               'order_by' => 'ORDER BY inputs, outputs',
+                             },
+     'count_query'        => $count_query,
+     'header'             => $header,
+     'fields'             => $fields,
+     'links'              => $links,
+&>
+<%init>
+
+die "access denied"
+  unless $FS::CurrentUser::CurrentUser->access_right('Alarm configuration')
+      || $FS::CurrentUser::CurrentUser->access_right('Alarm global configuration');
+
+my $html_init =
+  qq!<A HREF="${p}edit/alarm_type.html"><I>Add an alarm system type</I></A><BR><BR>!;
+
+my $count_query = 'SELECT COUNT(*) FROM alarm_type';
+
+my $link = [ $p.'edit/alarm_type.html?', 'alarmtypenum' ];
+
+my $header = [ 'Type' ];
+my $fields = [ 'typename' ];
+my $links  = [ $link ];
+
+</%init>
diff --git a/httemplate/edit/alarm_station.html b/httemplate/edit/alarm_station.html
new file mode 100644
index 0000000..0d088df
--- /dev/null
+++ b/httemplate/edit/alarm_station.html
@@ -0,0 +1,23 @@
+<& elements/edit.html,
+     'table'            => 'alarm_station',
+     'name_singular'    => 'central station',
+     'agent_virt'       => 1,
+     'agent_null_right' => 'Alarm global configuration',
+     'fields'           => [
+       { field=>'stationname',  type=>'text',     size=>20 },
+       { field=>'disabled',     type=>'checkbox', value=>'Y' },
+     ],
+     'labels'           => { 'alarmstationnum' => 'Central Station',
+                             'agentnum'        => 'Agent',
+                             'stationname'     => 'Central Station',
+                             'disabled'        => 'Disabled',
+                           },
+     'viewall_dir'      => 'browse',
+&>
+<%init>
+
+die "access denied"
+  unless $FS::CurrentUser::CurrentUser->access_right('Alarm configuration')
+      || $FS::CurrentUser::CurrentUser->access_right('Alarm global configuration');
+
+</%init>
diff --git a/httemplate/edit/alarm_system.html b/httemplate/edit/alarm_system.html
new file mode 100644
index 0000000..c9e0076
--- /dev/null
+++ b/httemplate/edit/alarm_system.html
@@ -0,0 +1,23 @@
+<& elements/edit.html,
+     'table'            => 'alarm_system',
+     'name_singular'    => 'vendor',
+     'agent_virt'       => 1,
+     'agent_null_right' => 'Alarm global configuration',
+     'fields'           => [
+       { field=>'systemname',   type=>'text',     size=>20 },
+       { field=>'disabled',     type=>'checkbox', value=>'Y' },
+     ],
+     'labels'        => { 'alarmsystemnum' => 'Vendor',
+                          'agentnum'       => 'Agent',
+                          'systemname'     => 'Vendor',
+                          'disabled'       => 'Disabled',
+                        },
+     'viewall_dir' => 'browse',
+&>
+<%init>
+
+die "access denied"
+  unless $FS::CurrentUser::CurrentUser->access_right('Alarm configuration')
+      || $FS::CurrentUser::CurrentUser->access_right('Alarm global configuration');
+
+</%init>
diff --git a/httemplate/edit/alarm_type.html b/httemplate/edit/alarm_type.html
new file mode 100644
index 0000000..1ef02f4
--- /dev/null
+++ b/httemplate/edit/alarm_type.html
@@ -0,0 +1,25 @@
+<& elements/edit.html,
+     'table'            => 'alarm_type',
+     'name_singular'    => 'type',
+     'agent_virt'       => 1,
+     'agent_null_right' => 'Alarm global configuration',
+     'fields'           => [
+                             { field=>'inputs',   type=>'text',     size=>2 },
+                             { field=>'outputs',  type=>'text',     size=>2 },
+                             { field=>'disabled', type=>'checkbox', value=>'Y'},
+                           ],
+     'labels'           => { 'alarmtypenum' => 'Type',
+                             'agentnum'     => 'Agent',
+                             'inputs'       => 'Inputs',
+                             'outputs'      => 'Outputs',
+                             'disabled'     => 'Disabled',
+                           },
+     'viewall_dir'      => 'browse',
+&>
+<%init>
+
+die "access denied"
+  unless $FS::CurrentUser::CurrentUser->access_right('Alarm configuration')
+      || $FS::CurrentUser::CurrentUser->access_right('Alarm global configuration');
+
+</%init>
diff --git a/httemplate/edit/process/alarm_station.html b/httemplate/edit/process/alarm_station.html
new file mode 100644
index 0000000..17ea074
--- /dev/null
+++ b/httemplate/edit/process/alarm_station.html
@@ -0,0 +1,11 @@
+<& elements/process.html,
+     'table'       => 'alarm_station',
+     'viewall_dir' => 'browse',
+&>
+<%init>
+
+die "access denied"
+  unless $FS::CurrentUser::CurrentUser->access_right('Alarm configuration')
+      || $FS::CurrentUser::CurrentUser->access_right('Alarm global configuration');
+
+</%init>
diff --git a/httemplate/edit/process/alarm_system.html b/httemplate/edit/process/alarm_system.html
new file mode 100644
index 0000000..5fc6630
--- /dev/null
+++ b/httemplate/edit/process/alarm_system.html
@@ -0,0 +1,11 @@
+<& elements/process.html,
+     'table'       => 'alarm_system',
+     'viewall_dir' => 'browse',
+&>
+<%init>
+
+die "access denied"
+  unless $FS::CurrentUser::CurrentUser->access_right('Alarm configuration')
+      || $FS::CurrentUser::CurrentUser->access_right('Alarm global configuration');
+
+</%init>
diff --git a/httemplate/edit/process/alarm_type.html b/httemplate/edit/process/alarm_type.html
new file mode 100644
index 0000000..ede0051
--- /dev/null
+++ b/httemplate/edit/process/alarm_type.html
@@ -0,0 +1,11 @@
+<& elements/process.html,
+     'table'       => 'alarm_type',
+     'viewall_dir' => 'browse',
+&>
+<%init>
+
+die "access denied"
+  unless $FS::CurrentUser::CurrentUser->access_right('Alarm configuration')
+      || $FS::CurrentUser::CurrentUser->access_right('Alarm global configuration');
+
+</%init>
diff --git a/httemplate/elements/select-alarm_station.html b/httemplate/elements/select-alarm_station.html
new file mode 100644
index 0000000..04d1383
--- /dev/null
+++ b/httemplate/elements/select-alarm_station.html
@@ -0,0 +1,7 @@
+<% include( '/elements/select-table.html',
+    'table'       => 'alarm_station',
+    'name_col'    => 'stationname',
+    'empty_label' => 'Select central station',
+    @_,
+   )
+%>
diff --git a/httemplate/elements/select-alarm_system.html b/httemplate/elements/select-alarm_system.html
new file mode 100644
index 0000000..7f22fce
--- /dev/null
+++ b/httemplate/elements/select-alarm_system.html
@@ -0,0 +1,7 @@
+<% include( '/elements/select-table.html',
+    'table'       => 'alarm_system',
+    'name_col'    => 'systemname',
+    'empty_label' => 'Select vendor',
+    @_,
+   )
+%>
diff --git a/httemplate/elements/select-alarm_type.html b/httemplate/elements/select-alarm_type.html
new file mode 100644
index 0000000..5f15988
--- /dev/null
+++ b/httemplate/elements/select-alarm_type.html
@@ -0,0 +1,8 @@
+<% include( '/elements/select-table.html',
+    'table'       => 'alarm_type',
+    'name_col'    => 'typename',
+    'order_by'    => 'ORDER BY inputs, outputs',
+    'empty_label' => 'Select type',
+    @_,
+   )
+%>
diff --git a/httemplate/elements/tr-select-alarm_station.html b/httemplate/elements/tr-select-alarm_station.html
new file mode 100644
index 0000000..71ed0db
--- /dev/null
+++ b/httemplate/elements/tr-select-alarm_station.html
@@ -0,0 +1,12 @@
+% #if ( scalar(@domains) < 2 ) {
+% #} else {
+  <TR>
+    <TD ALIGN="right"><% $opt{'label'} || 'Central Station' %></TD>
+    <TD>
+      <% include( '/elements/select-alarm_station.html', %opt) %>
+    </TD>
+   </TR>
+% #}
+<%init>
+  my %opt = @_;
+</%init>
diff --git a/httemplate/elements/tr-select-alarm_system.html b/httemplate/elements/tr-select-alarm_system.html
new file mode 100644
index 0000000..a46a015
--- /dev/null
+++ b/httemplate/elements/tr-select-alarm_system.html
@@ -0,0 +1,12 @@
+% #if ( scalar(@domains) < 2 ) {
+% #} else {
+  <TR>
+    <TD ALIGN="right"><% $opt{'label'} || 'Vendor' %></TD>
+    <TD>
+      <% include( '/elements/select-alarm_system.html', %opt) %>
+    </TD>
+   </TR>
+% #}
+<%init>
+  my %opt = @_;
+</%init>
diff --git a/httemplate/elements/tr-select-alarm_type.html b/httemplate/elements/tr-select-alarm_type.html
new file mode 100644
index 0000000..b929fb8
--- /dev/null
+++ b/httemplate/elements/tr-select-alarm_type.html
@@ -0,0 +1,12 @@
+% #if ( scalar(@domains) < 2 ) {
+% #} else {
+  <TR>
+    <TD ALIGN="right"><% $opt{'label'} || 'Type' %></TD>
+    <TD>
+      <% include( '/elements/select-alarm_type.html', %opt) %>
+    </TD>
+   </TR>
+% #}
+<%init>
+  my %opt = @_;
+</%init>

commit 49a0b5d01cfa15be787539edfff5ba4875ca3c3e
Author: Ivan Kohler <ivan at freeside.biz>
Date:   Mon Dec 9 12:24:58 2013 -0800

     fix 4.x upgrades of address-less customers, RT#24968

diff --git a/FS/FS/cust_main/Location.pm b/FS/FS/cust_main/Location.pm
index 4bcffab..4f382af 100644
--- a/FS/FS/cust_main/Location.pm
+++ b/FS/FS/cust_main/Location.pm
@@ -158,7 +158,11 @@ sub _upgrade_data {
     }
   }
 
-  foreach my $cust_main (qsearch('cust_main', { bill_locationnum => '' })) {
+  foreach my $cust_main (qsearch('cust_main', {
+                           bill_locationnum => '',
+                           address1         => { op=>'!=', value=>'' },
+                        }))
+  {
     # Step 1: extract billing and service addresses into cust_location
     my $custnum = $cust_main->custnum;
     my $bill_location = FS::cust_location->new(

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

Summary of changes:
 FS/FS/alarm_station.pm                           |  117 +++++++++++++++++++
 FS/FS/alarm_system.pm                            |  117 +++++++++++++++++++
 FS/FS/alarm_type.pm                              |  131 ++++++++++++++++++++++
 FS/FS/cust_main/Location.pm                      |    6 +-
 FS/t/alarm_station.t                             |    5 +
 FS/t/alarm_system.t                              |    5 +
 FS/t/alarm_type.t                                |    5 +
 httemplate/browse/alarm_station.html             |   37 ++++++
 httemplate/browse/alarm_system.html              |   36 ++++++
 httemplate/browse/alarm_type.html                |   36 ++++++
 httemplate/edit/alarm_station.html               |   23 ++++
 httemplate/edit/alarm_system.html                |   23 ++++
 httemplate/edit/alarm_type.html                  |   25 ++++
 httemplate/edit/process/alarm_station.html       |   11 ++
 httemplate/edit/process/alarm_system.html        |   11 ++
 httemplate/edit/process/alarm_type.html          |   11 ++
 httemplate/elements/select-alarm_station.html    |    7 +
 httemplate/elements/select-alarm_system.html     |    7 +
 httemplate/elements/select-alarm_type.html       |    8 ++
 httemplate/elements/tr-select-alarm_station.html |   12 ++
 httemplate/elements/tr-select-alarm_system.html  |   12 ++
 httemplate/elements/tr-select-alarm_type.html    |   12 ++
 22 files changed, 656 insertions(+), 1 deletions(-)
 create mode 100644 FS/FS/alarm_station.pm
 create mode 100644 FS/FS/alarm_system.pm
 create mode 100644 FS/FS/alarm_type.pm
 create mode 100644 FS/t/alarm_station.t
 create mode 100644 FS/t/alarm_system.t
 create mode 100644 FS/t/alarm_type.t
 create mode 100644 httemplate/browse/alarm_station.html
 create mode 100644 httemplate/browse/alarm_system.html
 create mode 100644 httemplate/browse/alarm_type.html
 create mode 100644 httemplate/edit/alarm_station.html
 create mode 100644 httemplate/edit/alarm_system.html
 create mode 100644 httemplate/edit/alarm_type.html
 create mode 100644 httemplate/edit/process/alarm_station.html
 create mode 100644 httemplate/edit/process/alarm_system.html
 create mode 100644 httemplate/edit/process/alarm_type.html
 create mode 100644 httemplate/elements/select-alarm_station.html
 create mode 100644 httemplate/elements/select-alarm_system.html
 create mode 100644 httemplate/elements/select-alarm_type.html
 create mode 100644 httemplate/elements/tr-select-alarm_station.html
 create mode 100644 httemplate/elements/tr-select-alarm_system.html
 create mode 100644 httemplate/elements/tr-select-alarm_type.html




More information about the freeside-commits mailing list