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:+.? '
[%- 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; -%]