Browse Source

[FIX] resource caller

Gogs 7 years ago
parent
commit
3b0b620fba

+ 8 - 9
controllers/main.py

@@ -189,7 +189,7 @@ class Purchases(http.Controller):
     '''
     @http.route('/eiru_purchases/new', auth='user', methods=['GET'], cors='*')
     def new_purchase(self, **kw):
-        self.make_info_log('sending json response')
+        self.make_info_log('Sending json response')
 
         return self.make_response({
             'date': self.get_server_date(),
@@ -205,24 +205,23 @@ class Purchases(http.Controller):
     '''
         Create supplier and return data
     '''
-    @http.route('/eiru_purchases/create_supplier', auth='user', methods=['POST'], cors='*')
+    @http.route('/eiru_purchases/create_supplier', type='json', auth='user', methods=['POST'], cors='*')
     def create_supplier(self, **kw):
-        self.make_info_log('creating supplier')
+        self.make_info_log('Creating supplier')
         print(kw)
 
     '''
         Create product and return data
     '''
-    @http.route('/eiru_purchases/create_product', auth='user', methods=['POST'], cors='*')
+    @http.route('/eiru_purchases/create_product', type='json', auth='user', methods=['POST'], cors='*')
     def create_product(self, **kw):
-        self.make_info_log('creating product')
+        self.make_info_log('Creating product')
         print(kw)
 
     '''
         Create purchase resource route
     ''' 
-    @http.route('/eiru_purchases/create', auth='user', methods=['POST'], cors='*')
+    @http.route('/eiru_purchases/create', type='json', auth='user', methods=['POST'], cors='*')
     def create_purchase(self, **kw):
-        pass
-
-    
+        self.make_info_log('Creating purchase')
+        print(kw)

+ 7 - 4
src/App.vue

@@ -1,9 +1,9 @@
 <template lang="pug">
     .purchases
-        form-wizard(title='' subtitle='' finishButtonText='Finalizar' color='#7c7bad' nextButtonText='Continuar' backButtonText='Volver')
-            tab-content(title='Cuál es su proveedor?')
+        form-wizard(title='' subtitle='' finishButtonText='Finalizar' color='#7c7bad' nextButtonText='Continuar' backButtonText='Volver' @on-complete='createPurchase')
+            tab-content(title='Cuál es su proveedor?' :before-change='checkSupplier')
                 supplier-step
-            tab-content(title='Qué productos comprarás?')
+            tab-content(title='Qué productos comprarás?' :before-change='checkCart')
                 products-step
             tab-content(title='Cómo quieres pagar?')
                 journal-step
@@ -31,7 +31,10 @@
             PaymentStep
         },
         methods: mapActions([
-            'initPurchase'
+            'initPurchase',
+            'checkSupplier',
+            'checkCart',
+            'createPurchase'
         ]),
         mounted() {
             this.initPurchase()

+ 1 - 1
src/components/payment/PaymentStep.vue

@@ -9,7 +9,7 @@
                     label.form-label Monto a pagar
                     input.form-input(:value='cartTotal' readonly)
                 .form-item
-                    label.form-label Total recibido
+                    label.form-label Total entregado
                     input.form-input(:value='amount' v-model='amount' autofocus)
                 hr
                 .form-item

+ 3 - 3
src/components/product/ProductForm.vue

@@ -5,13 +5,13 @@
         form.product-form
             .form-item
                 label.form-label Nombre
-                input.form-input
+                input.form-input(v-model='product.name' autofocus)
             .form-item
                 label.form-label Precio de Costo
-                input.form-input
+                input.form-input(v-model='product.price')
             .form-item
                 label.form-label Código de Barras
-                input.form-input
+                input.form-input(v-model='product.ean13')
             .form-actions
                 button.form-button(@click='submitProduct(product)') Aceptar
                 button.form-button(@click='submitProduct()') Cancelar

+ 1 - 1
src/components/product/ProductsStep.vue

@@ -2,7 +2,7 @@
     .purchase-step
         .products-selector
             searcher(:items='products' :keys="['name', 'displayName']" @onSearch='filterProducts')
-            card-grid(:items='visibleProducts' canAdd @onAdd='showProductForm' @onSelect='selectProduct')
+            card-grid(:items='visibleProducts' @onAdd='showProductForm' @onSelect='selectProduct')
             product-form
         cart
 </template>

+ 3 - 3
src/components/supplier/SupplierForm.vue

@@ -5,13 +5,13 @@
         form.supplier-form
             .form-item
                 label.form-label Nombre
-                input.form-input
+                input.form-input(v-model='supplier.name' autofocus)
             .form-item
                 label.form-label R.U.C/C.I.N
-                input.form-input
+                input.form-input(v-model='supplier.ruc')
             .form-item
                 label.form-label Teléfono
-                input.form-input
+                input.form-input(v-model='supplier.phone')
             .form-actions
                 button.form-button(@click='submitSupplier(supplier)') Aceptar
                 button.form-button(@click='submitSupplier()') Cancelar

+ 1 - 1
src/components/supplier/SupplierStep.vue

@@ -3,7 +3,7 @@
         .supplier-selection-step
             .supplier-selector
                 searcher(:items='suppliers' :keys="['name', 'displayName']" @onSearch='filterSuppliers')
-                card-grid(:items='visibleSuppliers' canAdd @onAdd='showSupplierForm' @onSelect='selectSupplier')
+                card-grid(:items='visibleSuppliers' @onAdd='showSupplierForm' @onSelect='selectSupplier')
                 supplier-form
             transition(name='slide-fade')
                 supplier-details(v-if='!!supplierSelected')

+ 67 - 5
src/store/actions.js

@@ -2,11 +2,13 @@ import axios from 'axios'
 
 const newUrl = '/eiru_purchases/new'
 
+const createSupplierUrl = '/eiru_purchases/create_supplier'
+const createProductUrl = '/eiru_purchases/create_product'
 const createUrl = '/eiru_purchases/create'
 
 const actions = {
     /**
-     * 
+     * Display notification with odoo style
      * @param {*} param0 
      * @param {*} payload 
      */
@@ -30,19 +32,79 @@ const actions = {
      * @param {*} param0 
      * @param {*} payload 
      */
-    explodeData({ commit, dispatch }, payload) {
+    explodeData({ commit }, payload) {
         Object.keys(payload).forEach(key => {
             commit(`set${key[0].toLocaleUpperCase()}${key.slice(1)}`, payload[key])
         })
     },
+    /**
+     * Send data to create a supplier
+     * @param {*} param0 
+     * @param {*} payload 
+     */
+    createSupplier({ commit }, payload) {
+        let data = {
+            jsonrpc: '2.0',
+            method: 'call',
+            params: {
+                payload
+            }
+        }
+
+        return axios.post(createSupplierUrl, data).then(response => {
+            console.log(response)
+        }).catch(error => {
+            console.log(error)
+        })
+    },
+    /**
+     * Check if a supplier is selected or notify
+     * @param {*} param0 
+     */
+    checkSupplier({ getters, dispatch }) {
+        return !!getters.supplierSelected || dispatch('notify', 'Necesitas seleccionar un proveedor para continuar')
+    },
+    /**
+     * Send data to create a product
+     * @param {*} param0 
+     * @param {*} payload 
+     */
+    createProduct({ commit }, payload) {
+        let data = {
+            jsonrpc: '2.0',
+            method: 'call',
+            params: {
+                payload
+            }
+        }
+
+        return axios.post(createProductUrl, data).then(response => {
+            console.log(response)
+        }).catch(error => {
+            console.log(error)
+        })
+    },
+    /**
+     * Check if exist product in cart or notify
+     * @param {*} param0 
+     */
+    checkCart({ getters, dispatch }) {
+        return !!getters.cartItems.length || dispatch('notify', 'Necesitas agregar productos al carrito para continuar')
+    },
     /**
      * Send data to create concrete purchase
      * @param {*} param0 
      */
-    createPurchase({ commit, dispatch }) {
-        return axios.post(createUrl, {
+    createPurchase({ getters, dispatch }) {
+        let data = {
+            jsonrpc: '2.0',
+            method: 'call',
+            params: {
+                supplier: getters.supplierSelected.id
+            }
+        }
 
-        }).then(response => {
+        return axios.post(createUrl, data).then(response => {
             dispatch('resetPurchase')
         }).catch(error => {
             console.log(error)

+ 3 - 1
src/store/modules/product.js

@@ -142,12 +142,14 @@ const actions = {
      * @param {*} param0 
      * @param {*} payload 
      */
-    submitProduct({ commit, dispatch }, payload) {
+    submitProduct({ dispatch }, payload) {
         if (payload) {
             if (!payload.name || !payload.price) {
                 dispatch('notify', 'Complete los campos para guardar')
                 return
             }
+
+            dispatch('createProduct', payload)
         }
 
         dispatch('hideProductForm')

+ 2 - 2
src/store/modules/supplier.js

@@ -122,14 +122,14 @@ const actions = {
      * 
      * @param {*} param0 
      */
-    submitSupplier({ commit, dispatch }, payload) {
+    submitSupplier({ dispatch }, payload) {
         if (payload) {
             if (!payload.name || !payload.ruc || !payload.phone) {
                 dispatch('notify', 'Complete los campos para guardar')
                 return
             }
 
-            // TODO: Send data to server
+            dispatch('createSupplier', payload)
         }
 
         dispatch('hideSupplierForm')