@openmrs/esm-stock-management-app 1.0.1-pre.740 → 1.0.1-pre.742
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/172.js +1 -1
- package/dist/20.js +1 -1
- package/dist/290.js +1 -1
- package/dist/606.js +1 -1
- package/dist/627.js +1 -1
- package/dist/651.js +2 -0
- package/dist/651.js.map +1 -0
- package/dist/667.js +1 -0
- package/dist/667.js.map +1 -0
- package/dist/main.js +1 -1
- package/dist/main.js.map +1 -1
- package/dist/openmrs-esm-stock-management-app.js +1 -1
- package/dist/openmrs-esm-stock-management-app.js.buildmanifest.json +59 -59
- package/dist/openmrs-esm-stock-management-app.js.map +1 -1
- package/dist/routes.json +1 -1
- package/package.json +2 -1
- package/src/index.ts +2 -1
- package/src/routes.json +5 -1
- package/src/stock-items/add-stock-item/transactions/printout/printable-transaction-footer.component.tsx +34 -0
- package/src/stock-items/add-stock-item/transactions/printout/printable-transaction-footer.scss +24 -0
- package/src/stock-items/add-stock-item/transactions/printout/printable-transaction-header.component.tsx +52 -0
- package/src/stock-items/add-stock-item/transactions/printout/printable-transaction-header.scss +61 -0
- package/src/stock-items/add-stock-item/transactions/printout/printable-transaction.scss +71 -0
- package/src/stock-items/add-stock-item/transactions/printout/transactions-print-action.component.tsx +50 -0
- package/src/stock-items/add-stock-item/transactions/printout/transactions-print-preview.modal.tsx +40 -0
- package/src/stock-items/add-stock-item/transactions/printout/transactions-printout.component.tsx +64 -0
- package/src/stock-items/add-stock-item/transactions/transactions.component.tsx +37 -14
- package/src/stock-items/add-stock-item/transactions/transactions.resource.tsx +39 -0
- package/dist/273.js +0 -2
- package/dist/273.js.map +0 -1
- package/dist/973.js +0 -1
- package/dist/973.js.map +0 -1
- /package/dist/{273.js.LICENSE.txt → 651.js.LICENSE.txt} +0 -0
package/src/stock-items/add-stock-item/transactions/printout/transactions-print-action.component.tsx
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
import { Button, Stack, ComboButton, MenuItem } from '@carbon/react';
|
3
|
+
import { Printer } from '@carbon/react/icons';
|
4
|
+
import { useTranslation } from 'react-i18next';
|
5
|
+
import { useStockItem } from '../../../stock-items.resource';
|
6
|
+
import { showModal } from '@openmrs/esm-framework';
|
7
|
+
import styles from './printable-transaction.scss';
|
8
|
+
|
9
|
+
type Props = {
|
10
|
+
itemUuid: string;
|
11
|
+
columns: any;
|
12
|
+
data: any;
|
13
|
+
};
|
14
|
+
|
15
|
+
const TransactionsPrintAction: React.FC<Props> = ({ columns, data, itemUuid }) => {
|
16
|
+
const { t } = useTranslation();
|
17
|
+
|
18
|
+
const { item: stockItem, isLoading: isStockItemLoading } = useStockItem(itemUuid);
|
19
|
+
|
20
|
+
const handleClick = () => {
|
21
|
+
// stockItem.drugName || stockItem.conceptName || ''
|
22
|
+
const dispose = showModal('transactions-print-preview-modal', {
|
23
|
+
onClose: () => dispose(),
|
24
|
+
title: stockItem.drugName || stockItem.conceptName || '',
|
25
|
+
columns,
|
26
|
+
data,
|
27
|
+
});
|
28
|
+
};
|
29
|
+
|
30
|
+
return (
|
31
|
+
<>
|
32
|
+
<ComboButton label="Print">
|
33
|
+
<MenuItem
|
34
|
+
label={t('printStockCard', 'Print Stock Card')}
|
35
|
+
renderIcon={(props) => <Printer size={24} {...props} />}
|
36
|
+
iconDescription="Print Stock Card"
|
37
|
+
/>
|
38
|
+
<MenuItem
|
39
|
+
label={t('printBinCard', 'Print Bin Card')}
|
40
|
+
renderIcon={(props) => <Printer size={24} {...props} />}
|
41
|
+
iconDescription="Print Bin Card"
|
42
|
+
onClick={handleClick}
|
43
|
+
disabled={isStockItemLoading}
|
44
|
+
/>
|
45
|
+
</ComboButton>
|
46
|
+
</>
|
47
|
+
);
|
48
|
+
};
|
49
|
+
|
50
|
+
export default TransactionsPrintAction;
|
package/src/stock-items/add-stock-item/transactions/printout/transactions-print-preview.modal.tsx
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
import React, { useRef } from 'react';
|
2
|
+
import TransactionsPrintout from './transactions-printout.component';
|
3
|
+
import { ModalBody, ModalHeader, ModalFooter, Button } from '@carbon/react';
|
4
|
+
import { useTranslation } from 'react-i18next';
|
5
|
+
import { useReactToPrint } from 'react-to-print';
|
6
|
+
type Props = {
|
7
|
+
onClose?: () => void;
|
8
|
+
title?: string;
|
9
|
+
columns: any;
|
10
|
+
data: any;
|
11
|
+
};
|
12
|
+
|
13
|
+
const TransactionsPrintPreview: React.FC<Props> = ({ onClose, title, columns, data }) => {
|
14
|
+
const { t } = useTranslation();
|
15
|
+
const ref = useRef<HTMLDivElement>(null);
|
16
|
+
|
17
|
+
const handlePrint = useReactToPrint({
|
18
|
+
content: () => ref.current,
|
19
|
+
});
|
20
|
+
return (
|
21
|
+
<>
|
22
|
+
<ModalHeader closeModal={onClose} title={t('printbincard', 'Print Bin Card')} />
|
23
|
+
<ModalBody>
|
24
|
+
<div ref={ref}>
|
25
|
+
<TransactionsPrintout title={title} columns={columns} data={data} />
|
26
|
+
</div>
|
27
|
+
</ModalBody>
|
28
|
+
<ModalFooter>
|
29
|
+
<Button kind="secondary" onClick={onClose}>
|
30
|
+
{t('cancel', 'Cancel')}
|
31
|
+
</Button>
|
32
|
+
<Button type="button" onClick={handlePrint}>
|
33
|
+
{t('print', 'Print')}
|
34
|
+
</Button>
|
35
|
+
</ModalFooter>
|
36
|
+
</>
|
37
|
+
);
|
38
|
+
};
|
39
|
+
|
40
|
+
export default TransactionsPrintPreview;
|
package/src/stock-items/add-stock-item/transactions/printout/transactions-printout.component.tsx
ADDED
@@ -0,0 +1,64 @@
|
|
1
|
+
import React, { useMemo } from 'react';
|
2
|
+
import {
|
3
|
+
DataTable,
|
4
|
+
TableContainer,
|
5
|
+
Table,
|
6
|
+
TableHead,
|
7
|
+
TableRow,
|
8
|
+
TableHeader,
|
9
|
+
TableBody,
|
10
|
+
TableCell,
|
11
|
+
} from '@carbon/react';
|
12
|
+
import { useStockItem } from '../../../stock-items.resource';
|
13
|
+
import PrintableTransactionHeader from './printable-transaction-header.component';
|
14
|
+
import PrintableTransactionFooter from './printable-transaction-footer.component';
|
15
|
+
import styles from './printable-transaction.scss';
|
16
|
+
|
17
|
+
type Props = {
|
18
|
+
title: string;
|
19
|
+
columns: any;
|
20
|
+
data: any;
|
21
|
+
};
|
22
|
+
|
23
|
+
const TransactionsPrintout: React.FC<Props> = ({ columns, data, title }) => {
|
24
|
+
return (
|
25
|
+
<div>
|
26
|
+
<PrintableTransactionHeader itemName={title} />
|
27
|
+
|
28
|
+
<div className={styles.itemsContainer}>
|
29
|
+
<div className={styles.tableContainer}>
|
30
|
+
<DataTable data-floating-menu-container rows={data} headers={columns} useZebraStyles>
|
31
|
+
{({ rows, headers, getHeaderProps, getTableProps, onInputChange }) => (
|
32
|
+
<div>
|
33
|
+
<TableContainer>
|
34
|
+
<Table {...getTableProps()}>
|
35
|
+
<TableHead>
|
36
|
+
<TableRow>
|
37
|
+
{headers.map((header) => (
|
38
|
+
<TableHeader {...getHeaderProps({ header })}>{header.header}</TableHeader>
|
39
|
+
))}
|
40
|
+
</TableRow>
|
41
|
+
</TableHead>
|
42
|
+
<TableBody style={{ fontSize: '8px' }}>
|
43
|
+
{rows.map((row) => (
|
44
|
+
<TableRow key={row.id}>
|
45
|
+
{row.cells.map((cell) => (
|
46
|
+
<TableCell key={cell.id}>{cell.value}</TableCell>
|
47
|
+
))}
|
48
|
+
</TableRow>
|
49
|
+
))}
|
50
|
+
</TableBody>
|
51
|
+
</Table>
|
52
|
+
</TableContainer>
|
53
|
+
</div>
|
54
|
+
)}
|
55
|
+
</DataTable>
|
56
|
+
</div>
|
57
|
+
</div>
|
58
|
+
|
59
|
+
<PrintableTransactionFooter title={''} />
|
60
|
+
</div>
|
61
|
+
);
|
62
|
+
};
|
63
|
+
|
64
|
+
export default TransactionsPrintout;
|
@@ -1,15 +1,19 @@
|
|
1
1
|
import React, { useEffect, useMemo, useState } from 'react';
|
2
2
|
import { useStockItemsTransactions } from './transactions.resource';
|
3
|
-
import { DataTableSkeleton } from '@carbon/react';
|
3
|
+
import { DataTableSkeleton, Button } from '@carbon/react';
|
4
4
|
import { formatDisplayDate } from '../../../core/utils/datetimeUtils';
|
5
5
|
import { ArrowLeft } from '@carbon/react/icons';
|
6
6
|
import DataList from '../../../core/components/table/table.component';
|
7
7
|
import { StockOperationType } from '../../../core/api/types/stockOperation/StockOperationType';
|
8
8
|
import TransactionsLocationsFilter from './transaction-filters/transaction-locations-filter.component';
|
9
9
|
import { useForm } from 'react-hook-form';
|
10
|
-
import { StockItemInventoryFilter } from '../../stock-items.resource';
|
10
|
+
import { StockItemInventoryFilter, useStockItem } from '../../stock-items.resource';
|
11
11
|
import { useTranslation } from 'react-i18next';
|
12
12
|
import StockOperationReference from '../../../stock-operations/add-stock-operation/stock-operation-reference.component';
|
13
|
+
import { Add } from '@carbon/react/icons';
|
14
|
+
import { Printer } from '@carbon/react/icons';
|
15
|
+
import TransactionsPrintout from './printout/transactions-printout.component';
|
16
|
+
import TransactionsPrintAction from './printout/transactions-print-action.component';
|
13
17
|
|
14
18
|
interface TransactionsProps {
|
15
19
|
onSubmit?: () => void;
|
@@ -20,8 +24,16 @@ const Transactions: React.FC<TransactionsProps> = ({ stockItemUuid }) => {
|
|
20
24
|
const { t } = useTranslation();
|
21
25
|
|
22
26
|
const [stockItemFilter, setStockItemFilter] = useState<StockItemInventoryFilter>();
|
23
|
-
const {
|
24
|
-
|
27
|
+
const {
|
28
|
+
isLoading,
|
29
|
+
items,
|
30
|
+
tableHeaders,
|
31
|
+
totalCount,
|
32
|
+
setCurrentPage,
|
33
|
+
setStockItemUuid,
|
34
|
+
setLocationUuid,
|
35
|
+
printHeaders,
|
36
|
+
} = useStockItemsTransactions(stockItemFilter);
|
25
37
|
|
26
38
|
useEffect(() => {
|
27
39
|
setStockItemUuid(stockItemUuid);
|
@@ -96,6 +108,14 @@ const Transactions: React.FC<TransactionsProps> = ({ stockItemUuid }) => {
|
|
96
108
|
stockItemTransaction?.packagingUomName ?? ''
|
97
109
|
} of ${stockItemTransaction.packagingUomFactor}`
|
98
110
|
: '',
|
111
|
+
totalin:
|
112
|
+
stockItemTransaction?.quantity >= 0
|
113
|
+
? `${stockItemTransaction?.quantity * Number(stockItemTransaction.packagingUomFactor)}`
|
114
|
+
: '',
|
115
|
+
totalout:
|
116
|
+
stockItemTransaction?.quantity < 0
|
117
|
+
? `${-1 * stockItemTransaction?.quantity * Number(stockItemTransaction.packagingUomFactor)}`
|
118
|
+
: '',
|
99
119
|
}));
|
100
120
|
}, [items]);
|
101
121
|
|
@@ -106,16 +126,19 @@ const Transactions: React.FC<TransactionsProps> = ({ stockItemUuid }) => {
|
|
106
126
|
return (
|
107
127
|
<DataList
|
108
128
|
children={() => (
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
129
|
+
<>
|
130
|
+
<TransactionsPrintAction columns={printHeaders} data={tableRows} itemUuid={stockItemUuid} />
|
131
|
+
<TransactionsLocationsFilter
|
132
|
+
onLocationIdChange={(q) => {
|
133
|
+
setLocationUuid(q);
|
134
|
+
setStockItemFilter({ ...stockItemFilter, locationUuid: q });
|
135
|
+
}}
|
136
|
+
name={'TransactionLocationUuid'}
|
137
|
+
placeholder={t('filterByLocation', 'Filter by Location')}
|
138
|
+
control={control}
|
139
|
+
controllerName="TransactionLocationUuid"
|
140
|
+
/>
|
141
|
+
</>
|
119
142
|
)}
|
120
143
|
columns={tableHeaders}
|
121
144
|
data={tableRows}
|
@@ -76,6 +76,44 @@ export function useStockItemsTransactions(filter?: StockItemInventoryFilter) {
|
|
76
76
|
[],
|
77
77
|
);
|
78
78
|
|
79
|
+
const printHeaders = useMemo(
|
80
|
+
() => [
|
81
|
+
{
|
82
|
+
key: 'date',
|
83
|
+
header: 'Date',
|
84
|
+
},
|
85
|
+
{
|
86
|
+
key: 'location',
|
87
|
+
header: 'Location',
|
88
|
+
},
|
89
|
+
{
|
90
|
+
key: 'transaction',
|
91
|
+
header: 'Transaction',
|
92
|
+
},
|
93
|
+
{
|
94
|
+
key: 'totalin',
|
95
|
+
header: 'IN',
|
96
|
+
},
|
97
|
+
{
|
98
|
+
key: 'totalout',
|
99
|
+
header: 'OUT',
|
100
|
+
},
|
101
|
+
{
|
102
|
+
key: 'batch',
|
103
|
+
header: 'Batch',
|
104
|
+
},
|
105
|
+
{
|
106
|
+
key: 'reference',
|
107
|
+
header: 'Reference',
|
108
|
+
},
|
109
|
+
{
|
110
|
+
key: 'status',
|
111
|
+
header: 'Status',
|
112
|
+
},
|
113
|
+
],
|
114
|
+
[],
|
115
|
+
);
|
116
|
+
|
79
117
|
return {
|
80
118
|
items: items.results,
|
81
119
|
totalCount: items.totalCount,
|
@@ -92,5 +130,6 @@ export function useStockItemsTransactions(filter?: StockItemInventoryFilter) {
|
|
92
130
|
setLocationUuid,
|
93
131
|
setPartyUuid,
|
94
132
|
setStockBatchUuid,
|
133
|
+
printHeaders,
|
95
134
|
};
|
96
135
|
}
|