[open-ils-commits] r17693 - in branches/rel_2_0/Open-ILS: examples/apache src/edi_translator src/perlmods/OpenILS/Application/Acq src/perlmods/OpenILS/Application/Trigger/Validator/Acq src/perlmods/OpenILS/Utils src/support-scripts src/support-scripts/test-scripts tests/datasets tests/datasets/edi_scratch web/templates/default/conify/global/acq (gmc)

svn at svn.open-ils.org svn at svn.open-ils.org
Wed Sep 15 09:27:23 EDT 2010


Author: gmc
Date: 2010-09-15 09:27:21 -0400 (Wed, 15 Sep 2010)
New Revision: 17693

Added:
   branches/rel_2_0/Open-ILS/tests/datasets/edi_scratch/
Removed:
   branches/rel_2_0/Open-ILS/src/support-scripts/test-scripts/edi_object.pl
   branches/rel_2_0/Open-ILS/src/support-scripts/test-scripts/ordrsp_parse.pl
Modified:
   branches/rel_2_0/Open-ILS/examples/apache/eg_vhost.conf
   branches/rel_2_0/Open-ILS/src/edi_translator/README
   branches/rel_2_0/Open-ILS/src/edi_translator/test_client.pl
   branches/rel_2_0/Open-ILS/src/perlmods/OpenILS/Application/Acq/EDI.pm
   branches/rel_2_0/Open-ILS/src/perlmods/OpenILS/Application/Acq/Lineitem.pm
   branches/rel_2_0/Open-ILS/src/perlmods/OpenILS/Application/Acq/Order.pm
   branches/rel_2_0/Open-ILS/src/perlmods/OpenILS/Application/Trigger/Validator/Acq/PurchaseOrderEDIRequired.pm
   branches/rel_2_0/Open-ILS/src/perlmods/OpenILS/Utils/Cronscript.pm
   branches/rel_2_0/Open-ILS/src/perlmods/OpenILS/Utils/RemoteAccount.pm
   branches/rel_2_0/Open-ILS/src/support-scripts/edi_fetcher.pl
   branches/rel_2_0/Open-ILS/src/support-scripts/edi_pusher.pl
   branches/rel_2_0/Open-ILS/src/support-scripts/test-scripts/ftp_ls.pl
   branches/rel_2_0/Open-ILS/web/templates/default/conify/global/acq/edi_account.tt2
Log:
backport EDI changes from trunk (r17669:17690,r17692)

EDI work done by Joe Atzberger; highlights of the enhancements are:

* ORDRSP processing improvements
* overhaul of edi_fetcher
* EDI test files
* Beginning of modperl EDI message viewer 

Signed-off-by: Galen Charlton <gmc at esilibrary.com>


Modified: branches/rel_2_0/Open-ILS/examples/apache/eg_vhost.conf
===================================================================
--- branches/rel_2_0/Open-ILS/examples/apache/eg_vhost.conf	2010-09-15 13:13:32 UTC (rev 17692)
+++ branches/rel_2_0/Open-ILS/examples/apache/eg_vhost.conf	2010-09-15 13:27:21 UTC (rev 17693)
@@ -27,7 +27,7 @@
 # ----------------------------------------------------------------------------------
 # Assign a default locale to the accessible OPAC
 # ----------------------------------------------------------------------------------
-RedirectMatch 301 ^/opac/extras/slimpac/start.html$ /opac/en-US/extras/slimpac/start.html
+RedirectMatch 301 ^/opac/extras/slimpac/start.html$    /opac/en-US/extras/slimpac/start.html
 RedirectMatch 301 ^/opac/extras/slimpac/advanced.html$ /opac/en-US/extras/slimpac/advanced.html
 
 # ----------------------------------------------------------------------------------
@@ -442,6 +442,17 @@
 </LocationMatch>
 
 # ----------------------------------------------------------------------------------
+# EDI Message viewer
+# ----------------------------------------------------------------------------------
+<Location /edi>
+    SetHandler perl-script
+    PerlHandler OpenILS::WWW::EDI
+    Options +ExecCGI
+    PerlSendHeader On
+    allow from all
+</Location> 	
+
+# ----------------------------------------------------------------------------------
 # XML-RPC gateway
 # ----------------------------------------------------------------------------------
 <Location /xml-rpc>

Modified: branches/rel_2_0/Open-ILS/src/edi_translator/README
===================================================================
--- branches/rel_2_0/Open-ILS/src/edi_translator/README	2010-09-15 13:13:32 UTC (rev 17692)
+++ branches/rel_2_0/Open-ILS/src/edi_translator/README	2010-09-15 13:27:21 UTC (rev 17693)
@@ -26,7 +26,7 @@
 There is no such thing (yet?) as "push" from a vendor of their EDI responses.  Basically
 they just put responses in an FTP directory somewhere that you are expected to check.  It
 would be cool if there were a better way to do that like consuming some RSS feed or 
-remote API callbacks.  
+remote API callbacks.  Similarly, nobody seems willing to utilize interactive EDI.  
 
 Evergreen will only support one delivery address per PO.  That limitation is based
 on the mapping to the delivery address via the ordering_agency org_unit.  If items
@@ -36,10 +36,5 @@
 on SAN, add a new one on SAN + profile_code.  Profile code then goes in the template.
 The template logic could get rather complex to support all the optional data elements.
 
-mbklein says:
-'order' mapper won't work for EDIFACT versions later than D.96A, because of a change
-to the structure of the BGM segment.  But as long as all the supported vendors will
-accept a D.96A ORDERS (which I think they do), that's not a problem.
-
 SEE ALSO:
     http://github.com/mbklein/openils-mapper

Modified: branches/rel_2_0/Open-ILS/src/edi_translator/test_client.pl
===================================================================
--- branches/rel_2_0/Open-ILS/src/edi_translator/test_client.pl	2010-09-15 13:13:32 UTC (rev 17692)
+++ branches/rel_2_0/Open-ILS/src/edi_translator/test_client.pl	2010-09-15 13:27:21 UTC (rev 17693)
@@ -6,9 +6,11 @@
 
 use Getopt::Long;
 use RPC::XML::Client;
+use JSON::XS;
 use Data::Dumper;
 
 # DEFAULTS
+$Data::Dumper::Indent = 1;
 my $host = 'http://localhost';
 my $verbose = 0;
 
@@ -23,7 +25,7 @@
 $host .= '/EDI';
 
 sub get_in {
-    print "Getting " . (shift) . " from input\n";
+    print STDERR "Getting " . (shift) . " from input\n";
     my $json = join("", <STDIN>);
     $json or return;
     print $json, "\n";
@@ -39,49 +41,86 @@
     return substr($string,0,$head) . " ...\n... " . substr($string, -1*$tail);
 }
 
+sub JSONObject2Perl {
+    my $obj = shift;
+    if ( ref $obj eq 'HASH' ) { # is a hash w/o class marker; simply revivify innards
+        for my $k (keys %$obj) {
+            $obj->{$k} = JSONObject2Perl($obj->{$k}) unless ref $obj->{$k} eq 'JSON::XS::Boolean';
+        }
+    } elsif ( ref $obj eq 'ARRAY' ) {
+        for my $i (0..scalar(@$obj) - 1) {
+            $obj->[$i] = JSONObject2Perl($obj->[$i]) unless ref $obj->[$i] eq 'JSON::XS::Boolean';
+        }
+    }
+    # ELSE: return vivified non-class hashes, all arrays, and anything that isn't a hash or array ref
+    return $obj;
+}
+
 # MAIN
 print "Trying host: $host\n";
 
+my $parser;
+
 my $client = new RPC::XML::Client($host);
 $client->request->header('Content-Type' => 'text/xml;charset=utf-8');
