products.js 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  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. state.selectedProduct = payload.product
  22. }
  23. }
  24. const actions = {
  25. fetchProducts ({ commit }) {
  26. let pos = new openerp.web.Model('eiru.pos')
  27. pos.call('get_products').then(response => {
  28. commit('pushProducts', {
  29. products: response
  30. })
  31. }).fail(error => {
  32. console.log(error)
  33. })
  34. },
  35. selectProduct({ commit, dispatch }, payload) {
  36. if (payload.data.variant_count > 1) {
  37. commit('setSelectedProduct', {
  38. product: payload.data
  39. })
  40. } else {
  41. dispatch('addToCart', {
  42. product: payload.data.variants[0]
  43. })
  44. }
  45. },
  46. selectVariant({ commit, dispatch }, payload) {
  47. commit('setSelectedProduct', {
  48. product: null
  49. })
  50. dispatch('addToCart', {
  51. product: payload.data
  52. })
  53. }
  54. }
  55. export default {
  56. state,
  57. getters,
  58. mutations,
  59. actions
  60. }