products.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. const state = {
  2. products: [],
  3. selectedProduct: null
  4. }
  5. const getters = {
  6. getProducts (state) {
  7. return state.products
  8. },
  9. getSelectedProduct(state) {
  10. return state.selectedProduct
  11. },
  12. getVariants(state) {
  13. return !!state.selectedProduct ? state.selectedProduct.variants : []
  14. }
  15. }
  16. const mutations = {
  17. pushProducts(state, payload) {
  18. state.products = [...payload.products]
  19. },
  20. setSelectedProduct(state, payload) {
  21. if (!payload.product) {
  22. return
  23. }
  24. state.selectedProduct = payload.product
  25. },
  26. applyFilter(state, payload) {
  27. if (!payload.constraint) {
  28. return
  29. }
  30. }
  31. }
  32. const actions = {
  33. fetchProducts ({ commit }) {
  34. let pos = new openerp.web.Model('eiru.pos')
  35. pos.call('get_products').then(response => {
  36. commit('pushProducts', {
  37. products: response
  38. })
  39. }).fail(error => {
  40. console.log(error)
  41. })
  42. },
  43. selectProduct({ commit, dispatch }, payload) {
  44. if (payload.item.variant_count > 1) {
  45. commit('setSelectedProduct', {
  46. product: payload.item
  47. })
  48. } else {
  49. dispatch('addToCart', {
  50. product: payload.item.variants[0]
  51. })
  52. }
  53. },
  54. selectVariant({ commit, dispatch }, payload) {
  55. commit('setSelectedProduct', {
  56. product: null
  57. })
  58. dispatch('addToCart', {
  59. product: payload.data
  60. })
  61. }
  62. }
  63. export default {
  64. state,
  65. getters,
  66. mutations,
  67. actions
  68. }