Bug 32030: Display the list of packages on the 'show agreement' view
authorJonathan Druart <jonathan.druart@bugs.koha-community.org>
Wed, 13 Jul 2022 15:29:10 +0000 (17:29 +0200)
committerTomas Cohen Arazi <tomascohen@theke.io>
Tue, 8 Nov 2022 12:44:13 +0000 (09:44 -0300)
Signed-off-by: Jonathan Field <jonathan.field@ptfs-europe.com>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Koha/ERM/Agreement.pm
Koha/ERM/EHoldings/Package.pm
Koha/ERM/EHoldings/Package/Agreement.pm
api/v1/swagger/paths/erm_agreements.yaml
cypress/integration/Agreements_spec.ts
koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/AgreementsFormAdd.vue
koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/AgreementsShow.vue
koha-tmpl/intranet-tmpl/prog/js/vue/fetch.js

index 9aeaa90..f199589 100644 (file)
@@ -27,6 +27,7 @@ use Koha::ERM::Agreement::UserRoles;
 use Koha::ERM::Agreement::Licenses;
 use Koha::ERM::Agreement::Relationships;
 use Koha::ERM::Agreement::Documents;
+use Koha::ERM::EHoldings::Package::Agreements;
 
 =head1 NAME
 
@@ -200,6 +201,18 @@ sub documents {
     return Koha::ERM::Agreement::Documents->_new_from_dbic($documents_rs);
 }
 
+=head3 agreement_packages
+
+Return the local packages for this agreement (and the other ones that have an entry locally)
+
+=cut
+
+sub agreement_packages {
+    my ( $self ) = @_;
+    my $packages_agreements_rs = $self->_result->erm_eholdings_packages_agreements;
+    return Koha::ERM::EHoldings::Package::Agreements->_new_from_dbic($packages_agreements_rs);
+}
+
 =head2 Internal methods
 
 =head3 _type
index a324887..6ee7975 100644 (file)
@@ -84,26 +84,6 @@ sub vendor {
     return Koha::Acquisition::Bookseller->_new_from_dbic($rs);
 }
 
-=head3 to_api_mapping
-
-=cut
-
-sub to_api_mapping {
-    my ( $self ) = @_;
-
-    return {
-        external_id => undef,
-        ( # Do we really need this?
-            $self->external_id
-            ? (
-                package_id       => $self->external_id,
-                koha_internal_id => $self->package_id
-              )
-            : ()
-        )
-    };
-}
-
 =head2 Internal methods
 
 =head3 _type
index f4ddf1a..0df41b4 100644 (file)
@@ -20,6 +20,7 @@ use Modern::Perl;
 use Koha::Database;
 
 use Koha::ERM::Agreement;
+use Koha::ERM::EHoldings::Package;
 
 use base qw(Koha::Object);
 
@@ -45,6 +46,18 @@ sub agreement {
     return Koha::ERM::Agreement->_new_from_dbic($agreement_rs);
 }
 
+=head3 package
+
+Return the package linked to this package package
+
+=cut
+
+sub package {
+    my ( $self ) = @_;
+    my $package_rs = $self->_result->package;
+    return Koha::ERM::EHoldings::Package->_new_from_dbic($package_rs);
+}
+
 =head2 Internal methods
 
 =head3 _type
index d244dce..6c311d5 100644 (file)
       - agreement_relationships.agreement
       - agreement_relationships.related_agreement
       - documents
+      - packages
   put:
     x-mojo-to: ERM::Agreements#update
     operationId: updateErmAgreements
index 493dceb..a592628 100644 (file)
@@ -36,6 +36,7 @@ function get_agreement() {
         user_roles: [],
         agreement_licenses: [],
         agreement_relationships: [],
+        agreement_packages: [],
         documents: [],
     };
 }
