diff --git a/app/controllers/public/m_odrs_controller.rb b/app/controllers/public/m_odrs_controller.rb
index 154afdc..8742d8f 100644
--- a/app/controllers/public/m_odrs_controller.rb
+++ b/app/controllers/public/m_odrs_controller.rb
@@ -7,7 +7,10 @@ class Public::MOdrsController < ApplicationController
def show
@m_odr = MOdr.where(:slug => params[:slug]).first
-
+ end
+
+ def validation_ba
+ @m_odr = MOdr.where(:slug => params[:slug]).first
end
diff --git a/app/helpers/translation_helper.rb b/app/helpers/translation_helper.rb
index d94e97d..7220a17 100755
--- a/app/helpers/translation_helper.rb
+++ b/app/helpers/translation_helper.rb
@@ -27,7 +27,7 @@ module TranslationHelper
value = value.to_s
if ["brouillon","Reçue"].include?(value)
r = ''+value+''
- elsif ["Virement envoyé", "Validé", "Envoyée"].include?(value)
+ elsif ["Virement envoyé", "Validé", "Envoyée","Non utilisé" ].include?(value)
r = ''+value+''
elsif value == "commande"
r = 'Commande'
@@ -39,7 +39,7 @@ module TranslationHelper
r = 'Facturée'
elsif value == "annulée"
r = 'Annulée'
- elsif ["Erreur sur virement", "Refusé", "Refusée"].include?(value)
+ elsif ["Erreur sur virement", "Refusé", "Refusée", "Déjà utilisé"].include?(value)
r = ''+value+''
elsif ["En cours de traitement"].include?(value)
r = ''+value+''
diff --git a/app/models/m_odr_rep.rb b/app/models/m_odr_rep.rb
index 83dbf2a..ec7b7aa 100644
--- a/app/models/m_odr_rep.rb
+++ b/app/models/m_odr_rep.rb
@@ -336,6 +336,21 @@ file_admin_ok remise particular_civilite particular_name particular_firstname pa
#, :sort_name => "code"
end
+ before_save do
+ self.generate_ba_number if self.m_odr and self.m_odr.ba_number_generator
+ end
+ def generate_ba_number
+
+ if !self.ba_number?
+ self.ba_number = loop do
+
+ ba_number = SecureRandom.hex(3).upcase
+ break ba_number unless MOdrRep.exists?(ba_number: ba_number)
+ end
+
+ end
+ end
+
def csv_m_odr
self.m_odr.name if self.m_odr
end
diff --git a/app/views/admin/m_odr_reps/_left_column.html.haml b/app/views/admin/m_odr_reps/_left_column.html.haml
index cda753f..4aec764 100644
--- a/app/views/admin/m_odr_reps/_left_column.html.haml
+++ b/app/views/admin/m_odr_reps/_left_column.html.haml
@@ -194,6 +194,10 @@ RIB :
- @m_odr_rep.generate_ba
=link_to "Voir le bon d'achat", @m_odr_rep.ba_url, :class => "btn btn-primary"
+ -if @m_odr_rep.m_odr.ba_number_generator
+ -@m_odr_rep.save
+ =@m_odr_rep.ba_number
+
-if false
%p Test mail
diff --git a/app/views/admin/m_odr_reps/ba.html.haml b/app/views/admin/m_odr_reps/ba.html.haml
index 20ceda6..bdbd34e 100644
--- a/app/views/admin/m_odr_reps/ba.html.haml
+++ b/app/views/admin/m_odr_reps/ba.html.haml
@@ -9,6 +9,16 @@
.place{:style => "top:#{@m_odr_rep.m_odr.ba_place_y}px;"}
=@m_odr_rep.place_name
+ =debug @m_odr_rep.m_odr.ba_number_generator
+ -if @m_odr_rep.m_odr and @m_odr_rep.m_odr.ba_number_generator
+ .number{:style => "top:#{@m_odr_rep.m_odr.ba_number_place_y}px;"}
+ =@m_odr_rep.ba_number
+
+
+ -if @m_odr_rep.m_odr and @m_odr_rep.m_odr.ba_show_remise
+ .number{:style => "top:#{@m_odr_rep.m_odr.ba_remise_place_y}px;"}
+ =number_to_currency @m_odr_rep.remise
+
:scss
#ba{
@@ -34,5 +44,16 @@
text-transform:uppercase;
font-weigh:bold;
+ }
+
+ .number{
+ position:absolute;
+ left:0;
+ right:0;
+ text-align:center;
+ font-size:30px;
+ text-transform:uppercase;
+ font-weigh:bold;
+
}
}
\ No newline at end of file
diff --git a/app/views/admin/m_odrs/_form.html.haml b/app/views/admin/m_odrs/_form.html.haml
index b5b6d6d..842c51f 100644
--- a/app/views/admin/m_odrs/_form.html.haml
+++ b/app/views/admin/m_odrs/_form.html.haml
@@ -126,6 +126,17 @@
=# f.input :ba_place_x, :label => "Position X du revendeur (px) :"
= f.input :ba_place_y, :label => "Position Y du revendeur (px) :"
+ = f.input :ba_number_place_y, :label => "Position Y du numéro (px) :"
+
+ = f.input :ba_show_remise, :label => "Afficher la remise ?"
+ = f.input :ba_remise_place_y, :label => "Position Y de la remise (px) :"
+
+
+
+ = f.input :ba_number_generator, :label => "Générer un numéro de bon d'achat unique à l'inscription"
+
+ = f.input :ba_interface, :label => "Générer une interface pour les revendeurs permettant de valider le bon d'achat"
+
diff --git a/app/views/admin/m_odrs/_m_odr.html.haml b/app/views/admin/m_odrs/_m_odr.html.haml
index 2e89580..60f32d1 100644
--- a/app/views/admin/m_odrs/_m_odr.html.haml
+++ b/app/views/admin/m_odrs/_m_odr.html.haml
@@ -9,6 +9,11 @@
-m_odr.m_odr_trackers.each do |mot|
%br
=link_to public_m_odr_path(m_odr.slug, :t => mot.token, :lang => nil), public_m_odr_path(m_odr.slug, :t => mot.token, :lang => nil), :target => "_blank"
+
+ %td
+ -if m_odr.ba_interface
+ = link_to validation_ba_public_m_odr_path(m_odr.slug, :lang => nil), validation_ba_public_m_odr_path(m_odr.slug, :lang => nil), :target => "_blank"
+
%td= m_odr.start_at
%td= m_odr.end_at
%td= m_odr.public_end
diff --git a/app/views/admin/m_odrs/index.html.haml b/app/views/admin/m_odrs/index.html.haml
index b179b4d..3581afc 100644
--- a/app/views/admin/m_odrs/index.html.haml
+++ b/app/views/admin/m_odrs/index.html.haml
@@ -14,6 +14,7 @@
%th Client
%th Nom
%th Lien
+ %th Lien validation BA
%th Date de début
%th Date de fin
%th Fin de réception
diff --git a/app/views/public/m_odrs/validation_ba.html.haml b/app/views/public/m_odrs/validation_ba.html.haml
new file mode 100644
index 0000000..9e99769
--- /dev/null
+++ b/app/views/public/m_odrs/validation_ba.html.haml
@@ -0,0 +1,89 @@
+
+
+
+-if @m_odr.start_at > Date.today and params[:force].to_s == ""
+ %div{:style => "margin-top:30px;font-weight:bold;font-weight:800;font-size:2em;text-transform:uppercase;font-family: 'Open Sans','Helvetica Neue', Helvetica, sans-serif;text-align:center;"}
+ -count = ((@m_odr.start_at) - (Date.today))
+
+ -if @m_odr.landing_text?
+ =@m_odr.landing_text
+ -else
+ Démarrage
+ %div{:style => "font-weight:bold;font-weight:800;text-transform:uppercase;font-family: 'Open Sans','Helvetica Neue', Helvetica, sans-serif;text-align:center;line-height:200px;position:relative;top:-40px"}
+ dans
+ .clock{:style => "margin:2em;display:inline-block;width:auto;margin:0 auto;position:relative;top:35px"}
+ -if count > 1
+ jours !
+ -else
+ jour !
+
+ :javascript
+ var countup;
+
+ var clock = $('.clock').FlipClock(0, {
+ clockFace: 'Counter',
+ minimumDigits: 1,
+ callbacks:{
+ init:function (){
+
+ }
+ }
+ });
+ if(clock_max > 0){
+ countup = setInterval(function() {
+ clock.increment();
+ if(clock.getTime().time >= clock_max) {
+ clock.stop();
+ clearInterval(countup);
+ }
+ }, 0);}
+
+ -if false
+ %p{:style => "font-weight:bold;font-size:2em;text-transform:uppercase;font-family:'Helvetica Neue', Helvetica, sans-serif;"}
+ jours avant l'ouverture
+
+
+-else
+ #odr_form
+ .form_pannel
+ =form_tag "", :method => "get", :onsubmit => "" do
+ %p
+ =text_field_tag :code, params[:code],:class => "form-control", :placeholder => "Numéro du bon d'achat"
+
+ %p{:style => "text-align:center;"}
+ =submit_tag "Rechercher", :class => "btn btn-primary"
+
+
+ %hr
+ -if params[:code].to_s != ""
+ -@m_odr_rep = MOdrRep.where(:ba_number => params[:code].to_s.upcase).first
+
+ -if params[:code].to_s != "" and !@m_odr_rep
+ %p Le bon d'achat portant ce numéro n'a pas été trouvé
+
+ -elsif @m_odr_rep
+ -if params[:to_use].to_s == "true"
+ -@m_odr_rep.ba_used = true
+ -@m_odr_rep.save
+
+ %p
+ N° Bon d'achat :
+ =@m_odr_rep.ba_number
+
+ d'une valeur de
+ =number_to_currency @m_odr_rep.remise
+
+ %p
+ Statut :
+ -if !@m_odr_rep.ba_used
+ =state_helper "Non utilisé"
+ %br
+ %br
+ =link_to "Signaler comme utilisé dès maintenant", params.permit!.merge({:to_use => true}), :data => {:confirm => "Attention, une fois indiqué comme utilisé ce bon d'achat sera désactivé."}
+
+ -else
+ =state_helper "Déjà utilisé"
+
+
\ No newline at end of file
diff --git a/config/routes.rb b/config/routes.rb
index 1a595d3..6758541 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -1,5 +1,10 @@
Rails.application.routes.draw do
+
+ get ':slug/validation_ba.html', to: 'public/m_odrs#validation_ba', :as => :validation_ba_public_m_odr
+
+
+
get "qi_help" => "admin/qi_helps#update", :as => :admin_qi_helps
@@ -956,9 +961,9 @@ Rails.application.routes.draw do
get "plan" => "public/home#plan"
-
get ':slug.html', to: 'public/m_odrs#show', :as => :public_m_odr
+
root "admin/admin_auths#index"
diff --git a/db/migrate/20201006115331_add_ba_number_generation_to_m_odrs.rb b/db/migrate/20201006115331_add_ba_number_generation_to_m_odrs.rb
new file mode 100644
index 0000000..0d1a9b2
--- /dev/null
+++ b/db/migrate/20201006115331_add_ba_number_generation_to_m_odrs.rb
@@ -0,0 +1,16 @@
+class AddBaNumberGenerationToMOdrs < ActiveRecord::Migration[6.0]
+ def change
+ add_column :m_odrs, :ba_number_generator, :boolean, :default => false
+ add_column :m_odrs, :ba_interface, :boolean, :default => false
+
+ add_column :m_odrs, :ba_show_remise, :boolean, :default => false
+
+ add_column :m_odrs, :ba_number_place_y, :integer
+ add_column :m_odrs, :ba_number_place_x, :integer
+
+
+
+ add_column :m_odrs, :ba_remise_place_y, :integer
+ add_column :m_odrs, :ba_remise_place_x, :integer
+ end
+end
diff --git a/db/migrate/20201006115533_add_ba_number_to_m_odr_reps.rb b/db/migrate/20201006115533_add_ba_number_to_m_odr_reps.rb
new file mode 100644
index 0000000..27fb9ac
--- /dev/null
+++ b/db/migrate/20201006115533_add_ba_number_to_m_odr_reps.rb
@@ -0,0 +1,6 @@
+class AddBaNumberToMOdrReps < ActiveRecord::Migration[6.0]
+ def change
+ add_column :m_odr_reps, :ba_number, :string
+ add_column :m_odr_reps, :ba_used, :boolean, :default => false
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index b38d114..bbb21f0 100644
--- a/db/schema.rb
+++ b/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_07_30_084942) do
+ActiveRecord::Schema.define(version: 2020_10_06_115533) do
create_table "accounting_zones", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4", force: :cascade do |t|
t.string "name"
@@ -517,7 +517,7 @@ ActiveRecord::Schema.define(version: 2020_07_30_084942) do
t.datetime "updated_at", precision: 6, null: false
end
- create_table "import_csv_champs", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4", force: :cascade do |t|
+ create_table "import_csv_champs", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC", force: :cascade do |t|
t.string "champ"
t.string "header"
t.string "value"
@@ -527,7 +527,7 @@ ActiveRecord::Schema.define(version: 2020_07_30_084942) do
t.index ["import_csv_id"], name: "index_import_csv_champs_on_import_csv_id"
end
- create_table "import_csv_elements", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4", force: :cascade do |t|
+ create_table "import_csv_elements", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC", force: :cascade do |t|
t.bigint "import_csv_id"
t.string "element_type"
t.integer "element_id"
@@ -536,7 +536,7 @@ ActiveRecord::Schema.define(version: 2020_07_30_084942) do
t.index ["import_csv_id"], name: "index_import_csv_elements_on_import_csv_id"
end
- create_table "import_csv_headers", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4", force: :cascade do |t|
+ create_table "import_csv_headers", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC", force: :cascade do |t|
t.bigint "import_csv_id"
t.string "name"
t.string "champ"
@@ -546,7 +546,7 @@ ActiveRecord::Schema.define(version: 2020_07_30_084942) do
t.index ["import_csv_id"], name: "index_import_csv_headers_on_import_csv_id"
end
- create_table "import_csvs", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4", force: :cascade do |t|
+ create_table "import_csvs", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC", force: :cascade do |t|
t.bigint "m_odr_id"
t.string "file"
t.text "notes"
@@ -827,6 +827,8 @@ ActiveRecord::Schema.define(version: 2020_07_30_084942) do
t.string "reduc_code"
t.date "buy_at"
t.decimal "reduc", precision: 14, scale: 2
+ t.string "ba_number"
+ t.boolean "ba_used", 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_cat_id"], name: "index_m_odr_reps_on_m_odr_product_cat_id"
@@ -958,6 +960,13 @@ ActiveRecord::Schema.define(version: 2020_07_30_084942) do
t.boolean "product_process", default: true
t.boolean "product_needed", default: true
t.string "reduc_label"
+ t.boolean "ba_number_generator", default: false
+ t.boolean "ba_interface", default: false
+ t.boolean "ba_show_remise", default: false
+ t.integer "ba_number_place_y"
+ t.integer "ba_number_place_x"
+ t.integer "ba_remise_place_y"
+ t.integer "ba_remise_place_x"
t.index ["p_customer_id"], name: "index_m_odrs_on_p_customer_id"
end
@@ -1029,7 +1038,7 @@ ActiveRecord::Schema.define(version: 2020_07_30_084942) do
t.datetime "updated_at", precision: 6, null: false
end
- create_table "mail_type_cats", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4", force: :cascade do |t|
+ create_table "mail_type_cats", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC", force: :cascade do |t|
t.string "name"
t.bigint "m_odr_id"
t.string "slug"