feat(branche & warehouse ) add mark primary alert.

This commit is contained in:
elforjani13
2022-02-08 20:31:15 +02:00
committed by a.bouhuolia
parent 76a15c3f4e
commit 5aae2c849d
13 changed files with 242 additions and 23 deletions

View File

@@ -0,0 +1,70 @@
import React from 'react';
import intl from 'react-intl-universal';
import { Intent, Alert } from '@blueprintjs/core';
import { FormattedMessage as T } from 'components';
import { useMarkPrimaryBranches } from 'hooks/query';
import { AppToaster } from 'components';
import withAlertActions from 'containers/Alert/withAlertActions';
import withAlertStoreConnect from 'containers/Alert/withAlertStoreConnect';
import { compose } from 'utils';
/**
* branch mark primary alert.
*/
function BranchMarkPrimaryAlert({
name,
// #withAlertStoreConnect
isOpen,
payload: { branchId },
// #withAlertActions
closeAlert,
}) {
const { mutateAsync: markPrimaryBranchMutate, isLoading } =
useMarkPrimaryBranches();
// Handle cancel mark primary alert.
const handleCancelMarkPrimaryAlert = () => {
closeAlert(name);
};
// andle cancel mark primary confirm.
const handleConfirmMarkPrimaryBranch = () => {
markPrimaryBranchMutate(branchId)
.then(() => {
AppToaster.show({
message: intl.get('branch.alert.mark_primary_message'),
intent: Intent.SUCCESS,
});
closeAlert(name);
})
.catch((error) => {
closeAlert(name);
});
};
return (
<Alert
cancelButtonText={<T id={'cancel'} />}
confirmButtonText={<T id={'make_primary'} />}
intent={Intent.WARNING}
isOpen={isOpen}
onCancel={handleCancelMarkPrimaryAlert}
onConfirm={handleConfirmMarkPrimaryBranch}
loading={isLoading}
>
<p>
<T id={'branch.alert.are_you_sure_you_want_to_make'} />
</p>
</Alert>
);
}
export default compose(
withAlertStoreConnect(),
withAlertActions,
)(BranchMarkPrimaryAlert);

View File

@@ -0,0 +1,70 @@
import React from 'react';
import intl from 'react-intl-universal';
import { Intent, Alert } from '@blueprintjs/core';
import { FormattedMessage as T } from 'components';
import { useMarkPrimaryWarehouse } from 'hooks/query';
import { AppToaster } from 'components';
import withAlertActions from 'containers/Alert/withAlertActions';
import withAlertStoreConnect from 'containers/Alert/withAlertStoreConnect';
import { compose } from 'utils';
/**
* warehouse mark primary alert.
*/
function WarehouseMarkPrimaryAlert({
name,
// #withAlertStoreConnect
isOpen,
payload: { warehouseId },
// #withAlertActions
closeAlert,
}) {
const { mutateAsync: markPrimaryWarehouseMutate, isLoading } =
useMarkPrimaryWarehouse();
// Handle cancel mark primary alert.
const handleCancelMarkPrimaryAlert = () => {
closeAlert(name);
};
// andle cancel mark primary confirm.
const handleConfirmMarkPrimaryWarehouse = () => {
markPrimaryWarehouseMutate(warehouseId)
.then(() => {
AppToaster.show({
message: intl.get('warehouse.alert.mark_primary_message'),
intent: Intent.SUCCESS,
});
closeAlert(name);
})
.catch((error) => {
closeAlert(name);
});
};
return (
<Alert
cancelButtonText={<T id={'cancel'} />}
confirmButtonText={<T id={'make_primary'} />}
intent={Intent.WARNING}
isOpen={isOpen}
onCancel={handleCancelMarkPrimaryAlert}
onConfirm={handleConfirmMarkPrimaryWarehouse}
loading={isLoading}
>
<p>
<T id={'warehouse.alert.are_you_sure_you_want_to_make'} />
</p>
</Alert>
);
}
export default compose(
withAlertStoreConnect(),
withAlertActions,
)(WarehouseMarkPrimaryAlert);

View File

@@ -3,5 +3,14 @@ import React from 'react';
const BranchDeleteAlert = React.lazy(() =>
import('../../Alerts/Branches/BranchDeleteAlert'),
);
const BranchMarkPrimaryAlert = React.lazy(() =>
import('../../Alerts/Branches/BranchMarkPrimaryAlert'),
);
export default [{ name: 'branch-delete', component: BranchDeleteAlert }];
export default [
{ name: 'branch-delete', component: BranchDeleteAlert },
{
name: 'branch-mark-primary',
component: BranchMarkPrimaryAlert,
},
];

