@openmrs/esm-stock-management-app 1.0.1-pre.777 → 1.0.1-pre.785

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (120) hide show
  1. package/__mocks__/index.ts +1 -0
  2. package/__mocks__/operation-type.mock.ts +532 -0
  3. package/dist/155.js +1 -0
  4. package/dist/155.js.map +1 -0
  5. package/dist/172.js +1 -1
  6. package/dist/20.js +1 -1
  7. package/dist/290.js +1 -1
  8. package/dist/493.js +2 -0
  9. package/dist/493.js.map +1 -0
  10. package/dist/606.js +1 -1
  11. package/dist/627.js +1 -1
  12. package/dist/{400.js → 914.js} +1 -1
  13. package/dist/914.js.map +1 -0
  14. package/dist/main.js +1 -1
  15. package/dist/main.js.map +1 -1
  16. package/dist/openmrs-esm-stock-management-app.js +1 -1
  17. package/dist/openmrs-esm-stock-management-app.js.buildmanifest.json +81 -57
  18. package/dist/openmrs-esm-stock-management-app.js.map +1 -1
  19. package/dist/routes.json +1 -1
  20. package/package.json +1 -1
  21. package/src/core/utils/utils.ts +29 -0
  22. package/src/index.ts +4 -0
  23. package/src/routes.json +9 -0
  24. package/src/stock-items/add-stock-item/transactions/printout/transactions-stockcard-printout.component.tsx +8 -12
  25. package/src/stock-items/add-stock-item/transactions/transactions.component.tsx +8 -12
  26. package/src/stock-items/stock-items.resource.ts +5 -5
  27. package/src/stock-lookups/stock-lookups.resource.ts +2 -2
  28. package/src/stock-operations/edit-stock-operation/edit-stock-operation-action-menu.component.tsx +41 -16
  29. package/src/stock-operations/{add-stock-operation/received-items.component.tsx → received-items.component.tsx} +1 -1
  30. package/src/stock-operations/stock-operation-reference.component.tsx +64 -0
  31. package/src/stock-operations/stock-operation-status/stock-operation-status-row.tsx +77 -0
  32. package/src/stock-operations/stock-operation-status/stock-operation-status.scss +32 -0
  33. package/src/stock-operations/stock-operation-status/stock-operation-status.tsx +45 -0
  34. package/src/stock-operations/stock-operation-types-selector/stock-operation-types-selector.component.tsx +30 -29
  35. package/src/stock-operations/stock-operation.utils.tsx +16 -79
  36. package/src/stock-operations/stock-operations-dialog/stock-operations-issue-stock-button.component.tsx +27 -39
  37. package/src/stock-operations/stock-operations-dialog/stock-operations-print-button.component.tsx +51 -59
  38. package/src/stock-operations/{stock-item-selector/stock-item-selector.resource.tsx → stock-operations-forms/hooks/useFilterableStockItems.ts} +4 -4
  39. package/src/stock-operations/stock-operations-forms/hooks/useFilteredOperationTypesByRoles.ts +30 -0
  40. package/src/stock-operations/stock-operations-forms/hooks/useOperationTypePermisions.ts +29 -0
  41. package/src/stock-operations/stock-operations-forms/hooks/useParties.ts +73 -0
  42. package/src/stock-operations/{users-selector/users-selector.resource.tsx → stock-operations-forms/hooks/useSearchUser.ts} +9 -7
  43. package/src/stock-operations/{batch-no-selector/batch-no-selector.resource.tsx → stock-operations-forms/hooks/useStockItemBatchNumbers.ts} +3 -3
  44. package/src/stock-operations/stock-operations-forms/hooks/useStockOperationLinks.ts +20 -0
  45. package/src/stock-operations/stock-operations-forms/input-components/batch-no-selector.component.tsx +72 -0
  46. package/src/stock-operations/stock-operations-forms/input-components/batch-no-selector.test.tsx +90 -0
  47. package/src/stock-operations/{add-stock-operation/stock-item-search/stock-item-search.scss → stock-operations-forms/input-components/input-components-styles.scss} +2 -2
  48. package/src/stock-operations/stock-operations-forms/input-components/qty-uim-selector.test.tsx +157 -0
  49. package/src/stock-operations/stock-operations-forms/input-components/quantity-uom-selector.component.tsx +53 -0
  50. package/src/stock-operations/stock-operations-forms/input-components/stock-item-search.component.tsx +56 -0
  51. package/src/stock-operations/stock-operations-forms/input-components/stock-operation-reason-selector.component.tsx +59 -0
  52. package/src/stock-operations/stock-operations-forms/input-components/stock-operation-reason-selector.test.tsx +216 -0
  53. package/src/stock-operations/stock-operations-forms/input-components/unique-batch-no-entry-input.component.tsx +59 -0
  54. package/src/stock-operations/stock-operations-forms/input-components/user-selector.test.tsx +110 -0
  55. package/src/stock-operations/stock-operations-forms/input-components/users-selector.component.tsx +111 -0
  56. package/src/stock-operations/stock-operations-forms/step1.test.tsx +303 -0
  57. package/src/stock-operations/stock-operations-forms/step2.test.tsx +250 -0
  58. package/src/stock-operations/stock-operations-forms/step3.test.tsx +223 -0
  59. package/src/stock-operations/stock-operations-forms/steps/base-operation-details-form-step.tsx +241 -0
  60. package/src/stock-operations/stock-operations-forms/steps/quantity-uom-cell.component.tsx +33 -0
  61. package/src/stock-operations/stock-operations-forms/steps/stock-availability-cell.component.tsx +51 -0
  62. package/src/stock-operations/stock-operations-forms/steps/stock-operation-item-batch-no-cell.component.tsx +40 -0
  63. package/src/stock-operations/stock-operations-forms/steps/stock-operation-item-cell.component.tsx +38 -0
  64. package/src/stock-operations/stock-operations-forms/steps/stock-operation-item-expiry-cell.component.tsx +41 -0
  65. package/src/stock-operations/stock-operations-forms/steps/stock-operation-items-form-step.component.tsx +281 -0
  66. package/src/stock-operations/stock-operations-forms/steps/stock-operation-items-form-step.scc.scss +64 -0
  67. package/src/stock-operations/stock-operations-forms/steps/stock-operation-submission-form-step.component.tsx +236 -0
  68. package/src/stock-operations/stock-operations-forms/stock-issue-form-initializer-with-related-requisition-operation.component.tsx +55 -0
  69. package/src/stock-operations/stock-operations-forms/stock-item-form/stock-item-form.scss +41 -0
  70. package/src/stock-operations/stock-operations-forms/stock-item-form/stock-item-form.workspace.tsx +197 -0
  71. package/src/stock-operations/stock-operations-forms/stock-operation-form-header.component.tsx +166 -0
  72. package/src/stock-operations/stock-operations-forms/stock-operation-form.component.tsx +200 -0
  73. package/src/stock-operations/stock-operations-forms/stock-operation-form.scss +111 -0
  74. package/src/stock-operations/stock-operations-forms/stock-operation-related-link.component.tsx +45 -0
  75. package/src/stock-operations/stock-operations-forms/stock-operation-stepper/stepper.scss +41 -0
  76. package/src/stock-operations/stock-operations-forms/stock-operation-stepper/stock-operation-stepper.component.tsx +52 -0
  77. package/src/stock-operations/stock-operations-forms/stock-operations-form-utils.ts +32 -0
  78. package/src/stock-operations/stock-operations-table.component.tsx +20 -56
  79. package/src/stock-operations/stock-operations.resource.ts +16 -13
  80. package/src/stock-operations/validation-schema.ts +72 -14
  81. package/dist/400.js.map +0 -1
  82. package/dist/766.js +0 -2
  83. package/dist/766.js.map +0 -1
  84. package/src/stock-operations/add-stock-operation/add-stock-operation.component.tsx +0 -349
  85. package/src/stock-operations/add-stock-operation/add-stock-operation.resource.tsx +0 -27
  86. package/src/stock-operations/add-stock-operation/add-stock-operation.scss +0 -60
  87. package/src/stock-operations/add-stock-operation/add-stock-operation.test.tsx +0 -192
  88. package/src/stock-operations/add-stock-operation/add-stock-operation.utils.tsx +0 -152
  89. package/src/stock-operations/add-stock-operation/add-stock-utils.ts +0 -103
  90. package/src/stock-operations/add-stock-operation/base-operation-details.component.tsx +0 -439
  91. package/src/stock-operations/add-stock-operation/base-operation-details.scss +0 -30
  92. package/src/stock-operations/add-stock-operation/stock-item-search/stock-item-search.component.tsx +0 -70
  93. package/src/stock-operations/add-stock-operation/stock-items-addition-row.component.tsx +0 -360
  94. package/src/stock-operations/add-stock-operation/stock-items-addition-row.resource.tsx +0 -0
  95. package/src/stock-operations/add-stock-operation/stock-items-addition-row.scss +0 -12
  96. package/src/stock-operations/add-stock-operation/stock-items-addition-row.test.tsx +0 -10
  97. package/src/stock-operations/add-stock-operation/stock-items-addition.component.scss +0 -17
  98. package/src/stock-operations/add-stock-operation/stock-items-addition.component.tsx +0 -254
  99. package/src/stock-operations/add-stock-operation/stock-operation-context/useStockOperationContext.tsx +0 -16
  100. package/src/stock-operations/add-stock-operation/stock-operation-reference.component.tsx +0 -39
  101. package/src/stock-operations/add-stock-operation/stock-operation-related-link.component.tsx +0 -38
  102. package/src/stock-operations/add-stock-operation/stock-operation-status.component.tsx +0 -170
  103. package/src/stock-operations/add-stock-operation/stock-operation-submission.component.tsx +0 -189
  104. package/src/stock-operations/add-stock-operation/stock-operation-submission.test.tsx +0 -138
  105. package/src/stock-operations/add-stock-operation/types.ts +0 -55
  106. package/src/stock-operations/add-stock-operation/validationSchema.ts +0 -54
  107. package/src/stock-operations/batch-no-selector/batch-no-selector.component.tsx +0 -114
  108. package/src/stock-operations/batch-no-selector/batch-no-selector.scss +0 -0
  109. package/src/stock-operations/batch-no-selector/batch-no-selector.test.tsx +0 -101
  110. package/src/stock-operations/party-selector/party-selector.component.tsx +0 -59
  111. package/src/stock-operations/qty-uom-selector/qty-uom-selector.component.tsx +0 -65
  112. package/src/stock-operations/qty-uom-selector/qty-uom-selector.resource.tsx +0 -0
  113. package/src/stock-operations/qty-uom-selector/qty-uom-selector.scss +0 -0
  114. package/src/stock-operations/qty-uom-selector/qty-uom-selector.test.tsx +0 -10
  115. package/src/stock-operations/stock-item-selector/stock-item-selector.component.tsx +0 -69
  116. package/src/stock-operations/stock-item-selector/stock-item-selector.scss +0 -0
  117. package/src/stock-operations/stock-item-selector/stock-item-selector.test.tsx +0 -10
  118. package/src/stock-operations/stock-operation-reason-selector/stock-operation-reason-selector.component.tsx +0 -62
  119. package/src/stock-operations/users-selector/users-selector.component.tsx +0 -75
  120. /package/dist/{766.js.LICENSE.txt → 493.js.LICENSE.txt} +0 -0
