223: Review and approve submitted requisitions

223: Review and approve submitted requisitions

 Test Case #:223

Test Case Name:  Review and approve submitted requisitions

System: OpenLMIS

Subsystem: requisition

Test case designed by: Paulina Borowa

Design Date:11.08.2016

Short description: Supervisor can access/view the submitted requisitions based on the supervisory hierarchy (which facilities the user is assigned to review/approve) -all requisition details are visable -the supervisor can see comments from the requisitioner (and authorizer when appropriate) -the supervisor can make changes to the "Approved Quantity" attribute -the supervisor can input text (string 250 characters) in the "Remarks" attribute -the supervisor can insert comments on the approved requistion -the supervisor can see comments made by the requisitioner and/or authorizer receive. Allows supervisor (or appropriate personnel) to review and approve submitted requisitions

                                                                                                                                                   

Pre – conditions:

                                                                                                                                                                                                                                                      

 

Step

Action

Expected system response

Comment

1

                                                                              

Create geographicLevels

In URL:

Method: Post:

Example Body:

{

"code": "levelcode",

"name": "levelname",

"levelNumber": "32"

}


                                                                                       

 Status 201 created         

id: a8db3899-896f-4e40-b912-f38a6af5b3ce

                                                 

2

Create geographicZone

In URL:

Method: Post:

Example Body:

{

"code": "geocode",

"name": "geoname",

"level": {

"id": "a8db3899-896f-4e40-b912-f38a6af5b3ce",

"code": "levelcode",

"name": "levelname",

"levelNumber": "32"

}

 

}

Status 201 Created ,

id: 3141d995-1f69-4400-be30-64ed564a0253

 

 

3

Create facilityType

In URL:

Method: Post

Example Body:

{

"code": "typecode",

"name": "typename"

}

Status 201 Created ,

id: d734497f-7e46-4915-9f05-83c0432fc158

 

 

4

Create facility

In URL:

Method Post

Example body:

{

"code": "facilitycode",

"name": "facilityname",

"geographicZone": {

"id": "3141d995-1f69-4400-be30-64ed564a0253",

"code": "geocode",

"name": "geoname",

"level": {

"id": "a8db3899-896f-4e40-b912-f38a6af5b3ce",

"code": "levelcode",

"name": "levelname",

"levelNumber": "32"

}

},

"type": {

"id": "d734497f-7e46-4915-9f05-83c0432fc158",

"code": "typecode",

"name": "typename"

},

"active": true,

"enabled": true

}

 

 

 

Status 201 Created,

id: fb9ce60f-6557-4651-b9b9-efefccf76251

 

 

5

Create program:

In URL: 

Method: Post

Example Body:

{

"code": "programcode",

"name": "programname",

"periodsSkippable": true

}

Status 201 Created,

id: bebd5da3-b905-45b7-a474-85c3ba655f9d

 

6

Create schedule

In URL:

Method: Post

Example Body:

{

"code": "schedulecode",

"name": "schedulename"

}

Status 201 Created,

id: 79650728-fb5e-4413-ba1e-c58e042415f9

 

7

Create periods

In URL:

Method: Post

Example Body:

{

"processingSchedule": {

"id":"865f24e7-9496-4dc3-86d4-f00554da539b",

"code": "schedulecode",

"name": "schedulename"

},

"name": "periodname",

"description": "abc",

"startDate": "2016-09-05",

"endDate": "2016-09-15"

}

Status 201 Created,

"id": f9378770-e1f9-4dbc-85b2-482ce55cb776

 

 

8

Create RequisitionLine

URL:

Method: POST

Body:

{

"id": "fc93a929-d62e-4fff-9f8f-4ad9df0a4e60",

"product": {

"id": "1752b457-0a4b-4de0-bf94-5a6a8002427e",

"code": "productCode",

"primaryName": "productName",

"dispensingUnit": "1",

"dosesPerDispensingUnit": 1,

"packSize": 1,

"packRoundingThreshold": 1,

"roundToZero": true,

"active": true,

"fullSupply": true,

"tracer": true,

"productCategory": {

"id": "3c840e6c-a2e6-482f-b794-90379fcbfe00",

"code": "categorycode",

"name": "categoryname",

"displayOrder": 32

}

},

"requisition": null,

"stockInHand": 2,

"beginningBalance": 2,

"totalReceivedQuantity": 2,

"totalLossesAndAdjustments": 2,

"stockOnHand": 2,

"requestedQuantity": 2,

"totalConsumedQuantity": 2,

"requestedQuantityExplanation": "abc",

"remarks": "sometest",

"approvedQuantity": 2

}

id: 1275b316-68c6-48c8-a343-b82b854eaa25

The attribute Remarks are not filled.

9

Create User

Method: POST

Body:

{

"username": "UserName12",

"email": "abc@gmail.com",

"firstName": "Name2F",

"lastName": "Last2N",

"verified": "true",

"active": "true",

"restrictLogin": "false",

"timezone":"CTM"

}

id: d8c1a779-53ca-435e-a86c-a7a786fe50b6

 

10

Create supervisoryNode

Method: POST

Example body:

 

{

"code": "supervisoryNodeTest",

"facility": {

"id": "fb9ce60f-6557-4651-b9b9-efefccf76251",

"code": "facilitycode",

"name": "facilityname",

"geographicZone": {

"id": "3141d995-1f69-4400-be30-64ed564a0253",

"code": "geocode",

"name": "geoname",

"level": {

"id": "a8db3899-896f-4e40-b912-f38a6af5b3ce",

"code": "levelcode",

"name": "levelname",

"levelNumber": "32"

}

},

"type": {

"id": "d734497f-7e46-4915-9f05-83c0432fc158",

"code": "typecode",

"name": "typename"

},

"active": true,

"enabled": true

}

}

