[OPEN-ILS-GENERAL] EDI Problems
Tim Spindler
tspindler at cwmars.org
Thu Dec 1 08:40:37 EST 2011
I have been doing a bit of testing of EDI and now i get the following error
after doing the following:
1. Create a test order connected to an EDI account (i have been
successfully running this until I changed the notification/trigger template)
2. Issue to send order to test site
./action_trigger_runner.pl --run_pending
./edi_pusher.pl
3. The following error is generated and no edi message created
Can't call method "id" on an undefined value at ./edi_pusher.pl line 139.
The other thing I did do is delete a bunch of orders form the database to
clean up all the testing we had been doing. I deleted rows in the tables
acq.purchase_order, acq.po_item, acq.po_note, acq.line_item, acq.line_item
detail. I modified the PO_JEDI template to read as follows. The line I
changes is this
"buyer":[
[% IF target.provider.edi_default.vendcode &&
(target.provider.code == 'BT' || target.provider.name.match('(?i)^BAKER &
TAYLOR')) -%]
{"id-qualifier": 91, "id":"[%
target.ordering_agency.mailing_address.san _ ' ' _
target.provider.edi_default.vendcode %]"}
[%- ELSIF target.provider.edi_default.vendcode &&
(target.provider.code == 'INGRAM' ||
target.provider.name.match('(?i)^ingra')) ||
target.provider.name.match('(?i)^ingrb')) -%]
{"id":"[% target.ordering_agency.mailing_address.san %]"},
{"id-qualifier": 91, "id":"[%
target.provider.edi_default.vendcode %]"}
[%- ELSE -%]
{"id":"[% target.ordering_agency.mailing_address.san %]"}
[%- END -%]
],
----------full template code below---------------------------
[%- USE date -%]
[%# start JEDI document
# Vendor specific kludges:
# BT - vendcode goes to NAD/BY *suffix* w/ 91 qualifier
# INGRAM - vendcode goes to NAD/BY *segment* w/ 91 qualifier (separately)
# BRODART - vendcode goes to FTX segment (lineitem level)
-%]
[%-
IF target.provider.edi_default.vendcode && target.provider.code ==
'BRODART';
xtra_ftx = target.provider.edi_default.vendcode;
END;
-%]
[%- BLOCK big_block -%]
{
"recipient":"[% target.provider.san %]",
"sender":"[% target.ordering_agency.mailing_address.san %]",
"body": [{
"ORDERS":[ "order", {
"po_number":[% target.id %],
"date":"[% date.format(date.now, '%Y%m%d') %]",
"buyer":[
[% IF target.provider.edi_default.vendcode &&
(target.provider.code == 'BT' || target.provider.name.match('(?i)^BAKER &
TAYLOR')) -%]
{"id-qualifier": 91, "id":"[%
target.ordering_agency.mailing_address.san _ ' ' _
target.provider.edi_default.vendcode %]"}
[%- ELSIF target.provider.edi_default.vendcode &&
(target.provider.code == 'INGRAM' ||
target.provider.name.match('(?i)^ingra')) ||
target.provider.name.match('(?i)^ingrb')) -%]
{"id":"[% target.ordering_agency.mailing_address.san %]"},
{"id-qualifier": 91, "id":"[%
target.provider.edi_default.vendcode %]"}
[%- ELSE -%]
{"id":"[% target.ordering_agency.mailing_address.san %]"}
[%- END -%]
],
"vendor":[
[%- # target.provider.name (target.provider.id) -%]
"[% target.provider.san %]",
{"id-qualifier": 92, "id":"[% target.provider.id %]"}
],
"currency":"[% target.provider.currency_type %]",
"items":[
[%- FOR li IN target.lineitems %]
{
"line_index":"[% li.id %]",
"identifiers":[ [%-# li.isbns =
helpers.get_li_isbns(li.attributes) %]
[% FOR isbn IN helpers.get_li_isbns(li.attributes) -%]
[% IF isbn.length == 13 -%]
{"id-qualifier":"EN","id":"[% isbn %]"},
[% ELSE -%]
{"id-qualifier":"IB","id":"[% isbn %]"},
[%- END %]
[% END %]
{"id-qualifier":"IN","id":"[% li.id %]"}
],
"price":[% li.estimated_unit_price || '0.00' %],
"desc":[
{"BTI":"[% helpers.get_li_attr_jedi('title', '',
li.attributes) %]"},
{"BPU":"[% helpers.get_li_attr_jedi('publisher', '',
li.attributes) %]"},
{"BPD":"[% helpers.get_li_attr_jedi('pubdate', '',
li.attributes) %]"},
{"BPH":"[% helpers.get_li_attr_jedi('pagination','',
li.attributes) %]"}
],
[%- ftx_vals = [];
FOR note IN li.lineitem_notes;
NEXT UNLESS note.vendor_public == 't';
ftx_vals.push(note.value);
END;
IF xtra_ftx; ftx_vals.unshift(xtra_ftx); END;
IF ftx_vals.size == 0; ftx_vals.unshift(''); END; #
BT needs FTX+LIN for every LI, even if it is an empty one
-%]
"free-text":[
[% FOR note IN ftx_vals -%] "[% note %]"[% UNLESS loop.last
%], [% END %][% END %]
],
"quantity":[% li.lineitem_details.size %]
}[% UNLESS loop.last %],[% END %]
[%-# TODO: lineitem details (later) -%]
[% END %]
],
"line_items":[% target.lineitems.size %]
}] [%# close ORDERS array %]
}] [%# close body array %]
}
[% END %]
[% tempo = PROCESS big_block; helpers.escape_json(tempo) %]
And it had worked when I had the following but when I returned it to this
state and rebooting the server I always get the above error.
[%- USE date -%]
[%# start JEDI document
# Vendor specific kludges:
# BT - vendcode goes to NAD/BY *suffix* w/ 91 qualifier
# INGRAM - vendcode goes to NAD/BY *segment* w/ 91 qualifier (separately)
# BRODART - vendcode goes to FTX segment (lineitem level)
-%]
[%-
IF target.provider.edi_default.vendcode && target.provider.code ==
'BRODART';
xtra_ftx = target.provider.edi_default.vendcode;
END;
-%]
[%- BLOCK big_block -%]
{
"recipient":"[% target.provider.san %]",
"sender":"[% target.ordering_agency.mailing_address.san %]",
"body": [{
"ORDERS":[ "order", {
"po_number":[% target.id %],
"date":"[% date.format(date.now, '%Y%m%d') %]",
"buyer":[
[% IF target.provider.edi_default.vendcode &&
(target.provider.code == 'BT' || target.provider.name.match('(?i)^BAKER &
TAYLOR')) -%]
{"id-qualifier": 91, "id":"[%
target.ordering_agency.mailing_address.san _ ' ' _
target.provider.edi_default.vendcode %]"}
[%- ELSIF target.provider.edi_default.vendcode &&
(target.provider.code == 'INGRAM' ||
target.provider.name.match('(?i)^ingra')) -%]
{"id":"[% target.ordering_agency.mailing_address.san %]"},
{"id-qualifier": 91, "id":"[%
target.provider.edi_default.vendcode %]"}
[%- ELSE -%]
{"id":"[% target.ordering_agency.mailing_address.san %]"}
[%- END -%]
],
"vendor":[
[%- # target.provider.name (target.provider.id) -%]
"[% target.provider.san %]",
{"id-qualifier": 92, "id":"[% target.provider.id %]"}
],
"currency":"[% target.provider.currency_type %]",
"items":[
[%- FOR li IN target.lineitems %]
{
"line_index":"[% li.id %]",
"identifiers":[ [%-# li.isbns =
helpers.get_li_isbns(li.attributes) %]
[% FOR isbn IN helpers.get_li_isbns(li.attributes) -%]
[% IF isbn.length == 13 -%]
{"id-qualifier":"EN","id":"[% isbn %]"},
[% ELSE -%]
{"id-qualifier":"IB","id":"[% isbn %]"},
[%- END %]
[% END %]
{"id-qualifier":"IN","id":"[% li.id %]"}
],
"price":[% li.estimated_unit_price || '0.00' %],
"desc":[
{"BTI":"[% helpers.get_li_attr_jedi('title', '',
li.attributes) %]"},
{"BPU":"[% helpers.get_li_attr_jedi('publisher', '',
li.attributes) %]"},
{"BPD":"[% helpers.get_li_attr_jedi('pubdate', '',
li.attributes) %]"},
{"BPH":"[% helpers.get_li_attr_jedi('pagination','',
li.attributes) %]"}
],
[%- ftx_vals = [];
FOR note IN li.lineitem_notes;
NEXT UNLESS note.vendor_public == 't';
ftx_vals.push(note.value);
END;
IF xtra_ftx; ftx_vals.unshift(xtra_ftx); END;
IF ftx_vals.size == 0; ftx_vals.unshift(''); END; #
BT needs FTX+LIN for every LI, even if it is an empty one
-%]
"free-text":[
[% FOR note IN ftx_vals -%] "[% note %]"[% UNLESS loop.last
%], [% END %][% END %]
],
"quantity":[% li.lineitem_details.size %]
}[% UNLESS loop.last %],[% END %]
[%-# TODO: lineitem details (later) -%]
[% END %]
],
"line_items":[% target.lineitems.size %]
}] [%# close ORDERS array %]
}] [%# close body array %]
}
[% END %]
[% tempo = PROCESS big_block; helpers.escape_json(tempo) %]
--
Tim Spindler
Manager of Library Applications
tspindler at cwmars.org
508-755-3323 x20
C/W MARS, Inc.
67 Millbrook St, Suite 201
Worcester, MA 01606
http://www.cwmars.org
*P** Go Green - **Save a tree! Please don't print this e-mail unless it's
really necessary.*
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://libmail.georgialibraries.org/pipermail/open-ils-general/attachments/20111201/e0234924/attachment-0001.htm>
More information about the Open-ils-general
mailing list