HI All,


I had a script which was using Oraperl and Perl v-5.003.

I did upgrade the perl to 5.6.1 on Solaris 8 sparc.  I was getting Oraperl
error and I learnt that I should use DBI not Oraperl.
I installed the DBD and DBI and want to change this script.

Currently I am getting this error.
Global symbol "$ora_errstr" requires explicit package name at
/var/commerce/gateway.pl line 370.
Global symbol "$ora_errstr" requires explicit package name at
/var/commerce/gateway.pl line 380.
Global symbol "$ora_errstr" requires explicit package name at
/var/commerce/gateway.pl line 390.
Execution of /var/commerce/gateway.pl aborted due to compilation errors.


 Script is attached here ( If you don't get attachement, let me know, I'll
send you personal email).

Can you help me to identify what I need to change to make it compatible with
"use DBI" .. or can I use Oraperl with perl 5.6.1.

Thanks,

Sanjeev
#!/bin/perl -w

use lib '/u01/orap/pora/8.0.6/lib/';
#use lib '/usr/apps/FreeWare/Perl-5.03/lib/perl5/';
#use lib '/usr/apps/FreeWare/perl5.005/lib/5.00502';
use lib '/usr/local/lib/perl5/site_perl/5.6.1/sun4-solaris';
use lib '/usr/local/lib/perl5';
use lib '/var/commerce/organic/lib/';

use strict;

use IPC::Open3;
use Organic::Mail;
use Symbol;
#use Oraperl;
use DBI;

$ENV{'ORACLE_HOME'} = '/u01/orap/pora/8.0.6';

$ENV{'TNS_ADMIN'} = '/u01/orap/pora/8.0.6/network/admin';
#$ENV{'TWO_TASK'} = 'P';


my %ora_parms = ();

# Originals ... (i.e. live)

# Change these 3 emails below from [EMAIL PROTECTED] to  
# whoever you want to receive the emails everytime this 
# thing runs ... Z.K

my $web_sales_email = '[EMAIL PROTECTED]';
my $order_email  = '[EMAIL PROTECTED],[EMAIL PROTECTED],[EMAIL PROTECTED],[EMAIL PROTECTED]';
my $bounce_email = $order_email;
my $debugger     = '[EMAIL PROTECTED],[EMAIL PROTECTED]';
my $DEBUG        = 0;
my $db_login = "P.gunu.org";

# Begin main program

# Read in the encrypted message from stdin
my $encrypted_text = "";

while (<STDIN>) {
  $encrypted_text .= $_;
}

# Run it through the decryptor
my ($plaintext,$plaintext_no_cc) = decrypt($encrypted_text);

## grep through $plaintext here to find out what the product is and distribute the
## mail to [EMAIL PROTECTED] if appropriate.  

# Forward it on to its intended recipient
my $mail = new Organic::Mail;
my ($to, $bounce);

if ($DEBUG or $plaintext =~ /ignore this message/ ) {
  $to     = $debugger;
  $bounce = $debugger;
  $db_login = "PCAFE";
} else {
  $to     = $order_email;
  $bounce = $bounce_email;
}

#First send with CC info
$mail->to($to);
$mail->from($web_sales_email);
$mail->replyto($bounce);

$mail->subject("Incoming order");

$mail->message($plaintext_no_cc);
$mail->send;

# Just for testing, to see the un-encrypted order
#chmod 0755, "/tmp/plain.txt";
#open(TMP, ">>/tmp/plain.txt");
#print TMP '=' x 65, "\n";
#print TMP $plaintext_no_cc, "\n";
#close(TMP);

#Now send without CC info

if ($DEBUG or $plaintext_no_cc =~ /ignore this message/ ) {
  $to     = $debugger;
  $bounce = $debugger;
} else {
  $to     = $web_sales_email;
  $bounce = $bounce_email;
}

$mail->clear_to();
$mail->clear_from();
$mail->clear_replyto();
$mail->clear_subject();
$mail->clear_message();

$mail->to($to);
$mail->from($web_sales_email);
$mail->replyto($bounce);

$mail->subject("Incoming order");

$mail->message($plaintext_no_cc);
$mail->send;

# ============================================================ 
# Testing the test environment .... Z.K 7/6/00
# Commented out the Oracle inserts just for safety.
# Don't need to go past here at all for my tests...
# ============================================================ 


