mirror of
https://github.com/bigcapitalhq/bigcapital.git
synced 2026-02-17 21:30:31 +00:00
feat: billing page in dashboard and setup.
This commit is contained in:
@@ -40,11 +40,11 @@ export const seedTenant = () => (dispatch, getState) => new Promise((resolve, re
|
||||
payload: { organizationId }
|
||||
});
|
||||
ApiService.post(`organization/seed/`).then((response) => {
|
||||
resolve(response);
|
||||
dispatch({
|
||||
type: t.SET_ORGANIZATION_SEEDED,
|
||||
payload: { organizationId }
|
||||
});
|
||||
resolve(response);
|
||||
})
|
||||
.catch((error) => {
|
||||
reject(error.response.data.errors || []);
|
||||
|
||||
@@ -54,4 +54,4 @@ export const isOrganizationCongratsFactory = () => createSelector(
|
||||
(organization) => {
|
||||
return !!organization?.is_congrats;
|
||||
}
|
||||
)
|
||||
);
|
||||
|
||||
22
client/src/store/organizations/withSetupWizard.js
Normal file
22
client/src/store/organizations/withSetupWizard.js
Normal file
@@ -0,0 +1,22 @@
|
||||
import { connect } from 'react-redux';
|
||||
|
||||
export default (mapState) => {
|
||||
const mapStateToProps = (state, props) => {
|
||||
const {
|
||||
isOrganizationSetupCompleted,
|
||||
isOrganizationInitialized,
|
||||
isOrganizationSeeded,
|
||||
|
||||
isSubscriptionActive
|
||||
} = props;
|
||||
|
||||
const mapped = {
|
||||
isCongratsStep: isOrganizationSetupCompleted,
|
||||
isSubscriptionStep: !isSubscriptionActive,
|
||||
isInitializingStep: isSubscriptionActive && !isOrganizationInitialized,
|
||||
isOrganizationStep: isOrganizationInitialized && !isOrganizationSeeded,
|
||||
};
|
||||
return mapState ? mapState(mapped, state, props) : mapped;
|
||||
};
|
||||
return connect(mapStateToProps);
|
||||
};
|
||||
52
client/src/store/plans/plans.reducer.js
Normal file
52
client/src/store/plans/plans.reducer.js
Normal file
@@ -0,0 +1,52 @@
|
||||
import { createReducer } from '@reduxjs/toolkit';
|
||||
|
||||
const initialState = {
|
||||
plans: [
|
||||
{
|
||||
name: 'Free',
|
||||
slug: 'free',
|
||||
description: [
|
||||
'Sales/purchases module.',
|
||||
'Expense module.',
|
||||
'Inventory module.',
|
||||
'Unlimited status pages.',
|
||||
'Unlimited status pages.',
|
||||
],
|
||||
price: {
|
||||
month: '100',
|
||||
year: '1200',
|
||||
},
|
||||
currencyCode: 'LYD',
|
||||
},
|
||||
{
|
||||
name: 'Pro',
|
||||
slug: 'pro',
|
||||
description: [
|
||||
'Sales/purchases module.',
|
||||
'Expense module.',
|
||||
'Inventory module.',
|
||||
'Unlimited status pages.',
|
||||
'Unlimited status pages.',
|
||||
],
|
||||
price: {
|
||||
month: '200',
|
||||
year: '2400',
|
||||
},
|
||||
currencyCode: 'LYD',
|
||||
},
|
||||
],
|
||||
periods: [
|
||||
{
|
||||
slug: 'month',
|
||||
label: 'Monthly',
|
||||
},
|
||||
{
|
||||
slug: 'year',
|
||||
label: 'Yearly',
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
export default createReducer(initialState, {
|
||||
|
||||
});
|
||||
29
client/src/store/plans/plans.selectors.js
Normal file
29
client/src/store/plans/plans.selectors.js
Normal file
@@ -0,0 +1,29 @@
|
||||
import { createSelector } from 'reselect';
|
||||
|
||||
const plansSelector = (state) => state.plans.plans;
|
||||
const planSelector = (state, props) => state.plans.plans
|
||||
.find((plan) => plan.slug === props.planSlug);
|
||||
|
||||
const plansPeriodsSelector = (state) => state.plans.periods;
|
||||
|
||||
// Retrieve manual jounral current page results.
|
||||
export const getPlansSelector = () => createSelector(
|
||||
plansSelector,
|
||||
(plans) => {
|
||||
return plans;
|
||||
},
|
||||
);
|
||||
|
||||
// Retrieve manual jounral current page results.
|
||||
export const getPlansPeriodsSelector = () => createSelector(
|
||||
plansPeriodsSelector,
|
||||
(periods) => {
|
||||
return periods;
|
||||
},
|
||||
);
|
||||
|
||||
// Retrieve plan details.
|
||||
export const getPlanSelector = () => createSelector(
|
||||
planSelector,
|
||||
(plan) => plan,
|
||||
)
|
||||
@@ -28,6 +28,7 @@ import paymentMades from './PaymentMades/paymentMade.reducer';
|
||||
import organizations from './organizations/organizations.reducers';
|
||||
import subscriptions from './subscription/subscription.reducer';
|
||||
import inventoryAdjustments from './inventoryAdjustments/inventoryAdjustment.reducer';
|
||||
import plans from './plans/plans.reducer';
|
||||
|
||||
export default combineReducers({
|
||||
authentication,
|
||||
@@ -58,4 +59,5 @@ export default combineReducers({
|
||||
paymentReceives,
|
||||
paymentMades,
|
||||
inventoryAdjustments,
|
||||
plans
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user