Remove piles of no-longer-used EDI code
authorBill Erickson <berick@esilibrary.com>
Wed, 3 Oct 2012 15:40:52 +0000 (11:40 -0400)
committerBill Erickson <berick@esilibrary.com>
Wed, 3 Oct 2012 15:40:52 +0000 (11:40 -0400)
Signed-off-by: Bill Erickson <berick@esilibrary.com>
Open-ILS/src/perlmods/lib/OpenILS/Application/Acq/EDI.pm

index ada8f9a..3d8354a 100644 (file)
@@ -16,8 +16,6 @@ use OpenILS::Utils::CStoreEditor q/new_editor/;
 use OpenILS::Utils::Fieldmapper;
 use OpenILS::Application::Acq::EDI::Translator;
 
-use OpenILS::Utils::LooseEDI;
-use Business::EDI;
 use OpenILS::Utils::EDIReader;
 
 use Data::Dumper;
@@ -155,14 +153,15 @@ sub retrieve_core {
     return \@return;
 }
 
-# my $in = OpenILS::Application::Acq::EDI->process_retrieval($file_content, $remote_filename, $server, $account_id, $editor);
+# my $msg_ids = OpenILS::Application::Acq::EDI->process_retrieval(
+#   $file_content, $remote_filename, $server, $account_id, $editor);
 
 sub process_retrieval {
-    my ($class, $content, $filename, $server, $account_or_id, $e) = @_;
+    my ($class, $content, $filename, $server, $account_or_id) = @_;
     $content or return;
 
-    $e ||= new_editor;
-    my $account = __PACKAGE__->record_activity( $account_or_id, $e );
+    my $e = new_editor;
+    my $account = __PACKAGE__->record_activity($account_or_id, $e);
 
     # a single EDI blob can contain multiple messages
     # create one edi_message per included message
@@ -179,6 +178,8 @@ sub process_retrieval {
         $incoming->edi($content);
         $incoming->message_type($msg_hash->{message_type});
         $incoming->jedi(OpenSRF::Utils::JSON->perl2JSON($msg_hash)); # jedi-2.0
+        $incoming->status('translated');
+        $incoming->translate_time('NOW');
 
         if ($msg_hash->{purchase_order}) {
             $logger->info("EDI: processing message for PO " . $msg_hash->{purchase_order});
@@ -418,20 +419,6 @@ sub nice_string {
     # return substr($string,0,$head) . "... " . substr($string, -1*$tail);
 }
 
-sub jedi2perl {
-    my ($class, $jedi) = @_;
-    $jedi or return;
-    my $msg = OpenSRF::Utils::JSON->JSON2perl( $jedi );
-    open (FOO, ">>/tmp/JSON2perl_dump.txt");
-    print FOO Dumper($msg), "\n\n";
-    close FOO;
-    $logger->warn("Dumped JSON2perl to /tmp/JSON2perl_dump.txt");
-    return $msg;
-}
-
-our @datecodes = (35, 359, 17, 191, 69, 76, 75, 79, 85, 74, 84, 223);
-our @noop_6063 = (21);
-
 # parts of this process can fail without the entire
 # thing failing.  If a catastrophic error occurs,
 # it will occur via die.
@@ -768,252 +755,5 @@ sub create_acq_invoice_from_edi {
     return 1;
 }
 
-# returns message object if processing should continue
-# returns false/undef value if processing should abort
-
-sub message_object {
-    my $class = shift;
-    my $body  = shift or return;
-    my $key   = shift if @_;
-    my $keystring = $key || 'UNSPECIFIED';
-
-    my $msg = Business::EDI::Message->new($body);
-    unless ($msg) {
-        $logger->error("EDI interchange message: $keystring body failed Business::EDI constructor. Skipping it.");
-        return;
-    }
-    $key = $msg->code if ! $key;  # Now we set the key for reference if it wasn't specified
-    my $val_0065 = $msg->xpath_value('UNH/S009/0065') || '';
-    unless ($val_0065 eq $key) {
-        $logger->error("EDI $key UNH/S009/0065 ('$val_0065') conflicts w/ message type $key.  Aborting");
-        return;
-    }
-    my $val_0051 = $msg->xpath_value('UNH/S009/0051') || '';
-    unless ($val_0051 eq 'UN') {
-        $logger->warn("EDI $key UNH/S009/0051 designates '$val_0051', not 'UN' as controlling agency.  Attempting to process anyway");
-    }
-    my $val_0054 = $msg->xpath_value('UNH/S009/0054') || '';
-    if ($val_0054) {
-        $logger->info("EDI $key UNH/S009/0054 uses Spec revision version '$val_0054'");
-        # Possible Spec Version limitation
-        # my $yy = $tag_0054 ? substr($val_0054,0,2) : '';
-        # unless ($yy eq '00' or $yy > 94 ...) {
-        #     $logger->warn("EDI $key UNH/S009/0051 Spec revision version '$val_0054' not supported");
-        # }
-    } else {
-        $logger->warn("EDI $key UNH/S009/0054 does not reference a known Spec revision version");
-    }
-    return $msg;
-}
-
-=head2 ->eg_li($lineitem_object, [$remote, $server_log_string, $editor])
-
-my $line_item = OpenILS::Application::Acq::EDI->eg_li($edi_line, $remote, "test_server_01", $e);
-
- $remote is a acq.edi_account Fieldmapper object.
- $server_log_string is an arbitrary string use to identify the remote host in potential log messages.
-
-Updates:
- acq.lineitem.estimated_unit_price, 
- acq.lineitem.state (dependent on mapping codes), 
- acq.lineitem.expected_recv_time, 
- acq.lineitem.edit_time (consequently)
-
-=cut
-
-sub eg_li {
-    my ($class, $line, $server, $server_log_string, $e) = @_;
-    $line or return;
-    $e ||= new_editor();
-
-    my $id;
-    # my $rff      = $line->part('line_reference/RFF') or $logger->warn("EDI ORDRSP line_detail/RFF missing!");
-    my $val_1153 = $line->xpath_value('line_reference/RFF/1153') || '';
-    my $val_1154 = $line->xpath_value('line_reference/RFF/1154') || '';
-    my $val_1082 = $line->xpath_value('LIN/1082') || '';
-
-    my @po_nums;
-
-    $val_1154 =~ s#^(.*)\/##;   # Many sources send the ID as 'order_ID/LI_ID'
-    $1 and push @po_nums, $1;
-    $val_1082 =~ s#^(.*)\/##;   # Many sources send the ID as 'order_ID/LI_ID'
-    $1 and push @po_nums, $1;
-
-    # TODO: possible check of po_nums
-    # now do a lot of checking
-
-    if ($val_1153 eq 'LI') {
-        $id = $val_1154 or $logger->warn("EDI ORDRSP RFF/1154 reference to LI empty.  Attempting failover to LIN/1082");
-    } else {
-        $logger->warn("EDI ORDRSP RFF/1153 unexpected value ('$val_1153', not 'LI').  Attempting failover to LIN/1082");
-    }
-
-    # FIXME - the line item ID in LIN/1082 ought to match RFF/1154, but
-    # not all materials vendors obey this.  Commenting out check for now
-    # as being too strict.
-    #if ($id and $val_1082 and $val_1082 ne $id) {
-    #    $logger->warn("EDI ORDRSP LIN/1082 Line Item ID mismatch ($id vs. $val_1082): cannot target update");
-    #    return;
-    #}
-
-    $id ||= $val_1082 || '';
-    if ($id eq '') {
-        $logger->warn('Cannot identify line item from EDI message');
-        return;
-    }
-
-    $logger->info("EDI retrieve/update lineitem $id");
-
-    my $li = OpenILS::Application::Acq::Lineitem::retrieve_lineitem_impl($e, $id, {
-        flesh_li_details => 1,
-    }, 1); # Could send more {options}.  The 1 is for no_auth.
-
-    if (! $li or ref($li) ne 'Fieldmapper::acq::lineitem') {
-        $logger->error("EDI failed to retrieve lineitem by id '$id' for server $server_log_string");
-        return;
-    }
-    unless ((! $server) or (! $server->provider)) {     # but here we want $server to be acq.edi_account instead of RemoteAccount
-        if ($server->provider != $li->provider) {
-            # links go both ways: acq.provider.edi_default and acq.edi_account.provider
-            $logger->info("EDI acct provider (" . $server->provider. ") doesn't match lineitem provider("
-                            . $li->provider . ").  Checking acq.provider.edi_default...");
-            my $provider = $e->retrieve_acq_provider($li->provider);
-            if ($provider->edi_default != $server->id) {
-                $logger->error(sprintf "EDI provider/acct %s/%s (%s) is blocked from updating lineitem $id belonging to provider/edi_default %s/%s",
-                                $server->provider, $server->id, $server->label, $li->provider, $provider->edi_default);
-                return;
-            }
-        }
-    }
-    
-    my @lin_1229 = $line->xpath('LIN/1229') or $logger->warn("EDI LIN/1229 Action Code missing!");
-    my $key = $lin_1229[0] or return;
-
-    my $eg_reason = $e->retrieve_acq_cancel_reason(1000 + $key->value);  # DB populated w/ spec keys in 1000's
-    $eg_reason or $logger->warn(sprintf "EDI LIN/1229 Action Code '%s' (%s) not recognized in acq.cancel_reason", $key->value, $key->label);
-    $eg_reason or return;
-
-    $li->cancel_reason($eg_reason->id);
-    unless ($eg_reason->keep_debits) {
-        $logger->warn("EDI LIN/1229 Action Code '%s' (%s) has keep_debits=0", $key->value, $key->label);
-    }
-
-    my @prices = $line->xpath_value("line_price/PRI/5118");
-    $li->estimated_unit_price($prices[0]) if @prices;
-
-    return $li;
-}
-
-# caching not needed for now (edi_fetcher is asynchronous)
-# sub get_reason {
-#     my ($class, $key, $e) = @_;
-#     $reasons->{$key} and return $reasons->{$key};
-#     $e ||= new_editor();
-#     $reasons->{$key} = $e->retrieve_acq_cancel_reason($key);
-#     return $reasons->{$key};
-# }
-
 1;
 
-__END__
-
-Example JSON data.
-
-Note the pseudo-hash 2-element arrays.  
-
-[
-  'SG26',
-  [
-    [
-      'LIN',
-      {
-        '1229' => '5',
-        '1082' => 1,
-        'C212' => {
-          '7140' => '9780446360272',
-          '7143' => 'EN'
-        }
-      }
-    ],
-    [
-      'IMD',
-      {
-        '7081' => 'BST',
-        '7077' => 'F',
-        'C273' => {
-          '7008' => [
-            'NOT APPLIC WEBSTERS NEW WORLD THESA'
-          ]
-        }
-      }
-    ],
-    [
-      'QTY',
-      {
-        'C186' => {
-          '6063' => '21',
-          '6060' => 10
-        }
-      }
-    ],
-    [
-      'QTY',
-      {
-        'C186' => {
-          '6063' => '12',
-          '6060' => 10
-        }
-      }
-    ],
-    [
-      'QTY',
-      {
-        'C186' => {
-          '6063' => '85',
-          '6060' => 0
-        }
-      }
-    ],
-    [
-      'FTX',
-      {
-        '4451' => 'LIN',
-        'C107' => {
-          '4441' => '01',
-          '3055' => '28',
-          '1131' => '8B'
-        }
-      }
-    ],
-    [
-      'SG30',
-      [
-        [
-          'PRI',
-          {
-            'C509' => {
-              '5118' => '4.5',
-              '5387' => 'SRP',
-              '5125' => 'AAB'
-            }
-          }
-        ]
-      ]
-    ],
-    [
-      'SG31',
-      [
-        [
-          'RFF',
-          {
-            'C506' => {
-              '1154' => '8/1',
-              '1153' => 'LI'
-            }
-          }
-        ]
-      ]
-    ]
-  ]
-],
-