[freeside-commits] freeside/FS/FS Upgrade.pm, 1.1.2.16, 1.1.2.17 cust_pkg_reason.pm, 1.1.2.2, 1.1.2.3
Jeff Finucane,420,,
jeff at wavetail.420.am
Wed Sep 3 12:02:49 PDT 2008
- Previous message: [freeside-commits] freeside/FS/FS Upgrade.pm, 1.19, 1.20 cust_pkg_reason.pm, 1.3, 1.4
- Next message: [freeside-commits] freeside/FS/FS AccessRight.pm, 1.29, 1.30 access_right.pm, 1.2, 1.3 addr_block.pm, 1.8, 1.9 router.pm, 1.4, 1.5
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /home/cvs/cvsroot/freeside/FS/FS
In directory wavetail.420.am:/tmp/cvs-serv5474/FS/FS
Modified Files:
Tag: FREESIDE_1_7_BRANCH
Upgrade.pm cust_pkg_reason.pm
Log Message:
system only reason update routine
Index: Upgrade.pm
===================================================================
RCS file: /home/cvs/cvsroot/freeside/FS/FS/Upgrade.pm,v
retrieving revision 1.1.2.16
retrieving revision 1.1.2.17
diff -u -d -r1.1.2.16 -r1.1.2.17
--- Upgrade.pm 15 Jul 2008 23:25:09 -0000 1.1.2.16
+++ Upgrade.pm 3 Sep 2008 19:02:47 -0000 1.1.2.17
@@ -82,8 +82,9 @@
tie my %hash, 'Tie::IxHash',
#reason type and reasons
- 'reason_type' => [],
- 'reason' => [],
+ 'reason_type' => [],
+ 'reason' => [],
+ 'cust_pkg_reason' => [],
#need part_pkg before cust_credit...
'part_pkg' => [],
Index: cust_pkg_reason.pm
===================================================================
RCS file: /home/cvs/cvsroot/freeside/FS/FS/cust_pkg_reason.pm,v
retrieving revision 1.1.2.2
retrieving revision 1.1.2.3
diff -u -d -r1.1.2.2 -r1.1.2.3
--- cust_pkg_reason.pm 1 Jul 2008 05:01:28 -0000 1.1.2.2
+++ cust_pkg_reason.pm 3 Sep 2008 19:02:47 -0000 1.1.2.3
@@ -130,6 +130,86 @@
$reason ? $reason->reason : '';
}
+# _upgrade_data
+#
+# Used by FS::Upgrade to migrate to a new database.
+
+sub _upgrade_data { # class method
+ my ($class, %opts) = @_;
+
+ my $test_cust_pkg_reason = new FS::cust_pkg_reason;
+ return '' unless $test_cust_pkg_reason->dbdef_table->column('action');
+
+ my $count = 0;
+ my @unmigrated = qsearch('cust_pkg_reason', { 'action' => '' } );
+ foreach ( @unmigrated ) {
+ # we could create h_cust_pkg_reason and h_cust_pkg_reason packages
+ @FS::h_cust_pkg::ISA = qw( FS::h_Common FS::cust_pkg );
+ sub FS::h_cust_pkg::table { 'h_cust_pkg' };
+ @FS::h_cust_pkg_reason::ISA = qw( FS::h_Common FS::cust_pkg_reason );
+ sub FS::h_cust_pkg_reason::table { 'h_cust_pkg_reason' };
+
+ my @history_cust_pkg_reason = qsearch( 'h_cust_pkg_reason', { $_->hash } );
+
+ next unless scalar(@history_cust_pkg_reason) == 1;
+
+ my %action_value = ( op => 'LIKE',
+ value => 'replace_%',
+ );
+ my $hashref = { pkgnum => $_->pkgnum,
+ history_date => $history_cust_pkg_reason[0]->history_date,
+ history_action => { %action_value },
+ };
+
+ my @history = qsearch({ table => 'h_cust_pkg',
+ hashref => $hashref,
+ order_by => 'ORDER BY history_action',
+ });
+
+ if (@history < 2) {
+ $hashref->{history_date}++; # more fuzz?
+ $hashref->{history_action} = { %action_value }; # qsearch distorts this!
+ push @history, qsearch({ table => 'h_cust_pkg',
+ hashref => $hashref,
+ order_by => 'ORDER BY history_action',
+ });
+ }
+
+ next unless scalar(@history) == 2;
+
+ my @new = grep { $_->history_action eq 'replace_new' } @history;
+ my @old = grep { $_->history_action eq 'replace_old' } @history;
+
+ next if (scalar(@new) == 2 || scalar(@old) == 2);
+
+ if ( !$old[0]->get('cancel') && $new[0]->get('cancel') ) {
+ $_->action('C');
+ }elsif( !$old[0]->susp && $new[0]->susp ){
+ $_->action('S');
+ }elsif( $new[0]->expire &&
+ (!$old[0]->expire || !$old[0]->expire != $new[0]->expire )
+ ){
+ $_->action('E');
+ }elsif( $new[0]->adjourn &&
+ (!$old[0]->adjourn || $old[0]->adjourn != $new[0]->adjourn )
+ ){
+ $_->action('A');
+ }
+
+ my $error = $_->replace
+ if $_->modified;
+
+ die $error if $error;
+
+ $count++;
+ }
+
+ #remove nullability if scalar(@migrated) - $count == 0 && ->column('action');
+
+ '';
+
+}
+
=back
=head1 BUGS
- Previous message: [freeside-commits] freeside/FS/FS Upgrade.pm, 1.19, 1.20 cust_pkg_reason.pm, 1.3, 1.4
- Next message: [freeside-commits] freeside/FS/FS AccessRight.pm, 1.29, 1.30 access_right.pm, 1.2, 1.3 addr_block.pm, 1.8, 1.9 router.pm, 1.4, 1.5
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the freeside-commits
mailing list