diff options
author | levinse <levinse> | 2011-02-13 07:22:32 +0000 |
---|---|---|
committer | levinse <levinse> | 2011-02-13 07:22:32 +0000 |
commit | e356f2ebb6564fe8d5333fc89bb4583ee3cd1fb1 (patch) | |
tree | ac286e1979c4aeecf41ea411fbba20b3aec555e9 /FS/FS | |
parent | 5226903b423e42e7e8ee135b2b445d362241102a (diff) |
bulk DID orders and inventory, RT11291
Diffstat (limited to 'FS/FS')
-rw-r--r-- | FS/FS/Mason.pm | 3 | ||||
-rw-r--r-- | FS/FS/Record.pm | 6 | ||||
-rw-r--r-- | FS/FS/Schema.pm | 41 | ||||
-rw-r--r-- | FS/FS/did_order.pm | 166 | ||||
-rw-r--r-- | FS/FS/did_vendor.pm | 121 | ||||
-rw-r--r-- | FS/FS/lata.pm | 121 | ||||
-rw-r--r-- | FS/FS/phone_avail.pm | 20 |
7 files changed, 473 insertions, 5 deletions
diff --git a/FS/FS/Mason.pm b/FS/FS/Mason.pm index f628313f6..2a04ae55b 100644 --- a/FS/FS/Mason.pm +++ b/FS/FS/Mason.pm @@ -266,6 +266,9 @@ if ( -e $addl_handler_use_file ) { use FS::part_pkg_vendor; use FS::cust_note_class; use FS::svc_port; + use FS::lata; + use FS::did_vendor; + use FS::did_order; # Sammath Naur if ( $FS::Mason::addl_handler_use ) { diff --git a/FS/FS/Record.pm b/FS/FS/Record.pm index e23699cce..fb83faa3f 100644 --- a/FS/FS/Record.pm +++ b/FS/FS/Record.pm @@ -1593,6 +1593,7 @@ sub process_batch_import { params => { map { $_ => $param->{$_} } @pass_params }, #? default_csv => $opt->{default_csv}, + postinsert_callback => $opt->{postinsert_callback}, ); if ( $opt->{'batch_namecol'} ) { @@ -1666,6 +1667,8 @@ sub batch_import { my( $type, $header, $sep_char, $fixedlength_format, $xml_format, $row_callback, @fields ); my $postinsert_callback = ''; + $postinsert_callback = $param->{'postinsert_callback'} + if $param->{'postinsert_callback'}; if ( $param->{'format'} ) { my $format = $param->{'format'}; @@ -1711,9 +1714,6 @@ sub batch_import { $row_callback = ''; @fields = @{ $param->{'fields'} }; - $postinsert_callback = $param->{'postinsert_callback'} - if $param->{'postinsert_callback'} - } else { die "neither format nor fields specified"; } diff --git a/FS/FS/Schema.pm b/FS/FS/Schema.pm index 040f6df21..327c96c4a 100644 --- a/FS/FS/Schema.pm +++ b/FS/FS/Schema.pm @@ -3030,6 +3030,8 @@ sub tables_hashref { 'nxx', 'char', 'NULL', 3, '', '', 'station', 'char', 'NULL', 4, '', '', 'name', 'varchar', 'NULL', $char_d, '', '', + 'rate_center_abbrev', 'varchar', 'NULL', $char_d, '', '', + 'ordernum', 'int', 'NULL', '', '', '', 'svcnum', 'int', 'NULL', '', '', '', 'availbatch', 'varchar', 'NULL', $char_d, '', '', ], @@ -3043,6 +3045,45 @@ sub tables_hashref { [ 'availbatch' ], ], }, + + 'lata' => { + 'columns' => [ + 'latanum', 'int', '', '', '', '', + 'description', 'varchar', '', $char_d, '', '', + ], + 'primary_key' => 'latanum', + 'unique' => [], + 'index' => [], + }, + + 'did_vendor' => { + 'columns' => [ + 'vendornum', 'serial', '', '', '', '', + 'vendorname', 'varchar', '', $char_d, '', '', + ], + 'primary_key' => 'vendornum', + 'unique' => [], + 'index' => [], + }, + + 'did_order' => { + 'columns' => [ + 'ordernum', 'serial', '', '', '', '', + 'vendornum', 'int', '', '', '', '', + 'vendor_order_id', 'varchar', '', $char_d, '', '', + 'msa', 'varchar', 'NULL', $char_d, '', '', + 'latanum', 'int', 'NULL', '', '', '', + 'rate_center', 'varchar', 'NULL', $char_d, '', '', + 'state', 'char', 'NULL', 2, '', '', + 'quantity', 'int', '', '', '', '', + 'submitted', 'int', '', '', '', '', + 'confirmed', 'int', 'NULL', '', '', '', + 'received', 'int', 'NULL', '', '', '', + ], + 'primary_key' => 'ordernum', + 'unique' => [ [ 'vendornum', 'vendor_order_id' ] ], + 'index' => [], + }, 'reason_type' => { 'columns' => [ diff --git a/FS/FS/did_order.pm b/FS/FS/did_order.pm new file mode 100644 index 000000000..6b199a969 --- /dev/null +++ b/FS/FS/did_order.pm @@ -0,0 +1,166 @@ +package FS::did_order; + +use strict; +use base qw( FS::Record ); +use FS::Record qw( qsearch qsearchs ); + +=head1 NAME + +FS::did_order - Object methods for did_order records + +=head1 SYNOPSIS + + use FS::did_order; + + $record = new FS::did_order \%hash; + $record = new FS::did_order { 'column' => 'value' }; + + $error = $record->insert; + + $error = $new_record->replace($old_record); + + $error = $record->delete; + + $error = $record->check; + +=head1 DESCRIPTION + +An FS::did_order object represents a bulk DID order. FS::did_order inherits from +FS::Record. The following fields are currently supported: + +=over 4 + +=item ordernum + +primary key + +=item vendornum + +vendornum + +=item vendor_order_id + +vendor_order_id + +=item msa + +msa + +=item latanum + +latanum + +=item rate_center + +rate_center + +=item state + +state + +=item quantity + +quantity + +=item submitted + +submitted + +=item confirmed + +confirmed + +=item received + +received + + +=back + +=head1 METHODS + +=over 4 + +=item new HASHREF + +Creates a new bulk DID order. To add it 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 { 'did_order'; } + +=item insert + +Adds this record to the database. If there is an error, returns the error, +otherwise returns false. + +=cut + +# the insert method can be inherited from FS::Record + +=item delete + +Delete this record from the database. + +=cut + +# the delete method can be inherited from FS::Record + +=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 + +# the replace method can be inherited from FS::Record + +=item check + +Checks all fields to make sure this is a valid bulk DID order. If there is +an error, returns the error, otherwise returns false. Called by the insert +and replace methods. + +=cut + +# the check method should currently be supplied - FS::Record contains some +# data checking routines + +sub check { + my $self = shift; + + my $error = + $self->ut_numbern('ordernum') + || $self->ut_foreign_key('vendornum', 'did_vendor', 'vendornum' ) + || $self->ut_text('vendor_order_id') + || $self->ut_textn('msa') + || $self->ut_foreign_keyn('latanum', 'lata', 'latanum') + || $self->ut_textn('rate_center') + || $self->ut_textn('state') + || $self->ut_number('quantity') + || $self->ut_number('submitted') + || $self->ut_numbern('confirmed') + || $self->ut_numbern('received') + ; + return $error if $error; + + $self->SUPER::check; +} + +=back + +=head1 BUGS + +=head1 SEE ALSO + +L<FS::Record>, schema.html from the base documentation. + +=cut + +1; + diff --git a/FS/FS/did_vendor.pm b/FS/FS/did_vendor.pm new file mode 100644 index 000000000..a10843515 --- /dev/null +++ b/FS/FS/did_vendor.pm @@ -0,0 +1,121 @@ +package FS::did_vendor; + +use strict; +use base qw( FS::Record ); +use FS::Record qw( qsearch qsearchs ); + +=head1 NAME + +FS::did_vendor - Object methods for did_vendor records + +=head1 SYNOPSIS + + use FS::did_vendor; + + $record = new FS::did_vendor \%hash; + $record = new FS::did_vendor { 'column' => 'value' }; + + $error = $record->insert; + + $error = $new_record->replace($old_record); + + $error = $record->delete; + + $error = $record->check; + +=head1 DESCRIPTION + +An FS::did_vendor object represents a bulk DID vendor. FS::did_vendor inherits from +FS::Record. The following fields are currently supported: + +=over 4 + +=item vendornum + +primary key + +=item vendorname + +vendorname + + +=back + +=head1 METHODS + +=over 4 + +=item new HASHREF + +Creates a new bulk DID vendor. To add it 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 { 'did_vendor'; } + +=item insert + +Adds this record to the database. If there is an error, returns the error, +otherwise returns false. + +=cut + +# the insert method can be inherited from FS::Record + +=item delete + +Delete this record from the database. + +=cut + +# the delete method can be inherited from FS::Record + +=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 + +# the replace method can be inherited from FS::Record + +=item check + +Checks all fields to make sure this is a valid bulk DID vendor. If there is +an error, returns the error, otherwise returns false. Called by the insert +and replace methods. + +=cut + +# the check method should currently be supplied - FS::Record contains some +# data checking routines + +sub check { + my $self = shift; + + my $error = + $self->ut_numbern('vendornum') + || $self->ut_text('vendorname') + ; + return $error if $error; + + $self->SUPER::check; +} + +=back + +=head1 BUGS + +=head1 SEE ALSO + +L<FS::Record>, schema.html from the base documentation. + +=cut + +1; + diff --git a/FS/FS/lata.pm b/FS/FS/lata.pm new file mode 100644 index 000000000..7b425550c --- /dev/null +++ b/FS/FS/lata.pm @@ -0,0 +1,121 @@ +package FS::lata; + +use strict; +use base qw( FS::Record ); +use FS::Record qw( qsearch qsearchs ); + +=head1 NAME + +FS::lata - Object methods for lata records + +=head1 SYNOPSIS + + use FS::lata; + + $record = new FS::lata \%hash; + $record = new FS::lata { 'column' => 'value' }; + + $error = $record->insert; + + $error = $new_record->replace($old_record); + + $error = $record->delete; + + $error = $record->check; + +=head1 DESCRIPTION + +An FS::lata object represents a LATA number/name. FS::lata inherits from +FS::Record. The following fields are currently supported: + +=over 4 + +=item latanum + +primary key + +=item description + +description + + +=back + +=head1 METHODS + +=over 4 + +=item new HASHREF + +Creates a new LATA. To add the LATA 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 { 'lata'; } + +=item insert + +Adds this record to the database. If there is an error, returns the error, +otherwise returns false. + +=cut + +# the insert method can be inherited from FS::Record + +=item delete + +Delete this record from the database. + +=cut + +# the delete method can be inherited from FS::Record + +=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 + +# the replace method can be inherited from FS::Record + +=item check + +Checks all fields to make sure this is a valid LATA. If there is +an error, returns the error, otherwise returns false. Called by the insert +and replace methods. + +=cut + +# the check method should currently be supplied - FS::Record contains some +# data checking routines + +sub check { + my $self = shift; + + my $error = + $self->ut_numbern('latanum') + || $self->ut_text('description') + ; + return $error if $error; + + $self->SUPER::check; +} + +=back + +=head1 BUGS + +=head1 SEE ALSO + +L<FS::Record>, schema.html from the base documentation. + +=cut + +1; + diff --git a/FS/FS/phone_avail.pm b/FS/FS/phone_avail.pm index 0d591138c..8bb6a5cc3 100644 --- a/FS/FS/phone_avail.pm +++ b/FS/FS/phone_avail.pm @@ -145,7 +145,10 @@ sub check { || $self->ut_numbern('nxx') || $self->ut_numbern('station') || $self->ut_foreign_keyn('svcnum', 'cust_svc', 'svcnum' ) + || $self->ut_foreign_keyn('ordernum', 'did_order', 'ordernum' ) || $self->ut_textn('availbatch') + || $self->ut_textn('name') + || $self->ut_textn('rate_center_abbrev') ; return $error if $error; @@ -187,8 +190,21 @@ sub process_batch_import { }; my $opt = { 'table' => 'phone_avail', - 'params' => [ 'availbatch', 'exportnum', 'countrycode' ], - 'formats' => { 'default' => [ 'state', $numsub, 'name' ], }, + 'params' => [ 'availbatch', 'exportnum', 'countrycode', 'ordernum' ], + 'formats' => { 'default' => [ 'state', $numsub, 'name' ], + 'bulk' => [ 'state', $numsub, 'name', 'rate_center_abbrev' ], + }, + 'postinsert_callback' => sub { + my $record = shift; + if($record->ordernum) { + my $did_order = qsearchs('did_order', + { 'ordernum' => $record->ordernum } ); + if($did_order && !$did_order->received) { + $did_order->received(time); + $did_order->replace; + } + } + }, }; FS::Record::process_batch_import( $job, $opt, @_ ); |