123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181 |
- import axios from 'axios'
- import { Modes, States } from '../constants/app'
- import * as Urls from '../constants/resourcePaths'
- const state = {
- currentMode: Modes.PURCHASE,
- currentState: States.NONE,
- footerButtonsVisibility: false,
- completed: false,
- loading: true
- }
- 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
- },
- isPurchase() {
- return state.currentMode === 'purchase'
- },
- isExpense() {
- return state.currentMode === 'expense'
- },
- isPurchasePicking() {
- return state.currentMode === 'product_picking'
- },
- isPurchasePayment() {
- return state.currentMode === 'payment'
- },
- isPurchaseTaking() {
- return state.currentMode === 'product_taking'
- },
- isCompleted(state) {
- return state.completed
- },
- isLoading() {
- return state.loading
- }
- }
- const mutations = {
- setMode(state, payload) {
- state.currentMode = payload
- },
- setState(state, payload) {
- state.currentState = payload
- },
- toggleFooterButtonsVisibility(state) {
- state.footerButtonsVisibility = !state.footerButtonsVisibility
- },
- setCompleted(state, completed) {
- state.completed = completed
- },
- setLoading(state, loading) {
- state.loading = loading
- }
- }
- const actions = {
- initPurchase({ getters, commit, dispatch }, payload) {
- commit('setMode', payload || getters.mode)
- commit('setLoading', true)
- commit('setCompleted', false)
-
- return axios.get(Urls.INIT_PURCHASE_URL, {
- params: {
- mode: getters.mode
- }
- }).then(response => {
- commit('setLoading', false)
- commit('toggleFooterButtonsVisibility')
-
- dispatch('explodeData', response.data)
- }).catch(error => console.log(error))
- },
- explodeData({ dispatch }, payload) {
- for (let key in payload) {
- dispatch(`init${key[0].toUpperCase()}${key.slice(1)}`, payload[key])
- }
- },
- createObject({ _ }, 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))
- },
- checkSupplier({ getters, dispatch}) {
- return !!getters.selectedSupplier || dispatch('notify', 'Necesitas seleccionar un proveedor para continuar')
- },
- checkCart({ getters, dispatch}) {
- for (let cartItem of getters.cartItems) {
- if (cartItem.price == 0) {
- return dispatch('notify', 'No puede haber items sin precio definido en el carrito')
- }
- }
- return !!getters.cartItems.length || dispatch('notify', 'Necesitar agregar producto al carrito para continuar')
- },
- 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')
- }
- },
- createPurchase({ getters, commit, dispatch }) {
- commit('setLoading', true)
- 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,
- supplierInvoiceNumber: getters.supplierInvoiceNumber || null
- }
- }
- return axios.post(Urls.PROCESS_PURCHASE_URL, data).then(_ => {
- dispatch('resetPurchase')
- commit('setLoading', false)
- commit('setCompleted', true)
- }).catch(error => {
- console.log(error)
- })
- },
- resetPurchase({ rootState, dispatch }) {
- for (let key in rootState) {
- if (!(rootState[key] instanceof Object)) {
- continue
- }
- dispatch(`reset${key[0].toUpperCase()}${key.slice(1)}`)
- }
- dispatch('initPurchase')
- },
- notify({ _ }, payload) {
- openerp.web.notification.do_warn('Atención', payload)
- return false
- }
- }
- export default {
- state,
- getters,
- mutations,
- actions
- }
|