PaymentsStore.js 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. import axios from 'axios'
  2. import {
  3. INIT_PAYMENTS_URL,
  4. PAYMENTS_PROCESS_URL
  5. } from '@/constants/resourcePaths'
  6. const state = {
  7. processingPayments: false,
  8. completedPayments: false
  9. }
  10. const getters = {
  11. /**
  12. * [processingPayments description]
  13. */
  14. processingPayments (state) {
  15. return state.processingPayments
  16. },
  17. /**
  18. * [completedPayments description]
  19. */
  20. completedPayments (state) {
  21. return state.completedPayments
  22. }
  23. }
  24. const mutations = {
  25. /**
  26. * [processingPayments description]
  27. */
  28. setProcessingPayments(state, payload) {
  29. state.processingPayments = payload
  30. },
  31. /**
  32. * [completedPayments description]
  33. * @type {[type]}
  34. */
  35. setCompletedPayments(state, payload) {
  36. state.completedPayments = payload
  37. }
  38. }
  39. const actions = {
  40. /**
  41. * [PAYMENTS_NOTIFY]
  42. */
  43. paymentsNotify ({ commit },payload) {
  44. openerp.web.notification.do_warn('Atencion', payload)
  45. return false
  46. },
  47. /**
  48. * [INIT_PAYMENTS]
  49. */
  50. initPayments ({ dispatch }) {
  51. return axios.get(INIT_PAYMENTS_URL).then(response => {
  52. dispatch('completedPayments', false)
  53. dispatch('explodeData', response.data)
  54. }).catch(error => {
  55. console.log(error);
  56. })
  57. },
  58. /**
  59. * [EXPLODE_DATA]
  60. */
  61. explodeData ({ dispatch }, payload) {
  62. for (let value in payload) {
  63. dispatch(`initPayments${value[0].toUpperCase()}${value.slice(1)}`,payload[value])
  64. }
  65. },
  66. /**
  67. * [CHECK_CUSTOMER]
  68. */
  69. checkCustomer ({ getters, dispatch }) {
  70. return !!getters.selectedCustomer ||dispatch('paymentsNotify','Necesitas seleccionar un cliente para continuar.')
  71. },
  72. /**
  73. * [checkInvoice]
  74. */
  75. checkInvoice ({ getters, dispatch }) {
  76. return !!getters.selectedInvoice ||dispatch('paymentsNotify', 'Necesitas seleccionar una factura para continuar.')
  77. },
  78. /**
  79. * [checkMove]
  80. */
  81. checkMove({ getters, dispatch }) {
  82. return !!getters.movesPayments.length || dispatch('paymentsNotify','Necesitas seleccionar al menos una cuota para continuar.')
  83. },
  84. /**
  85. * [checkPayments]
  86. */
  87. checkPayments ({ getters, dispatch }) {
  88. if (!getters.selectedJournal || getters.selectedJournal.length <= 0) {
  89. return dispatch('paymentsNotify', 'Necesitas seleccionar un método de pago')
  90. }
  91. if (getters.paidTotal <= 0){
  92. return dispatch('paymentsNotify', 'Necesitas ingresar un monto a pagar')
  93. }
  94. let bank = !!getters.selectedJournal && getters.selectedJournal.type ==='bank' && !!getters.bank.length && !!getters.bankType.length
  95. if (bank) {
  96. if (!getters.selectedPaymentsBank || getters.selectedPaymentsBank.length <= 0) {
  97. return dispatch('paymentsNotify', 'Necesitas seleccionar un banco')
  98. }
  99. if (!getters.selectedPaymentsBankType || getters.selectedPaymentsBankType.length <= 0) {
  100. return dispatch('paymentsNotify', 'Necesitas seleccionar el tipo de transacción bancaria')
  101. }
  102. if (!getters.paymentsBankRef){
  103. return dispatch('paymentsNotify', 'Necesitas ingresar el Nº cheque / boleta')
  104. }
  105. if (!getters.paymentsBankDateMaturity){
  106. return dispatch('paymentsNotify', 'Necesitas ingresar una fecha de vencimiento')
  107. }
  108. }
  109. return true
  110. },
  111. /**
  112. * [PAYMENTS_PROCESS]
  113. */
  114. paymentsProcess ({ getters, commit, dispatch }, payload ) {
  115. commit('setProcessingPayments', true)
  116. let bank = !!getters.selectedJournal && getters.selectedJournal.type ==='bank' && !!getters.bank.length && !!getters.bankType.length
  117. const data = {
  118. jsonrpc: '2.0',
  119. method: 'call',
  120. params: {
  121. invoiceId: getters.selectedInvoice.id,
  122. journalId: getters.selectedJournal.id,
  123. customerId: getters.selectedCustomer.id,
  124. amountPayments: getters.paidTotal <= getters.paymentCurrencyTotal ? getters.paidTotal : getters.paymentCurrencyTotal,
  125. journalType: getters.selectedJournal.type,
  126. bankId: !!bank ? getters.selectedPaymentsBank.id : '',
  127. bankTypeId: !!bank ? getters.selectedPaymentsBankType.id : '',
  128. bankRef: !!bank ? getters.paymentsBankRef : '',
  129. bankAmount: !!bank ? getters.paymentsBankAmount : 0,
  130. bankDateMaturity: !!bank ? getters.paymentsBankDateMaturity : '',
  131. paymentsBankNumber_cta: !!bank ? getters.paymentsBankNumberCta : '',
  132. paymentsBankName_holder: !!bank ? getters.paymentsBankNameHolder : '',
  133. moveLines: getters.movesPayments.map(item => {
  134. return item.id
  135. })
  136. }
  137. }
  138. return axios.post(PAYMENTS_PROCESS_URL, data).then(response => {
  139. commit('setProcessingPayments', !response.data.result)
  140. dispatch('completedPayments', response.data.result)
  141. }).catch(error => {
  142. console.log(error);
  143. commit('setProcessingPayments', false)
  144. })
  145. },
  146. /**
  147. * [COMPLETED_PAYMENTS]
  148. */
  149. completedPayments({ commit }, payload) {
  150. commit('setCompletedPayments', !!payload)
  151. },
  152. /**
  153. * [RESET_PAYMENT_CUSTOMER]
  154. */
  155. resetPaymentCustomer({ rootState, commit, dispatch }){
  156. for (let key in rootState) {
  157. if (!(rootState[key] instanceof Object)){
  158. continue
  159. }
  160. dispatch(`reset${key[0].toUpperCase()}${key.slice(1)}`)
  161. }
  162. dispatch('initPayments')
  163. },
  164. /**
  165. * [prev description]
  166. */
  167. setChangeTabStepsSales({ commit, dispatch, getters }, payload) {
  168. if (payload.prev === 0 && payload.next === -1) {
  169. dispatch('resetPaymentCustomer')
  170. }
  171. // Reset STEPS 3-4
  172. if (payload.prev >= 2 && payload.next <= 1){
  173. dispatch('removeMovePaymentsAll')
  174. }
  175. }
  176. }
  177. export default {
  178. state,
  179. getters,
  180. mutations,
  181. actions
  182. }