Forráskód Böngészése

[FIX] sale order done

robert 5 éve
szülő
commit
4623eecf04

+ 13 - 1
controllers/main.py

@@ -227,7 +227,10 @@ class PosSales(http.Controller):
             sale_order_id, currency_id = finish_budget_pos(journal_id, customer_id, cart_items, date_now, payment_term_id, warehouse_id, customer_pricelist_id, user_id)
 
             # Imports
-            from sale_order import confirm_sale_order
+            from sale_order import (
+                confirm_sale_order,
+                done_sale_order
+            )
             from account_invoice import (
                 create_invoice, 
                 create_invoice_move_lines,
@@ -263,6 +266,10 @@ class PosSales(http.Controller):
             account_voucher = create_account_voucher(account_move.id, journal_id, currency_id, payment)
             self.make_info_log('[OK] Creating account voucher')
 
+            # Done sale order
+            done_sale_order(sale_order_id)
+            self.make_info_log('[OK] Done sale order')
+
             # Close invoice
             close_invoice(invoice.id)
             self.make_info_log('[OK] Closing invoice')
@@ -302,6 +309,7 @@ class PosSales(http.Controller):
         '''
         def finish_payment(sale_order_id, currency_id, date_now, payment_term_id, user_id, payment, payment_method, bank_payment_data):
             # Imports
+            from sale_order import done_sale_order
             from account_invoice import (
                 create_invoice,
                 create_invoice_move_lines,
@@ -339,6 +347,10 @@ class PosSales(http.Controller):
             account_voucher = create_account_voucher(account_move.id, journal_id, currency_id, payment)
             self.make_info_log('[OK] Creating account voucher')
 
+            # Done sale order
+            done_sale_order(sale_order_id)
+            self.make_info_log('[OK] Done sale order')
+
             # Close invoice
             close_invoice(invoice.id)
             self.make_info_log('[OK] Closing invoice')

+ 6 - 0
controllers/sale_order.py

@@ -126,6 +126,12 @@ def confirm_sale_order(sale_order_id):
 
     return sale_order.action_button_confirm()
 
+def done_sale_order(sale_order_id):
+    sale_order = request.env['sale.order'].browse(sale_order_id)
+    sale_order.write({
+        'state': 'done'
+    })
+
 '''
 '''
 def force_assign_picking(sale_order_id):

+ 2 - 1
src/components/steps/Payment.vue

@@ -73,7 +73,7 @@
                     format='DD/MM/YYYY'
                     :clearable='false'
                     :editable='false'
-                    :not-before='firstPaymentDate'
+                    :not-before='firstPaymentAfterDate'
                 )
             //- input para el vuelto del pago en caso de pago en efectivo
             div(v-show="paymentType === 'cash'")
@@ -161,6 +161,7 @@
                 'amountResidual',
                 'paymentLines',
                 'firstPaymentDate',
+                'firstPaymentAfterDate',
                 'canChangeFirstPaymentDate',
                 'cartItems',
                 'paymentType',

+ 1 - 1
src/store/modules/currency.js

@@ -13,7 +13,7 @@ const getters = {
             return []
         }
 
-        if (settings && !settings.allowCurrencyExchange) {
+        if (settings && !settings.allowExchange) {
             return []
         }
 

+ 20 - 6
src/store/modules/payment.js

@@ -9,6 +9,7 @@ const state = {
     initialPayment: 0,
     amountResidual: 0,
     paymentLines: [],
+    firstPaymentAfterDate: null,
     firstPaymentDate: new Date(),
     bankPaymentData: null,
 }
@@ -35,14 +36,14 @@ const getters = {
     amountToPay(state) {
         return state.amountToPay
     },
-    amountToPayInOtherCurrencies(state, { settings, currencies, user, selectedCurrency, cartTotal }) {
+    amountToPayInOtherCurrencies(state, { settings, currencies, selectedUser, selectedCurrency, cartTotal }) {
         let values = []
 
-        if (!user || !selectedCurrency || cartTotal === 0) {
+        if (!selectedUser || !selectedCurrency || cartTotal === 0) {
             return values
         }
 
-        const base = currencies.find(c => c.id === user.company.currencyId)
+        const base = currencies.find(c => c.id === selectedUser.company.currencyId)
 
         for(let currency of settings.currencies) {
             if (currency.id === selectedCurrency.id) {
@@ -71,6 +72,9 @@ const getters = {
     firstPaymentDate(state) {
         return state.firstPaymentDate
     },
+    firstPaymentAfterDate(state) {
+        return state.firstPaymentAfterDate
+    },
     canChangeFirstPaymentDate(state, getters) {
         const changeDate = getters.settings.changeDate
         const paymentType = state.paymentType
@@ -199,6 +203,10 @@ const mutations = {
     },
     setFirstPaymentDate(state, paymentDate) {
         state.firstPaymentDate = moment(paymentDate).toDate()
+
+        if (!state.firstPaymentAfterDate && state.paymentLines.length > 1) {
+            state.firstPaymentAfterDate = state.firstPaymentDate
+        }
     },
     setBankPaymentData(state, bankPaymentData) {
         state.bankPaymentData = bankPaymentData
@@ -246,14 +254,18 @@ const actions = {
         if (getters.paymentType === 'credit') {
             dispatch('computePaymentLines')
         }
+
     },
     changeFirstPaymentDate({ commit, dispatch, getters }, paymentDate) {
-        commit('setFirstPaymentDate', paymentDate)
-
         if (!getters.paymentTerm) {
             return
         }
-        
+
+        let paymentTermLine = getters.paymentTerm.lines[0]
+        let days = paymentTermLine.days + paymentTermLine.days2
+        let result = moment(paymentDate).subtract(days, 'days')
+
+        commit('setFirstPaymentDate', result.toString())
         dispatch('computePaymentLines')
     },
     changeBankPaymentData({ commit, dispatch }, bankPaymentData) {
@@ -268,6 +280,8 @@ const actions = {
             date: getters.firstPaymentDate,
             total: getters.amountToPay
         })
+
+        commit('setFirstPaymentDate', getters.paymentLines[0].date)
     },
     resetPayment({ getters, commit }) {
         if (getters.isWired) {