package FS::did_order;
use strict;
-use base qw( FS::Record );
-use FS::Record qw( qsearch qsearchs );
+use base qw( FS::o2m_Common FS::Record );
+use FS::Record qw( qsearch qsearchs dbh );
=head1 NAME
vendor_order_id
-=item msa
-
-msa
-
-=item latanum
-
-latanum
-
-=item rate_center
-
-rate_center
-
-=item state
-
-state
-
-=item quantity
-
-quantity
-
=item submitted
submitted
=cut
-# the delete method can be inherited from FS::Record
+sub delete {
+ my $self = shift;
+
+ return "Can't delete a DID order which has DIDs received"
+ if qsearch( 'phone_avail', { 'ordernum' => $self->ordernum } );
+
+ local $SIG{HUP} = 'IGNORE';
+ local $SIG{INT} = 'IGNORE';
+ local $SIG{QUIT} = 'IGNORE';
+ local $SIG{TERM} = 'IGNORE';
+ local $SIG{TSTP} = 'IGNORE';
+ local $SIG{PIPE} = 'IGNORE';
+
+ my $oldAutoCommit = $FS::UID::AutoCommit;
+ local $FS::UID::AutoCommit = 0;
+ my $dbh = dbh;
+
+ my @did_order_item = $self->did_order_item;
+
+ foreach my $did_order_item ( @did_order_item ) {
+ my $error = $did_order_item->delete;
+ if ( $error ) {
+ $dbh->rollback if $oldAutoCommit;
+ return "can't delete DID order item "
+ . $did_order_item->orderitemnum . ": $error";
+ }
+ }
+
+ my $error = $self->SUPER::delete(@_);
+ if ( $error ) {
+ $dbh->rollback if $oldAutoCommit;
+ return $error;
+ }
+
+ $dbh->commit or die $dbh->errstr if $oldAutoCommit;
+}
+
=item replace OLD_RECORD
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_textn('vendor_order_id')
|| $self->ut_number('submitted')
|| $self->ut_numbern('confirmed')
|| $self->ut_numbern('received')
$self->SUPER::check;
}
-=back
+=item did_order_item
+
+Returns the did_order_items (see L<FS::did_order_item>) associated with this bulk DID order.
+
+=cut
-=head1 BUGS
+sub did_order_item {
+ my $self = shift;
+ qsearch( 'did_order_item', { 'ordernum' => $self->ordernum } );
+}
+
+=item cust_main
+
+Returns the cust_main (see L<FS::cust_main>), if any, associated with this bulk DID order.
+
+=cut
+
+sub cust_main {
+ my $self = shift;
+ return '' unless $self->custnum;
+ qsearchs('cust_main', { 'custnum' => $self->custnum } );
+}
+
+=item provisioned
+
+Returns the provisioned DIDs, if any, as phone_avail (see L<FS::phone_avail>) objects.
+
+=cut
+
+sub provisioned {
+ my $self = shift;
+ qsearch({ table => 'phone_avail',
+ hashref => { 'ordernum' => $self->ordernum, },
+ select => 'phone_avail.*',
+ extra_sql => ' and svcnum is not null ',
+ });
+}
+
+=back
=head1 SEE ALSO