Browse Source

[ADD] wait processing view

Gogs 7 years ago
parent
commit
46af0b3283

+ 22 - 8
src/App.vue

@@ -1,18 +1,18 @@
 <template lang="pug">
     .pos
-        form-wizard(title='' subtitle='' finishButtonText='Finalizar' color='#7c7bad' nextButtonText='Continuar' backButtonText='Volver' @on-complete='createSale')
-            tab-content(title="Qué productos necesita?" :before-change="checkCart")
+        form-wizard(title='' subtitle='' finishButtonText='Finalizar' :hideButtons='processing' color='#7c7bad' nextButtonText='Continuar' backButtonText='Volver' :validateOnBack='true' @on-complete='createSale' ref='wizard')
+            tab-content(title="Qué productos necesita?" :beforeChange="checkCart")
                 product-step
-            tab-content(title="Quién es el cliente?" :before-change="checkCustomer")
+            tab-content(title="Quién es el cliente?" :beforeChange="checkCustomer")
                 customer-step
-            tab-content(title="Cómo quieres pagar?")
+            tab-content(title="Cómo quieres pagar?" :beforeChange="checkPaymentMethod")
                 payment-method-step
-            tab-content(title="Qué monto vas a entregar?" :before-change="checkAmountReceived")
+            tab-content(title="Qué monto vas a entregar?" :beforeChange="checkAmountReceived")
                 payment-amount-step
 </template>
 
 <script>
-    import { mapActions } from 'vuex'
+    import { mapGetters, mapActions } from 'vuex'
 
     import { FormWizard, TabContent } from 'vue-form-wizard'
     import 'vue-form-wizard/dist/vue-form-wizard.min.css'
@@ -22,7 +22,7 @@
     import PaymentMethodStep from '@@/steps/PaymentMethod'
     import PaymentAmountStep from '@@/steps/PaymentAmount'
 