-print "User-agent: ", Dumper($client->useragent);
-print "Request: ", Dumper($client->request);
-print "Headers: \n";
-foreach ($client->request->header_field_names) {
-    print "\t$_ =>", $client->request->header($_), "\n";
+
+if ($verbose) {
+    print "User-agent: ", Dumper($client->useragent);
+    print "Request: ", Dumper($client->request);
+    print "Headers: \n";
+    foreach ($client->request->header_field_names) {
+        print "\t$_ =>", $client->request->header($_), "\n";
+    }
 }
 
 my @commands = @ARGV ? @ARGV : 'system.listMethods';
-if ($commands[0] eq 'json2edi' or $commands[0] eq 'edi2json') {
+my $command  = lc $commands[0];
+if ($command eq 'json2edi' or $command eq 'edi2json' or $command eq 'edi2perl') {
     shift;
-    @commands > 1 and print "Ignoring commands after $commands[0]\n";
+    @commands > 1 and print STDERR "Ignoring commands after $command\n";
     my $string;
-    my $type = $commands[0] eq 'json2edi' ? 'JSON' : 'EDI';
+    my $type = $command eq 'json2edi' ? 'JSON' : 'EDI';
     while ($string = get_in($type)) {  # assignment
-        if ($commands[0] ne 'json2edi') {
-            $string =~ s/ORDRSP:0(:...:UN::)/ORDRSP:D$1/ and print "Corrected broken data 'ORDRSP:0' ==> 'ORDRSP:D'\n";
+        my $resp;
+        if ($command eq 'json2edi') {
+            $resp = $client->send_request('json2edi', $string);
+            print "# $command Response: \n", Dumper($resp);
+        } else {
+            $string =~ s/ORDRSP:0(:...:UN::)/ORDRSP:D$1/ and print STDERR "Corrected broken data 'ORDRSP:0' ==> 'ORDRSP:D'\n";
+            $resp = $client->send_request('edi2json', $string);
         }
-        my $resp = $commands[0] eq 'json2edi' ?
-                   $client->send_request('json2edi', $string) :
-                   $client->send_request('edi2json', $string) ;
-        print "Response: ", Dumper($resp);
-        $resp or next;
+        unless ($resp) {
+            warn "Response does not have a payload value!";
+            next;
+        }
         if ($resp->is_fault) {
             print "\n\nERROR code ", $resp->code, " received:\n", nice_string($resp->string) . "\n...\n";
             next;
         }
+        if ($command ne 'json2edi') {   # like the else of the first conditional
+            $parser ||= JSON::XS->new()->pretty(1)->ascii(1)->allow_nonref(1)->space_before(0);    # get it once
+            $verbose and print Dumper($resp);
+            my $parsed = $parser->decode($resp->value) or warn "Failed to decode response payload value";
+            my $perl   = JSONObject2Perl($parsed)      or warn "Failed to decode and create perl object from JSON";
+            if ($perl) {
+                print STDERR "\n########## We were able to decode and perl-ify the JSON\n";
+            } else {
+                print STDERR "\n########## ERROR: Failed to decode and perl-ify the JSON\n";
+            }
+            print "# $command Response: \n", $command eq 'edi2perl' ? Dumper($perl) : $parser->encode($parsed);
+        }
     }
     exit;
 } 
 
-print "Sending request: \n    ", join("\n    ", @commands), "\n\n";
+print STDERR "Sending request: \n    ", join("\n    ", @commands), "\n\n";
 my $resp = $client->send_request(@commands);
 
 print Dumper($resp);
 exit;
 
 if (ref $resp) {
-    print "Return is " . ref($resp), "\n";
+    print STDERR "Return is " . ref($resp), "\n";
     # print "Code: ", ($resp->{code}->as_string || 'UNKNOWN'), "\n";
     foreach (@$resp) {
         print Dumper ($_), "\n";
@@ -95,10 +134,11 @@
         print "\n";
     }
 } else {
-    print "ERROR: unrecognized response:\n\n", Dumper($resp), "\n";
+    print STDERR "ERROR: unrecognized response:\n\n", Dumper($resp), "\n";
 }
 $verbose and print Dumper($resp);
 $verbose and print "\nKEYS (level 1):\n",
     map {sprintf "%12s: %s\n", $_, scalar $resp->{$_}->value} sort keys %$resp;
 
 # print "spooled_filename: ", $resp->{spooled_filename}->value, "\n";
+

Modified: branches/rel_2_0/Open-ILS/src/perlmods/OpenILS/Application/Acq/EDI.pm
===================================================================
--- branches/rel_2_0/Open-ILS/src/perlmods/OpenILS/Application/Acq/EDI.pm	2010-09-15 13:13:32 UTC (rev 17692)
+++ branches/rel_2_0/Open-ILS/src/perlmods/OpenILS/Application/Acq/EDI.pm	2010-09-15 13:27:21 UTC (rev 17693)
@@ -17,7 +17,6 @@
 use OpenILS::Application::Acq::EDI::Translator;
 
 use Business::EDI;
-use Business::EDI::Segment::BGM;
 
 use Data::Dumper;
 our $verbose = 0;
@@ -29,6 +28,8 @@
     return $self;
 }
 
+# our $reasons = {};   # cache for acq.cancel_reason rows ?
+
 our $translator;
 
 sub translator {
@@ -79,7 +80,7 @@
 );
 
 sub retrieve_core {
-    my ($self, $e, $set, $max) = @_;    # $e is a working editor
+    my ($self, $set, $max, $e, $test) = @_;    # $e is a working editor
 
     $e   ||= new_editor();
     $set ||= __PACKAGE__->retrieve_vendors($e);
@@ -91,31 +92,59 @@
         my $server;
         $logger->info("EDI check for vendor " . ++$vcount . " of " . scalar(@$set) . ": " . $account->host);
         unless ($server = __PACKAGE__->remote_account($account)) {   # assignment, not comparison
-            $logger->err(sprintf "Failed remote account connection for %s (%s)", $account->host, $account->id);
+            $logger->err(sprintf "Failed remote account mapping for %s (%s)", $account->host, $account->id);
             next;
         };
-        my @files    = $server->ls({remote_file => ($account->in_dir || '.')});
-        my @ok_files = grep {$_ !~ /\/\.?\.$/ } @files;
-        $logger->info(sprintf "%s of %s files at %s/%s", scalar(@ok_files), scalar(@files), $account->host, ($account->in_dir || ''));   
-        foreach (@ok_files) {
+#       my $rf_starter = './';  # default to current dir
+        if ($account->in_dir) { 
+            if ($account->in_dir =~ /\*+.*\//) {
+                $logger->err("EDI in_dir has a slash after an asterisk in value: '" . $account->in_dir . "'.  Skipping account with indeterminate target dir!");
+                next;
+            }
+#           $rf_starter = $account->in_dir;
+#           $rf_starter =~ s/((\/)?[^\/]*)\*+[^\/]*$//;  # kill up to the first (possible) slash before the asterisk: keep the preceeding static dir
+#           $rf_starter .= '/' if $rf_starter or $2;   # recap the dir, or replace leading "/" if there was one (but don't add if empty)
+        }
+        my @files    = ($server->ls({remote_file => ($account->in_dir || './')}));
+        my @ok_files = grep {$_ !~ /\/\.?\.$/ and $_ ne '0'} @files;
+        $logger->info(sprintf "%s of %s files at %s/%s", scalar(@ok_files), scalar(@files), $account->host, $account->in_dir);   
+        # $server->remote_path(undef);
+        foreach my $remote_file (@ok_files) {
+            # my $remote_file = $rf_starter . $_;
+            my $description = sprintf "%s/%s", $account->host, $remote_file;
+            
+            # deduplicate vs. acct/filenames already in DB
+            my $hits = $e->search_acq_edi_message([
+                {
+                    account     => $account->id,
+                    remote_file => $remote_file,
+                    status      => {'in' => [qw/ processed /]},     # if it never got processed, go ahead and get the new one (try again)
+                    # create_time => 'NOW() - 60 DAYS',     # if we wanted to allow filenames to be reused after a certain time
+                    # ideally we would also use the date from FTP, but that info isn't available via RemoteAccount
+                }
+                # { flesh => 1, flesh_fields => {...}, }
+            ]);
+            if (scalar(@$hits)) {
+                $logger->debug("EDI: $remote_file already retrieved.  Skipping");
+                warn "EDI: $remote_file already retrieved.  Skipping";
+                next;
+            }
+
             ++$count;
             $max and $count > $max and last;
+            $logger->info(sprintf "%s of %s targets: %s", $count, scalar(@ok_files), $description);
+            print sprintf "%s of %s targets: %s\n", $count, scalar(@ok_files), $description;
+            if ($test) {
+                push @return, "test_$count";
+                next;
+            }
             my $content;
             my $io = IO::Scalar->new(\$content);
-            unless ($server->get({remote_file => $_, local_file => $io})) {
-                $logger->error("(S)FTP get($_) failed");
+            unless ( $server->get({remote_file => $remote_file, local_file => $io}) ) {
+                $logger->error("(S)FTP get($description) failed");
                 next;
             }
-            my $incoming = Fieldmapper::acq::edi_message->new;
-            $incoming->remote_file($_);
-            $incoming->edi($content);
-            $incoming->account($account->id);
-             __PACKAGE__->attempt_translation($incoming);
-            $e->xact_begin;
-            $e->create_acq_edi_message($incoming);
-            $e->xact_commit;
-            __PACKAGE__->record_activity($account, $e);
-            __PACKAGE__->process_jedi($incoming, $server, $e);
+            my $incoming = __PACKAGE__->process_retrieval($content, $remote_file, $server, $account->id, $e);
 #           $server->delete(remote_file => $_);   # delete remote copies of saved message
             push @return, $incoming->id;
         }
@@ -123,6 +152,40 @@
     return \@return;
 }
 
+# my $in = OpenILS::Application::Acq::EDI->process_retrieval($file_content, $remote_filename, $server, $account_id, $editor);
+
+sub process_retrieval {
+    my $incoming = Fieldmapper::acq::edi_message->new;
+    my ($class, $content, $remote, $server, $account_or_id, $e) = @_;
+    $content or return;
+    $e ||= new_editor;
+
+    my $account = __PACKAGE__->record_activity( $account_or_id, $e );
+
+    my $z;  # must predeclare
+    $z = ( $content =~ s/('UNH\+\d+\+ORDRSP:)0(:96A:UN')/$1D$2/g )
+        and $logger->warn("Patching bogus spec reference ORDRSP:0:96A:UN => ORDRSP:D:96A:UN ($z times)");  # Hack/fix some faulty "0" in (B&T) data
+
+    $incoming->remote_file($remote);
+    $incoming->account($account->id);
+    $incoming->edi($content);
+    $incoming->message_type(($content =~ /'UNH\+\d+\+(\S{6}):/) ? $1 : 'ORDRSP');   # cheap sniffing, ORDRSP fallback
+    __PACKAGE__->attempt_translation($incoming);
+    $e->xact_begin;
+    $e->create_acq_edi_message($incoming);
+    $e->xact_commit;
+    # refresh: send process_jedi the updated row
+    my $res = __PACKAGE__->process_jedi($e->retrieve_acq_edi_message($incoming->id), $server, $account, $e);
+    my $outgoing = $e->retrieve_acq_edi_message($incoming->id);  # refresh again!
+    $outgoing->status($res ? 'processed' : 'proc_error');
+    if ($res) {
+        $e->xact_begin;
+        $e->update_acq_edi_message($outgoing);
+        $e->xact_commit;
+    }
+    return $outgoing;
+}
+
 # ->send_core
 # $account     is a Fieldmapper object for acq.edi_account row
 # $messageset  is an arrayref with acq.edi_message.id values
@@ -217,7 +280,7 @@
     $e ||= new_editor();
 
     my $criteria = {'+acqpro' => {active => 't'}};
-    # $criteria->{vendor_id} = $vendor_id if $vendor_id;
+    $criteria->{'+acqpro'}->{id} = $vendor_id if $vendor_id;
     return $e->search_acq_edi_account([
         $criteria, {
             'join' => 'acqpro',
@@ -267,7 +330,7 @@
     ($host =~ s/^(S?FTP)://i    and $args{type} = uc($1)) or
     ($host =~ s/^(SSH|SCP)://i  and $args{type} = 'SCP' ) ;
      $host =~ s/:(\d+)$//       and $args{port} = $1;
-     ($args{remote_host} = $host) =~ s#/+##;
+    ($args{remote_host} = $host) =~ s#/+##;
     $verbose and $logger->warn("field_map: " . Dumper(\%args));
     return %args;
 }
@@ -291,10 +354,13 @@
     );
 }
 
+# takes account ID or account Fieldmapper object
+
 sub record_activity {
-    my ($class, $account, $e) = @_;
-    $account or return;
+    my ($class, $account_or_id, $e) = @_;
+    $account_or_id or return;
     $e ||= new_editor();
+    my $account = ref($account_or_id) ? $account_or_id : $e->retrieve_acq_edi_account($account_or_id);
     $logger->info("EDI record_activity calling update_acq_edi_account");
     $account->last_activity('NOW') or return;
     $e->xact_begin;
@@ -329,34 +395,43 @@
     return $msg;
 }
 
-# ->process_jedi($message, $server, $e)
+our @datecodes = (35, 359, 17, 191, 69, 76, 75, 79, 85, 74, 84, 223);
+our @noop_6063 = (21);
+
+# ->process_jedi($message, $server, $remote, $e)
+# $message is an edi_message object
+#
 sub process_jedi {
-    my $class    = shift;
-    my $message  = shift or return;
-    my $server   = shift || {};  # context
-    my $jedi     = ref($message) ? $message->jedi : $message;  # If we got an object, it's an edi_message.  A string is the jedi content itself.
-    unless ($jedi) {
-        $logger->warn("EDI process_jedi missing required argument (edi_message object with jedi or jedi scalar)!");
+    my ($class, $message, $server, $remote, $e) = @_;
+    $message or return;
+    $server ||= {};  # context
+    $remote ||= {};  # context
+    $e ||= new_editor;
+    my $jedi;
+    unless (ref($message) and $jedi = $message->jedi) {     # assignment, not comparison
+        $logger->warn("EDI process_jedi missing required argument (edi_message object with jedi)!");
         return;
     }
-    my $e = @_ ? shift : new_editor();
-    my $perl = __PACKAGE__->jedi2perl($jedi);
+    my $perl  = __PACKAGE__->jedi2perl($jedi);
+    my $error = '';
     if (ref($message) and not $perl) {
-        $message->error(($message->error || '') . " JSON2perl (jedi2perl) FAILED to convert jedi");
+        $error = ($message->error || '') . " JSON2perl (jedi2perl) FAILED to convert jedi";
+    }
+    elsif (! $perl->{body}) {
+        $error = "EDI interchange body not found!";
+    } 
+    elsif (! $perl->{body}->[0]) {
+        $error = "EDI interchange body not a populated arrayref!";
+    }
+    if ($error) {
+        $logger->warn($error);
+        $message->error($error);
         $message->error_time('NOW');
         $e->xact_begin;
-        $e->udpate_acq_edi_message($message) or $logger->warn("EDI update_acq_edi_message failed! $!");
+        $e->update_acq_edi_message($message) or $logger->warn("EDI update_acq_edi_message failed! $!");
         $e->xact_commit;
         return;
     }
-    if (! $perl->{body}) {
-        $logger->warn("EDI interchange body not found!");
-        return;
-    } 
-    if (! $perl->{body}->[0]) {
-        $logger->warn("EDI interchange body not a populated arrayref!");
-        return;
-    }
 
 # Crazy data structure.  Most of the arrays will be 1 element... we think.
 # JEDI looks like:
@@ -365,8 +440,9 @@
 # So you might access it like:
 #   $obj->{body}->[0]->{ORDERS}->[0]->[0] eq 'UNH'
 
-    $logger->info("EDI interchange body has " . scalar(@{$perl->{body}}) . " messages(s)");
-    my @li;
+    $logger->info("EDI interchange body has " . scalar(@{$perl->{body}}) . " message(s)");
+    my @ok_msg_codes = qw/ORDRSP OSTRPT/;
+    my @messages;
     my $i = 0;
     foreach my $part (@{$perl->{body}}) {
         $i++;
@@ -375,96 +451,169 @@
             next;
         }
         foreach my $key (keys %$part) {
-            unless ($key eq 'ORDRSP') {     # We only do one type for now.  TODO: other types here
-                $logger->warn("EDI interchange message $i contains unhandled type '$key'.  Ignoring.");
+            if (! grep {$_ eq $key} @ok_msg_codes) {     # We only do one type for now.  TODO: other types here
+                $logger->warn("EDI interchange $i contains unhandled '$key' message.  Ignoring it.");
                 next;
             }
-            my @li_chunk = __PACKAGE__->parse_ordrsp($part->{$key}, $server, $e);
-            $logger->info("EDI $key parsing returned " . scalar(@li_chunk) . " line items");
-            push @li, @li_chunk;
-        }
-    }
-    return \@li, $perl;   # TODO process perl
-}
+            my $msg = __PACKAGE__->message_object($part->{$key}) or next;
+            push @messages, $msg;
 
+            my $bgm = $msg->xpath('BGM') or $logger->warn("EDI No BGM segment found?!");
+            my $tag4343 = $msg->xpath('BGM/4343');
+            my $tag1225 = $msg->xpath('BGM/1225');
+            if (ref $tag4343) {
+                $logger->info(sprintf "EDI $key BGM/4343 Response Type: %s - %s", $tag4343->value, $tag4343->label)
+            } else {
+                $logger->warn("EDI $key BGM/4343 Response Type Code unrecognized"); # next; #?
+            }
+            if (ref $tag1225) {
+                $logger->info(sprintf "EDI $key BGM/1225 Message Function: %s - %s", $tag1225->value, $tag1225->label);
+            } else {
+                $logger->warn("EDI $key BGM/1225 Message Function Code unrecognized"); # next; #?
+            }
 
-=head2 ->parse_ordrsp($segments, $server, $e)
+            # TODO: currency check, just to be paranoid
+            # *should* be unnecessary (vendor should reply in currency we send in ORDERS)
+            # That begs a policy question: how to handle mismatch?  convert (bad accuracy), reject, or ignore?  I say ignore.
 
-Returns array of lineitems.
+            # ALL those codes below are basically some form of (lastest) delivery date/time
+            # see, e.g.: http://www.stylusstudio.com/edifact/D04B/2005.htm
+            # The order is the order of definitiveness (first match wins)
+            # Note: if/when we do serials via EDI, dates (and ranges/periods) will need massive special handling
+            my @dates;
+            my $ddate;
 
-=cut
-
-# TODO: Build Business::EDI::Message::ORDRSP object instead
-# TODO: Convert access to methods, not reaching inside the data/object like $segbody->{S009}->{'0065'}
-
-sub parse_ordrsp {
-    my ($class, $segments, $server, $e, $test) = @_;    # test not implemented
-    $e ||= new_editor();
-    my $type = 'ORDRSP';
-    $logger->info("EDI " . scalar(@$segments) . " segments in $type message");
-    my (@lins, $bgm);
-    foreach my $segment (@$segments) {  # Prepass: catch the conditions that might cause us to bail
-        my ($tag, $segbody, @extra) = @$segment;
-        unless ($tag    ) {$logger->warn("EDI empty segment received"     ); next;}
-        unless ($segbody) {$logger->warn("EDI segment '$tag' missing body"); next;}
-        @extra and $logger->warn("EDI extra data (" . scalar(@extra) . " elements) found after pseudohash pair for $tag");
-        if ($tag eq 'UNH') {
-            unless ($segbody->{S009}->{'0065'} and $segbody->{S009}->{'0065'} eq $type) {
-                $logger->error("EDI $tag/S009/0065 ('" . ($segbody->{S009}->{'0065'} || '') . "') conflict w/ message type $type\.  Aborting");
-                return;
+            foreach my $date ($msg->xpath('delivery_schedule')) {
+                my $val_2005 = $date->xpath_value('DTM/2005') or next;
+                (grep {$val_2005 eq $_} @datecodes) or next; # no match means some other kind of date we don't care about
+                push @dates, $date;
             }
-            unless ($segbody->{S009}->{'0051'} and $segbody->{S009}->{'0051'} eq 'UN') {
-                $logger->warn("EDI $tag/S009/0051 does not designate 'UN' as controlling agency.  Will attempt to process anyway");
+            if (@dates) {
+                DATECODE: foreach my $dcode (@datecodes) {   # now cycle back through hits in order of dcode definitiveness
+                    foreach my $date (@dates) {
+                        $date->xpath_value('DTM/2005') == $dcode or next;
+                        $ddate = $date->xpath_value('DTM/2380') and last DATECODE;
+                        # TODO: conversion based on format specified in DTM/2379 (best encapsulated in Business::EDI)
+                    }
+                }
             }
-        } elsif ($tag eq 'BGM') {
-            $bgm = Business::EDI::Segment::BGM->new($segbody);
-            $bgm->seg4343 or $logger->warn(sprintf "EDI $tag/4343 Response Type Code '%s' unrecognized", ($segbody->{4343} || ''));
-            $logger->info(sprintf "EDI $tag/4343 response type: %s - %s (%s)", $bgm->seg4343->value, $bgm->seg4343->label, $bgm->seg4343->desc);
-            my $fcn = $bgm->seg1225;
-            unless ($fcn) {
-                $logger->error(sprintf "EDI $tag/1225 Message Function Code '%s' unrecognized.  Aborting", ($segbody->{1225} || ''));
-                return;
-            }
-        }
-    }
-    my @ignored;
-    foreach my $segment (@$segments) {  # The main pass
-        my ($tag, $segbody, @extra) = @$segment;
-        next unless ($tag and $segbody);    # warnings above
-        if ($tag eq 'LIN') {
-            my @chunks = @{$segbody->{SG26}};
-            my $count = scalar(@chunks);
-            $logger->debug("EDI LIN/SG26 has $count chunks");
-# CHUNK:
-# ["RFF", {
-#   "C506": {
-#      "1153": "LI",
-#      "1154": "4639/1"
-#   }
-# }]
-            foreach (@chunks) {
-                my $label = $_->[0];
-                my $body  = $_->[1];
-                # $label eq 'QTY' and push @qtys, $body;
-                $label eq 'RFF' or next;
-                my $obj;
-                unless ($obj = Business::EDI::Segment::RFF->new($body)) {   # assignment, not comparison
-                    $logger->error("EDI $tag/$label failed to convert to an object");
+            foreach my $detail ($msg->part('line_detail')) {
+                my $eg_line = __PACKAGE__->eg_li($detail, $remote, $server->{remote_host}, $e) or next;
+                my $li_date = $detail->xpath_value('DTM/2380') || $ddate;
+                my $price   = $detail->xpath_value('line_price/PRI/5118') || '';
+                $eg_line->expected_recv_time($li_date) if $li_date;
+                $eg_line->estimated_unit_price($price) if $price;
+                if (not $message->purchase_order) {                     # first good lineitem sets the message PO link
+                    $message->purchase_order($eg_line->purchase_order); # EG $message object NOT Business::EDI $msg object
+                    $e->xact_begin;
+                    $e->update_acq_edi_message($message) or $logger->warn("EDI update_acq_edi_message (for PO number) failed! $!");
+                    $e->xact_commit;
                 }
-                $obj->seg1153 and $obj->seg1153->value eq 'LI' or $logger->warn("EDI $tag/$label object unexpected 1153 value (not 'LI')");
-                __PACKAGE__->update_li($obj->seg1154->value, $segbody, $server, $e);
+                # $e->search_acq_edi_account([]);
+                my $touches = 0;
+                my $eg_lids = $e->search_acq_lineitem_detail({lineitem => $eg_line->id}); # should be the same as $eg_line->lineitem_details
+                my $lidcount = scalar(@$eg_lids);
+                $lidcount == $eg_line->item_count or $logger->warn(
+                    sprintf "EDI: LI %s itemcount (%d) mismatch, %d LIDs found", $eg_line->id, $eg_line->item_count, $lidcount
+                );
+                foreach my $qty ($detail->part('all_QTY')) {
+                    my $ubound   = $qty->xpath_value('6060') or next;   # nothing to do if qty is 0
+                    my $val_6063 = $qty->xpath_value('6063');
+                    $ubound > 0 or next; # don't be crazy!
+                    if (! $val_6063) {
+                        $logger->warn("EDI: Response for LI " . $eg_line->id . " specifies quantity $ubound with no 6063 code! Contact vendor to resolve.");
+                        next;
+                    }
+                    
+                    my $eg_reason = $e->retrieve_acq_cancel_reason(1200 + $val_6063);  # DB populated w/ 6063 keys in 1200's
+                    if (! $eg_reason) {
+                        $logger->warn("EDI: Unhandled quantity code '$val_6063' (LI " . $eg_line->id . ") $ubound items unprocessed");
+                        next;
+                    } elsif (grep {$val_6063 == $_} @noop_6063) {      # an FYI like "ordered quantity"
+                        $ubound eq $lidcount
+                            or $logger->warn("EDI: LI " . $eg_line->id . " -- Vendor says we ordered $ubound, but we have $lidcount LIDs!)");
+                        next;
+                    }
+                    # elsif ($val_6063 == 83) { # backorder
+                   #} elsif ($val_6063 == 85) { # cancel
+                   #} elsif ($val_6063 == 12 or $val_6063 == 57 or $val_6063 == 84 or $val_6063 == 118) {
+                            # despatched, in transit, urgent delivery, or quantity manifested
+                   #}
+                    if ($touches >= $lidcount) {
+                        $logger->warn("EDI: LI "  . $eg_line->id . ", We already updated $touches of $lidcount LIDS, " .
+                                      "but message wants QTY $ubound more set to " . $eg_reason->label . ".  Ignoring!");
+                        next;
+                    }
+                    $e->xact_begin;
+                    foreach (1 .. $ubound) {
+                        my $eg_lid = shift @$eg_lids or $logger->warn("EDI: Used up all $lidcount LIDs!  Ignoring extra status " . $eg_reason->label);
+                        $eg_lid or next;
+                        $logger->debug(sprintf "Updating LID %s to %s", $eg_lid->id, $eg_reason->label);
+                        $eg_lid->cancel_reason($eg_reason->id);
+                        $e->update_acq_lineitem_detail($eg_lid);
+                        $touches++;
+                    }
+                    $e->xact_commit;
+                    if ($ubound == $eg_line->item_count) {
+                        $eg_line->cancel_reason($eg_reason->id);    # if ALL the items have the same cancel_reason, the PO gets it too
+                    }
+                }
+                $eg_line->edit_time('NOW'); # TODO: have this field automatically updated via ON UPDATE trigger.  
+                $e->xact_begin;
+                $e->update_acq_lineitem($eg_line) or $logger->warn("EDI: update_acq_lineitem FAILED");
+                $e->xact_commit;
+                # print STDERR "Lineitem update: ", Dumper($eg_line);
             }
-            push @lins, \@chunks;
-        } elsif ($tag ne 'UNH' and $tag ne 'BGM') {
-            push @ignored, $tag;
         }
     }
-    @ignored and $logger->debug("EDI: ignoring " . scalar(@ignored) . " segment(s): " . join(', ', @ignored));
-    return @lins;
+    return \@messages;
 }
 
-=head2 ->update_li($lineitem_id, $lineitem_object, [$server, $editor])
+# 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), 
@@ -473,17 +622,49 @@
 
 =cut
 
-sub update_li {
-    my ($class, $id, $object, $server, $e) = @_;
+sub eg_li {
+    my ($class, $line, $server, $server_log_string, $e) = @_;
+    $line or return;
     $e ||= new_editor();
-    $id =~ s#^.*\/##;   # Temporary fix for mbklein's testdata
-    print STDERR "Here we would retrieve/update lineitem $id\n";
-    my $li = OpenILS::Application::Acq::Lineitem::retrieve_lineitem_impl($e, $id); # Could send {options}
+
+    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");
+    }
+
+    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 || '';
+    print STDERR "EDI retrieve/update lineitem $id\n";
+
+    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'");
+        $logger->error("EDI failed to retrieve lineitem by id '$id' for server $server_log_string");
         return;
     }
-    unless ((! $server) or (! $server->provider)) {
+    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("
@@ -496,12 +677,135 @@
             }
         }
     }
-    return; # TODO: actual updates
-    $e->xact_begin;
-    $e->update_acq_lineitem($li) or $logger->warn("EDI: in update_li, update_acq_lineitem FAILED");
-    $e->xact_commit;
-    # print STDERR "Lineitem to update: ", Dumper($li);
+    
+    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'
+            }
+          }
+        ]
+      ]
+    ]
+  ]
+],
+

Modified: branches/rel_2_0/Open-ILS/src/perlmods/OpenILS/Application/Acq/Lineitem.pm
===================================================================
--- branches/rel_2_0/Open-ILS/src/perlmods/OpenILS/Application/Acq/Lineitem.pm	2010-09-15 13:13:32 UTC (rev 17692)
+++ branches/rel_2_0/Open-ILS/src/perlmods/OpenILS/Application/Acq/Lineitem.pm	2010-09-15 13:27:21 UTC (rev 17693)
@@ -94,7 +94,7 @@
 }
 
 sub retrieve_lineitem_impl {
-    my ($e, $li_id, $options) = @_;
+    my ($e, $li_id, $options, $no_auth) = @_;   # no_auth needed for EDI scripts
     $options ||= {};
 
     my $flesh = {
@@ -108,16 +108,16 @@
 
     my $fields = $flesh->{flesh_fields};
 
-    push(@{$fields->{jub}}, 'attributes') if $$options{flesh_attrs};
-    push(@{$fields->{jub}}, 'lineitem_notes') if $$options{flesh_notes};
-    push(@{$fields->{acqlin}}, 'alert_text') if $$options{flesh_notes};
-    push(@{$fields->{jub}}, 'order_summary') if $$options{flesh_order_summary};
+    push(@{$fields->{jub}   },    'attributes') if $$options{flesh_attrs};
+    push(@{$fields->{jub}   },'lineitem_notes') if $$options{flesh_notes};
+    push(@{$fields->{acqlin}},    'alert_text') if $$options{flesh_notes};
+    push(@{$fields->{jub}   }, 'order_summary') if $$options{flesh_order_summary};
     push(@{$fields->{acqlin}}, 'cancel_reason') if $$options{flesh_cancel_reason};
 
     if($$options{flesh_li_details}) {
-        push(@{$fields->{jub}}, 'lineitem_details');
-        push(@{$fields->{acqlid}}, 'fund') if $$options{flesh_fund};
-        push(@{$fields->{acqlid}}, 'fund_debit') if $$options{flesh_fund_debit};
+        push(@{$fields->{jub}   }, 'lineitem_details');
+        push(@{$fields->{acqlid}}, 'fund'         ) if $$options{flesh_fund};
+        push(@{$fields->{acqlid}}, 'fund_debit'   ) if $$options{flesh_fund_debit};
         push(@{$fields->{acqlid}}, 'cancel_reason') if $$options{flesh_cancel_reason};
     }
 
@@ -151,12 +151,12 @@
 
     return $e->event unless (
         $li->purchase_order and 
-            $e->allowed(['VIEW_PURCHASE_ORDER', 'CREATE_PURCHASE_ORDER'], 
-                $li->purchase_order->ordering_agency, $li->purchase_order)
+            ($no_auth or $e->allowed(['VIEW_PURCHASE_ORDER', 'CREATE_PURCHASE_ORDER'], 
+                $li->purchase_order->ordering_agency, $li->purchase_order))
     ) or (
         $li->picklist and !$li->purchase_order and # user doesn't have view_po perms
-            $e->allowed(['VIEW_PICKLIST', 'CREATE_PICKLIST'], 
-                $li->picklist->org_unit, $li->picklist)
+            ($no_auth or $e->allowed(['VIEW_PICKLIST', 'CREATE_PICKLIST'], 
+                $li->picklist->org_unit, $li->picklist))
     );
 
     unless ($$options{flesh_po}) {

Modified: branches/rel_2_0/Open-ILS/src/perlmods/OpenILS/Application/Acq/Order.pm
===================================================================
--- branches/rel_2_0/Open-ILS/src/perlmods/OpenILS/Application/Acq/Order.pm	2010-09-15 13:13:32 UTC (rev 17692)
+++ branches/rel_2_0/Open-ILS/src/perlmods/OpenILS/Application/Acq/Order.pm	2010-09-15 13:27:21 UTC (rev 17693)
@@ -1160,9 +1160,9 @@
 # ----------------------------------------------------------------------------
 
 __PACKAGE__->register_method(
-    method => 'upload_records',
+    method   => 'upload_records',
     api_name => 'open-ils.acq.process_upload_records',
-    stream => 1,
+    stream   => 1,
 );
 
 sub upload_records {
@@ -1175,14 +1175,14 @@
     my $cache = OpenSRF::Utils::Cache->new;
 
     my $data = $cache->get_cache("vandelay_import_spool_$key");
-	my $purpose = $data->{purpose};
-    my $filename = $data->{path};
-    my $provider = $data->{provider};
-    my $picklist = $data->{picklist};
-    my $create_po = $data->{create_po};
-    my $activate_po = $data->{activate_po};
+    my $purpose         = $data->{purpose};
+    my $filename        = $data->{path};
+    my $provider        = $data->{provider};
+    my $picklist        = $data->{picklist};
+    my $create_po       = $data->{create_po};
+    my $activate_po     = $data->{activate_po};
     my $ordering_agency = $data->{ordering_agency};
-    my $create_assets = $data->{create_assets};
+    my $create_assets   = $data->{create_assets};
     my $po;
     my $evt;
 
@@ -1214,8 +1214,7 @@
 
     $logger->info("acq processing MARC file=$filename");
 
-    my $marctype = 'USMARC'; # ?
-	my $batch = new MARC::Batch ($marctype, $filename);
+	my $batch = new MARC::Batch ('USMARC', $filename);
 	$batch->strict_off;
 
 	my $count = 0;
@@ -1223,10 +1222,8 @@
 
 	while(1) {
 
-	    my $err;
-        my $xml;
+	    my ($err, $xml, $r);
 		$count++;
-        my $r;
 
 		try {
             $r = $batch->next;
@@ -1283,7 +1280,7 @@
     unlink($filename);
     $cache->delete_cache('vandelay_import_spool_' . $key);
 
-    if($create_assets) {
+    if ($create_assets) {
         create_lineitem_list_assets($mgr, \@li_list) or return $e->die_event;
     }
 
@@ -1315,14 +1312,15 @@
         last unless $$compiled{quantity};
 
         for(1..$$compiled{quantity}) {
-            my $lid = create_lineitem_detail($mgr, 
-                lineitem => $li->id,
-                owning_lib => $$compiled{owning_lib},
-                cn_label => $$compiled{call_number},
-                fund => $$compiled{fund},
-                circ_modifier => $$compiled{circ_modifier},
-                note => $$compiled{note},
-                location => $$compiled{copy_location},
+            my $lid = create_lineitem_detail(
+                $mgr, 
+                lineitem        => $li->id,
+                owning_lib      => $$compiled{owning_lib},
+                cn_label        => $$compiled{call_number},
+                fund            => $$compiled{fund},
+                circ_modifier   => $$compiled{circ_modifier},
+                note            => $$compiled{note},
+                location        => $$compiled{copy_location},
                 collection_code => $$compiled{collection_code}
             ) or return 0;
         }
@@ -1483,10 +1481,10 @@
 
 
 __PACKAGE__->register_method(
-	method => 'create_purchase_order_api',
-	api_name	=> 'open-ils.acq.purchase_order.create',
-	signature => {
-        desc => 'Creates a new purchase order',
+    method    => 'create_purchase_order_api',
+    api_name  => 'open-ils.acq.purchase_order.create',
+    signature => {
+        desc   => 'Creates a new purchase order',
         params => [
             {desc => 'Authentication token', type => 'string'},
             {desc => 'purchase_order to create', type => 'object'}
@@ -1506,10 +1504,10 @@
 
     # create the PO
     my %pargs = (ordering_agency => $e->requestor->ws_ou); # default
-    $pargs{provider} = $po->provider if $po->provider;
-    $pargs{ordering_agency} = $po->ordering_agency if $po->ordering_agency;
-    $pargs{prepayment_required} = $po->prepayment_required
-        if $po->prepayment_required;
+    $pargs{provider}            = $po->provider            if $po->provider;
+    $pargs{ordering_agency}     = $po->ordering_agency     if $po->ordering_agency;
+    $pargs{prepayment_required} = $po->prepayment_required if $po->prepayment_required;
+        
     $po = create_purchase_order($mgr, %pargs) or return $e->die_event;
 
     my $li_ids = $$args{lineitems};
@@ -1544,14 +1542,11 @@
 
 
 __PACKAGE__->register_method(
-	method => 'update_lineitem_fund_batch',
-	api_name => 'open-ils.acq.lineitem.fund.update.batch',
-    stream => 1,
+    method   => 'update_lineitem_fund_batch',
+    api_name => 'open-ils.acq.lineitem.fund.update.batch',
+    stream   => 1,
     signature => { 
-        desc => q/
-            Given a set of lineitem IDS, updates the fund for all attached
-            lineitem details
-        /
+        desc => q/Given a set of lineitem IDS, updates the fund for all attached lineitem details/
     }
 );
 
@@ -1834,8 +1829,8 @@
 
 
 __PACKAGE__->register_method(
-	method => 'rollback_receive_po_api',
-	api_name	=> 'open-ils.acq.purchase_order.receive.rollback'
+    method   => 'rollback_receive_po_api',
+    api_name => 'open-ils.acq.purchase_order.receive.rollback'
 );
 
 sub rollback_receive_po_api {
@@ -1863,10 +1858,10 @@
 
 
 __PACKAGE__->register_method(
-	method => 'rollback_receive_lineitem_detail_api',
-	api_name	=> 'open-ils.acq.lineitem_detail.receive.rollback',
-	signature => {
-        desc => 'Mark a lineitem_detail as Un-received',
+    method    => 'rollback_receive_lineitem_detail_api',
+    api_name  => 'open-ils.acq.lineitem_detail.receive.rollback',
+    signature => {
+        desc   => 'Mark a lineitem_detail as Un-received',
         params => [
             {desc => 'Authentication token', type => 'string'},
             {desc => 'lineitem detail ID', type => 'number'}

Modified: branches/rel_2_0/Open-ILS/src/perlmods/OpenILS/Application/Trigger/Validator/Acq/PurchaseOrderEDIRequired.pm
===================================================================
--- branches/rel_2_0/Open-ILS/src/perlmods/OpenILS/Application/Trigger/Validator/Acq/PurchaseOrderEDIRequired.pm	2010-09-15 13:13:32 UTC (rev 17692)
+++ branches/rel_2_0/Open-ILS/src/perlmods/OpenILS/Application/Trigger/Validator/Acq/PurchaseOrderEDIRequired.pm	2010-09-15 13:27:21 UTC (rev 17693)
@@ -16,8 +16,10 @@
             new_editor->retrieve_acq_provider($po->provider);
 
     return 1 if 
-        $po->state eq 'on-order' and 
-        $provider->edi_default   and 
+        ($po->state eq 'on-order' or
+         $po->state eq 'retry'      ) and 
+        $provider                     and 
+        $provider->edi_default        and 
         $U->is_true($provider->active);
 
     return 0;

Modified: branches/rel_2_0/Open-ILS/src/perlmods/OpenILS/Utils/Cronscript.pm
===================================================================
--- branches/rel_2_0/Open-ILS/src/perlmods/OpenILS/Utils/Cronscript.pm	2010-09-15 13:13:32 UTC (rev 17692)
+++ branches/rel_2_0/Open-ILS/src/perlmods/OpenILS/Utils/Cronscript.pm	2010-09-15 13:27:21 UTC (rev 17693)
@@ -55,7 +55,7 @@
             'debug'         => 0,
             'verbose+'      => 0,
             'help'          => 0,
-            'internal_var'  => 'XYZ',
+          # 'internal_var'  => 'XYZ',
         },
     #   lockfile => undef,
     #   session => undef,

Modified: branches/rel_2_0/Open-ILS/src/perlmods/OpenILS/Utils/RemoteAccount.pm
===================================================================
--- branches/rel_2_0/Open-ILS/src/perlmods/OpenILS/Utils/RemoteAccount.pm	2010-09-15 13:13:32 UTC (rev 17692)
+++ branches/rel_2_0/Open-ILS/src/perlmods/OpenILS/Utils/RemoteAccount.pm	2010-09-15 13:27:21 UTC (rev 17693)
@@ -24,7 +24,7 @@
 our %keyfiles = ();
 
 my %fields = (
-    accound_object  => undef,
+    account_object  => undef,
     remote_host     => undef,
     remote_user     => undef,
     remote_password => undef,
@@ -327,13 +327,14 @@
 # Checks if the filename part of a pathname has one or more glob characters
 # We split out the filename portion of the path
 # Detect glob or no glob.
-# return: regex for matching filenames
+# returns: directory, regex for matching filenames
 sub glob_parse {
     my $self = shift;
     my $path = shift or return;
     my ($vol, $dir, $file) = File::Spec->splitpath($path); # we don't care about attempted globs in mid-filepath
-    $file =~ /\*/ and return (File::Spec->catdir($vol, $dir), glob_to_regex($file));
-    $file =~ /\?/ and return (File::Spec->catdir($vol, $dir), glob_to_regex($file));
+    my $front = $vol ? File::Spec->catdir($vol, $dir) : $dir;
+    $file =~ /\*/ and return ($front, glob_to_regex($file));
+    $file =~ /\?/ and return ($front, glob_to_regex($file));
     $logger->debug("No glob detected in '$path'");
     return;
 }
@@ -481,18 +482,20 @@
         if ($regex) {
             my $count = scalar(@pool);
             @pool = grep {$_->{name} =~ /$regex/} @pool;
-            $logger->info("Glob regex($regex) matches " . scalar(@pool) . " of $count files"); 
-        }
+            $logger->info("SSH ls: Glob regex($regex) matches " . scalar(@pool) . " of $count files"); 
+        } # else { $logger->info("SSH ls: No Glob regex in '$target'.  Just a regular ls"); }
         push @list, @pool;
     }
     return @list;
 
 }
 
-sub _slash_path {    # not OO
+sub _slash_path {
     my $self = shift;
     my $dir  = shift || '.';
     my $file = shift || '';
+    my ($dirpath, $regex) = $self->glob_parse($dir);
+    $dir = $dirpath if $dirpath;
     return $dir . ($dir =~ /\/$/ ? '' : '/') . $file;
 }
 
@@ -552,23 +555,37 @@
     return $self->local_file;
 }
 
-sub ls_uftp {
+sub ls_uftp {   # returns full path like: dir/path/file.ext
     my $self = shift;
     my $ftp = $self->_uftp or return;
     my @list;
     foreach (@_) {
         my @part;
         my ($dirpath, $regex) = $self->glob_parse($_);
-        eval { @part = $ftp->ls($dirpath || $_) };
+        my $dirtarget = $dirpath || $_;
+        $dirtarget =~ s/\/+$//;
+        eval { @part = $ftp->ls($dirtarget) };      # this ls returns relative/path/filenames.  defer filename glob filtering for below.
         if ($@) {
             $logger->error($self->_error("ls from",  $self->remote_host, "failed with error: $@"));
             next;
         }
+        if ($dirtarget and $dirtarget ne '.' and $dirtarget ne './' and $ftp->is_dir($dirtarget)) {
+            foreach my $file (@part) {   # we ensure full(er) path
+                $file =~ /^$dirtarget\// and next;
+                $logger->debug("ls_uftp: prepending $dirtarget/ to $file");
+                $file = File::Spec->catdir($dirtarget, $file);
+            }
+        }
         if ($regex) {
             my $count = scalar(@part);
-            @part = grep {/$regex/} @part;
-            $logger->info("Glob regex($regex) matches " . scalar(@part) . " of $count files"); 
-        }
+            # @part = grep {my @a = split('/',$_); scalar(@a) ? /$regex/ : ($a[-1] =~ /$regex/)} @part;
+            my @bulk = @part;
+            @part = grep {
+                        my ($vol, $dir, $file) = File::Spec->splitpath($_);
+                        $file =~ /$regex/
+                    } @part;  
+            $logger->info("FTP ls: Glob regex($regex) matches " . scalar(@part) . " of $count files");
+        } #  else {$logger->info("FTP ls: No Glob regex in '$_'.  Just a regular ls");}
         push @list, @part;
     }
     return @list;
@@ -641,7 +658,7 @@
 	$name =~ s/.*://;   #   strip leading package stuff
 
 	unless (exists $self->{_permitted}->{$name}) {
-		croak "Cannot access '$name' field of class '$class'";
+		croak "AUTOLOAD error: Cannot access '$name' field of class '$class'";
 	}
 
 	if (@_) {

Modified: branches/rel_2_0/Open-ILS/src/support-scripts/edi_fetcher.pl
===================================================================
--- branches/rel_2_0/Open-ILS/src/support-scripts/edi_fetcher.pl	2010-09-15 13:13:32 UTC (rev 17692)
+++ branches/rel_2_0/Open-ILS/src/support-scripts/edi_fetcher.pl	2010-09-15 13:27:21 UTC (rev 17693)
@@ -21,44 +21,164 @@
 use vars qw/$debug/;
 
 use OpenILS::Application::Acq::EDI;
-use OpenILS::Utils::CStoreEditor;   # needs init() after IDL is loaded (by Cronscript session)
 use OpenILS::Utils::Cronscript;
+use File::Spec;
 
-INIT {
-    $debug = 1;
-}
+my $defaults = {
+    "account=i"  => 0,
+    "provider=i" => 0,
+    "inactive"   => 0,
+    "test"       => 0,
+};
 
-OpenILS::Utils::Cronscript->new()->session('open-ils.acq') or die "No session created";
-OpenILS::Utils::CStoreEditor::init();
+my $core  = OpenILS::Utils::Cronscript->new($defaults);
+my $opts  = $core->MyGetOptions() or die "Getting options failed!";
+my $e     = $core->editor();
+my $debug = $opts->{debug};
 
-sub editor {
-    my $ed = OpenILS::Utils::CStoreEditor->new(@_) or die "Failed to get new CStoreEditor";
-    return $ed;
+if ($debug) {
+    print join "\n", "OPTIONS:", map {sprintf "%16s: %s", $_, $opts->{$_}} sort keys %$opts;
+    print "\n\n";
 }
 
+sub main_search {
+    my $select = {'+acqpro' => {active => {"in"=>['t','f']}} }; # either way
+    my %args = @_ ? @_ : ();
+    foreach (keys %args) {
+        $select->{$_} = $args{$_};
+    }
+    return $e->search_acq_edi_account([
+        $select,
+        {
+            'join' => 'acqpro',
+            flesh => 1,
+            flesh_fields => {acqedi => ['provider']},
+        }
+    ]);
+}
 
-my $e = editor();
-my $set = $e->retrieve_all_acq_edi_account();
+my $set = main_search() or die "No EDI accounts found in database (table: acq.edi_account)";
+
 my $total_accts = scalar(@$set);
 
 ($total_accts) or die "No EDI accounts found in database (table: acq.edi_account)";
 
-print "EDI Accounts Total : ", scalar(@$set), "\n";
+print "EDI Accounts Total : $total_accts\n";
+my $active = [ grep {$_->provider->active eq 't'} @$set ];
+print "EDI Accounts Active: ", scalar(@$active), "\n";
 
-my $subset = $e->search_acq_edi_account([
-    {'+acqpro' => {active => 't'}},
-    {
-        'join' => 'acqpro',
-        flesh => 1,
-        flesh_fields => {acqedi => ['provider']},
+my $subset;
+if ($opts->{inactive} or $opts->{provider} or $opts->{account}) {
+    print "Including inactive accounts\n";
+    $subset = [@$set];
+} else {
+    $subset = $active;
+}
+
+my ($acct, $pro);
+if ($opts->{provider}) {
+    print "Limiting by provider: " . $opts->{provider} . "\n";
+    $pro  = $e->retrieve_acq_provider($opts->{provider}) or die "provider '" . $opts->{provider} . "' not found";
+    printf "Provider %s found (edi_default %s)\n", $pro->id, $pro->edi_default;
+    $subset = main_search( 'id' => $pro->edi_default );
+    # $subset = [ grep {$_->provider->id == $opts->{provider}} @$subset ];
+    foreach (@$subset) {
+        $_->provider($pro);     # force provider match (short of LEFT JOINing the main_search query and dealing w/ multiple combos)
     }
-]);
+    scalar(@$subset) or die "provider '" . $opts->{provider} . "' edi_default invalid (failed to match acq.edi_account.id)";
+    if ($opts->{account} and $opts->{account} != $pro->edi_default) {
+        die sprintf "ERROR: --provider=%s and --account=%s specify rows that exist, but are not paired by acq.provider.edi_default", $opts->{provider}, $opts->{account};
+    }
+    $acct = $subset->[0]; 
+} 
+if ($opts->{account}) {
+    print "Limiting by account: " . $opts->{account} . "\n";
+    $subset = [ grep {$opts->{account}  == $_->id} @$subset ];
+    scalar(@$subset) or die "No acq.provider.edi_default matches option  --account=" . $opts->{account} . " ";
+    scalar(@$subset) > 1 and warn "account '" . $opts->{account} . "' has multiple matches.  Ignoring all but the first.";
+    $acct = $subset->[0]; 
+}
+scalar(@$subset) or die "No acq.provider rows match options " .
+    ($opts->{account}  ? ("--account="  . $opts->{account} ) : '') .
+    ($opts->{provider} ? ("--provider=" . $opts->{provider}) : '') ;
 
-print "EDI Accounts Active: ", scalar(@$subset), "\n";
+print "Limiting to " . scalar(@$subset) . " account(s)\n"; 
+foreach (@$subset) {
+    printf "Provider %s - %s, edi_account %s - %s: %s%s\n",
+        $_->provider->id, $_->provider->name, $_->id, $_->label, $_->host, ($_->in_dir ? ('/' . $_->in_dir) : '') ;
+}
 
-my $res = OpenILS::Application::Acq::EDI->retrieve_core();
+if (@ARGV) {
+    $opts->{provider} or $opts->{account}
+        or die "ERROR: --account=[ID] or --provider=[ID] option required for local data ingest, with valid edi_account or provider id";
+    print "READING FROM ", scalar(@ARGV), " LOCAL SOURCE(s) ONLY.  NO REMOTE SERVER(s) WILL BE USED\n"; 
+    printf "File will be attributed to edi_account %s - %s: %s\n", $acct->id, $acct->label, $acct->host;
+    my @files = @ARGV; # copy original @ARGV
+    foreach (@files) {
+        @ARGV = ($_);  # We'll use the diamond op, so we can pull from STDIN too
+        my $content = join '', <> or next;
+        $opts->{test} and next;
+        my $in = OpenILS::Application::Acq::EDI->process_retrieval(
+            $content,
+            "localhost:" . File::Spec->rel2abs($_),
+            OpenILS::Application::Acq::EDI->remote_account($acct),
+            $acct,
+            $e
+        );
+    }
+    exit;
+}
+# else no args
+
+my $res = OpenILS::Application::Acq::EDI->retrieve_core($subset,undef,undef,$opts->{test});
 print "Files retrieved: ", scalar(@$res), "\n";
 $debug and print "retrieve_core returns ", scalar(@$res),  " ids: " . join(', ', @$res), "\n";
 
-$debug and print Dumper($set);
+# $Data::Dumper::Indent = 1;
+$debug and print map {Dumper($_) . "\n"} @$subset;
 print "\ndone\n";
+
+__END__
+
+=pod
+
+=head1 NAME
+
+edi_fetcher.pl - A script for retrieving and processing EDI files from remote accounts.
+
+=head1 DESCRIPTION
+
+This script is expected to be run via crontab, for the purpose of retrieving vendor EDI files.
+
+Note: Depending on your vendors' and your own network environments, you may want to set/export
+the environmental variable FTP_PASSIVE like:
+
+    export FTP_PASSIVE=1
+    # or
+    FTP_PASSIVE=1 Open-ILS/src/support-scripts/edi_fetcher.pl
+
+=head1 OPTIONS
+
+    --account=[id]  Target one account, whether or not it is inactive.
+    --inactive      Includes inactive provider accounts (default OFF, forced ON if --account specified)
+
+=head1 ARGUMENTS
+
+edi_fetcher can also read from files specified as arguments on the command line, or from STDIN, or both.
+In such cases, the filename is not used to check whether the file has been loaded or not.  
+
+=head1 TODO
+
+More docs here.
+
+=head1 SEE ALSO
+
+    OpenILS::Utils::Cronscript
+    edi_pusher.pl
+
+=head1 AUTHOR
+
+Joe Atzberger <jatzberger at esilibrary.com>
+
+=cut
+

Modified: branches/rel_2_0/Open-ILS/src/support-scripts/edi_pusher.pl
===================================================================
--- branches/rel_2_0/Open-ILS/src/support-scripts/edi_pusher.pl	2010-09-15 13:13:32 UTC (rev 17692)
+++ branches/rel_2_0/Open-ILS/src/support-scripts/edi_pusher.pl	2010-09-15 13:27:21 UTC (rev 17693)
@@ -112,7 +112,7 @@
 
     $remaining -= scalar(@$events);
 
-    print "Event definition ", $def->id, " has ", scalar(@$events), " event(s)\n";
+    print "Event definition ", $def->id, " has ", scalar(@$events), " (completed) event(s)\n";
     foreach (@$events) {
 
         my $event = $e->retrieve_action_trigger_event([

Deleted: branches/rel_2_0/Open-ILS/src/support-scripts/test-scripts/edi_object.pl
===================================================================
--- branches/rel_2_0/Open-ILS/src/support-scripts/test-scripts/edi_object.pl	2010-09-15 13:13:32 UTC (rev 17692)
+++ branches/rel_2_0/Open-ILS/src/support-scripts/test-scripts/edi_object.pl	2010-09-15 13:27:21 UTC (rev 17693)
@@ -1,2985 +0,0 @@
-#!/usr/bin/perl
-#
-
-use strict; use warnings;
-
-use Data::Dumper;
-
-use OpenILS::Application::Acq::EDI;
-use OpenILS::Utils::Cronscript;
-use Business::EDI::Object;
-use Business::EDI::Segment::RFF;
-use vars qw/%code_hash/;
-
-require Business::EDI::DataElement;
-
-my $core = OpenILS::Utils::Cronscript->new();
-my $editor = $core->editor;
-
-my $slurp = join '', <DATA>;
-
-my ($aref, $whole) = OpenILS::Application::Acq::EDI->process_jedi($slurp);
-
-$Data::Dumper::Indent = 1;
-my $i = 0;
-foreach (@$aref) {
-    print "Building object from chunk ", ++$i, "\n";
-    my $obj = Business::EDI::Object->new($_);
-    print Dumper($obj);
-}
-
-print "\ndone\n";
-
-__DATA__
-{
-"trailer": ["UNZ", {
-    "0020": "2045",
-    "0036": 1
-}],
-"body": [{
-    "ORDRSP": [["UNH", {
-        "S009": {
-            "0052": "D",
-            "0054": "96A",
-            "0065": "ORDRSP",
-            "0051": "UN"
-        },
-        "0062": "723"
-    }], ["BGM", {
-        "4343": "AC",
-        "1225": "29",
-        "C002": {
-            "1001": "231"
-        },
-        "1004": "582822"
-    }], ["DTM", {
-        "C507": {
-            "2379": "102",
-            "2380": "20070618",
-            "2005": "137"
-        }
-    }], ["RFF", {
-        "C506": {
-            "1153": "ON",
-            "1154": "E07158FIC"
-        }
-    }], ["NAD", {
-        "C082": {
-            "3039": "8888888",
-            "3055": "31B"
-        },
-        "3035": "BY"
-    }], ["NAD", {
-        "C082": {
-            "3039": "1556150",
-            "3055": "31B"
-        },
-        "3035": "SU"
-    }], ["NAD", {
-        "C082": {
-            "3039": "8888888",
-            "3055": "91"
-        },
-        "3035": "BY"
-    }], ["CUX", {
-        "C504": [{
-            "6345": "USD",
-            "6347": "2",
-            "6343": "9"
-        }]
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["LACY, AL THINGS NOT SEEN"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 4,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 4,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "85"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "01",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 10.99
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4639/1"
-            }
-        }]],
-        "C212": {
-            "7140": "9781576734131",
-            "7143": "EN"
-        },
-        "1082": 1,
-        "1229": "5"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["LACY, AL FINAL JUSTICE"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 1,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 1,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "85"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "01",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 14.99
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4639/2"
-            }
-        }]],
-        "C212": {
-            "7140": "9781590529966",
-            "7143": "EN"
-        },
-        "1082": 2,
-        "1229": "5"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["MALAMUD, B NATURAL"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 5,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 5,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "85"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "01",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 14
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4639/3"
-            }
-        }]],
-        "C212": {
-            "7140": "9780374502003",
-            "7143": "EN"
-        },
-        "1082": 3,
-        "1229": "5"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["SCOTT, PAU RAJ QUARTET THE JEWEL IN"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 2,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 2,
-                "6063": "83"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "03",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 32.5
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4639/4"
-            }
-        }]],
-        "C212": {
-            "7140": "9780307263964",
-            "7143": "EN"
-        },
-        "1082": 4,
-        "1229": "24"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["JAMES, P.  SHROUD FOR A NIGHTINGALE"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 4,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 4,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "85"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "01",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 14
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4639/6"
-            }
-        }]],
-        "C212": {
-            "7140": "9780743219600",
-            "7143": "EN"
-        },
-        "1082": 5,
-        "1229": "5"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["LAHAYE, TI TRIBULATION FORCE THE CO"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 3,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 3,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "85"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "01",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 14.99
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4639/7"
-            }
-        }]],
-        "C212": {
-            "7140": "9780842329217",
-            "7143": "EN"
-        },
-        "1082": 6,
-        "1229": "5"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["ZANE AFTERBURN A NOVEL"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 4,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 4,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "85"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "01",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 15
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4639/8"
-            }
-        }]],
-        "C212": {
-            "7140": "9780743470988",
-            "7143": "EN"
-        },
-        "1082": 7,
-        "1229": "5"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["CABOT, MEG BOY NEXT DOOR"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 4,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 4,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "85"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "01",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 13.95
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4639/9"
-            }
-        }]],
-        "C212": {
-            "7140": "9780060096199",
-            "7143": "EN"
-        },
-        "1082": 8,
-        "1229": "5"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["VONNEGUT,  BREAKFAST OF CHAMPIONS"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 5,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 5,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "85"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "01",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 14
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4639/10"
-            }
-        }]],
-        "C212": {
-            "7140": "9780385334204",
-            "7143": "EN"
-        },
-        "1082": 9,
-        "1229": "5"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["DOSTOYEVSK BROTHERS KARAMAZOV"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 3,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 3,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "85"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "01",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 9.95
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4639/11"
-            }
-        }]],
-        "C212": {
-            "7140": "9781593083526",
-            "7143": "EN"
-        },
-        "1082": 10,
-        "1229": "5"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["KINGSBURY, FORGIVEN"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 6,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 6,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "85"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "01",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 13.99
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4639/12"
-            }
-        }]],
-        "C212": {
-            "7140": "9780842387446",
-            "7143": "EN"
-        },
-        "1082": 11,
-        "1229": "5"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["BERLINSKI, FIELDWORK"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 3,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 3,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "85"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "01",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 24
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4639/13"
-            }
-        }]],
-        "C212": {
-            "7140": "9780374299163",
-            "7143": "EN"
-        },
-        "1082": 12,
-        "1229": "5"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["GREGORY, P MERIDON A NOVEL"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 4,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 4,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "85"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "01",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 16
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4639/14"
-            }
-        }]],
-        "C212": {
-            "7140": "9780743249317",
-            "7143": "EN"
-        },
-        "1082": 13,
-        "1229": "5"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["MCCALL SMI MORALITY FOR BEAUTIFUL G"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 5,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 5,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "85"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "01",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 12.95
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4639/15"
-            }
-        }]],
-        "C212": {
-            "7140": "9781400031368",
-            "7143": "EN"
-        },
-        "1082": 14,
-        "1229": "5"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["CLEAGE, PE WHAT LOOKS LIKE CRAZY ON"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 3,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 3,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "85"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "01",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 13.95
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4639/16"
-            }
-        }]],
-        "C212": {
-            "7140": "9780380794874",
-            "7143": "EN"
-        },
-        "1082": 15,
-        "1229": "5"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["GREGORY, P WIDEACRE"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 4,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 4,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "85"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "01",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 16
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4639/17"
-            }
-        }]],
-        "C212": {
-            "7140": "9780743249294",
-            "7143": "EN"
-        },
-        "1082": 16,
-        "1229": "5"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["FERBER, ED SO BIG"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 3,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 3,
-                "6063": "83"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "07",
-                "3055": "28",
-                "1131": "7B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 13
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4639/18"
-            }
-        }]],
-        "C212": {
-            "7140": "9780060956691",
-            "7143": "EN"
-        },
-        "1082": 17,
-        "1229": "24"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["GREGORY, P OTHER BOLEYN GIRL"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 4,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 4,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "85"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "01",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 16
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4639/19"
-            }
-        }]],
-        "C212": {
-            "7140": "9780743227445",
-            "7143": "EN"
-        },
-        "1082": 18,
-        "1229": "5"
-    }], ["UNS", {
-        "0081": "S"
-    }], ["CNT", {
-        "C270": {
-            "6069": "2",
-            "6066": 18
-        }
-    }], ["UNT", {
-        "0074": 155,
-        "0062": "723"
-    }]]
-},
-{
-    "ORDRSP": [["UNH", {
-        "S009": {
-            "0052": "D",
-            "0054": "96A",
-            "0065": "ORDRSP",
-            "0051": "UN"
-        },
-        "0062": "724"
-    }], ["BGM", {
-        "4343": "AC",
-        "1225": "29",
-        "C002": {
-            "1001": "231"
-        },
-        "1004": "582828"
-    }], ["DTM", {
-        "C507": {
-            "2379": "102",
-            "2380": "20070618",
-            "2005": "137"
-        }
-    }], ["RFF", {
-        "C506": {
-            "1153": "ON",
-            "1154": "E07159ANF"
-        }
-    }], ["NAD", {
-        "C082": {
-            "3039": "8888888",
-            "3055": "31B"
-        },
-        "3035": "BY"
-    }], ["NAD", {
-        "C082": {
-            "3039": "1556150",
-            "3055": "31B"
-        },
-        "3035": "SU"
-    }], ["NAD", {
-        "C082": {
-            "3039": "8888888",
-            "3055": "91"
-        },
-        "3035": "BY"
-    }], ["CUX", {
-        "C504": [{
-            "6345": "USD",
-            "6347": "2",
-            "6343": "9"
-        }]
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["HOLM, BILL WINDOWS OF BRIMNES"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 3,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 3,
-                "6063": "83"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "03",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 22
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4640/1"
-            }
-        }]],
-        "C212": {
-            "7140": "9781571313027",
-            "7143": "EN"
-        },
-        "1082": 1,
-        "1229": "24"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["REPA, BARB YOUR RIGHTS IN THE WORKP"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 4,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 4,
-                "6063": "83"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "03",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 29.99
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4640/2"
-            }
-        }]],
-        "C212": {
-            "7140": "9781413306439",
-            "7143": "EN"
-        },
-        "1082": 2,
-        "1229": "24"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["GUERIN, LI ESSENTIAL GUIDE TO WORKP"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 2,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 2,
-                "6063": "83"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "03",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 39.99
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4640/3"
-            }
-        }]],
-        "C212": {
-            "7140": "9781413306910",
-            "7143": "EN"
-        },
-        "1082": 3,
-        "1229": "24"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["CLIFFORD,  ESTATE PLANNING BASICS"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 5,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 5,
-                "6063": "83"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "03",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 21.99
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4640/4"
-            }
-        }]],
-        "C212": {
-            "7140": "9781413307023",
-            "7143": "EN"
-        },
-        "1082": 4,
-        "1229": "24"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["FRIEDMAN,  BABY CARE BOOK"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 8,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 8,
-                "6063": "83"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "03",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 29.95
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4640/5"
-            }
-        }]],
-        "C212": {
-            "7140": "9780778801603",
-            "7143": "EN"
-        },
-        "1082": 5,
-        "1229": "24"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["KING, RUSS ATLAS OF HUMAN MIGRATION"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 3,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 3,
-                "6063": "83"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "03",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 40
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4640/6"
-            }
-        }]],
-        "C212": {
-            "7140": "9781554072873",
-            "7143": "EN"
-        },
-        "1082": 6,
-        "1229": "24"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["ASH, RUSSE FIREFLYS WORLD OF FACTS"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 6,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 6,
-                "6063": "83"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "03",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 29.95
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4640/7"
-            }
-        }]],
-        "C212": {
-            "7140": "9781554073139",
-            "7143": "EN"
-        },
-        "1082": 7,
-        "1229": "24"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["WARNER, RA 101 LAW FORMS FOR PERSON"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 6,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 6,
-                "6063": "83"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "03",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 29.99
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4640/8"
-            }
-        }]],
-        "C212": {
-            "7140": "9781413307122",
-            "7143": "EN"
-        },
-        "1082": 8,
-        "1229": "24"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["BRAY, ILON NOLOS ESSENTIAL GUIDE TO"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 10,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 10,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "85"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "01",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 24.99
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4640/9"
-            }
-        }]],
-        "C212": {
-            "7140": "9781413306286",
-            "7143": "EN"
-        },
-        "1082": 9,
-        "1229": "5"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["WESTWOOD,  HOW TO WRITE A MARKETING"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 3,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 1,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 2,
-                "6063": "83"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "99",
-                "3055": "28",
-                "1131": "7B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 17.95
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4640/10"
-            }
-        }]],
-        "C212": {
-            "7140": "9780749445546",
-            "7143": "EN"
-        },
-        "1082": 10,
-        "1229": "24"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["ROANE, SUS HOW TO WORK A ROOM YOUR "]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 8,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 8,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "85"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "01",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 14.95
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4640/11"
-            }
-        }]],
-        "C212": {
-            "7140": "9780061238673",
-            "7143": "EN"
-        },
-        "1082": 11,
-        "1229": "5"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["GERMAIN, D REACHING PAST THE WIRE A"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 4,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 4,
-                "6063": "83"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "03",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 24.95
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4640/12"
-            }
-        }]],
-        "C212": {
-            "7140": "9780873516068",
-            "7143": "EN"
-        },
-        "1082": 12,
-        "1229": "24"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["KLING, KEV DOG SAYS HOW"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 3,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 3,
-                "6063": "83"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "03",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 22.95
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4640/13"
-            }
-        }]],
-        "C212": {
-            "7140": "9780873515993",
-            "7143": "EN"
-        },
-        "1082": 13,
-        "1229": "24"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["SHORT, SUS BUNDT CAKE BLISS DELICIO"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 5,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 5,
-                "6063": "83"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "03",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 16.95
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4640/14"
-            }
-        }]],
-        "C212": {
-            "7140": "9780873515856",
-            "7143": "EN"
-        },
-        "1082": 14,
-        "1229": "24"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["BRADY, TIM GOPHER GOLD LEGENDARY FI"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 2,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 2,
-                "6063": "83"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "03",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 24.95
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4640/15"
-            }
-        }]],
-        "C212": {
-            "7140": "9780873516013",
-            "7143": "EN"
-        },
-        "1082": 15,
-        "1229": "24"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["ROBERTS, K MINNESOTA 150 THE PEOPLE"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 8,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 8,
-                "6063": "83"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "03",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 19.95
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4640/16"
-            }
-        }]],
-        "C212": {
-            "7140": "9780873515948",
-            "7143": "EN"
-        },
-        "1082": 16,
-        "1229": "24"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["MAK, GEERT IN EUROPE A JOURNEY THRO"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 2,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 2,
-                "6063": "83"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "03",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 35
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4640/17"
-            }
-        }]],
-        "C212": {
-            "7140": "9780375424953",
-            "7143": "EN"
-        },
-        "1082": 17,
-        "1229": "24"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["DONAHUE, P PARENTING WITHOUT FEAR O"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 5,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 5,
-                "6063": "83"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "03",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 14.95
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4640/18"
-            }
-        }]],
-        "C212": {
-            "7140": "9780312358914",
-            "7143": "EN"
-        },
-        "1082": 18,
-        "1229": "24"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["MURRAY, LI BABYCENTERS ESSENTIAL GU"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 8,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 8,
-                "6063": "83"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "03",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 15.95
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4640/19"
-            }
-        }]],
-        "C212": {
-            "7140": "9781594864117",
-            "7143": "EN"
-        },
-        "1082": 19,
-        "1229": "24"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["LAPINE, MI SNEAKY CHEF SIMPLE STRAT"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 6,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 6,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "85"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "01",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 17.95
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4640/20"
-            }
-        }]],
-        "C212": {
-            "7140": "9780762430758",
-            "7143": "EN"
-        },
-        "1082": 20,
-        "1229": "5"
-    }], ["UNS", {
-        "0081": "S"
-    }], ["CNT", {
-        "C270": {
-            "6069": "2",
-            "6066": 20
-        }
-    }], ["UNT", {
-        "0074": 171,
-        "0062": "724"
-    }]]
-},
-{
-    "ORDRSP": [["UNH", {
-        "S009": {
-            "0052": "D",
-            "0054": "96A",
-            "0065": "ORDRSP",
-            "0051": "UN"
-        },
-        "0062": "725"
-    }], ["BGM", {
-        "4343": "AC",
-        "1225": "29",
-        "C002": {
-            "1001": "231"
-        },
-        "1004": "582830"
-    }], ["DTM", {
-        "C507": {
-            "2379": "102",
-            "2380": "20070618",
-            "2005": "137"
-        }
-    }], ["RFF", {
-        "C506": {
-            "1153": "ON",
-            "1154": "E07160FIC"
-        }
-    }], ["NAD", {
-        "C082": {
-            "3039": "8888888",
-            "3055": "31B"
-        },
-        "3035": "BY"
-    }], ["NAD", {
-        "C082": {
-            "3039": "1556150",
-            "3055": "31B"
-        },
-        "3035": "SU"
-    }], ["NAD", {
-        "C082": {
-            "3039": "8888888",
-            "3055": "91"
-        },
-        "3035": "BY"
-    }], ["CUX", {
-        "C504": [{
-            "6345": "USD",
-            "6347": "2",
-            "6343": "9"
-        }]
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["SHAW, REBE COUNTRY LOVERS"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 5,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 5,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "85"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "01",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 12.95
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4641/1"
-            }
-        }]],
-        "C212": {
-            "7140": "9781400098224",
-            "7143": "EN"
-        },
-        "1082": 1,
-        "1229": "5"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["BLAKE, TON TEMPT ME TONIGHT"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 4,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 4,
-                "6063": "83"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "07",
-                "3055": "28",
-                "1131": "7B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 13.95
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4641/2"
-            }
-        }]],
-        "C212": {
-            "7140": "9780061136092",
-            "7143": "EN"
-        },
-        "1082": 2,
-        "1229": "24"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["MONING, KA BLOODFEVER"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 6,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 6,
-                "6063": "83"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "03",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 22
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4641/3"
-            }
-        }]],
-        "C212": {
-            "7140": "9780385339162",
-            "7143": "EN"
-        },
-        "1082": 3,
-        "1229": "24"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["MCKENNA, S EDGE OF MIDNIGHT"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 8,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 8,
-                "6063": "83"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "03",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 14
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4641/4"
-            }
-        }]],
-        "C212": {
-            "7140": "9780758211859",
-            "7143": "EN"
-        },
-        "1082": 4,
-        "1229": "24"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["BALZO, SAN GROUNDS FOR MURDER"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 8,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 8,
-                "6063": "83"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "03",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 27.95
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4641/5"
-            }
-        }]],
-        "C212": {
-            "7140": "9780727865496",
-            "7143": "EN"
-        },
-        "1082": 5,
-        "1229": "24"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["PALMER, DI HARD TO HANDLE"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 8,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 8,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "85"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "01",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 13.95
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4641/6"
-            }
-        }]],
-        "C212": {
-            "7140": "9780373772612",
-            "7143": "EN"
-        },
-        "1082": 6,
-        "1229": "5"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["JONES, LLO MR PIP"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 3,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 3,
-                "6063": "83"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "03",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 20
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4641/7"
-            }
-        }]],
-        "C212": {
-            "7140": "9780385341066",
-            "7143": "EN"
-        },
-        "1082": 7,
-        "1229": "24"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["JILES, PAU STORMY WEATHER"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 8,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 8,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "85"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "01",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 24.95
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4641/8"
-            }
-        }]],
-        "C212": {
-            "7140": "9780060537326",
-            "7143": "EN"
-        },
-        "1082": 8,
-        "1229": "5"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["DELILLO, D FALLING MAN A NOVEL"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 4,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 4,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "85"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "01",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 26
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4641/9"
-            }
-        }]],
-        "C212": {
-            "7140": "9781416546023",
-            "7143": "EN"
-        },
-        "1082": 9,
-        "1229": "5"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["MORRISON,  SWEETER THAN HONEY"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 3,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 3,
-                "6063": "83"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "03",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 24
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4641/10"
-            }
-        }]],
-        "C212": {
-            "7140": "9780758215116",
-            "7143": "EN"
-        },
-        "1082": 10,
-        "1229": "24"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["SMITH, SHE FOX"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 2,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 2,
-                "6063": "83"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "03",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 25.95
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4641/11"
-            }
-        }]],
-        "C212": {
-            "7140": "9780756404215",
-            "7143": "EN"
-        },
-        "1082": 11,
-        "1229": "24"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["GROSSMAN,  SOON I WILL BE INVINCIBL"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 2,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 2,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "85"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "01",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 22.95
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4641/12"
-            }
-        }]],
-        "C212": {
-            "7140": "9780375424861",
-            "7143": "EN"
-        },
-        "1082": 12,
-        "1229": "5"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["LEWYCKA, M SHORT HISTORY OF TRACTOR"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 3,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 3,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "85"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "01",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 14
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4641/13"
-            }
-        }]],
-        "C212": {
-            "7140": "9780143036746",
-            "7143": "EN"
-        },
-        "1082": 13,
-        "1229": "5"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["BANNISTER, FLAWED"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 4,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 4,
-                "6063": "83"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "03",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 24.95
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4641/14"
-            }
-        }]],
-        "C212": {
-            "7140": "9780312375669",
-            "7143": "EN"
-        },
-        "1082": 14,
-        "1229": "24"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["ALEXANDER, REMEMBERED"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 8,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 8,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "85"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "01",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 13.99
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4641/15"
-            }
-        }]],
-        "C212": {
-            "7140": "9780764201103",
-            "7143": "EN"
-        },
-        "1082": 15,
-        "1229": "5"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["TANIGUCHI, OCEAN IN THE CLOSET"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 2,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 2,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "85"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "01",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 14.95
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4641/16"
-            }
-        }]],
-        "C212": {
-            "7140": "9781566891943",
-            "7143": "EN"
-        },
-        "1082": 16,
-        "1229": "5"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["HENKE, ROX SECRET OF US"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 5,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 5,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "85"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "01",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 13.99
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4641/17"
-            }
-        }]],
-        "C212": {
-            "7140": "9780736917018",
-            "7143": "EN"
-        },
-        "1082": 17,
-        "1229": "5"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["HERMAN, KA EVER PRESENT DANGER"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 5,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 5,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "85"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "01",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 12.99
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4641/18"
-            }
-        }]],
-        "C212": {
-            "7140": "9781590529218",
-            "7143": "EN"
-        },
-        "1082": 18,
-        "1229": "5"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["CHAPMAN, G IT HAPPENS EVERY SPRING"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 5,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 5,
-                "6063": "83"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "07",
-                "3055": "28",
-                "1131": "7B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 12.99
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4641/19"
-            }
-        }]],
-        "C212": {
-            "7140": "9781414311654",
-            "7143": "EN"
-        },
-        "1082": 19,
-        "1229": "24"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["JACKSON, N YADA YADA PRAYER GROUP G"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 8,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 8,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "85"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "01",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 13.99
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4641/20"
-            }
-        }]],
-        "C212": {
-            "7140": "9781591453628",
-            "7143": "EN"
-        },
-        "1082": 20,
-        "1229": "5"
-    }], ["UNS", {
-        "0081": "S"
-    }], ["CNT", {
-        "C270": {
-            "6069": "2",
-            "6066": 20
-        }
-    }], ["UNT", {
-        "0074": 171,
-        "0062": "725"
-    }]]
-}],
-"recipient": "8888888",
-"sender": "1556150",
-"header": ["UNB", {
-    "S003": {
-        "0007": "31B",
-        "0010": "8888888"
-    },
-    "0020": "2045",
-    "S004": {
-        "0019": 1556,
-        "0017": 70618
-    },
-    "S001": {
-        "0001": "UNOC",
-        "0002": 3
-    },
-    "S002": {
-        "0007": "31B",
-        "0004": "1556150"
-    }
-}],
-"sender_qual": "31B",
-"UNA": {
-    "seg_term": "'",
-    "decimal_sign": ".",
-    "esc_char": "?",
-    "de_sep": "+",
-    "ce_sep": ":",
-    "rep_sep": " "
-},
-"recipient_qual": "31B"
-}

