This repository has been archived on 2021-11-24. You can view files and clone it, but cannot push or open issues or pull requests.
phone_app/app/controllers/public/p_orders_controller.rb
2021-08-23 10:26:02 +02:00

371 lines
8.3 KiB
Ruby

# -*- encoding : utf-8 -*-
class Public::POrdersController < ApplicationController
layout "public"
before_action :identify_cart_process
before_action :p_customer_validated, :except => [:cart, :ipn]
before_action :set_menu
# before_action :update_locales
# helper :'paiement_cic/form'
skip_before_action :verify_authenticity_token, only: [:ipn]
# before_action :get_colissimo_token, only: [:particulars, :particulars_save]
def set_menu
@boutique = true
end
def identify_cart_process
@for_order = true
end
def cart
@boutique_step = 1
#@current_p_customer_sheet.price_line_block.ct_creation_date = Time.now
@current_p_customer_sheet.save
@p_customer_sheet = @current_p_customer_sheet
# @p_customer_sheet.purge_cart
end
def chronopost_places
@cp = params[:cp]
end
def update_cart
@p_customer_sheet = @current_p_customer_sheet
if @p_customer_sheet.update_attributes(params.require(:p_customer_sheet).permit!)
respond_to do |format|
format.html { redirect_to cart_public_p_orders_path()}
format.js { render :layout => false }
end
else
render action: "cart"
end
end
def particulars
@boutique_step = 3
@p_customer_sheet = @current_p_customer_sheet
# @p_customer_sheet.purge_cart
if session[:p_id]
@p_customer_sheet.price_line_block.particular_send_id = session[:p_id]
@p_customer_sheet.price_line_block.particular_bill_id = session[:p_id]
session[:p_id] = nil
elsif !@p_customer_sheet.price_line_block.particular_send and pa = current_p_customer.particulars.first()
@p_customer_sheet.price_line_block.particular_send = pa
end
if current_p_customer.particulars.count == 0
redirect_to new_public_particular_path(:for_order => true)
end
end
def particulars_save
@boutique_step = 3
@p_customer_sheet = @current_p_customer_sheet
# @p_customer_sheet.purge_cart
# @p_customer_sheet.price_line_block.particulars_neededs = true
if @p_customer_sheet.update_attributes(params.require(:p_customer_sheet).permit!)
if @p_customer_sheet.price_line_block.valid?
redirect_to recap_public_p_orders_path()
end
else
render action: "particulars"
end
end
def recap
@p_customer_sheet = @current_p_customer_sheet
# @p_customer_sheet.purge_cart
# if @p_customer_sheet.price_line_block.p_vourcher and @p_customer_sheet.price_line_block.p_vourcher.used
# @p_customer_sheet.price_line_block.p_vourcher = nil
# @p_customer_sheet.save
# end
# if params[:code]
# if p_vourcher = PVourcher.where(:token => params[:code].strip.upcase).where("used is null or used = 0").first
# @p_customer_sheet.price_line_block.p_vourcher = p_vourcher
# @p_customer_sheet.save
# else
# @bon_error = true
# end
# end
@p_customer_sheet.p_payment_type_id = 1 if !@p_customer_sheet.p_payment_type
@boutique_step = 4
end
def recap_save
@boutique_step = 4
@p_customer_sheet = @current_p_customer_sheet
@p_customer_sheet.web_order = true
@p_customer_sheet.demande_type = "Demande de bon de commande"
@p_customer_sheet.state = 'brouillon'
# @p_customer_sheet.purge_cart
# if @p_customer_sheet.price_line_block.p_shipper and @p_customer_sheet.price_line_block.p_shipper.with_custom_date
# @p_customer_sheet.price_line_block.wish_date = @p_customer_sheet.price_line_block.ship_custom_date
# else
# @p_customer_sheet.price_line_block.wish_date = nil
# end
@p_customer_sheet.save
# @p_customer_sheet.validate_cgv = true
# @p_customer_sheet.validate_payment_type = true
if @p_customer_sheet.update_attributes(params.require(:p_customer_sheet).permit!)
#@p_customer_sheet.generate_bc
#@p_customer_sheet.generate_fa if @p_customer_sheet.acompte_percent?
#AdminMailer.notify_order().deliver
cookies[:current_p_customer_sheet_id] = nil
redirect_to thank_public_p_order_path(:id => @p_customer_sheet.id)
else
render :action => "recap"
end
end
def paid_by_cb
@boutique_step = 4
@p_customer_sheet = @current_p_customer_sheet
# @p_customer_sheet.purge_cart
@p_customer_sheet.token = rand(1000000) if !@p_customer_sheet.token?
@p_customer_sheet.save
end
def ipn
puts params
@p_customer_sheet = PCustomerSheet.find_by_token params[:reference].to_s[0..21]
if PaiementCic.verify_hmac(params)
code_retour = params['code-retour']
if code_retour == "Annulation"
@p_customer_sheet.update_attribute :ogone_status, "Paiement refusé par la banque."
elsif code_retour == "payetest"
@p_customer_sheet.update_attribute :ogone_status, "TEST accepté par la banque."
paid = true
elsif code_retour == "paiement"
@p_customer_sheet.update_attribute :ogone_status, "Paiement accepté par la banque."
paid = true
end
receipt = "0"
else
@p_customer_sheet.update_attribute :ogone_status, "Document Falsifie."
receipt = "1\n#{PaiementCic.mac_string}"
end
@p_customer_sheet.save
if paid
@p_customer_sheet.state = "Réglée"
@p_customer_sheet.customer_validation_at = Time.now
@p_customer_sheet.paid = true
@p_customer_sheet.paid_at = Time.now
@p_customer_sheet.save
@p_customer_sheet.archive_now
@p_customer_sheet.price_line_block.generate_vourchers
@recap = ApplicationController.renderer.render partial: "public/p_customer_sheets/mail_recap.html.haml", :locals => {:@p_customer_sheet => @p_customer_sheet}
mail_hist = MailHist.generate_mail(@p_customer_sheet.p_customer.locale, MailType.find_or_create("confirmation-commande"), @p_customer_sheet.p_customer.email, {:arguments => {:recap_commande => @recap, :recap_ba => @p_customer_sheet.ba_for_mails}, :p_customer_sheet => @p_customer_sheet, :p_customer => @p_customer_sheet.p_customer, :element => @p_customer_sheet})
if p_vourcher = @p_customer_sheet.price_line_block.p_vourcher
p_vourcher.used = true
p_vourcher.save
end
end
render :inline => "Pragma: no-cache\nContent-type: text/plain\n\nversion=2\ncdr=#{receipt}"
end
def paid_by_cb_confirm
@p_customer_sheet = @current_p_customer_sheet
if false
@p_customer_sheet.state = "Réglée"
@p_customer_sheet.customer_validation_at = Time.now
@p_customer_sheet.paid = true
@p_customer_sheet.paid_at = Time.now
@p_customer_sheet.save
#@recap = ApplicationController.renderer.render partial: "public/p_customer_sheets/mail_recap.html.haml", :locals => {:@p_customer_sheet => @p_customer_sheet}
#mail_hist = MailHist.generate_mail(@p_customer_sheet.p_customer.locale, MailType.find_or_create("confirmation-commande"), @p_customer_sheet.p_customer.email, {:arguments => {:recap_commande => @recap}, :p_customer_sheet => @p_customer_sheet, :p_customer => @p_customer_sheet.p_customer, :element => @p_customer_sheet})
end
cookies[:current_p_customer_sheet_id] = nil
redirect_to thank_public_p_order_path(:id => @p_customer_sheet.id)
end
def paid_by_cb_fail
redirect_to recap_public_p_orders_path(), :notice => "Votre paiement n'a pas été accepté, vous pouvez réessayer en cliquant de nouveau sur \"Payer ma commande\""
end
def thank
@p_customer_sheet = PCustomerSheet.find(params[:id])
end
def particulars_save
@boutique_step = 3
@p_customer_sheet = @current_p_customer_sheet
# @p_customer_sheet.purge_cart
# @p_customer_sheet.price_line_block.particulars_neededs = true
if @p_customer_sheet.update_attributes(params.require(:p_customer_sheet).permit!)
if @p_customer_sheet.price_line_block.valid?
redirect_to recap_public_p_orders_path()
end
else
render action: "particulars"
end
end
private
# def get_colissimo_token
# url = 'https://ws.colissimo.fr/widget-point-retrait/rest/authenticate.rest'
# headers = { "Content-Type": "application/json" }
# body = { "login": "877966", "password": "choco38" }
# response = HTTParty.post(url, body: body, headers: headers)
# @colissimo_token = JSON.parse(response.body)["token"]
# end
end