From 6a354485a446571ec607f955bf82dd59be67fdae Mon Sep 17 00:00:00 2001 From: MatumiK Date: Sun, 18 Jan 2026 07:59:45 +0200 Subject: [PATCH 1/2] fixed redistributution error --- docker-compose.yml | 2 +- .../messages_en.json | 0 .../redistribution-toolbar.html | 0 .../requisition-redistribution.controller.js | 0 .../requisition-redistribution.html | 0 .../requisition-redistribution.module.js | 0 .../requisition-redistribution.routes.js | 0 7 files changed, 1 insertion(+), 1 deletion(-) rename {src/requisition-redistribution => requisition-redistribution}/messages_en.json (100%) rename {src/requisition-redistribution => requisition-redistribution}/redistribution-toolbar.html (100%) rename {src/requisition-redistribution => requisition-redistribution}/requisition-redistribution.controller.js (100%) rename {src/requisition-redistribution => requisition-redistribution}/requisition-redistribution.html (100%) rename {src/requisition-redistribution => requisition-redistribution}/requisition-redistribution.module.js (100%) rename {src/requisition-redistribution => requisition-redistribution}/requisition-redistribution.routes.js (100%) diff --git a/docker-compose.yml b/docker-compose.yml index f264a9e..accaa97 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -50,7 +50,7 @@ services: volumes: - '/openlmis-report-ui' requisition-ui: - image: openlmis/requisition-ui:7.0.15-SNAPSHOT + image: elmislesotho/requisition-ui:0.0.2 volumes: - '/openlmis-requisition-ui' stockmanagement-ui: diff --git a/src/requisition-redistribution/messages_en.json b/requisition-redistribution/messages_en.json similarity index 100% rename from src/requisition-redistribution/messages_en.json rename to requisition-redistribution/messages_en.json diff --git a/src/requisition-redistribution/redistribution-toolbar.html b/requisition-redistribution/redistribution-toolbar.html similarity index 100% rename from src/requisition-redistribution/redistribution-toolbar.html rename to requisition-redistribution/redistribution-toolbar.html diff --git a/src/requisition-redistribution/requisition-redistribution.controller.js b/requisition-redistribution/requisition-redistribution.controller.js similarity index 100% rename from src/requisition-redistribution/requisition-redistribution.controller.js rename to requisition-redistribution/requisition-redistribution.controller.js diff --git a/src/requisition-redistribution/requisition-redistribution.html b/requisition-redistribution/requisition-redistribution.html similarity index 100% rename from src/requisition-redistribution/requisition-redistribution.html rename to requisition-redistribution/requisition-redistribution.html diff --git a/src/requisition-redistribution/requisition-redistribution.module.js b/requisition-redistribution/requisition-redistribution.module.js similarity index 100% rename from src/requisition-redistribution/requisition-redistribution.module.js rename to requisition-redistribution/requisition-redistribution.module.js diff --git a/src/requisition-redistribution/requisition-redistribution.routes.js b/requisition-redistribution/requisition-redistribution.routes.js similarity index 100% rename from src/requisition-redistribution/requisition-redistribution.routes.js rename to requisition-redistribution/requisition-redistribution.routes.js From 696685a75352a3fd8aefd20adda2048e14cf9f10 Mon Sep 17 00:00:00 2001 From: MatumiK Date: Sun, 18 Jan 2026 11:18:03 +0200 Subject: [PATCH 2/2] using new requisition image and removed requisition files --- docker-compose.yml | 2 +- .../convert-to-order.html | 68 -- .../messages_en.json | 29 - src/requisition-initiate/period.factory.js | 123 --- .../order-create.routes.js | 47 -- .../requisition-search.controller.js | 323 -------- .../requisition-search.html | 93 --- .../requisition-search.routes.js | 65 -- .../requisition-view-tab.controller.js | 526 ------------ src/requisition-view/full-supply.routes.js | 87 -- src/requisition-view/messages_en.json | 85 -- src/requisition-view/requisition-toolbar.html | 14 - .../requisition-view.controller.js | 773 ------------------ src/requisition-view/requisition-view.html | 46 -- .../requisition-view.module.js | 43 - .../requisition-view.routes.js | 90 -- 16 files changed, 1 insertion(+), 2413 deletions(-) delete mode 100755 src/requisition-convert-to-order/convert-to-order.html delete mode 100755 src/requisition-convert-to-order/messages_en.json delete mode 100644 src/requisition-initiate/period.factory.js delete mode 100644 src/requisition-order-create/order-create.routes.js delete mode 100755 src/requisition-search/requisition-search.controller.js delete mode 100755 src/requisition-search/requisition-search.html delete mode 100755 src/requisition-search/requisition-search.routes.js delete mode 100644 src/requisition-view-tab/requisition-view-tab.controller.js delete mode 100644 src/requisition-view/full-supply.routes.js delete mode 100755 src/requisition-view/messages_en.json delete mode 100755 src/requisition-view/requisition-toolbar.html delete mode 100755 src/requisition-view/requisition-view.controller.js delete mode 100755 src/requisition-view/requisition-view.html delete mode 100755 src/requisition-view/requisition-view.module.js delete mode 100755 src/requisition-view/requisition-view.routes.js diff --git a/docker-compose.yml b/docker-compose.yml index accaa97..382e37d 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -50,7 +50,7 @@ services: volumes: - '/openlmis-report-ui' requisition-ui: - image: elmislesotho/requisition-ui:0.0.2 + image: elmislesotho/requisition-ui:0.0.3 volumes: - '/openlmis-requisition-ui' stockmanagement-ui: diff --git a/src/requisition-convert-to-order/convert-to-order.html b/src/requisition-convert-to-order/convert-to-order.html deleted file mode 100755 index 286c2e7..0000000 --- a/src/requisition-convert-to-order/convert-to-order.html +++ /dev/null @@ -1,68 +0,0 @@ -

{{'requisitionConvertToOrder.convertRequisitionsToOrder' | message}}