my $index = 1;
$ora_parms{line_number} = 1;
while($index<=$ora_parms{no_of_products})
{
  $ora_parms{option_number} = 0;
  
  $ora_parms{quantity}= $ora_parms{'quantity'.$index} ;
 
    if($ora_parms{'product_numbers'.$index}) {
    my $line_item = "" ;
    my @line_items = split /,/,$ora_parms{'product_numbers'.$index};
        
          foreach $line_item (@line_items) {
        my ($part_num,$part_price) = split /\*/,$line_item;

      $part_num =~ s/^\s+//;
      $part_price =~ s/^\s+//;

            $ora_parms{product_number} = $part_num;
        $ora_parms{product_price} =  $part_price;
    $ora_parms{platform} = $ora_parms{'platform'.$index} ;
    $ora_parms{which_product} = $ora_parms{'which_product'.$index} ;
    $ora_parms{media_type} = $ora_parms{'media_type'.$index} ;
       
      # testing env .. no inserts
         &do_oracle_insert();
      $ora_parms{option_number}++;
      }
  
          $ora_parms{line_number}++;
       
} else {
  # testing env .. no inserts
 &do_oracle_insert();
  }
  $index++;
}


1;

#
# decrypt
#
# takes one parameter, which is the encrypted text to be decrypted
#

