diff --git a/ui/src/app/records/custom-editor/circulation-settings/circulation-policy-form.service.ts b/ui/src/app/records/custom-editor/circulation-settings/circulation-policy-form.service.ts index d653242b68..f51179c114 100644 --- a/ui/src/app/records/custom-editor/circulation-settings/circulation-policy-form.service.ts +++ b/ui/src/app/records/custom-editor/circulation-settings/circulation-policy-form.service.ts @@ -49,6 +49,7 @@ export class CirculationPolicyFormService { allow_requests: circulation.allow_requests, number_renewals: circulation.number_renewals, renewal_duration: circulation.renewal_duration, + overdue_amount: circulation.overdue_amount, policy_library_level: circulation.policy_library_level, is_default: circulation.is_default, settings: this.unserializeSettings(circulation.settings) @@ -76,8 +77,10 @@ export class CirculationPolicyFormService { checkout_duration: [7], number_of_days_after_due_date: [5], number_of_days_before_due_date: [5], + allow_renewals: [true], number_renewals: [0], renewal_duration: [null], + overdue_amount: [0], policy_library_level: [false], is_default: [], libraries: [], @@ -90,16 +93,13 @@ export class CirculationPolicyFormService { const numberRenewalsControl = this.getControlByFieldName('number_renewals'); const daysAfterControl = this.getControlByFieldName('number_of_days_after_due_date'); const daysBeforeControl = this.getControlByFieldName('number_of_days_before_due_date'); + const overdueAmountControl = this.getControlByFieldName('overdue_amount'); this.form.get('allow_checkout').valueChanges.subscribe(checkout => { if (checkout) { checkoutDurationControl.setValidators([ Validators.required, Validators.min(1) ]); - numberRenewalsControl.setValidators([ - Validators.required, - Validators.min(0) - ]); daysAfterControl.setValidators([ Validators.required, Validators.min(1) @@ -108,10 +108,26 @@ export class CirculationPolicyFormService { Validators.required, Validators.min(1) ]); + overdueAmountControl.setValidators([ + Validators.required, + Validators.min(0) + ]); } else { checkoutDurationControl.clearValidators(); numberRenewalsControl.clearValidators(); daysAfterControl.clearValidators(); + daysBeforeControl.clearValidators(); + overdueAmountControl.clearValidators(); + } + }); + this.form.get('allow_renewals').valueChanges.subscribe(renewals => { + if (renewals) { + numberRenewalsControl.setValidators([ + Validators.required, + Validators.min(0) + ]); + } else { + numberRenewalsControl.clearValidators(); } }); const renewalDuration = this.getControlByFieldName('renewal_duration'); @@ -133,6 +149,8 @@ export class CirculationPolicyFormService { getValues() { const formValues = this.form.value; + // delete calculate field before returns values of form + formValues.allow_renewals = null; formValues.libraries = this.serializeLibraries(formValues.libraries); formValues.settings = this.serializeSettings(formValues.settings); return formValues; diff --git a/ui/src/app/records/custom-editor/circulation-settings/circulation-policy.ts b/ui/src/app/records/custom-editor/circulation-settings/circulation-policy.ts index 274a808686..0b44bba2f9 100644 --- a/ui/src/app/records/custom-editor/circulation-settings/circulation-policy.ts +++ b/ui/src/app/records/custom-editor/circulation-settings/circulation-policy.ts @@ -35,6 +35,7 @@ export class CirculationPolicy { number_of_days_before_due_date: number = null; number_renewals: number = null; renewal_duration: number = null; + overdue_amount: number = null; policy_library_level: boolean = null; is_default: boolean = null; libraries: Array = []; @@ -54,6 +55,7 @@ export class CirculationPolicy { this.number_of_days_after_due_date = 5; this.number_of_days_before_due_date = 5; this.number_renewals = 0; + this.overdue_amount = 0; this.policy_library_level = false; this.is_default = false; this.organisation = { diff --git a/ui/src/app/records/custom-editor/circulation-settings/circulation-policy/circulation-policy.component.html b/ui/src/app/records/custom-editor/circulation-settings/circulation-policy/circulation-policy.component.html index 7d4b586a79..4b7f025447 100644 --- a/ui/src/app/records/custom-editor/circulation-settings/circulation-policy/circulation-policy.component.html +++ b/ui/src/app/records/custom-editor/circulation-settings/circulation-policy/circulation-policy.component.html @@ -21,246 +21,303 @@
-

Circulation Policy

-
-
- -
- -
-
- Name is required. -
-
- Name must be at least 2 characters long. -
-
- Name is already taken. -
-
-
-
-
- -
- -
-
-
-
Allow
-
-
- - -
- -
- - -
-
-
-
- -
- -
-
- Checkout duration is required. -
-
- Checkout duration must be greater than 1. -
-
-
-
- -
- -
- -
-
- First reminder days is required. -
-
- First reminder days must be greater than 0. +

Circulation Policy

+ +
+ +
+ +
+
+ Name is required. +
+
+ Name must be at least 2 characters long. +
+
+ Name is already taken. +
-
- - -
- -
- -
-
- Days before due date is required. -
-
- Days before due date must be greater or equal to 0. -
+
+ +
+
-
-
- -
- -
-
- Checkout duration is required. -
-
- Checkout duration must be greater than 0. -
-
-
-
-
- -
- -
-
- Renewal duration is required. -
-
- Checkout duration must be great than 1. + +
+
+ Circulation settings +
+
+
+
+
+ + {{ 'checkout' | translate | titlecase }} +
+
+
+
+ +
+ +
+
+ Checkout duration is required. +
+
+ Checkout duration must be greater than 1. +
+
+
+
+
+
+
+
+
+ + {{ 'renewals' | translate | titlecase }} +
+
+
+
+ +
+ +
+
+ Checkout duration is required. +
+
+ Checkout duration must be greater than 0. +
+
+
+
+
+ +
+ +
+
+ Renewal duration is required. +
+
+ Checkout duration must be great than 1. +
+
+
+
+
+
+
+
+
+ + {{ 'requests' | translate | titlecase }} +
+
+
+
-
-
+ + -
- -
- -
-
-
- + + - -
- -
-
- {{ patronType.name }} -
- Circulation categories: -
    -
  • - {{ itemType.name }} -
  • -
+ +
+
+ Application +
+
+ +
+ +
+
+ +
+
+ +
+
+
+
+ +
+
+ + {{ library.name }} +
+
+
+ + + +
+ +
+
+ {{ patronType.name }} +
+ Circulation categories: +
    +
  • + {{ itemType.name }} +
  • +
+
+
+
+
+
-
- -
+ + -
-
- - +
+
+ + +
-
- +
diff --git a/ui/src/app/records/custom-editor/circulation-settings/circulation-policy/circulation-policy.component.ts b/ui/src/app/records/custom-editor/circulation-settings/circulation-policy/circulation-policy.component.ts index 7f4ffd9d64..acefe08a56 100644 --- a/ui/src/app/records/custom-editor/circulation-settings/circulation-policy/circulation-policy.component.ts +++ b/ui/src/app/records/custom-editor/circulation-settings/circulation-policy/circulation-policy.component.ts @@ -43,6 +43,8 @@ export class CirculationPolicyComponent implements OnInit { public librariesOrg = []; + public organisation; + constructor( private router: Router, private route: ActivatedRoute, @@ -66,7 +68,11 @@ export class CirculationPolicyComponent implements OnInit { circulation['organisation']['$ref'] = this.organisationService .getApiEntryPointRecord(user.library.organisation.pid); this.circulationPolicy = circulation; - + // Load organisation + this.recordsService.getRecord('organisations', user.library.organisation.pid) + .subscribe( + data => this.organisation = data.metadata + ); // Load all required elements this.circulationPolicyService .loadAllItemTypesPatronTypesCirculationPolicies() @@ -112,10 +118,19 @@ export class CirculationPolicyComponent implements OnInit { allowCheckoutCheckbox(checkbox: boolean) { if (!this.allow_checkout.value) { this.checkout_duration.setValue(null); + this.allow_renewals.setValue(false); this.number_renewals.setValue(null); this.renewal_duration.setValue(null); this.number_of_days_after_due_date.setValue(null); this.number_of_days_before_due_date.setValue(null); + this.overdue_amount.setValue(null); + } + } + + allowRenewalsCheckbox(checkbox: boolean) { + if (!this.allow_renewals.value) { + this.number_renewals.setValue(null); + this.renewal_duration.setValue(null); } } @@ -233,6 +248,12 @@ export class CirculationPolicyComponent implements OnInit { get allow_checkout() { return this.getField('allow_checkout'); } + get allow_requests() { + return this.getField('allow_requests'); + } + get allow_renewals() { + return this.getField('allow_renewals'); + } get number_of_days_after_due_date() { return this.getField('number_of_days_after_due_date'); } @@ -248,6 +269,12 @@ export class CirculationPolicyComponent implements OnInit { get renewal_duration() { return this.getField('renewal_duration'); } + get overdue_amount() { + return this.getField('overdue_amount'); + } + get currency() { + return this.organisation.default_currency; + } get policy_library_level() { return this.getField('policy_library_level'); } diff --git a/ui/src/assets/i18n/de.json b/ui/src/assets/i18n/de.json index f96143029f..76a6d03c73 100644 --- a/ui/src/assets/i18n/de.json +++ b/ui/src/assets/i18n/de.json @@ -160,29 +160,35 @@ "Pick-up Location": "Abholort", "Request date": "Datum der Bestellung", "Please insert a name": "Bitte erfassen Sie einen Namen", - "Days before due date": "Anzahl an Tagen vor Rückgabetermin", + "renewals": "", + "requests": "Bestellungen", + "Fees": "", + "Notifications and fees": "", "Loading…": "Wird geladen...", "Name": "Name", "Name is required.": "Name ist erforderlich.", "Name must be at least 2 characters long.": "Der Name muss mindestens 2 Zeichen lang sein.", "Name is already taken.": "Name ist bereits vergeben.", "Description": "Beschreibung", - "Allow": "Erlauben", - "requests": "Bestellungen", + "Circulation settings": "", "Checkout duration": "Ausleihdauer", "Checkout duration is required.": "Ausleihdauer ist erforderlich.", "Checkout duration must be greater than 1.": "Ausleihdauer muss größer als 1 sein.", - "First reminder days": "Erste Erinnerungstage", - "First reminder days is required.": "Erster Erinnerungstag ist erforderlich.", - "First reminder days must be greater than 0.": "First reminder days must be greater than 0.", - "Circulation Policy": "Ausleihpolitik", - "Days before due date is required.": "Tagen vor Rückgabetermin ist erforderlich.", - "Days before due date must be greater or equal to 0.": "Die Tage vor dem Fälligkeitsdatum müssen größer oder gleich 0 sein.", "Number of renewals": "Anzahl von Verlängerungen", "Checkout duration must be greater than 0.": "Ausleihdauer muss größer als 0 sein.", "Renewal duration": "Verlängerungsdauer", "Renewal duration is required.": "Verlängerungsdauer ist erforderlich.", "Checkout duration must be great than 1.": "Ausleihdauer muss größer als 1 sein.", + "Circulation Policy": "Ausleihpolitik", + "First reminder days": "Erste Erinnerungstage", + "First reminder days is required.": "Erster Erinnerungstag ist erforderlich.", + "First reminder days must be greater than 0.": "First reminder days must be greater than 0.", + "Days before due date": "Anzahl an Tagen vor Rückgabetermin", + "Days before due date is required.": "Tagen vor Rückgabetermin ist erforderlich.", + "Days before due date must be greater or equal to 0.": "Die Tage vor dem Fälligkeitsdatum müssen größer oder gleich 0 sein.", + "Overdue amount is required.": "", + "Overdue amount must be great than 0.": "", + "Application": "", "Level": "Ebene", "Organisation": "Organisation", "Applies to patron types": "Gilt für Lesertypen", @@ -242,4 +248,4 @@ "Persons": "Persons", "results": "Resultate", "No result found.": "Keine Resultate gefunden." -} \ No newline at end of file +} diff --git a/ui/src/assets/i18n/en.json b/ui/src/assets/i18n/en.json index fafa209400..ecb920c9f0 100644 --- a/ui/src/assets/i18n/en.json +++ b/ui/src/assets/i18n/en.json @@ -160,29 +160,35 @@ "Pick-up Location": "Pick-up Location", "Request date": "Request date", "Please insert a name": "Please insert a name", - "Days before due date": "Days before due date", + "renewals": "renewals", + "requests": "requests", + "Fees": "Fees", + "Notifications and fees": "Notifications and fees", "Loading…": "Loading…", "Name": "Name", "Name is required.": "Name is required.", "Name must be at least 2 characters long.": "Name must be at least 2 characters long.", "Name is already taken.": "Name is already taken.", "Description": "Description", - "Allow": "Allow", - "requests": "requests", + "Circulation settings": "Circulation settings", "Checkout duration": "Checkout duration", "Checkout duration is required.": "Checkout duration is required.", "Checkout duration must be greater than 1.": "Checkout duration must be greater than 1.", - "First reminder days": "First reminder days", - "First reminder days is required.": "First reminder days is required.", - "First reminder days must be greater than 0.": "First reminder days must be greater than 0.", - "Circulation Policy": "Circulation Policy", - "Days before due date is required.": "Days before due date is required.", - "Days before due date must be greater or equal to 0.": "Days before due date must be greater or equal to 0.", "Number of renewals": "Number of renewals", "Checkout duration must be greater than 0.": "Checkout duration must be greater than 0.", "Renewal duration": "Renewal duration", "Renewal duration is required.": "Renewal duration is required.", "Checkout duration must be great than 1.": "Checkout duration must be greater than 1.", + "Circulation Policy": "Circulation Policy", + "First reminder days": "First reminder days", + "First reminder days is required.": "First reminder days is required.", + "First reminder days must be greater than 0.": "First reminder days must be greater than 0.", + "Days before due date": "Days before due date", + "Days before due date is required.": "Days before due date is required.", + "Days before due date must be greater or equal to 0.": "Days before due date must be greater or equal to 0.", + "Overdue amount is required.": "Overdue amount is required.", + "Overdue amount must be great than 0.": "Overdue amount must be great than 0.", + "Application": "Application", "Level": "Level", "Organisation": "Organisation", "Applies to patron types": "Apply to patron types", diff --git a/ui/src/assets/i18n/en_US.json b/ui/src/assets/i18n/en_US.json index e801592f6c..70c1ef4536 100644 --- a/ui/src/assets/i18n/en_US.json +++ b/ui/src/assets/i18n/en_US.json @@ -160,29 +160,35 @@ "Pick-up Location": "Pick-up Location", "Request date": "Request date", "Please insert a name": "Please insert a name", - "Days before due date": "Days before due date", + "renewals": "renewals", + "requests": "requests", + "Fees": "Fees", + "Notifications and fees": "Notifications and fees", "Loading\u2026": "Loading\u2026", "Name": "Name", "Name is required.": "Name is required.", "Name must be at least 2 characters long.": "Name must be at least 2 characters long.", "Name is already taken.": "Name is already taken.", "Description": "Description", - "Allow": "Allow", - "requests": "requests", + "Circulation settings": "Circulation settings", "Checkout duration": "Checkout duration", "Checkout duration is required.": "Checkout duration is required.", "Checkout duration must be greater than 1.": "Checkout duration must be greater than 1.", - "First reminder days": "First reminder days", - "First reminder days is required.": "First reminder days is required.", - "First reminder days must be greater than 0.": "First reminder days must be greater than 0.", - "Circulation Policy": "Circulation Policy", - "Days before due date is required.": "Days before due date is required.", - "Days before due date must be greater or equal to 0.": "Days before due date must be greater or equal to 0.", "Number of renewals": "Number of renewals", "Checkout duration must be greater than 0.": "Checkout duration must be greater than 0.", "Renewal duration": "Renewal duration", "Renewal duration is required.": "Renewal duration is required.", "Checkout duration must be great than 1.": "Checkout duration must be great than 1.", + "Circulation Policy": "Circulation Policy", + "First reminder days": "First reminder days", + "First reminder days is required.": "First reminder days is required.", + "First reminder days must be greater than 0.": "First reminder days must be greater than 0.", + "Days before due date": "Days before due date", + "Days before due date is required.": "Days before due date is required.", + "Days before due date must be greater or equal to 0.": "Days before due date must be greater or equal to 0.", + "Overdue amount is required.": "Overdue amount is required.", + "Overdue amount must be great than 0.": "Overdue amount must be great than 0.", + "Application": "Application", "Level": "Level", "Organisation": "Organisation", "Applies to patron types": "Applies to patron types", diff --git a/ui/src/assets/i18n/fr.json b/ui/src/assets/i18n/fr.json index 72efdcad12..939e2d8398 100644 --- a/ui/src/assets/i18n/fr.json +++ b/ui/src/assets/i18n/fr.json @@ -160,29 +160,35 @@ "Pick-up Location": "Lieu de retrait", "Request date": "Date de la demande", "Please insert a name": "Veuillez introduire un nom", - "Days before due date": "Nombre de jours avant l'échéance", + "renewals": "", + "requests": "demandes", + "Fees": "", + "Notifications and fees": "", "Loading…": "Chargement en cours...", "Name": "Nom", "Name is required.": "Le nom est obligatoire.", "Name must be at least 2 characters long.": "Le nom doit comporter au moins 2 caractères.", "Name is already taken.": "Le nom est déjà pris.", "Description": "Description", - "Allow": "Permettre", - "requests": "demandes", + "Circulation settings": "", "Checkout duration": "Durée du prêt", "Checkout duration is required.": "La durée du prêt est obligatoire.", "Checkout duration must be greater than 1.": "La durée du prêt doit être supérieure à 1.", - "First reminder days": "Nombre de jours pour le premier rappel", - "First reminder days is required.": "Le nombre de jours pour le premier rappel est obligatoire.", - "First reminder days must be greater than 0.": "Le nombre de jours pour le premier rappel doit être supérieur à 0.", - "Circulation Policy": "Politique de prêt", - "Days before due date is required.": "Le nombre de jours avant la date d'échéance est obligatoire.", - "Days before due date must be greater or equal to 0.": "Le nombre de jours avant la date d'échéance doit être supérieur ou égal à 0.", "Number of renewals": "Nombre de prolongations", "Checkout duration must be greater than 0.": "La durée du prêt doit être supérieure à 0.", "Renewal duration": "Durée du renouvellement", "Renewal duration is required.": "La durée du renouvellement est obligatoire.", "Checkout duration must be great than 1.": "La durée du prêt doit être supérieure à 1.", + "Circulation Policy": "Politique de prêt", + "First reminder days": "Nombre de jours pour le premier rappel", + "First reminder days is required.": "Le nombre de jours pour le premier rappel est obligatoire.", + "First reminder days must be greater than 0.": "Le nombre de jours pour le premier rappel doit être supérieur à 0.", + "Days before due date": "Nombre de jours avant l'échéance", + "Days before due date is required.": "Le nombre de jours avant la date d'échéance est obligatoire.", + "Days before due date must be greater or equal to 0.": "Le nombre de jours avant la date d'échéance doit être supérieur ou égal à 0.", + "Overdue amount is required.": "", + "Overdue amount must be great than 0.": "", + "Application": "", "Level": "Niveau", "Organisation": "Organisation", "Applies to patron types": "Appliquer aux types de lecteur", @@ -242,4 +248,4 @@ "Persons": "Personnes", "results": "résultats", "No result found.": "Aucun résultat n'a été trouvé." -} \ No newline at end of file +} diff --git a/ui/src/assets/i18n/it.json b/ui/src/assets/i18n/it.json index 32e657dff1..2123819430 100644 --- a/ui/src/assets/i18n/it.json +++ b/ui/src/assets/i18n/it.json @@ -160,29 +160,35 @@ "Pick-up Location": "Luogo di ritiro", "Request date": "Data della richiesta", "Please insert a name": "Si prega di inserire un nome", - "Days before due date": "Il numero di giorni prima della scadenza", + "renewals": "", + "requests": "richiesti", + "Fees": "", + "Notifications and fees": "", "Loading…": "Caricamento...", "Name": "Nome", "Name is required.": "Il nome è richiesto.", "Name must be at least 2 characters long.": "Il nome deve essere lungo almeno 2 caratteri.", "Name is already taken.": "Il nome è già utilizzato.", "Description": "Descrizione", - "Allow": "Autorizare", - "requests": "richiesti", + "Circulation settings": "", "Checkout duration": "Durata del prestito", "Checkout duration is required.": "La durata del prestito è richiesta.", "Checkout duration must be greater than 1.": "La durata del prestito deve essere superiore a 1.", - "First reminder days": "Numero di giorni per il primo richiamo", - "First reminder days is required.": "Il numero di giorni per il primo richiamo è obbligatorio.", - "First reminder days must be greater than 0.": "Il numero di giorni per il primo richiamo deve essere superiore a 0.", - "Circulation Policy": "Politica di prestito", - "Days before due date is required.": "Il numero di giorni prima della scadenza è obbligatorio.", - "Days before due date must be greater or equal to 0.": "Il numero di giorni prima della scadenza deve essere maggiore o uguale a 0.", "Number of renewals": "Numero di proroghe", "Checkout duration must be greater than 0.": "La durata del prestito deve essere superiore a 0.", "Renewal duration": "Durata di proroga", "Renewal duration is required.": "La durata del rinnovo è necessaria.", "Checkout duration must be great than 1.": "La durata del prestito deve essere maggiore di 1 giorno.", + "Circulation Policy": "Politica di prestito", + "First reminder days": "Numero di giorni per il primo richiamo", + "First reminder days is required.": "Il numero di giorni per il primo richiamo è obbligatorio.", + "First reminder days must be greater than 0.": "Il numero di giorni per il primo richiamo deve essere superiore a 0.", + "Days before due date": "Il numero di giorni prima della scadenza", + "Days before due date is required.": "Il numero di giorni prima della scadenza è obbligatorio.", + "Days before due date must be greater or equal to 0.": "Il numero di giorni prima della scadenza deve essere maggiore o uguale a 0.", + "Overdue amount is required.": "", + "Overdue amount must be great than 0.": "", + "Application": "", "Level": "Livello", "Organisation": "Organizzazione", "Applies to patron types": "Si applica ai tipi di lettori", @@ -242,4 +248,4 @@ "Persons": "Persone", "results": "risultati", "No result found.": "Nessun risultato trovato." -} \ No newline at end of file +}