LP#1373690 IMD field repairs user/berick/lp1373690-acq-order-edi
authorBill Erickson <berickxx@gmail.com>
Mon, 18 May 2015 18:34:03 +0000 (14:34 -0400)
committerBill Erickson <berickxx@gmail.com>
Thu, 5 Nov 2015 15:02:08 +0000 (10:02 -0500)
Signed-off-by: Bill Erickson <berickxx@gmail.com>
Open-ILS/src/sql/Pg/upgrade/XXXX.data.acq-order-edi.sql

index 886c6c6..e7169c1 100644 (file)
@@ -205,6 +205,20 @@ FOR li IN target.lineitems;
     LINEITEMS.push(li_hash);
 
 END; # for lineitem
+
+# IMD fields are limited to 70 chars per value.  Any values longer
+# should be carried via repeating IMD fields.
+# IMD fields should only display the +::: when a value is present
+MACRO IMD(code, value) BLOCK;
+    IF NOT value; -%]
+IMD+F+[% code %]'
+    [%- ELSE; 
+        FOR line IN value.chunk(70) -%]
+IMD+F+[% code %]+:::[% helpers.escape_edi(line) %]'
+        [%- END;
+    END;
+END;
+
 -%]
 [%- BLOCK big_block -%]
 UNA:+.? '
@@ -220,14 +234,14 @@ CUX+2:[% target.provider.currency_type %]:9'
 [%- FOR li_hash IN LINEITEMS -%]
 LIN+[% li_hash.id %]++[% li_hash.idval %]:[% li_hash.idqual %]'
 PIA+5+[% li_hash.idval %]:[% li_hash.idqual %]'
-IMD+F+BTI[% IF li_hash.title %]+:::[% li_hash.title %][% END %]'
-IMD+F+BPD[% IF li_hash.pubdate %]+:::[% li_hash.pubdate %][% END %]'
-IMD+F+BPU[% IF li_hash.publisher %]+:::[% li_hash.publisher %][% END %]'
+[% IMD('BTI', li_hash.title) -%]
+[% IMD('BPD', li_hash.pubdate) -%]
+[% IMD('BPU', li_hash.publisher) -%]
 [%- IF VENDOR_ULS -%]
-IMD+F+BPU[% IF li_hash.author %]+:::[% li_hash.author %][% END %]'
-IMD+F+BEN[% IF li_hash.edition %]+:::[% li_hash.edition %][% END %]'
+[% IMD('BPU', li_hash.author) -%]
+[% IMD('BEN', li_hash.edition) -%]
 [%- ELSE -%]
-IMD+F+BPH[% IF li_hash.pagination %]+:::[% li_hash.pagination %][% END %]'
+[% IMD('BPH', li_hash.pagination) -%]
 [%- END -%]
 QTY+21:[% li_hash.quantity %]'
 [%- GIR_INDEX = 0; -%]