LP#1373690 EDI 'use_attrs' configuration option
authorBill Erickson <berickxx@gmail.com>
Fri, 18 Aug 2017 15:51:39 +0000 (11:51 -0400)
committerMike Rylander <mrylander@gmail.com>
Fri, 1 Sep 2017 17:13:30 +0000 (13:13 -0400)
Adds a new configuration option for EDI accounts specifying wether
purchase orders delivered via a given account should be constructed
using the new EDI Attributes in lieu of the traditional JEDI A/T
template.

The PurchaseOrderEDIRequired A/T validator now bypasses orders with
use_attrs=true accounts.  The new edi_order_pusher.pl script only
process providers whose default EDI accounts have use_attrs=true (except
when a specific PO ID is provided).

Signed-off-by: Bill Erickson <berickxx@gmail.com>
Signed-off-by: Mike Rylander <mrylander@gmail.com>
Open-ILS/examples/fm_IDL.xml
Open-ILS/src/perlmods/lib/OpenILS/Application/Trigger/Validator/Acq/PurchaseOrderEDIRequired.pm
Open-ILS/src/sql/Pg/200.schema.acq.sql
Open-ILS/src/sql/Pg/upgrade/XXXX.schema.edi_attr_set.sql
Open-ILS/src/support-scripts/edi_order_pusher.pl
docs/RELEASE_NOTES_NEXT/Administration/acq-edi-attrs.adoc

index 7f6e192..77871ff 100644 (file)
@@ -9214,6 +9214,7 @@ SELECT  usr,
                        <field name="vendacct"      reporter:datatype="text"      reporter:label="Vendor Account Number"/>
                        <field name="vendcode"      reporter:datatype="text"      reporter:label="Vendor Assigned Code"/>
                        <field name="attr_set"      reporter:datatype="link"      reporter:label="EDI Attribute Set"/>
+                       <field name="use_attrs"     reporter:datatype="bool"      reporter:label="Use EDI Attributes"/>
                </fields>
                <links>
                        <link field="provider" reltype="has_a" key="id" map="" class="acqpro"/>
index 211d75f..a0ae31f 100644 (file)
@@ -16,11 +16,11 @@ sub handler {
             new_editor->retrieve_acq_provider($po->provider);
 
     return 1 if 
-        ($po->state eq 'on-order' or
-         $po->state eq 'retry'      ) and 
-        $provider                     and 
-        $provider->edi_default        and 
-        $U->is_true($provider->active);
+        ($po->state eq 'on-order' || $po->state eq 'retry')
+        and $provider
+        and $provider->edi_default
+        and $U->is_true($provider->active)
+        and !$U->is_true($provider->edi_default->use_attrs);
 
     return 0;
 }
index 7fa60e3..c0670bb 100644 (file)
@@ -763,7 +763,8 @@ CREATE TABLE acq.edi_account (      -- similar tables can extend remote_account
     in_dir      TEXT,   -- incoming messages dir (probably different than config.remote_account.path, the outgoing dir)
     vendcode    TEXT,
     vendacct    TEXT,
-    attr_set    INTEGER REFERENCES acq.edi_attr_set(id) -- NULL OK
+    attr_set    INTEGER REFERENCES acq.edi_attr_set(id), -- NULL OK
+    use_attrs   BOOLEAN NOT NULL DEFAULT FALSE
 ) INHERITS (config.remote_account);
 
 -- We need a UNIQUE constraint here also, to support the FK from acq.provider.edi_default
index be1aa23..970f542 100644 (file)
@@ -23,8 +23,9 @@ CREATE TABLE acq.edi_attr_set_map (
 
 -- An attr_set is not strictly required, since some edi_accounts/vendors 
 -- may not need to apply any attributes.
-ALTER TABLE acq.edi_account ADD COLUMN attr_set 
-    INTEGER REFERENCES acq.edi_attr_set(id);
+ALTER TABLE acq.edi_account 
+    ADD COLUMN attr_set INTEGER REFERENCES acq.edi_attr_set(id),
+    ADD COLUMN use_attrs BOOLEAN NOT NULL DEFAULT FALSE;
 
 COMMIT;
 
index 380ed49..3d383f2 100755 (executable)
@@ -49,7 +49,8 @@ sub help {
         1. PO must be activated.
         2. PO provider must be active.
         3. PO must use a provider that supports EDI delivery (via edi_default)
-        4. PO must have no EDI ORDERS messages attached or, if it does, 
+        4. EDI account linked to provider must have 'use_attrs' set to true.
+        5. PO must have no EDI ORDERS messages attached or, if it does, 
            the message has a status of "retry".
 
     Usage:
@@ -118,7 +119,12 @@ if ($po_id) {
                     type => 'left',
                     filter => {message_type => 'ORDERS'}
                 },
-                acqpro => {}
+                acqpro => {
+                    join => {
+                        acqedi => {
+                        }
+                    }
+                }
             }
         },
         where => {
@@ -129,6 +135,9 @@ if ($po_id) {
                 active => 't', 
                 edi_default => {'!=' => undef}
             },
+            '+acqedi' => {
+                use_attrs => 't'
+            },
             '+acqedim' => {
                 '-or' => [
                     {id => undef}, # no ORDERS message exists
index db69841..6100824 100644 (file)
@@ -36,3 +36,15 @@ attributes.
 . After moving to edi_order_pusher.pl, the JEDI Action/Trigger event
   definition is no longer required.  It can be disabled.
 
+Migration
++++++++++
+
+EDI accounts have a new boolean field "Use EDI Attributes" (use_attrs) that 
+specifies whether PO's generated via the account should be built using 
+EDI attributes or fall back to traditional JEDI A/T template generation.
+
+This allows sites to activate EDI attributes on a per-account basis, making 
+it possible to migrate piecemeal to EDI attributes.  For the initial roll
+out of this new features, no accounts will be configured to use EDI 
+attributes by default.  
+