@@ -1,59 +0,0 @@
1
- import React, { ReactNode, useEffect } from 'react';
2
- import { Control, Controller, FieldValues } from 'react-hook-form';
3
- import { Party } from '../../core/api/types/Party';
4
- import { ComboBox } from '@carbon/react';
5
-
6
- interface PartySelectorProps<T> {
7
- partyUuid?: string;
8
- parties: Party[];
9
- onPartyChange?: (party: Party) => void;
10
- title?: string;
11
- placeholder?: string;
12
- invalid?: boolean;
13
- invalidText?: ReactNode;
14
- filterFunction?: (party: Party) => boolean;
15
-
16
- // Control
17
- controllerName: string;
18
- name: string;
19
- control: Control<FieldValues, T>;
20
- }
21
-
22
- const PartySelector = <T,>(props: PartySelectorProps<T>) => {
23
- return (
24
- <Controller
25
- name={props.controllerName}
26
- control={props.control}
27
- render={({ field: { onChange, value, ref } }) => {
28
- const selectedParty = props.parties.find((p) => p.uuid === props.partyUuid);
29
-
30
- if (selectedParty && !value) {
31
- onChange(selectedParty.uuid);
32
- }
33
- return (
34
- <ComboBox
35
- titleText={props.title}
36
- name={props.name}
37
- id={props.name}
38
- size={'md'}
39
- items={props.parties}
40
- onChange={(data: { selectedItem: Party }) => {
41
- props.onPartyChange?.(data.selectedItem);
42
- onChange(data.selectedItem?.uuid);
43
- }}
44
- initialSelectedItem={selectedParty}
45
- selectedItem={props.parties.find((p) => p.uuid === value)}
46
- itemToString={(item?: Party) => (item && item?.name ? `${item?.name}` : '')}
47
- shouldFilterItem={() => true}
48
- placeholder={props.placeholder}
49
- ref={ref}
50
- invalid={props.invalid}
51
- invalidText={props.invalidText}
52
- />
53
- );
54
- }}
55
- />
56
- );
57
- };
58
-
59
- export default PartySelector;
@@ -1,65 +0,0 @@
1
- import React, { ReactNode, useMemo } from 'react';
2
- import { Control, Controller, FieldValues } from 'react-hook-form';
3
- import { StockItemPackagingUOMDTO } from '../../core/api/types/stockItem/StockItemPackagingUOM';
4
- import { ComboBox, SkeletonText } from '@carbon/react';
5
- import { useStockItem } from '../../stock-items/stock-items.resource';
6
-
7
- interface QtyUomSelectorProps<T> {
8
- placeholder?: string;
9
- stockItemUuid: string;
10
- stockItemPackagingUOMUuid?: string;
11
- onStockPackageChanged?: (item: StockItemPackagingUOMDTO) => void;
12
- title?: string;
13
- invalid?: boolean;
14
- invalidText?: ReactNode;
15
-
16
- // Control
17
- controllerName: string;
18
- name: string;
19
- control: Control<FieldValues, T>;
20
- }
21
-
22
- const QtyUomSelector = <T,>(props: QtyUomSelectorProps<T>) => {
23
- const { isLoading, error, item } = useStockItem(props.stockItemUuid ?? props['uuid']);
24
- const initialSelectedItem = useMemo<StockItemPackagingUOMDTO | null>(
25
- () => (item?.packagingUnits?.length > 0 ? item.packagingUnits[0] : null),
26
- [item?.packagingUnits],
27
- );
28
-
29
- if (isLoading || error) return <SkeletonText />;
30
-
31
- return (
32
- <div>
33
- <Controller
34
- name={props.controllerName}
35
- control={props.control}
36
- defaultValue={initialSelectedItem.uuid ?? ''}
37
- render={({ field: { onChange, ref } }) => (
38
- <ComboBox
39
- titleText={props.title}
40
- name={props.name}
41
- control={props.control}
42
- controllerName={props.controllerName}
43
- id={props.name}
44
- size={'sm'}
45
- items={item?.packagingUnits ?? []}
46
- onChange={(data: { selectedItem?: StockItemPackagingUOMDTO }) => {
47
- props.onStockPackageChanged?.(data.selectedItem);
48
- onChange(data.selectedItem?.uuid);
49
- }}
50
- initialSelectedItem={initialSelectedItem}
51
- itemToString={(s: StockItemPackagingUOMDTO) =>
52
- s.packagingUomName ? `${s?.packagingUomName} - ${s?.factor} ` : ''
53
- }
54
- placeholder={props.placeholder}
55
- invalid={props.invalid}
56
- invalidText={props.invalidText}
57
- ref={ref}
58
- />
59
- )}
60
- />
61
- </div>
62
- );
63
- };
64
-
65
- export default QtyUomSelector;
@@ -1,10 +0,0 @@
1
- import React from 'react';
2
-
3
- import { render } from '@testing-library/react';
4
- import QtyUomSelector from './qty-uom-selector.component';
5
-
6
- describe('Test the qty uom selector', () => {
7
- it(`renders without dying`, () => {
8
- // render(<QtyUomSelector />);
9
- });
10
- });
@@ -1,69 +0,0 @@
1
- import React, { ReactNode } from 'react';
2
- import { Control, Controller, FieldValues } from 'react-hook-form';
3
- import { ComboBox, InlineLoading } from '@carbon/react';
4
- import { StockItemDTO } from '../../core/api/types/stockItem/StockItem';
5
- import { useStockItems } from './stock-item-selector.resource';
6
- import { useDebounce } from '../../core/hooks/debounce-hook';
7
-
8
- interface StockItemSelectorProps<T> {
9
- placeholder?: string;
10
- stockItemUuid?: string;
11
- onStockItemChanged?: (item: StockItemDTO) => void;
12
- title?: string;
13
- invalid?: boolean;
14
- invalidText?: ReactNode;
15
- initialSelectedItem?: StockItemDTO;
16
-
17
- // Control
18
- controllerName: string;
19
- name: string;
20
- control: Control<FieldValues, T>;
21
- }
22
-
23
- const StockItemSelector = <T,>(props: StockItemSelectorProps<T>) => {
24
- const { isLoading, stockItemsList, setSearchString } = useStockItems({});
25
-
26
- const debouncedSearch = useDebounce((query: string) => {
27
- setSearchString(query);
28
- }, 500);
29
-
30
- return (
31
- <div>
32
- <Controller
33
- name={props.controllerName}
34
- control={props.control}
35
- render={({ field: { onChange, value, ref } }) => (
36
- <ComboBox
37
- titleText={props.title}
38
- name={props.name}
39
- control={props.control}
40
- controllerName={props.controllerName}
41
- id={props.name}
42
- size={'sm'}
43
- items={stockItemsList || []}
44
- onChange={(data: { selectedItem: StockItemDTO }) => {
45
- props.onStockItemChanged?.(data.selectedItem);
46
- onChange(data.selectedItem?.uuid);
47
- }}
48
- initialSelectedItem={
49
- props?.initialSelectedItem ?? stockItemsList?.find((p) => p.uuid === props.stockItemUuid) ?? ''
50
- }
51
- itemToString={stockItemName}
52
- onInputChange={debouncedSearch}
53
- placeholder={props.placeholder}
54
- invalid={props.invalid}
55
- invalidText={props.invalidText}
56
- ref={ref}
57
- />
58
- )}
59
- />
60
- {isLoading && <InlineLoading status="active" iconDescription="Searching" description="Searching..." />}
61
- </div>
62
- );
63
- };
64
-
65
- function stockItemName(item: StockItemDTO): string {
66
- return item?.drugName || item?.conceptName;
67
- }
68
-
69
- export default StockItemSelector;
@@ -1,10 +0,0 @@
1
- import React from 'react';
2
-
3
- import { render } from '@testing-library/react';
4
- import StockItemSelector from './stock-item-selector.component';
5
-
6
- describe('Test the stock item selector', () => {
7
- it(`renders without dying`, () => {
8
- // render(<StockItemSelector />);
9
- });
10
- });
@@ -1,62 +0,0 @@
1
- import React, { ReactNode } from 'react';
2
- import { Control, Controller, FieldValues } from 'react-hook-form';
3
- import { Concept } from '../../core/api/types/concept/Concept';
4
- import { ComboBox, SelectSkeleton } from '@carbon/react';
5
- import { useConcept } from '../../stock-lookups/stock-lookups.resource';
6
- import { type ConfigObject } from '../../config-schema';
7
- import { useConfig } from '@openmrs/esm-framework';
8
-
9
- interface StockOperationReasonSelectorProps<T> {
10
- reasonUuid?: string;
11
- onReasonChange?: (reason: Concept) => void;
12
- title?: string;
13
- placeholder?: string;
14
- invalid?: boolean;
15
- invalidText?: ReactNode;
16
-
17
- // Control
18
- controllerName: string;
19
- name: string;
20
- control: Control<FieldValues, T>;
21
- }
22
-
23
- const StockOperationReasonSelector = <T,>(props: StockOperationReasonSelectorProps<T>) => {
24
- const { stockAdjustmentReasonUUID } = useConfig<ConfigObject>();
25
-
26
- const {
27
- isLoading,
28
- error,
29
- items: { answers: reasons },
30
- } = useConcept(stockAdjustmentReasonUUID);
31
-
32
- if (isLoading || error) return <SelectSkeleton />;
33
-
34
- return (
35
- <Controller
36
- name={props.controllerName}
37
- control={props.control}
38
- render={({ field: { onChange, ref } }) => (
39
- <ComboBox
40
- labelText={props.title}
41
- placeholder={props.placeholder}
42
- name={props.name}
43
- controllerName={props.controllerName}
44
- id={props.name}
45
- size={'md'}
46
- items={reasons}
47
- initialSelectedItem={reasons?.find((p) => p.uuid === props.reasonUuid) || {}}
48
- itemToString={(item?: Concept) => (item && item?.display ? `${item?.display}` : '')}
49
- onChange={(data: { selectedItem?: Concept }) => {
50
- props.onReasonChange?.(data?.selectedItem);
51
- onChange(data?.selectedItem?.uuid);
52
- }}
53
- ref={ref}
54
- invalid={props.invalid}
55
- invalidText={props.invalidText}
56
- />
57
- )}
58
- />
59
- );
60
- };
61
-
62
- export default StockOperationReasonSelector;
@@ -1,75 +0,0 @@
1
- import React, { ReactNode, useState } from 'react';
2
- import { Control, Controller, FieldValues } from 'react-hook-form';
3
- import { User } from '../../core/api/types/identity/User';
4
- import { ComboBox, InlineLoading } from '@carbon/react';
5
- import { useUsersHook } from './users-selector.resource';
6
- import { useDebounce } from '../../core/hooks/debounce-hook';
7
- import { otherUser } from '../../core/utils/utils';
8
- import { useConfig, useSession } from '@openmrs/esm-framework';
9
- import { ConfigObject } from '../../config-schema';
10
-
11
- interface UsersSelectorProps<T> {
12
- placeholder?: string;
13
- userUuid?: string;
14
- onUserChanged?: (user: User) => void;
15
- title?: string;
16
- invalid?: boolean;
17
- invalidText?: ReactNode;
18
-
19
- // Control
20
- controllerName: string;
21
- name: string;
22
- control: Control<FieldValues, T>;
23
- }
24
-
25
- const UsersSelector = <T,>(props: UsersSelectorProps<T>) => {
26
- const { isLoading, userList, setSearchString } = useUsersHook();
27
- const { user } = useSession();
28
- const { autoPopulateResponsiblePerson } = useConfig<ConfigObject>();
29
- const debouncedSearch = useDebounce((query: string) => {
30
- setSearchString(query);
31
- }, 1000);
32
-
33
- if (userList) userList.push(otherUser);
34
-
35
- return (
36
- <div>
37
- <Controller
38
- name={props.controllerName}
39
- control={props.control}
40
- render={({ field: { onChange, ref } }) => (
41
- <ComboBox
42
- titleText={props.title}
43
- name={props.name}
44
- control={props.control}
45
- controllerName={props.controllerName}
46
- id={props.name}
47
- size={'md'}
48
- items={userList || []}
49
- onChange={(data: { selectedItem: User }) => {
50
- props.onUserChanged?.(data.selectedItem);
51
- onChange(data.selectedItem?.uuid);
52
- }}
53
- initialSelectedItem={
54
- userList?.find((p) => p.uuid === (props?.userUuid ?? autoPopulateResponsiblePerson ? user.uuid : '')) ??
55
- ''
56
- }
57
- itemToString={userName}
58
- onInputChange={debouncedSearch}
59
- placeholder={props.placeholder}
60
- invalid={props.invalid}
61
- invalidText={props.invalidText}
62
- ref={ref}
63
- />
64
- )}
65
- />
66
- {isLoading && <InlineLoading status="active" iconDescription="Searching" description="Searching..." />}
67
- </div>
68
- );
69
- };
70
-
71
- function userName(item: User): string {
72
- return item?.person?.display || '';
73
- }
74
-
75
- export default UsersSelector;
File without changes