X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=bin%2Fimport-optigold.pl;h=c23bf608ca4b4d6d552e8770857d9e06419b5d20;hb=c21d3796f46dd4eeb39fd8f8e1d83e8dbc6d33d4;hp=1284d8599668e54ab04570a5d0a63396e41e5b9e;hpb=0677db2866105b5a37e2a3b426999b84ab35f4b7;p=freeside.git diff --git a/bin/import-optigold.pl b/bin/import-optigold.pl index 1284d8599..c23bf608c 100755 --- a/bin/import-optigold.pl +++ b/bin/import-optigold.pl @@ -27,6 +27,7 @@ my $extension = '.htm'; #my $d_dbuser = 'freeside'; my $d_dbuser = 'enet'; #my $d_dbuser = 'ivan'; +#my $d_dbuser = 'freesideimport'; #my $agentnum = 1; my $agentnum = 13; @@ -34,7 +35,7 @@ my $legacy_domain_svcnum = 1; my $legacy_ppp_svcnum = 2; my $legacy_email_svcnum = 3; #my $legacy_broadband_svcnum = 4; -my $legacy_broadband_svcnum = 14; +#my $legacy_broadband_svcnum = 14; #my $previous_credit_reasonnum = 1; my $previous_credit_reasonnum = 1220; @@ -209,6 +210,41 @@ sub payby { $payby_map{ shift->{billing_type} }; } +sub payinfo { + my $hash = shift; + my $payby = payby($hash); + my $info; + my $cc = + $hash->{'credit_card_number_1'}. + $hash->{'credit_card_number_2'}. + $hash->{'credit_card_number_3'}. + $hash->{'credit_card_number_4'}; + my $bank = + $hash->{'bank_account_number'}. + '@'. + $hash->{'bank_transit_number'}; + if ($payby eq 'CARD') { + $info = $cc; + }elsif ($payby eq 'CHEK') { + $info = $bank; + }elsif ($payby eq 'BILL') { + $info = $hash->{'blanket_purchase_order_number'}; + $bank =~ s/[^\d\@]//g; + $cc =~ s/\D//g; + if ( $bank =~ /^\d+\@\d{9}/) { + $info = $bank; + $payby = 'DCHK'; + } + if ( $cc =~ /^\d{13,16}/ ) { + $info = $cc; + $payby = 'DCRD'; + } + }else{ + die "unexpected payby"; + } + ($info, $payby); +} + sub ut_name_fixup { my ($object, $field) = (shift, shift); my $value = $object->getfield($field); @@ -332,6 +368,30 @@ svc_acct => { 'stable' => 'cust', 'domsvc' => sub{ $legacy_domain_svcnum }, 'status' => 'status', }, +# 'fixup' => sub { my $svc_acct = shift; +# my $row = shift; +# my $id = $row->{'master_account'} +# ? 'slave:'. $row->{'customer_id'} +# : $row->{'login'}; +# my $status = $svc_acct->status; +# if ( $status ne 'Current' +# && $status ne 'On Hold' ) +# { +# $cancel{$id} = +# str2time($row->{termination_date}); +# warn "not creating (cancelled) svc_acct for " . +# $svc_acct->username. "\n"; +# return 1 +# } +# $susp{$id} = str2time($row->{hold_date}) +# if $status eq 'On Hold'; +# $adjo{$id} = str2time($row->{hold_date}) +# if ( $status eq 'Current' && +# $row->{hold_date} ); +# $bill{$id} = +# str2time($row->{expiration_date}); +# ''; +# }, 'fixup' => sub { my $svc_acct = shift; my $row = shift; my $id = $row->{'master_account'} @@ -343,8 +403,6 @@ svc_acct => { 'stable' => 'cust', { $cancel{$id} = str2time($row->{termination_date}); - warn "not creating (cancelled) svc_acct for " . - $svc_acct->username. "\n"; return 1 } $susp{$id} = str2time($row->{hold_date}) @@ -354,14 +412,25 @@ svc_acct => { 'stable' => 'cust', $row->{hold_date} ); $bill{$id} = str2time($row->{expiration_date}); - ''; - }, - 'skey' => sub { my $svc_acct = shift; - my $row = shift; - my $id = $row->{'master_account'} - ? 'slave:'. $row->{'customer_id'} - : $row->{'login'}; + my $object = + qsearchs( 'svc_acct', + { 'username' => $row->{'login'} } + ); + unless( $object ) { + warn "can't find svc_acct for legacy ppp ". + $row->{'login'}, "\n"; + return 1; + } + + $object_map{svc_acct}{$id} = $object->svcnum; + return 1; }, +# 'skey' => sub { my $svc_acct = shift; +# my $row = shift; +# my $id = $row->{'master_account'} +# ? 'slave:'. $row->{'customer_id'} +# : $row->{'login'}; +# }, }, cust_main => { 'stable' => 'cust', 'mapping' => @@ -397,69 +466,6 @@ cust_main => { 'stable' => 'cust', 'ship_zip' => sub { or_b('zip_code', shift) }, 'ship_daytime' => sub { or_p('phone', shift) }, 'ship_fax' => sub { or_p('fax', shift) }, - 'payby' => \&payby, - 'payinfo' => sub { my $hash = shift; - my $payby = payby($hash); - if ($payby eq 'CARD') { - $hash->{'credit_card_number_1'}. - $hash->{'credit_card_number_2'}. - $hash->{'credit_card_number_3'}. - $hash->{'credit_card_number_4'}; - }elsif ($payby eq 'CHEK') { - $hash->{'bank_account_number'}. - '@'. - $hash->{'bank_transit_number'}; - }elsif ($payby eq 'BILL') { - $hash->{'blanket_purchase_order_number'}; - }else{ - die "unexpected payby"; - } - }, - 'paycvv' => sub { my $hash = shift; - my $payby = payby($hash); - if ($payby eq 'CARD') { - $hash->{'credit_card_cvv_number'}; - }else{ - ''; - } - }, - 'paydate' => sub { my $hash = shift; - my $payby = payby($hash); - if ($payby eq 'CARD') { - '20'. - $hash->{'credit_card_exp_date_2'}. - '-'. - substr( - $hash->{'credit_card_exp_date_1'}, - 0, - 2, - ). - '-01'; - }else{ - '2037-12-01'; - } - }, - 'payname' => sub { my $hash = shift; - my $payby = payby($hash); - if ($payby eq 'CARD') { - $hash->{'credit_card_name'}; - }elsif ($payby eq 'CHEK') { - $hash->{'bank_name'}; - }else{ - ''; - } - }, - 'paytype' => sub { my $hash = shift; - my $payby = payby($hash); - if ($payby eq 'CHEK') { - $hash->{'bank_account_to_debit'} - ? 'Personal '. - $hash->{bank_account_to_debit} - : ''; - }else{ - ''; - } - }, 'tax' => sub { shift->{taxable} eq '' ? 'Y' : '' }, 'refnum' => sub { $referrals{shift->{'referred_from'}} || 1 @@ -473,6 +479,42 @@ cust_main => { 'stable' => 'cust', ut_name_fixup($cust_main, 'first'); ut_name_fixup($cust_main, 'company'); ut_name_fixup($cust_main, 'last'); + + my ($info, $payby) = payinfo($row); + $cust_main->payby($payby); + $cust_main->payinfo($info); + + $cust_main->paycvv( + $row->{'credit_card_cvv_number'} + ) + if ($payby eq 'CARD' or $payby eq 'DCRD'); + + $cust_main->paydate('20'. + $row->{'credit_card_exp_date_2'}. '-'. + substr( + $row->{'credit_card_exp_date_1'}, + 0, + 2, + ). + '-01' + ) + if ($payby eq 'CARD' or $payby eq 'DCRD'); + + my $payname = ''; + $payname = $row->{'credit_card_name'} + if ($payby eq 'CARD' or $payby eq 'DCRD'); + $payname = $row->{'bank_name'} + if ($payby eq 'CHEK' or $payby eq 'DCHK'); + $cust_main->payname($payname); + + $cust_main->paytype( + $row->{'bank_account_to_debit'} + ? 'Personal '. + $row->{bank_account_to_debit} + : '' + ) + if ($payby eq 'CHEK' or $payby eq 'DCHK'); + $cust_main->payby('BILL') if ($cust_main->payby eq 'CHEK' && $cust_main->payinfo !~ /^\d+\@\d{9}$/); @@ -484,6 +526,8 @@ cust_main => { 'stable' => 'cust', ut_text_fixup($cust_main, 'address1'); ut_state_fixup($cust_main, 'state'); ut_zip_fixup($cust_main, 'zip'); + + ''; }, 'skey' => sub { my $object = shift; @@ -610,10 +654,24 @@ svc_acct => { 'stable' => 'email', 'svcpart' => sub{ $legacy_email_svcnum }, 'domsvc' => sub{ $legacy_domain_svcnum }, }, - 'fixup' => sub { my $object = shift; +# 'fixup' => sub { my ($object, $row) = (shift,shift); +# my ($sd,$sm,$sy) = split '/', +# $row->{shut_off_date} +# if $row->{shut_off_date}; +# if ($sd && $sm && $sy) { +# my ($cd, $cm, $cy) = (localtime)[3,4,5]; +# $cy += 1900; $cm++; +# return 1 if $sy < $cy; +# return 1 if ($sy == $cy && $sm < $cm); +# return 1 if ($sy == $cy && $sm == $cm && $sd <= $cd); +# } +# return 1 if $object_map{'cust_main'}{$object->username}; +# ''; +# }, + 'fixup' => sub { my ($object, $row) = (shift,shift); my ($sd,$sm,$sy) = split '/', - $object->{shut_off_date} - if $object->{shut_off_date}; + $row->{shut_off_date} + if $row->{shut_off_date}; if ($sd && $sm && $sy) { my ($cd, $cm, $cy) = (localtime)[3,4,5]; $cy += 1900; $cm++; @@ -622,12 +680,22 @@ svc_acct => { 'stable' => 'email', return 1 if ($sy == $cy && $sm == $cm && $sd <= $cd); } return 1 if $object_map{'cust_main'}{$object->username}; - ''; - }, - 'skey' => sub { my $object = shift; - my $href = shift; - 'email:'. $href->{'email_customer_id'}; + my $svc_acct = + qsearchs( 'svc_acct', + { 'username' => $row->{'login'} } + ); + unless( $svc_acct ) { + warn "can't find svc_acct for email ". + $row->{'login'}. "\n"; + return 1; + } + $object_map{svc_acct}{'email:'.$row->{'email_customer_id'}} = $svc_acct->svcnum; + return 1; }, +# 'skey' => sub { my $object = shift; +# my $href = shift; +# 'email:'. $href->{'email_customer_id'}; +# }, 'wrapup' => sub { for my $id (keys %{$object_map{'cust_pkg'}}){ next unless $id =~ /^email:(\d+)/; my $custid = $1; @@ -636,14 +704,14 @@ svc_acct => { 'stable' => 'email', $object_map{'svc_acct'}{$id} } ); unless ($cust_svc) { - warn "can't find legacy ppp $id\n"; + warn "can't find legacy email $id\n"; next; } $cust_svc-> pkgnum($cust_pkg_map{$custid}); my $error = $cust_svc->replace; - warn "error linking legacy ppp $id: $error\n"; + warn "error linking legacy email $id: $error\n"; } }, }, @@ -663,7 +731,7 @@ while ( @tables ) { my ($id) = $href->{'id'}; my ($skey) = $href->{'skey'}; - $d_dbh->do("delete from $table"); #XXX FIXME! + #$d_dbh->do("delete from $table"); my $s_sth = $s_dbh->prepare("select count(*) from $stable"); $s_sth->execute or die $s_sth->errstr;