index a3f6bed..c6cec90 100644 (file)
@@ -312,6 +312,8 @@ export default {
 
             agreement.documents = agreement.documents.map(({ document_id, ...keepAttrs }) => keepAttrs)
 
+            delete agreement.agreement_packages
+
             const options = {
                 method: method,
                 body: JSON.stringify(agreement),
index 0eea2a4..4328db8 100644 (file)
@@ -78,7 +78,7 @@
                         <span>{{ agreement.license_info }}</span>
                     </li>
 
-                    <li>
+                    <li v-if="agreement.periods.length">
                         <label>{{ $t("Periods") }}</label>
                         <table>
                             <thead>
                         </table>
                     </li>
 
-                    <li>
+                    <li v-if="agreement.user_roles.length">
                         <label>{{ $t("Users") }}</label>
                         <table>
                             <thead>
                         </table>
                     </li>
 
-                    <li>
+                    <li v-if="agreement.agreement_licenses.length">
                         <label>{{ $t("Licenses") }}</label>
                         <table>
                             <thead>
                         </table>
                     </li>
 
-                    <li>
+                    <li v-if="agreement.agreement_relationships.length">
                         <label>{{ $t("Related agreements") }}</label>
-                        <div
-                            v-for="relationship in agreement.agreement_relationships"
-                            v-bind:key="relationship.related_agreement_id"
-                        >
-                            <span
-                                ><router-link
-                                    :to="`/cgi-bin/koha/erm/agreements/${relationship.related_agreement.agreement_id}`"
-                                    >{{
-                                        relationship.related_agreement.name
-                                    }}</router-link
-                                ></span
+                        <div id="agreement_relationships">
+                            <div
+                                v-for="relationship in agreement.agreement_relationships"
+                                v-bind:key="relationship.related_agreement_id"
                             >
-                            {{
-                                get_lib_from_av(
-                                    "av_agreement_relationships",
-                                    relationship.relationship
-                                )
-                            }}
-                            {{ agreement.name }}
+                                <span
+                                    ><router-link
+                                        :to="`/cgi-bin/koha/erm/agreements/${relationship.related_agreement.agreement_id}`"
+                                        >{{
+                                            relationship.related_agreement.name
+                                        }}</router-link
+                                    ></span
+                                >
+                                {{
+                                    get_lib_from_av(
+                                        "av_agreement_relationships",
+                                        relationship.relationship
+                                    )
+                                }}
+                                {{ agreement.name }}
+                            </div>
+                        </div>
+                    </li>
+
+                    <li v-if="agreement.agreement_packages.length">
+                        <label>{{ $t("Packages") }}</label>
+                        <div id="agreement_packages">
+                            <div
+                                v-for="agreement_package in agreement.agreement_packages"
+                                v-bind:key="agreement_package.package_id"
+                            >
+                                <span
+                                    v-if="
+                                        agreement_package.package.external_id &&
+                                        agreement_package.package.provider ==
+                                            'ebsco'
+                                    "
+                                >
+                                    <router-link
+                                        :to="`/cgi-bin/koha/erm/eholdings/ebsco/packages/${agreement_package.package.external_id}`"
+                                        >{{
+                                            agreement_package.package.name
+                                        }}</router-link
+                                    >
+                                    (EBSCO)</span
+                                >
+                                <span v-else
+                                    ><router-link
+                                        :to="`/cgi-bin/koha/erm/eholdings/local/packages/${agreement_package.package.package_id}`"
+                                        >{{
+                                            agreement_package.package.name
+                                        }}</router-link
+                                    >
+                                    (local)</span
+                                >
+                            </div>
                         </div>
                     </li>
                 </ol>
@@ -262,6 +299,7 @@ export default {
                 license_info: '',
                 periods: [],
                 user_roles: [],
+                agreement_packages: [],
             },
             initialized: false,
         }
@@ -289,4 +327,8 @@ export default {
     padding-left: 0.2em;
     font-size: 11px;
 }
+#agreement_relationships,
+#agreement_packages {
+    padding-left: 10rem;
+}
 </style>
\ No newline at end of file
index f578f6f..f9922dd 100644 (file)
@@ -7,7 +7,7 @@ export const fetchAgreement = async function (agreement_id) {
     await fetch(apiUrl, {
         headers: {
             "x-koha-embed":
-                "periods,user_roles,user_roles.patron,agreement_licenses,agreement_licenses.license,agreement_relationships,agreement_relationships.related_agreement,documents",
+                "periods,user_roles,user_roles.patron,agreement_licenses,agreement_licenses.license,agreement_relationships,agreement_relationships.related_agreement,documents,agreement_packages,agreement_packages.package",
         },
     })
         .then(checkError)