diff --git a/WNPRC_EHR/resources/views/wnprcUnits.html b/WNPRC_EHR/resources/views/wnprcUnits.html index 44880afb1..e5c9551b8 100644 --- a/WNPRC_EHR/resources/views/wnprcUnits.html +++ b/WNPRC_EHR/resources/views/wnprcUnits.html @@ -97,7 +97,9 @@ ]}, {header: 'Purchasing Services', items: [ - {name: 'Issue Tracker', url: '<%=contextPath%>/project/WNPRC/WNPRC_Units/Operation_Services/Purchasing/Issue_Tracker/start.view?'} + {name: 'Issue Tracker', url: '<%=contextPath%>/project/WNPRC/WNPRC_Units/Operation_Services/Purchasing/Issue_Tracker/start.view?'}, + {name: 'Purchasing Requests', url: '<%=contextPath%>/WNPRC/WNPRC_Units/Operation_Services/Purchasing/WNPRC_Purchasing-requester.view?'}, + {name: 'Purchasing Admin', url: '<%=contextPath%>/WNPRC/WNPRC_Units/Operation_Services/Purchasing/WNPRC_Purchasing-purchaseAdmin.view?'} ]} ] }); diff --git a/WNPRC_Purchasing/resources/data/paymentOptions.tsv b/WNPRC_Purchasing/resources/data/paymentOptions.tsv new file mode 100644 index 000000000..23754406d --- /dev/null +++ b/WNPRC_Purchasing/resources/data/paymentOptions.tsv @@ -0,0 +1,7 @@ +paymentOption +Internal PO +External PO +MDS +Blanket Order +Direct Payment +Purchasing Card \ No newline at end of file diff --git a/WNPRC_Purchasing/resources/queries/ehr_purchasing/lineItems/.qview.xml b/WNPRC_Purchasing/resources/queries/ehr_purchasing/lineItems/.qview.xml new file mode 100644 index 000000000..883803ca1 --- /dev/null +++ b/WNPRC_Purchasing/resources/queries/ehr_purchasing/lineItems/.qview.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/WNPRC_Purchasing/resources/queries/ehr_purchasing/myOpenRequests.query.xml b/WNPRC_Purchasing/resources/queries/ehr_purchasing/myOpenRequests.query.xml new file mode 100644 index 000000000..a4c61646b --- /dev/null +++ b/WNPRC_Purchasing/resources/queries/ehr_purchasing/myOpenRequests.query.xml @@ -0,0 +1,9 @@ + + + + + My Open Requests +
+
+
+
\ No newline at end of file diff --git a/WNPRC_Purchasing/resources/queries/ehr_purchasing/myOpenRequests.sql b/WNPRC_Purchasing/resources/queries/ehr_purchasing/myOpenRequests.sql new file mode 100644 index 000000000..fe08bddef --- /dev/null +++ b/WNPRC_Purchasing/resources/queries/ehr_purchasing/myOpenRequests.sql @@ -0,0 +1,12 @@ +-- open requests assigned to the current purchase admin user +SELECT + pr.rowId AS requestNum, + pr.created AS requestDate, + pr.vendorId, + pr.totalCost, + pr.account || pr.otherAcctAndInves AS account, + pr.qcState AS requestStatus, + pr.createdBy AS requester, + pr.assignedTo +FROM ehr_purchasing.purchasingRequests pr +WHERE ISMEMBEROF(pr.assignedTo) \ No newline at end of file diff --git a/WNPRC_Purchasing/resources/queries/ehr_purchasing/pCard.query.xml b/WNPRC_Purchasing/resources/queries/ehr_purchasing/pCard.query.xml new file mode 100644 index 000000000..cb80a55d7 --- /dev/null +++ b/WNPRC_Purchasing/resources/queries/ehr_purchasing/pCard.query.xml @@ -0,0 +1,55 @@ + + + + + P-Card View + + + Vendor + false + + ehr_purchasing + vendor + + + + + Business purpose + + + yyyy-MM-dd + + + yyyy-MM-dd + Post Date + + + ###,##0.00 + + + Acct code + + ehr_billingLinked + aliases + + + + Prog + + + Requested by + + + Notes/Internal Ref# + + + Invoice No + + + Payment Option + + +
+
+
+
\ No newline at end of file diff --git a/WNPRC_Purchasing/resources/queries/ehr_purchasing/pCard.sql b/WNPRC_Purchasing/resources/queries/ehr_purchasing/pCard.sql new file mode 100644 index 000000000..e4e0ec210 --- /dev/null +++ b/WNPRC_Purchasing/resources/queries/ehr_purchasing/pCard.sql @@ -0,0 +1,25 @@ +SELECT + pr.vendorId, + items.description, + pr.justification, + pr.orderDate, + pr.cardPostDate, + pr.totalCost, + pr.account, + + pr.program, + pr.createdBy, + pr.comments, + pr.rowId AS orderNum, + pr.invoiceNum, + pr.paymentOptionId + +FROM ehr_purchasing.purchasingRequests pr +LEFT JOIN + ( + SELECT requestRowId, + group_concat(item, ', ') AS description + FROM ehr_purchasing.lineItems + GROUP BY requestRowId + ) items +ON pr.rowId = items.requestRowId \ No newline at end of file diff --git a/WNPRC_Purchasing/resources/queries/ehr_purchasing/pCard/.qview.xml b/WNPRC_Purchasing/resources/queries/ehr_purchasing/pCard/.qview.xml new file mode 100644 index 000000000..e1976beca --- /dev/null +++ b/WNPRC_Purchasing/resources/queries/ehr_purchasing/pCard/.qview.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/WNPRC_Purchasing/resources/queries/ehr_purchasing/purchasingRequests.query.xml b/WNPRC_Purchasing/resources/queries/ehr_purchasing/purchasingRequests.query.xml index 75b385205..8bd04f8ec 100644 --- a/WNPRC_Purchasing/resources/queries/ehr_purchasing/purchasingRequests.query.xml +++ b/WNPRC_Purchasing/resources/queries/ehr_purchasing/purchasingRequests.query.xml @@ -47,10 +47,10 @@ false - + wnprc_purchasing - creditCardOptions + paymentOptions rowId @@ -59,6 +59,13 @@ + + + core + Users + UserId + + diff --git a/WNPRC_Purchasing/resources/queries/ehr_purchasing/purchasingRequestsOverview.sql b/WNPRC_Purchasing/resources/queries/ehr_purchasing/purchasingRequestsOverview.sql index 4b4325149..c40e1c6c4 100644 --- a/WNPRC_Purchasing/resources/queries/ehr_purchasing/purchasingRequestsOverview.sql +++ b/WNPRC_Purchasing/resources/queries/ehr_purchasing/purchasingRequestsOverview.sql @@ -1,3 +1,4 @@ +-- this is the query that displays on the requesters page SELECT pr.rowId, pr.vendorId, @@ -6,14 +7,6 @@ SELECT pr.qcState AS requestStatus, pr.created AS requestDate, pr.createdBy AS requester, - items.totalCost + pr.totalCost FROM ehr_purchasing.purchasingRequests pr -LEFT JOIN - ( - SELECT requestRowId, - round(sum(quantity * unitCost), 2) AS totalCost - FROM ehr_purchasing.lineItems - GROUP BY requestRowId - ) items -ON pr.rowId = items.requestRowId -WHERE ISMEMBEROF(pr.createdBy) \ No newline at end of file +WHERE ISMEMBEROF(pr.createdBy) -- only sees requests created by the current user/requester \ No newline at end of file diff --git a/WNPRC_Purchasing/resources/queries/ehr_purchasing/purchasingRequestsOverviewForAdmins.query.xml b/WNPRC_Purchasing/resources/queries/ehr_purchasing/purchasingRequestsOverviewForAdmins.query.xml new file mode 100644 index 000000000..eb7f7bec1 --- /dev/null +++ b/WNPRC_Purchasing/resources/queries/ehr_purchasing/purchasingRequestsOverviewForAdmins.query.xml @@ -0,0 +1,9 @@ + + + + + Purchase Requests +
+
+
+
\ No newline at end of file diff --git a/WNPRC_Purchasing/resources/queries/ehr_purchasing/purchasingRequestsOverviewForAdmins.sql b/WNPRC_Purchasing/resources/queries/ehr_purchasing/purchasingRequestsOverviewForAdmins.sql new file mode 100644 index 000000000..7c464388f --- /dev/null +++ b/WNPRC_Purchasing/resources/queries/ehr_purchasing/purchasingRequestsOverviewForAdmins.sql @@ -0,0 +1,11 @@ +SELECT + pr.rowId AS requestNum, + pr.vendorId, + pr.account, + pr.otherAcctAndInves, + pr.qcState AS requestStatus, + pr.created AS requestDate, + pr.createdBy AS requester, + pr.totalCost, + pr.assignedTo +FROM ehr_purchasing.purchasingRequests pr \ No newline at end of file diff --git a/WNPRC_Purchasing/resources/queries/ehr_purchasing/purchasingRequestsOverviewForAdmins/AllOpenRequests.qview.xml b/WNPRC_Purchasing/resources/queries/ehr_purchasing/purchasingRequestsOverviewForAdmins/AllOpenRequests.qview.xml new file mode 100644 index 000000000..d0ae0bd3d --- /dev/null +++ b/WNPRC_Purchasing/resources/queries/ehr_purchasing/purchasingRequestsOverviewForAdmins/AllOpenRequests.qview.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/WNPRC_Purchasing/resources/queries/ehr_purchasing/purchasingRequestsOverviewForAdmins/CompletedRequests.qview.xml b/WNPRC_Purchasing/resources/queries/ehr_purchasing/purchasingRequestsOverviewForAdmins/CompletedRequests.qview.xml new file mode 100644 index 000000000..c2b7790ed --- /dev/null +++ b/WNPRC_Purchasing/resources/queries/ehr_purchasing/purchasingRequestsOverviewForAdmins/CompletedRequests.qview.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/WNPRC_Purchasing/resources/queries/ehr_purchasing/shippingInfo/.qview.xml b/WNPRC_Purchasing/resources/queries/ehr_purchasing/shippingInfo/.qview.xml new file mode 100644 index 000000000..2fd5ea9b4 --- /dev/null +++ b/WNPRC_Purchasing/resources/queries/ehr_purchasing/shippingInfo/.qview.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/WNPRC_Purchasing/resources/queries/ehr_purchasing/userAccountAssociations/.qview.xml b/WNPRC_Purchasing/resources/queries/ehr_purchasing/userAccountAssociations/.qview.xml new file mode 100644 index 000000000..91ed1df35 --- /dev/null +++ b/WNPRC_Purchasing/resources/queries/ehr_purchasing/userAccountAssociations/.qview.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/WNPRC_Purchasing/resources/queries/ehr_purchasing/vendor/.qview.xml b/WNPRC_Purchasing/resources/queries/ehr_purchasing/vendor/.qview.xml new file mode 100644 index 000000000..d75374fa1 --- /dev/null +++ b/WNPRC_Purchasing/resources/queries/ehr_purchasing/vendor/.qview.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/WNPRC_Purchasing/resources/schemas/dbscripts/postgresql/wnprc_purchasing-21.001-21.002.sql b/WNPRC_Purchasing/resources/schemas/dbscripts/postgresql/wnprc_purchasing-21.001-21.002.sql new file mode 100644 index 000000000..453099e48 --- /dev/null +++ b/WNPRC_Purchasing/resources/schemas/dbscripts/postgresql/wnprc_purchasing-21.001-21.002.sql @@ -0,0 +1,17 @@ +DROP TABLE wnprc_purchasing.creditCardOptions; + +CREATE TABLE wnprc_purchasing.paymentOptions +( + rowId serial, + paymentOption varchar(500), + container ENTITYID NOT NULL, + createdBy USERID, + created timestamp, + modifiedBy USERID, + modified timestamp, + + CONSTRAINT PK_WNPRC_PURCHASING_PAYMENT_OPTIONS PRIMARY KEY (rowId), + CONSTRAINT FK_WNPRC_PURCHASING_PAYMENT_OPTIONS_CONTAINER FOREIGN KEY (Container) REFERENCES core.Containers (EntityId) +); + +CREATE INDEX IDX_WNPRC_PURCHASING_PAYMENT_OPTIONS_CONTAINER ON wnprc_purchasing.paymentOptions(Container); \ No newline at end of file diff --git a/WNPRC_Purchasing/resources/schemas/ehr_billingLinked.template.xml b/WNPRC_Purchasing/resources/schemas/ehr_billingLinked.template.xml new file mode 100644 index 000000000..8a1ce775e --- /dev/null +++ b/WNPRC_Purchasing/resources/schemas/ehr_billingLinked.template.xml @@ -0,0 +1,10 @@ + + + + + aliases + + \ No newline at end of file diff --git a/WNPRC_Purchasing/resources/schemas/wnprc_purchasing.xml b/WNPRC_Purchasing/resources/schemas/wnprc_purchasing.xml index 4fb769561..9dcf2b101 100644 --- a/WNPRC_Purchasing/resources/schemas/wnprc_purchasing.xml +++ b/WNPRC_Purchasing/resources/schemas/wnprc_purchasing.xml @@ -1,13 +1,13 @@ - - Credit Card Options - cardOption +
+ Payment Options + paymentOptionDETAILED - + diff --git a/WNPRC_Purchasing/resources/views/purchasingAdmin.html b/WNPRC_Purchasing/resources/views/purchasingAdmin.html new file mode 100644 index 000000000..834287598 --- /dev/null +++ b/WNPRC_Purchasing/resources/views/purchasingAdmin.html @@ -0,0 +1,62 @@ + + +
+

