suite
This commit is contained in:
parent
07c5cddb75
commit
0d5aeb443e
@ -29,12 +29,23 @@ class Admin::MOdrFilesController < ApplicationController
|
||||
@m_odr_file = MOdrFile.find(params[:id])
|
||||
|
||||
end
|
||||
|
||||
|
||||
def download
|
||||
@m_odr_file = MOdrFile.find(params[:id])
|
||||
|
||||
if @m_odr_file.file
|
||||
send_file @m_odr_file.file.path, :disposition => (params[:disposition] || :inline)
|
||||
end
|
||||
end
|
||||
|
||||
def create
|
||||
@m_odr_file = MOdrFile.new(params.require(:m_odr_file).permit!)
|
||||
|
||||
if @m_odr_file.save
|
||||
|
||||
@m_odr_file.m_odr_rep.change_state("En cours de traitement")
|
||||
|
||||
else
|
||||
render action: "new"
|
||||
|
||||
@ -48,11 +59,16 @@ class Admin::MOdrFilesController < ApplicationController
|
||||
|
||||
|
||||
if @m_odr_file.update_attributes(params.require(:m_odr_file).permit!)
|
||||
|
||||
@m_odr_file.m_odr_rep.change_state("En cours de traitement")
|
||||
|
||||
else
|
||||
render action: "edit"
|
||||
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
end
|
||||
|
||||
|
112
app/controllers/admin/m_odr_remises_controller.rb
Normal file
112
app/controllers/admin/m_odr_remises_controller.rb
Normal file
@ -0,0 +1,112 @@
|
||||
# -*- encoding : utf-8 -*-
|
||||
|
||||
class Admin::MOdrRemisesController < ApplicationController
|
||||
layout "admin"
|
||||
before_action :auth_admin
|
||||
|
||||
before_action :admin_space
|
||||
|
||||
def admin_space
|
||||
@admin_space = "payments"
|
||||
end
|
||||
|
||||
def confirm
|
||||
|
||||
@m_odr_remise = MOdrRemise.find(params[:id])
|
||||
@m_odr_remise.m_odr_virements.each do |m_odr_virement|
|
||||
m_odr_virement.sended = true
|
||||
m_odr_virement.m_odr_rep.change_state("Virement envoyé")
|
||||
m_odr_virement.save
|
||||
|
||||
end
|
||||
@m_odr_remise.confirmed = true
|
||||
@m_odr_remise.save
|
||||
|
||||
redirect_to [:admin, @m_odr_remise]
|
||||
|
||||
end
|
||||
|
||||
|
||||
def generate_all
|
||||
|
||||
|
||||
redirect_to admin_m_odr_remises_path
|
||||
|
||||
|
||||
@m_odr_virements = MOdrVirement.where(:enabled => true, :m_odr_remise_id => nil)
|
||||
|
||||
@m_odr_virements.group(:m_odr_id).each do |m_odr|
|
||||
@m_odr_remise = MOdrRemise.new(:m_odr_id => m_odr.m_odr_id)
|
||||
m_odr_virements = @m_odr_virements.where(:m_odr_id => m_odr.m_odr_id)
|
||||
@m_odr_remise.m_odr_virements << m_odr_virements
|
||||
|
||||
@m_odr_remise.save
|
||||
|
||||
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
|
||||
def index
|
||||
@m_odr_remises = MOdrRemise.includes(:m_odr)
|
||||
|
||||
@m_odr_remises = sort_by_sorting(@m_odr_remises, "created_at DESC")
|
||||
|
||||
params[:search][:per_page] = params[:search][:per_page] || 50
|
||||
per_page = params[:search][:per_page]
|
||||
page = (params[:page] and params[:page] != "") ? params[:page] : 1
|
||||
@m_odr_remises = @m_odr_remises.page(page).per(per_page)
|
||||
|
||||
|
||||
end
|
||||
|
||||
def show
|
||||
@m_odr_remise = MOdrRemise.find(params[:id])
|
||||
|
||||
end
|
||||
|
||||
def new
|
||||
@m_odr_remise = MOdrRemise.new
|
||||
|
||||
end
|
||||
|
||||
def edit
|
||||
@m_odr_remise = MOdrRemise.find(params[:id])
|
||||
|
||||
end
|
||||
|
||||
def create
|
||||
@m_odr_remise = MOdrRemise.new(params.require(:m_odr_remise).permit!)
|
||||
|
||||
if @m_odr_remise.save
|
||||
|
||||
else
|
||||
render action: "new"
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
|
||||
def update
|
||||
@m_odr_remise = MOdrRemise.find(params[:id])
|
||||
|
||||
|
||||
if @m_odr_remise.update_attributes(params.require(:m_odr_remise).permit!)
|
||||
|
||||
else
|
||||
render action: "edit"
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
|
||||
def destroy
|
||||
@m_odr_remise = MOdrRemise.find(params[:id])
|
||||
@m_odr_remise.destroy
|
||||
|
||||
end
|
||||
end
|
@ -34,7 +34,7 @@ class Admin::MOdrRepRibsController < ApplicationController
|
||||
@m_odr_rep_rib = MOdrRepRib.new(params.require(:m_odr_rep_rib).permit!)
|
||||
|
||||
if @m_odr_rep_rib.save
|
||||
|
||||
@m_odr_rep_rib.m_odr_rep.change_state("En cours de traitement")
|
||||
else
|
||||
render action: "new"
|
||||
|
||||
@ -48,7 +48,7 @@ class Admin::MOdrRepRibsController < ApplicationController
|
||||
|
||||
|
||||
if @m_odr_rep_rib.update_attributes(params.require(:m_odr_rep_rib).permit!)
|
||||
|
||||
@m_odr_rep_rib.m_odr_rep.change_state("En cours de traitement")
|
||||
else
|
||||
render action: "edit"
|
||||
|
||||
|
@ -7,17 +7,40 @@ class Admin::MOdrRepsController < ApplicationController
|
||||
before_action :admin_space
|
||||
|
||||
def admin_space
|
||||
@admin_space = "default"
|
||||
@admin_space = "stocks"
|
||||
end
|
||||
|
||||
def index
|
||||
@m_odr_reps = MOdrRep.order(:name).all
|
||||
@m_odr_reps = MOdrRep.includes(:particulars)
|
||||
|
||||
|
||||
|
||||
|
||||
if params[:search][:state].to_s != ""
|
||||
@m_odr_reps = @m_odr_reps.where(:state => params[:search][:state])
|
||||
end
|
||||
|
||||
if params[:search][:m_odr_id].to_s != ""
|
||||
@m_odr_reps = @m_odr_reps.where(:m_odr_id => params[:search][:m_odr_id])
|
||||
end
|
||||
|
||||
#puts @m_odr_reps.klass
|
||||
@m_odr_reps = sort_by_sorting(@m_odr_reps, "created_at DESC")
|
||||
|
||||
|
||||
params[:search][:per_page] = params[:search][:per_page] || 50
|
||||
per_page = params[:search][:per_page]
|
||||
page = (params[:page] and params[:page] != "") ? params[:page] : 1
|
||||
@m_odr_reps = @m_odr_reps.page(page).per(per_page)
|
||||
|
||||
|
||||
end
|
||||
|
||||
def show
|
||||
@m_odr_rep = MOdrRep.find(params[:id])
|
||||
|
||||
@m_odr = @m_odr_rep.m_odr
|
||||
|
||||
|
||||
end
|
||||
|
||||
def new
|
||||
@ -62,4 +85,18 @@ class Admin::MOdrRepsController < ApplicationController
|
||||
@m_odr_rep.destroy
|
||||
|
||||
end
|
||||
|
||||
|
||||
def generate_virement
|
||||
@m_odr_rep = MOdrRep.find(params[:id])
|
||||
|
||||
@m_odr_rep.m_odr_virements.create
|
||||
@m_odr_rep.change_state("Virement demandé")
|
||||
|
||||
redirect_back(fallback_location:"/")
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
end
|
||||
|
99
app/controllers/admin/m_odr_virements_controller.rb
Normal file
99
app/controllers/admin/m_odr_virements_controller.rb
Normal file
@ -0,0 +1,99 @@
|
||||
# -*- encoding : utf-8 -*-
|
||||
|
||||
class Admin::MOdrVirementsController < ApplicationController
|
||||
layout "admin"
|
||||
before_action :auth_admin
|
||||
|
||||
before_action :admin_space
|
||||
|
||||
def admin_space
|
||||
@admin_space = "payments"
|
||||
end
|
||||
|
||||
def index
|
||||
@m_odr_virements = MOdrVirement.includes(:m_odr_rep)
|
||||
|
||||
|
||||
if params[:search][:m_odr_id].to_s != ""
|
||||
@m_odr_virements = @m_odr_virements.where(:m_odr_id => params[:search][:m_odr_id])
|
||||
end
|
||||
|
||||
|
||||
@m_odr_virements = sort_by_sorting(@m_odr_virements, "created_at DESC")
|
||||
|
||||
params[:search][:per_page] = params[:search][:per_page] || 50
|
||||
per_page = params[:search][:per_page]
|
||||
page = (params[:page] and params[:page] != "") ? params[:page] : 1
|
||||
@m_odr_virements = @m_odr_virements.page(page).per(per_page)
|
||||
|
||||
end
|
||||
|
||||
def show
|
||||
@m_odr_virement = MOdrVirement.find(params[:id])
|
||||
|
||||
end
|
||||
|
||||
def new
|
||||
@m_odr_virement = MOdrVirement.new
|
||||
|
||||
end
|
||||
|
||||
def edit
|
||||
@m_odr_virement = MOdrVirement.find(params[:id])
|
||||
|
||||
end
|
||||
|
||||
def create
|
||||
@m_odr_virement = MOdrVirement.new(params.require(:m_odr_virement).permit!)
|
||||
|
||||
if @m_odr_virement.save
|
||||
|
||||
else
|
||||
render action: "new"
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
|
||||
def update
|
||||
@m_odr_virement = MOdrVirement.find(params[:id])
|
||||
|
||||
|
||||
if @m_odr_virement.update_attributes(params.require(:m_odr_virement).permit!)
|
||||
|
||||
else
|
||||
render action: "edit"
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
|
||||
def destroy
|
||||
@m_odr_virement = MOdrVirement.find(params[:id])
|
||||
@m_odr_virement.destroy
|
||||
|
||||
end
|
||||
|
||||
def admin_valid
|
||||
@m_odr_virement = MOdrVirement.find(params[:id])
|
||||
@m_odr_virement.enabled = true
|
||||
@m_odr_virement.save
|
||||
|
||||
@m_odr_remise = @m_odr_virement.m_odr_remise if @m_odr_virement.m_odr_remise
|
||||
|
||||
|
||||
end
|
||||
|
||||
def refuse
|
||||
@m_odr_virement = MOdrVirement.find(params[:id])
|
||||
@m_odr_virement.refused = true
|
||||
@m_odr_virement.save
|
||||
@m_odr_virement.m_odr_rep.change_state("Erreur sur virement")
|
||||
@m_odr_remise = @m_odr_virement.m_odr_remise if @m_odr_virement.m_odr_remise
|
||||
|
||||
end
|
||||
|
||||
|
||||
end
|
@ -7,7 +7,7 @@ class Admin::MOdrsController < ApplicationController
|
||||
before_action :admin_space
|
||||
|
||||
def admin_space
|
||||
@admin_space = "default"
|
||||
@admin_space = "stocks"
|
||||
end
|
||||
|
||||
def index
|
||||
|
74
app/controllers/admin/mail_hists_controller.rb
Normal file
74
app/controllers/admin/mail_hists_controller.rb
Normal file
@ -0,0 +1,74 @@
|
||||
# -*- encoding : utf-8 -*-
|
||||
|
||||
class Admin::MailHistsController < ApplicationController
|
||||
layout "admin"
|
||||
before_action :auth_admin
|
||||
|
||||
before_action :admin_space
|
||||
|
||||
def admin_space
|
||||
@admin_space = "stocks"
|
||||
end
|
||||
|
||||
def index
|
||||
@mail_hists = MailHist.all
|
||||
|
||||
@mail_hists = sort_by_sorting(@mail_hists, "created_at DESC")
|
||||
|
||||
|
||||
params[:search][:per_page] = params[:search][:per_page] || 50
|
||||
per_page = params[:search][:per_page]
|
||||
page = (params[:page] and params[:page] != "") ? params[:page] : 1
|
||||
@mail_hists = @mail_hists.page(page).per(per_page)
|
||||
|
||||
|
||||
end
|
||||
|
||||
def show
|
||||
@mail_hist = MailHist.find(params[:id])
|
||||
|
||||
end
|
||||
|
||||
def new
|
||||
@mail_hist = MailHist.new
|
||||
|
||||
end
|
||||
|
||||
def edit
|
||||
@mail_hist = MailHist.find(params[:id])
|
||||
|
||||
end
|
||||
|
||||
def create
|
||||
@mail_hist = MailHist.new(params.require(:mail_hist).permit!)
|
||||
|
||||
if @mail_hist.save
|
||||
|
||||
else
|
||||
render action: "new"
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
|
||||
def update
|
||||
@mail_hist = MailHist.find(params[:id])
|
||||
|
||||
|
||||
if @mail_hist.update_attributes(params.require(:mail_hist).permit!)
|
||||
|
||||
else
|
||||
render action: "edit"
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
|
||||
def destroy
|
||||
@mail_hist = MailHist.find(params[:id])
|
||||
@mail_hist.destroy
|
||||
|
||||
end
|
||||
end
|
@ -3,9 +3,37 @@ class ApplicationController < ActionController::Base
|
||||
# For APIs, you may want to use :null_session instead.
|
||||
protect_from_forgery with: :exception
|
||||
|
||||
|
||||
|
||||
|
||||
before_action :set_locale
|
||||
|
||||
|
||||
|
||||
before_action :popups
|
||||
|
||||
before_action :debug_translation
|
||||
|
||||
before_action :get_sorting
|
||||
|
||||
def get_sorting( column_default=nil, direction_default="desc")
|
||||
|
||||
|
||||
|
||||
sorting_direction = %w[asc desc].include?(params[:direction]) ? params[:direction] : direction_default
|
||||
sorting_column = params[:column] ? params[:column] : column_default
|
||||
|
||||
if sorting_direction and sorting_column
|
||||
@sorting = [sorting_column, sorting_direction]
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
before_action :set_qi_order
|
||||
|
||||
def set_qi_order
|
||||
params[:search] = params[:search] || {}
|
||||
|
||||
session[:qi_sort_string] = session[:qi_sort_string] || {}
|
||||
|
||||
if params[:qi_sort_string].to_s != "" and params[:qi_sort_string][:class]
|
||||
@ -51,30 +79,9 @@ class ApplicationController < ActionController::Base
|
||||
|
||||
|
||||
end
|
||||
|
||||
|
||||
before_action :set_locale
|
||||
|
||||
|
||||
|
||||
before_action :popups
|
||||
|
||||
before_action :debug_translation
|
||||
|
||||
before_action :get_sorting
|
||||
|
||||
def get_sorting
|
||||
|
||||
sorting_direction = %w[asc desc].include?(params[:direction]) ? params[:direction] : "asc"
|
||||
sorting_column = params[:column] ? params[:column] : nil
|
||||
|
||||
if sorting_direction and sorting_column
|
||||
@sorting = [sorting_column, sorting_direction]
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
def sort_by_sorting(var)
|
||||
def sort_by_sorting(var, default=nil)
|
||||
if @sorting
|
||||
klass = var.klass.to_s
|
||||
|
||||
@ -96,9 +103,12 @@ class ApplicationController < ActionController::Base
|
||||
|
||||
end
|
||||
|
||||
|
||||
elsif default
|
||||
var = var.order(default)
|
||||
end
|
||||
|
||||
|
||||
|
||||
return var
|
||||
|
||||
|
||||
@ -107,6 +117,7 @@ class ApplicationController < ActionController::Base
|
||||
|
||||
|
||||
|
||||
|
||||
def debug_translation
|
||||
if params[:debug_translation]
|
||||
if current_admin
|
||||
|
@ -19,11 +19,7 @@ class Public::MOdrRepsController < ApplicationController
|
||||
@m_odr = @m_odr_rep.m_odr
|
||||
|
||||
if @m_odr_rep.save
|
||||
if mail_type = @m_odr.mail_types.where(:slug => "confirmation-inscription").first
|
||||
|
||||
mail = GeneralMails.general(:fr, mail_type, @m_odr_rep.particulars.first.email, {:arguments => {:numero_avoir => ""}, :m_odr => @m_odr})
|
||||
mail.deliver
|
||||
end
|
||||
@m_odr_rep.send_mail_type("confirmation-inscription")
|
||||
|
||||
|
||||
redirect_to thank_public_m_odr_rep_path(@m_odr_rep)
|
||||
|
@ -21,5 +21,34 @@ module TranslationHelper
|
||||
raw t.value
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
def state_helper(value)
|
||||
value = value.to_s
|
||||
if ["brouillon","Reçue"].include?(value)
|
||||
r = '<span class="badge badge-pill badge-warning">'+value+'</span>'
|
||||
elsif ["Virement envoyé", "Validé"].include?(value)
|
||||
r = '<span class="badge badge-success">'+value+'</span>'
|
||||
elsif value == "commande"
|
||||
r = '<span class="badge badge-success">Commande</span>'
|
||||
elsif value == "livraison-en-cours"
|
||||
r = '<span class="badge badge-success" style="background:#036516;">Livr. en cours</span>'
|
||||
elsif ["Virement demandé"].include?(value)
|
||||
r = '<span class="badge badge-info">'+value+'</span>'
|
||||
elsif value =="facturée"
|
||||
r = '<span class="badge badge-primary">Facturée</span>'
|
||||
elsif value == "annulée"
|
||||
r = '<span class="badge badge-dark">Annulée</span>'
|
||||
elsif ["Erreur sur virement", "Refusé"].include?(value)
|
||||
r = '<span class="badge badge-danger">'+value+'</span>'
|
||||
elsif ["En cours de traitement"].include?(value)
|
||||
r = '<span class="badge badge-danger" style="background:#865F7C;">'+value+'</span>'
|
||||
|
||||
else
|
||||
r = '<span class="badge badge-danger" style="background:rgba(0,0,0,0.8);">'+value+'</span>'
|
||||
end
|
||||
|
||||
return raw(r)
|
||||
end
|
||||
|
||||
end
|
||||
|
@ -58,5 +58,35 @@ class GeneralMails < ActionMailer::Base
|
||||
|
||||
|
||||
|
||||
def general2(email_to, subject, body, mail_options = {})
|
||||
@options = mail_options
|
||||
|
||||
@m_odr = @options[:m_odr]
|
||||
|
||||
@to = email_to
|
||||
|
||||
@body = body
|
||||
|
||||
|
||||
@subject = subject
|
||||
|
||||
|
||||
@ccis = @options[:ccis] || []
|
||||
|
||||
if @options[:from]
|
||||
@from = @options[:from]
|
||||
elsif @m_odr and @m_odr.email_from?
|
||||
@from = @m_odr.email_from
|
||||
end
|
||||
|
||||
if @from
|
||||
mail(:to => @to, :subject => @subject, :bcc => @ccis.join(";"), :from => @from)
|
||||
else
|
||||
mail(:to => @to, :subject => @subject, :bcc => @ccis.join(";"))
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
|
||||
|
||||
end
|
||||
|
@ -7,9 +7,15 @@ class ApplicationRecord < ActiveRecord::Base
|
||||
#START QI_DYNAMICS_CORE
|
||||
|
||||
QI_DYNAMICS.each do |s|
|
||||
define_method("#{s}") {
|
||||
return eval("!self.ac_#{s} ? self.ca_#{s} : self.ac_#{s}")
|
||||
}
|
||||
if true
|
||||
define_method("#{s}") {
|
||||
return eval("!self.ac_#{s} ? self.ca_#{s} : self.ac_#{s}")
|
||||
}
|
||||
|
||||
else
|
||||
puts "QI DYNAMICS : pas de méthode pour ca_#{s}"
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
def qi_dynamics_cache
|
||||
@ -25,7 +31,11 @@ class ApplicationRecord < ActiveRecord::Base
|
||||
|
||||
|
||||
QI_DYNAMICS.each do |s|
|
||||
eval("self.cc_#{s} = self.#{s}")
|
||||
|
||||
if true
|
||||
|
||||
eval("self.cc_#{s} = self.#{s}")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -44,4 +44,7 @@ class MOdr < ApplicationRecord
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
end
|
||||
|
66
app/models/m_odr_remise.rb
Normal file
66
app/models/m_odr_remise.rb
Normal file
@ -0,0 +1,66 @@
|
||||
class MOdrRemise < ApplicationRecord
|
||||
belongs_to :m_odr
|
||||
|
||||
|
||||
|
||||
|
||||
QI_DYNAMICS = %w(iban_from bic_from bank_name bank_subject)
|
||||
|
||||
eval(QI_DYNAMICS_CORE)
|
||||
|
||||
has_many :m_odr_virements, :dependent => :nullify
|
||||
|
||||
def self.qi_table_order
|
||||
{
|
||||
:m_odr_name => "ODR",
|
||||
:created_at => {:name => "Date", :reorder => true},
|
||||
:state => {:name => "Etat", :reorder => true},
|
||||
:confirmed => {:name => "Confirmé ?", :reorder => true},
|
||||
:nbr_virements => "Nbr virements",
|
||||
:actions => "Actions",
|
||||
|
||||
}
|
||||
|
||||
end
|
||||
|
||||
def self.valid_sort
|
||||
r = []
|
||||
self.qi_table_order.each do |key, value|
|
||||
if value.instance_of? Hash
|
||||
if value[:reorder] and value[:reorder] == true
|
||||
r << key.to_s if value[:reorder]
|
||||
end
|
||||
end
|
||||
end
|
||||
return r
|
||||
|
||||
|
||||
end
|
||||
|
||||
def m_odr_name
|
||||
self.m_odr.name if self.m_odr
|
||||
end
|
||||
|
||||
|
||||
|
||||
def nbr_virements
|
||||
self.m_odr_virements.count
|
||||
end
|
||||
|
||||
def ca_iban_from
|
||||
self.m_odr.iban if self.m_odr
|
||||
end
|
||||
|
||||
def ca_bic_from
|
||||
self.m_odr.bic if self.m_odr
|
||||
end
|
||||
|
||||
def ca_bank_name
|
||||
self.m_odr.bank_name if self.m_odr
|
||||
end
|
||||
|
||||
def ca_bank_subject
|
||||
self.m_odr.bank_subject if self.m_odr
|
||||
end
|
||||
|
||||
end
|
@ -5,7 +5,9 @@ class MOdrRep < ApplicationRecord
|
||||
has_many :particulars, :dependent => :destroy
|
||||
accepts_nested_attributes_for :particulars, :allow_destroy => true
|
||||
|
||||
has_many :mail_hists
|
||||
|
||||
has_many :m_odr_virements
|
||||
|
||||
has_many :m_odr_rep_ribs, :dependent => :destroy
|
||||
accepts_nested_attributes_for :m_odr_rep_ribs, :allow_destroy => true
|
||||
@ -14,6 +16,8 @@ class MOdrRep < ApplicationRecord
|
||||
|
||||
belongs_to :m_odr_place
|
||||
|
||||
belongs_to :particular
|
||||
|
||||
has_many :m_odr_files, :dependent => :destroy
|
||||
accepts_nested_attributes_for :m_odr_files, :allow_destroy => true
|
||||
|
||||
@ -26,9 +30,51 @@ class MOdrRep < ApplicationRecord
|
||||
belongs_to :m_odr_tracker
|
||||
|
||||
|
||||
attr_accessor :t
|
||||
def send_mail_type(slug, element = nil)
|
||||
|
||||
if self.m_odr and mail_type = self.m_odr.mail_types.where(:slug => slug).first and self.particulars.first and self.particulars.first.email?
|
||||
mail_hist = MailHist.generate_mail(:fr, mail_type, self.particulars.first.email, {:arguments => {:nom_odr => self.m_odr.name}, :m_odr => self.m_odr, :m_odr_rep => self})
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
QI_DYNAMICS = %w(admin_ok_to_send rib_admin_ok
|
||||
file_admin_ok remise particular_civilite particular_name particular_firstname particular_address_2 particular_address_3 particular_cp particular_city particular_country particular_email particular_tel product_name product_brand tracker_name place_name)
|
||||
|
||||
eval(QI_DYNAMICS_CORE)
|
||||
|
||||
|
||||
|
||||
def ca_rib_admin_ok
|
||||
if self.m_odr_rep_ribs.where(:admin_ok => true).count > 0
|
||||
true
|
||||
else
|
||||
false
|
||||
end
|
||||
end
|
||||
|
||||
def ca_file_admin_ok
|
||||
if self.m_odr_files.where(:admin_ok => true).count > 0
|
||||
true
|
||||
else
|
||||
false
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
||||
def change_state(state)
|
||||
self.state = state
|
||||
self.save
|
||||
end
|
||||
|
||||
before_validation do
|
||||
self.particular = self.particulars.first
|
||||
|
||||
if !self.state
|
||||
self.state = "Reçue"
|
||||
end
|
||||
|
||||
if self.t.to_s != ""
|
||||
self.m_odr_tracker = MOdrTracker.where(:token => self.t).first
|
||||
end
|
||||
@ -38,6 +84,66 @@ class MOdrRep < ApplicationRecord
|
||||
|
||||
|
||||
|
||||
def ca_particular_civilite
|
||||
self.particular.civilite if self.particular
|
||||
end
|
||||
|
||||
def ca_particular_name
|
||||
self.particular.name if self.particular
|
||||
end
|
||||
def ca_particular_firstname
|
||||
self.particular.firstname if self.particular
|
||||
end
|
||||
def ca_particular_address_2
|
||||
self.particular.address_2 if self.particular
|
||||
end
|
||||
def ca_particular_address_3
|
||||
self.particular.address_3 if self.particular
|
||||
end
|
||||
def ca_particular_cp
|
||||
self.particular.cp if self.particular
|
||||
end
|
||||
def ca_particular_city
|
||||
self.particular.city if self.particular
|
||||
end
|
||||
def ca_particular_country
|
||||
self.particular.country if self.particular
|
||||
end
|
||||
def ca_particular_email
|
||||
self.particular.email if self.particular
|
||||
end
|
||||
|
||||
def ca_particular_tel
|
||||
self.particular.tel if self.particular
|
||||
end
|
||||
|
||||
def ca_product_name
|
||||
self.m_odr_product.name if self.m_odr_product
|
||||
end
|
||||
|
||||
def ca_product_brand
|
||||
self.m_odr_product.m_odr_brand.name if self.m_odr_product and self.m_odr_product.m_odr_brand
|
||||
end
|
||||
|
||||
def ca_tracker_name
|
||||
self.m_odr_tracker.name if self.m_odr_tracker
|
||||
end
|
||||
|
||||
def ca_place_name
|
||||
self.m_odr_place.name if self.m_odr_place
|
||||
end
|
||||
|
||||
|
||||
attr_accessor :t
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
before_create { generate_token() }
|
||||
|
||||
def generate_token()
|
||||
@ -46,4 +152,93 @@ class MOdrRep < ApplicationRecord
|
||||
end while MOdrRep.exists?(:token => self[:token])
|
||||
end
|
||||
|
||||
|
||||
|
||||
def self.qi_table_order
|
||||
{
|
||||
:m_odr => "ODR",
|
||||
:created_at => {:name => "Date", :reorder => true},
|
||||
:state => {:name => "Etat", :reorder => true},
|
||||
:cc_rib_admin_ok => {:name => "Rib valide ?", :reorder => true},
|
||||
:cc_file_admin_ok => {:name => "Fichiers valides ?", :reorder => true},
|
||||
:cc_admin_ok_to_send => {:name => "Virement à envoyer ?", :reorder => true},
|
||||
:cc_particular_civilite => {:name => "Civ.", :reorder => true},
|
||||
:cc_particular_name => {:name => "Nom", :reorder => true},
|
||||
:cc_particular_firstname => {:name => "Prénom", :reorder => true},
|
||||
:cc_particular_address_2 => {:name => "Adresse", :reorder => true},
|
||||
:cc_particular_address_3 => {:name => "Adresse (2)", :reorder => true},
|
||||
:cc_particular_cp => {:name => "Code postal", :reorder => true},
|
||||
:cc_particular_city => {:name => "Ville", :reorder => true},
|
||||
:cc_particular_country => {:name => "Pays", :reorder => true},
|
||||
:cc_particular_email => {:name => "Email", :reorder => true},
|
||||
:cc_particular_tel => {:name => "Tel", :reorder => true},
|
||||
|
||||
:cc_particular_tel => {:name => "Tel", :reorder => true},
|
||||
:cc_particular_tel => {:name => "Tel", :reorder => true},
|
||||
|
||||
|
||||
:cc_product_brand => {:name => "Marque", :reorder => true},
|
||||
:cc_product_name => {:name => "Produit", :reorder => true},
|
||||
:qte => {:name => "Quantité", :reorder => true},
|
||||
:cc_remise => {:name => "Remise", :reorder => true},
|
||||
|
||||
:cc_place_name => {:name => "Revendeur", :reorder => true},
|
||||
|
||||
|
||||
|
||||
|
||||
:cc_tracker_name => {:name => "Trackeur", :reorder => true},
|
||||
|
||||
|
||||
|
||||
:actions => "Actions",
|
||||
|
||||
#:created_at => {:name => "Date", :reorder => true},
|
||||
|
||||
|
||||
}
|
||||
#, :sort_name => "code"
|
||||
end
|
||||
|
||||
def ca_admin_ok_to_send
|
||||
if self.rib_admin_ok and self.file_admin_ok
|
||||
true
|
||||
else
|
||||
false
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
def ca_remise
|
||||
if self.qte and self.m_odr_product
|
||||
|
||||
if self.m_odr_product and remise = self.m_odr_product.m_odr_product_remises.where(:qte => self.qte).first
|
||||
remise.amount
|
||||
else
|
||||
nil
|
||||
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
def long_name
|
||||
self.particular.long_name if self.particular
|
||||
end
|
||||
|
||||
def self.valid_sort
|
||||
r = []
|
||||
self.qi_table_order.each do |key, value|
|
||||
if value.instance_of? Hash
|
||||
if value[:reorder] and value[:reorder] == true
|
||||
r << key.to_s if value[:reorder]
|
||||
end
|
||||
end
|
||||
end
|
||||
return r
|
||||
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
105
app/models/m_odr_virement.rb
Normal file
105
app/models/m_odr_virement.rb
Normal file
@ -0,0 +1,105 @@
|
||||
class MOdrVirement < ApplicationRecord
|
||||
belongs_to :m_odr
|
||||
belongs_to :m_odr_rep
|
||||
belongs_to :m_odr_rep_rib
|
||||
|
||||
belongs_to :m_odr_remise
|
||||
|
||||
|
||||
|
||||
QI_DYNAMICS = %w(remise iban_to bic_to iban_from bic_from bank_name bank_subject libelle )
|
||||
|
||||
eval(QI_DYNAMICS_CORE)
|
||||
|
||||
|
||||
def self.qi_table_order
|
||||
{
|
||||
|
||||
:created_at => {:name => "Date", :reorder => true},
|
||||
|
||||
|
||||
|
||||
:amount => {:name => "Montant", :reorder => true},
|
||||
:cc_iban_to => {:name => "Iban destinataire", :reorder => true},
|
||||
:cc_bic_to => {:name => "Bic destinataire", :reorder => true},
|
||||
:cc_iban_from => {:name => "Iban expéditeur", :reorder => true},
|
||||
:cc_bic_from => {:name => "Bic expéditeur", :reorder => true},
|
||||
|
||||
|
||||
|
||||
|
||||
:enabled => {:name => "Vérifié ?", :reorder => true},
|
||||
|
||||
:sended => {:name => "Envoyé ?", :reorder => true},
|
||||
|
||||
:refused => {:name => "Refusé ?", :reorder => true},
|
||||
|
||||
|
||||
:actions => "Actions",
|
||||
|
||||
#:created_at => {:name => "Date", :reorder => true},
|
||||
|
||||
|
||||
}
|
||||
#, :sort_name => "code"
|
||||
end
|
||||
|
||||
def ca_remise
|
||||
self.m_odr_rep.remise if self.m_odr_rep
|
||||
end
|
||||
|
||||
def ca_iban_to
|
||||
self.m_odr_rep_rib.iban if self.m_odr_rep_rib
|
||||
end
|
||||
|
||||
def ca_bic_to
|
||||
self.m_odr_rep_rib.bic if self.m_odr_rep_rib
|
||||
end
|
||||
|
||||
def ca_iban_from
|
||||
self.m_odr_remise.iban_from if self.m_odr_remise
|
||||
end
|
||||
|
||||
def ca_bic_from
|
||||
self.m_odr_remise.bic_from if self.m_odr_remise
|
||||
end
|
||||
|
||||
def ca_bank_name
|
||||
self.m_odr_remise.bank_name if self.m_odr_remise
|
||||
end
|
||||
|
||||
def ca_bank_subject
|
||||
self.m_odr_remise.bank_subject if self.m_odr_remise
|
||||
end
|
||||
|
||||
def ca_libelle
|
||||
self.id.to_s+"-"+self.bank_subject if self.bank_subject
|
||||
end
|
||||
|
||||
|
||||
|
||||
before_validation do
|
||||
self.m_odr = self.m_odr_rep.m_odr if self.m_odr_rep
|
||||
|
||||
self.m_odr_rep_rib = self.m_odr_rep.m_odr_rep_ribs.where(:admin_ok => true).order("id DESC").first
|
||||
|
||||
self.amount = self.remise
|
||||
|
||||
end
|
||||
|
||||
|
||||
def self.valid_sort
|
||||
r = []
|
||||
self.qi_table_order.each do |key, value|
|
||||
if value.instance_of? Hash
|
||||
if value[:reorder] and value[:reorder] == true
|
||||
r << key.to_s if value[:reorder]
|
||||
end
|
||||
end
|
||||
end
|
||||
return r
|
||||
|
||||
|
||||
end
|
||||
|
||||
end
|
131
app/models/mail_hist.rb
Normal file
131
app/models/mail_hist.rb
Normal file
@ -0,0 +1,131 @@
|
||||
class MailHist < ApplicationRecord
|
||||
belongs_to :mail_content
|
||||
belongs_to :mail_type
|
||||
belongs_to :m_odr_rep
|
||||
belongs_to :m_odr
|
||||
belongs_to :lang_site
|
||||
|
||||
belongs_to :element, :polymorphic => true
|
||||
|
||||
QI_DYNAMICS = %w()
|
||||
|
||||
eval(QI_DYNAMICS_CORE)
|
||||
|
||||
|
||||
|
||||
def self.qi_table_order
|
||||
{
|
||||
:m_odr => {:name => "ODR"},
|
||||
:m_odr_rep => {:name => "Participation"},
|
||||
:created_at => {:name => "Date", :reorder => true},
|
||||
:from_email => {:name => "Email exp.", :reorder => true},
|
||||
:to_email => {:name => "Email dest.", :reorder => true},
|
||||
:subject => {:name => "Sujet.", :reorder => true},
|
||||
:actions => "Actions",
|
||||
}
|
||||
end
|
||||
|
||||
|
||||
def self.valid_sort
|
||||
r = []
|
||||
self.qi_table_order.each do |key, value|
|
||||
if value.instance_of? Hash
|
||||
if value[:reorder] and value[:reorder] == true
|
||||
r << key.to_s if value[:reorder]
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
return r
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
def self.generate_mail(lang_slug, mail_type, email, options = {})
|
||||
|
||||
#(lang_slug, mail_type, @m_odr_rep.particulars.first.email, {:arguments => {:numero_avoir => ""}, :m_odr => @m_odr})
|
||||
|
||||
@options = options
|
||||
|
||||
@lang_site = LangSite.find_by_slug(lang_slug)
|
||||
|
||||
@mail_type = mail_type
|
||||
|
||||
@mail_content = @mail_type.mail_contents.where(:lang_site_id => @lang_site.id).first
|
||||
|
||||
@m_odr = options[:m_odr]
|
||||
@m_odr_rep = options[:m_odr_rep]
|
||||
|
||||
@arguments = @options[:arguments]
|
||||
|
||||
|
||||
|
||||
arguments = @arguments
|
||||
|
||||
|
||||
s = @mail_content.subject.to_s
|
||||
arguments.each_pair do |key, value|
|
||||
s = s.gsub(/\[#{key.to_s}\]/, value.to_s)
|
||||
|
||||
end
|
||||
@subject = s
|
||||
|
||||
r = @mail_content.message
|
||||
arguments.each_pair do |key, value|
|
||||
r = r.gsub(/\[#{key.to_s}\]/, value.to_s)
|
||||
|
||||
end
|
||||
|
||||
@body = r
|
||||
|
||||
|
||||
if @options[:from]
|
||||
@from = @options[:from]
|
||||
elsif @m_odr and @m_odr.email_from?
|
||||
@from = @m_odr.email_from
|
||||
end
|
||||
|
||||
|
||||
@to_email = email
|
||||
|
||||
mail_history = MailHist.create(:lang_site => @lang_site, :to_email => @to_email, :from_email => @from, :element => options[:element], :subject => @subject, :body => @body, :m_odr => @m_odr, :m_odr_rep => @m_odr_rep, :mail_content => @mail_content, :mail_type => @mail_type)
|
||||
|
||||
|
||||
mail = GeneralMails.general2(@to_email, @subject, @body, mail_options = {:m_odr => @m_odr})
|
||||
|
||||
mail_history.subject_send = @subject
|
||||
mail_history.body_send = mail.body.encoded
|
||||
|
||||
mail.deliver
|
||||
|
||||
|
||||
mail_history.save
|
||||
|
||||
|
||||
|
||||
return mail_history
|
||||
|
||||
|
||||
end
|
||||
|
||||
def deliver_mail
|
||||
mail = GeneralMails.general(self.lang_site.slug, self.mail_type.slug, self.email , self.subject, self.content)
|
||||
|
||||
self.subject_cache = self.subject
|
||||
self.content_cache = mail.body.encoded
|
||||
|
||||
mail.deliver
|
||||
|
||||
self.sended = true
|
||||
self.sended_at = Time.now
|
||||
|
||||
self.save
|
||||
|
||||
|
||||
|
||||
|
||||
end
|
||||
|
||||
end
|
@ -68,6 +68,18 @@ class Particular < ApplicationRecord
|
||||
|
||||
end
|
||||
|
||||
|
||||
def long_name
|
||||
r = ""
|
||||
|
||||
r+= "#{self.civilite} " if self.civilite
|
||||
r+= "#{self.firstname} " if self.firstname
|
||||
r+= "#{self.name} " if self.name
|
||||
|
||||
return r
|
||||
|
||||
|
||||
end
|
||||
def address_longue
|
||||
address_2.to_s + " " + address_3.to_s
|
||||
end
|
||||
|
@ -17,7 +17,7 @@ class OdrUploader < CarrierWave::Uploader::Base
|
||||
end
|
||||
|
||||
def url
|
||||
"/download_odr_file/#{model.id}"
|
||||
"/admin/m_odr_files/#{model.id}/download"
|
||||
|
||||
end
|
||||
|
||||
|
@ -1,8 +1,8 @@
|
||||
%li= link_to "Paiements", admin_p_payments_path
|
||||
%li= link_to "Virements", admin_m_odr_virements_path
|
||||
=#%li= link_to "Remises", admin_p_remises_path
|
||||
=#%li= link_to "Relances", relances_admin_p_payments_path
|
||||
|
||||
|
||||
%li= link_to "Types de paiement", admin_p_payment_types_path
|
||||
%li= link_to "Remises", admin_m_odr_remises_path
|
||||
=#%li= link_to "Comptes bancaires", admin_p_bank_accounts_path
|
||||
=#%li= link_to "Banques", admin_p_banks_path
|
||||
|
@ -1,17 +1,8 @@
|
||||
=#%li= link_to "Commandes fournisseurs", admin_p_fournisseur_orders_path
|
||||
|
||||
-if current_admin.has_permission?("products")
|
||||
%li= link_to "Produits", admin_p_products_path
|
||||
|
||||
-if current_admin.has_permission?("product-cats")
|
||||
|
||||
%li= link_to "Catégories produits", admin_p_product_cats_path
|
||||
%li= link_to "Participations ODR", admin_m_odr_reps_path
|
||||
|
||||
-if current_admin.has_permission?("product_sub_cats")
|
||||
%li= link_to "Sous catégories produits", admin_p_product_sub_cats_path
|
||||
|
||||
-if current_admin.has_permission?("brands")
|
||||
%li= link_to "Marques", admin_s_brands_path
|
||||
|
||||
-if current_admin.has_permission?("fournisseurs")
|
||||
%li= link_to "Fournisseurs", admin_p_fournisseurs_path
|
||||
%li= link_to "ODR", admin_m_odrs_path
|
||||
%li= link_to "Historique mail", admin_mail_hists_path
|
||||
|
@ -2,14 +2,10 @@
|
||||
|
||||
.content
|
||||
=f.inputs do
|
||||
= f.input :file, :label => "file :"
|
||||
= f.input :m_odr, :label => "m_odr :"
|
||||
= f.input :action_date, :label => "action_date :"
|
||||
= f.input :notes, :label => "notes :"
|
||||
= f.input :name, :label => "name :"
|
||||
= f.input :m_odr_file_type, :label => "m_odr_file_type :"
|
||||
|
||||
= f.input :admin_ok, :label => "Décision :", :collection => [["Validé",true], ["Refusé", false]], :as => :select
|
||||
= f.input :reject_reason, :label => "Motif du rejet :", :collection => ["Mauvais document","Mauvaise qualité rendant le fichier illisible"]
|
||||
|
||||
= f.input :reject_reason_description, :label => "Précisions sur le rejet"
|
||||
|
||||
|
||||
|
||||
|
2
app/views/admin/m_odr_files/update.js copy.erb
Normal file
2
app/views/admin/m_odr_files/update.js copy.erb
Normal file
@ -0,0 +1,2 @@
|
||||
$('#m_odr_file_row_<%= @m_odr_file.id %>').replaceWith("<%= escape_javascript(render(@m_odr_file))%>");
|
||||
close_pane_hover();
|
@ -1,2 +1,2 @@
|
||||
$('#m_odr_file_row_<%= @m_odr_file.id %>').replaceWith("<%= escape_javascript(render(@m_odr_file))%>");
|
||||
|
||||
close_pane_hover();
|
18
app/views/admin/m_odr_remises/_form.html.haml
Normal file
18
app/views/admin/m_odr_remises/_form.html.haml
Normal file
@ -0,0 +1,18 @@
|
||||
=semantic_form_for [:admin, @m_odr_remise], :remote => true do |f|
|
||||
|
||||
.content
|
||||
=f.inputs do
|
||||
= f.input :notes, :label => "notes :"
|
||||
= f.input :m_odr, :label => "m_odr :"
|
||||
= f.input :download_at, :label => "download_at :"
|
||||
= f.input :confirmed_at, :label => "confirmed_at :"
|
||||
= f.input :state, :label => "state :"
|
||||
= f.input :confirmed, :label => "confirmed :"
|
||||
= f.input :admin_id, :label => "admin_id :"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.actions=f.submit "sauvegarder", :class => "btn btn-primary"
|
||||
|
34
app/views/admin/m_odr_remises/_m_odr_remise.html.haml
Normal file
34
app/views/admin/m_odr_remises/_m_odr_remise.html.haml
Normal file
@ -0,0 +1,34 @@
|
||||
%tr#m_odr_remise_row{:id => m_odr_remise.id}
|
||||
-tr = {}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
-tr[:actions] = capture do
|
||||
%td.actions
|
||||
= link_to i(:"trash-o"), [:admin, m_odr_remise], method: :delete, data: { confirm: 'Voulez-vous vraiment supprimer cet enregistrement ? ' } , :remote => true
|
||||
= link_to i(:pencil), edit_admin_m_odr_remise_path(m_odr_remise), :remote => true
|
||||
= link_to i(:eye), admin_m_odr_remise_path(m_odr_remise), :remote => false
|
||||
|
||||
|
||||
|
||||
-if !@qi_table_orders
|
||||
=render :partial => "qi/qi_ordered_table_head", :locals => {:qi_ordered_table_name => m_odr_remise.class.to_s.tableize, :qi_ordered_table_model => m_odr_remise.class}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
-@qi_table_orders[:m_odr_remises].each do |key,value|
|
||||
-if tr[:"#{key}"]
|
||||
=raw tr[:"#{key}"]
|
||||
-elsif (m_odr_remise.respond_to?(key))
|
||||
%td
|
||||
=m_odr_remise.send(key.to_s)
|
||||
|
||||
-else
|
||||
%td
|
||||
Err :
|
||||
=key
|
||||
|
2
app/views/admin/m_odr_remises/create.js.erb
Normal file
2
app/views/admin/m_odr_remises/create.js.erb
Normal file
@ -0,0 +1,2 @@
|
||||
$('#m_odr_remises_rows').prepend("<%= escape_javascript(render(@m_odr_remise))%>");
|
||||
close_pane_hover();
|
1
app/views/admin/m_odr_remises/destroy.js.erb
Normal file
1
app/views/admin/m_odr_remises/destroy.js.erb
Normal file
@ -0,0 +1 @@
|
||||
$('#m_odr_remise_<%= @m_odr_remise.id %>').remove();
|
1
app/views/admin/m_odr_remises/edit.js.erb
Normal file
1
app/views/admin/m_odr_remises/edit.js.erb
Normal file
@ -0,0 +1 @@
|
||||
show_pane_hover("<%= escape_javascript(render(:partial => "form"))%>",700,900);
|
31
app/views/admin/m_odr_remises/index.html.haml
Normal file
31
app/views/admin/m_odr_remises/index.html.haml
Normal file
@ -0,0 +1,31 @@
|
||||
.qi_header
|
||||
.right= link_to 'Ajouter ', new_admin_m_odr_remise_path(), :class => "btn btn-primary", :remote => true
|
||||
%h1
|
||||
Virements
|
||||
%span
|
||||
Remises
|
||||
|
||||
|
||||
|
||||
.qi_search_row
|
||||
=form_tag "", :method => "get", :onsubmit => "" do
|
||||
-params[:search] =params[:search] || {}
|
||||
%table
|
||||
%tr
|
||||
%td
|
||||
Statut :
|
||||
=select_tag "search[state]", options_for_select([["",""]]+MOdrRep.group(:state).order(:state).all.map{|a| [a.state, a.state]}, params[:search][:state])
|
||||
|
||||
|
||||
%td
|
||||
Opération :
|
||||
=select_tag "search[m_odr_id]", options_for_select([["",""]]+MOdr.order(:name).all.map{|a| [a.name, a.id]}, params[:search][:m_odr_id])
|
||||
|
||||
|
||||
%td=text_field_tag :name, params[:name],:class => "form-control", :placeholder => "Nom"
|
||||
|
||||
|
||||
=render :partial => "qi/qi_ordered_table_search_footer", :locals => {:collection_object => @m_odr_remises}
|
||||
|
||||
|
||||
=render :partial => "qi/qi_ordered_table", :locals => {:qi_ordered_table_collection => @m_odr_remises}
|
1
app/views/admin/m_odr_remises/new.js.erb
Normal file
1
app/views/admin/m_odr_remises/new.js.erb
Normal file
@ -0,0 +1 @@
|
||||
show_pane_hover("<%= escape_javascript(render(:partial => "form"))%>",700,900);
|
24
app/views/admin/m_odr_remises/show.html.haml
Normal file
24
app/views/admin/m_odr_remises/show.html.haml
Normal file
@ -0,0 +1,24 @@
|
||||
.qi_header
|
||||
%h1
|
||||
|
||||
%span
|
||||
|
||||
|
||||
|
||||
.qi_row
|
||||
.qi_pannel.qi_plain.padding
|
||||
=link_to "Confirmer maintenant TOUS les virements", confirm_admin_m_odr_remise_path(@m_odr_remise) if !@m_odr_remise.confirmed
|
||||
|
||||
|
||||
|
||||
%hr
|
||||
Virements
|
||||
|
||||
|
||||
-params[:search][:per_page] = params[:search][:per_page] || 50
|
||||
-per_page = params[:search][:per_page]
|
||||
-page = (params[:page] and params[:page] != "") ? params[:page] : 1
|
||||
-@m_odr_virements = @m_odr_remise.m_odr_virements.page(page).per(per_page)
|
||||
|
||||
=render :partial => "qi/qi_ordered_table", :locals => {:qi_ordered_table_collection => @m_odr_virements}
|
||||
|
2
app/views/admin/m_odr_remises/update.js.erb
Normal file
2
app/views/admin/m_odr_remises/update.js.erb
Normal file
@ -0,0 +1,2 @@
|
||||
$('#m_odr_remise_row_<%= @m_odr_remise.id %>').replaceWith("<%= escape_javascript(render(@m_odr_remise))%>");
|
||||
close_pane_hover();
|
@ -4,16 +4,12 @@
|
||||
=f.inputs do
|
||||
= f.input :iban, :label => "iban :"
|
||||
= f.input :bic, :label => "bic :"
|
||||
= f.input :name, :label => "name :"
|
||||
= f.input :admin, :label => "admin :"
|
||||
= f.input :admin_valid, :label => "admin_valid :"
|
||||
= f.input :confirmed, :label => "confirmed :"
|
||||
= f.input :m_odr_rep_id, :label => "m_odr_rep_id :"
|
||||
= f.input :nbr_virements, :label => "nbr_virements :"
|
||||
= f.input :bank_name, :label => "bank_name :"
|
||||
= f.input :bank_adress, :label => "bank_adress :"
|
||||
= f.input :notes, :label => "notes :"
|
||||
|
||||
%hr
|
||||
= f.input :admin_ok, :label => "Décision :", :collection => [["Validé",true], ["Refusé", false]], :as => :select
|
||||
= f.input :reject_reason, :label => "Motif du rejet :", :collection => ["RIB et IBAN invalide"]
|
||||
|
||||
= f.input :reject_reason_description, :label => "Précisions sur le rejet"
|
||||
|
||||
|
||||
|
||||
|
||||
|
2
app/views/admin/m_odr_rep_ribs/update.js copy.erb
Normal file
2
app/views/admin/m_odr_rep_ribs/update.js copy.erb
Normal file
@ -0,0 +1,2 @@
|
||||
$('#m_odr_rep_rib_row_<%= @m_odr_rep_rib.id %>').replaceWith("<%= escape_javascript(render(@m_odr_rep_rib))%>");
|
||||
close_pane_hover();
|
@ -1,2 +1 @@
|
||||
$('#m_odr_rep_rib_row_<%= @m_odr_rep_rib.id %>').replaceWith("<%= escape_javascript(render(@m_odr_rep_rib))%>");
|
||||
close_pane_hover();
|
@ -2,16 +2,22 @@
|
||||
|
||||
.content
|
||||
=f.inputs do
|
||||
= f.input :state, :label => "state :"
|
||||
= f.input :admin_id, :label => "admin_id :"
|
||||
= f.input :admin_valid, :label => "admin_valid :"
|
||||
= f.input :token, :label => "token :"
|
||||
= f.input :m_odr, :label => "m_odr :"
|
||||
= f.input :rgpd, :label => "rgpd :"
|
||||
=# f.input :state, :label => "state :"
|
||||
=# f.input :admin_id, :label => "admin_id :"
|
||||
=# f.input :admin_valid, :label => "admin_valid :"
|
||||
=# f.input :token, :label => "token :"
|
||||
=# f.input :m_odr, :label => "m_odr :"
|
||||
=# f.input :rgpd, :label => "rgpd :"
|
||||
|
||||
|
||||
|
||||
|
||||
=f.input :m_odr_product_id, :label => "Pneu :", :as => :select, :collection => f.object.m_odr.m_odr_products.order("m_odr_brand_id ASC, m_odr_products.name"), :member_label => :member_label, :include_blank => true
|
||||
|
||||
|
||||
=f.input :qte, :label => "Nombre de pneus :", :as => :select, :collection => [1,2], :include_blank => true
|
||||
|
||||
|
||||
=f.input :m_odr_place, :label => "Point de vente :", :as => :select, :collection => f.object.m_odr.m_odr_places.order(:name), :include_blank => true
|
||||
|
||||
|
||||
|
||||
.actions=f.submit "sauvegarder", :class => "btn btn-primary"
|
||||
|
@ -1,13 +1,35 @@
|
||||
%tr#m_odr_rep_row{:id => m_odr_rep.id}
|
||||
%td= m_odr_rep.state
|
||||
%td= m_odr_rep.admin_id
|
||||
%td= m_odr_rep.admin_valid
|
||||
%td= m_odr_rep.token
|
||||
%td= m_odr_rep.m_odr_id
|
||||
%td= m_odr_rep.rgpd
|
||||
|
||||
%td.actions
|
||||
= link_to i(:"trash-o"), [:admin, m_odr_rep], method: :delete, data: { confirm: 'Voulez-vous vraiment supprimer cet enregistrement ? ' } , :remote => true
|
||||
= link_to i(:pencil), edit_admin_m_odr_rep_path(m_odr_rep), :remote => true
|
||||
= link_to i(:eye), admin_m_odr_rep_path(m_odr_rep), :remote => true
|
||||
-tr = {}
|
||||
|
||||
-tr[:state] = capture do
|
||||
%td=state_helper m_odr_rep.state
|
||||
|
||||
-tr[:m_odr] = capture do
|
||||
%td=m_odr_rep.m_odr.name if m_odr_rep.m_odr
|
||||
|
||||
-tr[:cc_remise] = capture do
|
||||
%td=number_to_currency m_odr_rep.remise
|
||||
|
||||
-tr[:cc_rib_admin_ok] = capture do
|
||||
%td= "oui" if m_odr_rep.rib_admin_ok
|
||||
|
||||
-tr[:cc_file_admin_ok] = capture do
|
||||
%td= "oui" if m_odr_rep.file_admin_ok
|
||||
|
||||
-tr[:cc_admin_ok_to_send] = capture do
|
||||
%td= "oui" if m_odr_rep.admin_ok_to_send
|
||||
|
||||
-tr[:actions] = capture do
|
||||
%td.actions
|
||||
= link_to i(:"trash-o"), [:admin, m_odr_rep], method: :delete, data: { confirm: 'Voulez-vous vraiment supprimer cet enregistrement ? ' } , :remote => true
|
||||
= link_to i(:pencil), edit_admin_m_odr_rep_path(m_odr_rep), :remote => true
|
||||
= link_to i(:eye), admin_m_odr_rep_path(m_odr_rep)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
=render :partial => "qi/qi_ordered_table_object", :locals => {:tr => tr, :object => m_odr_rep}
|
||||
|
||||
|
||||
|
@ -1,25 +1,32 @@
|
||||
.qi_header
|
||||
.right= link_to 'Ajouter ', new_admin_m_odr_rep_path(), :class => "btn btn-primary", :remote => true
|
||||
%h1
|
||||
|
||||
ODR
|
||||
%span
|
||||
|
||||
Liste des participations
|
||||
|
||||
-MOdrRep.all.each do |m_odr_rep|
|
||||
-m_odr_rep.save
|
||||
|
||||
.qi_row
|
||||
.qi_pannel.qi_plain.padding
|
||||
%table.table
|
||||
.qi_search_row
|
||||
=form_tag "", :method => "get", :onsubmit => "" do
|
||||
-params[:search] =params[:search] || {}
|
||||
%table
|
||||
%tr
|
||||
%th state
|
||||
%th admin_id
|
||||
%th admin_valid
|
||||
%th token
|
||||
%th m_odr_id
|
||||
%th rgpd
|
||||
%th.actions
|
||||
|
||||
%td
|
||||
Statut :
|
||||
=select_tag "search[state]", options_for_select([["",""]]+MOdrRep.group(:state).order(:state).all.map{|a| [a.state, a.state]}, params[:search][:state])
|
||||
|
||||
|
||||
%td
|
||||
Opération :
|
||||
=select_tag "search[m_odr_id]", options_for_select([["",""]]+MOdr.order(:name).all.map{|a| [a.name, a.id]}, params[:search][:m_odr_id])
|
||||
|
||||
|
||||
%td=text_field_tag :name, params[:name],:class => "form-control", :placeholder => "Nom"
|
||||
|
||||
%tbody#m_odr_reps_rows
|
||||
=render @m_odr_reps
|
||||
|
||||
|
||||
|
||||
=render :partial => "qi/qi_ordered_table_search_footer", :locals => {:collection_object => @m_odr_reps}
|
||||
|
||||
|
||||
=render :partial => "qi/qi_ordered_table", :locals => {:qi_ordered_table_collection => @m_odr_reps}
|
||||
|
@ -3,8 +3,167 @@
|
||||
|
||||
%span
|
||||
|
||||
|
||||
-@m_odr_rep.save
|
||||
|
||||
.qi_row
|
||||
.qi_pannel.qi_plain.padding
|
||||
=debug @m_odr_rep
|
||||
|
||||
|
||||
|
||||
%table.table.table-striped.table-hover.table-bordered
|
||||
%tr
|
||||
%td{:style => "width:200px;"} Nom
|
||||
%td
|
||||
=@m_odr_rep.long_name
|
||||
|
||||
%tr
|
||||
%td Adresse
|
||||
%td
|
||||
=@m_odr_rep.particular_address_2
|
||||
|
||||
-if @m_odr_rep.particular_address_3.to_s != ""
|
||||
%br
|
||||
=@m_odr_rep.particular_address_3
|
||||
|
||||
%tr
|
||||
%td Ville
|
||||
%td
|
||||
=@m_odr_rep.particular_cp
|
||||
=@m_odr_rep.particular_city
|
||||
="-"
|
||||
=@m_odr_rep.particular_country
|
||||
|
||||
%tr
|
||||
%td Tel
|
||||
%td
|
||||
=@m_odr_rep.particular_tel
|
||||
|
||||
|
||||
%tr
|
||||
%td Email
|
||||
%td
|
||||
=@m_odr_rep.particular_email
|
||||
|
||||
|
||||
%hr
|
||||
Achat
|
||||
.row
|
||||
.columns.span_4
|
||||
%table.table.table-striped.table-hover.table-bordered
|
||||
%tr
|
||||
%td{:style => "width:200px;"} Marque :
|
||||
%td
|
||||
=@m_odr_rep.product_brand
|
||||
|
||||
%tr
|
||||
%td Produit
|
||||
%td
|
||||
=@m_odr_rep.product_name
|
||||
%tr
|
||||
%td Quantité
|
||||
%td
|
||||
=@m_odr_rep.qte
|
||||
|
||||
%table.table.table-striped.table-hover.table-bordered
|
||||
%tr
|
||||
%td{:style => "width:200px;"} Remise :
|
||||
%td
|
||||
=number_to_currency @m_odr_rep.remise
|
||||
|
||||
|
||||
-@m_odr_rep.m_odr_files.order("id DESC").each do |file|
|
||||
%table.table.table-striped.table-hover.table-bordered
|
||||
%tr
|
||||
%td{:style => "width:200px;"} Fichier
|
||||
%td
|
||||
=File.basename file.file.path
|
||||
|
||||
%tr
|
||||
%td Lien
|
||||
%td
|
||||
=link_to "Télécharger", download_admin_m_odr_file_path(file, :disposition => "attachment")
|
||||
|
||||
|
||||
%tr
|
||||
%td Validation
|
||||
%td
|
||||
-if file.admin_ok == true
|
||||
=state_helper "Validé"
|
||||
-elsif file.admin_ok == false
|
||||
=state_helper "Refusé"
|
||||
%br
|
||||
=file.reject_reason
|
||||
=simple_format file.reject_reason_description if file.reject_reason_description?
|
||||
|
||||
=link_to "Modérer ce fichier", edit_admin_m_odr_file_path(file), :remote => true
|
||||
|
||||
|
||||
RIBs :
|
||||
-@m_odr_rep.m_odr_rep_ribs.order("id DESC").each do |m_odr_rep_rib|
|
||||
%table.table.table-striped.table-hover.table-bordered
|
||||
%tr
|
||||
%td{:style => "width:200px;"} ID Rib
|
||||
%td
|
||||
=m_odr_rep_rib.id
|
||||
|
||||
%tr
|
||||
%td IBAN
|
||||
%td
|
||||
=m_odr_rep_rib.iban
|
||||
|
||||
%tr
|
||||
%td BIC
|
||||
%td
|
||||
=m_odr_rep_rib.bic
|
||||
|
||||
|
||||
%tr
|
||||
%td Validation
|
||||
%td
|
||||
-if m_odr_rep_rib.admin_ok == true
|
||||
=state_helper "Validé"
|
||||
-elsif m_odr_rep_rib.admin_ok == false
|
||||
=state_helper "Refusé"
|
||||
%br
|
||||
=m_odr_rep_rib.reject_reason
|
||||
=simple_format m_odr_rep_rib.reject_reason_description if m_odr_rep_rib.reject_reason_description?
|
||||
|
||||
=link_to "Modérer ce RIB", edit_admin_m_odr_rep_rib_path(m_odr_rep_rib), :remote => true
|
||||
|
||||
|
||||
|
||||
.columns.span_8{:style => "padding-left:20px;"}
|
||||
-file = @m_odr_rep.m_odr_files.order("id DESC").first
|
||||
-if file
|
||||
=link_to "Télécharger", download_admin_m_odr_file_path(file, :disposition => "attachment")
|
||||
%iframe{:src => file.file.url, :style => "width:100%;height:800px;border:1px solid gray;"}
|
||||
|
||||
|
||||
|
||||
|
||||
.clear
|
||||
%hr
|
||||
Virements
|
||||
-if @m_odr_rep.admin_ok_to_send and @m_odr_rep.m_odr_virements.where(:refused => false).count == 0
|
||||
=link_to "Générer le virement", generate_virement_admin_m_odr_rep_path(@m_odr_rep)
|
||||
|
||||
|
||||
-params[:search][:per_page] = params[:search][:per_page] || 50
|
||||
-per_page = params[:search][:per_page]
|
||||
-page = (params[:page] and params[:page] != "") ? params[:page] : 1
|
||||
-@m_odr_virements = @m_odr_rep.m_odr_virements.page(page).per(per_page)
|
||||
|
||||
=render :partial => "qi/qi_ordered_table", :locals => {:qi_ordered_table_collection => @m_odr_virements}
|
||||
|
||||
|
||||
%hr
|
||||
Historique des mails envoyés
|
||||
|
||||
-params[:search][:per_page] = params[:search][:per_page] || 50
|
||||
-per_page = params[:search][:per_page]
|
||||
-page = (params[:page] and params[:page] != "") ? params[:page] : 1
|
||||
-@mail_hists = @m_odr_rep.mail_hists.page(page).per(per_page)
|
||||
|
||||
=render :partial => "qi/qi_ordered_table", :locals => {:qi_ordered_table_collection => @mail_hists}
|
||||
|
||||
|
22
app/views/admin/m_odr_virements/_form.html.haml
Normal file
22
app/views/admin/m_odr_virements/_form.html.haml
Normal file
@ -0,0 +1,22 @@
|
||||
=semantic_form_for [:admin, @m_odr_virement], :remote => true do |f|
|
||||
|
||||
.content
|
||||
=f.inputs do
|
||||
= f.input :m_odr, :label => "m_odr :"
|
||||
= f.input :m_odr_rep, :label => "m_odr_rep :"
|
||||
= f.input :m_odr_rep_rib, :label => "m_odr_rep_rib :"
|
||||
= f.input :enabled, :label => "enabled :"
|
||||
= f.input :sended, :label => "sended :"
|
||||
= f.input :refused, :label => "refused :"
|
||||
= f.input :reject_reason, :label => "reject_reason :"
|
||||
= f.input :reject_reason_description, :label => "reject_reason_description :"
|
||||
= f.input :cc_remise, :label => "cc_remise :"
|
||||
= f.input :cc_iban, :label => "cc_iban :"
|
||||
= f.input :cc_bic, :label => "cc_bic :"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.actions=f.submit "sauvegarder", :class => "btn btn-primary"
|
||||
|
67
app/views/admin/m_odr_virements/_m_odr_virement.html.haml
Normal file
67
app/views/admin/m_odr_virements/_m_odr_virement.html.haml
Normal file
@ -0,0 +1,67 @@
|
||||
%tr#m_odr_virement_row{:id => m_odr_virement.id}
|
||||
-tr = {}
|
||||
|
||||
-tr[:amount] = capture do
|
||||
%td=number_to_currency m_odr_virement.amount
|
||||
|
||||
|
||||
-tr[:enabled] = capture do
|
||||
%td
|
||||
-if m_odr_virement.enabled
|
||||
Oui
|
||||
-else
|
||||
-if !@m_odr_rep
|
||||
= link_to i(:check)+" valider maintenant", admin_valid_admin_m_odr_virement_path(m_odr_virement), :remote => true
|
||||
|
||||
-tr[:refused] = capture do
|
||||
%td
|
||||
-if m_odr_virement.refused
|
||||
Refusé
|
||||
-else
|
||||
-if @m_odr_remise
|
||||
= link_to "Indiquer comme refusé par la banque", refuse_admin_m_odr_virement_path(m_odr_virement), :remote => true
|
||||
|
||||
-tr[:actions] = capture do
|
||||
%td.actions
|
||||
= link_to i(:"trash-o"), [:admin, m_odr_virement], method: :delete, data: { confirm: 'Voulez-vous vraiment supprimer cet enregistrement ? ' } , :remote => true
|
||||
= link_to i(:pencil), edit_admin_m_odr_virement_path(m_odr_virement), :remote => true
|
||||
= link_to i(:eye), admin_m_odr_virement_path(m_odr_virement), :remote => true
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
-if !@qi_table_orders
|
||||
|
||||
=render :partial => "qi/qi_ordered_table_head", :locals => {:qi_ordered_table_name => m_odr_virement.class.to_s.tableize, :qi_ordered_table_model => m_odr_virement.class}
|
||||
|
||||
|
||||
-@qi_table_orders[:m_odr_virements].each do |key,value|
|
||||
|
||||
-if tr[:"#{key}"]
|
||||
|
||||
=raw tr[:"#{key}"]
|
||||
|
||||
-elsif (m_odr_virement.respond_to?(key))
|
||||
|
||||
%td
|
||||
|
||||
=m_odr_virement.send(key.to_s)
|
||||
|
||||
|
||||
|
||||
-else
|
||||
|
||||
%td
|
||||
|
||||
Err :
|
||||
|
||||
=key
|
||||
|
||||
|
||||
|
||||
|
||||
|
2
app/views/admin/m_odr_virements/admin_valid.js.erb
Normal file
2
app/views/admin/m_odr_virements/admin_valid.js.erb
Normal file
@ -0,0 +1,2 @@
|
||||
$('#m_odr_virement_row_<%= @m_odr_virement.id %>').replaceWith("<%= escape_javascript(render(@m_odr_virement))%>");
|
||||
close_pane_hover();
|
2
app/views/admin/m_odr_virements/create.js.erb
Normal file
2
app/views/admin/m_odr_virements/create.js.erb
Normal file
@ -0,0 +1,2 @@
|
||||
$('#m_odr_virements_rows').prepend("<%= escape_javascript(render(@m_odr_virement))%>");
|
||||
close_pane_hover();
|
1
app/views/admin/m_odr_virements/destroy.js.erb
Normal file
1
app/views/admin/m_odr_virements/destroy.js.erb
Normal file
@ -0,0 +1 @@
|
||||
$('#m_odr_virement_<%= @m_odr_virement.id %>').remove();
|
1
app/views/admin/m_odr_virements/edit.js.erb
Normal file
1
app/views/admin/m_odr_virements/edit.js.erb
Normal file
@ -0,0 +1 @@
|
||||
show_pane_hover("<%= escape_javascript(render(:partial => "form"))%>",700,900);
|
33
app/views/admin/m_odr_virements/index.html.haml
Normal file
33
app/views/admin/m_odr_virements/index.html.haml
Normal file
@ -0,0 +1,33 @@
|
||||
.qi_header
|
||||
.right= link_to 'Ajouter ', new_admin_m_odr_virement_path(), :class => "btn btn-primary", :remote => true
|
||||
%h1
|
||||
Virements
|
||||
%span
|
||||
Demande de virement
|
||||
|
||||
|
||||
|
||||
.qi_search_row
|
||||
=form_tag "", :method => "get", :onsubmit => "" do
|
||||
-params[:search] =params[:search] || {}
|
||||
%table
|
||||
%tr
|
||||
%td
|
||||
Statut :
|
||||
=select_tag "search[state]", options_for_select([["",""]]+MOdrRep.group(:state).order(:state).all.map{|a| [a.state, a.state]}, params[:search][:state])
|
||||
|
||||
|
||||
%td
|
||||
Opération :
|
||||
=select_tag "search[m_odr_id]", options_for_select([["",""]]+MOdr.order(:name).all.map{|a| [a.name, a.id]}, params[:search][:m_odr_id])
|
||||
|
||||
|
||||
%td=text_field_tag :name, params[:name],:class => "form-control", :placeholder => "Nom"
|
||||
|
||||
|
||||
=render :partial => "qi/qi_ordered_table_search_footer", :locals => {:collection_object => @m_odr_virements}
|
||||
|
||||
|
||||
=link_to "Générer les remises", generate_all_admin_m_odr_remises_path()
|
||||
|
||||
=render :partial => "qi/qi_ordered_table", :locals => {:qi_ordered_table_collection => @m_odr_virements}
|
1
app/views/admin/m_odr_virements/new.js.erb
Normal file
1
app/views/admin/m_odr_virements/new.js.erb
Normal file
@ -0,0 +1 @@
|
||||
show_pane_hover("<%= escape_javascript(render(:partial => "form"))%>",700,900);
|
2
app/views/admin/m_odr_virements/refuse.js.erb
Normal file
2
app/views/admin/m_odr_virements/refuse.js.erb
Normal file
@ -0,0 +1,2 @@
|
||||
$('#m_odr_virement_row_<%= @m_odr_virement.id %>').replaceWith("<%= escape_javascript(render(@m_odr_virement))%>");
|
||||
close_pane_hover();
|
10
app/views/admin/m_odr_virements/show.html.haml
Normal file
10
app/views/admin/m_odr_virements/show.html.haml
Normal file
@ -0,0 +1,10 @@
|
||||
.qi_header
|
||||
%h1
|
||||
|
||||
%span
|
||||
|
||||
|
||||
|
||||
.qi_row
|
||||
.qi_pannel.qi_plain.padding
|
||||
=debug @m_odr_virement
|
2
app/views/admin/m_odr_virements/update.js.erb
Normal file
2
app/views/admin/m_odr_virements/update.js.erb
Normal file
@ -0,0 +1,2 @@
|
||||
$('#m_odr_virement_row_<%= @m_odr_virement.id %>').replaceWith("<%= escape_javascript(render(@m_odr_virement))%>");
|
||||
close_pane_hover();
|
@ -57,8 +57,14 @@
|
||||
|
||||
=render :partial => "admin/shared/social_form", :locals => {:f => f}
|
||||
|
||||
|
||||
|
||||
.qi_row
|
||||
.qi_pannel.qi_plain.padding
|
||||
Infos pour les virements :
|
||||
%hr
|
||||
= f.input :iban, :label => "Iban :"
|
||||
= f.input :bic, :label => "Bic :"
|
||||
= f.input :bank_name, :label => "Nom du propriétaire du compte :"
|
||||
= f.input :bank_subject, :label => "Libellé virement :"
|
||||
.qi_row
|
||||
.qi_pannel.qi_plain.padding
|
||||
Fichiers demandés :
|
||||
|
@ -2,6 +2,8 @@
|
||||
.right= link_to 'Ajouter ', new_admin_m_odr_path(), :class => "btn btn-primary", :remote => false
|
||||
%h1
|
||||
ODR
|
||||
%span
|
||||
Liste des ODR
|
||||
|
||||
|
||||
|
||||
|
24
app/views/admin/mail_hists/_form.html.haml
Normal file
24
app/views/admin/mail_hists/_form.html.haml
Normal file
@ -0,0 +1,24 @@
|
||||
=semantic_form_for [:admin, @mail_hist], :remote => true do |f|
|
||||
|
||||
.content
|
||||
=f.inputs do
|
||||
= f.input :from_email, :label => "from_email :"
|
||||
= f.input :to_email, :label => "to_email :"
|
||||
= f.input :subject, :label => "subject :"
|
||||
= f.input :body, :label => "body :"
|
||||
= f.input :mail_content, :label => "mail_content :"
|
||||
= f.input :mail_type, :label => "mail_type :"
|
||||
= f.input :element_type, :label => "element_type :"
|
||||
= f.input :element_id, :label => "element_id :"
|
||||
= f.input :m_odr_rep, :label => "m_odr_rep :"
|
||||
= f.input :m_odr, :label => "m_odr :"
|
||||
= f.input :mj_read, :label => "mj_read :"
|
||||
= f.input :mj_token, :label => "mj_token :"
|
||||
= f.input :nbr_send, :label => "nbr_send :"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.actions=f.submit "sauvegarder", :class => "btn btn-primary"
|
||||
|
13
app/views/admin/mail_hists/_mail_hist.html.haml
Normal file
13
app/views/admin/mail_hists/_mail_hist.html.haml
Normal file
@ -0,0 +1,13 @@
|
||||
%tr#mail_hist_row{:id => mail_hist.id}
|
||||
-tr = {}
|
||||
|
||||
-tr[:actions] = capture do
|
||||
%td.actions
|
||||
= link_to i(:"trash-o"), [:admin, mail_hist], method: :delete, data: { confirm: 'Voulez-vous vraiment supprimer cet enregistrement ? ' } , :remote => true
|
||||
= link_to i(:pencil), edit_admin_mail_hist_path(mail_hist), :remote => true
|
||||
= link_to i(:eye), admin_mail_hist_path(mail_hist), :remote => true
|
||||
|
||||
|
||||
|
||||
|
||||
=render :partial => "qi/qi_ordered_table_object", :locals => {:tr => tr, :object => mail_hist}
|
2
app/views/admin/mail_hists/create.js.erb
Normal file
2
app/views/admin/mail_hists/create.js.erb
Normal file
@ -0,0 +1,2 @@
|
||||
$('#mail_hists_rows').prepend("<%= escape_javascript(render(@mail_hist))%>");
|
||||
close_pane_hover();
|
1
app/views/admin/mail_hists/destroy.js.erb
Normal file
1
app/views/admin/mail_hists/destroy.js.erb
Normal file
@ -0,0 +1 @@
|
||||
$('#mail_hist_<%= @mail_hist.id %>').remove();
|
1
app/views/admin/mail_hists/edit.js.erb
Normal file
1
app/views/admin/mail_hists/edit.js.erb
Normal file
@ -0,0 +1 @@
|
||||
show_pane_hover("<%= escape_javascript(render(:partial => "form"))%>",700,900);
|
21
app/views/admin/mail_hists/index.html.haml
Normal file
21
app/views/admin/mail_hists/index.html.haml
Normal file
@ -0,0 +1,21 @@
|
||||
.qi_header
|
||||
|
||||
%h1
|
||||
Mails
|
||||
%span
|
||||
Historique des mails envoyés
|
||||
|
||||
|
||||
|
||||
.qi_search_row
|
||||
=form_tag "", :method => "get", :onsubmit => "" do
|
||||
-params[:search] =params[:search] || {}
|
||||
%table
|
||||
%tr
|
||||
%td
|
||||
|
||||
|
||||
=render :partial => "qi/qi_ordered_table_search_footer", :locals => {:collection_object => @mail_hists}
|
||||
|
||||
|
||||
=render :partial => "qi/qi_ordered_table", :locals => {:qi_ordered_table_collection => @mail_hists}
|
1
app/views/admin/mail_hists/new.js.erb
Normal file
1
app/views/admin/mail_hists/new.js.erb
Normal file
@ -0,0 +1 @@
|
||||
show_pane_hover("<%= escape_javascript(render(:partial => "form"))%>",700,900);
|
10
app/views/admin/mail_hists/show.html.haml
Normal file
10
app/views/admin/mail_hists/show.html.haml
Normal file
@ -0,0 +1,10 @@
|
||||
.qi_header
|
||||
%h1
|
||||
|
||||
%span
|
||||
|
||||
|
||||
|
||||
.qi_row
|
||||
.qi_pannel.qi_plain.padding
|
||||
=debug @mail_hist
|
2
app/views/admin/mail_hists/update.js.erb
Normal file
2
app/views/admin/mail_hists/update.js.erb
Normal file
@ -0,0 +1,2 @@
|
||||
$('#mail_hist_row_<%= @mail_hist.id %>').replaceWith("<%= escape_javascript(render(@mail_hist))%>");
|
||||
close_pane_hover();
|
@ -32,6 +32,11 @@
|
||||
="%"
|
||||
|
||||
|
||||
-if !@qi_table_orders
|
||||
=render :partial => "qi/qi_ordered_table_head", :locals => {:qi_ordered_table_name => p_product.class.to_s.tableize, :qi_ordered_table_model => p_product.class}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
-@qi_table_orders[:p_customers].each do |key,value|
|
||||
|
1
app/views/general_mails/general2.html.haml
Normal file
1
app/views/general_mails/general2.html.haml
Normal file
@ -0,0 +1 @@
|
||||
=simple_format @body
|
@ -38,7 +38,7 @@
|
||||
Clients
|
||||
|
||||
.element
|
||||
=link_to admin_m_odrs_path do
|
||||
=link_to admin_m_odr_reps_path do
|
||||
.cat#big_cat_stocks
|
||||
=ic :"cubes"
|
||||
Opérations ODR
|
||||
@ -57,12 +57,11 @@
|
||||
Documents
|
||||
|
||||
|
||||
-if current_admin.has_permission?("payments")
|
||||
.element
|
||||
=link_to admin_p_payments_path do
|
||||
.cat#big_cat_payments
|
||||
=ic :"eur"
|
||||
Paiements
|
||||
.element
|
||||
=link_to admin_m_odr_virements_path do
|
||||
.cat#big_cat_payments
|
||||
=ic :"eur"
|
||||
Virements
|
||||
|
||||
-if false
|
||||
.element
|
||||
|
@ -118,7 +118,7 @@
|
||||
%h3 Votre achat
|
||||
|
||||
=f.inputs do
|
||||
=f.input :m_odr_product_id, :label => "Pneu :", :as => :select, :collection => f.object.m_odr.m_odr_products.order("m_odr_brand_id ASC, m_odr_products.name"), :member_label => :member_label, :include_blank => true
|
||||
=f.input :m_odr_product_id, :label => "Pneu :", :as => :select, :collection => f.object.m_odr.m_odr_products.where(:m_odr_brand_id => f.object.m_odr.m_odr_brands.where("(start_at is null or start_at <= ?) and (public_end is null or public_end >= ?)", Date.today,Date.today) ).order("m_odr_brand_id ASC, m_odr_products.name"), :member_label => :member_label, :include_blank => true
|
||||
|
||||
=f.inputs do
|
||||
=f.input :qte, :label => "Nombre de pneus :", :as => :select, :collection => [1,2], :include_blank => true
|
||||
|
@ -1,5 +1,12 @@
|
||||
-qi_ordered_table_name = qi_ordered_table_collection.klass.to_s.tableize
|
||||
|
||||
-qi_ordered_table_model = qi_ordered_table_collection.klass
|
||||
|
||||
|
||||
|
||||
=render :partial => "qi/qi_ordered_table_head", :locals => {:qi_ordered_table_name => qi_ordered_table_name, :qi_ordered_table_model => qi_ordered_table_model}
|
||||
|
||||
|
||||
-@qi_table_orders = @qi_table_orders || {}
|
||||
|
||||
-if current_admin
|
||||
@ -23,18 +30,6 @@
|
||||
|
||||
|
||||
|
||||
-if qi_ordered_table_personalised.to_s != ""
|
||||
-@qi_table_orders[qi_ordered_table_name.to_sym] = {}
|
||||
|
||||
-qi_ordered_table_personalised.split(",").each do |k|
|
||||
-if qi_ordered_table_collection.klass.qi_table_order[k.to_sym]
|
||||
|
||||
-@qi_table_orders[qi_ordered_table_name.to_sym][k.to_sym] = qi_ordered_table_collection.klass.qi_table_order[k.to_sym]
|
||||
|
||||
-else
|
||||
-@qi_table_orders[qi_ordered_table_name.to_sym] = qi_ordered_table_collection.klass.qi_table_order
|
||||
|
||||
|
||||
|
||||
|
||||
%span.qi_ordered_table_column{:onclick => "$(this).next('.qi_ordered_table_sort_select_wrapper').toggle();"}
|
||||
@ -68,8 +63,9 @@
|
||||
-else
|
||||
=value
|
||||
%hr{:style => "margin:3px 0;"}
|
||||
Colonnes fixes :
|
||||
=select_tag "qi_sort_string[nbr_colonnes]", options_for_select([0,1,2,3], qi_ordered_table_nbr_col)
|
||||
-if false
|
||||
Colonnes fixes :
|
||||
=select_tag "qi_sort_string[nbr_colonnes]", options_for_select([0,1,2,3], qi_ordered_table_nbr_col)
|
||||
|
||||
|
||||
=link_to "Mettre à jour", "#", :class => "btn btn-primary update_table_order_link"
|
||||
@ -164,7 +160,8 @@
|
||||
=#sort_link "code", "Code"
|
||||
|
||||
|
||||
%th
|
||||
-if false
|
||||
%th
|
||||
|
||||
|
||||
%tbody{:id => "#{qi_ordered_table_name}_rows"}
|
||||
|
35
app/views/qi/_qi_ordered_table_head.html.haml
Normal file
35
app/views/qi/_qi_ordered_table_head.html.haml
Normal file
@ -0,0 +1,35 @@
|
||||
|
||||
|
||||
-@qi_table_orders = @qi_table_orders || {}
|
||||
|
||||
-if current_admin
|
||||
|
||||
-if ap = current_admin.admin_preferences.where(:key => "sort_table_"+qi_ordered_table_name).first
|
||||
-qi_ordered_table_personalised = ap.value
|
||||
|
||||
|
||||
-if ap = current_admin.admin_preferences.where(:key => "sort_table_"+qi_ordered_table_name+"_nbr_col").first
|
||||
-qi_ordered_table_nbr_col = ap.value
|
||||
-else
|
||||
-qi_ordered_table_nbr_col = 1
|
||||
|
||||
|
||||
|
||||
-else
|
||||
-qi_ordered_table_personalised = session[:qi_sort_string][qi_ordered_table_name]
|
||||
|
||||
-qi_ordered_table_nbr_col = session[:qi_sort_string][qi_ordered_table_name+"_nbr_col"] || 1
|
||||
|
||||
|
||||
|
||||
|
||||
-if qi_ordered_table_personalised.to_s != ""
|
||||
-@qi_table_orders[qi_ordered_table_name.to_sym] = {}
|
||||
|
||||
-qi_ordered_table_personalised.split(",").each do |k|
|
||||
-if qi_ordered_table_model.qi_table_order[k.to_sym]
|
||||
|
||||
-@qi_table_orders[qi_ordered_table_name.to_sym][k.to_sym] = qi_ordered_table_model.qi_table_order[k.to_sym]
|
||||
|
||||
-else
|
||||
-@qi_table_orders[qi_ordered_table_name.to_sym] = qi_ordered_table_model.qi_table_order
|
22
app/views/qi/_qi_ordered_table_object.html.haml
Normal file
22
app/views/qi/_qi_ordered_table_object.html.haml
Normal file
@ -0,0 +1,22 @@
|
||||
-qi_ordered_table_model = object.class
|
||||
-qi_ordered_table_name = qi_ordered_table_model.to_s.tableize
|
||||
|
||||
-if !@qi_table_orders
|
||||
=render :partial => "qi/qi_ordered_table_head", :locals => {:qi_ordered_table_name => qi_ordered_table_name, :qi_ordered_table_model => qi_ordered_table_model}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
-@qi_table_orders[qi_ordered_table_name.to_sym].each do |key,value|
|
||||
-if tr[:"#{key}"]
|
||||
=raw tr[:"#{key}"]
|
||||
-elsif object.respond_to?(key.to_s)
|
||||
%td
|
||||
=#eval("#{qi_ordered_table_name.singularize}.send('#{key}')")
|
||||
=object.send(key.to_s)
|
||||
|
||||
-else
|
||||
%td
|
||||
Err :
|
||||
=key
|
10
app/views/qi/_qi_ordered_table_search_footer.html.haml
Normal file
10
app/views/qi/_qi_ordered_table_search_footer.html.haml
Normal file
@ -0,0 +1,10 @@
|
||||
=link_to ic(:search)+" Rechercher", "#", :class => "btn btn-default btn-qi-search", :onclick => "$(this).closest('form').submit();$(this).html('...');return false;"
|
||||
|
||||
|
||||
.results_count
|
||||
="(#{collection_object.total_count}) résultat(s)"
|
||||
|
||||
="-"
|
||||
|
||||
=select_tag "search[per_page]", options_for_select([50,100,200,500], params[:search][:per_page])
|
||||
résultats par page
|
@ -1,5 +1,40 @@
|
||||
Rails.application.routes.draw do
|
||||
|
||||
namespace :admin do
|
||||
resources :mail_hists do
|
||||
member do
|
||||
|
||||
end
|
||||
collection do
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
namespace :admin do
|
||||
resources :m_odr_remises do
|
||||
member do
|
||||
get :confirm
|
||||
end
|
||||
collection do
|
||||
get :generate_all
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
namespace :admin do
|
||||
resources :m_odr_virements do
|
||||
member do
|
||||
get :admin_valid
|
||||
get :refuse
|
||||
end
|
||||
collection do
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
namespace :admin do
|
||||
resources :m_odr_trackers do
|
||||
member do
|
||||
@ -80,7 +115,7 @@ Rails.application.routes.draw do
|
||||
namespace :admin do
|
||||
resources :m_odr_files do
|
||||
member do
|
||||
|
||||
get :download
|
||||
end
|
||||
collection do
|
||||
|
||||
@ -91,7 +126,7 @@ Rails.application.routes.draw do
|
||||
namespace :admin do
|
||||
resources :m_odr_reps do
|
||||
member do
|
||||
|
||||
get :generate_virement
|
||||
end
|
||||
collection do
|
||||
|
||||
@ -756,6 +791,9 @@ Rails.application.routes.draw do
|
||||
resources :audio_files
|
||||
resources :video_files
|
||||
resources :download_data_files
|
||||
|
||||
resources :download_odr_files
|
||||
|
||||
|
||||
get 'fr/read/:token' => "public/data_files#read", :as => :read_data_file
|
||||
|
||||
|
62
db/migrate/20200229130133_add_caches_to_m_odr_reps.rb
Normal file
62
db/migrate/20200229130133_add_caches_to_m_odr_reps.rb
Normal file
@ -0,0 +1,62 @@
|
||||
class AddCachesToMOdrReps < ActiveRecord::Migration[6.0]
|
||||
def change
|
||||
|
||||
add_column :m_odr_reps, :archived, :boolean, :default => true
|
||||
|
||||
add_column :m_odr_reps, :particular_id, :integer
|
||||
|
||||
add_column :m_odr_reps, :cc_particular_civilite, :string
|
||||
add_column :m_odr_reps, :ac_particular_civilite, :string
|
||||
|
||||
add_column :m_odr_reps, :cc_particular_name, :string
|
||||
add_column :m_odr_reps, :ac_particular_name, :string
|
||||
|
||||
add_column :m_odr_reps, :cc_particular_firstname, :string
|
||||
add_column :m_odr_reps, :ac_particular_firstname, :string
|
||||
|
||||
add_column :m_odr_reps, :cc_particular_address_2, :string
|
||||
add_column :m_odr_reps, :ac_particular_address_2, :string
|
||||
|
||||
add_column :m_odr_reps, :cc_particular_address_3, :string
|
||||
add_column :m_odr_reps, :ac_particular_address_3, :string
|
||||
|
||||
add_column :m_odr_reps, :cc_particular_cp, :string
|
||||
add_column :m_odr_reps, :ac_particular_cp, :string
|
||||
|
||||
add_column :m_odr_reps, :cc_particular_city, :string
|
||||
add_column :m_odr_reps, :ac_particular_city, :string
|
||||
|
||||
add_column :m_odr_reps, :cc_particular_country, :string
|
||||
add_column :m_odr_reps, :ac_particular_country, :string
|
||||
|
||||
add_column :m_odr_reps, :cc_particular_email, :string
|
||||
add_column :m_odr_reps, :ac_particular_email, :string
|
||||
|
||||
add_column :m_odr_reps, :cc_particular_tel, :string
|
||||
add_column :m_odr_reps, :ac_particular_tel, :string
|
||||
|
||||
add_column :m_odr_reps, :cc_product_name, :string
|
||||
add_column :m_odr_reps, :ac_product_name, :string
|
||||
|
||||
add_column :m_odr_reps, :cc_product_brand, :string
|
||||
add_column :m_odr_reps, :ac_product_brand, :string
|
||||
|
||||
add_column :m_odr_reps, :m_odr_brand_id, :integer
|
||||
|
||||
|
||||
add_column :m_odr_reps, :cc_tracker_name, :string
|
||||
add_column :m_odr_reps, :ac_tracker_name, :string
|
||||
|
||||
|
||||
add_column :m_odr_reps, :cc_place_name, :string
|
||||
add_column :m_odr_reps, :ac_place_name, :string
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
end
|
||||
end
|
13
db/migrate/20200229182042_add_enabled_to_m_odr_files.rb
Normal file
13
db/migrate/20200229182042_add_enabled_to_m_odr_files.rb
Normal file
@ -0,0 +1,13 @@
|
||||
class AddEnabledToMOdrFiles < ActiveRecord::Migration[6.0]
|
||||
def change
|
||||
add_column :m_odr_files, :admin_id, :integer
|
||||
add_column :m_odr_files, :admin_validator_id, :integer
|
||||
add_column :m_odr_files, :admin_ok, :boolean
|
||||
add_column :m_odr_files, :reject_reason, :string
|
||||
add_column :m_odr_files, :reject_reason_description, :text
|
||||
|
||||
add_column :m_odr_reps, :file_ok_id, :integer
|
||||
|
||||
|
||||
end
|
||||
end
|
18
db/migrate/20200229185402_add_enabled_to_m_odr_rep_rib.rb
Normal file
18
db/migrate/20200229185402_add_enabled_to_m_odr_rep_rib.rb
Normal file
@ -0,0 +1,18 @@
|
||||
class AddEnabledToMOdrRepRib < ActiveRecord::Migration[6.0]
|
||||
def change
|
||||
add_column :m_odr_rep_ribs, :admin_validator_id, :integer
|
||||
add_column :m_odr_rep_ribs, :admin_ok, :boolean
|
||||
add_column :m_odr_rep_ribs, :reject_reason, :string
|
||||
add_column :m_odr_rep_ribs, :reject_reason_description, :text
|
||||
|
||||
add_column :m_odr_reps, :rib_ok_id, :integer
|
||||
|
||||
|
||||
add_column :m_odr_reps, :cc_rib_admin_ok, :boolean, :default => false
|
||||
add_column :m_odr_reps, :ac_rib_admin_ok, :boolean, :default => false
|
||||
add_column :m_odr_reps, :cc_file_admin_ok, :boolean, :default => false
|
||||
add_column :m_odr_reps, :ac_file_admin_ok, :boolean, :default => false
|
||||
|
||||
|
||||
end
|
||||
end
|
@ -0,0 +1,6 @@
|
||||
class AddAdminValidationsToMOdrReps < ActiveRecord::Migration[6.0]
|
||||
def change
|
||||
add_column :m_odr_reps, :cc_admin_ok_to_send, :boolean, :default => false
|
||||
add_column :m_odr_reps, :ac_admin_ok_to_send, :boolean, :default => false
|
||||
end
|
||||
end
|
48
db/migrate/20200229193617_create_m_odr_virements.rb
Normal file
48
db/migrate/20200229193617_create_m_odr_virements.rb
Normal file
@ -0,0 +1,48 @@
|
||||
class CreateMOdrVirements < ActiveRecord::Migration[6.0]
|
||||
def change
|
||||
create_table :m_odr_virements do |t|
|
||||
t.references :m_odr, foreign_key: true
|
||||
t.references :m_odr_rep, foreign_key: true
|
||||
t.references :m_odr_rep_rib, foreign_key: true
|
||||
t.boolean :enabled, :default => false
|
||||
t.boolean :sended, :default => false
|
||||
t.boolean :refused, :default => false
|
||||
t.string :reject_reason
|
||||
t.text :reject_reason_description
|
||||
t.decimal :cc_remise, :precision => 14, :scale => 2
|
||||
t.decimal :ac_remise, :precision => 14, :scale => 2
|
||||
|
||||
t.decimal :amount, :precision => 14, :scale => 2
|
||||
|
||||
t.string :cc_iban_to
|
||||
t.string :ac_iban_to
|
||||
t.string :cc_bic_to
|
||||
t.string :ac_bic_to
|
||||
|
||||
t.integer :m_odr_remise_id
|
||||
t.integer :m_odr_bank_account_id
|
||||
|
||||
t.string :cc_iban_from
|
||||
t.string :ac_iban_from
|
||||
t.string :cc_bic_from
|
||||
t.string :ac_bic_from
|
||||
|
||||
t.string :cc_bank_name
|
||||
t.string :ac_bank_name
|
||||
|
||||
t.string :cc_bank_subject
|
||||
t.string :ac_bank_subject
|
||||
|
||||
t.string :cc_libelle
|
||||
t.string :ac_libelle
|
||||
|
||||
t.datetime :send_at
|
||||
|
||||
t.datetime :confirmed_at
|
||||
|
||||
t.string :token
|
||||
|
||||
t.timestamps
|
||||
end
|
||||
end
|
||||
end
|
9
db/migrate/20200229222622_add_bank_infos_to_m_odrs.rb
Normal file
9
db/migrate/20200229222622_add_bank_infos_to_m_odrs.rb
Normal file
@ -0,0 +1,9 @@
|
||||
class AddBankInfosToMOdrs < ActiveRecord::Migration[6.0]
|
||||
def change
|
||||
add_column :m_odrs, :bic, :string
|
||||
add_column :m_odrs, :iban, :string
|
||||
add_column :m_odrs, :bank_name, :string
|
||||
add_column :m_odrs, :bank_ics, :string
|
||||
add_column :m_odrs, :bank_subject, :string
|
||||
end
|
||||
end
|
29
db/migrate/20200229223930_create_m_odr_remises.rb
Normal file
29
db/migrate/20200229223930_create_m_odr_remises.rb
Normal file
@ -0,0 +1,29 @@
|
||||
class CreateMOdrRemises < ActiveRecord::Migration[6.0]
|
||||
def change
|
||||
create_table :m_odr_remises do |t|
|
||||
t.text :notes
|
||||
t.references :m_odr, foreign_key: true
|
||||
t.datetime :download_at
|
||||
t.datetime :confirmed_at
|
||||
t.string :state, :default => "Généré"
|
||||
t.boolean :confirmed, :default => false
|
||||
t.integer :admin_id
|
||||
|
||||
t.integer :cc_nbr_virements
|
||||
t.integer :ac_nbr_virements
|
||||
|
||||
t.string :cc_iban_from
|
||||
t.string :ac_iban_from
|
||||
t.string :cc_bic_from
|
||||
t.string :ac_bic_from
|
||||
|
||||
t.string :cc_bank_name
|
||||
t.string :ac_bank_name
|
||||
|
||||
t.string :cc_bank_subject
|
||||
t.string :ac_bank_subject
|
||||
|
||||
t.timestamps
|
||||
end
|
||||
end
|
||||
end
|
33
db/migrate/20200301125633_create_mail_hists.rb
Normal file
33
db/migrate/20200301125633_create_mail_hists.rb
Normal file
@ -0,0 +1,33 @@
|
||||
class CreateMailHists < ActiveRecord::Migration[6.0]
|
||||
def change
|
||||
create_table :mail_hists do |t|
|
||||
|
||||
t.references :lang_site
|
||||
t.string :from_email
|
||||
|
||||
t.string :to_email
|
||||
|
||||
t.string :subject
|
||||
|
||||
t.text :body
|
||||
|
||||
t.string :subject_send
|
||||
|
||||
t.text :body_send
|
||||
|
||||
|
||||
t.references :mail_content, foreign_key: true
|
||||
t.references :mail_type, foreign_key: true
|
||||
t.string :element_type
|
||||
t.integer :element_id
|
||||
t.references :m_odr_rep, foreign_key: true
|
||||
t.references :m_odr, foreign_key: true
|
||||
t.boolean :mj_read
|
||||
t.string :mj_token
|
||||
|
||||
t.integer :nbr_send
|
||||
|
||||
t.timestamps
|
||||
end
|
||||
end
|
||||
end
|
166
db/schema.rb
166
db/schema.rb
@ -10,7 +10,7 @@
|
||||
#
|
||||
# It's strongly recommended that you check this file into your version control system.
|
||||
|
||||
ActiveRecord::Schema.define(version: 2020_02_27_162438) do
|
||||
ActiveRecord::Schema.define(version: 2020_03_01_125633) do
|
||||
|
||||
create_table "accounting_zones", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4", force: :cascade do |t|
|
||||
t.string "name"
|
||||
@ -508,7 +508,7 @@ ActiveRecord::Schema.define(version: 2020_02_27_162438) do
|
||||
t.index ["cible_id"], name: "index_link_contents_on_cible_id"
|
||||
end
|
||||
|
||||
create_table "m_odr_brands", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4", force: :cascade do |t|
|
||||
create_table "m_odr_brands", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC", force: :cascade do |t|
|
||||
t.string "name"
|
||||
t.string "ref"
|
||||
t.integer "image_file_id"
|
||||
@ -521,7 +521,7 @@ ActiveRecord::Schema.define(version: 2020_02_27_162438) do
|
||||
t.index ["m_odr_id"], name: "index_m_odr_brands_on_m_odr_id"
|
||||
end
|
||||
|
||||
create_table "m_odr_file_types", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4", force: :cascade do |t|
|
||||
create_table "m_odr_file_types", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC", force: :cascade do |t|
|
||||
t.string "name"
|
||||
t.boolean "need_file"
|
||||
t.text "description"
|
||||
@ -531,7 +531,7 @@ ActiveRecord::Schema.define(version: 2020_02_27_162438) do
|
||||
t.index ["m_odr_id"], name: "index_m_odr_file_types_on_m_odr_id"
|
||||
end
|
||||
|
||||
create_table "m_odr_files", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4", force: :cascade do |t|
|
||||
create_table "m_odr_files", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC", force: :cascade do |t|
|
||||
t.string "file"
|
||||
t.bigint "m_odr_rep_id"
|
||||
t.datetime "action_date"
|
||||
@ -543,11 +543,16 @@ ActiveRecord::Schema.define(version: 2020_02_27_162438) do
|
||||
t.string "token"
|
||||
t.datetime "created_at", precision: 6, null: false
|
||||
t.datetime "updated_at", precision: 6, null: false
|
||||
t.integer "admin_id"
|
||||
t.integer "admin_validator_id"
|
||||
t.boolean "admin_ok"
|
||||
t.string "reject_reason"
|
||||
t.text "reject_reason_description"
|
||||
t.index ["m_odr_file_type_id"], name: "index_m_odr_files_on_m_odr_file_type_id"
|
||||
t.index ["m_odr_rep_id"], name: "index_m_odr_files_on_m_odr_rep_id"
|
||||
end
|
||||
|
||||
create_table "m_odr_places", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4", force: :cascade do |t|
|
||||
create_table "m_odr_places", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC", force: :cascade do |t|
|
||||
t.string "name"
|
||||
t.string "enseigne"
|
||||
t.string "city"
|
||||
@ -563,7 +568,7 @@ ActiveRecord::Schema.define(version: 2020_02_27_162438) do
|
||||
t.index ["m_odr_id"], name: "index_m_odr_places_on_m_odr_id"
|
||||
end
|
||||
|
||||
create_table "m_odr_product_remises", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4", force: :cascade do |t|
|
||||
create_table "m_odr_product_remises", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC", force: :cascade do |t|
|
||||
t.bigint "m_odr_product_id"
|
||||
t.integer "qte"
|
||||
t.decimal "amount", precision: 14, scale: 2
|
||||
@ -572,7 +577,7 @@ ActiveRecord::Schema.define(version: 2020_02_27_162438) do
|
||||
t.index ["m_odr_product_id"], name: "index_m_odr_product_remises_on_m_odr_product_id"
|
||||
end
|
||||
|
||||
create_table "m_odr_products", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4", force: :cascade do |t|
|
||||
create_table "m_odr_products", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC", force: :cascade do |t|
|
||||
t.string "name"
|
||||
t.bigint "m_odr_id"
|
||||
t.string "ref"
|
||||
@ -584,7 +589,28 @@ ActiveRecord::Schema.define(version: 2020_02_27_162438) do
|
||||
t.index ["m_odr_id"], name: "index_m_odr_products_on_m_odr_id"
|
||||
end
|
||||
|
||||
create_table "m_odr_rep_ribs", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4", force: :cascade do |t|
|
||||
create_table "m_odr_remises", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4", force: :cascade do |t|
|
||||
t.text "notes"
|
||||
t.bigint "m_odr_id"
|
||||
t.datetime "download_at"
|
||||
t.datetime "confirmed_at"
|
||||
t.string "state", default: "Généré"
|
||||
t.boolean "confirmed", default: false
|
||||
t.integer "admin_id"
|
||||
t.string "cc_iban_from"
|
||||
t.string "ac_iban_from"
|
||||
t.string "cc_bic_from"
|
||||
t.string "ac_bic_from"
|
||||
t.string "cc_bank_name"
|
||||
t.string "ac_bank_name"
|
||||
t.string "cc_bank_subject"
|
||||
t.string "ac_bank_subject"
|
||||
t.datetime "created_at", precision: 6, null: false
|
||||
t.datetime "updated_at", precision: 6, null: false
|
||||
t.index ["m_odr_id"], name: "index_m_odr_remises_on_m_odr_id"
|
||||
end
|
||||
|
||||
create_table "m_odr_rep_ribs", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC", force: :cascade do |t|
|
||||
t.string "iban"
|
||||
t.string "bic"
|
||||
t.string "name"
|
||||
@ -598,10 +624,14 @@ ActiveRecord::Schema.define(version: 2020_02_27_162438) do
|
||||
t.text "notes"
|
||||
t.datetime "created_at", precision: 6, null: false
|
||||
t.datetime "updated_at", precision: 6, null: false
|
||||
t.integer "admin_validator_id"
|
||||
t.boolean "admin_ok"
|
||||
t.string "reject_reason"
|
||||
t.text "reject_reason_description"
|
||||
t.index ["admin_id"], name: "index_m_odr_rep_ribs_on_admin_id"
|
||||
end
|
||||
|
||||
create_table "m_odr_reps", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4", force: :cascade do |t|
|
||||
create_table "m_odr_reps", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC", force: :cascade do |t|
|
||||
t.string "state"
|
||||
t.integer "admin_id"
|
||||
t.datetime "admin_valid"
|
||||
@ -616,13 +646,52 @@ ActiveRecord::Schema.define(version: 2020_02_27_162438) do
|
||||
t.datetime "created_at", precision: 6, null: false
|
||||
t.datetime "updated_at", precision: 6, null: false
|
||||
t.bigint "m_odr_tracker_id"
|
||||
t.boolean "archived", default: true
|
||||
t.integer "particular_id"
|
||||
t.string "cc_particular_civilite"
|
||||
t.string "ac_particular_civilite"
|
||||
t.string "cc_particular_name"
|
||||
t.string "ac_particular_name"
|
||||
t.string "cc_particular_firstname"
|
||||
t.string "ac_particular_firstname"
|
||||
t.string "cc_particular_address_2"
|
||||
t.string "ac_particular_address_2"
|
||||
t.string "cc_particular_address_3"
|
||||
t.string "ac_particular_address_3"
|
||||
t.string "cc_particular_cp"
|
||||
t.string "ac_particular_cp"
|
||||
t.string "cc_particular_city"
|
||||
t.string "ac_particular_city"
|
||||
t.string "cc_particular_country"
|
||||
t.string "ac_particular_country"
|
||||
t.string "cc_particular_email"
|
||||
t.string "ac_particular_email"
|
||||
t.string "cc_particular_tel"
|
||||
t.string "ac_particular_tel"
|
||||
t.string "cc_product_name"
|
||||
t.string "ac_product_name"
|
||||
t.string "cc_product_brand"
|
||||
t.string "ac_product_brand"
|
||||
t.integer "m_odr_brand_id"
|
||||
t.string "cc_tracker_name"
|
||||
t.string "ac_tracker_name"
|
||||
t.string "cc_place_name"
|
||||
t.string "ac_place_name"
|
||||
t.integer "file_ok_id"
|
||||
t.integer "rib_ok_id"
|
||||
t.boolean "cc_rib_admin_ok", default: false
|
||||
t.boolean "ac_rib_admin_ok", default: false
|
||||
t.boolean "cc_file_admin_ok", default: false
|
||||
t.boolean "ac_file_admin_ok", default: false
|
||||
t.boolean "cc_admin_ok_to_send", default: false
|
||||
t.boolean "ac_admin_ok_to_send", default: false
|
||||
t.index ["m_odr_id"], name: "index_m_odr_reps_on_m_odr_id"
|
||||
t.index ["m_odr_place_id"], name: "index_m_odr_reps_on_m_odr_place_id"
|
||||
t.index ["m_odr_product_id"], name: "index_m_odr_reps_on_m_odr_product_id"
|
||||
t.index ["m_odr_tracker_id"], name: "index_m_odr_reps_on_m_odr_tracker_id"
|
||||
end
|
||||
|
||||
create_table "m_odr_trackers", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4", force: :cascade do |t|
|
||||
create_table "m_odr_trackers", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC", force: :cascade do |t|
|
||||
t.string "name"
|
||||
t.string "token"
|
||||
t.bigint "m_odr_id"
|
||||
@ -631,6 +700,44 @@ ActiveRecord::Schema.define(version: 2020_02_27_162438) do
|
||||
t.index ["m_odr_id"], name: "index_m_odr_trackers_on_m_odr_id"
|
||||
end
|
||||
|
||||
create_table "m_odr_virements", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4", force: :cascade do |t|
|
||||
t.bigint "m_odr_id"
|
||||
t.bigint "m_odr_rep_id"
|
||||
t.bigint "m_odr_rep_rib_id"
|
||||
t.boolean "enabled", default: false
|
||||
t.boolean "sended", default: false
|
||||
t.boolean "refused", default: false
|
||||
t.string "reject_reason"
|
||||
t.text "reject_reason_description"
|
||||
t.decimal "cc_remise", precision: 14, scale: 2
|
||||
t.decimal "ac_remise", precision: 14, scale: 2
|
||||
t.decimal "amount", precision: 14, scale: 2
|
||||
t.string "cc_iban_to"
|
||||
t.string "ac_iban_to"
|
||||
t.string "cc_bic_to"
|
||||
t.string "ac_bic_to"
|
||||
t.integer "m_odr_remise_id"
|
||||
t.integer "m_odr_bank_account_id"
|
||||
t.string "cc_iban_from"
|
||||
t.string "ac_iban_from"
|
||||
t.string "cc_bic_from"
|
||||
t.string "ac_bic_from"
|
||||
t.string "cc_bank_name"
|
||||
t.string "ac_bank_name"
|
||||
t.string "cc_bank_subject"
|
||||
t.string "ac_bank_subject"
|
||||
t.string "cc_libelle"
|
||||
t.string "ac_libelle"
|
||||
t.datetime "send_at"
|
||||
t.datetime "confirmed_at"
|
||||
t.string "token"
|
||||
t.datetime "created_at", precision: 6, null: false
|
||||
t.datetime "updated_at", precision: 6, null: false
|
||||
t.index ["m_odr_id"], name: "index_m_odr_virements_on_m_odr_id"
|
||||
t.index ["m_odr_rep_id"], name: "index_m_odr_virements_on_m_odr_rep_id"
|
||||
t.index ["m_odr_rep_rib_id"], name: "index_m_odr_virements_on_m_odr_rep_rib_id"
|
||||
end
|
||||
|
||||
create_table "m_odrs", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4", force: :cascade do |t|
|
||||
t.string "name"
|
||||
t.string "slug"
|
||||
@ -670,6 +777,11 @@ ActiveRecord::Schema.define(version: 2020_02_27_162438) do
|
||||
t.string "thank_title"
|
||||
t.text "thank_text"
|
||||
t.string "email_from"
|
||||
t.string "bic"
|
||||
t.string "iban"
|
||||
t.string "bank_name"
|
||||
t.string "bank_ics"
|
||||
t.string "bank_subject"
|
||||
t.index ["p_customer_id"], name: "index_m_odrs_on_p_customer_id"
|
||||
end
|
||||
|
||||
@ -689,6 +801,32 @@ ActiveRecord::Schema.define(version: 2020_02_27_162438) do
|
||||
t.index ["mail_type_id"], name: "index_mail_contents_on_mail_type_id"
|
||||
end
|
||||
|
||||
create_table "mail_hists", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4", force: :cascade do |t|
|
||||
t.bigint "lang_site_id"
|
||||
t.string "from_email"
|
||||
t.string "to_email"
|
||||
t.string "subject"
|
||||
t.text "body"
|
||||
t.string "subject_send"
|
||||
t.text "body_send"
|
||||
t.bigint "mail_content_id"
|
||||
t.bigint "mail_type_id"
|
||||
t.string "element_type"
|
||||
t.integer "element_id"
|
||||
t.bigint "m_odr_rep_id"
|
||||
t.bigint "m_odr_id"
|
||||
t.boolean "mj_read"
|
||||
t.string "mj_token"
|
||||
t.integer "nbr_send"
|
||||
t.datetime "created_at", precision: 6, null: false
|
||||
t.datetime "updated_at", precision: 6, null: false
|
||||
t.index ["lang_site_id"], name: "index_mail_hists_on_lang_site_id"
|
||||
t.index ["m_odr_id"], name: "index_mail_hists_on_m_odr_id"
|
||||
t.index ["m_odr_rep_id"], name: "index_mail_hists_on_m_odr_rep_id"
|
||||
t.index ["mail_content_id"], name: "index_mail_hists_on_mail_content_id"
|
||||
t.index ["mail_type_id"], name: "index_mail_hists_on_mail_type_id"
|
||||
end
|
||||
|
||||
create_table "mail_profiles", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4", force: :cascade do |t|
|
||||
t.string "civilite"
|
||||
t.string "firstname"
|
||||
@ -2334,10 +2472,18 @@ ActiveRecord::Schema.define(version: 2020_02_27_162438) do
|
||||
add_foreign_key "m_odr_files", "m_odr_reps"
|
||||
add_foreign_key "m_odr_places", "m_odrs"
|
||||
add_foreign_key "m_odr_product_remises", "m_odr_products"
|
||||
add_foreign_key "m_odr_remises", "m_odrs"
|
||||
add_foreign_key "m_odr_rep_ribs", "admins"
|
||||
add_foreign_key "m_odr_reps", "m_odr_trackers"
|
||||
add_foreign_key "m_odr_trackers", "m_odrs"
|
||||
add_foreign_key "m_odr_virements", "m_odr_rep_ribs"
|
||||
add_foreign_key "m_odr_virements", "m_odr_reps"
|
||||
add_foreign_key "m_odr_virements", "m_odrs"
|
||||
add_foreign_key "m_odrs", "p_customers"
|
||||
add_foreign_key "mail_hists", "m_odr_reps"
|
||||
add_foreign_key "mail_hists", "m_odrs"
|
||||
add_foreign_key "mail_hists", "mail_contents"
|
||||
add_foreign_key "mail_hists", "mail_types"
|
||||
add_foreign_key "mail_types", "m_odrs"
|
||||
add_foreign_key "p_contact_contact_types", "p_contact_types"
|
||||
add_foreign_key "p_contact_contact_types", "p_contacts"
|
||||
|
@ -1,10 +1,13 @@
|
||||
%tr#<%= singular_name %>_row{:id => <%= singular_name %>.id}
|
||||
<% attributes_names.each do |attribute| -%>
|
||||
%td= <%= singular_name %>.<%= attribute %>
|
||||
<% end -%>
|
||||
-tr = {}
|
||||
|
||||
%td.actions
|
||||
= link_to i(:"trash-o"), [:admin, <%= singular_name %>], method: :delete, data: { confirm: 'Voulez-vous vraiment supprimer cet enregistrement ? ' } , :remote => true
|
||||
= link_to i(:pencil), edit_admin_<%= singular_name %>_path(<%= singular_name %>), :remote => true
|
||||
= link_to i(:eye), admin_<%= singular_name %>_path(<%= singular_name %>), :remote => true
|
||||
-tr[:actions] = capture do
|
||||
%td.actions
|
||||
= link_to i(:"trash-o"), [:admin, <%= singular_name %>], method: :delete, data: { confirm: 'Voulez-vous vraiment supprimer cet enregistrement ? ' } , :remote => true
|
||||
= link_to i(:pencil), edit_admin_<%= singular_name %>_path(<%= singular_name %>), :remote => true
|
||||
= link_to i(:eye), admin_<%= singular_name %>_path(<%= singular_name %>), :remote => true
|
||||
|
||||
|
||||
|
||||
|
||||
=render :partial => "qi/qi_ordered_table_object", :locals => {:tr => tr, :object => <%= singular_name %>}
|
@ -11,7 +11,16 @@ class Admin::<%= controller_class_name %>Controller < ApplicationController
|
||||
end
|
||||
|
||||
def index
|
||||
@<%= plural_name %> = <%= class_name %>.order(:name).all
|
||||
@<%= plural_name %> = <%= class_name %>.all
|
||||
|
||||
@<%= plural_name %> = sort_by_sorting(@<%= plural_name %>, "created_at DESC")
|
||||
|
||||
|
||||
params[:search][:per_page] = params[:search][:per_page] || 50
|
||||
per_page = params[:search][:per_page]
|
||||
page = (params[:page] and params[:page] != "") ? params[:page] : 1
|
||||
@<%= plural_name %> = @<%= plural_name %>.page(page).per(per_page)
|
||||
|
||||
|
||||
end
|
||||
|
||||
|
@ -6,17 +6,15 @@
|
||||
|
||||
|
||||
|
||||
.qi_row
|
||||
.qi_pannel.qi_plain.padding
|
||||
%table.table
|
||||
.qi_search_row
|
||||
=form_tag "", :method => "get", :onsubmit => "" do
|
||||
-params[:search] =params[:search] || {}
|
||||
%table
|
||||
%tr
|
||||
<% attributes_names.each do |attribute| -%>
|
||||
%th <%= attribute %>
|
||||
<% end -%>
|
||||
%th.actions
|
||||
|
||||
|
||||
%tbody#<%= plural_name %>_rows
|
||||
=render @<%= plural_name %>
|
||||
|
||||
|
||||
%td
|
||||
|
||||
|
||||
=render :partial => "qi/qi_ordered_table_search_footer", :locals => {:collection_object => @<%= plural_name %>}
|
||||
|
||||
|
||||
=render :partial => "qi/qi_ordered_table", :locals => {:qi_ordered_table_collection => @<%= plural_name %>}
|
||||
|
19
test/fixtures/m_odr_remises.yml
vendored
Normal file
19
test/fixtures/m_odr_remises.yml
vendored
Normal file
@ -0,0 +1,19 @@
|
||||
# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
|
||||
|
||||
one:
|
||||
notes: MyText
|
||||
m_odr: one
|
||||
download_at: 2020-02-29 23:39:30
|
||||
confirmed_at: 2020-02-29 23:39:30
|
||||
state: MyString
|
||||
confirmed: false
|
||||
admin_id: 1
|
||||
|
||||
two:
|
||||
notes: MyText
|
||||
m_odr: two
|
||||
download_at: 2020-02-29 23:39:30
|
||||
confirmed_at: 2020-02-29 23:39:30
|
||||
state: MyString
|
||||
confirmed: false
|
||||
admin_id: 1
|
27
test/fixtures/m_odr_virements.yml
vendored
Normal file
27
test/fixtures/m_odr_virements.yml
vendored
Normal file
@ -0,0 +1,27 @@
|
||||
# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
|
||||
|
||||
one:
|
||||
m_odr: one
|
||||
m_odr_rep: one
|
||||
m_odr_rep_rib: one
|
||||
enabled: false
|
||||
sended: false
|
||||
refused: false
|
||||
reject_reason: MyString
|
||||
reject_reason_description: MyText
|
||||
cc_remise: 9.99
|
||||
cc_iban: MyString
|
||||
cc_bic: MyString
|
||||
|
||||
two:
|
||||
m_odr: two
|
||||
m_odr_rep: two
|
||||
m_odr_rep_rib: two
|
||||
enabled: false
|
||||
sended: false
|
||||
refused: false
|
||||
reject_reason: MyString
|
||||
reject_reason_description: MyText
|
||||
cc_remise: 9.99
|
||||
cc_iban: MyString
|
||||
cc_bic: MyString
|
31
test/fixtures/mail_hists.yml
vendored
Normal file
31
test/fixtures/mail_hists.yml
vendored
Normal file
@ -0,0 +1,31 @@
|
||||
# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
|
||||
|
||||
one:
|
||||
from_email: MyString
|
||||
to_email: MyString
|
||||
subject: MyString
|
||||
body: MyText
|
||||
mail_content: one
|
||||
mail_type: one
|
||||
element_type: MyString
|
||||
element_id: 1
|
||||
m_odr_rep: one
|
||||
m_odr: one
|
||||
mj_read: false
|
||||
mj_token: MyString
|
||||
nbr_send: 1
|
||||
|
||||
two:
|
||||
from_email: MyString
|
||||
to_email: MyString
|
||||
subject: MyString
|
||||
body: MyText
|
||||
mail_content: two
|
||||
mail_type: two
|
||||
element_type: MyString
|
||||
element_id: 1
|
||||
m_odr_rep: two
|
||||
m_odr: two
|
||||
mj_read: false
|
||||
mj_token: MyString
|
||||
nbr_send: 1
|
7
test/models/m_odr_remise_test.rb
Normal file
7
test/models/m_odr_remise_test.rb
Normal file
@ -0,0 +1,7 @@
|
||||
require 'test_helper'
|
||||
|
||||
class MOdrRemiseTest < ActiveSupport::TestCase
|
||||
# test "the truth" do
|
||||
# assert true
|
||||
# end
|
||||
end
|
7
test/models/m_odr_virement_test.rb
Normal file
7
test/models/m_odr_virement_test.rb
Normal file
@ -0,0 +1,7 @@
|
||||
require 'test_helper'
|
||||
|
||||
class MOdrVirementTest < ActiveSupport::TestCase
|
||||
# test "the truth" do
|
||||
# assert true
|
||||
# end
|
||||
end
|
7
test/models/mail_hist_test.rb
Normal file
7
test/models/mail_hist_test.rb
Normal file
@ -0,0 +1,7 @@
|
||||
require 'test_helper'
|
||||
|
||||
class MailHistTest < ActiveSupport::TestCase
|
||||
# test "the truth" do
|
||||
# assert true
|
||||
# end
|
||||
end
|
Loading…
x
Reference in New Issue
Block a user