my $addrs =
$e->search_actor_org_address({valid => "t", san => $buyer_san});
+ my $recv_ou;
+
if (not $addrs or not @$addrs) {
- $logger->error(
+ $logger->info(
$log_prefix . "couldn't find OU unit matching buyer SAN in INVOIC:".
- $e->event
+ $e->event->{textcode} . ", but sometimes this field might be an account " .
+ "number instead of a SAN, so we'll look for that next"
);
- return 0;
+
+ # Maybe "buyer SAN" is a misinterpretation of this
+ # field for (some?) vendors?
+ $addrs = $e->search_acq_edi_account({vendacct => $buyer_san});
+ if (not $addrs or not @$addrs) {
+ $logger->error(
+ $log_prefix . "could not find EDI account matching this " .
+ "number ($buyer_san) either: " . $e->event->{textcode}
+ );
+ return 0;
+ } else {
+ $recv_ou = $addrs->[0]->owner;
+ }
+ } else {
+ $recv_ou = $addrs->[0]->org_unit;
}
# XXX Should we verify that this matches PO ordering agency later?
- $eg_inv->receiver($addrs->[0]->org_unit);
+ $eg_inv->receiver($recv_ou);
try {
$eg_inv->inv_ident($invoice->{BGM}[0]{1004});