-    import { INIT_SALE, CHECK_CART, CHECK_CUSTOMER, CHECK_AMOUNT_RECEIVED, CREATE_SALE } from '@/constants/actionTypes'
+    import { INIT_SALE, CHECK_CART, CHECK_CUSTOMER, CHECK_PAYMENT_METHOD, CHECK_AMOUNT_RECEIVED, CREATE_SALE, RESET_SALE } from '@/constants/actionTypes'
 
     export default {
         components: {
@@ -33,13 +33,27 @@
             PaymentMethodStep,
             PaymentAmountStep
         },
+        computed: mapGetters([
+            'processing',
+            'completed'
+        ]),
         methods: mapActions([
             INIT_SALE,
             CHECK_CART,
             CHECK_CUSTOMER,
             CHECK_AMOUNT_RECEIVED,
-            CREATE_SALE
+            CREATE_SALE,
+            RESET_SALE
         ]),
+        watch: {
+            completed(value) {
+                if (value) {
+                    this.$refs.wizard.changeTab(3, 0, false)
+
+                    this.resetSale()
+                }
+            }
+        },
         mounted() {
             this.initSale()
         }

+ 26 - 2
src/components/steps/PaymentAmount.vue

@@ -2,6 +2,10 @@
     .pos-step
         ticket(:customerName='selectedCustomer && selectedCustomer.name' :total='cartTotal' :items='cartItems')
         form.payment-amount
+            .form-loading(v-show='processing')
+                .form-overlay
+                .form-spinner
+                    spinner(type='wave')
             .form-separator
                 h3 Detalles del Pago
                 hr
@@ -31,12 +35,14 @@
     import { mapGetters, mapActions } from 'vuex'
 
     import Ticket from '@@/common/Ticket'
+    import Spinner from '@/components/common/Spinner'
 
     import { CHANGE_INITIAL_PAYMENT, COMPUTE_PAYMENT_LINES } from '@/constants/actionTypes'
 
     export default {
         components: {
-            Ticket
+            Ticket,
+            Spinner
         },
         computed: {
             amountReceived: {
@@ -66,7 +72,8 @@
                 'paymentType',
                 'paymentLines',
                 'initialPayment',
-                'paymentResidual'
+                'paymentResidual',
+                'processing'
             ])
         },
         methods: {
@@ -99,6 +106,23 @@
             margin-right: 50px
             padding: 35px
             background: $app-light-color
+            position: relative
+            .form-loading
+                width: 90%
+                height: 90%
+                position: absolute
+                .form-overlay
+                    width: 100%
+                    height: 100%
+                    background: $app-bg-color
+                    opacity: 0.5
+                    position: absolute
+                .form-spinner
+                    width: 100%
+                    height: 100%
+                    display: flex
+                    justify-content: center
+                    align-items: center
             .form-separator
                 h3
                     color: $app-separator-color

+ 34 - 9
src/constants/actionTypes.js

@@ -1,3 +1,7 @@
+const COMPLETE_SALE = 'completeSale'
+
+const ERROR_SALE = 'errorSale'
+
 const NOTIFY = 'notify'
 
 const INIT_SALE = 'initSale'
@@ -10,6 +14,8 @@ const CHECK_CUSTOMER = 'checkCustomer'
 
 const CHECK_AMOUNT_RECEIVED = 'checkAmountReceived'
 
+const CHECK_PAYMENT_METHOD = 'checkPaymentMethod'
+
 const CREATE_SALE = 'createSale'
 
 const INIT_USER = 'initUser'
@@ -68,14 +74,33 @@ const DECREASE_FROM_CART = 'decreaseFromCart'
 
 const REMOVE_FROM_CART = 'removeFromCart'
 
+const RESET_CART = 'resetCart'
+
+const RESET_CURRENCY = 'resetCurrency'
+
+const RESET_CUSTOMER = 'resetCustomer'
+
+const RESET_DATE = 'resetDate'
+
+const RESET_JOURNAL = 'resetJournal'
+
+const RESET_PAYMENT = 'resetPayment'
+
+const RESET_PRODUCT = 'resetProduct'
+
+const RESET_USER = 'resetUser'
+
+const RESET_SALE = 'resetSale'
+
 export {
-    NOTIFY, INIT_SALE, EXPLODE_DATA, CHECK_CART, CHECK_CUSTOMER, CHECK_AMOUNT_RECEIVED, CREATE_SALE, // Sale
-    INIT_USER, // Users
-    INIT_PRODUCTS, SHOW_PRODUCT_FORM, HIDE_PRODUCT_FORM, SUBMIT_PRODUCT, CREATE_PRODUCT, RECEIVE_PRODUCT, SELECT_PRODUCT, // Product
-    INIT_PAYMENT_TERMS, CHANGE_PAYMENT_TYPE, CHANGE_INITIAL_PAYMENT, COMPUTE_PAYMENT_LINES, SELECT_PAYMENT_TERM, // Payment terms
-    INIT_JOURNALS, SELECT_JOURNAL, // Journals
-    INIT_DATE, // Date
-    INIT_CUSTOMERS, SHOW_CUSTOMER_FORM, HIDE_CUSTOMER_FORM, SUBMIT_CUSTOMER, CREATE_CUSTOMER, RECEIVE_CUSTOMER, SELECT_CUSTOMER, // Customer
-    INIT_CURRENCIES, // Currencies
-    CHANGE_CART_TOTAL, ADD_TO_CART, DECREASE_FROM_CART, REMOVE_FROM_CART // Cart
+    COMPLETE_SALE, ERROR_SALE, // App
+    NOTIFY, INIT_SALE, EXPLODE_DATA, CHECK_CART, CHECK_CUSTOMER, CHECK_PAYMENT_METHOD, CHECK_AMOUNT_RECEIVED, CREATE_SALE, RESET_SALE, // Sale
+    INIT_USER, RESET_USER, // Users
+    INIT_PRODUCTS, SHOW_PRODUCT_FORM, HIDE_PRODUCT_FORM, SUBMIT_PRODUCT, CREATE_PRODUCT, RECEIVE_PRODUCT, SELECT_PRODUCT, RESET_PRODUCT, // Product
+    INIT_PAYMENT_TERMS, CHANGE_PAYMENT_TYPE, CHANGE_INITIAL_PAYMENT, COMPUTE_PAYMENT_LINES, SELECT_PAYMENT_TERM, RESET_PAYMENT, // Payment terms
+    INIT_JOURNALS, SELECT_JOURNAL, RESET_JOURNAL, // Journals
+    INIT_DATE, RESET_DATE, // Date
+    INIT_CUSTOMERS, SHOW_CUSTOMER_FORM, HIDE_CUSTOMER_FORM, SUBMIT_CUSTOMER, CREATE_CUSTOMER, RECEIVE_CUSTOMER, SELECT_CUSTOMER, RESET_CUSTOMER, // Customer
+    INIT_CURRENCIES, RESET_CURRENCY, // Currencies
+    CHANGE_CART_TOTAL, ADD_TO_CART, DECREASE_FROM_CART, REMOVE_FROM_CART, RESET_CART // Cart
 }

+ 10 - 1
src/constants/mutationTypes.js

@@ -1,3 +1,9 @@
+const SET_PROCESSING = 'setProcessing'
+
+const SET_COMPLETED = 'setCompleted'
+
+const SET_ERROR = 'setError'
+
 const SET_USER = 'setUser'
 
 const SET_LOADING_USER = 'setLoadingUser'
@@ -54,6 +60,8 @@ const SET_CURRENCIES = 'setCurrencies'
 
 const SET_LOADING_CURRENCIES = 'setLoadingCurrencies'
 
+const SET_CART = 'setCart'
+
 const PUSH_TO_CART = 'pushToCart'
 
 const PULL_FROM_CART = 'pullFromCart'
@@ -61,6 +69,7 @@ const PULL_FROM_CART = 'pullFromCart'
 const SET_CART_TOTAL = 'setCartTotal'
 
 export {
+    SET_PROCESSING, SET_COMPLETED, SET_ERROR, // App
     SET_USER, SET_LOADING_USER, // User
     SET_PRODUCTS, SET_LOADING_PRODUCTS, ADD_PRODUCT, SET_SHOW_PRODUCT_FORM, SELECT_PRODUCT, SET_PRODUCT_WITH_VARIANT, // Product
     SET_PAYMENT_TERMS, SET_LOADING_PAYMENT_TERMS, AUTOSELECT_PAYMENT_TERM, SET_SELECTED_PAYMENT_TERM, SET_PAYMENT_TYPE, SET_INITIAL_PAYMENT, SET_PAYMENT_LINES, // Payment
@@ -68,5 +77,5 @@ export {
     SET_DATE, SET_LOADING_DATE, // Date
     SET_CUSTOMERS, SET_LOADING_CUSTOMERS, SET_SHOW_CUSTOMER_FORM, SET_SELECTED_CUSTOMER, ADD_CUSTOMER, // Customer
     SET_CURRENCIES, SET_LOADING_CURRENCIES, // Currency
-    PUSH_TO_CART, PULL_FROM_CART, SET_CART_TOTAL // Cart
+    PUSH_TO_CART, PULL_FROM_CART, SET_CART_TOTAL, SET_CART // Cart
 }

+ 85 - 5
src/store/actions.js

@@ -1,6 +1,33 @@
 import axios from 'axios'
-import { INIT_SALE_URL, CREATE_PRODUCT_URL, CREATE_CUSTOMER_URL, PROCESS_SALE_URL } from '@/constants/resourcePaths'
-import { INIT_SALE, NOTIFY, EXPLODE_DATA, CREATE_PRODUCT, CREATE_CUSTOMER, RECEIVE_PRODUCT, RECEIVE_CUSTOMER, CHECK_CART, CHECK_CUSTOMER, CHECK_AMOUNT_RECEIVED, CREATE_SALE } from '@/constants/actionTypes'
+
+import { 
+    INIT_SALE_URL, 
+    CREATE_PRODUCT_URL, 
+    CREATE_CUSTOMER_URL, 
+    PROCESS_SALE_URL 
+} from '@/constants/resourcePaths'
+
+import {
+    SET_PROCESSING,
+    SET_COMPLETED 
+} from '@/constants/mutationTypes'
+
+import { 
+    INIT_SALE, 
+    NOTIFY, 
+    EXPLODE_DATA, 
+    CREATE_PRODUCT, 
+    CREATE_CUSTOMER, 
+    RECEIVE_PRODUCT, 
+    RECEIVE_CUSTOMER, 
+    CHECK_CART, 
+    CHECK_CUSTOMER, 
+    CHECK_PAYMENT_METHOD,
+    CHECK_AMOUNT_RECEIVED, 
+    CREATE_SALE, 
+    COMPLETE_SALE,
+    RESET_SALE
+} from '@/constants/actionTypes'
 
 const actions = {
     /**
@@ -16,9 +43,10 @@ const actions = {
      * 
      * @param {*} param0 
      */
-    [INIT_SALE] ({ dispatch }) {
+    [INIT_SALE] ({ commit, dispatch }) {
         return axios.get(INIT_SALE_URL).then(response => {
-            dispatch('explodeData', response.data)
+            dispatch(COMPLETE_SALE, false)
+            dispatch(EXPLODE_DATA, response.data)
         }).catch(error => {
             console.log(error)
         })
@@ -85,8 +113,23 @@ const actions = {
      * @param {*} param0 
      */
     [CHECK_CUSTOMER] ({ getters, dispatch }) {
+        if (getters.processing) {
+            return dispatch(NOTIFY, 'Espere mientras se está procesando')
+        }
+
         return !!getters.selectedCustomer || dispatch(NOTIFY, 'Necesitas seleccionar un cliente para continuar')
     },
+    /**
+     * 
+     * @param {*} param0 
+     */
+    [CHECK_PAYMENT_METHOD] ({ getters }) {
+        if (getters.processing) {
+            return dispatch(NOTIFY, 'Espere mientras se está procesando')
+        }
+
+        return true
+    },
     /**
      * 
      * @param {*} param0 
@@ -102,7 +145,9 @@ const actions = {
      * 
      * @param {*} param0 
      */
-    [CREATE_SALE] ({ getters , dispatch }, payload) {
+    [CREATE_SALE] ({ getters, commit, dispatch }, payload) {
+        commit(SET_PROCESSING, true)        
+
         const data = {
             jsonrpc: '2.0',
             method: 'call',
@@ -124,9 +169,44 @@ const actions = {
 
         return axios.post(PROCESS_SALE_URL, data).then(response => {
             console.log(response)
+
+            commit(SET_PROCESSING, false)
+            dispatch(COMPLETE_SALE, true)
         }).catch(error => {
             console.log(error)
+
+            commit(SET_PROCESSING, false)
         })
+
+        // commit(SET_PROCESSING, true)
+
+        // setTimeout(() => {
+        //     commit(SET_PROCESSING, false)
+        //     dispatch(COMPLETE_SALE, true)
+        // }, 2000)
+    },
+    /**
+     * 
+     * @param {*} param0 
+     * @param {*} payload 
+     */
+    [COMPLETE_SALE] ({ commit }, payload) {
+        commit(SET_COMPLETED, !!payload)
+    },
+    /**
+     * 
+     * @param {*} param0 
+     */
+    [RESET_SALE] ({ rootState, commit, dispatch }) {
+        for (let key in rootState) {
+            if (!(rootState[key] instanceof Object)) {
+                continue
+            }
+
+            dispatch(`reset${key[0].toUpperCase()}${key.slice(1)}`)
+        }
+
+        dispatch(INIT_SALE)
     }
 }
 

+ 25 - 0
src/store/getters.js

@@ -0,0 +1,25 @@
+const getters = {
+    /**
+     * 
+     * @param {*} state 
+     */
+    processing(state) {
+        return state.processing
+    },
+    /**
+     * 
+     * @param {*} state 
+     */
+    completed(state) {
+        return state.completed
+    },
+    /**
+     * 
+     * @param {*} state 
+     */
+    error(state) {
+        return state.error
+    }
+}
+
+export default getters

+ 6 - 0
src/store/index.js

@@ -1,6 +1,9 @@
 import Vue from 'vue'
 import Vuex from 'vuex'
 
+import state from '@/store/state'
+import getters from '@/store/getters'
+import mutations from '@/store/mutations'
 import actions from '@/store/actions'
 
 import cart from '@/store/modules/cart'
@@ -15,6 +18,9 @@ import user from '@/store/modules/user'
 Vue.use(Vuex)
 
 const store = new Vuex.Store({
+    state,
+    getters,
+    mutations,
     actions,
     modules: {
         cart,

+ 31 - 2
src/store/modules/cart.js

@@ -1,5 +1,17 @@
-import { PUSH_TO_CART, PULL_FROM_CART, SET_CART_TOTAL } from '@/constants/mutationTypes'
-import { ADD_TO_CART, DECREASE_FROM_CART, REMOVE_FROM_CART, CHANGE_CART_TOTAL } from '@/constants/actionTypes'
+import { 
+    SET_CART, 
+    PUSH_TO_CART, 
+    PULL_FROM_CART, 
+    SET_CART_TOTAL 
+} from '@/constants/mutationTypes'
+
+import { 
+    ADD_TO_CART, 
+    DECREASE_FROM_CART, 
+    REMOVE_FROM_CART, 
+    CHANGE_CART_TOTAL, 
+    RESET_CART 
+} from '@/constants/actionTypes'
 
 const initialState = {
     cartItems: [],
@@ -29,6 +41,14 @@ const getters = {
 }
 
 const mutations = {
+    /**
+     * 
+     * @param {*} state 
+     * @param {*} payload 
+     */
+    [SET_CART] (state, payload) {
+        state.cartItems = payload
+    },
     /**
      * 
      * @param {*} state 
@@ -106,6 +126,15 @@ const actions = {
      */
     [CHANGE_CART_TOTAL] ({ commit }, payload) {
         commit(SET_CART_TOTAL, payload)
+    },
+    /**
+     * 
+     * @param {*} param0 
+     * @param {*} payload 
+     */
+    [RESET_CART] ({ commit }) {
+        commit(SET_CART, [])
+        commit(SET_CART_TOTAL, 0)
     }
 }
 

+ 18 - 2
src/store/modules/currency.js

@@ -1,5 +1,12 @@
-import { SET_CURRENCIES, SET_LOADING_CURRENCIES } from '@/constants/mutationTypes'
-import { INIT_CURRENCIES } from '@/constants/actionTypes'
+import { 
+    SET_CURRENCIES, 
+    SET_LOADING_CURRENCIES 
+} from '@/constants/mutationTypes'
+
+import { 
+    INIT_CURRENCIES, 
+    RESET_CURRENCY
+} from '@/constants/actionTypes'
 
 const initialState = {
     currencies: [],
@@ -56,6 +63,15 @@ const actions = {
     [INIT_CURRENCIES] ({ commit }, payload) {
         commit(SET_CURRENCIES, payload)
         commit(SET_LOADING_CURRENCIES)
+    },
+    /**
+     * 
+     * @param {*} param0 
+     * @param {*} payload 
+     */
+    [RESET_CURRENCY] ({ commit }) {
+        commit(SET_LOADING_CURRENCIES, true)
+        commit(SET_CURRENCIES, [])
     }
 }
 

+ 27 - 2
src/store/modules/customer.js

@@ -1,5 +1,21 @@
-import { SET_CUSTOMERS, SET_LOADING_CUSTOMERS, SET_SHOW_CUSTOMER_FORM, SET_SELECTED_CUSTOMER, ADD_CUSTOMER } from '@/constants/mutationTypes'
-import { INIT_CUSTOMERS, SHOW_CUSTOMER_FORM, HIDE_CUSTOMER_FORM, SUBMIT_CUSTOMER, CREATE_CUSTOMER, RECEIVE_CUSTOMER, SELECT_CUSTOMER } from '@/constants/actionTypes'
+import { 
+    ADD_CUSTOMER, 
+    SET_CUSTOMERS, 
+    SET_LOADING_CUSTOMERS, 
+    SET_SELECTED_CUSTOMER, 
+    SET_SHOW_CUSTOMER_FORM
+} from '@/constants/mutationTypes'
+
+import { 
+    INIT_CUSTOMERS, 
+    SHOW_CUSTOMER_FORM, 
+    HIDE_CUSTOMER_FORM, 
+    SUBMIT_CUSTOMER, 
+    CREATE_CUSTOMER, 
+    RECEIVE_CUSTOMER, 
+    SELECT_CUSTOMER, 
+    RESET_CUSTOMER
+} from '@/constants/actionTypes'
 
 const initialState = {
     customers: [],
@@ -145,6 +161,15 @@ const actions = {
      */
     [SELECT_CUSTOMER] ({ commit }, payload) {
         commit(SET_SELECTED_CUSTOMER, payload)
+    },
+    /**
+     * 
+     * @param {*} param0 
+     */
+    [RESET_CUSTOMER] ({ commit }) {
+        commit(SET_LOADING_CUSTOMERS, true)
+        commit(SET_CUSTOMERS, [])
+        commit(SET_SELECTED_CUSTOMER, null)
     }
 }
 

+ 17 - 2
src/store/modules/date.js

@@ -1,5 +1,12 @@
-import { SET_DATE, SET_LOADING_DATE } from '@/constants/mutationTypes'
-import { INIT_DATE } from '@/constants/actionTypes'
+import { 
+    SET_DATE, 
+    SET_LOADING_DATE 
+} from '@/constants/mutationTypes'
+
+import { 
+    INIT_DATE, 
+    RESET_DATE 
+} from '@/constants/actionTypes'
 
 const initialState = {
     date: null,
@@ -56,6 +63,14 @@ const actions = {
     [INIT_DATE] ({ commit }, payload) {
         commit(SET_DATE, payload)
         commit(SET_LOADING_DATE)
+    },
+    /**
+     * 
+     * @param {*} param0 
+     */
+    [RESET_DATE] ({ commit }) {
+        commit(SET_LOADING_DATE, true)
+        commit(SET_DATE, null)
     }
 }
 

+ 26 - 2
src/store/modules/journal.js

@@ -1,5 +1,15 @@
-import { SET_JOURNALS, SET_LOADING_JOURNALS, AUTOSELECT_JOURNAL, SET_SELECTED_JOURNAL } from '@/constants/mutationTypes'
-import { INIT_JOURNALS, SELECT_JOURNAL } from '@/constants/actionTypes'
+import { 
+    SET_JOURNALS, 
+    SET_LOADING_JOURNALS, 
+    AUTOSELECT_JOURNAL, 
+    SET_SELECTED_JOURNAL 
+} from '@/constants/mutationTypes'
+
+import { 
+    INIT_JOURNALS, 
+    SELECT_JOURNAL,
+    RESET_JOURNAL
+} from '@/constants/actionTypes'
 
 const initialState = {
     journals: [],
@@ -68,6 +78,11 @@ const mutations = {
      * @param {*} payload 
      */
     [SET_SELECTED_JOURNAL] (state, payload) {
+        if (!payload) {
+            state.selectedJournal = payload
+            return
+        }
+
         state.selectedJournal = state.journals.find(item => item.id === payload)
     }
 }
@@ -90,6 +105,15 @@ const actions = {
      */
     [SELECT_JOURNAL] ({ commit }, payload) {
         commit(SET_SELECTED_JOURNAL, payload)
+    },
+    /**
+     * 
+     * @param {*} param0 
+     */
+    [RESET_JOURNAL] ({ commit }) {
+        commit(SET_LOADING_JOURNALS, true)
+        commit(SET_JOURNALS, [])
+        commit(SET_SELECTED_JOURNAL, null)
     }
 }
 

+ 34 - 2
src/store/modules/payment.js

@@ -1,5 +1,21 @@
-import { SET_PAYMENT_TERMS, SET_LOADING_PAYMENT_TERMS, AUTOSELECT_PAYMENT_TERM, SET_SELECTED_PAYMENT_TERM, SET_PAYMENT_TYPE, SET_INITIAL_PAYMENT, SET_PAYMENT_LINES } from '@/constants/mutationTypes'
-import { INIT_PAYMENT_TERMS, SELECT_PAYMENT_TERM, CHANGE_PAYMENT_TYPE, CHANGE_INITIAL_PAYMENT, COMPUTE_PAYMENT_LINES } from '@/constants/actionTypes'
+import { 
+    SET_PAYMENT_TERMS, 
+    SET_LOADING_PAYMENT_TERMS, 
+    AUTOSELECT_PAYMENT_TERM, 
+    SET_SELECTED_PAYMENT_TERM, 
+    SET_PAYMENT_TYPE, 
+    SET_INITIAL_PAYMENT, 
+    SET_PAYMENT_LINES 
+} from '@/constants/mutationTypes'
+
+import { 
+    INIT_PAYMENT_TERMS, 
+    SELECT_PAYMENT_TERM, 
+    CHANGE_PAYMENT_TYPE, 
+    CHANGE_INITIAL_PAYMENT, 
+    COMPUTE_PAYMENT_LINES,
+    RESET_PAYMENT
+} from '@/constants/actionTypes'
 
 const initialState = {
     paymentTerms: [],
@@ -99,6 +115,11 @@ const mutations = {
      * @param {*} payload 
      */
     [SET_SELECTED_PAYMENT_TERM] (state, payload) {
+        if (!payload) {
+            state.selectedPaymentTerm = payload
+            return
+        }
+
         state.selectedPaymentTerm = state.paymentTerms.find(item => item.id === payload)
     },
     /**
@@ -227,6 +248,17 @@ const actions = {
             date: getters.date,
             total: getters.cartTotal
         })
+    },
+    /**
+     * 
+     * @param {*} param0 
+     */
+    [RESET_PAYMENT] ({ commit }) {
+        commit(SET_LOADING_PAYMENT_TERMS, true)
+        commit(SET_PAYMENT_TERMS, [])
+        commit(SET_SELECTED_PAYMENT_TERM, null)
+        commit(SET_PAYMENT_TYPE, 'cash')
+        commit(SET_INITIAL_PAYMENT, 0)
     }
 }
 

+ 27 - 2
src/store/modules/product.js

@@ -1,5 +1,22 @@
-import { SET_PRODUCTS, SET_LOADING_PRODUCTS, SET_SHOW_PRODUCT_FORM, SET_PRODUCT_WITH_VARIANT, ADD_PRODUCT } from '@/constants/mutationTypes'
-import { INIT_PRODUCTS, SHOW_PRODUCT_FORM, HIDE_PRODUCT_FORM, SUBMIT_PRODUCT, CREATE_PRODUCT, RECEIVE_PRODUCT, SELECT_PRODUCT, ADD_TO_CART } from '@/constants/actionTypes'
+import { 
+    SET_PRODUCTS, 
+    SET_LOADING_PRODUCTS, 
+    SET_SHOW_PRODUCT_FORM, 
+    SET_PRODUCT_WITH_VARIANT, 
+    ADD_PRODUCT 
+} from '@/constants/mutationTypes'
+
+import { 
+    INIT_PRODUCTS, 
+    SHOW_PRODUCT_FORM, 
+    HIDE_PRODUCT_FORM, 
+    SUBMIT_PRODUCT, 
+    CREATE_PRODUCT, 
+    RECEIVE_PRODUCT, 
+    SELECT_PRODUCT, 
+    ADD_TO_CART,
+    RESET_PRODUCT
+} from '@/constants/actionTypes'
 
 const initialState = {
     products: [],
@@ -154,6 +171,14 @@ const actions = {
         }
 
         dispatch(ADD_TO_CART, payload.variants[0])
+    },
+    /**
+     * 
+     * @param {*} param0 
+     */
+    [RESET_PRODUCT] ({ commit }) {
+        commit(SET_LOADING_PRODUCTS, true)
+        commit(SET_PRODUCTS, [])
     }
 }
 

+ 17 - 2
src/store/modules/user.js

@@ -1,5 +1,12 @@
-import { SET_USER, SET_LOADING_USER } from '@/constants/mutationTypes'
-import { INIT_USER } from '@/constants/actionTypes'
+import { 
+    SET_USER, 
+    SET_LOADING_USER 
+} from '@/constants/mutationTypes'
+
+import { 
+    INIT_USER,
+    RESET_USER
+} from '@/constants/actionTypes'
 
 const initialState = {
     user: null,
@@ -56,6 +63,14 @@ const actions = {
     [INIT_USER] ({ commit }, payload) {
         commit(SET_USER, payload)
         commit(SET_LOADING_USER)
+    },
+    /**
+     * 
+     * @param {*} param0 
+     */
+    [RESET_USER] ({ commit }) {
+        commit(SET_LOADING_USER, true)
+        commit(SET_USER, null)
     }
 }
 

+ 21 - 0
src/store/mutations.js

@@ -0,0 +1,21 @@
+import { 
+    SET_PROCESSING,
+    SET_COMPLETED
+ } from '@/constants/mutationTypes'
+
+const mutations = {
+      /**
+     * 
+     */
+    [SET_PROCESSING] (state, payload) {
+        state.processing = payload
+    },
+    /**
+     * 
+     */
+    [SET_COMPLETED] (state, payload) {
+        state.completed = payload
+    }
+}
+
+export default mutations

+ 7 - 0
src/store/state.js

@@ -0,0 +1,7 @@
+const state = {
+    processing: false,
+    completed: false,
+    error: false
+}
+
+export default state