From: Bill Erickson Date: Fri, 27 Jul 2012 16:11:23 +0000 (-0400) Subject: EDI with copies JEDI template; part 1 X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=refs%2Fheads%2Facq-edi-orders-with-copies;p=evergreen%2Fequinox.git EDI with copies JEDI template; part 1 Signed-off-by: Bill Erickson --- diff --git a/Open-ILS/src/sql/Pg/950.data.seed-values.sql b/Open-ILS/src/sql/Pg/950.data.seed-values.sql index f76ae20336..8fae55de95 100644 --- a/Open-ILS/src/sql/Pg/950.data.seed-values.sql +++ b/Open-ILS/src/sql/Pg/950.data.seed-values.sql @@ -8050,7 +8050,9 @@ $$ INSERT INTO action_trigger.environment (event_def, path) VALUES (23, 'lineitems.attributes'), - (23, 'lineitems.lineitem_details'), + (23, 'lineitems.lineitem_details.owning_lib'), + (23, 'lineitems.lineitem_details.location'), + (23, 'lineitems.lineitem_details.fund'), (23, 'lineitems.lineitem_notes'), (23, 'ordering_agency.mailing_address'), (23, 'provider'), diff --git a/Open-ILS/src/sql/Pg/upgrade/XXXX.data.jedi_with_copies.sql b/Open-ILS/src/sql/Pg/upgrade/XXXX.data.jedi_with_copies.sql new file mode 100644 index 0000000000..2155700e02 --- /dev/null +++ b/Open-ILS/src/sql/Pg/upgrade/XXXX.data.jedi_with_copies.sql @@ -0,0 +1,139 @@ +UPDATE action_trigger.event_definition SET template = +$$[%- 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' -%] + {"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 %], + "copies" : [ + [%- IF 1 -%] + [%- FOR lid IN li.lineitem_details -%] + { [%- IF lid.fund %] "fund" : "[% lid.fund.code %]",[% END -%] + [%- IF lid.cn_label %] "call_number" : "[% lid.cn_label %]", [% END -%] + [%- IF lid.circ_modifier %] "item_type" : "[% lid.circ_modifier %]", [% END -%] + [%- IF lid.location %] "copy_location" : "[% lid.location.name %]", [% END -%] + [%- IF lid.owning_lib %] "owning_lib" : "[% lid.owning_lib.shortname %]", [% END -%] + [%- #chomp %]"copy_id" : "[% lid.eg_copy_id %]" }[% ',' UNLESS loop.last %] + [% END -%] + [%- END -%] + ] + }[% 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) %] +$$ +WHERE id = 23; + + +-- add copy-related fields to the environment if they're not already there. +DO $$ +BEGIN + PERFORM 1 + FROM action_trigger.environment + WHERE + event_def = 23 AND + path = 'lineitems.lineitem_details.owning_lib'; + IF NOT FOUND THEN + INSERT INTO action_trigger.environment (event_def, path) + VALUES (23, 'lineitems.lineitem_details.owning_lib'); + END IF; + + PERFORM 1 + FROM action_trigger.environment + WHERE + event_def = 23 AND + path = 'lineitems.lineitem_details.fund'; + IF NOT FOUND THEN + INSERT INTO action_trigger.environment (event_def, path) + VALUES (23, 'lineitems.lineitem_details.fund'); + END IF; + + PERFORM 1 + FROM action_trigger.environment + WHERE + event_def = 23 AND + path = 'lineitems.lineitem_details.location'; + IF NOT FOUND THEN + INSERT INTO action_trigger.environment (event_def, path) + VALUES (23, 'lineitems.lineitem_details.location'); + END IF; + + -- remove redundant entry + DELETE FROM action_trigger.environment + WHERE event_def = 23 AND path = 'lineitems.lineitem_details'; + +END $$; + + +