|
|
@@ -240,63 +240,117 @@ class CashRegistersMovesController < ApplicationController
|
|
|
|
|
|
def save_when_is_credit(credit)
|
|
|
abono = @cash_registers_move.quantity
|
|
|
- abono_this_credit = abono >= credit.rest ? credit.rest : abono
|
|
|
-
|
|
|
- # por si abonan dinero de mas, checar cuanto debe de ser de esta venta, y separarlo.
|
|
|
- # @cash_registers_move.quantity = abono_this_credit
|
|
|
- @credit_payment = CreditPayment.new
|
|
|
- @credit_payment.credit_id = credit.id
|
|
|
- @credit_payment.customer_id = credit.customer_id
|
|
|
- @credit_payment.pointsale_id = credit.pointsale_id
|
|
|
- @credit_payment.status = :active
|
|
|
- @credit_payment.date_payment = Date.today
|
|
|
- @credit_payment.user_id = current_user.id
|
|
|
- # @credit_payment.quantity = abono_this_credit
|
|
|
- @credit_payment.quantity = abono_this_credit
|
|
|
-
|
|
|
- if @credit_payment.save
|
|
|
- @cash_registers_move.credit_payment_id = @credit_payment.id
|
|
|
- @cash_registers_move.concept = :credit_payment
|
|
|
-
|
|
|
- if abono >= credit.rest # si se paga mas del adeudo de este credito
|
|
|
- abono -= credit.rest
|
|
|
-
|
|
|
- credit.update_attributes(rest: 0)
|
|
|
- @sale.update_attributes(status: :paid)
|
|
|
-
|
|
|
- # rubocop:disable Style/WhileUntilDo
|
|
|
- while abono > 0 do
|
|
|
- nextcredit = Credit.where("customer_id = #{credit.customer_id} and rest > 0").order("sale_id ASC")
|
|
|
- # rubocop:disable Metrics/BlockNesting
|
|
|
- if nextcredit.first.present?
|
|
|
- if abono <= nextcredit.first.rest
|
|
|
- next_credit_payment = CreditPayment.create(customer_id: credit.customer_id, credit_id: nextcredit.first.id, pointsale_id: credit.pointsale_id, quantity: abono, status: 0, date_payment: Date.today, user_id: current_user.id)
|
|
|
- # next_credit_abono = @cash_registers_move.dup
|
|
|
- # next_credit_abono.quantity = abono
|
|
|
- # next_credit_abono.credit_payment_id = next_credit_payment.id
|
|
|
- # next_credit_abono.save
|
|
|
- nextcredit.first.update_attributes(rest: nextcredit.first.rest - abono)
|
|
|
- sale = Sale.find_by_id(nextcredit.first.sale_id)
|
|
|
- sale.update_attributes(status: :parcial)
|
|
|
- abono -= nextcredit.first.rest
|
|
|
- else
|
|
|
- abono -= nextcredit.first.rest
|
|
|
- nextcredit.first.update_attributes(rest: 0)
|
|
|
- sale = Sale.find_by_id(nextcredit.sale_id)
|
|
|
- sale.update_attributes(status: :paid)
|
|
|
- end
|
|
|
- else
|
|
|
- abono = 0 # si ya no hay deuda
|
|
|
- end
|
|
|
- # rubocop:enable Metrics/BlockNesting
|
|
|
+ recibido = @cash_registers_move.received
|
|
|
+ change = recibido - abono
|
|
|
+ while abono > 0 do
|
|
|
+ credits_with_debt = Credit.where("customer_id = #{credit.customer_id} and rest > 0 and status = 0").order("sale_id ASC")
|
|
|
+ if credits_with_debt.first.present?
|
|
|
+ cash_registers_move_new = CashRegistersMove.new(cash_registers_move_params)
|
|
|
+ next_credit = credits_with_debt.first
|
|
|
+ @credit_payment = CreditPayment.new
|
|
|
+ @credit_payment.credit_id = next_credit.id
|
|
|
+ @credit_payment.customer_id = next_credit.customer_id
|
|
|
+ @credit_payment.pointsale_id = next_credit.pointsale_id
|
|
|
+ @credit_payment.status = :active
|
|
|
+ @credit_payment.date_payment = Date.today
|
|
|
+ @credit_payment.user_id = current_user.id
|
|
|
+ if abono < next_credit.rest #si se paga más del adeudo de este crédito
|
|
|
+ @credit_payment.quantity = abono
|
|
|
+ sale = Sale.find_by_id(next_credit.sale_id)
|
|
|
+ sale.update_attributes(:status => :parcial)
|
|
|
+ cash_registers_move_new.quantity = abono
|
|
|
+ cash_registers_move_new.received = abono + change
|
|
|
+ cash_registers_move_new.change = change
|
|
|
+ rest_aux = abono - next_credit.rest
|
|
|
+ next_credit.update_attributes(:rest => next_credit.rest - abono)
|
|
|
+ else
|
|
|
+ @credit_payment.quantity = next_credit.rest
|
|
|
+ sale = Sale.find_by_id(next_credit.sale_id)
|
|
|
+ sale.update_attributes(:status => :paid)
|
|
|
+ cash_registers_move_new.quantity = next_credit.rest
|
|
|
+ cash_registers_move_new.received = next_credit.rest
|
|
|
+ cash_registers_move_new.change = 0
|
|
|
+ rest_aux = abono - next_credit.rest
|
|
|
+ next_credit.update_attributes(:rest => 0)
|
|
|
+ end
|
|
|
+ if @credit_payment.save
|
|
|
+ cash_registers_move_new.open_cash_register_id = @sale.open_cash_register_id
|
|
|
+ cash_registers_move_new.credit_payment_id = @credit_payment.id
|
|
|
+ cash_registers_move_new.concept = :credit_payment
|
|
|
+ cash_registers_move_new.sale_id = next_credit.sale_id
|
|
|
+ cash_registers_move_new.open_cash_register_id = session[:open_cash_register_id]
|
|
|
+ cash_registers_move_new.move_type = :ingreso
|
|
|
+ cash_registers_move_new.save
|
|
|
end
|
|
|
- # rubocop:enable Style/WhileUntilDo
|
|
|
+ abono = rest_aux
|
|
|
else
|
|
|
- @cash_registers_move.quantity = abono
|
|
|
- abono = credit.rest - abono
|
|
|
- credit.update_attributes(rest: abono)
|
|
|
- @sale.update_attributes(status: :parcial)
|
|
|
+ abono = 0 #si ya no hay deuda
|
|
|
end
|
|
|
end
|
|
|
+ true
|
|
|
+ rescue
|
|
|
+ false
|
|
|
end
|
|
|
+
|
|
|
+ # def save_when_is_credit(credit)
|
|
|
+ # abono = @cash_registers_move.quantity
|
|
|
+ # abono_this_credit = abono >= credit.rest ? credit.rest : abono
|
|
|
+
|
|
|
+ # # por si abonan dinero de mas, checar cuanto debe de ser de esta venta, y separarlo.
|
|
|
+ # # @cash_registers_move.quantity = abono_this_credit
|
|
|
+ # @credit_payment = CreditPayment.new
|
|
|
+ # @credit_payment.credit_id = credit.id
|
|
|
+ # @credit_payment.customer_id = credit.customer_id
|
|
|
+ # @credit_payment.pointsale_id = credit.pointsale_id
|
|
|
+ # @credit_payment.status = :active
|
|
|
+ # @credit_payment.date_payment = Date.today
|
|
|
+ # @credit_payment.user_id = current_user.id
|
|
|
+ # # @credit_payment.quantity = abono_this_credit
|
|
|
+ # @credit_payment.quantity = abono_this_credit
|
|
|
+
|
|
|
+ # if @credit_payment.save
|
|
|
+ # @cash_registers_move.credit_payment_id = @credit_payment.id
|
|
|
+ # @cash_registers_move.concept = :credit_payment
|
|
|
+
|
|
|
+ # if abono >= credit.rest # si se paga mas del adeudo de este credito
|
|
|
+ # abono -= credit.rest
|
|
|
+
|
|
|
+ # credit.update_attributes(rest: 0)
|
|
|
+ # @sale.update_attributes(status: :paid)
|
|
|
+
|
|
|
+ # # rubocop:disable Style/WhileUntilDo
|
|
|
+ # while abono > 0 do
|
|
|
+ # nextcredit = Credit.where("customer_id = #{credit.customer_id} and rest > 0").order("sale_id ASC")
|
|
|
+ # # rubocop:disable Metrics/BlockNesting
|
|
|
+ # if nextcredit.first.present?
|
|
|
+ # if abono <= nextcredit.first.rest
|
|
|
+ # next_credit_payment = CreditPayment.create(customer_id: credit.customer_id, credit_id: nextcredit.first.id, pointsale_id: credit.pointsale_id, quantity: abono, status: 0, date_payment: Date.today, user_id: current_user.id)
|
|
|
+ # # next_credit_abono = @cash_registers_move.dup
|
|
|
+ # # next_credit_abono.quantity = abono
|
|
|
+ # # next_credit_abono.credit_payment_id = next_credit_payment.id
|
|
|
+ # # next_credit_abono.save
|
|
|
+ # nextcredit.first.update_attributes(rest: nextcredit.first.rest - abono)
|
|
|
+ # sale = Sale.find_by_id(nextcredit.first.sale_id)
|
|
|
+ # sale.update_attributes(status: :parcial)
|
|
|
+ # abono -= nextcredit.first.rest
|
|
|
+ # else
|
|
|
+ # abono -= nextcredit.first.rest
|
|
|
+ # nextcredit.first.update_attributes(rest: 0)
|
|
|
+ # sale = Sale.find_by_id(nextcredit.sale_id)
|
|
|
+ # sale.update_attributes(status: :paid)
|
|
|
+ # end
|
|
|
+ # else
|
|
|
+ # abono = 0 # si ya no hay deuda
|
|
|
+ # end
|
|
|
+ # # rubocop:enable Metrics/BlockNesting
|
|
|
+ # end
|
|
|
+ # # rubocop:enable Style/WhileUntilDo
|
|
|
+ # else
|
|
|
+ # @cash_registers_move.quantity = abono
|
|
|
+ # abono = credit.rest - abono
|
|
|
+ # credit.update_attributes(rest: abono)
|
|
|
+ # @sale.update_attributes(status: :parcial)
|
|
|
+ # end
|
|
|
+ # end
|
|
|
+ # end
|
|
|
end
|