123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200 |
- import axios from 'axios'
- import { Modes, States } from '../constants/app'
- import * as Urls from '../constants/resourcePaths'
- const state = {
- currentMode: Modes.PURCHASE,
- currentState: States.NONE,
- }
- const getters = {
- /**
- *
- */
- mode() {
- return state.currentMode
- },
- /**
- *
- */
- isProcessing() {
- return state.currentState === States.PROCESSING
- },
- /**
- *
- */
- isDone() {
- return state.currentState === States.DONE
- },
- /**
- *
- */
- hasError() {
- return state.currentState === States.ERROR
- },
- /**
- *
- */
- state() {
- return state.currentState
- }
- }
- const mutations = {
- /**
- *
- * @param {*} state
- * @param {*} payload
- */
- setMode(state, payload) {
- state.currentMode = payload
- },
- /**
- *
- * @param {*} state
- * @param {*} payload
- */
- setState(state, payload) {
- state.currentState = payload
- }
- }
- const actions = {
- /**
- *
- * @param {*} param0
- * @param {*} payload
- */
- initPurchase({ getters, commit, dispatch }, payload) {
- commit('setMode', payload || getters.mode)
- const timeStarted = Date.now()
- return axios.get(Urls.INIT_PURCHASE_URL).then(response => {
- commit('setState', States.NONE)
- dispatch('explodeData', response.data)
- const timeElapsed = Date.now() - timeStarted
- dispatch('notify', 'Datos cargados en ' + (timeElapsed / 1000) + ' segundos')
- }).catch(error => console.log(error))
- },
- /**
- *
- * @param {*} param0
- * @param {*} payload
- */
- explodeData({ dispatch }, payload) {
- for (let key in payload) {
- dispatch(`init${key[0].toUpperCase()}${key.slice(1)}`, payload[key])
- }
- },
- /**
- *
- * @param {*} param0
- * @param {*} payload
- */
- createObject({ dispatch }, payload) {
- const data = {
- jsonrpc: '2.0',
- method: 'call',
- params: {
- type: payload.type,
- data: payload.data
- }
- }
- return axios.post(Urls.CREATE_OBJECT_URL, data).then(response => {
- console.log(response)
- }).catch(error => console.log(error))
- },
- /**
- *
- * @param {*} param0
- */
- checkSupplier({ getters, dispatch}) {
- return !!getters.selectedSupplier || dispatch('notify', 'Necesitas seleccionar un proveedor para continuar')
- },
- /**
- *
- * @param {*} param0
- */
- checkCart({ getters, dispatch}) {
- return !!getters.cartItems.length || dispatch('notify', 'Necesitar agregar producto al carrito para continuar')
- },
- /**
- *
- * @param {*} param0
- */
- checkAmountReceived({ getters, dispatch }) {
- if (getters.paymentType == 'cash') {
- return getters.initialPayment >= getters.cartTotal || dispatch('notify', 'El monto recibido no puede ser menor al monto a pagar')
- } else {
- return getters.initialPayment < getters.cartTotal || dispatch('notify', 'El monto recibido no puede ser igual o mayor al monto a pagar')
- }
- },
- /**
- *
- * @param {*} param0
- */
- createPurchase({ getters, commit, dispatch }) {
- commit('setState', States.PROCESSING)
- const data = {
- jsonrpc: '2.0',
- method: 'call',
- params: {
- mode: getters.mode,
- items: getters.cartItems.map(item => {
- return {
- id: item.id,
- name: item.name,
- quantity: item.quantity,
- price: item.price
- }
- }),
- supplierId: getters.selectedSupplier.id,
- paymentTermId: getters.selectedPaymentTerm.id,
- journalId: getters.selectedJournal.id,
- payment: getters.initialPayment > getters.cartTotal ? getters.cartTotal : getters.initialPayment
- }
- }
- return axios.post(Urls.PROCESS_PURCHASE_URL, data).then(response => {
- commit('setState', States.DONE)
- dispatch('resetPurchase')
- }).catch(error => {
- commit('setState', States.ERROR)
- })
- },
- /**
- *
- * @param {*} param0
- */
- resetPurchase({ rootState, dispatch }) {
- for (let key in rootState) {
- if (!(rootState[key] instanceof Object)) {
- continue
- }
- dispatch(`reset${key[0].toUpperCase()}${key.slice(1)}`)
- }
- dispatch('initPurchase')
- },
- /**
- *
- * @param {*} param0
- * @param {*} payload
- */
- notify({ commit }, payload) {
- openerp.web.notification.do_warn('Atención', payload)
- return false
- },
- }
- export default {
- state,
- getters,
- mutations,
- actions
- }
|