-
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{{vm.infoMessage | message}}
- - {{'requisitionConvertToOrder.program' | message}}{{'requisitionConvertToOrder.facility' | message}}{{'requisitionConvertToOrder.districtName' | message}}{{'requisitionConvertToOrder.period' | message}}{{'requisitionConvertToOrder.startDate' | message}}{{'requisitionConvertToOrder.endDate' | message}}{{'requisitionConvertToOrder.dateApproved' | message}}{{'requisitionConvertToOrder.emergency' | message}}{{'requisitionConvertToOrder.supplyingDepot' | message}}
- - {{item.requisition.program.name}}{{item.requisition.facility.code}} - {{item.requisition.facility.name}}{{item.requisition.facility.geographicZone.name}}{{item.requisition.processingPeriod.name}}{{item.requisition.processingPeriod.startDate | openlmisDate}}{{item.requisition.processingPeriod.endDate | openlmisDate}}{{item.requisition.statusChanges.APPROVED.changeDate | openlmisDate}} - - - -
- -
-
- - > - -
diff --git a/src/requisition-convert-to-order/messages_en.json b/src/requisition-convert-to-order/messages_en.json deleted file mode 100755 index 45c2c34..0000000 --- a/src/requisition-convert-to-order/messages_en.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "requisitionConvertToOrder.all": "All", - "requisitionConvertToOrder.convertRequisitionsToOrder": "Acknowledge Requests", - "requisitionConvertToOrder.convertToOrder.confirm": "Are you sure you want to acknowledge this request(s)?", - "requisitionConvertToOrder.convertToOrder.label": "Acknowledge Request", - "requisitionConvertToOrder.convertToOrder.success": "The requisition(s) have been successfully acknowledged", - "requisitionConvertToOrder.releaseWithoutOrder.label": "Release without order", - "requisitionConvertToOrder.releaseWithoutOrder.confirm": "Are you sure you want to release this R&R(s) without order(s)?", - "requisitionConvertToOrder.releaseWithoutOrder.success": "The requisition(s) have been successfully released without order(s)", - "requisitionConvertToOrder.dateApproved": "Date approved", - "requisitionConvertToOrder.districtName": "District name", - "requisitionConvertToOrder.emergency": "Emergency", - "requisitionConvertToOrder.endDate": "End date", - "requisitionConvertToOrder.errorOccurred": "Error occurred", - "requisitionConvertToOrder.facility": "Facility", - "requisitionConvertToOrder.facilityCode": "Facility code", - "requisitionConvertToOrder.facilityName": "Facility name", - "requisitionConvertToOrder.noRequisitionToConvert": "No request(s) to be acknowledged", - "requisitionConvertToOrder.noSearchResults": "No request(s) to be acknowledged found", - "requisitionConvertToOrder.noSupplyingDepotSelected": "Supplying depot not selected", - "requisitionConvertToOrder.period": "Period", - "requisitionConvertToOrder.program": "Program", - "requisitionConvertToOrder.search": "Search", - "requisitionConvertToOrder.selectAtLeastOneRnr": "Please select at least one request to acknowledge.", - "requisitionConvertToOrder.selectAtLeastOneRnrWithoutOrder" : "Please select at least one requisition to release without order.", - "requisitionConvertToOrder.startDate": "Start date", - "requisitionConvertToOrder.supplyingDepot": "Supplying depot", - "requisitionConvertToOrder.searchInfo": "In order to filter Requisitions type in one of the following parameters: Program Name, Facility Name or Facility Code and click \"Search\" button." -} \ No newline at end of file diff --git a/src/requisition-initiate/period.factory.js b/src/requisition-initiate/period.factory.js deleted file mode 100644 index cbf351e..0000000 --- a/src/requisition-initiate/period.factory.js +++ /dev/null @@ -1,123 +0,0 @@ -/* - * This program is part of the OpenLMIS logistics management information system platform software. - * Copyright © 2017 VillageReach - * - * This program is free software: you can redistribute it and/or modify it under the terms - * of the GNU Affero General Public License as published by the Free Software Foundation, either - * version 3 of the License, or (at your option) any later version. - *   - * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; - * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  - * See the GNU Affero General Public License for more details. You should have received a copy of - * the GNU Affero General Public License along with this program. If not, see - * http://www.gnu.org/licenses.  For additional information contact info@OpenLMIS.org.  - */ - -(function() { - - 'use strict'; - - /** - * @ngdoc service - * @name requisition-initiate.periodFactory - * - * @description - * Responsible for parse periods and requisitions for initiate screen. - */ - angular - .module('requisition-initiate') - .config(function($provide) { - $provide.decorator('periodFactory', decorator); - }); - - decorator.$inject = ['$delegate', 'periodService', 'messageService', '$q', 'REQUISITION_STATUS']; - - function decorator($delegate, periodService, messageService, REQUISITION_STATUS) { - var periodFactory = $delegate; - - periodFactory.get = get; - - return periodFactory; - - /** - * @ngdoc method - * @methodOf requisition-initiate.periodFactory - * @name get - * - * @description - * Retrieves periods for initiate from server. - * - * @param {String} programId program UUID - * @param {String} facilityId facility UUID - * @param {Boolean} emergency if searching for emergency periods - * @return {Promise} facility promise - */ - function get(programId, facilityId, emergency) { - return periodService.getPeriodsForInitiate(programId, facilityId, emergency) - .then(function(response) { - var periods = getPeriodGridLineItems(response, emergency); - angular.forEach(periods, setStatus(emergency)); - return periods; - }); - } - - function getPeriodGridLineItems(periods, emergency) { - var periodGridLineItems = []; - - angular.forEach(periods, function(period, id) { - // Compare with the first period in the list - const start1 = new Date(period.startDate); - const end1 = new Date(period.endDate); - const start2 = new Date(periods[0].startDate); - const end2 = new Date(periods[0].endDate); - - // Always show proceed button for periods with the same start and end date as the first period - if(start1.getTime() === start2.getTime() && end1.getTime() === end2.getTime()) { - period.alsoShowProceed = true; - } - periodGridLineItems.push(createPeriodGridItem(period, emergency, id)); - }); - - return periodGridLineItems; - } - - function createPeriodGridItem(period, emergency, id) { - return { - name: period.name, - startDate: period.startDate, - endDate: period.endDate, - rnrStatus: messageService.get(getRnrStatus(period, emergency, id)), - activeForRnr: (emergency || id === 0 || period.alsoShowProceed), - rnrId: (period.requisitionId) ? period.requisitionId : null, - id: period.id - }; - } - - function setStatus(emergency) { - return function(period) { - if (isNotStarted(period, emergency)) { - period.rnrStatus = messageService.get('requisitionInitiate.notYetStarted'); - } - }; - } - - function isNotStarted(period, emergency) { - return emergency && - (period.rnrStatus === REQUISITION_STATUS.AUTHORIZED || - period.rnrStatus === REQUISITION_STATUS.IN_APPROVAL || - period.rnrStatus === REQUISITION_STATUS.APPROVED || - period.rnrStatus === REQUISITION_STATUS.RELEASED); - } - - function getRnrStatus(period, emergency, id) { - return period.requisitionStatus ? - period.requisitionStatus : - ( - (emergency || id === 0 || period.alsoShowProceed) ? - 'requisitionInitiate.notYetStarted' : - 'requisitionInitiate.previousPending' - ); - } - } - -})(); diff --git a/src/requisition-order-create/order-create.routes.js b/src/requisition-order-create/order-create.routes.js deleted file mode 100644 index 75f068c..0000000 --- a/src/requisition-order-create/order-create.routes.js +++ /dev/null @@ -1,47 +0,0 @@ -/* - * This program is part of the OpenLMIS logistics management information system platform software. - * Copyright © 2017 VillageReach - * - * This program is free software: you can redistribute it and/or modify it under the terms - * of the GNU Affero General Public License as published by the Free Software Foundation, either - * version 3 of the License, or (at your option) any later version. - *   - * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; - * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  - * See the GNU Affero General Public License for more details. You should have received a copy of - * the GNU Affero General Public License along with this program. If not, see - * http://www.gnu.org/licenses.  For additional information contact info@OpenLMIS.org.  - */ - -(function() { - 'use strict'; - - angular - .module('requisition-order-create') - .config(routes); - - routes.$inject = ['$stateProvider', 'ADMINISTRATION_RIGHTS']; - - function routes($stateProvider, ADMINISTRATION_RIGHTS) { - var showRequisitionLessOrder = '@@SHOW_REQUISITION_LESS_ORDER' !== 'false'; - - $stateProvider.state('openlmis.requisitions.orderCreate', { - url: '/orderCreate', - label: 'requisition.orderCreate', - isOffline: false, - priority: 14, - showInNavigation: false, - views: { - '@': { - templateUrl: 'requisition-order-create/order-create.html' - } - }, - accessRights: [ADMINISTRATION_RIGHTS.ORDER_CREATE] - }) - .state('openlmis.requisitions.orderCreate.table', { - url: '/:orderId', - isOffline: true, - accessRights: [ADMINISTRATION_RIGHTS.ORDER_CREATE] - }); - } -})(); diff --git a/src/requisition-search/requisition-search.controller.js b/src/requisition-search/requisition-search.controller.js deleted file mode 100755 index 14bca94..0000000 --- a/src/requisition-search/requisition-search.controller.js +++ /dev/null @@ -1,323 +0,0 @@ -/* - * This program is part of the OpenLMIS logistics management information system platform software. - * Copyright © 2017 VillageReach - * - * This program is free software: you can redistribute it and/or modify it under the terms - * of the GNU Affero General Public License as published by the Free Software Foundation, either - * version 3 of the License, or (at your option) any later version. - *   - * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; - * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  - * See the GNU Affero General Public License for more details. You should have received a copy of - * the GNU Affero General Public License along with this program. If not, see - * http://www.gnu.org/licenses.  For additional information contact info@OpenLMIS.org.  - */ -(function() { - - 'use strict'; - - /** - * @ngdoc controller - * @name requisition-search.controller:RequisitionViewController - * - * @description - * Controller for requisition view page. - */ - angular - .module('requisition-search') - .controller('RequisitionSearchController', RequisitionSearchController); - - RequisitionSearchController.$inject = [ - '$state', '$filter', '$stateParams', 'facilities', 'homeFacility', 'offlineService', 'localStorageFactory', 'confirmService', - 'requisitions', 'REQUISITION_STATUS', 'requisitionService', 'TB_STORAGE', 'LEPROSY_STORAGE', - 'RequisitionViewService' - ]; - - function RequisitionSearchController($state, $filter, $stateParams, facilities, homeFacility, offlineService, localStorageFactory, - confirmService, requisitions, REQUISITION_STATUS, requisitionService, - TB_STORAGE, LEPROSY_STORAGE) { - - var vm = this, - offlineRequisitions = localStorageFactory('requisitions'); - - vm.$onInit = onInit; - vm.search = search; - vm.openRnr = openRnr; - vm.removeOfflineRequisition = removeOfflineRequisition; - vm.isOfflineDisabled = isOfflineDisabled; - - /** - * @ngdoc property - * @propertyOf requisition-search.controller:RequisitionViewController - * @name facilities - * @type {Array} - * - * @description - * The list of all facilities available to the user. - */ - vm.facilities = undefined; - - /** - * @ngdoc property - * @propertyOf requisition-search.controller:RequisitionViewController - * @name homeFacility - * @type {Array} - * - * @description - * home facility of the user. - */ - vm.homeFacility = undefined; - - /** - * @ngdoc property - * @propertyOf requisition-search.controller:RequisitionViewController - * @name statuses - * @type {Array} - * - * @description - * Contains all available requisition statuses. - */ - vm.statuses = undefined; - - /** - * @ngdoc property - * @propertyOf requisition-search.controller:RequisitionViewController - * @name searchOffline - * @type {Boolean} - * - * @description - * Flag defining whether online or offline search should done. If it is set to true - * the local storage will be searched for requisitions. - */ - vm.searchOffline = false; - - /** - * @ngdoc property - * @propertyOf requisition-search.controller:RequisitionViewController - * @name selectedFacility - * @type {Object} - * - * @description - * The facility selected by the user. - */ - vm.selectedFacility = undefined; - - /** - * @ngdoc property - * @propertyOf requisition-search.controller:RequisitionViewController - * @name selectedProgram - * @type {Object} - * - * @description - * The program selected by the user. - */ - vm.selectedProgram = undefined; - - /** - * @ngdoc property - * @propertyOf requisition-search.controller:RequisitionViewController - * @name selectedStatus - * @type {String} - * - * @description - * The requisition status selected by the user. - */ - vm.selectedStatus = undefined; - - /** - * @ngdoc property - * @propertyOf requisition-search.controller:RequisitionViewController - * @name startDate - * @type {Object} - * - * @description - * The beginning of the period to search for requisitions. - */ - vm.startDate = undefined; - - /** - * @ngdoc property - * @propertyOf requisition-search.controller:RequisitionViewController - * @name endDate - * @type {Object} - * - * @description - * The end of the period to search for requisitions. - */ - vm.endDate = undefined; - - /** - * @ngdoc property - * @propertyOf requisition-search.controller:RequisitionViewController - * @name requisitions - * @type {Array} - * - * @description - * Holds all requisitions that will be displayed on screen. - */ - vm.requisitions = undefined; - - /** - * @ngdoc property - * @propertyOf requisition-search.controller:RequisitionViewController - * @name offline - * @type {Boolean} - * - * @description - * Indicates if requisitions will be searched offline or online. - */ - vm.offline = undefined; - - vm.options = { - 'requisitionSearch.dateInitiated': ['createdDate,desc'] - }; - - /** - * @ngdoc method - * @methodOf requisition-search.controller:RequisitionViewController - * @name $onInit - * - * @description - * Initialization method called after the controller has been created. Responsible for - * setting data to be available on the view. - */ - function onInit() { - vm.requisitions = requisitions; - vm.homeFacility = homeFacility; - vm.requisitions.forEach(item => { - if(item.extraData.isRedistributed){ - item.status = 'REDISTRIBUTED'; - } - }); - vm.facilities = facilities; - vm.statuses = REQUISITION_STATUS.$toList(); - - vm.offline = $stateParams.offline === 'true' || offlineService.isOffline(); - - if ($stateParams.facility) { - vm.selectedFacility = $filter('filter')(vm.facilities, { - id: $stateParams.facility - })[0]; - } - - if (vm.selectedFacility && $stateParams.program) { - vm.selectedProgram = $filter('filter')(vm.selectedFacility.supportedPrograms, { - id: $stateParams.program - })[0]; - } - - if ($stateParams.initiatedDateFrom) { - vm.startDate = $stateParams.initiatedDateFrom; - } - - if ($stateParams.initiatedDateTo) { - vm.endDate = $stateParams.initiatedDateTo; - } - - if ($stateParams.requisitionStatus) { - vm.selectedStatus = $stateParams.requisitionStatus; - } - } - - /** - * @ngdoc method - * @methodOf requisition-search.controller:RequisitionViewController - * @name isOfflineDisabled - * - * @description - * Check if "Search offline" checkbox should be disabled. It will set the searchOffline - * flag to true if app goes in the offline mode. - * - * @return {Boolean} true if offline is disabled, false otherwise - */ - function isOfflineDisabled() { - if (offlineService.isOffline()) { - vm.offline = true; - } - return offlineService.isOffline(); - } - - /** - * @ngdoc method - * @methodOf requisition-search.controller:RequisitionViewController - * @name openRnr - * - * @description - * Redirect to requisition page after clicking on grid row. - * - * @param {String} requisitionId Requisition UUID - */ - function openRnr(requisition) { - // Clear Patients Tab local storage before openRnr - localStorageFactory(TB_STORAGE).clearAll(); - localStorageFactory(LEPROSY_STORAGE).clearAll(); - - if (typeof requisition === 'object') { - redirectRequisition(requisition); - } else { - requisitionService.get(requisition).then(function(requisitionDetails) { - redirectRequisition(requisitionDetails); - }); - } - } - - function redirectRequisition(requisition) { - if (requisition.template.patientsTabEnabled) { - $state.go('openlmis.requisitions.requisition.patients', { - rnr: requisition.id, - requisition: requisition - }); - } else { - $state.go('openlmis.requisitions.requisition.fullSupply', { - rnr: requisition.id, - requisition: requisition - }); - } - } - - /** - * @ngdoc method - * @methodOf requisition-search.controller:RequisitionViewController - * @name removeOfflineRequisition - * - * @description - * Removes requisition from local storage. - * - * @param {Resource} requisition Requisition to remove - */ - function removeOfflineRequisition(requisition) { - confirmService.confirmDestroy('requisitionSearch.removeOfflineRequisition.confirm').then(function() { - offlineRequisitions.removeBy('id', requisition.id); - requisition.$availableOffline = false; - }); - } - - /** - * @ngdoc method - * @methodOf requisition-search.controller:RequisitionViewController - * @name search - * - * @description - * Searches requisitions by criteria selected in form. - */ - function search() { - var stateParams = angular.copy($stateParams); - - stateParams.program = vm.selectedProgram ? vm.selectedProgram.id : null; - stateParams.facility = vm.selectedFacility ? vm.selectedFacility.id : null; - stateParams.initiatedDateFrom = vm.startDate ? $filter('isoDate')(vm.startDate) : null; - stateParams.initiatedDateTo = vm.endDate ? $filter('isoDate')(vm.endDate) : null; - stateParams.offline = vm.offline; - if (vm.homeFacility.code === "NDSO") { - stateParams.requisitionStatus = "IN_APPROVAL"; - } - else{ - stateParams.requisitionStatus = vm.selectedStatus; - } - - $state.go('openlmis.requisitions.search', stateParams, { - reload: true - }); - } - } -})(); diff --git a/src/requisition-search/requisition-search.html b/src/requisition-search/requisition-search.html deleted file mode 100755 index 230de38..0000000 --- a/src/requisition-search/requisition-search.html +++ /dev/null @@ -1,93 +0,0 @@ -

{{'requisitionSearch.viewRequisitions' | message}}

-
- {{vm.error | message}} -
- -
- -
- - - - - -
- {{'requisitionSearch.dateInitiated' | message}} - - - - -
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- {{'requisitionSearch.noRequisitionsFound' | message}} - - {{'requisitionSearch.noFacilitiesFound' | message}} - - {{'requisitionSearch.noProgramsForFacility' | message}} -
{{'requisitionSearch.program' | message}}{{'requisitionSearch.facility' | message}}{{'requisitionSearch.period' | message}}{{'requisitionSearch.startDate' | message}}{{'requisitionSearch.endDate' | message}}{{'requisitionSearch.dateInitiated' | message}}{{'requisitionSearch.status' | message}}{{'requisitionSearch.emergency' | message}}{{'requisitionSearch.offline' | message}}{{'requisitionSearch.actions'| message}}
{{requisition.program.name}}{{requisition.facility.code}} - {{requisition.facility.name}}{{requisition.processingPeriod.name}}{{requisition.processingPeriod.startDate | openlmisDate}}{{requisition.processingPeriod.endDate | openlmisDate}}{{requisition.createdDate | openlmisDate}}AcknowledgedRedistributed{{requisition.status | requisitionStatus}} - - - - - - -
- -
diff --git a/src/requisition-search/requisition-search.routes.js b/src/requisition-search/requisition-search.routes.js deleted file mode 100755 index fe2f353..0000000 --- a/src/requisition-search/requisition-search.routes.js +++ /dev/null @@ -1,65 +0,0 @@ -/* - * This program is part of the OpenLMIS logistics management information system platform software. - * Copyright © 2017 VillageReach - * - * This program is free software: you can redistribute it and/or modify it under the terms - * of the GNU Affero General Public License as published by the Free Software Foundation, either - * version 3 of the License, or (at your option) any later version. - *   - * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; - * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  - * See the GNU Affero General Public License for more details. You should have received a copy of - * the GNU Affero General Public License along with this program. If not, see - * http://www.gnu.org/licenses.  For additional information contact info@OpenLMIS.org.  - */ - -(function() { - - 'use strict'; - - angular.module('requisition-search').config(routes); - - routes.$inject = ['$stateProvider']; - - function routes($stateProvider) { - - $stateProvider.state('openlmis.requisitions.search', { - showInNavigation: true, - isOffline: true, - label: 'requisitionSearch.view', - url: '/view?program&facility&initiatedDateFrom&initiatedDateTo&page&size&offline&sort&requisitionStatus', - params: { - sort: ['createdDate,desc'] - }, - controller: 'RequisitionSearchController', - templateUrl: 'requisition-search/requisition-search.html', - canAccess: function(permissionService, REQUISITION_RIGHTS) { - return permissionService.hasRoleWithRightAndFacility(REQUISITION_RIGHTS.REQUISITION_VIEW); - }, - controllerAs: 'vm', - resolve: { - facilities: function(requisitionSearchService) { - return requisitionSearchService.getFacilities(); - }, - requisitions: function(paginationService, requisitionService, $stateParams) { - return paginationService.registerUrl($stateParams, function(stateParams) { - if (stateParams.facility) { - var offlineFlag = stateParams.offline; - delete stateParams.offline; - return requisitionService.search(offlineFlag === 'true', stateParams); - } - return undefined; - }); - }, - homeFacility: function(facilityFactory, $stateParams) { - if (!$stateParams.facility) { - return facilityFactory.getUserHomeFacility(); - } - return $stateParams.facility; - } - } - }); - - } - -})(); diff --git a/src/requisition-view-tab/requisition-view-tab.controller.js b/src/requisition-view-tab/requisition-view-tab.controller.js deleted file mode 100644 index e5d62d6..0000000 --- a/src/requisition-view-tab/requisition-view-tab.controller.js +++ /dev/null @@ -1,526 +0,0 @@ -/* - * This program is part of the OpenLMIS logistics management information system platform software. - * Copyright © 2017 VillageReach - * - * This program is free software: you can redistribute it and/or modify it under the terms - * of the GNU Affero General Public License as published by the Free Software Foundation, either - * version 3 of the License, or (at your option) any later version. - *   - * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; - * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  - * See the GNU Affero General Public License for more details. You should have received a copy of - * the GNU Affero General Public License along with this program. If not, see - * http://www.gnu.org/licenses.  For additional information contact info@OpenLMIS.org.  - */ - -(function() { - - 'use strict'; - - /** - * @ngdoc controller - * @name requisition-view-tab.controller:ViewTabController - * - * @description - * Responsible for managing product grid for non full supply products. - */ - angular - .module('requisition-view-tab') - .controller('ViewTabController', ViewTabController); - - ViewTabController.$inject = [ - '$filter', '$state', 'selectProductsModalService', 'requisitionValidator', 'requisition', 'columns', 'messageService', - 'lineItems', 'alertService', 'canSubmit', 'canAuthorize', 'fullSupply', 'TEMPLATE_COLUMNS', '$q', - 'OpenlmisArrayDecorator', 'canApproveAndReject', 'items', 'paginationService', '$stateParams', - 'requisitionCacheService', 'canUnskipRequisitionItemWhenApproving', 'program', 'TB_MONTHLY_PROGRAM', '$scope', 'homeFacility' - ]; - - function ViewTabController($filter, $state, selectProductsModalService, requisitionValidator, requisition, columns, - messageService, lineItems, alertService, canSubmit, canAuthorize, fullSupply, - TEMPLATE_COLUMNS, $q, OpenlmisArrayDecorator, canApproveAndReject, items, - paginationService, $stateParams, requisitionCacheService, - canUnskipRequisitionItemWhenApproving, program, TB_MONTHLY_PROGRAM, $scope, homeFacility) { - var vm = this; - vm.$onInit = onInit; - vm.deleteLineItem = deleteLineItem; - vm.addFullSupplyProducts = addFullSupplyProducts; - vm.addNonFullSupplyProducts = addNonFullSupplyProducts; - vm.unskipFullSupplyProducts = unskipFullSupplyProducts; - vm.showDeleteColumn = showDeleteColumn; - vm.skipCurrentPageFullSupplyLineItems = skipCurrentPageFullSupplyLineItems; - vm.isLineItemValid = requisitionValidator.isLineItemValid; - vm.getDescriptionForColumn = getDescriptionForColumn; - vm.skippedFullSupplyProductCountMessage = skippedFullSupplyProductCountMessage; - vm.cacheRequisition = cacheRequisition; - vm.userCanEditColumn = userCanEditColumn; - vm.monthlyTBColumns = TEMPLATE_COLUMNS.getTbMonthlyColumns(); - vm.disabledRequisitionEdit = disabledRequisitionEdit; - vm.search = search; - // vm.showSkippedLineItems = true; - - /** - * @ngdoc property - * @propertyOf requisition-view-tab.controller:ViewTabController - * @name lineItems - * @type {Array} - * - * @description - * Holds all requisition line items. - */ - vm.lineItems = undefined; - vm.searchKeyword = undefined; - - /** - * @ngdoc property - * @propertyOf requisition-view-tab.controller:ViewTabController - * @name items - * @type {Array} - * - * @description - * Holds all items that will be displayed. - */ - vm.items = undefined; - - /** - * @ngdoc property - * @propertyOf requisition-view-tab.controller:ViewTabController - * @name requisition - * @type {Object} - * - * @description - * Holds requisition. This object is shared with the parent and fullSupply states. - */ - vm.requisition = undefined; - - /** - * @ngdoc property - * @methodOf requisition-view-tab.controller:ViewTabController - * @name showAddFullSupplyProductsButton - * @type {Boolean} - * - * @description - * Flag defining whether to show or hide the Add Product button for the full supply products for emergency - * requisition. - */ - vm.showAddFullSupplyProductsButton = undefined; - - /** - * @ngdoc property - * @methodOf requisition-view-tab.controller:ViewTabController - * @name showAddNonFullSupplyProductsButton - * @type {Boolean} - * - * @description - * Flag defining whether to show or hide the Add Product button for non-full supply products. - */ - vm.showAddNonFullSupplyProductsButton = undefined; - - /** - * @ngdoc property - * @methodOf requisition-view-tab.controller:ViewTabController - * @name showUnskipFullSupplyProductsButton - * @type {Boolean} - * - * @description - * Flag defining whether to show or hide the Add Product button for un-skipping full supply products. - */ - vm.showUnskipFullSupplyProductsButton = undefined; - - /** - * @ngdoc property - * @methodOf requisition-view-tab.controller:ViewTabController - * @name showAddFullSupplyProductControls - * @type {Boolean} - * - * @description - * Flag defining whether to show or hide the Add Product button based on the requisition - * status and user rights and requisition template configuration. - */ - vm.showAddFullSupplyProductControls = undefined; - - /** - * @ngdoc property - * @propertyOf requisition-view-tab.controller:ViewTabController - * @name columns - * @type {Array} - * - * @description - * Holds the list of columns visible on this screen. - */ - vm.columns = undefined; - - vm.orderableFilterProperties = { - name: '' - }; - - vm.filteredItems = undefined; - - vm.showSkippedLineItems = true; - - vm.fullSupply = undefined; - - /** - * @ngdoc property - * @propertyOf requisition-view-tab.controller:ViewTabController - * @name program - * @type {Object} - * - * @description - * Holds the current program - */ - vm.program = undefined; - - function onInit() { - angular.forEach(columns, function(column) { - angular.forEach(lineItems, function(lineItem) { - lineItem.updateFieldValue(column, requisition); - }); - }); - - vm.lineItems = lineItems; - vm.items = items; - vm.filteredItems = lineItems; - vm.requisition = requisition; - vm.homeFacility = homeFacility; - vm.columns = columns; - vm.program = program; - vm.userCanEdit = canAuthorize || canSubmit || canUnskipRequisitionItemWhenApproving; - vm.showAddFullSupplyProductsButton = showAddFullSupplyProductsButton(); - vm.showAddNonFullSupplyProductsButton = showAddNonFullSupplyProductsButton(); - vm.showUnskipFullSupplyProductsButton = showUnskipFullSupplyProductsButton(); - vm.showSkipControls = showSkipControls(); - vm.showOrderableFilter = showOrderableFilter(); - vm.noProductsMessage = getNoProductsMessage(); - vm.canApproveAndReject = canApproveAndReject; - vm.paginationId = fullSupply ? 'fullSupplyList' : 'nonFullSupplyList'; - vm.requisition = disabledRequisitionEdit(); - registerSkippedItemsWatcher(); - } - - function registerSkippedItemsWatcher() { - $scope.$watchCollection(function() { - return vm.items ? vm.items.map(function(item) { - return item.skipped; - }) : []; - }, function(newValues, oldValues) { - if (!angular.equals(newValues, oldValues) && !vm.showSkippedLineItems) { - for (var i = 0; i < newValues.length; i++) { - if (newValues[i] !== oldValues[i]) { - vm.filterByOrderableParams(); - break; - } - } - } - }); - } - - function search() { - $stateParams.searchKeyword = vm.searchKeyword; - $state.go('openlmis.requisitions.requisition.fullSupply', $stateParams, { - reload: true - //inherit: false, - }); - } - - // Allows requisition line items to be editable by skipping or unskipping line item - function disabledRequisitionEdit(){ - vm.requisition = requisition; - // Make all requisition line item skipped at Warehouses - if(vm.homeFacility.type.name === 'Warehouse'){ - vm.requisition.requisitionLineItems.forEach(function(lineItem) { - lineItem.skipped = true; - }); - return vm.requisition; - } - else if(vm.homeFacility !== 'Warehouse'){ - //Unskip all skipped requisition line items where requested quantity is greater than zero. - //This will allow them to be editable - vm.requisition.requisitionLineItems.forEach(function(lineItem) { - if(lineItem.requestedQuantity > 0 ){ - lineItem.skipped = ""; - } - }); - return vm.requisition; - } - } - - /** - * @ngdoc method - * @methodOf requisition-view-tab.controller:ViewTabController - * @name deleteLineItem - * - * @description - * Deletes the given line item, removing it from the grid and returning the product to the - * list of approved products. - * - * @param {Object} lineItem the line item to be deleted - */ - function deleteLineItem(lineItem) { - vm.requisition.deleteLineItem(lineItem); - refreshLineItems(); - } - - /** - * @ngdoc method - * @methodOf requisition-view-tab.controller:ViewTabController - * @name showDeleteColumn - * - * @description - * Checks whether the delete column should be displayed. The column is visible only if any - * of the line items is deletable. - * - * @return {Boolean} true if the delete column should be displayed, false otherwise - */ - function showDeleteColumn() { - return !fullSupply && - vm.userCanEdit && - hasDeletableLineItems(); - } - - /** - * @ngdoc method - * @methodOf requisition-view-tab.controller:ViewTabController - * @name cacheRequisition - * - * @description - * Caches given requisition in the local storage. - * - * @return {Promise} the promise resolved after adding requisition to the local storage - */ - function cacheRequisition() { - requisitionCacheService.cacheRequisition(vm.requisition); - return $q.resolve(); - } - - /** - * @ngdoc method - * @methodOf requisition-view-tab.controller:ViewTabController - * @name getDescriptionForColumn - * - * @description - * Returns a translated description for the given column. - * - * @param {RequisitionColumn} column the column of the requisition template - * @return {string} the translated description of the column - */ - function getDescriptionForColumn(column) { - if (requisition.template.populateStockOnHandFromStockCards && - column.name === TEMPLATE_COLUMNS.TOTAL_LOSSES_AND_ADJUSTMENTS) { - return column.definition + ' ' + - messageService.get('requisitionViewTab.totalLossesAndAdjustment.disabled'); - } - return column.definition; - } - - /** - * @ngdoc method - * @methodOf requisition-view-tab.controller:ViewTabController - * @name addFullSupplyProducts - * - * @description - * Opens modal that lets the user add new full supply products to the grid. If there are no products to be added - * an alert will be shown. - */ - function addFullSupplyProducts() { - addProducts(vm.requisition.getAvailableFullSupplyProducts()); - } - - /** - * @ngdoc method - * @methodOf requisition-view-tab.controller:ViewTabController - * @name addNonFullSupplyProducts - * - * @description - * Opens modal that lets the user add new non-full supply products to the grid. If there are no products to be - * added an alert will be shown. - */ - function addNonFullSupplyProducts() { - addProducts(vm.requisition.getAvailableNonFullSupplyProducts()); - } - - /** - * @ngdoc method - * @methodOf requisition-view-tab.controller:ViewTabController - * @name unskipFullSupplyProducts - * - * @description - * Opens modal that lets the user unskip full supply products and add them back to the grid.. If there are no - * products to be added an alert will be shown. - */ - function unskipFullSupplyProducts() { - selectProducts({ - products: vm.requisition.getSkippedFullSupplyProducts() - }) - .then(function(selectedProducts) { - vm.requisition.unskipFullSupplyProducts(selectedProducts); - refreshLineItems(); - }); - } - - /** - * @ngdoc method - * @methodOf requisition-view-tab.controller:ViewTabController - * @name skippedFullSupplyProductCountMessage - * - * @description - * Returns a translated message that contains the number of line items that were skipped - * from full supply requisition. - */ - function skippedFullSupplyProductCountMessage() { - return messageService.get('requisitionViewTab.fullSupplyProductsSkipped', { - skippedProductCount: getCountOfSkippedFullSupplyProducts() - }); - } - - function addProducts(availableProducts) { - selectProducts({ - products: availableProducts - }) - .then(function(selectedProducts) { - vm.requisition.addLineItems(selectedProducts); - refreshLineItems(); - }); - } - - function selectProducts(availableProducts) { - refreshLineItems(); - - var decoratedAvailableProducts = new OpenlmisArrayDecorator(availableProducts.products); - decoratedAvailableProducts.sortBy('fullProductName'); - - if (!availableProducts.products.length) { - alertService.error( - 'requisitionViewTab.noProductsToAdd.label', - 'requisitionViewTab.noProductsToAdd.message' - ); - return $q.reject(); - } - - return selectProductsModalService.show({ - products: decoratedAvailableProducts - }); - } - - function refreshLineItems() { - var filterObject = (fullSupply && - vm.requisition.template.hasSkipColumn() && - vm.requisition.template.hideSkippedLineItems()) ? - { - skipped: '!true', - $program: { - fullSupply: fullSupply - } - } : { - $program: { - fullSupply: fullSupply - } - }; - - var lineItems = $filter('filter')(vm.requisition.requisitionLineItems, filterObject); - - paginationService - .registerList( - requisitionValidator.isLineItemValid, $stateParams, function() { - return lineItems; - } - ) - .then(function(items) { - vm.lineItems = lineItems; - vm.items = items; - }); - } - - function showOrderableFilter() { - return vm.userCanEdit && - fullSupply; - } - - function showSkipControls() { - return vm.userCanEdit && - fullSupply && - !requisition.emergency && - requisition.template.hasSkipColumn(); - } - - function showAddFullSupplyProductsButton() { - return vm.userCanEdit && fullSupply && requisition.emergency; - } - - function showAddNonFullSupplyProductsButton() { - return vm.userCanEdit && !fullSupply; - } - - function showUnskipFullSupplyProductsButton() { - return vm.userCanEdit && - fullSupply && - !requisition.emergency && - requisition.template.hideSkippedLineItems(); - } - - function hasDeletableLineItems() { - var hasDeletableLineItems = false; - - vm.requisition.requisitionLineItems.forEach(function(lineItem) { - hasDeletableLineItems = hasDeletableLineItems || lineItem.$deletable; - }); - - return hasDeletableLineItems; - } - - function isSkippedFullSupply(item) { - return (item.skipped === true && item.$program.fullSupply === true); - } - - function getCountOfSkippedFullSupplyProducts() { - return vm.requisition.requisitionLineItems.filter(isSkippedFullSupply).length; - } - - function getNoProductsMessage() { - return fullSupply ? - 'requisitionViewTab.noFullSupplyProducts' : - 'requisitionViewTab.noNonFullSupplyProducts'; - } - - function skipCurrentPageFullSupplyLineItems() { - vm.items.forEach(function(lineItem) { - if (lineItem.canBeSkipped(requisition)) { - lineItem.skipped = true; - } - }); - vm.filterByOrderableParams(); - } - - function userCanEditColumn(column) { - if (program.name === TB_MONTHLY_PROGRAM && vm.monthlyTBColumns.includes(column.name)) { - return vm.canApproveAndReject; - } - return vm.userCanEdit; - } - - function orderableHasMatchingName(orderableName, filterValue) { - return orderableName.toLowerCase().includes(filterValue.toLowerCase()); - } - - function getFilteredLineItems() { - return vm.lineItems.filter(function(item) { - return orderableHasMatchingName(item.orderable.fullProductName, vm.orderableFilterProperties.name) - && (vm.showSkippedLineItems ? true : !item.skipped); - }); - } - - vm.filterByOrderableParams = function() { - vm.filteredItems = getFilteredLineItems(); - }; - - vm.skipAllFullSupplyLineItems = function() { - vm.requisition.skipAllFullSupplyLineItems(); - vm.filterByOrderableParams(); - }; - - vm.unskipAllFullSupplyLineItems = function() { - vm.requisition.unskipAllFullSupplyLineItems(); - vm.filterByOrderableParams(); - }; - } - -})(); diff --git a/src/requisition-view/full-supply.routes.js b/src/requisition-view/full-supply.routes.js deleted file mode 100644 index e86fce0..0000000 --- a/src/requisition-view/full-supply.routes.js +++ /dev/null @@ -1,87 +0,0 @@ -/* - * This program is part of the OpenLMIS logistics management information system platform software. - * Copyright © 2017 VillageReach - * - * This program is free software: you can redistribute it and/or modify it under the terms - * of the GNU Affero General Public License as published by the Free Software Foundation, either - * version 3 of the License, or (at your option) any later version. - *   - * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; - * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  - * See the GNU Affero General Public License for more details. You should have received a copy of - * the GNU Affero General Public License along with this program. If not, see - * http://www.gnu.org/licenses.  For additional information contact info@OpenLMIS.org.  - */ - -(function() { - - 'use strict'; - - angular - .module('requisition-view') - .config(routes); - - routes.$inject = ['selectProductsModalStateProvider']; - - function routes(selectProductsModalStateProvider) { - selectProductsModalStateProvider - .stateWithAddOrderablesChildState('openlmis.requisitions.requisition.fullSupply', { - url: '/fullSupply?fullSupplyListPage&fullSupplyListSize&searchKeyword', - templateUrl: 'requisition-view-tab/requisition-view-tab.html', - controller: 'ViewTabController', - controllerAs: 'vm', - isOffline: true, - nonTrackable: true, - resolve: { - lineItems: function($filter, requisition, $stateParams) { - var filterObject = requisition.template.hideSkippedLineItems() ? - { - skipped: '!true', - $program: { - fullSupply: true - } - } : { - $program: { - fullSupply: true - } - }; - var fullSupplyLineItems = $filter('filter')(requisition.requisitionLineItems, filterObject); - - - // Filter by search keyword - if ($stateParams.searchKeyword) { - fullSupplyLineItems = $filter('filter')(fullSupplyLineItems, $stateParams.searchKeyword); - } - - return $filter('orderBy')(fullSupplyLineItems, [ - '$program.orderableCategoryDisplayOrder', - '$program.orderableCategoryDisplayName', - '$program.displayOrder', - 'orderable.fullProductName' - ]); - }, - items: function(paginationService, lineItems, $stateParams, requisitionValidator, - paginationFactory) { - return paginationService.registerList( - requisitionValidator.isLineItemValid, $stateParams, function(params) { - return paginationFactory.getPage(lineItems, parseInt(params.page), - parseInt(params.size)); - }, { - paginationId: 'fullSupplyList' - } - ); - }, - columns: function(requisition) { - return requisition.template.getColumns(requisition.emergency); - }, - fullSupply: function() { - return true; - }, - program: function(programService, requisition) { - return programService.get(requisition.program.id); - } - } - }); - } - -})(); diff --git a/src/requisition-view/messages_en.json b/src/requisition-view/messages_en.json deleted file mode 100755 index 9461787..0000000 --- a/src/requisition-view/messages_en.json +++ /dev/null @@ -1,85 +0,0 @@ -{ - "requisitionView.otherSource.label": "Add Fund Source", - "requisitionView.requisition.budget.cancel": "Cancel", - "requisitionView.requisition.budget.update": "Update", - "requisitionView.requisition.budget.action.remove": "Remove", - "requisitionView.budget.requisition.title": "Other sources of Fund", - "requisitionView.budget.requisition.add": "Add", - "requisitionView.add.source.of.fund.message": "Add Other sources Of Funds", - "requisitionView.fund.source": "Fund source", - "requisitionView.budget.amount": "Amount", - "requisitionView.budget.action": "Action", - "requisitionView.source.fund.warning.message": "There is no source of funds", - "requisitionView.budget.remaining.amount": "Remaining", - "requisitionView.allLineItemsSkipped": "Cannot submit requisition with all line items skipped.", - "requisitionView.approve.confirm": "Are you sure you want to approve this R&R?", - "requisitionView.approve.failure": "Failed to approve requisition!", - "requisitionView.approve.label": "Approve", - "requisitionView.approve.success": "Requisition has been approved!", - "requisitionView.authorize.confirm": "Are you sure you want to authorize this R&R?", - "requisitionView.authorize.failure": "Failed to authorize requisition!", - "requisitionView.authorize.label": "Authorize", - "requisitionView.authorize.success": "Requisition has been authorized!", - "requisitionView.delete.confirm": "Are you sure you want to delete this R&R?", - "requisitionView.delete.failure": "Failed to delete requisition!", - "requisitionView.delete.label": "Delete", - "requisitionView.delete.success": "Requisition has been deleted!", - "requisitionView.emergency": "Emergency", - "requisitionView.facility": "Facility", - "requisitionView.fullSupplyProducts": "Full supply product(s)", - "requisitionView.priorityDrugsAndMedicalSupplies": "Priority drugs and medical supplies", - "requisitionView.nonFullSupplyProducts": "Non full supply product(s)", - "requisitionView.additionalDrugsAndMedicalSupplies": "Additional drugs and medical supplies", - "requisitionView.operatedBy": "Operated by", - "requisitionView.patients": "Patient(s)", - "requisitionView.print": "Print", - "requisitionView.province": "Province", - "requisitionView.region": "Region", - "requisitionView.district": "District", - "requisitionView.regular": "Regular", - "requisitionView.reject.confirm": "Are you sure you want to reject this R&R?", - "requisitionView.reject.failure": "Failed to reject requisition!", - "requisitionView.reject.label": "Reject", - "requisitionView.reject.success": "Requisition has been rejected!", - "requisitionView.reportAndRequisitionFor": "Report and Requisition for", - "requisitionView.reportingPeriod": "Reporting period", - "requisitionView.reportOnly": "Report Only", - "requisitionView.rnrHasErrors": "R&R has errors, please correct them to proceed.", - "requisitionView.skip.confirm": "Are you sure you want to skip this requisition?", - "requisitionView.skip.failure": "Failed to skip requisition!", - "requisitionView.skip.label": "Skip", - "requisitionView.skip.success": "Requisition has been skipped!", - "requisitionView.submit.confirm": "Are you sure you want to submit this R&R?", - "requisitionView.submit.failure": "Failed to submit requisition!", - "requisitionView.submit.label": "Submit", - "requisitionView.submitAndAuthorize.label": "Submit & Authorize", - "requisitionView.submit.success": "Requisition has been submitted!", - "requisitionView.sync.failure": "Failed to synchronize requisition. Try clearing your browser's local storage.", - "requisitionView.sync.label": "Save/Sync with Server", - "requisitionView.sync.pending": "Syncing requisition with the server...", - "requisitionView.sync.success": "Requisition has been synchronized!", - "requisitionView.updateForbidden": "This requisition has changed status or you lost the rights required for syncing it; the server version will be used.", - "requisitionView.versionMismatch": "This requisition has a newer version on the server; the server version will be used, and you will need to remake your changes.", - "requisitionView.viewRequisition": "View Requisition", - "requisitionView.requisition.error": "R&R has errors, please correct them to proceed", - "requisitionView.outdated": "This is an outdated offline version.", - "requisitionView.update": "Update Requisition", - "requisitionView.updateWarning": "Updating this requisition will remove any changes that have been made to the offline requisition", - "requisitionView.updateOffline": "Can't update this requisition while offline", - "requisitionView.submitRequisition": "Submit Requisition", - "requisitionView.authorizeRequisition": "Authorize Requisition", - "requisitionView.datePhysicalStockCountCompleted": "Date physical stock count completed", - "requisitionView.datePhysicalStockCountCompleted.inFuture": "You cannot record date for the future", - "requisitionView.cancel": "Cancel", - "requisitionView.rejection.reason.title" : "Rejection Reason", - "requisitionView.rejection.reason.message" : "Add Reason(s) for Rejection", - "requisitionView.rejection.reason.category" : "Category", - "requisitionView.rejection.reason" : "Reason", - "requisitionView.rejection.reason.add" : "Add", - "requisitionView.rejection.reason.cancel" : "Cancel", - "requisitionView.rejection.reason.update" : "Update", - "requisitionView.rejection.reason.warning.message" : "There is no reason", - "requisitionView.rejection.reason.action" : "Action", - "requisitionView.rejection.reason.action.remove" : "Remove", - "requisitionView.redistribution.label": "Redistribute" -} diff --git a/src/requisition-view/requisition-toolbar.html b/src/requisition-view/requisition-toolbar.html deleted file mode 100755 index 56e7e4c..0000000 --- a/src/requisition-view/requisition-toolbar.html +++ /dev/null @@ -1,14 +0,0 @@ -
- -
- - - - - - - - -
-
- diff --git a/src/requisition-view/requisition-view.controller.js b/src/requisition-view/requisition-view.controller.js deleted file mode 100755 index b4ba29a..0000000 --- a/src/requisition-view/requisition-view.controller.js +++ /dev/null @@ -1,773 +0,0 @@ -/* - * This program is part of the OpenLMIS logistics management information system platform software. - * Copyright © 2017 VillageReach - * - * This program is free software: you can redistribute it and/or modify it under the terms - * of the GNU Affero General Public License as published by the Free Software Foundation, either - * version 3 of the License, or (at your option) any later version. - *   - * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; - * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  - * See the GNU Affero General Public License for more details. You should have received a copy of - * the GNU Affero General Public License along with this program. If not, see - * http://www.gnu.org/licenses.  For additional information contact info@OpenLMIS.org.  - */ - -(function() { - - 'use strict'; - - /** - * @ngdoc controller - * @name requisition-view.controller:RequisitionViewController - * - * @description - * Controller for managing requisitions. - */ - angular - .module('requisition-view') - .controller('RequisitionViewController', RequisitionViewController); - - RequisitionViewController.$inject = [ - '$state', 'requisition', 'requisitionValidator', 'requisitionService', 'loadingModalService', 'alertService', - 'notificationService', 'confirmService', 'offlineService', '$window', 'requisitionUrlFactory', '$filter', - '$scope', 'RequisitionWatcher', 'accessTokenFactory', 'messageService', 'stateTrackerService', - 'RequisitionStockCountDateModal', 'localStorageFactory', 'canSubmit', 'canAuthorize', 'canApproveAndReject', - 'canDelete', 'canSkip', 'canSync', 'program', 'facility', 'processingPeriod', - 'rejectionReasonModalService', '$q', 'TB_STORAGE', 'LEPROSY_STORAGE', '$rootScope', 'RequisitionViewService', 'homeFacility' - ]; - - function RequisitionViewController($state, requisition, requisitionValidator, requisitionService, - loadingModalService, alertService, notificationService, confirmService, - offlineService, $window, requisitionUrlFactory, $filter, $scope, - RequisitionWatcher, accessTokenFactory, messageService, stateTrackerService, - RequisitionStockCountDateModal, localStorageFactory, canSubmit, canAuthorize, - canApproveAndReject, canDelete, canSkip, canSync, program, facility, - processingPeriod, rejectionReasonModalService, $q, TB_STORAGE, LEPROSY_STORAGE, - $rootScope, RequisitionViewService, homeFacility) { - - var vm = this, - watcher = new RequisitionWatcher($scope, requisition, localStorageFactory('requisitions')); - /** - * @ngdoc property - * @propertyOf requisition-view.controller:RequisitionViewController - * @name requisition - * @type {Object} - * - * @description - * Holds requisition. - */ - vm.requisition = requisition; - - /** - * @ngdoc property - * @propertyOf requisition-view.controller:RequisitionViewController - * @name program - * @type {Object} - * - * @description - * Holds requisition program. - */ - vm.program = undefined; - - /** - * @ngdoc property - * @propertyOf requisition-view.controller:RequisitionViewController - * @name facility - * @type {Object} - * - * @description - * Holds requisition facility. - */ - vm.facility = undefined; - - /** - * @ngdoc property - * @propertyOf requisition-view.controller:RequisitionViewController - * @name processingPeriod - * @type {Object} - * - * @description - * Holds requisition processing period. - */ - vm.processingPeriod = undefined; - - /** - * @ngdoc property - * @propertyOf requisition-view.controller:RequisitionViewController - * @name requisitionType - * @type {String} - * - * @description - * Holds message key to display, depending on the requisition type (regular/emergency/report-only). - */ - vm.requisitionType = undefined; - - /** - * @ngdoc property - * @propertyOf requisition-view.controller:RequisitionViewController - * @name requisitionTypeClass - * @type {String} - * - * @description - * Holds CSS class to use, depending on the requisition type (regular/emergency/report-only). - */ - vm.requisitionTypeClass = undefined; - - /** - * @ngdoc property - * @propertyOf requisition-view.controller:RequisitionViewController - * @name invalidNonFullSupply - * @type {Boolean} - * - * @description - * False if non-full supply tab is valid, true otherwise. - */ - vm.invalidNonFullSupply = undefined; - - /** - * @ngdoc property - * @propertyOf requisition-view.controller:RequisitionViewController - * @name invalidFullSupply - * @type {Boolean} - * - * @description - * False if full supply tab is valid, true otherwise. - */ - vm.invalidFullSupply = undefined; - - /** - * ngdoc property - * @propertyOf requisition-view.controller:RequisitionViewController - * @name displaySubmitButton - * @type {Boolean} - * - * @description - * Flag defining whether current user should see the submit button. - */ - vm.displaySubmitButton = undefined; - - /** - * ngdoc property - * @propertyOf requisition-view.controller:RequisitionViewController - * @name displaySubmitAndAuthorizeButton - * @type {Boolean} - * - * @description - * Flag defining whether current user should see the submit and authorize button. - */ - vm.displaySubmitAndAuthorizeButton = undefined; - - /** - * ngdoc property - * @propertyOf requisition-view.controller:RequisitionViewController - * @name displayAuthorizeButton - * @type {Boolean} - * - * @description - * Flag defining whether current user should see the authorize button. - */ - vm.displayAuthorizeButton = undefined; - - /** - * ngdoc property - * @propertyOf requisition-view.controller:RequisitionViewController - * @name displayDeleteButton - * @type {Boolean} - * - * @description - * Flag defining whether current user should see the delete button. - */ - vm.displayDeleteButton = undefined; - - /** - * ngdoc property - * @propertyOf requisition-view.controller:RequisitionViewController - * @name displayApproveAndRejectButtons - * @type {Boolean} - * - * @description - * Flag defining whether current user should see the approve and reject buttons. - */ - vm.displayApproveAndRejectButtons = undefined; - - /** - * ngdoc property - * @propertyOf requisition-view.controller:RequisitionViewController - * @name displaySkipButton - * @type {Boolean} - * - * @description - * Flag defining whether current user should see the skip button. - */ - vm.displaySkipButton = undefined; - - /** - * ngdoc property - * @propertyOf requisition-view.controller:RequisitionViewController - * @name displaySyncButton - * @type {Boolean} - * - * @description - * Flag defining whether current user should see the sync to server button. - */ - vm.displaySyncButton = undefined; - - /** - * ngdoc property - * @propertyOf requisition-view.controller:RequisitionViewController - * @name patientsTabEnabled - * @type {Boolean} - * - * @description - * Flag to define requisition tab names whenever patientsTabEnabled is true or false. - */ - vm.patientsTabEnabled = vm.requisition.template.patientsTabEnabled; - - // Functions - vm.$onInit = onInit; - vm.updateRequisition = updateRequisition; - vm.syncRnr = syncRnr; - vm.syncRnrAndPrint = syncRnrAndPrint; - vm.submitRnr = submitRnr; - vm.authorizeRnr = authorizeRnr; - vm.removeRnr = removeRnr; - vm.approveRnr = approveRnr; - vm.rejectRnr = rejectRnr; - vm.skipRnr = skipRnr; - vm.isOffline = offlineService.isOffline; - vm.getPrintUrl = getPrintUrl; - vm.isFullSupplyTabValid = isFullSupplyTabValid; - vm.isNonFullSupplyTabValid = isNonFullSupplyTabValid; - vm.close = close; - vm.loadRejectionReasonModal = loadRejectionReasonModal; - vm.goToRedistribution = goToRedistribution; - - /** - * @ngdoc method - * @methodOf requisition-view.controller:RequisitionViewController - * @name $onInit - * - * @description - * Initialization method of the RequisitionViewController. - */ - function onInit() { - setTypeAndClass(); - vm.program = program; - vm.facility = facility; - vm.processingPeriod = processingPeriod; - vm.displaySubmitButton = canSubmit && !vm.program.skipAuthorization; - vm.displaySubmitAndAuthorizeButton = canSubmit && vm.program.skipAuthorization; - vm.displayAuthorizeButton = canAuthorize; - vm.displayDeleteButton = canDelete; - vm.displayApproveAndRejectButtons = canApproveAndReject; - vm.displayRejectButton = canApproveAndReject && !vm.requisition.extraData.originalRequisition; - vm.displaySkipButton = canSkip; - vm.displaySyncButton = canSync; - vm.homeFacility = homeFacility; - } - - function goToRedistribution(requisitionId) { - $state.go('openlmis.redistribution', { - rnr: requisitionId, - requisition: vm.requisition - }); - - } - - vm.isEmergencyRequisition = function(){ - - if(vm.requisition.emergency && (vm.homeFacility.type.code === "dist_store" || vm.homeFacility.type.code === "central_store") ){ - return true; - } - else{ - return false; - } - } - - vm.inDHMTForApproval = function(){ - if(vm.requisition.hasOwnProperty('supervisoryNode')){ - if((vm.homeFacility.type.code === "dist_store" || vm.homeFacility.type.code === "central_store") && vm.requisition.status === "IN_APPROVAL"){ - return false; - } - else{ - return true; - } - } - else{ - return true; - } - } - - function setTypeAndClass() { - if (vm.requisition.emergency) { - vm.requisitionType = 'requisitionView.emergency'; - vm.requisitionTypeClass = 'emergency'; - } else if (vm.requisition.reportOnly) { - vm.requisitionType = 'requisitionView.reportOnly'; - vm.requisitionTypeClass = 'report-only'; - } else { - vm.requisitionType = 'requisitionView.regular'; - vm.requisitionTypeClass = 'regular'; - } - } - - /** - * @ngdoc method - * @methodOf requisition-view.controller:RequisitionViewController - * @name updateRequisition - * - * @description - * After confirming with the user, the offline requisition is removed, - * and the state is reloaded. This will fetch a fresh version of the - * requisition. - * - * If the browser is offline, an error will be thrown, and nothing will - * change. - * - */ - function updateRequisition() { - if (offlineService.isOffline()) { - alertService.error('requisitionView.updateOffline'); - return; - } - - confirmService.confirm('requisitionView.updateWarning', 'requisitionView.update') - .then(function() { - requisitionService.removeOfflineRequisition(requisition.id); - $state.reload(); - }); - } - - /** - * @ngdoc method - * @methodOf requisition-view.controller:RequisitionViewController - * @name syncRnr - * - * @description - * Responsible for syncing requisition with the server. If the requisition fails to sync, - * an error notification will be displayed. Otherwise, a success notification will be shown. - * If the error status is 409 (conflict), the requisition will be reloaded, since this - * indicates a version conflict. - */ - function syncRnr() { - var loadingPromise = loadingModalService.open(); - saveRnr().then(function() { - loadingPromise.then(function() { - notificationService.success('requisitionView.sync.success'); - }); - reloadState(); - }, function(response) { - handleSaveError(response.status); - }); - } - - /** - * @ngdoc method - * @methodOf requisition-view.controller:RequisitionViewController - * @name syncRnrAndPrint - * - * @description - * Responsible for syncing requisition with the server. If the requisition fails to sync, - * an error notification will be displayed. Otherwise, a success notification will be shown - * and the requisition will be printed. - * If the error status is 409 (conflict), the requisition will be reloaded, since this - * indicates a version conflict. - */ - function syncRnrAndPrint() { - if (vm.displaySyncButton) { - var popup = $window.open('', '_blank'); - popup.document.write(messageService.get('requisitionView.sync.pending')); - var loadingPromise = loadingModalService.open(); - saveRnr().then(function() { - watcher.disableWatcher(); - loadingPromise.then(function() { - notificationService.success('requisitionView.sync.success'); - }); - popup.location.href = accessTokenFactory.addAccessToken(vm.getPrintUrl()); - reloadState(); - }, function(response) { - handleSaveError(response.status); - popup.close(); - }); - } else { - $window.open(accessTokenFactory.addAccessToken(vm.getPrintUrl()), '_blank'); - } - } - - function saveRnr() { - vm.requisition.$modified = false; - return vm.requisition.$save(); - } - - /** - * @ngdoc method - * @methodOf requisition-view.controller:RequisitionViewController - * @name submitRnr - * - * @description - * Responsible for submitting requisition. Displays confirmation dialog, and checks - * requisition validity before submission. If the requisition is not valid, fails to save or - * an error occurs during submission, an error notification modal will be displayed. - * Otherwise, a success notification modal will be shown. - */ - function submitRnr() { - confirmService.confirm('requisitionView.submit.confirm', 'requisitionView.submit.label').then(function() { - if (requisitionValidator.validateRequisition(requisition) && validatePatientsTable()) { - addPatientsDataToRequisition(); - - if (requisitionValidator.areAllLineItemsSkipped(requisition.requisitionLineItems)) { - failWithMessage('requisitionView.allLineItemsSkipped')(); - } else if (vm.program.enableDatePhysicalStockCountCompleted) { - var modal = new RequisitionStockCountDateModal(vm.requisition); - modal.then(saveThenSubmit); - } else { - saveThenSubmit(); - } - } else { - $rootScope.$broadcast('isSubmitInProgress', true); - $scope.$broadcast('openlmis-form-submit'); - failWithMessage('requisitionView.rnrHasErrors')(); - } - }); - - - function saveThenSubmit() { - var loadingPromise = loadingModalService.open(); - vm.requisition.$save().then(function() { - vm.requisition.$submit().then(function() { - watcher.disableWatcher(); - loadingPromise.then(function() { - notificationService.success('requisitionView.submit.success'); - clearPatientsLocalStorage(); - }); - stateTrackerService.goToPreviousState('openlmis.requisitions.initRnr'); - }, loadingModalService.close); - }, function(response) { - handleSaveError(response.status); - }); - } - } - - /** - * @ngdoc method - * @methodOf requisition-view.controller:RequisitionViewController - * @name authorizeRnr - * - * @description - * Responsible for authorizing requisition. Displays confirmation dialog, and checks - * requisition validity before authorization. If the requisition is not valid, fails to - * save or an error occurs during authorization, an error notification modal will be - * displayed. - * Otherwise, a success notification modal will be shown. - */ - function authorizeRnr() { - confirmService.confirm( - 'requisitionView.authorize.confirm', - 'requisitionView.authorize.label' - ).then(function() { - if (requisitionValidator.validateRequisition(requisition) && validatePatientsTable()) { - addPatientsDataToRequisition(); - - if (requisitionValidator.areAllLineItemsSkipped(requisition.requisitionLineItems)) { - failWithMessage('requisitionView.allLineItemsSkipped')(); - } else if (vm.program.enableDatePhysicalStockCountCompleted) { - var modal = new RequisitionStockCountDateModal(vm.requisition); - modal.then(saveThenAuthorize); - } else { - saveThenAuthorize(); - } - } else { - $rootScope.$broadcast('isSubmitInProgress', true); - $scope.$broadcast('openlmis-form-submit'); - failWithMessage('requisitionView.rnrHasErrors')(); - } - }); - - function saveThenAuthorize() { - var loadingPromise = loadingModalService.open(); - vm.requisition.$save().then(function() { - vm.requisition.$authorize().then(function() { - watcher.disableWatcher(); - loadingPromise.then(function() { - notificationService.success('requisitionView.authorize.success'); - clearPatientsLocalStorage(); - }); - stateTrackerService.goToPreviousState('openlmis.requisitions.initRnr'); - }, loadingModalService.close); - }, function(response) { - handleSaveError(response.status); - }); - } - } - - /** - * @ngdoc method - * @methodOf requisition-view.controller:RequisitionViewController - * @name removeRnr - * - * @description - * Responsible for removing requisition. Displays confirmation dialog before deletion. - * If an error occurs during authorization, it will display an error notification modal. - * Otherwise, a success notification modal will be shown. - */ - function removeRnr() { - confirmService.confirmDestroy( - 'requisitionView.delete.confirm', - 'requisitionView.delete.label' - ).then(function() { - var loadingPromise = loadingModalService.open(); - vm.requisition.$remove().then(function() { - watcher.disableWatcher(); - loadingPromise.then(function() { - notificationService.success('requisitionView.delete.success'); - clearPatientsLocalStorage(); - }); - stateTrackerService.goToPreviousState('openlmis.requisitions.initRnr'); - }, loadingModalService.close); - }); - } - - /** - * @ngdoc method - * @methodOf requisition-view.controller:RequisitionViewController - * @name approveRnr - * - * @description - * Responsible for approving requisition. Displays confirmation dialog, and checks - * requisition validity before approval. If the requisition is not valid or it fails to - * save, an error notification modal will be displayed. - * Otherwise, a success notification modal will be shown. - */ - function approveRnr() { - // Unskip skipped line items when approving - vm.requisition.requisitionLineItems.forEach(function (lineItem) { - if (lineItem.requestedQuantity > 0) { - lineItem.skipped = ""; - } - }); - confirmService.confirm( - 'requisitionView.approve.confirm', - 'requisitionView.approve.label' - ).then(function () { - if (requisitionValidator.validateRequisition(requisition)) { - var loadingPromise = loadingModalService.open(); - vm.requisition.$save().then(function () { - vm.requisition.$approve().then(function () { - watcher.disableWatcher(); - loadingPromise.then(function () { - notificationService.success('requisitionView.approve.success'); - clearPatientsLocalStorage(); - }); - stateTrackerService.goToPreviousState('openlmis.requisitions.approvalList'); - }, loadingModalService.close); - }, function (response) { - handleSaveError(response.status); - }); - } else { - $scope.$broadcast('openlmis-form-submit'); - failWithMessage('requisitionView.rnrHasErrors')(); - } - }); - } - - /** - * @ngdoc method - * @methodOf requisition-view.controller:RequisitionViewController - * @name rejectRnr - * - * @description - * Responsible for rejecting requisition. Displays confirmation dialog before rejection. - * If an error occurs during rejecting it will display an error notification modal. - * Otherwise, a success notification modal will be shown. - */ - function rejectRnr() { - loadRejectionReasonModal().then(function(rejectionReasons) { - confirmService.confirmDestroy( - 'requisitionView.reject.confirm', - 'requisitionView.reject.label' - ).then(function() { - loadingModalService.open(); - vm.requisition.$save() - .then(function() { - return vm.requisition.$reject(rejectionReasons); - }) - .then(function() { - watcher.disableWatcher(); - notificationService.success('requisitionView.reject.success'); - stateTrackerService.goToPreviousState('openlmis.requisitions.approvalList'); - clearPatientsLocalStorage(); - }) - .catch(loadingModalService.close); - }); - }); - } - - /** - * @ngdoc method - * @methodOf requisition-view.controller:RequisitionViewController - * @name loadRejectionReasonModal - * - * @description - * Display rejection reason dialog if enabled. - */ - function loadRejectionReasonModal() { - return $q(function(resolve) { - if (vm.requisition.template.rejectionReasonWindowVisible) { - rejectionReasonModalService.open().then(function(rejectionReasons) { - resolve(rejectionReasons); - }); - } else { - resolve(); - } - }); - } - - /** - * @ngdoc method - * @methodOf requisition-view.controller:RequisitionViewController - * @name skipRnr - * - * @description - * Responsible for skipping requisition. Displays confirmation dialog before skipping. - * If an error occurs during skipping it will display an error notification modal. - * Otherwise, a success notification modal will be shown. - */ - function skipRnr() { - confirmService.confirm( - 'requisitionView.skip.confirm', - 'requisitionView.skip.label' - ).then(function() { - var loadingPromise = loadingModalService.open(); - vm.requisition.$skip().then(function() { - watcher.disableWatcher(); - loadingPromise.then(function() { - notificationService.success('requisitionView.skip.success'); - }); - stateTrackerService.goToPreviousState('openlmis.requisitions.initRnr'); - }, failWithMessage('requisitionView.skip.failure')); - }); - } - - /** - * @ngdoc method - * @methodOf requisition-view.controller:RequisitionViewController - * @name getPrintUrl - * - * @description - * Prepares a print URL for the given requisition. - * - * @return {String} the prepared URL - */ - function getPrintUrl() { - return requisitionUrlFactory('/api/requisitions/' + vm.requisition.id + '/print'); - } - - /** - * @ngdoc method - * @methodOf requisition-view.controller:RequisitionViewController - * @name isFullSupplyTabValid - * - * @description - * Checks whether full supply tab has any errors. This method ignores skipped line items and - * does not trigger validation. - * - * @return {Boolean} true if full supply tab has any errors, false otherwise - */ - function isFullSupplyTabValid() { - var fullSupplyItems = $filter('filter')(vm.requisition.requisitionLineItems, { - $program: { - fullSupply: true - } - }, true), - valid = requisitionValidator.areLineItemsValid(fullSupplyItems); - - vm.invalidFullSupply = valid ? undefined : messageService.get('requisitionView.requisition.error'); - - return valid; - } - - /** - * @ngdoc method - * @methodOf requisition-view.controller:RequisitionViewController - * @name isNonFullSupplyTabValid - * - * @description - * Checks whether non full supply tab has any errors. This method ignores skipped line items - * and does not trigger validation. - * - * @return {Boolean} true if non full supply tab has any errors, false otherwise - */ - function isNonFullSupplyTabValid() { - var nonFullSupplyItems = $filter('filter')(vm.requisition.requisitionLineItems, { - $program: { - fullSupply: false - } - }, true), - valid = requisitionValidator.areLineItemsValid(nonFullSupplyItems); - - vm.invalidNonFullSupply = valid ? undefined : messageService.get('requisitionView.requisition.error'); - - return valid; - } - - function handleSaveError(status) { - if (status === 409) { - // in case of conflict, use the server version - notificationService.error('requisitionView.versionMismatch'); - reloadState(); - } else if (status === 403) { - // 403 means user lost rights or requisition changed status - notificationService.error('requisitionView.updateForbidden'); - reloadState(); - } else { - failWithMessage('requisitionView.sync.failure')(); - } - } - - function reloadState() { - $state.reload(); - } - - function failWithMessage(message) { - return function() { - loadingModalService.close(); - alertService.error(message); - }; - } - - function clearPatientsLocalStorage() { - localStorageFactory(TB_STORAGE).clearAll(); - localStorageFactory(LEPROSY_STORAGE).clearAll(); - } - - function getFromLocalStorage(storageName) { - return localStorageFactory(storageName).getAll(); - } - - function validatePatientsTable() { - var TBArray = getFromLocalStorage(TB_STORAGE); - var LeprosyArray = getFromLocalStorage(LEPROSY_STORAGE); - - // When PatientsTab is not enabled should return true - if (!requisition.template.patientsTabEnabled) { - return true; - } - - return RequisitionViewService.isArrayFullyFilled(TBArray) && - RequisitionViewService.isArrayFullyFilled(LeprosyArray); - } - - function addPatientsDataToRequisition() { - var TBArray = getFromLocalStorage(TB_STORAGE); - var LeprosyArray = getFromLocalStorage(LEPROSY_STORAGE); - - vm.requisition.patientsData = JSON.stringify( - { - TBData: TBArray, - leprosyData: LeprosyArray - } - ); - } - } -})(); diff --git a/src/requisition-view/requisition-view.html b/src/requisition-view/requisition-view.html deleted file mode 100755 index 9cf6cf1..0000000 --- a/src/requisition-view/requisition-view.html +++ /dev/null @@ -1,46 +0,0 @@ -
-

{{:: 'requisitionView.reportAndRequisitionFor' | message}} {{vm.program.name}} ({{vm.facility.type.name}})

- -
- -

- {{:: 'requisitionView.outdated' | message}} - -

- - - - - - -
- - - - diff --git a/src/requisition-view/requisition-view.module.js b/src/requisition-view/requisition-view.module.js deleted file mode 100755 index 48530d4..0000000 --- a/src/requisition-view/requisition-view.module.js +++ /dev/null @@ -1,43 +0,0 @@ -/* - * This program is part of the OpenLMIS logistics management information system platform software. - * Copyright © 2017 VillageReach - * - * This program is free software: you can redistribute it and/or modify it under the terms - * of the GNU Affero General Public License as published by the Free Software Foundation, either - * version 3 of the License, or (at your option) any later version. - *   - * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; - * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  - * See the GNU Affero General Public License for more details. You should have received a copy of - * the GNU Affero General Public License along with this program. If not, see - * http://www.gnu.org/licenses.  For additional information contact info@OpenLMIS.org.  - */ - -(function() { - - 'use strict'; - - /** - * @module requisition-view - * - * @description - * Responsible for requisition view screen. - */ - angular.module('requisition-view', [ - 'openlmis-templates', - 'openlmis-i18n', - 'openlmis-state-tracker', - 'openlmis-modal', - 'openlmis-date', - 'openlmis-invalid', - 'openlmis-permissions', - 'requisition', - 'requisition-summary', - 'requisition-validation', - 'requisition-status-messages', - 'requisition-view-tab', - 'requisition-redistribution', - 'ui.router' - ]); - -})(); diff --git a/src/requisition-view/requisition-view.routes.js b/src/requisition-view/requisition-view.routes.js deleted file mode 100755 index e031f99..0000000 --- a/src/requisition-view/requisition-view.routes.js +++ /dev/null @@ -1,90 +0,0 @@ -/* - * This program is part of the OpenLMIS logistics management information system platform software. - * Copyright © 2017 VillageReach - * - * This program is free software: you can redistribute it and/or modify it under the terms - * of the GNU Affero General Public License as published by the Free Software Foundation, either - * version 3 of the License, or (at your option) any later version. - *   - * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; - * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  - * See the GNU Affero General Public License for more details. You should have received a copy of - * the GNU Affero General Public License along with this program. If not, see - * http://www.gnu.org/licenses.  For additional information contact info@OpenLMIS.org.  - */ - -(function() { - - 'use strict'; - - angular - .module('requisition-view') - .config(routes); - - routes.$inject = ['$stateProvider', 'REQUISITION_RIGHTS', 'FULFILLMENT_RIGHTS']; - - function routes($stateProvider, REQUISITION_RIGHTS, FULFILLMENT_RIGHTS) { - - $stateProvider.state('openlmis.requisitions.requisition', { - label: 'requisitionView.viewRequisition', - url: '^/requisition/:rnr', - controller: 'RequisitionViewController', - controllerAs: 'vm', - templateUrl: 'requisition-view/requisition-view.html', - isOffline: true, - accessRights: [ - REQUISITION_RIGHTS.REQUISITION_CREATE, - REQUISITION_RIGHTS.REQUISITION_DELETE, - REQUISITION_RIGHTS.REQUISITION_AUTHORIZE, - REQUISITION_RIGHTS.REQUISITION_APPROVE, - FULFILLMENT_RIGHTS.ORDERS_EDIT - ], - resolve: { - user: function(currentUserService) { - return currentUserService.getUserInfo(); - }, - requisition: function($stateParams, requisitionService) { - return requisitionService.get($stateParams.rnr); - }, - program: function(programService, requisition) { - return programService.get(requisition.program.id); - }, - processingPeriod: function(periodService, requisition) { - return periodService.get(requisition.processingPeriod.id); - }, - facility: function(facilityService, requisition) { - return facilityService.get(requisition.facility.id); - }, - canSubmit: function(requisitionViewFactory, user, requisition) { - return requisitionViewFactory.canSubmit(user.id, requisition); - }, - canAuthorize: function(requisitionViewFactory, user, requisition) { - return requisitionViewFactory.canAuthorize(user.id, requisition); - }, - canApproveAndReject: function(requisitionViewFactory, user, requisition) { - return requisitionViewFactory.canApproveAndReject(user, requisition); - }, - canDelete: function(requisitionViewFactory, user, requisition) { - return requisitionViewFactory.canDelete(user.id, requisition); - }, - canSkip: function(requisitionViewFactory, user, requisition, program) { - return requisitionViewFactory.canSkip(user.id, requisition, program); - }, - canSync: function(canSubmit, canAuthorize, canApproveAndReject) { - return canSubmit || canAuthorize || canApproveAndReject; - }, - canUnskipRequisitionItemWhenApproving: function(requisitionViewFactory, requisition) { - return requisitionViewFactory.canUnskipRequisitionItemWhenApproving(requisition); - }, - homeFacility: function(facilityFactory, $stateParams) { - if (!$stateParams.facility) { - return facilityFactory.getUserHomeFacility(); - } - return $stateParams.facility; - } - } - }); - - } - -})();