Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,10 @@ This is the Invoice business logic module.
## Additional information

NOTE: Only in case an acquisition unit has to be assigned to the Invoice, it is required that user should have an
extra permission `invoices.acquisitions-units-assignments.assign` to create an invoice.
extra permission `invoices.acquisitions-units-assignments.create.execute` to create an invoice.

NOTE: Only in case an acquisition units list has to be changed for the Invoice, it is required that user should have an
extra permission `invoices.acquisitions-units-assignments.manage` to update an invoice.
extra permission `invoices.acquisitions-units-assignments.manage.execute` to update an invoice.

### Integration

Expand Down
28 changes: 10 additions & 18 deletions descriptors/ModuleDescriptor-template.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
"methods": ["POST"],
"pathPattern": "/invoice/invoices",
"permissionsRequired": ["invoice.invoices.item.post"],
"permissionsDesired": ["invoices.acquisitions-units-assignments.assign"],
"permissionsDesired": ["invoices.acquisitions-units-assignments.create.execute"],
"modulePermissions": [
"invoice-storage.invoices.item.post",
"invoice-storage.invoice-number.get",
Expand Down Expand Up @@ -55,7 +55,7 @@
"pathPattern": "/invoice/invoices/{id}",
"permissionsRequired": ["invoice.invoices.item.put"],
"permissionsDesired": [
"invoices.acquisitions-units-assignments.manage",
"invoices.acquisitions-units-assignments.manage.execute",
"invoices.fiscal-year.update.execute",
"invoice.item.approve.execute",
"invoice.item.pay.execute",
Expand Down Expand Up @@ -932,22 +932,24 @@
"replaces": ["invoices.bypass-acquisition-units"]
},
{
"permissionName": "invoices.acquisitions-units-assignments.assign",
"permissionName": "invoices.acquisitions-units-assignments.create.execute",
"displayName": "Acquisitions unit assignment - create unit assignment",
"description": "Assign new invoice to acquisitions units"
"description": "Assign new invoice to acquisitions units",
"replaces": ["invoices.acquisitions-units-assignments.assign"]
},
{
"permissionName": "invoices.acquisitions-units-assignments.manage",
"permissionName": "invoices.acquisitions-units-assignments.manage.execute",
"displayName": "Acquisitions units assignment - manage unit assignments",
"description": "Manage unit assignments during invoice update"
"description": "Manage unit assignments during invoice update",
"replaces": ["invoices.acquisitions-units-assignments.manage"]
},
{
"permissionName": "invoices.acquisitions-units-assignments.all",
"displayName": "All invoice acquisitions-unit-assignments permissions",
"description": "All permissions for the acquisitions-unit-assignments",
"subPermissions": [
"invoices.acquisitions-units-assignments.assign",
"invoices.acquisitions-units-assignments.manage"
"invoices.acquisitions-units-assignments.create.execute",
"invoices.acquisitions-units-assignments.manage.execute"
]
},
{
Expand Down Expand Up @@ -1090,16 +1092,6 @@
"batch-voucher.batch-voucher-exports.all"
],
"visible": false
},
{
"permissionName": "invoices.acquisitions-units-assignments.assign",
"displayName": "Ability to assign acquisition unit and create invoice",
"description": "Ability to assign acquisition unit and create invoice"
},
{
"permissionName": "invoices.acquisitions-units-assignments.manage",
"displayName": "Ability to manage acquisition unit and update invoice",
"description": "Ability to manage acquisition unit and update invoice"
}
],
"metadata": {
Expand Down
4 changes: 2 additions & 2 deletions ramls/invoice.raml
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ resourceTypes:
exampleItem: !include acq-models/mod-invoice-storage/examples/invoice.sample

post:
description: Post invoice. Only in case an acquisition unit has to be assigned to the invoice, it is required that user should have extra permission invoices.acquisitions-units-assignments.assign to create an Invoice.
description: Post invoice. Only in case an acquisition unit has to be assigned to the invoice, it is required that user should have extra permission invoices.acquisitions-units-assignments.create.execute to create an Invoice.
is: [validate]
get:
is: [ pageable, searchable: {description: "using CQL (indexes for invoice)", example: "invoiceLineStatus==\"Open\""}, validate ]
Expand All @@ -64,7 +64,7 @@ resourceTypes:
get:
description: Return an invoice with given {id}
put:
description: Update invoice. Only in case an acquisition units list has to be changed, it is required that user should have extra permission invoices.acquisitions-units-assignments.manage to update an Invoice.
description: Update invoice. Only in case an acquisition units list has to be changed, it is required that user should have extra permission invoices.acquisitions-units-assignments.manage.execute to update an Invoice.
queryParameters:
poLinePaymentStatus:
description: how to update the payment status of po lines when approving or cancelling the invoice;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
import java.util.stream.Collectors;

public enum AcqDesiredPermissions {
ASSIGN("invoices.acquisitions-units-assignments.assign"),
MANAGE("invoices.acquisitions-units-assignments.manage"),
ASSIGN("invoices.acquisitions-units-assignments.create.execute"),
MANAGE("invoices.acquisitions-units-assignments.manage.execute"),
APPROVE("invoice.item.approve.execute"),
PAY("invoice.item.pay.execute"),
CANCEL("invoice.item.cancel.execute"),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ public class DataImportUtilsTest {
private static final String TENANT = "diku";
private static final String TOKEN = "token";
private static final String OKAPI_URL = "okapi_url";
private static final String PERMISSIONS_ARRAY = "[\"invoices.acquisitions-units-assignments.assign\"]";
private static final String PERMISSIONS_ARRAY = "[\"invoices.acquisitions-units-assignments.create.execute\"]";
private static final String USER_ID = "userId";

@Test
Expand Down
12 changes: 6 additions & 6 deletions src/test/java/org/folio/rest/impl/ApiTestBase.java
Original file line number Diff line number Diff line change
Expand Up @@ -98,17 +98,17 @@ public class ApiTestBase {
"invoice.item.approve.execute",
"invoice.item.pay.execute",
"invoice.invoices.item.put",
"invoices.acquisitions-units-assignments.manage",
"invoices.acquisitions-units-assignments.assign",
"invoices.acquisitions-units-assignments.manage.execute",
"invoices.acquisitions-units-assignments.create.execute",
"invoices.fiscal-year.update.execute"
);

public static final String permissionsJsonArrayString = new JsonArray(permissionsList).encode();

public static final List<String> permissionsWithoutApproveAndPayList = Arrays.asList(
"invoice.invoices.item.put",
"invoices.acquisitions-units-assignments.manage",
"invoices.acquisitions-units-assignments.assign",
"invoices.acquisitions-units-assignments.manage.execute",
"invoices.acquisitions-units-assignments.create.execute",
"invoices.fiscal-year.update.execute"
);

Expand All @@ -119,8 +119,8 @@ public class ApiTestBase {
public static final List<String> permissionsWithoutPaidList = Arrays.asList(
"invoice.item.approve.execute",
"invoice.invoices.item.put",
"invoices.acquisitions-units-assignments.manage",
"invoices.acquisitions-units-assignments.assign",
"invoices.acquisitions-units-assignments.manage.execute",
"invoices.acquisitions-units-assignments.create.execute",
"invoices.fiscal-year.update.execute"
);

Expand Down
20 changes: 10 additions & 10 deletions src/test/java/org/folio/utils/UserPermissionsUtilTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ void shouldNotThrowExceptionWhenApprovePermissionIsInPosition() {
void shouldThrowExceptionWhenApprovePermissionIsAbsent() {
List<String> permissionsList = Arrays.asList(
"invoice.invoices.item.put",
"invoices.acquisitions-units-assignments.manage",
"invoices.acquisitions-units-assignments.manage.execute",
"invoices.fiscal-year.update.execute"
);

Expand Down Expand Up @@ -82,7 +82,7 @@ void shouldNotThrowExceptionWhenPayPermissionIsInPosition() {
void shouldThrowCorrectErrorCodeWhenPayPermissionIsAbsent() {
List<String> permissionsList = Arrays.asList(
"invoice.invoices.item.put",
"invoices.acquisitions-units-assignments.manage",
"invoices.acquisitions-units-assignments.manage.execute",
"invoices.fiscal-year.update.execute"
);

Expand Down Expand Up @@ -143,7 +143,7 @@ void shouldThrowCorrectErrorCodeWhenCancelPermissionIsAbsent() {
void shouldThrowCorrectErrorCodeWhenAssignPermissionIsAbsent() {
List<String> permissionsList = Arrays.asList(
"invoice.invoices.item.put",
"invoices.acquisitions-units-assignments.manage",
"invoices.acquisitions-units-assignments.manage.execute",
"invoices.fiscal-year.update.execute"
);

Expand All @@ -169,9 +169,9 @@ void shouldNotThrowExceptionWhenAssignPermissionIsAssigned() {

List<String> permissionsList = Arrays.asList(
"invoice.invoices.item.put",
"invoices.acquisitions-units-assignments.manage",
"invoices.acquisitions-units-assignments.manage.execute",
"invoices.fiscal-year.update.execute",
"invoices.acquisitions-units-assignments.assign"
"invoices.acquisitions-units-assignments.create.execute"
);

String permissionsJsonArrayString = new JsonArray(permissionsList).encode();
Expand All @@ -192,7 +192,7 @@ void shouldNotThrowExceptionWhenAssignPermissionIsAssigned() {
@DisplayName("should throw exception when manage permission is absent")
void shouldThrowExceptionWhenManagePermissionIsAbsent() {
List<String> permissionsList = List.of(
"invoices.acquisitions-units-assignments.assign"
"invoices.acquisitions-units-assignments.create.execute"
);

String permissionsJsonArrayString = new JsonArray(permissionsList).encode();
Expand All @@ -215,8 +215,8 @@ void shouldThrowExceptionWhenManagePermissionIsAbsent() {
void shouldNotThrowExceptionWhenManagePermissionIsAssigned() {
// Create a list of permissions
List<String> permissionsList = Arrays.asList(
"invoices.acquisitions-units-assignments.manage",
"invoices.acquisitions-units-assignments.assign"
"invoices.acquisitions-units-assignments.manage.execute",
"invoices.acquisitions-units-assignments.create.execute"
);

String permissionsJsonArrayString = new JsonArray(permissionsList).encode();
Expand All @@ -237,7 +237,7 @@ void shouldNotThrowExceptionWhenManagePermissionIsAssigned() {
@DisplayName("should throw exception when fiscal year update permission is absent")
void shouldThrowExceptionWhenFiscalYearUpdatePermissionIsAbsent() {
List<String> permissionsList = List.of(
"invoices.acquisitions-units-assignments.assign"
"invoices.acquisitions-units-assignments.create.execute"
);

String permissionsJsonArrayString = new JsonArray(permissionsList).encode();
Expand All @@ -261,7 +261,7 @@ void shouldNotThrowExceptionWhenFiscalYearUpdatePermissionIsAssigned() {
// Create a list of permissions
List<String> permissionsList = Arrays.asList(
"invoices.fiscal-year.update.execute",
"invoices.acquisitions-units-assignments.assign"
"invoices.acquisitions-units-assignments.create.execute"
);

String permissionsJsonArrayString = new JsonArray(permissionsList).encode();
Expand Down