sub decrypt {
  my $encrypted_text = shift;

  #my $encrypted_text = $plaintext;
  my $plaintext_sub = "";

  #my $plaintext_sans_cc is plaint text message minus Credit Card Info
  my $plaintext_sans_cc = "";

  # PGP might barf -- if so, we want to know about it!
  my $error_text = "";

  # the directory where the PGP 5.0 binaries live
  my $pgp_directory = "/var/commerce/pgp/bin";

  # the ID for the private key to use for signing
  my $pgp_user      = '[EMAIL PROTECTED]';

  # the ID for the public key to use for encrypting
  my $pgp_recipient = '[EMAIL PROTECTED]';

  # the location of the public keyring
  my $pgp_pubring   = '/.pgp/pubring.pkr';

  # the location of the secret keyring
  my $pgp_secring   = '/.pgp/secring.skr';

  # the password used to encrypt the secret keys
  my $password = "p0intyha1r";

  $ENV{'PGPPASSFD'} = '0';
  my $PGPWRITE = gensym();
  my $PGPREAD  = gensym();
  my $PGPERR = gensym();

  my $pid = open3($PGPWRITE, $PGPREAD, $PGPERR, "$pgp_directory/pgpv -f 
--pubring=$pgp_pubring --secring=$pgp_secring +batchmode=1") or die "Unable to invoke 
PGP.";

  print $PGPWRITE "$password\n";
  print $PGPWRITE $encrypted_text;
  close $PGPWRITE;

  my ($ora_field,$ora_value);
  while (<$PGPREAD>) {
    #We need to store the fields as key/value pairs for insertion in the oracle 
database
    #We split each line the equal
    ($ora_field,$ora_value) = split /\=/,$_,2;
    chomp $ora_value;
    $ora_parms{$ora_field} = $ora_value;
    $ora_parms{$ora_field} =~ s/\'//g;

    # do nothing, just slurp in the text
    $plaintext_sub .= $_; 
    #strip the Credit Card Information
    if($_ !~ /credit_card_type/o and $_ !~ /credit_card_number/o
       and $_ !~ /credit_card_expire/o and $_ !~ /name_on_card/o) {
        $plaintext_sans_cc .= $_;
    }
  } 

  $error_text .= <$PGPERR>; # oh no! Errors!

  # ...too bad we're going to ignore them
  # die "PGP errors: $error_text" if $error_text;

  return ($plaintext_sub, $plaintext_sans_cc);
} # encrypt 


sub do_oracle_insert {

    #Hack......
    if($ora_parms{billing_country} eq "CA") {
      $ora_parms{billing_province} = $ora_parms{billing_state};
      $ora_parms{shipping_province} = $ora_parms{shipping_state};
      $ora_parms{billing_state} = "";
      $ora_parms{shipping_state} = "";
    } else {
      $ora_parms{billing_province} = "";
      $ora_parms{shipping_province} = "";
    }

    
    #my $lda = &ora_login($db_login, "web", "web") || &dberror("ora_login($db_login, 
WEB)");
        my $lda = &ora_login("P", "web", "homer") || &dberror("ora_login($db_login, 
WEB)");

    
    my $insert = "";
      $insert = "insert into rs_web_order 
                     ( 
           order_id,
           platform,
           billing_label,
           billing_first_name,
           billing_middle_initial,
           billing_last_name,
           billing_company,
           billing_title,
           billing_street_address,
           billing_address2,
           billing_address3,
           billing_city,
           billing_state,
           billing_province,
           billing_zip_code,
                 billing_country,
           billing_day_phone,
           billing_eve_phone,
           billing_fax_number,
           billing_email,
           shipping_label,
           shipping_first_name,
           shipping_middle_initial,
           shipping_last_name,
           shipping_company,
           shipping_title,
           shipping_street_address,
           shipping_address2,
           shipping_address3,
           shipping_city,
           shipping_state,
           shipping_province,
           shipping_zip_code,
           shipping_country,
           shipping_day_phone,
           shipping_eve_phone,
           shipping_fax_number,
           shipping_email,
           credit_card_type,
           credit_card_number,
           credit_card_expiry,
           credit_card_holder_name,
           shipping_option,
           quantity,
           rational_customer,
           where_heard,
           line_number,
      option_number,
                 item,
           price,
           media_type,
           process_flag,
                       creation_date,
                   ship_method_code,
           type_of_order,
      shipping_instructions     
         )
         VALUES
         (
           \'$ora_parms{order_id}\',
           \'$ora_parms{platform}\',
                   \'$ora_parms{billing_label}\',
           \'$ora_parms{billing_first_name}\',
           \'$ora_parms{billing_middle_initial}\',
           \'$ora_parms{billing_last_name}\',
           \'$ora_parms{billing_company}\',
           \'$ora_parms{billing_title}\',
           \'$ora_parms{billing_street_address}\',
           \'$ora_parms{billing_street_address2}\',
           \'$ora_parms{billing_street_address3}\',
           \'$ora_parms{billing_city}\',
           \'$ora_parms{billing_state}\',
           \'$ora_parms{billing_province}\',
                  \'$ora_parms{billing_zip_code}\',
                   \'$ora_parms{billing_country}\',
           \'$ora_parms{billing_day_phone_number}\',
           \'$ora_parms{billing_eve_phone_number}\',
           \'$ora_parms{billing_fax_number}\',
           \'$ora_parms{billing_email_address}\',
                  \'$ora_parms{shipping_label}\',
           \'$ora_parms{shipping_first_name}\',
           \'$ora_parms{shipping_middle_initial}\',
           \'$ora_parms{shipping_last_name}\',
           \'$ora_parms{shipping_company}\',
           \'$ora_parms{shipping_title}\',
           \'$ora_parms{shipping_street_address}\',
           \'$ora_parms{shipping_street_address2}\',
           \'$ora_parms{shipping_street_address3}\',
           \'$ora_parms{shipping_city}\',
           \'$ora_parms{shipping_state}\',
           \'$ora_parms{shipping_province}\',
                 \'$ora_parms{shipping_zip_code}\',
                   \'$ora_parms{shipping_country}\',
           \'$ora_parms{shipping_day_phone_number}\',
           \'$ora_parms{shipping_eve_phone_number}\',
           \'$ora_parms{shipping_fax_number}\',
           \'$ora_parms{shipping_email_address}\',
           \'$ora_parms{credit_card_type}\',
           \'$ora_parms{credit_card_number}\',
           \'$ora_parms{credit_card_expires}\',
           \'$ora_parms{name_on_card}\',
           \'$ora_parms{shipping_option}\',
             $ora_parms{quantity},
           \'$ora_parms{rational_customer}\',
           \'$ora_parms{where_heard}\',
          $ora_parms{line_number},
          $ora_parms{option_number},
           \'$ora_parms{product_number}\',
          $ora_parms{product_price},
           \'$ora_parms{media_type}\',
           \'N\',
               SYSDATE,
               \'$ora_parms{shipping_code}\',
               \'$ora_parms{type_of_order}\',
               \'$ora_parms{shipping_instructions}\'
                      )";


    &ora_do($lda,$insert) || die "(($ora_errstr))\n";
  #&dberror("&ora_do($lda,$insert)");

    &ora_logoff($lda);
}

sub dberror {
   my ($message) = @_;

   print "*Error: $message\n";
   print "Database error: $ora_errstr\n";
   my $db_error_mail =  new Organic::Mail;


   $db_error_mail->to('[EMAIL PROTECTED]');
   $db_error_mail->from('gateway@adm-erpdb');
   $db_error_mail->replyto('[EMAIL PROTECTED]');
   
   $db_error_mail->subject("Error in E-Commerce");
   
   $db_error_mail->message("$message\n\n$ora_errstr");
   $db_error_mail->send;

   exit 1;
} # dberror

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to