Skip to content

Commit

Permalink
feat: add API actions on request status buttons (#872)
Browse files Browse the repository at this point in the history
* RM#89340
  • Loading branch information
vhu-axelor authored Jan 16, 2025
1 parent 1367295 commit fff0283
Show file tree
Hide file tree
Showing 7 changed files with 92 additions and 10 deletions.
1 change: 1 addition & 0 deletions packages/apps/purchase/src/api/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ export {searchProduct as searchProductApi} from './product-api';
export {
getPurchaseRequest as getPurchaseRequestApi,
searchPurchaseRequest as searchPurchaseRequestApi,
updatePurchaseRequestStatus as updatePurchaseRequestStatusApi,
} from './purchase-request-api';
export {searchPurchaseRequestLine as searchPurchaseRequestLineApi} from './purchase-request-line-api';
export {searchSupplier as searchSupplierApi} from './supplier-api';
Expand Down
12 changes: 12 additions & 0 deletions packages/apps/purchase/src/api/purchase-request-api.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
import {
createStandardFetch,
createStandardSearch,
getActionApi,
getSearchCriterias,
} from '@axelor/aos-mobile-core';

Expand Down Expand Up @@ -75,3 +76,14 @@ export async function getPurchaseRequest({id}) {
fieldKey: 'purchase_purchaseRequest',
});
}

export async function updatePurchaseRequestStatus({purchaseRequest, status}) {
return getActionApi().send({
url: `ws/aos/purchase-request/${status}/${purchaseRequest.id}`,
method: 'put',
body: {
version: purchaseRequest.version,
},
description: 'update purchase request status',
});
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,19 @@
import React, {useCallback, useMemo} from 'react';
import {View, StyleSheet, DimensionValue} from 'react-native';
import {Button, useThemeColor} from '@axelor/aos-mobile-ui';
import {useSelector, useTranslator, useTypes} from '@axelor/aos-mobile-core';
import {
useDispatch,
useSelector,
useTranslator,
useTypes,
} from '@axelor/aos-mobile-core';
import {updatePurchaseRequestStatus} from '../../../features/purchaseRequestSlice';

const RequestButtons = () => {
const Colors = useThemeColor();
const I18n = useTranslator();
const {PurchaseRequest} = useTypes();
const dispatch = useDispatch();

const {purchaseRequest} = useSelector(
state => state.purchase_purchaseRequest,
Expand All @@ -37,13 +44,25 @@ const RequestButtons = () => {
return [
{
title: I18n.t('Purchase_Request'),
onPress: () => {},
onPress: () =>
dispatch(
(updatePurchaseRequestStatus as any)({
purchaseRequest,
status: 'request',
}),
),
width: '45%',
iconName: 'check-lg',
},
{
title: I18n.t('Base_Cancel'),
onPress: () => {},
onPress: () =>
dispatch(
(updatePurchaseRequestStatus as any)({
purchaseRequest,
status: 'cancel',
}),
),
width: '45%',
color: Colors.cautionColor,
iconName: 'reply-fill',
Expand All @@ -53,20 +72,38 @@ const RequestButtons = () => {
return [
{
title: I18n.t('Purchase_Accept'),
onPress: () => {},
onPress: () =>
dispatch(
(updatePurchaseRequestStatus as any)({
purchaseRequest,
status: 'accept',
}),
),
width: '45%',
iconName: 'check-lg',
},
{
title: I18n.t('Purchase_Refuse'),
onPress: () => {},
onPress: () =>
dispatch(
(updatePurchaseRequestStatus as any)({
purchaseRequest,
status: 'refuse',
}),
),
width: '45%',
color: Colors.errorColor,
iconName: 'x-lg',
},
{
title: I18n.t('Base_Cancel'),
onPress: () => {},
onPress: () =>
dispatch(
(updatePurchaseRequestStatus as any)({
purchaseRequest,
status: 'cancel',
}),
),
width: '94%',
color: Colors.cautionColor,
iconName: 'reply-fill',
Expand All @@ -78,7 +115,13 @@ const RequestButtons = () => {
return [
{
title: I18n.t('Base_Cancel'),
onPress: () => {},
onPress: () =>
dispatch(
(updatePurchaseRequestStatus as any)({
purchaseRequest,
status: 'cancel',
}),
),
width: '90%',
color: Colors.cautionColor,
iconName: 'reply-fill',
Expand All @@ -88,7 +131,14 @@ const RequestButtons = () => {
return [];
}
},
[Colors, I18n, PurchaseRequest],
[
Colors.cautionColor,
Colors.errorColor,
I18n,
PurchaseRequest.statusSelect,
dispatch,
purchaseRequest,
],
);

const buttons = useMemo(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ export {searchPurchaseRequestLine} from './purchaseRequestLineSlice';
export {
getPurchaseRequest,
searchPurchaseRequest,
updatePurchaseRequestStatus,
} from './purchaseRequestSlice';
export {searchSupplier} from './supplierSlice';
export {searchUnit} from './unitSlice';
16 changes: 16 additions & 0 deletions packages/apps/purchase/src/features/purchaseRequestSlice.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import {
import {
getPurchaseRequest as _getPurchaseRequest,
searchPurchaseRequest as _searchPurchaseRequest,
updatePurchaseRequestStatus as _updatePurchaseRequestStatus,
} from '../api/purchase-request-api';

export const searchPurchaseRequest = createAsyncThunk(
Expand Down Expand Up @@ -52,6 +53,21 @@ export const getPurchaseRequest = createAsyncThunk(
},
);

export const updatePurchaseRequestStatus = createAsyncThunk(
'purchase_purchaseRequest/updatePurchaseRequestStatus',
async function (data, {getState, dispatch}) {
return handlerApiCall({
fetchFunction: _updatePurchaseRequestStatus,
data,
action: 'Purchase_SliceAction_UpdatePurchaseRequestStatus',
getState,
responseOptions: {isArrayResponse: false, showToast: true},
}).then(() => {
dispatch(getPurchaseRequest({id: data.purchaseRequest.id}));
});
},
);

const initialState = {
loadingPurchaseRequest: false,
purchaseRequest: {},
Expand Down
3 changes: 2 additions & 1 deletion packages/apps/purchase/src/i18n/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -34,5 +34,6 @@
"Purchase_SliceAction_GetPurchaseRequest": "get purchase request",
"Purchase_SliceAction_SearchPurchaseRequestLine": "search purchase request lines",
"Purchase_SliceAction_SearchProduct": "search product",
"Purchase_SliceAction_SearchUnit": "search unit"
"Purchase_SliceAction_SearchUnit": "search unit",
"Purchase_SliceAction_UpdatePurchaseRequestStatus": "update purchase request status"
}
3 changes: 2 additions & 1 deletion packages/apps/purchase/src/i18n/fr.json
Original file line number Diff line number Diff line change
Expand Up @@ -34,5 +34,6 @@
"Purchase_SliceAction_GetPurchaseRequest": "récupération de la demande d'achat",
"Purchase_SliceAction_SearchPurchaseRequestLine": "recherche sur les lignes de demandes d'achat",
"Purchase_SliceAction_SearchProduct": "recherche sur les produits",
"Purchase_SliceAction_SearchUnit": "recherche sur les unités"
"Purchase_SliceAction_SearchUnit": "recherche sur les unités",
"Purchase_SliceAction_UpdatePurchaseRequestStatus": "mise à jour du statut de la demande d'achat"
}

0 comments on commit fff0283

Please sign in to comment.