products.js 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  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. applyFilter(state, payload) {
  24. if (!payload.constraint) {
  25. return
  26. }
  27. }
  28. }
  29. const actions = {
  30. fetchProducts ({ commit, dispatch }) {
  31. return new Promise((resolve, reject) => {
  32. let pos = new openerp.web.Model('eiru.pos')
  33. pos.call('get_products').then(response => {
  34. commit('pushProducts', {
  35. products: response
  36. })
  37. dispatch('loaded', {
  38. module: 'products'
  39. })
  40. resolve()
  41. }).fail(error => {
  42. console.log(error)
  43. reject(error)
  44. })
  45. })
  46. },
  47. selectProduct({ commit, dispatch }, payload) {
  48. if (payload.item.variant_count > 1) {
  49. commit('setSelectedProduct', {
  50. product: payload.item
  51. })
  52. } else {
  53. dispatch('addToCart', {
  54. product: payload.item.variants[0]
  55. })
  56. }
  57. },
  58. selectVariant({ commit, dispatch }, payload) {
  59. console.log(payload)
  60. commit('setSelectedProduct', {
  61. product: null
  62. })
  63. dispatch('addToCart', {
  64. product: payload.data
  65. })
  66. }
  67. }
  68. export default {
  69. state,
  70. getters,
  71. mutations,
  72. actions
  73. }