Purchasing Requests

+ + + + + + + +

Reference Tables

+ + + + + \ No newline at end of file diff --git a/WNPRC_Purchasing/resources/views/purchasingAdmin.view.xml b/WNPRC_Purchasing/resources/views/purchasingAdmin.view.xml new file mode 100644 index 000000000..190b76cb7 --- /dev/null +++ b/WNPRC_Purchasing/resources/views/purchasingAdmin.view.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/WNPRC_Purchasing/resources/views/purchasingLandingPage.webpart.xml b/WNPRC_Purchasing/resources/views/purchasingAdmin.webpart.xml similarity index 71% rename from WNPRC_Purchasing/resources/views/purchasingLandingPage.webpart.xml rename to WNPRC_Purchasing/resources/views/purchasingAdmin.webpart.xml index e0921a2a7..162009505 100644 --- a/WNPRC_Purchasing/resources/views/purchasingLandingPage.webpart.xml +++ b/WNPRC_Purchasing/resources/views/purchasingAdmin.webpart.xml @@ -1,5 +1,5 @@ - - + + diff --git a/WNPRC_Purchasing/resources/views/purchasingLanding.html b/WNPRC_Purchasing/resources/views/purchasingLanding.html new file mode 100644 index 000000000..ee02293db --- /dev/null +++ b/WNPRC_Purchasing/resources/views/purchasingLanding.html @@ -0,0 +1,16 @@ + + +
+