Modified: branches/rel_2_0/Open-ILS/src/support-scripts/test-scripts/ftp_ls.pl
===================================================================
--- branches/rel_2_0/Open-ILS/src/support-scripts/test-scripts/ftp_ls.pl	2010-09-15 13:13:32 UTC (rev 17692)
+++ branches/rel_2_0/Open-ILS/src/support-scripts/test-scripts/ftp_ls.pl	2010-09-15 13:27:21 UTC (rev 17693)
@@ -57,7 +57,7 @@
 }
 close TEMP;
 
-my $dir = '/home/some_user/out';
+my $dir = '/home/' . $config{remote_user} . '/out';
 $delay and print "Sleeping $delay seconds\n" and sleep $delay;
 
 my $glob6 = $dir . '/*Q*';

Deleted: branches/rel_2_0/Open-ILS/src/support-scripts/test-scripts/ordrsp_parse.pl
===================================================================
--- branches/rel_2_0/Open-ILS/src/support-scripts/test-scripts/ordrsp_parse.pl	2010-09-15 13:13:32 UTC (rev 17692)
+++ branches/rel_2_0/Open-ILS/src/support-scripts/test-scripts/ordrsp_parse.pl	2010-09-15 13:27:21 UTC (rev 17693)
@@ -1,3058 +0,0 @@
-#!/usr/bin/perl
-#
-
-use strict; use warnings;
-
-use Data::Dumper;
-
-use OpenILS::Utils::Cronscript;
-use OpenILS::Application::Acq::EDI;
-use Business::EDI::DataElement;
-use Business::EDI::Segment::RFF;
-use vars qw/%code_hash/;
-
-require Business::EDI::DataElement;
-
-my $verbose = @ARGV ? shift : 0;
-
-my $core = OpenILS::Utils::Cronscript->new();
-my $editor = $core->editor;
-
-my $slurp = join '', <DATA>;
-
-my ($aref, $whole) = OpenILS::Application::Acq::EDI->process_jedi($slurp);
-
-$Data::Dumper::Indent = 1;
-# print Dumper($aref);
-my @innards = @$aref;
-my @rffs;
-
-# `print Dumper(\@innards);
-
-=pod
-    ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["LACY, AL THINGS NOT SEEN"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 4,
-                "6063": "21"
-            }
-        }], ...
-            ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4639/1"
-            }
-        }], ... ]}]
-
-=cut
-
-my @qtys = ();
-foreach (@innards) {
-    
-#   my $count = scalar(@{$_->{SG26}});
-   my $count = scalar(@$_);
-   print STDERR "->{SG26} has $count pieces: ";
-   for (my $i = 0; $i < $count; $i++) {
-        my $label = $_->[$i]->[0];
-        my $body  = $_->[$i]->[1];
-        print STDERR "$label ";
-        $label eq 'QTY' and push @qtys, $body;
-        $label eq 'RFF' and push @rffs, $body;
-    }
-    print STDERR "\n";
-    # foreach my $qty (@{$_->{SG26}->[0]}) {
-}
-
-printf "%4d LINs found\n", scalar(@innards);
-printf "%4d QTYs found\n", scalar(@qtys);
-printf "%4d RFFs found (inside LINs)\n", scalar(@rffs);
-
-sub example_dump {
-    my $example = shift or return;
-    print "\nexample QTY: ", Dumper($example);
-    foreach (keys %{$example->{C186}}) {
-        # no warnings 'uninitialized';
-        my $x = Business::EDI::DataElement->new($_);
-        print $x->label, " ($_) : ", $example->{C186}->{$_}, "\n";
-    }
-}
-
-# example_dump($qtys[-1]);
-
-# We want: RFF > C506 > 1154 where 1153 = LI
-foreach my $rff (@rffs) {
-    my $obj = Business::EDI::Segment::RFF->new($rff);
-    $verbose and print Dumper ($obj);
-    foreach my $subrff (keys %$rff) {
-        $subrff eq 'C506' or next;
-        my $i = 0;
-        foreach (sort keys %{$rff->{$subrff}}) {
-            my $x = Business::EDI::DataElement->new($_, $rff->{$subrff}->{$_});
-            $x or warn "Unknown DataElement code $_";
-            print "$_ ", $x->label, " ", $x->value, " ";
-            $i++ == 0 and print "==> ";
-        }
-        print "\n";
-    }
-}
-print "\ndone\n";
-
-__DATA__
-{
-"trailer": ["UNZ", {
-    "0020": "2045",
-    "0036": 1
-}],
-"body": [{
-    "ORDRSP": [["UNH", {
-        "S009": {
-            "0052": "D",
-            "0054": "96A",
-            "0065": "ORDRSP",
-            "0051": "UN"
-        },
-        "0062": "723"
-    }], ["BGM", {
-        "4343": "AC",
-        "1225": "29",
-        "C002": {
-            "1001": "231"
-        },
-        "1004": "582822"
-    }], ["DTM", {
-        "C507": {
-            "2379": "102",
-            "2380": "20070618",
-            "2005": "137"
-        }
-    }], ["RFF", {
-        "C506": {
-            "1153": "ON",
-            "1154": "E07158FIC"
-        }
-    }], ["NAD", {
-        "C082": {
-            "3039": "8888888",
-            "3055": "31B"
-        },
-        "3035": "BY"
-    }], ["NAD", {
-        "C082": {
-            "3039": "1556150",
-            "3055": "31B"
-        },
-        "3035": "SU"
-    }], ["NAD", {
-        "C082": {
-            "3039": "8888888",
-            "3055": "91"
-        },
-        "3035": "BY"
-    }], ["CUX", {
-        "C504": [{
-            "6345": "USD",
-            "6347": "2",
-            "6343": "9"
-        }]
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["LACY, AL THINGS NOT SEEN"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 4,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 4,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "85"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "01",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 10.99
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4639/1"
-            }
-        }]],
-        "C212": {
-            "7140": "9781576734131",
-            "7143": "EN"
-        },
-        "1082": 1,
-        "1229": "5"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["LACY, AL FINAL JUSTICE"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 1,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 1,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "85"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "01",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 14.99
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4639/2"
-            }
-        }]],
-        "C212": {
-            "7140": "9781590529966",
-            "7143": "EN"
-        },
-        "1082": 2,
-        "1229": "5"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["MALAMUD, B NATURAL"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 5,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 5,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "85"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "01",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 14
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4639/3"
-            }
-        }]],
-        "C212": {
-            "7140": "9780374502003",
-            "7143": "EN"
-        },
-        "1082": 3,
-        "1229": "5"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["SCOTT, PAU RAJ QUARTET THE JEWEL IN"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 2,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 2,
-                "6063": "83"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "03",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 32.5
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4639/4"
-            }
-        }]],
-        "C212": {
-            "7140": "9780307263964",
-            "7143": "EN"
-        },
-        "1082": 4,
-        "1229": "24"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["JAMES, P.  SHROUD FOR A NIGHTINGALE"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 4,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 4,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "85"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "01",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 14
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4639/6"
-            }
-        }]],
-        "C212": {
-            "7140": "9780743219600",
-            "7143": "EN"
-        },
-        "1082": 5,
-        "1229": "5"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["LAHAYE, TI TRIBULATION FORCE THE CO"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 3,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 3,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "85"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "01",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 14.99
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4639/7"
-            }
-        }]],
-        "C212": {
-            "7140": "9780842329217",
-            "7143": "EN"
-        },
-        "1082": 6,
-        "1229": "5"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["ZANE AFTERBURN A NOVEL"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 4,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 4,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "85"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "01",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 15
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4639/8"
-            }
-        }]],
-        "C212": {
-            "7140": "9780743470988",
-            "7143": "EN"
-        },
-        "1082": 7,
-        "1229": "5"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["CABOT, MEG BOY NEXT DOOR"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 4,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 4,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "85"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "01",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 13.95
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4639/9"
-            }
-        }]],
-        "C212": {
-            "7140": "9780060096199",
-            "7143": "EN"
-        },
-        "1082": 8,
-        "1229": "5"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["VONNEGUT,  BREAKFAST OF CHAMPIONS"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 5,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 5,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "85"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "01",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 14
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4639/10"
-            }
-        }]],
-        "C212": {
-            "7140": "9780385334204",
-            "7143": "EN"
-        },
-        "1082": 9,
-        "1229": "5"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["DOSTOYEVSK BROTHERS KARAMAZOV"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 3,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 3,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "85"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "01",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 9.95
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4639/11"
-            }
-        }]],
-        "C212": {
-            "7140": "9781593083526",
-            "7143": "EN"
-        },
-        "1082": 10,
-        "1229": "5"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["KINGSBURY, FORGIVEN"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 6,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 6,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "85"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "01",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 13.99
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4639/12"
-            }
-        }]],
-        "C212": {
-            "7140": "9780842387446",
-            "7143": "EN"
-        },
-        "1082": 11,
-        "1229": "5"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["BERLINSKI, FIELDWORK"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 3,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 3,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "85"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "01",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 24
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4639/13"
-            }
-        }]],
-        "C212": {
-            "7140": "9780374299163",
-            "7143": "EN"
-        },
-        "1082": 12,
-        "1229": "5"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["GREGORY, P MERIDON A NOVEL"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 4,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 4,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "85"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "01",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 16
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4639/14"
-            }
-        }]],
-        "C212": {
-            "7140": "9780743249317",
-            "7143": "EN"
-        },
-        "1082": 13,
-        "1229": "5"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["MCCALL SMI MORALITY FOR BEAUTIFUL G"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 5,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 5,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "85"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "01",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 12.95
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4639/15"
-            }
-        }]],
-        "C212": {
-            "7140": "9781400031368",
-            "7143": "EN"
-        },
-        "1082": 14,
-        "1229": "5"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["CLEAGE, PE WHAT LOOKS LIKE CRAZY ON"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 3,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 3,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "85"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "01",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 13.95
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4639/16"
-            }
-        }]],
-        "C212": {
-            "7140": "9780380794874",
-            "7143": "EN"
-        },
-        "1082": 15,
-        "1229": "5"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["GREGORY, P WIDEACRE"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 4,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 4,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "85"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "01",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 16
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4639/17"
-            }
-        }]],
-        "C212": {
-            "7140": "9780743249294",
-            "7143": "EN"
-        },
-        "1082": 16,
-        "1229": "5"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["FERBER, ED SO BIG"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 3,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 3,
-                "6063": "83"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "07",
-                "3055": "28",
-                "1131": "7B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 13
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4639/18"
-            }
-        }]],
-        "C212": {
-            "7140": "9780060956691",
-            "7143": "EN"
-        },
-        "1082": 17,
-        "1229": "24"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["GREGORY, P OTHER BOLEYN GIRL"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 4,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 4,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "85"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "01",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 16
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4639/19"
-            }
-        }]],
-        "C212": {
-            "7140": "9780743227445",
-            "7143": "EN"
-        },
-        "1082": 18,
-        "1229": "5"
-    }], ["UNS", {
-        "0081": "S"
-    }], ["CNT", {
-        "C270": {
-            "6069": "2",
-            "6066": 18
-        }
-    }], ["UNT", {
-        "0074": 155,
-        "0062": "723"
-    }]]
-},
-{
-    "ORDRSP": [["UNH", {
-        "S009": {
-            "0052": "D",
-            "0054": "96A",
-            "0065": "ORDRSP",
-            "0051": "UN"
-        },
-        "0062": "724"
-    }], ["BGM", {
-        "4343": "AC",
-        "1225": "29",
-        "C002": {
-            "1001": "231"
-        },
-        "1004": "582828"
-    }], ["DTM", {
-        "C507": {
-            "2379": "102",
-            "2380": "20070618",
-            "2005": "137"
-        }
-    }], ["RFF", {
-        "C506": {
-            "1153": "ON",
-            "1154": "E07159ANF"
-        }
-    }], ["NAD", {
-        "C082": {
-            "3039": "8888888",
-            "3055": "31B"
-        },
-        "3035": "BY"
-    }], ["NAD", {
-        "C082": {
-            "3039": "1556150",
-            "3055": "31B"
-        },
-        "3035": "SU"
-    }], ["NAD", {
-        "C082": {
-            "3039": "8888888",
-            "3055": "91"
-        },
-        "3035": "BY"
-    }], ["CUX", {
-        "C504": [{
-            "6345": "USD",
-            "6347": "2",
-            "6343": "9"
-        }]
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["HOLM, BILL WINDOWS OF BRIMNES"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 3,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 3,
-                "6063": "83"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "03",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 22
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4640/1"
-            }
-        }]],
-        "C212": {
-            "7140": "9781571313027",
-            "7143": "EN"
-        },
-        "1082": 1,
-        "1229": "24"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["REPA, BARB YOUR RIGHTS IN THE WORKP"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 4,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 4,
-                "6063": "83"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "03",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 29.99
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4640/2"
-            }
-        }]],
-        "C212": {
-            "7140": "9781413306439",
-            "7143": "EN"
-        },
-        "1082": 2,
-        "1229": "24"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["GUERIN, LI ESSENTIAL GUIDE TO WORKP"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 2,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 2,
-                "6063": "83"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "03",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 39.99
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4640/3"
-            }
-        }]],
-        "C212": {
-            "7140": "9781413306910",
-            "7143": "EN"
-        },
-        "1082": 3,
-        "1229": "24"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["CLIFFORD,  ESTATE PLANNING BASICS"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 5,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 5,
-                "6063": "83"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "03",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 21.99
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4640/4"
-            }
-        }]],
-        "C212": {
-            "7140": "9781413307023",
-            "7143": "EN"
-        },
-        "1082": 4,
-        "1229": "24"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["FRIEDMAN,  BABY CARE BOOK"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 8,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 8,
-                "6063": "83"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "03",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 29.95
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4640/5"
-            }
-        }]],
-        "C212": {
-            "7140": "9780778801603",
-            "7143": "EN"
-        },
-        "1082": 5,
-        "1229": "24"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["KING, RUSS ATLAS OF HUMAN MIGRATION"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 3,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 3,
-                "6063": "83"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "03",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 40
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4640/6"
-            }
-        }]],
-        "C212": {
-            "7140": "9781554072873",
-            "7143": "EN"
-        },
-        "1082": 6,
-        "1229": "24"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["ASH, RUSSE FIREFLYS WORLD OF FACTS"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 6,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 6,
-                "6063": "83"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "03",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 29.95
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4640/7"
-            }
-        }]],
-        "C212": {
-            "7140": "9781554073139",
-            "7143": "EN"
-        },
-        "1082": 7,
-        "1229": "24"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["WARNER, RA 101 LAW FORMS FOR PERSON"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 6,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 6,
-                "6063": "83"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "03",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 29.99
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4640/8"
-            }
-        }]],
-        "C212": {
-            "7140": "9781413307122",
-            "7143": "EN"
-        },
-        "1082": 8,
-        "1229": "24"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["BRAY, ILON NOLOS ESSENTIAL GUIDE TO"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 10,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 10,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "85"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "01",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 24.99
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4640/9"
-            }
-        }]],
-        "C212": {
-            "7140": "9781413306286",
-            "7143": "EN"
-        },
-        "1082": 9,
-        "1229": "5"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["WESTWOOD,  HOW TO WRITE A MARKETING"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 3,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 1,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 2,
-                "6063": "83"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "99",
-                "3055": "28",
-                "1131": "7B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 17.95
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4640/10"
-            }
-        }]],
-        "C212": {
-            "7140": "9780749445546",
-            "7143": "EN"
-        },
-        "1082": 10,
-        "1229": "24"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["ROANE, SUS HOW TO WORK A ROOM YOUR "]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 8,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 8,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "85"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "01",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 14.95
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4640/11"
-            }
-        }]],
-        "C212": {
-            "7140": "9780061238673",
-            "7143": "EN"
-        },
-        "1082": 11,
-        "1229": "5"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["GERMAIN, D REACHING PAST THE WIRE A"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 4,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 4,
-                "6063": "83"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "03",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 24.95
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4640/12"
-            }
-        }]],
-        "C212": {
-            "7140": "9780873516068",
-            "7143": "EN"
-        },
-        "1082": 12,
-        "1229": "24"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["KLING, KEV DOG SAYS HOW"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 3,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 3,
-                "6063": "83"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "03",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 22.95
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4640/13"
-            }
-        }]],
-        "C212": {
-            "7140": "9780873515993",
-            "7143": "EN"
-        },
-        "1082": 13,
-        "1229": "24"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["SHORT, SUS BUNDT CAKE BLISS DELICIO"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 5,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 5,
-                "6063": "83"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "03",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 16.95
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4640/14"
-            }
-        }]],
-        "C212": {
-            "7140": "9780873515856",
-            "7143": "EN"
-        },
-        "1082": 14,
-        "1229": "24"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["BRADY, TIM GOPHER GOLD LEGENDARY FI"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 2,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 2,
-                "6063": "83"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "03",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 24.95
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4640/15"
-            }
-        }]],
-        "C212": {
-            "7140": "9780873516013",
-            "7143": "EN"
-        },
-        "1082": 15,
-        "1229": "24"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["ROBERTS, K MINNESOTA 150 THE PEOPLE"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 8,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 8,
-                "6063": "83"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "03",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 19.95
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4640/16"
-            }
-        }]],
-        "C212": {
-            "7140": "9780873515948",
-            "7143": "EN"
-        },
-        "1082": 16,
-        "1229": "24"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["MAK, GEERT IN EUROPE A JOURNEY THRO"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 2,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 2,
-                "6063": "83"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "03",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 35
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4640/17"
-            }
-        }]],
-        "C212": {
-            "7140": "9780375424953",
-            "7143": "EN"
-        },
-        "1082": 17,
-        "1229": "24"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["DONAHUE, P PARENTING WITHOUT FEAR O"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 5,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 5,
-                "6063": "83"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "03",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 14.95
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4640/18"
-            }
-        }]],
-        "C212": {
-            "7140": "9780312358914",
-            "7143": "EN"
-        },
-        "1082": 18,
-        "1229": "24"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["MURRAY, LI BABYCENTERS ESSENTIAL GU"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 8,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 8,
-                "6063": "83"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "03",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 15.95
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4640/19"
-            }
-        }]],
-        "C212": {
-            "7140": "9781594864117",
-            "7143": "EN"
-        },
-        "1082": 19,
-        "1229": "24"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["LAPINE, MI SNEAKY CHEF SIMPLE STRAT"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 6,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 6,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "85"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "01",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 17.95
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4640/20"
-            }
-        }]],
-        "C212": {
-            "7140": "9780762430758",
-            "7143": "EN"
-        },
-        "1082": 20,
-        "1229": "5"
-    }], ["UNS", {
-        "0081": "S"
-    }], ["CNT", {
-        "C270": {
-            "6069": "2",
-            "6066": 20
-        }
-    }], ["UNT", {
-        "0074": 171,
-        "0062": "724"
-    }]]
-},
-{
-    "ORDRSP": [["UNH", {
-        "S009": {
-            "0052": "D",
-            "0054": "96A",
-            "0065": "ORDRSP",
-            "0051": "UN"
-        },
-        "0062": "725"
-    }], ["BGM", {
-        "4343": "AC",
-        "1225": "29",
-        "C002": {
-            "1001": "231"
-        },
-        "1004": "582830"
-    }], ["DTM", {
-        "C507": {
-            "2379": "102",
-            "2380": "20070618",
-            "2005": "137"
-        }
-    }], ["RFF", {
-        "C506": {
-            "1153": "ON",
-            "1154": "E07160FIC"
-        }
-    }], ["NAD", {
-        "C082": {
-            "3039": "8888888",
-            "3055": "31B"
-        },
-        "3035": "BY"
-    }], ["NAD", {
-        "C082": {
-            "3039": "1556150",
-            "3055": "31B"
-        },
-        "3035": "SU"
-    }], ["NAD", {
-        "C082": {
-            "3039": "8888888",
-            "3055": "91"
-        },
-        "3035": "BY"
-    }], ["CUX", {
-        "C504": [{
-            "6345": "USD",
-            "6347": "2",
-            "6343": "9"
-        }]
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["SHAW, REBE COUNTRY LOVERS"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 5,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 5,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "85"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "01",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 12.95
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4641/1"
-            }
-        }]],
-        "C212": {
-            "7140": "9781400098224",
-            "7143": "EN"
-        },
-        "1082": 1,
-        "1229": "5"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["BLAKE, TON TEMPT ME TONIGHT"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 4,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 4,
-                "6063": "83"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "07",
-                "3055": "28",
-                "1131": "7B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 13.95
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4641/2"
-            }
-        }]],
-        "C212": {
-            "7140": "9780061136092",
-            "7143": "EN"
-        },
-        "1082": 2,
-        "1229": "24"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["MONING, KA BLOODFEVER"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 6,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 6,
-                "6063": "83"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "03",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 22
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4641/3"
-            }
-        }]],
-        "C212": {
-            "7140": "9780385339162",
-            "7143": "EN"
-        },
-        "1082": 3,
-        "1229": "24"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["MCKENNA, S EDGE OF MIDNIGHT"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 8,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 8,
-                "6063": "83"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "03",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 14
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4641/4"
-            }
-        }]],
-        "C212": {
-            "7140": "9780758211859",
-            "7143": "EN"
-        },
-        "1082": 4,
-        "1229": "24"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["BALZO, SAN GROUNDS FOR MURDER"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 8,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 8,
-                "6063": "83"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "03",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 27.95
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4641/5"
-            }
-        }]],
-        "C212": {
-            "7140": "9780727865496",
-            "7143": "EN"
-        },
-        "1082": 5,
-        "1229": "24"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["PALMER, DI HARD TO HANDLE"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 8,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 8,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "85"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "01",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 13.95
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4641/6"
-            }
-        }]],
-        "C212": {
-            "7140": "9780373772612",
-            "7143": "EN"
-        },
-        "1082": 6,
-        "1229": "5"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["JONES, LLO MR PIP"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 3,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 3,
-                "6063": "83"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "03",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 20
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4641/7"
-            }
-        }]],
-        "C212": {
-            "7140": "9780385341066",
-            "7143": "EN"
-        },
-        "1082": 7,
-        "1229": "24"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["JILES, PAU STORMY WEATHER"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 8,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 8,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "85"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "01",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 24.95
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4641/8"
-            }
-        }]],
-        "C212": {
-            "7140": "9780060537326",
-            "7143": "EN"
-        },
-        "1082": 8,
-        "1229": "5"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["DELILLO, D FALLING MAN A NOVEL"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 4,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 4,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "85"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "01",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 26
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4641/9"
-            }
-        }]],
-        "C212": {
-            "7140": "9781416546023",
-            "7143": "EN"
-        },
-        "1082": 9,
-        "1229": "5"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["MORRISON,  SWEETER THAN HONEY"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 3,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 3,
-                "6063": "83"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "03",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 24
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4641/10"
-            }
-        }]],
-        "C212": {
-            "7140": "9780758215116",
-            "7143": "EN"
-        },
-        "1082": 10,
-        "1229": "24"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["SMITH, SHE FOX"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 2,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 2,
-                "6063": "83"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "03",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 25.95
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4641/11"
-            }
-        }]],
-        "C212": {
-            "7140": "9780756404215",
-            "7143": "EN"
-        },
-        "1082": 11,
-        "1229": "24"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["GROSSMAN,  SOON I WILL BE INVINCIBL"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 2,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 2,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "85"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "01",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 22.95
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4641/12"
-            }
-        }]],
-        "C212": {
-            "7140": "9780375424861",
-            "7143": "EN"
-        },
-        "1082": 12,
-        "1229": "5"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["LEWYCKA, M SHORT HISTORY OF TRACTOR"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 3,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 3,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "85"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "01",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 14
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4641/13"
-            }
-        }]],
-        "C212": {
-            "7140": "9780143036746",
-            "7143": "EN"
-        },
-        "1082": 13,
-        "1229": "5"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["BANNISTER, FLAWED"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 4,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 4,
-                "6063": "83"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "03",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 24.95
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4641/14"
-            }
-        }]],
-        "C212": {
-            "7140": "9780312375669",
-            "7143": "EN"
-        },
-        "1082": 14,
-        "1229": "24"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["ALEXANDER, REMEMBERED"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 8,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 8,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "85"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "01",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 13.99
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4641/15"
-            }
-        }]],
-        "C212": {
-            "7140": "9780764201103",
-            "7143": "EN"
-        },
-        "1082": 15,
-        "1229": "5"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["TANIGUCHI, OCEAN IN THE CLOSET"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 2,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 2,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "85"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "01",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 14.95
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4641/16"
-            }
-        }]],
-        "C212": {
-            "7140": "9781566891943",
-            "7143": "EN"
-        },
-        "1082": 16,
-        "1229": "5"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["HENKE, ROX SECRET OF US"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 5,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 5,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "85"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "01",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 13.99
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4641/17"
-            }
-        }]],
-        "C212": {
-            "7140": "9780736917018",
-            "7143": "EN"
-        },
-        "1082": 17,
-        "1229": "5"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["HERMAN, KA EVER PRESENT DANGER"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 5,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 5,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "85"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "01",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 12.99
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4641/18"
-            }
-        }]],
-        "C212": {
-            "7140": "9781590529218",
-            "7143": "EN"
-        },
-        "1082": 18,
-        "1229": "5"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["CHAPMAN, G IT HAPPENS EVERY SPRING"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 5,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 5,
-                "6063": "83"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "07",
-                "3055": "28",
-                "1131": "7B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 12.99
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4641/19"
-            }
-        }]],
-        "C212": {
-            "7140": "9781414311654",
-            "7143": "EN"
-        },
-        "1082": 19,
-        "1229": "24"
-    }], ["LIN", {
-        "SG26": [["IMD", {
-            "C273": {
-                "7008": ["JACKSON, N YADA YADA PRAYER GROUP G"]
-            },
-            "7077": "F",
-            "7081": "BST"
-        }], ["QTY", {
-            "C186": {
-                "6060": 8,
-                "6063": "21"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 8,
-                "6063": "12"
-            }
-        }], ["QTY", {
-            "C186": {
-                "6060": 0,
-                "6063": "85"
-            }
-        }], ["FTX", {
-            "C107": {
-                "4441": "01",
-                "3055": "28",
-                "1131": "8B"
-            },
-            "4451": "LIN"
-        }], ["PRI", {
-            "C509": {
-                "5387": "SRP",
-                "5125": "AAB",
-                "5118": 13.99
-            }
-        }], ["RFF", {
-            "C506": {
-                "1153": "LI",
-                "1154": "4641/20"
-            }
-        }]],
-        "C212": {
-            "7140": "9781591453628",
-            "7143": "EN"
-        },
-        "1082": 20,
-        "1229": "5"
-    }], ["UNS", {
-        "0081": "S"
-    }], ["CNT", {
-        "C270": {
-            "6069": "2",
-            "6066": 20
-        }
-    }], ["UNT", {
-        "0074": 171,
-        "0062": "725"
-    }]]
-}],
-"recipient": "8888888",
-"sender": "1556150",
-"header": ["UNB", {
-    "S003": {
-        "0007": "31B",
-        "0010": "8888888"
-    },
-    "0020": "2045",
-    "S004": {
-        "0019": 1556,
-        "0017": 70618
-    },
-    "S001": {
-        "0001": "UNOC",
-        "0002": 3
-    },
-    "S002": {
-        "0007": "31B",
-        "0004": "1556150"
-    }
-}],
-"sender_qual": "31B",
-"UNA": {
-    "seg_term": "'",
-    "decimal_sign": ".",
-    "esc_char": "?",
-    "de_sep": "+",
-    "ce_sep": ":",
-    "rep_sep": " "
-},
-"recipient_qual": "31B"
-}

Copied: branches/rel_2_0/Open-ILS/tests/datasets/edi_scratch (from rev 17692, trunk/Open-ILS/tests/datasets/edi_scratch)


Property changes on: branches/rel_2_0/Open-ILS/tests/datasets/edi_scratch
___________________________________________________________________
Name: svn:mergeinfo
   + /trunk/edi_scratch:10932,10935

Modified: branches/rel_2_0/Open-ILS/web/templates/default/conify/global/acq/edi_account.tt2
===================================================================
--- branches/rel_2_0/Open-ILS/web/templates/default/conify/global/acq/edi_account.tt2	2010-09-15 13:13:32 UTC (rev 17692)
+++ branches/rel_2_0/Open-ILS/web/templates/default/conify/global/acq/edi_account.tt2	2010-09-15 13:27:21 UTC (rev 17693)
@@ -1,4 +1,5 @@
 [% WRAPPER default/base.tt2 %]
+[% ctx.page_title = 'EDI Accounts' %]
 <script type="text/javascript" src='[% ctx.media_prefix %]/js/ui/default/conify/global/acq/edi_account.js'> </script>
 
 <script type="text/javascript">



More information about the open-ils-commits mailing list