diff --git a/lib/NGCP/BulkProcessor/Projects/Migration/UPCAT/Import.pm b/lib/NGCP/BulkProcessor/Projects/Migration/UPCAT/Import.pm index 4d17770..31ea648 100644 --- a/lib/NGCP/BulkProcessor/Projects/Migration/UPCAT/Import.pm +++ b/lib/NGCP/BulkProcessor/Projects/Migration/UPCAT/Import.pm @@ -5,7 +5,7 @@ use strict; use threads::shared qw(); -#use Encode qw(); +use Encode qw(); use NGCP::BulkProcessor::Projects::Migration::UPCAT::Settings qw( $provision_mta_subscriber_rownum_start @@ -264,6 +264,7 @@ sub import_ccs_subscriber { next if (scalar @$row) == 0 or (scalar @$row) == 1; $row = [ map { local $_ = $_; trim($_); $_; } @$row ]; #Encode::encode('utf8',Encode::decode('cp1252',$_)); my $record = NGCP::BulkProcessor::Projects::Migration::UPCAT::Dao::import::CcsSubscriber->new($row); + next unless _import_ccs_subscriber_check_cancelled($context,$record); $record->{rownum} = $rownum; my %r = %$record; my @row_ext = @r{@NGCP::BulkProcessor::Projects::Migration::UPCAT::Dao::import::CcsSubscriber::fieldnames}; if ($context->{upsert}) { @@ -321,6 +322,16 @@ sub import_ccs_subscriber { } +sub _import_ccs_subscriber_check_cancelled { + my ($context,$subscriber) = @_; + my $comment = Encode::decode('utf8',$subscriber->{comment}) if defined $subscriber->{comment}; #mark as utf-8 + if (defined $comment and $subscriber->{comment} =~ /k(\x{00dc}|\x{00fc})ndig/i) { + _warn($context,"$subscriber->{customer} $subscriber->{service_number} $subscriber->{comment}, skipping"); + return 0; + } + return 1; +} + sub _import_ccs_subscriber_reset_delta { my $upsert = 0; if (NGCP::BulkProcessor::Projects::Migration::UPCAT::Dao::import::CcsSubscriber::countby_service_number() > 0) { diff --git a/lib/NGCP/BulkProcessor/Projects/Migration/UPCAT/Provisioning.pm b/lib/NGCP/BulkProcessor/Projects/Migration/UPCAT/Provisioning.pm index a98ce1a..574d1af 100644 --- a/lib/NGCP/BulkProcessor/Projects/Migration/UPCAT/Provisioning.pm +++ b/lib/NGCP/BulkProcessor/Projects/Migration/UPCAT/Provisioning.pm @@ -1128,18 +1128,18 @@ sub _provision_ccs_susbcriber { if ((scalar @$existing_billing_voip_subscribers) == 0) { if (not $update_mode) { - _update_ccs_contact($context); - _update_contract($context); - #{ - # lock $db_lock; #concurrent writes to voip_numbers causes deadlocks + #if ($imported_subscriber->{delta} eq + # $NGCP::BulkProcessor::Projects::Migration::UPCAT::Dao::import::CcsSubscriber::deleted_delta) { + # _info($context,$context->{prov_subscriber}->{username} . ': is deleted, and no active subscriber found'); + #} else { + _update_ccs_contact($context); + _update_contract($context); _update_subscriber($context); _create_aliases($context); + _update_ccs_preferences($context); + _set_registrations($context); + _set_callforwards($context); #} - _update_ccs_preferences($context); - _set_registrations($context); - _set_callforwards($context); - ##todo: additional prefs, AllowedIPs, NCOS, Callforwards. still thinking wether to integrate it - ##in this main provisioning loop, or align it in separate run-modes, according to the files given. } else { _warn($context,$context->{prov_subscriber}->{username} . ': no active billing subscribers found for updating, skipping'); } @@ -1463,14 +1463,6 @@ sub _provision_ccs_susbcriber_init_context { my @service_numbers = (); foreach my $subscriber (@$subscriber_group) { $subscriber->{comment} = Encode::decode('utf8',$subscriber->{comment}) if defined $subscriber->{comment}; #mark as utf-8 - #if ($subscriber->{comment} =~ /gek/i) { - # print "blah"; - #} - if (defined $subscriber->{comment} and $subscriber->{comment} =~ /k(\x{00dc}|\x{00fc})ndig/i) { - #if (defined $subscriber->{comment} and $subscriber->{comment} =~ /k..ndig/i) { - _warn($context,"$subscriber->{customer} $subscriber->{service_number} $subscriber->{comment}, skipping"); - next; - } my $alias = {}; ($alias->{cc},$alias->{ac},$alias->{sn}) = split_number($subscriber->{service_number}); $alias->{number} = $alias->{cc} . $alias->{ac} . $alias->{sn}; @@ -1808,6 +1800,35 @@ sub _set_callforwards { } +#sub _terminate_contract { +# my ($context,$contract_id) = @_; +# +# my $result = 0; +# my $contract_path = NGCP::BulkProcessor::RestRequests::Trunk::Customers::get_item_path($contract_id); +# eval { +# my $customer; +# if ($dry) { +# $customer = NGCP::BulkProcessor::RestRequests::Trunk::Customers::get_item($contract_id); +# } else { +# $customer = NGCP::BulkProcessor::RestRequests::Trunk::Customers::update_item($contract_id,{ +# status => $NGCP::BulkProcessor::RestRequests::Trunk::Customers::TERMINATED_STATE, +# }); +# } +# $result = (defined $customer ? 1 : 0); +# }; +# if ($@ or not $result) { +# if ($skip_errors) { +# _warn($context,"($context->{rownum}) " . 'subscriber ' . $context->{cli} . ': could not ' . ($dry ? 'fetch' : 'terminate') . ' old contract ' . $contract_path); +# } else { +# _error($context,"($context->{rownum}) " . 'subscriber ' . $context->{cli} . ': could not ' . ($dry ? 'fetch' : 'terminate') . ' old contract ' . $contract_path); +# } +# } else { +# _info($context,"($context->{rownum}) " . 'subscriber ' . $context->{cli} . ': old contract ' . $contract_path . ($dry ? ' fetched' : ' terminated')); +# } +# return $result; +# +#} + sub _error { my ($context,$message) = @_; diff --git a/lib/NGCP/BulkProcessor/Projects/Migration/UPCAT/process.pl b/lib/NGCP/BulkProcessor/Projects/Migration/UPCAT/process.pl index 462918b..4aecec4 100644 --- a/lib/NGCP/BulkProcessor/Projects/Migration/UPCAT/process.pl +++ b/lib/NGCP/BulkProcessor/Projects/Migration/UPCAT/process.pl @@ -102,6 +102,7 @@ scripterror(getscriptpath() . ' already running',getlogger(getscriptpath())) unl my @TASK_OPTS = (); my $tasks = []; +my $files = []; my $check_task_opt = 'check'; push(@TASK_OPTS,$check_task_opt); @@ -154,6 +155,7 @@ sub init { "dry" => \$dry, "skip-errors" => \$skip_errors, "force" => \$force, + "file=s" => $files, ); # or scripterror('error in command line arguments',getlogger(getscriptpath())); $tasks = removeduplicates($tasks,1); @@ -311,7 +313,11 @@ sub import_mta_subscriber_task { my ($messages) = @_; my ($result,$warning_count) = (0,0); eval { - ($result,$warning_count) = import_mta_subscriber(@mta_subscriber_filenames); + if (scalar @$files) { + ($result,$warning_count) = import_mta_subscriber(@$files); + } else { + ($result,$warning_count) = import_mta_subscriber(@mta_subscriber_filenames); + } }; my $err = $@; my $stats = ": $warning_count warnings"; @@ -416,7 +422,11 @@ sub import_ccs_subscriber_task { my ($messages) = @_; my ($result,$warning_count) = (0,0); eval { - ($result,$warning_count) = import_ccs_subscriber($ccs_subscriber_filename); + if (scalar @$files) { + ($result,$warning_count) = import_ccs_subscriber($files->[0]); + } else { + ($result,$warning_count) = import_ccs_subscriber($ccs_subscriber_filename); + } }; my $err = $@; my $stats = ": $warning_count warnings";