From 3aeb075d5b56da885796070063742e918b8d5e30 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Castillo?= Date: Fri, 24 Jul 2026 17:18:02 -0300 Subject: [PATCH] feat: add invoice pdf download on purchase lists MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Tomás Castillo --- package.json | 2 +- src/actions/sponsor-purchases-actions.js | 48 ++++++++++-------- src/assets/fn-invoice-header.png | Bin 0 -> 37679 bytes src/i18n/en.json | 3 +- .../sponsors/show-purchase-list-page/index.js | 34 ++++++++++--- .../tabs/sponsor-purchases-tab/index.js | 33 +++++++++--- yarn.lock | 8 +-- 7 files changed, 87 insertions(+), 41 deletions(-) create mode 100644 src/assets/fn-invoice-header.png diff --git a/package.json b/package.json index 8243f06a5..42d52b3d3 100644 --- a/package.json +++ b/package.json @@ -93,7 +93,7 @@ "moment-duration-format": "^2.3.2", "moment-timezone": "^0.5.33", "mui-color-input": "^9.0.0", - "openstack-uicore-foundation": "5.0.43", + "openstack-uicore-foundation": "5.0.46-beta.2", "p-limit": "^6.1.0", "path-browserify": "^1.0.1", "postcss-loader": "^6.2.1", diff --git a/src/actions/sponsor-purchases-actions.js b/src/actions/sponsor-purchases-actions.js index 868acbebc..c91726d98 100644 --- a/src/actions/sponsor-purchases-actions.js +++ b/src/actions/sponsor-purchases-actions.js @@ -297,29 +297,33 @@ export const rejectSponsorPurchase = }); }; -export const getSponsorOrder = (orderId) => async (dispatch, getState) => { - const { currentSummitState, currentSponsorState } = getState(); - const { currentSummit } = currentSummitState; - const { entity: sponsor } = currentSponsorState; - const accessToken = await getAccessTokenSafely(); - - dispatch(startLoading()); - - const params = { - access_token: accessToken, - expand: - "forms,forms.items,forms.items.meta_fields,forms.items.type,refunds,payments,notes,fees" - }; +export const getSponsorOrder = + (orderId, sponsorId = null) => + async (dispatch, getState) => { + const { currentSummitState, currentSponsorState } = getState(); + const { currentSummit } = currentSummitState; + const { entity: sponsor } = currentSponsorState; + const accessToken = await getAccessTokenSafely(); - return getRequest( - null, - createAction(RECEIVE_SPONSOR_ORDER), - `${window.PURCHASES_API_URL}/api/v2/summits/${currentSummit.id}/sponsors/${sponsor.id}/purchases/${orderId}`, - authErrorHandler - )(params)(dispatch).finally(() => { - dispatch(stopLoading()); - }); -}; + const sponsor_id = sponsor.id || sponsorId; + + dispatch(startLoading()); + + const params = { + access_token: accessToken, + expand: + "forms,forms.items,forms.items.meta_fields,forms.items.type,refunds,payments,notes,fees" + }; + + return getRequest( + null, + createAction(RECEIVE_SPONSOR_ORDER), + `${window.PURCHASES_API_URL}/api/v2/summits/${currentSummit.id}/sponsors/${sponsor_id}/purchases/${orderId}`, + authErrorHandler + )(params)(dispatch).finally(() => { + dispatch(stopLoading()); + }); + }; export const clearSponsorOrder = () => async (dispatch) => { dispatch(createAction(CLEAR_SPONSOR_ORDER)({})); diff --git a/src/assets/fn-invoice-header.png b/src/assets/fn-invoice-header.png new file mode 100644 index 0000000000000000000000000000000000000000..952fefebab1a4baf98eb9f79fd457be40b166532 GIT binary patch literal 37679 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 { useEffect(() => { getAllSponsorPurchases(); }, []); + const { errorMessage } = useSnackbarMessage(); + const [loadingPDF, setLoadingPDF] = useState(false); + const handlePageChange = (page) => { getAllSponsorPurchases(term, page, perPage, order, orderDir); }; @@ -87,8 +96,17 @@ const ShowPurchaseListPage = ({ history.push(`${item.sponsor_id}/purchases/${item.id}`); }; - const handleMenu = (item) => { - console.log("MENU : ", item); + const handleInvoiceDownload = (purchaseOrder) => { + if (loadingPDF) return; + setLoadingPDF(true); + getSponsorOrder(purchaseOrder.id, purchaseOrder.sponsor_id) + .then(({ response: fetchedOrder }) => + generateInvoicePDF(fetchedOrder, currentSummit, { + logoSrc: logoInvoice + }) + ) + .catch(() => errorMessage(t("errors.invoice_generation"))) + .finally(() => setLoadingPDF(false)); }; const handleStatusChange = (sponsorId, purchaseId, newStatus) => { @@ -184,7 +202,7 @@ const ShowPurchaseListPage = ({ handleMenu(row)} + onClick={() => handleInvoiceDownload(row)} > @@ -248,12 +266,14 @@ const ShowPurchaseListPage = ({ ); }; -const mapStateToProps = ({ showPurchaseListState }) => ({ - ...showPurchaseListState +const mapStateToProps = ({ showPurchaseListState, currentSummitState }) => ({ + ...showPurchaseListState, + currentSummit: currentSummitState.currentSummit }); export default connect(mapStateToProps, { getAllSponsorPurchases, + getSponsorOrder, exportAllSponsorPurchases, approveSponsorPurchase, rejectSponsorPurchase diff --git a/src/pages/sponsors/sponsor-page/tabs/sponsor-purchases-tab/index.js b/src/pages/sponsors/sponsor-page/tabs/sponsor-purchases-tab/index.js index cd16c2bd6..09003b86a 100644 --- a/src/pages/sponsors/sponsor-page/tabs/sponsor-purchases-tab/index.js +++ b/src/pages/sponsors/sponsor-page/tabs/sponsor-purchases-tab/index.js @@ -11,7 +11,7 @@ * limitations under the License. * */ -import React, { useEffect } from "react"; +import React, { useEffect, useState } from "react"; import { connect } from "react-redux"; import T from "i18n-react/dist/i18n-react"; import { @@ -25,10 +25,13 @@ import { import DownloadIcon from "@mui/icons-material/Download"; import MuiTable from "openstack-uicore-foundation/lib/components/mui/table"; import SearchInput from "openstack-uicore-foundation/lib/components/mui/search-input"; +import { useSnackbarMessage } from "openstack-uicore-foundation/lib/components/mui/snackbar-notification"; +import { generateInvoicePDF } from "openstack-uicore-foundation/lib/components/order-invoice-pdf"; import history from "../../../../../history"; import { approveSponsorPurchase, getSponsorPurchases, + getSponsorOrder, rejectSponsorPurchase } from "../../../../../actions/sponsor-purchases-actions"; import { @@ -36,6 +39,7 @@ import { PURCHASE_METHODS, PURCHASE_STATUS } from "../../../../../utils/constants"; +import logoInvoice from "../../../../../assets/fn-invoice-header.png"; const SponsorPurchasesTab = ({ sponsor, @@ -46,7 +50,9 @@ const SponsorPurchasesTab = ({ currentPage, perPage, totalCount, + currentSummit, getSponsorPurchases, + getSponsorOrder, approveSponsorPurchase, rejectSponsorPurchase }) => { @@ -54,6 +60,9 @@ const SponsorPurchasesTab = ({ getSponsorPurchases(); }, [sponsor?.id]); + const { errorMessage } = useSnackbarMessage(); + const [loadingPDF, setLoadingPDF] = useState(false); + const handlePageChange = (page) => { getSponsorPurchases(term, page, perPage, order, orderDir); }; @@ -80,8 +89,17 @@ const SponsorPurchasesTab = ({ history.push(`purchases/${item.id}`); }; - const handleMenu = (item) => { - console.log("MENU : ", item); + const handleInvoiceDownload = (item) => { + if (loadingPDF) return; + setLoadingPDF(true); + getSponsorOrder(item.id, sponsor.id) + .then(({ response: fetchedOrder }) => + generateInvoicePDF(fetchedOrder, currentSummit, { + logoSrc: logoInvoice + }) + ) + .catch(() => errorMessage(T.translate("errors.invoice_generation"))) + .finally(() => setLoadingPDF(false)); }; const handleStatusChange = (purchaseId, newStatus) => { @@ -167,7 +185,7 @@ const SponsorPurchasesTab = ({ handleMenu(row)} + onClick={() => handleInvoiceDownload(row)} > @@ -218,14 +236,17 @@ const SponsorPurchasesTab = ({ const mapStateToProps = ({ sponsorPagePurchaseListState, - currentSponsorState + currentSponsorState, + currentSummitState }) => ({ ...sponsorPagePurchaseListState, - sponsor: currentSponsorState.entity + sponsor: currentSponsorState.entity, + currentSummit: currentSummitState.currentSummit }); export default connect(mapStateToProps, { getSponsorPurchases, + getSponsorOrder, approveSponsorPurchase, rejectSponsorPurchase })(SponsorPurchasesTab); diff --git a/yarn.lock b/yarn.lock index db00b7c94..46090d20e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9068,10 +9068,10 @@ open@^10.0.3: is-inside-container "^1.0.0" wsl-utils "^0.1.0" -openstack-uicore-foundation@5.0.43: - version "5.0.43" - resolved "https://registry.yarnpkg.com/openstack-uicore-foundation/-/openstack-uicore-foundation-5.0.43.tgz#a0f870bd2d1dd7a97a1b6e78009b5248ca27baab" - integrity sha512-UBIENc7nEhhKEsmaGRKdEIziNhnGypy5bf9ydssEgFB/Fe6Q6gH07x1U8m5s1nXYV9OCneMvLTBH98tprUXlOg== +openstack-uicore-foundation@5.0.46-beta.2: + version "5.0.46-beta.2" + resolved "https://registry.yarnpkg.com/openstack-uicore-foundation/-/openstack-uicore-foundation-5.0.46-beta.2.tgz#14ef22899ebb91c54e265c9dbebf90ca682c6951" + integrity sha512-IhNOFYCNQIiqgxc7iMru0AnPZkV2MRjC+kt3jWiIDGtn5zCUbXQ5QJ8ipGNDJaLCzHILNd5J2Wdr6JXiETY7YA== dependencies: use-sync-external-store "^1.6.0"