id: 5ec94f96-ac1b-4d1d-bd89-505f4f71c0e8

 

11

 

Create requisition:

Method: Post

Example Body

{

"id": "abd802e5-c181-453e-9b9a-087eedfb68b9",

"requisitionLines": [

{

"id": "4da79bc3-4188-4770-bace-991761dfb869",

"product": {

"id": "1752b457-0a4b-4de0-bf94-5a6a8002427e",

"code": "productCode",

"primaryName": "productName",

"dispensingUnit": 1,

"dosesPerDispensingUnit": 1,

"packSize": 1,

"packRoundingThreshold": 1,

"roundToZero": true,

"active": true,

"fullSupply": true,

"tracer": true,

"productCategory": {

"id": "3c840e6c-a2e6-482f-b794-90379fcbfe00",

"code": "categorycode",

"name": "categoryname",

"displayOrder": 32

 

}

 

 

},

"stockInHand": 2,

"beginningBalance": 2,

"totalReceivedQuantity": 2,

"totalLossesAndAdjustments": 2,

"stockOnHand": 2,

"requestedQuantity": 2,

"totalConsumedQuantity": 2,

"requestedQuantityExplanation": "abc",

"remarks": "sometest",

"approvedQuantity": 2

}

],

"facility": {

"id": "fb9ce60f-6557-4651-b9b9-efefccf76251",

"code": "facilitycode",

"name": "facilityname",

"geographicZone": {

"id": "3141d995-1f69-4400-be30-64ed564a0253",

"code": "geocode",

"name": "geoname",

"level": {

"id": "a8db3899-896f-4e40-b912-f38a6af5b3ce",

"code": "levelcode",

"name": "levelname",

"levelNumber": "32"

}

},

"type": {

"id": "d734497f-7e46-4915-9f05-83c0432fc158",

"code": "typecode",

"name": "typename"

},

"active": true,

"enabled": true

},

"program": {

"id": "bebd5da3-b905-45b7-a474-85c3ba655f9d",

"code": "programcode",

"name": "programname",

"periodsSkippable": true

},

"processingPeriod": {

"id": "f9378770-e1f9-4dbc-85b2-482ce55cb776",

"processingSchedule": {

"id": "79650728-fb5e-4413-ba1e-c58e042415f9",

"code": "schedulecode",

"name": "schedulename"

},

"name": "periodname",

"description": "abc",

"startDate": "2016-09-15",

"endDate": "2016-09-15"

 

},

"status": "INITIATED",

"supervisoryNode": {

"id": " 5ec94f96-ac1b-4d1d-bd89-505f4f71c0e8",

"code": "supervisoryNodeTest",

"facility": {

"id": "fb9ce60f-6557-4651-b9b9-efefccf76251",

"code": "facilitycode",

"name": "facilityname",

"geographicZone": {

"id": "3141d995-1f69-4400-be30-64ed564a0253",

"code": "geocode",

"name": "geoname",

"level": {

"id": "a8db3899-896f-4e40-b912-f38a6af5b3ce",

"code": "levelcode",

"name": "levelname",

"levelNumber": "32"

}

},

"type": {

"id": "d734497f-7e46-4915-9f05-83c0432fc158",

"code": "typecode",

"name": "typename"

}

}

}

}


                        

Status 201 Created,

id: f13a2c6f-8791-4329-b468-11634e0cedf1

Created requisition contain the entites created above.

12

Submit the previously created requisition.

Method: PUT

Body: the body of previously created requisition

 

 

13

Verify if the requisition is submitted.

Method: GET

OR

Method: GET

 

14

Create special User with previously created supervisoryNode.

Method: POST

Example body:

{

"id": "35316636-6264-6331-2d34-3933322d3462",

"username": "trusted-client",

"password": "secret",

"email": "testowysoldevelo@gmail.com",

"firstName": "Name2F",

"lastName": "Last2N",

"verified": "true",

"active": "true",

"restrictLogin": "false",

"timezone":"CTM",

"supervisedNode": {

"id": "5ec94f96-ac1b-4d1d-bd89-505f4f71c0e8",

"code": "supervisoryNodeTest",

"facility": {

"id": "fb9ce60f-6557-4651-b9b9-efefccf76251",

"code": "facilitycode",

"name": "facilityname",

"geographicZone": {

"id": "3141d995-1f69-4400-be30-64ed564a0253",

"code": "geocode",

"name": "geoname",

"level": {

"id": "a8db3899-896f-4e40-b912-f38a6af5b3ce",

"code": "levelcode",

"name": "levelname",

"levelNumber": "32"

}

},

"type": {

"id": "d734497f-7e46-4915-9f05-83c0432fc158",

"code": "typecode",

"name": "typename"

},

"active": true,

"enabled": true

}

}

 

}

 

"id": "35316636-6264-6331-2d34-3933322d3462"

"referenceDataUserId": "35316636-6264-6331-2d34-3933322d3462"

15

Authorize the first requisition.

Body: the body of previously created requisition

Method: PUT

 

16

Verify if the previously authorized requisition is waiting for the approval.

Method: GET

Only the requisition with AUTHORIZED status, supervisoryNode associated with special User will be seen.

The requisitions created in points 17 and 18 will not be visible on the approval lists. The User with proper role is not associated with supervisoryNode.

17

OpenLMIS: the global initiative for powerful LMIS software