View File

@@ -27,22 +27,27 @@ function BranchesDataTable({
// Table columns.
const columns = useBranchesTableColumns();
const Time = true;
const { branches, isBranchesLoading, isBranchesFetching } =
useBranchesContext();
// Handle edit branch.
const handleEditBranch = ({ id }) => {
openDialog('branch-form', { branchId: id, action: 'edit' });
};
// Handle delete branch.
const handleDeleteBranch = ({ id }) => {
openAlert('branch-delete', { branchId: id });
};
if (Time) {
return <BranchesEmptyStatus />;
}
// Handle mark primary branch.
const handleMarkPrimaryBranch = ({ id }) => {
openAlert('branch-mark-primary', { branchId: id });
};
// if (type) {
// return <BranchesEmptyStatus />;
// }
return (
<BranchesTableCard>
@@ -58,6 +63,7 @@ function BranchesDataTable({
payload={{
onEdit: handleEditBranch,
onDelete: handleDeleteBranch,
onMarkPrimary: handleMarkPrimaryBranch,
}}
/>
</BranchesTableCard>

View File

@@ -9,7 +9,7 @@ import { Icon } from 'components';
* Context menu of Branches.
*/
export function ActionsMenu({
payload: { onEdit, onDelete },
payload: { onEdit, onDelete, onMarkPrimary },
row: { original },
}) {
return (
@@ -19,6 +19,11 @@ export function ActionsMenu({
text={intl.get('branches.action.edit_branch')}
onClick={safeCallback(onEdit, original)}
/>
<MenuItem
icon={<Icon icon="check" />}
text={intl.get('branches.action.mark_as_primary')}
onClick={safeCallback(onMarkPrimary, original)}
/>
<MenuDivider />
<MenuItem
icon={<Icon icon="trash-16" iconSize={16} />}

View File

@@ -3,8 +3,17 @@ import React from 'react';
const WarehouseDeleteAlert = React.lazy(() =>
import('../../Alerts/Warehouses/WarehouseDeleteAlert'),
);
const WarehouseMarkPrimaryAlert = React.lazy(() =>
import('../../Alerts/Warehouses/WarehouseMarkPrimaryAlert'),
);
/**
* Warehouses alerts.
*/
export default [{ name: 'warehouse-delete', component: WarehouseDeleteAlert }];
export default [
{ name: 'warehouse-delete', component: WarehouseDeleteAlert },
{
name: 'warehouse-mark-primary',
component: WarehouseMarkPrimaryAlert,
},
];

View File

@@ -30,12 +30,18 @@ function WarehousesGridItems({
openAlert('warehouse-delete', { warehouseId: warehouse.id });
};
// Handle mark primary warehouse.
const handleMarkPrimaryWarehouse = () => {
openAlert('warehouse-mark-primary', { warehouseId: warehouse.id });
};
return (
<ContextMenu2
content={
<WarehouseContextMenu
onEditClick={handleEditWarehouse}
onDeleteClick={handleDeleteWarehouse}
onMarkPrimary={handleMarkPrimaryWarehouse}
/>
}
>

View File

@@ -17,7 +17,7 @@ function WarehousesList({
changePreferencesPageTitle(intl.get('warehouses.label'));
}, [changePreferencesPageTitle]);
// if () {
// if (type) {
// return <WarehousesEmptyStatus />;
// }

View File

@@ -28,11 +28,11 @@ function WarehousesProvider({ ...props }) {
)}
>
<React.Fragment>
{isWarehouesLoading ? (
{/* {isWarehouesLoading ? (
<PreferencesPageLoader />
) : (
) : ( */}
<WarehousesContext.Provider value={provider} {...props} />
)}
{/* )} */}
</React.Fragment>
</div>
);

View File

@@ -22,7 +22,7 @@ export function WarehouseContextMenu({
onClick={safeCallback(onEditClick)}
/>
<MenuItem
icon={<Icon icon="pen-18" />}
icon={<Icon icon="check" />}
text={intl.get('warehouses.action.make_as_parimary')}
onClick={safeCallback(onPrimary)}
/>

View File

@@ -113,3 +113,21 @@ export function useActivateBranches(props) {
...props,
});
}
/**
* Mark primary the given branch.
*/
export function useMarkPrimaryBranches(props) {
const queryClient = useQueryClient();
const apiRequest = useApiRequest();
return useMutation((id) => apiRequest.post(`branches/${id}/mark-primary`), {
onSuccess: (res, id) => {
// Invalidate specific inventory adjustment.
queryClient.invalidateQueries([t.BRANCH, id]);
commonInvalidateQueries(queryClient);
},
...props,
});
}

View File

@@ -233,3 +233,21 @@ export function useActivateWarehouses(props) {
...props,
});
}
/**
* Mark primary the given branch.
*/
export function useMarkPrimaryWarehouse(props) {
const queryClient = useQueryClient();
const apiRequest = useApiRequest();
return useMutation((id) => apiRequest.post(`warehouses/${id}/mark-primary`), {
onSuccess: (res, id) => {
// Invalidate specific inventory adjustment.
queryClient.invalidateQueries([t.WAREHOUSE, id]);
commonInvalidateQueries(queryClient);
},
...props,
});
}

View File

@@ -1816,12 +1816,12 @@
"warehouse_transfer.label.edit_warehouse_transfer": "Edit Warehouse Transfer",
"warehouse_transfer.label.new_warehouse_transfer": "New Warehouse Transfer",
"warehouse_transfer.label.warehouse_transfer_list": "Warehouse Transfers List",
"warehouse_transfer.success_message":"The warehouse transfer transaction has been created successfully.",
"warehouse_transfer.edit_success_message":"The warehouse transfer transaction has been created successfully.",
"select_warehouse_transfer":"Select Warehouse Transfer",
"warehouse_transfer.alert.delete_message":"The warehouse transfer transaction has been deleted successfully",
"warehouse_transfer.once_delete_this_warehouse_transfer":"Once you delete this warehouse transfer, you won't be able to restore it later. Are you sure you want to delete this warehouse transfer?",
"warehouse_transfer.error.could_not_transfer_item_from_source_to_destination":"Could not transfer item from source to destination on the same warehouse",
"warehouse_transfer.success_message": "The warehouse transfer transaction has been created successfully.",
"warehouse_transfer.edit_success_message": "The warehouse transfer transaction has been created successfully.",
"select_warehouse_transfer": "Select Warehouse Transfer",
"warehouse_transfer.alert.delete_message": "The warehouse transfer transaction has been deleted successfully",
"warehouse_transfer.once_delete_this_warehouse_transfer": "Once you delete this warehouse transfer, you won't be able to restore it later. Are you sure you want to delete this warehouse transfer?",
"warehouse_transfer.error.could_not_transfer_item_from_source_to_destination": "Could not transfer item from source to destination on the same warehouse",
"credit_note_preview.dialog.title": "Credit Note PDF Preview",
"payment_receive_preview.dialog.title": "Payment Receive PDF Preview",
@@ -1829,6 +1829,7 @@
"branches.label.new_branch": "New Branch",
"branches.action.edit_branch": "Edit Branch",
"branches.action.delete_branch": "Delete Branch",
"branches.action.mark_as_primary": "Make as Primary",
"branches.column.branch_name": "Branch name",
"branches.column.address": "Address",
"branches.column.phone_number": "Phone number",
@@ -1845,8 +1846,15 @@
"branch.dialog.label.email": "Email",
"branch.dialog.label.website": "Website",
"branch.dialog.success_message": "The branch has been created successfully.",
"branch.alert.delete_message":"The branch has been deleted successfully",
"branch.once_delete_this_branch":"Once you delete this branch, you won't be able to restore it later. Are you sure you want to delete this branch?",
"realized_gain_or_loss.label":"Realized Gain or Loss",
"unrealized_gain_or_loss.label":"Unrealized Gain or Loss"
"branch.alert.delete_message": "The branch has been deleted successfully",
"branch.once_delete_this_branch": "Once you delete this branch, you won't be able to restore it later. Are you sure you want to delete this branch?",
"realized_gain_or_loss.label": "Realized Gain or Loss",
"unrealized_gain_or_loss.label": "Unrealized Gain or Loss",
"branch_activate.dialog_success_message": "Multi-branches feature has been activated successfully.",
"branch.alert.mark_primary_message": "The branch has been marked as primary.",
"branch.alert.are_you_sure_you_want_to_make": "Are you sure you want to make a primary branch?",
"warehouse_activate.dialog_success_message": "Multi-branches feature has been activated successfully.",
"warehouse.alert.mark_primary_message": "The given warehouse has been marked as primary.",
"warehouse.alert.are_you_sure_you_want_to_make": "Are you sure you want to make a primary warehouse?",
"make_primary": "Make Primary"
}