Pārlūkot izejas kodu

[ADD] warehouse selector

robert 6 gadi atpakaļ
vecāks
revīzija
f4798d3769

+ 6 - 7
__openerp__.py

@@ -5,17 +5,16 @@
     'category': 'Uncategorized',
     'version': '0.1',
     'depends': [
-        'account',
         'base',
+        'sale',
+        'account',
         'currency_utility',
-        'eiru_bank_payments_references',
         'eiru_product_extra_price',
-        'multi_store',
-        # 'multi_store_stock',
-        # 'multi_store_partner',
-        'sale',
         'eiru_sidebar_toggler',
-        'eiru_topbar_toggler'
+        'eiru_topbar_toggler',
+        'eiru_bank_payments_references',
+        'multi_store',
+        'multi_store_stock'
     ],
     'data': [
         'templates.xml',

+ 9 - 6
controllers/main.py

@@ -42,10 +42,13 @@ class PosSales(http.Controller):
         from res_store import get_stores
         from sale_order import get_sale_orders
         from stock_picking import get_pickings
+        from stock_warehouse import get_warehouses
 
         # Logic 
         check_base_currency()
         config = get_pos_config()
+        image_type = config.get('imageType')
+
         mode = kw.get('mode', 'unknown')
         data = {}
 
@@ -57,13 +60,13 @@ class PosSales(http.Controller):
                 'user': get_current_user(),
                 'currencies': get_currencies_from_journals(),
                 'journals': get_journals(),
-                'customers': get_customers(image_type=config.get('imageType')),
-                'products': get_products(image_type=config.get('imageType')),
+                'customers': get_customers(image_type=image_type),
+                'products': get_products(image_type=image_type),
                 'paymentTerms': get_payment_terms(),
                 'banks': get_banks(),
                 'bankPaymentTypes': get_bank_payment_types(),
                 'chequeTypes': get_cheque_types(),
-                'stores': get_stores()    
+                'warehouses': get_warehouses()
             }
 
         # Take data for picking
@@ -73,8 +76,8 @@ class PosSales(http.Controller):
                 'date': get_datetime(),
                 'user': get_current_user(),
                 'currencies': get_currencies_from_journals(),
-                'customers': get_customers(image_type=config.get('imageType')),
-                'products': get_products(image_type=config.get('imageType'))
+                'customers': get_customers(image_type=image_type),
+                'products': get_products(image_type=image_type)
             }
 
         # Take data for payment
@@ -82,7 +85,7 @@ class PosSales(http.Controller):
             data = {
                 'saleOrders': get_sale_orders(),
                 'currencies': get_currencies_from_journals(),
-                'customers': get_customers(image_type=config.get('imageType')),
+                'customers': get_customers(image_type=image_type),
                 'journals': get_journals(),
                 'paymentTerms': get_payment_terms(),
                 'banks': get_banks(),

+ 15 - 0
controllers/stock_warehouse.py

@@ -0,0 +1,15 @@
+# -*- coding: utf-8 -*-
+from openerp.http import request
+
+_MODEL = 'stock.warehouse'
+
+'''
+    Get stock warehouses
+'''
+def get_warehouses():
+    return [
+        {
+            'id': w.id,
+            'name': w.display_name
+        } for w in request.env.user.store_id.warehouse_ids
+    ]

+ 5 - 1
src/components/common/StoreSelector.vue

@@ -18,11 +18,15 @@
             items: {
                 type: Array,
                 default: []
+            },
+            selected: {
+                type: Object,
+                default: null
             }
         },
         method: {
             onSelect(storeId) {
-                console.log(storeId)
+                this.$emit('onSelect', storeId)
             }
         }
     }

+ 5 - 1
src/components/steps/Product.vue

@@ -9,7 +9,9 @@
             )
             .products-grid
                 store-selector(
-                    :items='stores'
+                    :items='warehouses'
+                    :selected='selectedWarehouse'
+                    @onSelect='selectWarehouse'
                 )
                 card-grid(
                     @onAdd='showProductForm'
@@ -66,6 +68,8 @@
                 'products',
                 'visibleProducts',
                 'stores',
+                'warehouses',
+                'showWarehouseSelector',
                 'loadingProducts',
                 'showingProductForm',
                 'cartItems',

+ 16 - 0
src/store/modules/warehouse.js

@@ -13,6 +13,9 @@ const getters = {
     },
     selectedWarehouse(state) {
         return state.selectedWarehouse
+    },
+    showWarehouseSelector(state) {
+        return state.warehouses.length > 1
     }
 }
 
@@ -29,17 +32,30 @@ const mutations = {
         }
 
         state.selectedWarehouse = state.warehouses.find(w => w.id == warehouseId)
+    },
+    setSelectedWarehouseAuto(state) {
+        state.selectedWarehouse = null
+
+        if (state.warehouses.length == 0) {
+            return
+        }
+
+        state.selectedWarehouse = state.warehouses[0]
     }
 }
 
 const actions = {
     initWarehouses({ commit }, warehouses) {
         commit('setWarehouses', warehouses)
+        commit('setSelectedWarehouseAuto')
         commit('setLoadingWarehouses')
     },
     selectWarehouse({ commit }, warehouseId) {
         commit('setSelectedWarehouse', warehouseId)
     },
+    autoSelectWarehouse({ commit }) {
+        commit('setSelectedWarehouseAuto')
+    },
     resetWarehouse({ commit }) {
         commit('setLoadingWarehouses')
         commit('setWarehouses', [])