Browse Source

[ADD] step restrictions

Gogs 7 years ago
parent
commit
1deac2668f
3 changed files with 40 additions and 8 deletions
  1. 11 6
      src/App.vue
  2. 7 1
      src/constants/actionTypes.js
  3. 22 1
      src/store/actions.js

+ 11 - 6
src/App.vue

@@ -1,13 +1,13 @@
 <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?")
+        form-wizard(title='' subtitle='' finishButtonText='Finalizar' color='#7c7bad' nextButtonText='Continuar' backButtonText='Volver')
+            tab-content(title="Qué productos necesita?" :before-change="checkCart")
                 product-step
-            tab-content(title="Quién es el cliente?")
+            tab-content(title="Quién es el cliente?" :before-change="checkCustomer")
                 customer-step
             tab-content(title="Cómo quieres pagar?")
                 payment-method-step
-            tab-content(title="Qué monto vas a entregar?")
+            tab-content(title="Qué monto vas a entregar?" :before-change="checkAmountReceived")
                 payment-amount-step
 </template>
 
@@ -22,6 +22,8 @@
     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'
+
     export default {
         components: {
             FormWizard,
@@ -32,8 +34,11 @@
             PaymentAmountStep
         },
         methods: mapActions([
-            'initSale',
-            'createSale'
+            INIT_SALE,
+            CHECK_CART,
+            CHECK_CUSTOMER,
+            CHECK_AMOUNT_RECEIVED,
+            CREATE_SALE
         ]),
         mounted() {
             this.initSale()

+ 7 - 1
src/constants/actionTypes.js

@@ -4,6 +4,12 @@ const INIT_SALE = 'initSale'
 
 const EXPLODE_DATA = 'explodeData'
 
+const CHECK_CART = 'checkCart'
+
+const CHECK_CUSTOMER = 'checkCustomer'
+
+const CHECK_AMOUNT_RECEIVED = 'checkAmountReceived'
+
 const CREATE_SALE = 'createSale'
 
 const INIT_USER = 'initUser'
@@ -63,7 +69,7 @@ const DECREASE_FROM_CART = 'decreaseFromCart'
 const REMOVE_FROM_CART = 'removeFromCart'
 
 export {
-    NOTIFY, INIT_SALE, EXPLODE_DATA, CREATE_SALE, // Sale
+    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

+ 22 - 1
src/store/actions.js

@@ -1,6 +1,6 @@
 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, CREATE_SALE } from '@/constants/actionTypes'
+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'
 
 const actions = {
     /**
@@ -73,6 +73,27 @@ const actions = {
             console.log(error)
         })
     },
+    /**
+     * 
+     * @param {*} param0 
+     */
+    [CHECK_CART] ({ getters, dispatch }) {
+        return !!getters.cartItems.length || dispatch(NOTIFY, 'Necesitas agregar productos al carrito para continuar')
+    },
+    /**
+     * 
+     * @param {*} param0 
+     */
+    [CHECK_CUSTOMER] ({ getters, dispatch }) {
+        return !!getters.selectedCustomer || dispatch(NOTIFY, 'Necesitas seleccionar un cliente para continuar')
+    },
+    /**
+     * 
+     * @param {*} param0 
+     */
+    [CHECK_AMOUNT_RECEIVED] ({ getters, dispatch }) {
+        return (getters.paymentType === 'cash' && getters.initialPayment >= getters.cartTotal)  || dispatch(NOTIFY, 'El monto recibido no puede ser menor al monto a pagar')
+    },
     /**
      * 
      * @param {*} param0