WNPRC Purchasing Portal

+ + \ No newline at end of file diff --git a/WNPRC_Purchasing/resources/views/purchasingLandingPage.view.xml b/WNPRC_Purchasing/resources/views/purchasingLanding.view.xml similarity index 100% rename from WNPRC_Purchasing/resources/views/purchasingLandingPage.view.xml rename to WNPRC_Purchasing/resources/views/purchasingLanding.view.xml diff --git a/WNPRC_Purchasing/resources/views/purchasingLanding.webpart.xml b/WNPRC_Purchasing/resources/views/purchasingLanding.webpart.xml new file mode 100644 index 000000000..59c87eccc --- /dev/null +++ b/WNPRC_Purchasing/resources/views/purchasingLanding.webpart.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/WNPRC_Purchasing/resources/views/purchasingLandingPage.html b/WNPRC_Purchasing/resources/views/purchasingRequester.html similarity index 95% rename from WNPRC_Purchasing/resources/views/purchasingLandingPage.html rename to WNPRC_Purchasing/resources/views/purchasingRequester.html index 282e72e4f..ca6186655 100644 --- a/WNPRC_Purchasing/resources/views/purchasingLandingPage.html +++ b/WNPRC_Purchasing/resources/views/purchasingRequester.html @@ -12,7 +12,7 @@ LABKEY.QueryWebPart.standardButtons.exportRows, LABKEY.QueryWebPart.standardButtons.print, LABKEY.QueryWebPart.standardButtons.pageSize, - {text: 'Create Request', url: LABKEY.ActionURL.buildURL('WNPRC_Purchasing', 'purchasingRequest', null, {isNewRequest: true})} + {text: 'Create Request', url: LABKEY.ActionURL.buildURL('WNPRC_Purchasing', 'purchasingRequest', null, {isNewRequest: true, returnUrl:window.location})} ]} }); qwp.render(); diff --git a/WNPRC_Purchasing/resources/views/purchasingRequester.view.xml b/WNPRC_Purchasing/resources/views/purchasingRequester.view.xml new file mode 100644 index 000000000..e702c0006 --- /dev/null +++ b/WNPRC_Purchasing/resources/views/purchasingRequester.view.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/WNPRC_Purchasing/resources/views/purchasingRequester.webpart.xml b/WNPRC_Purchasing/resources/views/purchasingRequester.webpart.xml new file mode 100644 index 000000000..38b9c0893 --- /dev/null +++ b/WNPRC_Purchasing/resources/views/purchasingRequester.webpart.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/WNPRC_Purchasing/src/client/RequestEntry/RequestEntry.scss b/WNPRC_Purchasing/src/client/RequestEntry/RequestEntry.scss index ae70114c0..9e7c4580e 100644 --- a/WNPRC_Purchasing/src/client/RequestEntry/RequestEntry.scss +++ b/WNPRC_Purchasing/src/client/RequestEntry/RequestEntry.scss @@ -74,7 +74,7 @@ white-space: pre-wrap; } -.account-input, .vendor-input, .shipping-dest-input, .assigned-to-input, .credit-card-option-input, .status-input { +.account-input, .vendor-input, .shipping-dest-input, .assigned-to-input, .payment-option-input, .status-input { resize: none; width: 140%; } diff --git a/WNPRC_Purchasing/src/client/RequestEntry/RequestEntry.tsx b/WNPRC_Purchasing/src/client/RequestEntry/RequestEntry.tsx index 695891d6f..ccfeda558 100644 --- a/WNPRC_Purchasing/src/client/RequestEntry/RequestEntry.tsx +++ b/WNPRC_Purchasing/src/client/RequestEntry/RequestEntry.tsx @@ -81,7 +81,7 @@ export const App: FC = memo(() => { setPurchaseAdminModel( PurchaseAdminModel.create({ assignedTo: vals[0].assignedTo, - creditCardOption: vals[0].creditCardOptionId, + paymentOption: vals[0].paymentOptionId, qcState: vals[0].qcState, program: vals[0].program, confirmationNum: vals[0].confirmationNum, @@ -206,17 +206,8 @@ export const App: FC = memo(() => { setIsDirty(false); event.preventDefault(); const returnUrl = ActionURL.getParameter('returnUrl'); + window.location.href = returnUrl || ActionURL.buildURL('project', 'begin', getServerContext().container.path); - // TODO: this is temporary until purchasing admin page is created, then change it to get routed to the admin page - if (!!requestId && hasPurchasingAdminPermission) { - window.location.href = ActionURL.buildURL('query', 'executeQuery', getServerContext().container.path, { - schemaName: 'ehr_purchasing', - 'query.queryName': 'purchasingRequests', - }); - } else { - window.location.href = - returnUrl || ActionURL.buildURL('project', 'begin', getServerContext().container.path); - } }, [isDirty, requestId, hasPurchasingAdminPermission] ); @@ -238,22 +229,8 @@ export const App: FC = memo(() => { ) .then(r => { if (r.success) { - // TODO: this is temporary until purchasing admin page is created, then change it to get routed to the admin page - if (requestId) { - window.location.href = ActionURL.buildURL( - 'query', - 'executeQuery', - getServerContext().container.path, - { schemaName: 'ehr_purchasing', 'query.queryName': 'purchasingRequests' } - ); - } else { - // navigate to purchasing overview grid/main page - window.location.href = ActionURL.buildURL( - 'project', - 'begin', - getServerContext().container.path - ); - } + const returnUrl = ActionURL.getParameter('returnUrl'); + window.location.href = returnUrl || ActionURL.buildURL('project', 'begin', getServerContext().container.path); } }) .catch(reject => { diff --git a/WNPRC_Purchasing/src/client/actions.ts b/WNPRC_Purchasing/src/client/actions.ts index de690844b..f45d6dd72 100644 --- a/WNPRC_Purchasing/src/client/actions.ts +++ b/WNPRC_Purchasing/src/client/actions.ts @@ -60,7 +60,7 @@ export async function submitRequest( comments: requestOrder.comments, qcState: purchasingAdminModel?.qcState || requestOrder.qcState, assignedTo: purchasingAdminModel?.assignedTo, - creditCardOption: purchasingAdminModel?.creditCardOption, + paymentOption: purchasingAdminModel?.paymentOption, program: purchasingAdminModel?.program ? purchasingAdminModel.program : '4', confirmNum: purchasingAdminModel?.confirmationNum, invoiceNum: purchasingAdminModel?.invoiceNum, diff --git a/WNPRC_Purchasing/src/client/components/PurchaseAdminPanel.tsx b/WNPRC_Purchasing/src/client/components/PurchaseAdminPanel.tsx index 4b99dac8c..eb8c7d7f9 100644 --- a/WNPRC_Purchasing/src/client/components/PurchaseAdminPanel.tsx +++ b/WNPRC_Purchasing/src/client/components/PurchaseAdminPanel.tsx @@ -7,7 +7,7 @@ import { PurchaseAdminModel } from '../model'; import { AssignedToInput, - CreditCardOptionInput, + PaymentOptionInput, ConfirmationInput, InvoiceInput, ProgramInput, @@ -55,7 +55,7 @@ export const PurchaseAdminPanel: FC = memo(props => {
- + diff --git a/WNPRC_Purchasing/src/client/components/PurchaseAdminPanelInputs.tsx b/WNPRC_Purchasing/src/client/components/PurchaseAdminPanelInputs.tsx index e0accdc75..7f7a89aee 100644 --- a/WNPRC_Purchasing/src/client/components/PurchaseAdminPanelInputs.tsx +++ b/WNPRC_Purchasing/src/client/components/PurchaseAdminPanelInputs.tsx @@ -49,30 +49,30 @@ export const AssignedToInput: FC = memo(props => { ); }); -export const CreditCardOptionInput: FC = memo(props => { +export const PaymentOptionInput: FC = memo(props => { const { onChange, value, hasError } = props; const [dropDownVals, setDropDownVals] = useState(); useEffect(() => { - getData('wnprc_purchasing', 'creditCardOptions', 'rowId, cardOption', 'cardOption').then(vals => { + getData('wnprc_purchasing', 'paymentOptions', 'rowId, paymentOption', 'paymentOption').then(vals => { setDropDownVals(vals); }); }, []); - const options = useMemo(() => createOptions(dropDownVals, 'rowId', 'cardOption'), [dropDownVals]); + const options = useMemo(() => createOptions(dropDownVals, 'rowId', 'paymentOption'), [dropDownVals]); const onValueChange = useCallback( evt => { - onChange('creditCardOption', evt.target.value); + onChange('paymentOption', evt.target.value); }, [onChange] ); return (
- +