suite
This commit is contained in:
parent
947d5d8439
commit
d4c76bafa8
@ -21,7 +21,7 @@ class Admin::MOdrBrandsController < ApplicationController
|
||||
end
|
||||
|
||||
def new
|
||||
@m_odr_brand = MOdrBrand.new
|
||||
@m_odr_brand = MOdrBrand.new(:m_odr_id => params[:m_odr_id])
|
||||
|
||||
end
|
||||
|
||||
|
@ -21,7 +21,7 @@ class Admin::MOdrFileTypesController < ApplicationController
|
||||
end
|
||||
|
||||
def new
|
||||
@m_odr_file_type = MOdrFileType.new
|
||||
@m_odr_file_type = MOdrFileType.new(:m_odr_id => params[:m_odr_id])
|
||||
|
||||
end
|
||||
|
||||
|
@ -21,7 +21,7 @@ class Admin::MOdrPlacesController < ApplicationController
|
||||
end
|
||||
|
||||
def new
|
||||
@m_odr_place = MOdrPlace.new
|
||||
@m_odr_place = MOdrPlace.new(:m_odr_id => params[:m_odr_id])
|
||||
|
||||
end
|
||||
|
||||
|
@ -30,7 +30,7 @@ class Admin::MOdrProductCatsController < ApplicationController
|
||||
end
|
||||
|
||||
def new
|
||||
@m_odr_product_cat = MOdrProductCat.new
|
||||
@m_odr_product_cat = MOdrProductCat.new(:m_odr_id => params[:m_odr_id])
|
||||
|
||||
end
|
||||
|
||||
|
@ -21,7 +21,7 @@ class Admin::MOdrProductsController < ApplicationController
|
||||
end
|
||||
|
||||
def new
|
||||
@m_odr_product = MOdrProduct.new
|
||||
@m_odr_product = MOdrProduct.new(:m_odr => MOdr.find(params[:m_odr_id]))
|
||||
|
||||
end
|
||||
|
||||
|
@ -21,7 +21,7 @@ class Admin::MOdrTrackersController < ApplicationController
|
||||
end
|
||||
|
||||
def new
|
||||
@m_odr_tracker = MOdrTracker.new
|
||||
@m_odr_tracker = MOdrTracker.new(:m_odr_id => params[:m_odr_id])
|
||||
|
||||
end
|
||||
|
||||
|
@ -20,6 +20,11 @@ class Admin::MOdrsController < ApplicationController
|
||||
|
||||
end
|
||||
|
||||
def stats
|
||||
@m_odr = MOdr.find(params[:id])
|
||||
|
||||
end
|
||||
|
||||
def new
|
||||
@m_odr = MOdr.new
|
||||
|
||||
|
76
app/controllers/admin/mail_types_controller.rb
Normal file
76
app/controllers/admin/mail_types_controller.rb
Normal file
@ -0,0 +1,76 @@
|
||||
# -*- encoding : utf-8 -*-
|
||||
|
||||
class Admin::MailTypesController < ApplicationController
|
||||
layout "admin"
|
||||
before_action :auth_admin
|
||||
|
||||
before_action :admin_space
|
||||
|
||||
def admin_space
|
||||
@admin_space = "preferences"
|
||||
end
|
||||
|
||||
def index
|
||||
@mail_types = MailType.all
|
||||
|
||||
@mail_types = sort_by_sorting(@mail_types, "slug ASC")
|
||||
respond_to do |format|
|
||||
format.html{
|
||||
|
||||
params[:search][:per_page] = params[:search][:per_page] || 100
|
||||
per_page = params[:search][:per_page]
|
||||
page = (params[:page] and params[:page] != "") ? params[:page] : 1
|
||||
@mail_types = @mail_types.page(page).per(per_page)
|
||||
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
def show
|
||||
@mail_type = MailType.find(params[:id])
|
||||
|
||||
end
|
||||
|
||||
def new
|
||||
@mail_type = MailType.new(:m_odr_id => params[:m_odr_id])
|
||||
|
||||
end
|
||||
|
||||
def edit
|
||||
@mail_type = MailType.find(params[:id])
|
||||
|
||||
end
|
||||
|
||||
def create
|
||||
@mail_type = MailType.new(params.require(:mail_type).permit!)
|
||||
|
||||
if @mail_type.save
|
||||
|
||||
else
|
||||
render action: "new"
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
|
||||
def update
|
||||
@mail_type = MailType.find(params[:id])
|
||||
|
||||
|
||||
if @mail_type.update_attributes(params.require(:mail_type).permit!)
|
||||
|
||||
else
|
||||
render action: "edit"
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
|
||||
def destroy
|
||||
@mail_type = MailType.find(params[:id])
|
||||
@mail_type.destroy
|
||||
|
||||
end
|
||||
end
|
@ -8,6 +8,8 @@ class MOdr < ApplicationRecord
|
||||
belongs_to :social_image_file, :class_name => "ImageFile"
|
||||
belongs_to :footer_image_file, :class_name => "ImageFile"
|
||||
|
||||
belongs_to :ba_image_file, :class_name => "ImageFile"
|
||||
|
||||
|
||||
validates :p_customer, :presence => true
|
||||
|
||||
|
@ -2,4 +2,17 @@ class MOdrBrand < ApplicationRecord
|
||||
belongs_to :m_odr
|
||||
|
||||
has_many :m_odr_products
|
||||
|
||||
|
||||
acts_as_sorting :fields => {
|
||||
:name => {:name => "Nom", :reorder => true},
|
||||
:start_at => {:name => "Date de début", :reorder => true},
|
||||
:end_at => {:name => "Date de fin", :reorder => true},
|
||||
:public_end => {:name => "Date de fin des envois", :reorder => true},
|
||||
|
||||
|
||||
:actions => "Actions"
|
||||
}
|
||||
|
||||
|
||||
end
|
||||
|
@ -1,2 +1,14 @@
|
||||
class MOdrFileType < ApplicationRecord
|
||||
|
||||
belongs_to :m_odr
|
||||
|
||||
|
||||
acts_as_sorting :fields => {
|
||||
:need_file => {:name => "Nécessaire ?", :reorder => true},
|
||||
:name => {:name => "Nom", :reorder => true},
|
||||
|
||||
|
||||
:actions => "Actions"
|
||||
}
|
||||
|
||||
end
|
||||
|
@ -1,3 +1,10 @@
|
||||
class MOdrPlace < ApplicationRecord
|
||||
belongs_to :m_odr
|
||||
|
||||
acts_as_sorting :fields => {
|
||||
:name => {:name => "Nom", :reorder => true},
|
||||
|
||||
:actions => "Actions"
|
||||
}
|
||||
|
||||
end
|
||||
|
@ -6,6 +6,15 @@ class MOdrProduct < ApplicationRecord
|
||||
has_many :m_odr_product_remises, :dependent => :destroy
|
||||
accepts_nested_attributes_for :m_odr_product_remises, :allow_destroy => true
|
||||
|
||||
acts_as_sorting :fields => {
|
||||
:name => {:name => "Nom", :reorder => true},
|
||||
:m_odr_brand => {:name => "Marque", :reorder => true},
|
||||
:m_odr_product_remises => {:name => "Remises"},
|
||||
|
||||
:actions => "Actions"
|
||||
}
|
||||
|
||||
|
||||
|
||||
def member_label
|
||||
if self.m_odr_brand
|
||||
|
@ -1,3 +1,9 @@
|
||||
class MOdrProductCat < ApplicationRecord
|
||||
belongs_to :m_odr
|
||||
|
||||
acts_as_sorting :fields => {
|
||||
:name => {:name => "Nom", :reorder => true},
|
||||
|
||||
:actions => "Actions"
|
||||
}
|
||||
end
|
||||
|
@ -3,6 +3,14 @@ class MOdrTracker < ApplicationRecord
|
||||
|
||||
|
||||
|
||||
acts_as_sorting :fields => {
|
||||
:name => {:name => "Nom", :reorder => true},
|
||||
:token => {:name => "URL", :reorder => true},
|
||||
|
||||
:actions => "Actions"
|
||||
}
|
||||
|
||||
|
||||
before_create { generate_token() }
|
||||
|
||||
def generate_token()
|
||||
|
@ -3,5 +3,16 @@ class MailType < ApplicationRecord
|
||||
belongs_to :mail_type_reference, :class_name => "MailType"
|
||||
|
||||
|
||||
|
||||
acts_as_sorting :fields => {
|
||||
|
||||
:slug => {:name => "Réf", :reorder => true},
|
||||
:default_title => {:name => "Sujet", :reorder => true},
|
||||
:default_message => {:name => "Contenu", :reorder => true},
|
||||
|
||||
:actions => "Actions",
|
||||
}
|
||||
|
||||
|
||||
accepts_nested_attributes_for :mail_contents
|
||||
end
|
||||
|
@ -1,15 +1,14 @@
|
||||
.m_odr_brand_form.field
|
||||
= form.input :name, :label => "Nom :"
|
||||
Dates si différentes des dates générales :
|
||||
.row.qi_cancel_margins
|
||||
.col-sm-4
|
||||
= form.input :start_at, :label => "Date de début :" , :as => :date
|
||||
.col-sm-4
|
||||
= form.input :end_at, :label => "Date de fin :" , :as => :date
|
||||
.col-sm-4
|
||||
= form.input :public_end, :label => "Date de fin des envois :" , :as => :date
|
||||
=semantic_form_for [:admin, @m_odr_brand], :remote => true do |form|
|
||||
|
||||
|
||||
|
||||
|
||||
=link_to_remove_fields ic(:"trash-o"), form
|
||||
.content
|
||||
=form.hidden_field :m_odr_id
|
||||
= form.input :name, :label => "Nom :"
|
||||
Dates si différentes des dates générales :
|
||||
.row.qi_cancel_margins
|
||||
.col-sm-4
|
||||
= form.input :start_at, :label => "Date de début :" , :as => :date
|
||||
.col-sm-4
|
||||
= form.input :end_at, :label => "Date de fin :" , :as => :date
|
||||
.col-sm-4
|
||||
= form.input :public_end, :label => "Date de fin des envois :" , :as => :date
|
||||
.actions=form.submit "sauvegarder", :class => "btn btn-primary"
|
||||
|
@ -1,11 +1,14 @@
|
||||
%tr#m_odr_brand_row{:id => m_odr_brand.id}
|
||||
%td= m_odr_brand.name
|
||||
%td= m_odr_brand.ref
|
||||
%td= m_odr_brand.image_file_id
|
||||
%td= m_odr_brand.m_odr_id
|
||||
-tr = {}
|
||||
|
||||
%td.actions
|
||||
= link_to i(:"trash-o"), [:admin, m_odr_brand], method: :delete, data: { confirm: 'Voulez-vous vraiment supprimer cet enregistrement ? ' } , :remote => true
|
||||
= link_to i(:pencil), edit_admin_m_odr_brand_path(m_odr_brand), :remote => true
|
||||
= link_to i(:eye), admin_m_odr_brand_path(m_odr_brand), :remote => true
|
||||
-tr[:actions] = capture do
|
||||
%td.actions
|
||||
= link_to i(:"trash-o"), [:admin, m_odr_brand], method: :delete, data: { confirm: 'Voulez-vous vraiment supprimer cet enregistrement ? ' } , :remote => true
|
||||
= link_to i(:pencil), edit_admin_m_odr_brand_path(m_odr_brand), :remote => true
|
||||
|
||||
|
||||
|
||||
=render :partial => "qi/qi_ordered_table_object", :locals => {:tr => tr, :object => m_odr_brand}
|
||||
|
||||
|
||||
|
@ -1 +1 @@
|
||||
$('#m_odr_brand_<%= @m_odr_brand.id %>').remove();
|
||||
$('#m_odr_brand_row_<%= @m_odr_brand.id %>').remove();
|
@ -1,7 +1,10 @@
|
||||
.m_odr_file_type_form.field
|
||||
=semantic_form_for [:admin, @m_odr_file_type], :remote => true do |form|
|
||||
|
||||
.content
|
||||
=form.hidden_field :m_odr_id
|
||||
=form.input :name, :label => "Nom :"
|
||||
=form.input :need_file, :label => "Nécessaire ?"
|
||||
|
||||
=link_to_remove_fields ic(:"trash-o"), form
|
||||
|
||||
|
||||
|
||||
.actions=form.submit "sauvegarder", :class => "btn btn-primary"
|
||||
|
@ -1,9 +1,17 @@
|
||||
%tr#m_odr_file_type_row{:id => m_odr_file_type.id}
|
||||
%td= m_odr_file_type.name
|
||||
%td= m_odr_file_type.needed
|
||||
|
||||
%td.actions
|
||||
= link_to i(:"trash-o"), [:admin, m_odr_file_type], method: :delete, data: { confirm: 'Voulez-vous vraiment supprimer cet enregistrement ? ' } , :remote => true
|
||||
= link_to i(:pencil), edit_admin_m_odr_file_type_path(m_odr_file_type), :remote => true
|
||||
= link_to i(:eye), admin_m_odr_file_type_path(m_odr_file_type), :remote => true
|
||||
|
||||
|
||||
%tr#m_odr_file_type_row{:id => m_odr_file_type.id}
|
||||
-tr = {}
|
||||
|
||||
-tr[:actions] = capture do
|
||||
%td.actions
|
||||
= link_to i(:"trash-o"), [:admin, m_odr_file_type], method: :delete, data: { confirm: 'Voulez-vous vraiment supprimer cet enregistrement ? ' } , :remote => true
|
||||
= link_to i(:pencil), edit_admin_m_odr_file_type_path(m_odr_file_type), :remote => true
|
||||
|
||||
|
||||
|
||||
=render :partial => "qi/qi_ordered_table_object", :locals => {:tr => tr, :object => m_odr_file_type}
|
||||
|
||||
|
||||
|
||||
|
@ -1 +1 @@
|
||||
$('#m_odr_file_type_<%= @m_odr_file_type.id %>').remove();
|
||||
$('#m_odr_file_type_row_<%= @m_odr_file_type.id %>').remove();
|
@ -1,18 +1,6 @@
|
||||
.m_odr_place_form.field
|
||||
=semantic_form_for [:admin, @m_odr_place], :remote => true do |form|
|
||||
|
||||
|
||||
= form.input :name, :label => "Nom du magasin :"
|
||||
=# f.input :enseigne, :label => "enseigne :"
|
||||
=# f.input :city, :label => "city :"
|
||||
=# f.input :cp, :label => "cp :"
|
||||
=# f.input :departement, :label => "departement :"
|
||||
=# f.input :departement_nbr, :label => "departement_nbr :"
|
||||
=# f.input :responsable, :label => "responsable :"
|
||||
=# f.input :tel, :label => "tel :"
|
||||
=# f.input :email, :label => "email :"
|
||||
=# f.input :m_odr, :label => "m_odr :"
|
||||
|
||||
=link_to_remove_fields ic(:"trash-o"), form
|
||||
|
||||
|
||||
|
||||
.content
|
||||
=form.hidden_field :m_odr_id
|
||||
= form.input :name, :label => "Nom du magasin :"
|
||||
.actions=form.submit "sauvegarder", :class => "btn btn-primary"
|
||||
|
@ -1,17 +1,14 @@
|
||||
%tr#m_odr_place_row{:id => m_odr_place.id}
|
||||
%td= m_odr_place.name
|
||||
%td= m_odr_place.enseigne
|
||||
%td= m_odr_place.city
|
||||
%td= m_odr_place.cp
|
||||
%td= m_odr_place.departement
|
||||
%td= m_odr_place.departement_nbr
|
||||
%td= m_odr_place.responsable
|
||||
%td= m_odr_place.tel
|
||||
%td= m_odr_place.email
|
||||
%td= m_odr_place.m_odr_id
|
||||
-tr = {}
|
||||
|
||||
%td.actions
|
||||
= link_to i(:"trash-o"), [:admin, m_odr_place], method: :delete, data: { confirm: 'Voulez-vous vraiment supprimer cet enregistrement ? ' } , :remote => true
|
||||
= link_to i(:pencil), edit_admin_m_odr_place_path(m_odr_place), :remote => true
|
||||
= link_to i(:eye), admin_m_odr_place_path(m_odr_place), :remote => true
|
||||
-tr[:actions] = capture do
|
||||
%td.actions
|
||||
= link_to i(:"trash-o"), [:admin, m_odr_place], method: :delete, data: { confirm: 'Voulez-vous vraiment supprimer cet enregistrement ? ' } , :remote => true
|
||||
= link_to i(:pencil), edit_admin_m_odr_place_path(m_odr_place), :remote => true
|
||||
|
||||
|
||||
|
||||
=render :partial => "qi/qi_ordered_table_object", :locals => {:tr => tr, :object => m_odr_place}
|
||||
|
||||
|
||||
|
@ -1 +1 @@
|
||||
$('#m_odr_place_<%= @m_odr_place.id %>').remove();
|
||||
$('#m_odr_place_row_<%= @m_odr_place.id %>').remove();
|
@ -1,7 +1,7 @@
|
||||
.m_odr_product_cat_form.field
|
||||
=semantic_form_for [:admin, @m_odr_product_cat], :remote => true do |form|
|
||||
|
||||
= form.input :name, :label => "Nom :"
|
||||
|
||||
.content
|
||||
=form.hidden_field :m_odr_id
|
||||
= form.input :name, :label => "Nom :"
|
||||
|
||||
|
||||
=link_to_remove_fields ic(:"trash-o"), form
|
||||
.actions=form.submit "sauvegarder", :class => "btn btn-primary"
|
||||
|
@ -1,13 +1,14 @@
|
||||
%tr#m_odr_product_cat_row{:id => m_odr_product_cat.id}
|
||||
-tr = {}
|
||||
|
||||
|
||||
-tr[:actions] = capture do
|
||||
%td.actions
|
||||
= link_to i(:"trash-o"), [:admin, m_odr_product_cat], method: :delete, data: { confirm: 'Voulez-vous vraiment supprimer cet enregistrement ? ' } , :remote => true
|
||||
= link_to i(:pencil), edit_admin_m_odr_product_cat_path(m_odr_product_cat), :remote => true
|
||||
= link_to i(:eye), admin_m_odr_product_cat_path(m_odr_product_cat), :remote => true
|
||||
|
||||
|
||||
|
||||
=render :partial => "qi/qi_ordered_table_object", :locals => {:tr => tr, :object => m_odr_product_cat}
|
||||
|
||||
|
||||
|
||||
|
||||
=render :partial => "qi/qi_ordered_table_object", :locals => {:tr => tr, :object => m_odr_product_cat}
|
||||
|
@ -1 +1 @@
|
||||
$('#m_odr_product_cat_<%= @m_odr_product_cat.id %>').remove();
|
||||
$('#m_odr_product_cat_row_<%= @m_odr_product_cat.id %>').remove();
|
@ -2,4 +2,4 @@
|
||||
%td= form.input :qte, :label => "Qté :"
|
||||
%td= form.input :amount, :label => "Montant :"
|
||||
|
||||
%td.actions=link_to_remove_fields ic(:"trash-o"), form
|
||||
%td=link_to_remove_fields ic(:"trash-o"), form
|
@ -1,16 +1,22 @@
|
||||
.m_odr_product_form.field
|
||||
|
||||
= form.input :name, :label => "Nom :"
|
||||
= form.input :m_odr_brand, :label => "Marque :" , :collection => @m_odr.m_odr_brands, :include_blank => false
|
||||
|
||||
|
||||
=semantic_form_for [:admin, @m_odr_product], :remote => true do |form|
|
||||
|
||||
.content
|
||||
|
||||
= form.hidden_field :m_odr_id
|
||||
= form.input :name, :label => "Nom :"
|
||||
= form.input :m_odr_brand, :label => "Marque :" , :collection => @m_odr_product.m_odr.m_odr_brands, :include_blank => false
|
||||
|
||||
|
||||
%table.m_odr_product_remises_form
|
||||
%table.m_odr_product_remises_form
|
||||
|
||||
=form.semantic_fields_for :m_odr_product_remises do |form|
|
||||
=render :partial => "admin/m_odr_product_remises/form", :locals => {:form => form}
|
||||
=form.semantic_fields_for :m_odr_product_remises do |form|
|
||||
=render :partial => "admin/m_odr_product_remises/form", :locals => {:form => form}
|
||||
|
||||
%p= link_to_add_fields ic(:plus)+" Ajouter une remise", form, :m_odr_product_remises
|
||||
%p= link_to_add_fields ic(:plus)+" Ajouter une remise", form, :m_odr_product_remises
|
||||
|
||||
|
||||
|
||||
=link_to_remove_fields ic(:"trash-o"), form
|
||||
|
||||
|
||||
.actions=form.submit "sauvegarder", :class => "btn btn-primary"
|
||||
|
@ -1,11 +1,14 @@
|
||||
%tr#m_odr_product_row{:id => m_odr_product.id}
|
||||
%td= m_odr_product.name
|
||||
%td= m_odr_product.ref
|
||||
%td= m_odr_product.ean
|
||||
%td= m_odr_product.m_odr_brand_id
|
||||
-tr = {}
|
||||
|
||||
%td.actions
|
||||
= link_to i(:"trash-o"), [:admin, m_odr_product], method: :delete, data: { confirm: 'Voulez-vous vraiment supprimer cet enregistrement ? ' } , :remote => true
|
||||
= link_to i(:pencil), edit_admin_m_odr_product_path(m_odr_product), :remote => true
|
||||
= link_to i(:eye), admin_m_odr_product_path(m_odr_product), :remote => true
|
||||
-tr[:actions] = capture do
|
||||
%td.actions
|
||||
= link_to i(:"trash-o"), [:admin, m_odr_product], method: :delete, data: { confirm: 'Voulez-vous vraiment supprimer cet enregistrement ? ' } , :remote => true
|
||||
= link_to i(:pencil), edit_admin_m_odr_product_path(m_odr_product), :remote => true
|
||||
|
||||
|
||||
|
||||
=render :partial => "qi/qi_ordered_table_object", :locals => {:tr => tr, :object => m_odr_product}
|
||||
|
||||
|
||||
|
@ -1,5 +1,7 @@
|
||||
.m_odr_place_form.field
|
||||
=semantic_form_for [:admin, @m_odr_tracker], :remote => true do |form|
|
||||
|
||||
= form.input :name, :label => "Nom du tracker :"
|
||||
=link_to_remove_fields ic(:"trash-o"), form
|
||||
|
||||
.content
|
||||
=form.hidden_field :m_odr_id
|
||||
= form.input :name, :label => "Nom :"
|
||||
|
||||
.actions=form.submit "sauvegarder", :class => "btn btn-primary"
|
||||
|
@ -1,10 +1,22 @@
|
||||
%tr#m_odr_tracker_row{:id => m_odr_tracker.id}
|
||||
%td= m_odr_tracker.name
|
||||
%td= m_odr_tracker.token
|
||||
%td= m_odr_tracker.m_odr_id
|
||||
|
||||
%td.actions
|
||||
= link_to i(:"trash-o"), [:admin, m_odr_tracker], method: :delete, data: { confirm: 'Voulez-vous vraiment supprimer cet enregistrement ? ' } , :remote => true
|
||||
= link_to i(:pencil), edit_admin_m_odr_tracker_path(m_odr_tracker), :remote => true
|
||||
= link_to i(:eye), admin_m_odr_tracker_path(m_odr_tracker), :remote => true
|
||||
|
||||
|
||||
|
||||
%tr#m_odr_tracker_row{:id => m_odr_tracker.id}
|
||||
-tr = {}
|
||||
|
||||
-tr[:token] = capture do
|
||||
%td
|
||||
|
||||
=link_to public_m_odr_path(m_odr_tracker.m_odr.slug, :t => m_odr_tracker.token, :lang => nil), public_m_odr_path(m_odr_tracker.m_odr.slug, :t => m_odr_tracker.token, :lang => nil), :target => "_blank"
|
||||
|
||||
-tr[:actions] = capture do
|
||||
%td.actions
|
||||
= link_to i(:"trash-o"), [:admin, m_odr_tracker], method: :delete, data: { confirm: 'Voulez-vous vraiment supprimer cet enregistrement ? ' } , :remote => true
|
||||
= link_to i(:pencil), edit_admin_m_odr_tracker_path(m_odr_tracker), :remote => true
|
||||
|
||||
|
||||
|
||||
=render :partial => "qi/qi_ordered_table_object", :locals => {:tr => tr, :object => m_odr_tracker}
|
||||
|
||||
|
||||
|
@ -1 +1 @@
|
||||
$('#m_odr_tracker_<%= @m_odr_tracker.id %>').remove();
|
||||
$('#m_odr_tracker_row_<%= @m_odr_tracker.id %>').remove();
|
@ -100,89 +100,24 @@
|
||||
= 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 :
|
||||
%hr
|
||||
|
||||
.m_odr_file_types_form
|
||||
=f.semantic_fields_for :m_odr_file_types do |form|
|
||||
=render :partial => "admin/m_odr_file_types/form", :locals => {:form => form}
|
||||
|
||||
%p= link_to_add_fields ic(:plus)+" Ajouter un fichier demandé", f, :m_odr_file_types
|
||||
|
||||
.qi_row
|
||||
.qi_pannel.qi_plain.padding
|
||||
Marques concernées :
|
||||
%hr
|
||||
|
||||
.m_odr_brands_form
|
||||
=f.semantic_fields_for :m_odr_brands do |form|
|
||||
=render :partial => "admin/m_odr_brands/form", :locals => {:form => form}
|
||||
|
||||
%p= link_to_add_fields ic(:plus)+" Ajouter ue marque", f, :m_odr_brands
|
||||
|
||||
.qi_row
|
||||
.qi_pannel.qi_plain.padding
|
||||
Catégories produits :
|
||||
%hr
|
||||
|
||||
.m_odr_product_cats_form
|
||||
=f.semantic_fields_for :m_odr_product_cats do |form|
|
||||
=render :partial => "admin/m_odr_product_cats/form", :locals => {:form => form}
|
||||
|
||||
%p= link_to_add_fields ic(:plus)+" Ajouter une catégorie", f, :m_odr_product_cats
|
||||
|
||||
|
||||
.qi_row
|
||||
.qi_pannel.qi_plain.padding
|
||||
Produits concernés :
|
||||
%hr
|
||||
|
||||
.m_odr_products_form
|
||||
=f.semantic_fields_for :m_odr_products do |form|
|
||||
=render :partial => "admin/m_odr_products/form", :locals => {:form => form}
|
||||
|
||||
%p= link_to_add_fields ic(:plus)+" Ajouter un produit", f, :m_odr_products
|
||||
|
||||
.qi_row
|
||||
.qi_pannel.qi_plain.padding
|
||||
Points de ventes :
|
||||
%hr
|
||||
|
||||
.m_odr_places_form
|
||||
=f.semantic_fields_for :m_odr_places do |form|
|
||||
=render :partial => "admin/m_odr_places/form", :locals => {:form => form}
|
||||
|
||||
%p= link_to_add_fields ic(:plus)+" Ajouter un point de vente", f, :m_odr_places
|
||||
|
||||
|
||||
.qi_row
|
||||
.qi_pannel.qi_plain.padding
|
||||
Trackers :
|
||||
%hr
|
||||
|
||||
.m_odr_trackers_form
|
||||
=f.semantic_fields_for :m_odr_trackers do |form|
|
||||
=render :partial => "admin/m_odr_trackers/form", :locals => {:form => form}
|
||||
|
||||
%p= link_to_add_fields ic(:plus)+" Ajouter un tracker", f, :m_odr_trackers
|
||||
|
||||
|
||||
.qi_row
|
||||
.qi_pannel.qi_plain.padding
|
||||
|
||||
= f.input :email_from, :label => "Email d'envoi :"
|
||||
|
||||
Mails types :
|
||||
%hr
|
||||
|
||||
.mail_types_form
|
||||
=f.semantic_fields_for :mail_types do |form|
|
||||
=render :partial => "admin/mail_types/form", :locals => {:form => form}
|
||||
|
||||
%p= link_to_add_fields ic(:plus)+" Ajouter un mail type", f, :mail_types
|
||||
|
||||
Bons d'achats :
|
||||
= f.input :ba_image_file_id, :label => "Fond du bon d'achat :" , :as => :qi_image_select
|
||||
= f.input :ba_generation, :label => "Générer un bon d'achat ?"
|
||||
|
||||
= f.input :ba_width, :label => "Largeur du bon d'achat (px) :"
|
||||
= f.input :ba_height, :label => "Hauteur du bon d'achat (px) :"
|
||||
= f.input :ba_name_x, :label => "Position X du nom (px) :"
|
||||
= f.input :ba_name_y, :label => "Position Y du nom (px) :"
|
||||
|
||||
= f.input :ba_place_x, :label => "Position X du revendeur (px) :"
|
||||
= f.input :ba_place_y, :label => "Position Y du revendeur (px) :"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.large_actions
|
||||
|
@ -18,5 +18,7 @@
|
||||
%td.actions
|
||||
=# link_to i(:"trash-o"), [:admin, m_odr], method: :delete, data: { confirm: 'Voulez-vous vraiment supprimer cet enregistrement ? ' } , :remote => true
|
||||
= link_to i(:pencil), edit_admin_m_odr_path(m_odr), :remote => false
|
||||
= link_to i(:"bar-chart"), admin_m_odr_path(m_odr), :remote => false
|
||||
= link_to i(:eye), admin_m_odr_path(m_odr), :remote => false
|
||||
|
||||
= link_to i(:"bar-chart"), stats_admin_m_odr_path(m_odr), :remote => false
|
||||
|
||||
|
@ -1,126 +1,205 @@
|
||||
.qi_header
|
||||
.right{:style => "text-align:right;"}
|
||||
= link_to i(:pencil), edit_admin_m_odr_path(@m_odr), :remote => false
|
||||
|
||||
%h1
|
||||
ODR
|
||||
%span
|
||||
|
||||
Statistiques
|
||||
Détail d'une ODR
|
||||
%span
|
||||
=@m_odr.p_customer.show_name
|
||||
="-"
|
||||
=@m_odr.name
|
||||
|
||||
|
||||
.qi_row
|
||||
.qi_pannel.qi_plain.padding
|
||||
|
||||
%div{:style => "overflow:auto;"}
|
||||
-@m_odr_reps = @m_odr.m_odr_reps
|
||||
|
||||
%table.table.table-striped.table-hover.table-bordered
|
||||
%tr
|
||||
%th
|
||||
%th{:rowspan => 2} Nombre de participation
|
||||
-@m_odr_reps.group(:state).each do |state|
|
||||
%th{:style => "font-weight:normal", :colspan => 5+(@m_odr.m_odr_brands.count*2)+(@m_odr.m_odr_products.count*2)}
|
||||
Etat :
|
||||
=state_helper state.state
|
||||
%table.table.table-striped.table-hover.table-bordered
|
||||
%tr
|
||||
%td Client
|
||||
%td=@m_odr.p_customer.show_name
|
||||
|
||||
%tr
|
||||
%th
|
||||
%tr
|
||||
%td Nom
|
||||
%td=@m_odr.name
|
||||
%tr
|
||||
%td Url
|
||||
%td=link_to public_m_odr_path(@m_odr.slug, :lang => nil), public_m_odr_path(@m_odr.slug, :lang => nil), :target => "_blank"
|
||||
|
||||
%tr
|
||||
%td Description
|
||||
%td=simple_format @m_odr.description
|
||||
|
||||
%tr
|
||||
%td Texte de lancement
|
||||
%td=@m_odr.landing_text
|
||||
|
||||
|
||||
-@m_odr_reps.group(:state).each do |state|
|
||||
%th Nbr participation
|
||||
%th Nbr pneus
|
||||
|
||||
-@m_odr_reps.group(:qte).order(:qte).each do |qte|
|
||||
%th
|
||||
Nbr part. avec
|
||||
=qte.qte
|
||||
pneus
|
||||
|
||||
-@m_odr.m_odr_brands.each do |m_odr_brand|
|
||||
%th
|
||||
=m_odr_brand.name
|
||||
Nbr part.
|
||||
%th
|
||||
=m_odr_brand.name
|
||||
Nbr pneus
|
||||
|
||||
|
||||
-m_odr_brand.m_odr_products.each do |m_odr_product|
|
||||
%th
|
||||
=m_odr_product.name
|
||||
Nbr part.
|
||||
%th
|
||||
=m_odr_product.name
|
||||
Nbr pneus
|
||||
|
||||
|
||||
|
||||
%th Total remises
|
||||
-m_odr_reps = @m_odr_reps
|
||||
%tr
|
||||
%td Général
|
||||
%td=m_odr_reps.count
|
||||
-@m_odr_reps.group(:state).each do |state|
|
||||
%td
|
||||
=m_odr_reps.where(:state => state.state).count
|
||||
%td
|
||||
=m_odr_reps.where(:state => state.state).sum(:qte)
|
||||
|
||||
-@m_odr_reps.group(:qte).order(:qte).each do |qte|
|
||||
%th
|
||||
=m_odr_reps.where(:state => state.state, :qte => qte.qte).count
|
||||
|
||||
|
||||
-@m_odr.m_odr_brands.each do |m_odr_brand|
|
||||
%td=m_odr_reps.where(:state => state.state, :m_odr_product_id => m_odr_brand.m_odr_products.ids).count
|
||||
%td=m_odr_reps.where(:state => state.state, :m_odr_product_id => m_odr_brand.m_odr_products.ids).sum(:qte)
|
||||
|
||||
-m_odr_brand.m_odr_products.each do |m_odr_product|
|
||||
%td=m_odr_reps.where(:state => state.state, :m_odr_product_id => m_odr_product.id).count
|
||||
%td=m_odr_reps.where(:state => state.state, :m_odr_product_id => m_odr_product.id).sum(:qte)
|
||||
|
||||
%td.numeraire{:style => ("color:red;" if total = m_odr_reps.where(:state => state.state).sum(:cc_remise) and total == 0.0)}
|
||||
=number_to_currency total
|
||||
|
||||
-nbr_participations_for_places = []
|
||||
-nbr_pneus_for_places = []
|
||||
|
||||
-@m_odr_reps.group(:m_odr_place_id).joins(:m_odr_place).order("m_odr_places.name").each do |place|
|
||||
-m_odr_reps = @m_odr_reps.where(:m_odr_place_id => place.m_odr_place_id)
|
||||
|
||||
%tr
|
||||
%td=place.m_odr_place.name
|
||||
%td=m_odr_reps.count
|
||||
-@m_odr_reps.group(:state).each do |state|
|
||||
%td
|
||||
=p = m_odr_reps.where(:state => state.state).count
|
||||
-nbr_participations_for_places << p if p > 0
|
||||
%td
|
||||
=q = m_odr_reps.where(:state => state.state).sum(:qte)
|
||||
-nbr_pneus_for_places << q if p > 0
|
||||
-@m_odr_reps.group(:qte).order(:qte).each do |qte|
|
||||
%th
|
||||
=m_odr_reps.where(:state => state.state, :qte => qte.qte).count
|
||||
|
||||
-@m_odr.m_odr_brands.each do |m_odr_brand|
|
||||
%td=m_odr_reps.where(:state => state.state, :m_odr_product_id => m_odr_brand.m_odr_products.ids).count
|
||||
%td=m_odr_reps.where(:state => state.state, :m_odr_product_id => m_odr_brand.m_odr_products.ids).sum(:qte)
|
||||
|
||||
-m_odr_brand.m_odr_products.each do |m_odr_product|
|
||||
%td=m_odr_reps.where(:state => state.state, :m_odr_product_id => m_odr_product.id).count
|
||||
%td=m_odr_reps.where(:state => state.state, :m_odr_product_id => m_odr_product.id).sum(:qte)
|
||||
|
||||
%td.numeraire{:style => ("color:red;" if total = m_odr_reps.where(:state => state.state).sum(:cc_remise) and total == 0.0)}
|
||||
=number_to_currency total
|
||||
|
||||
|
||||
|
||||
|
||||
.qi_row#tabs
|
||||
.qi_pannel
|
||||
%ul.nav.nav-tabs
|
||||
-params[:tab] = params[:tab] || "m_odr_file_types"
|
||||
|
||||
=#%li{:class => ("active" if params[:tab] == "mail_hists")}=link_to "Historique des mails envoyés", "?tab=mail_hists"
|
||||
|
||||
- tabs = [["m_odr_file_types", "Fichiers demandés"],["m_odr_brands", "Marques concernées"],["m_odr_product_cats", "Catégories produit"],["m_odr_products", "Produits"],["m_odr_places", "Revendeurs"],["m_odr_trackers", "Trackers"],["mail_types", "Mails"]]
|
||||
- tabs.each do |tab|
|
||||
%li{:class => ("active" if params[:tab] == tab[0])}=link_to tab[1], "?tab=#{tab[0]}"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
%p
|
||||
Moyenne participation / point de vente avec participation :
|
||||
=(nbr_participations_for_places.inject{ |sum, el| sum + el }.to_f / nbr_participations_for_places.size).round(2)
|
||||
%p
|
||||
Moyenne nbr pneus / point de vente avec participation :
|
||||
=(nbr_pneus_for_places.inject{ |sum, el| sum + el }.to_f / nbr_pneus_for_places.size).round(2)
|
||||
.qi_tab_content
|
||||
-if params[:tab] == "m_odr_file_types"
|
||||
#offres
|
||||
|
||||
.qi_tab_header
|
||||
.right{:style => "text-align:right;"}
|
||||
= link_to 'Ajouter', new_admin_m_odr_file_type_path(:m_odr => @m_odr.id), :class => "btn btn-primary", :remote => true
|
||||
|
||||
-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_file_types =@m_odr.m_odr_file_types
|
||||
-@m_odr_file_types = sort_by_sorting(@m_odr_file_types, "created_at DESC")
|
||||
-@m_odr_file_types = @m_odr_file_types.page(page).per(per_page)
|
||||
|
||||
=render :partial => "qi/qi_ordered_table", :locals => {:qi_ordered_table_collection => @m_odr_file_types}
|
||||
|
||||
|
||||
|
||||
-if params[:tab] == "m_odr_brands"
|
||||
#offres
|
||||
|
||||
.qi_tab_header
|
||||
.right{:style => "text-align:right;"}
|
||||
= link_to 'Ajouter', new_admin_m_odr_brand_path(:m_odr_id => @m_odr.id), :class => "btn btn-primary", :remote => true
|
||||
|
||||
-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_brands =@m_odr.m_odr_brands
|
||||
-@m_odr_brands = sort_by_sorting(@m_odr_brands, "created_at DESC")
|
||||
-@m_odr_brands = @m_odr_brands.page(page).per(per_page)
|
||||
|
||||
=render :partial => "qi/qi_ordered_table", :locals => {:qi_ordered_table_collection => @m_odr_brands}
|
||||
|
||||
|
||||
-if params[:tab] == "m_odr_product_cats"
|
||||
#offres
|
||||
|
||||
.qi_tab_header
|
||||
.right{:style => "text-align:right;"}
|
||||
= link_to 'Ajouter', new_admin_m_odr_product_cat_path(:m_odr_id => @m_odr.id), :class => "btn btn-primary", :remote => true
|
||||
|
||||
-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_product_cats =@m_odr.m_odr_product_cats
|
||||
-@m_odr_product_cats = sort_by_sorting(@m_odr_product_cats, "created_at DESC")
|
||||
-@m_odr_product_cats = @m_odr_product_cats.page(page).per(per_page)
|
||||
|
||||
=render :partial => "qi/qi_ordered_table", :locals => {:qi_ordered_table_collection => @m_odr_product_cats}
|
||||
|
||||
|
||||
-if params[:tab] == "m_odr_products"
|
||||
#offres
|
||||
|
||||
.qi_tab_header
|
||||
.right{:style => "text-align:right;"}
|
||||
= link_to 'Ajouter', new_admin_m_odr_product_path(:m_odr_id => @m_odr.id), :class => "btn btn-primary", :remote => true
|
||||
|
||||
-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_products =@m_odr.m_odr_products
|
||||
-@m_odr_products = sort_by_sorting(@m_odr_products, "created_at DESC")
|
||||
-@m_odr_products = @m_odr_products.page(page).per(per_page)
|
||||
|
||||
=render :partial => "qi/qi_ordered_table", :locals => {:qi_ordered_table_collection => @m_odr_products}
|
||||
|
||||
|
||||
-if params[:tab] == "m_odr_places"
|
||||
#offres
|
||||
|
||||
.qi_tab_header
|
||||
.right{:style => "text-align:right;"}
|
||||
= link_to 'Ajouter', new_admin_m_odr_place_path(:m_odr_id => @m_odr.id), :class => "btn btn-primary", :remote => true
|
||||
|
||||
-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_places =@m_odr.m_odr_places
|
||||
-@m_odr_places = sort_by_sorting(@m_odr_places, "created_at DESC")
|
||||
-@m_odr_places = @m_odr_places.page(page).per(per_page)
|
||||
|
||||
=render :partial => "qi/qi_ordered_table", :locals => {:qi_ordered_table_collection => @m_odr_places}
|
||||
|
||||
|
||||
|
||||
|
||||
-if params[:tab] == "m_odr_trackers"
|
||||
#offres
|
||||
|
||||
.qi_tab_header
|
||||
.right{:style => "text-align:right;"}
|
||||
= link_to 'Ajouter', new_admin_m_odr_tracker_path(:m_odr_id => @m_odr.id), :class => "btn btn-primary", :remote => true
|
||||
|
||||
-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_trackers =@m_odr.m_odr_trackers
|
||||
-@m_odr_trackers = sort_by_sorting(@m_odr_trackers, "created_at DESC")
|
||||
-@m_odr_trackers = @m_odr_trackers.page(page).per(per_page)
|
||||
|
||||
=render :partial => "qi/qi_ordered_table", :locals => {:qi_ordered_table_collection => @m_odr_trackers}
|
||||
|
||||
|
||||
-if params[:tab] == "mail_types"
|
||||
#offres
|
||||
|
||||
.qi_tab_header
|
||||
.right{:style => "text-align:right;"}
|
||||
= link_to 'Ajouter', new_admin_mail_type_path(:m_odr_id => @m_odr.id), :class => "btn btn-primary", :remote => true
|
||||
|
||||
-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_types =@m_odr.mail_types
|
||||
-@mail_types = sort_by_sorting(@mail_types, "created_at DESC")
|
||||
-@mail_types = @mail_types.page(page).per(per_page)
|
||||
|
||||
=render :partial => "qi/qi_ordered_table", :locals => {:qi_ordered_table_collection => @mail_types}
|
||||
|
||||
|
||||
-if params[:tab] == "mail_hists"
|
||||
#offres
|
||||
|
||||
.qi_tab_header
|
||||
.right{:style => "text-align:right;"}
|
||||
|
||||
|
||||
|
||||
|
||||
-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 =@p_customer.mail_hists
|
||||
-@mail_hists = sort_by_sorting(@mail_hists, "created_at DESC")
|
||||
-@mail_hists = @mail_hists.page(page).per(per_page)
|
||||
|
||||
=#debug MailHist.qi_ordered_table_name
|
||||
=render :partial => "qi/qi_ordered_table", :locals => {:qi_ordered_table_collection => @mail_hists}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
126
app/views/admin/m_odrs/stats.html.haml
Normal file
126
app/views/admin/m_odrs/stats.html.haml
Normal file
@ -0,0 +1,126 @@
|
||||
.qi_header
|
||||
%h1
|
||||
ODR
|
||||
%span
|
||||
|
||||
Statistiques
|
||||
%span
|
||||
=@m_odr.p_customer.show_name
|
||||
="-"
|
||||
=@m_odr.name
|
||||
|
||||
|
||||
.qi_row
|
||||
.qi_pannel.qi_plain.padding
|
||||
|
||||
%div{:style => "overflow:auto;"}
|
||||
-@m_odr_reps = @m_odr.m_odr_reps
|
||||
|
||||
%table.table.table-striped.table-hover.table-bordered
|
||||
%tr
|
||||
%th
|
||||
%th{:rowspan => 2} Nombre de participation
|
||||
-@m_odr_reps.group(:state).each do |state|
|
||||
%th{:style => "font-weight:normal", :colspan => 5+(@m_odr.m_odr_brands.count*2)+(@m_odr.m_odr_products.count*2)}
|
||||
Etat :
|
||||
=state_helper state.state
|
||||
|
||||
%tr
|
||||
%th
|
||||
|
||||
-@m_odr_reps.group(:state).each do |state|
|
||||
%th Nbr participation
|
||||
%th Nbr pneus
|
||||
|
||||
-@m_odr_reps.group(:qte).order(:qte).each do |qte|
|
||||
%th
|
||||
Nbr part. avec
|
||||
=qte.qte
|
||||
pneus
|
||||
|
||||
-@m_odr.m_odr_brands.each do |m_odr_brand|
|
||||
%th
|
||||
=m_odr_brand.name
|
||||
Nbr part.
|
||||
%th
|
||||
=m_odr_brand.name
|
||||
Nbr pneus
|
||||
|
||||
|
||||
-m_odr_brand.m_odr_products.each do |m_odr_product|
|
||||
%th
|
||||
=m_odr_product.name
|
||||
Nbr part.
|
||||
%th
|
||||
=m_odr_product.name
|
||||
Nbr pneus
|
||||
|
||||
|
||||
|
||||
%th Total remises
|
||||
-m_odr_reps = @m_odr_reps
|
||||
%tr
|
||||
%td Général
|
||||
%td=m_odr_reps.count
|
||||
-@m_odr_reps.group(:state).each do |state|
|
||||
%td
|
||||
=m_odr_reps.where(:state => state.state).count
|
||||
%td
|
||||
=m_odr_reps.where(:state => state.state).sum(:qte)
|
||||
|
||||
-@m_odr_reps.group(:qte).order(:qte).each do |qte|
|
||||
%th
|
||||
=m_odr_reps.where(:state => state.state, :qte => qte.qte).count
|
||||
|
||||
|
||||
-@m_odr.m_odr_brands.each do |m_odr_brand|
|
||||
%td=m_odr_reps.where(:state => state.state, :m_odr_product_id => m_odr_brand.m_odr_products.ids).count
|
||||
%td=m_odr_reps.where(:state => state.state, :m_odr_product_id => m_odr_brand.m_odr_products.ids).sum(:qte)
|
||||
|
||||
-m_odr_brand.m_odr_products.each do |m_odr_product|
|
||||
%td=m_odr_reps.where(:state => state.state, :m_odr_product_id => m_odr_product.id).count
|
||||
%td=m_odr_reps.where(:state => state.state, :m_odr_product_id => m_odr_product.id).sum(:qte)
|
||||
|
||||
%td.numeraire{:style => ("color:red;" if total = m_odr_reps.where(:state => state.state).sum(:cc_remise) and total == 0.0)}
|
||||
=number_to_currency total
|
||||
|
||||
-nbr_participations_for_places = []
|
||||
-nbr_pneus_for_places = []
|
||||
|
||||
-@m_odr_reps.group(:m_odr_place_id).joins(:m_odr_place).order("m_odr_places.name").each do |place|
|
||||
-m_odr_reps = @m_odr_reps.where(:m_odr_place_id => place.m_odr_place_id)
|
||||
|
||||
%tr
|
||||
%td=place.m_odr_place.name
|
||||
%td=m_odr_reps.count
|
||||
-@m_odr_reps.group(:state).each do |state|
|
||||
%td
|
||||
=p = m_odr_reps.where(:state => state.state).count
|
||||
-nbr_participations_for_places << p if p > 0
|
||||
%td
|
||||
=q = m_odr_reps.where(:state => state.state).sum(:qte)
|
||||
-nbr_pneus_for_places << q if p > 0
|
||||
-@m_odr_reps.group(:qte).order(:qte).each do |qte|
|
||||
%th
|
||||
=m_odr_reps.where(:state => state.state, :qte => qte.qte).count
|
||||
|
||||
-@m_odr.m_odr_brands.each do |m_odr_brand|
|
||||
%td=m_odr_reps.where(:state => state.state, :m_odr_product_id => m_odr_brand.m_odr_products.ids).count
|
||||
%td=m_odr_reps.where(:state => state.state, :m_odr_product_id => m_odr_brand.m_odr_products.ids).sum(:qte)
|
||||
|
||||
-m_odr_brand.m_odr_products.each do |m_odr_product|
|
||||
%td=m_odr_reps.where(:state => state.state, :m_odr_product_id => m_odr_product.id).count
|
||||
%td=m_odr_reps.where(:state => state.state, :m_odr_product_id => m_odr_product.id).sum(:qte)
|
||||
|
||||
%td.numeraire{:style => ("color:red;" if total = m_odr_reps.where(:state => state.state).sum(:cc_remise) and total == 0.0)}
|
||||
=number_to_currency total
|
||||
|
||||
|
||||
|
||||
|
||||
%p
|
||||
Moyenne participation / point de vente avec participation :
|
||||
=(nbr_participations_for_places.inject{ |sum, el| sum + el }.to_f / nbr_participations_for_places.size).round(2)
|
||||
%p
|
||||
Moyenne nbr pneus / point de vente avec participation :
|
||||
=(nbr_pneus_for_places.inject{ |sum, el| sum + el }.to_f / nbr_pneus_for_places.size).round(2)
|
@ -1,15 +1,26 @@
|
||||
.m_odr_place_form.field
|
||||
=form.input :slug, :label => "Référence mail :"
|
||||
|
||||
=semantic_form_for [:admin, @mail_type], :remote => true do |form|
|
||||
|
||||
.content
|
||||
= form.hidden_field :m_odr_id
|
||||
|
||||
|
||||
=# form.input :mail_type_cat, :label => "Catégorie mail type :"
|
||||
=form.input :slug, :label => "Référence mail :"
|
||||
|
||||
|
||||
|
||||
-if form.object.mail_contents.size == 0
|
||||
-LangSite.all.each do |ls|
|
||||
-form.object.mail_contents.build(:lang_site_id => ls.id, :content_type => "text")
|
||||
-if form.object.mail_contents.size == 0
|
||||
-LangSite.all.each do |ls|
|
||||
-form.object.mail_contents.build(:lang_site_id => ls.id, :content_type => "text")
|
||||
|
||||
=form.semantic_fields_for :mail_contents do |form|
|
||||
= form.input :subject
|
||||
= form.input :message
|
||||
= form.hidden_field :lang_site_id
|
||||
=form.semantic_fields_for :mail_contents do |form|
|
||||
|
||||
|
||||
= form.input :subject
|
||||
= form.input :message
|
||||
= form.hidden_field :lang_site_id
|
||||
|
||||
|
||||
.actions=form.submit "sauvegarder", :class => "btn btn-primary"
|
||||
|
||||
|
16
app/views/admin/mail_types/_mail_type.html.haml
Normal file
16
app/views/admin/mail_types/_mail_type.html.haml
Normal file
@ -0,0 +1,16 @@
|
||||
%tr#mail_type_row{:id => mail_type.id}
|
||||
-tr = {}
|
||||
|
||||
-tr[:actions] = capture do
|
||||
%td.actions
|
||||
= link_to i(:"trash-o"), [:admin, mail_type], method: :delete, data: { confirm: 'Voulez-vous vraiment supprimer cet enregistrement ? ' } , :remote => true
|
||||
= link_to i(:pencil), edit_admin_mail_type_path(mail_type), :remote => true
|
||||
= link_to i(:eye), admin_mail_type_path(mail_type), :remote => true
|
||||
|
||||
|
||||
|
||||
=render :partial => "qi/qi_ordered_table_object", :locals => {:tr => tr, :object => mail_type}
|
||||
|
||||
|
||||
|
||||
|
2
app/views/admin/mail_types/create.js.erb
Normal file
2
app/views/admin/mail_types/create.js.erb
Normal file
@ -0,0 +1,2 @@
|
||||
$('#mail_types_rows').prepend("<%= escape_javascript(render(@mail_type))%>");
|
||||
close_pane_hover();
|
1
app/views/admin/mail_types/destroy.js.erb
Normal file
1
app/views/admin/mail_types/destroy.js.erb
Normal file
@ -0,0 +1 @@
|
||||
$('#mail_type_row_<%= @mail_type.id %>').remove();
|
1
app/views/admin/mail_types/edit.js.erb
Normal file
1
app/views/admin/mail_types/edit.js.erb
Normal file
@ -0,0 +1 @@
|
||||
show_pane_hover("<%= escape_javascript(render(:partial => "form"))%>",700,900);
|
18
app/views/admin/mail_types/index.html.haml
Normal file
18
app/views/admin/mail_types/index.html.haml
Normal file
@ -0,0 +1,18 @@
|
||||
.qi_header
|
||||
.right= link_to ic(:plus)+' Ajouter', new_admin_mail_type_path(), :class => "btn btn-primary btn-ap-add", :remote => true
|
||||
%h1
|
||||
Mails
|
||||
%span
|
||||
Mails types
|
||||
|
||||
|
||||
|
||||
.qi_search_row
|
||||
=form_tag "", :method => "get", :onsubmit => "" do
|
||||
=render :partial => "qi/qi_ordered_table_search_footer", :locals => {:collection_object => @mail_types}
|
||||
|
||||
|
||||
=render :partial => "qi/qi_ordered_table", :locals => {:qi_ordered_table_collection => @mail_types}
|
||||
|
||||
|
||||
|
1
app/views/admin/mail_types/new.js.erb
Normal file
1
app/views/admin/mail_types/new.js.erb
Normal file
@ -0,0 +1 @@
|
||||
show_pane_hover("<%= escape_javascript(render(:partial => "form"))%>",700,900);
|
10
app/views/admin/mail_types/show.html.haml
Normal file
10
app/views/admin/mail_types/show.html.haml
Normal file
@ -0,0 +1,10 @@
|
||||
.qi_header
|
||||
%h1
|
||||
|
||||
%span
|
||||
|
||||
|
||||
|
||||
.qi_row
|
||||
.qi_pannel.qi_plain.padding
|
||||
=debug @mail_type
|
2
app/views/admin/mail_types/update.js.erb
Normal file
2
app/views/admin/mail_types/update.js.erb
Normal file
@ -0,0 +1,2 @@
|
||||
$('#mail_type_row_<%= @mail_type.id %>').replaceWith("<%= escape_javascript(render(@mail_type))%>");
|
||||
close_pane_hover();
|
@ -1,6 +1,9 @@
|
||||
%tr#odr_tracker_row{:id => odr_tracker.id}
|
||||
%td= odr_tracker.name
|
||||
%td= odr_tracker.token
|
||||
%td
|
||||
|
||||
=link_to public_m_odr_path(m_odr.slug, :t => odr_tracker.odr_tracker.token, :lang => nil), public_m_odr_path(odr_tracker.m_odr.slug, :t => odr_tracker.token, :lang => nil), :target => "_blank"
|
||||
|
||||
|
||||
%td.actions
|
||||
= link_to i(:"trash-o"), [:admin, odr_tracker], method: :delete, data: { confirm: 'Voulez-vous vraiment supprimer cet enregistrement ? ' } , :remote => true
|
||||
|
9
app/views/qi.old/_autocomplete.html.haml
Normal file
9
app/views/qi.old/_autocomplete.html.haml
Normal file
@ -0,0 +1,9 @@
|
||||
%div{:class => ("error has-error" if form.object.errors["#{field}_id".to_sym].size > 0 )}
|
||||
%label=label
|
||||
%input.p_fournisseur_autocomplete_input.form-control{:type => "text", :value => ("#{eval("form.object.#{field}.member_label")}" if eval("form.object.#{field}"))}
|
||||
|
||||
|
||||
= form.hidden_field "#{field}_id".to_sym, :class => "#{field}_id"
|
||||
=#=debug "#{form.object_name}[p_fournisseur_id]"
|
||||
:javascript
|
||||
qi_autocomplete('#{field}');
|
273
app/views/qi.old/_qi_ordered_table.html.haml
Normal file
273
app/views/qi.old/_qi_ordered_table.html.haml
Normal file
@ -0,0 +1,273 @@
|
||||
-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
|
||||
|
||||
-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
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
%span.qi_ordered_table_column{:onclick => "$(this).next('.qi_ordered_table_sort_select_wrapper').toggle();"}
|
||||
=ic :columns
|
||||
|
||||
|
||||
.qi_ordered_table_sort_select_wrapper{:style => "display:none;"}
|
||||
=form_tag request.url, :method => "get", :onsubmit => "", :remote => false do
|
||||
|
||||
|
||||
=hidden_field_tag "qi_sort_string[class]",qi_ordered_table_name
|
||||
|
||||
=hidden_field_tag "qi_sort_string[list]", "", :class => "qi_sort_string"
|
||||
.qi_ordered_table_sort_select
|
||||
|
||||
-my_keys = []
|
||||
-@qi_table_orders[qi_ordered_table_name.to_sym].each do |key, value|
|
||||
.qi_order_item{:"data-ref" => "#{key}", :class => "active", :onclick => "$(this).toggleClass('active');"}
|
||||
-if value.instance_of? Hash
|
||||
=value[:name]
|
||||
-else
|
||||
=value
|
||||
-my_keys << key
|
||||
|
||||
|
||||
-qi_ordered_table_collection.klass.qi_table_order.each do |key, value|
|
||||
-if !my_keys.include?(key)
|
||||
.qi_order_item{:"data-ref" => "#{key}", :onclick => "$(this).toggleClass('active');"}
|
||||
-if value.instance_of? Hash
|
||||
=value[:name]
|
||||
-else
|
||||
=value
|
||||
%hr{:style => "margin:3px 0;"}
|
||||
-if true
|
||||
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"
|
||||
|
||||
|
||||
:scss
|
||||
.qi_ordered_table_column{
|
||||
position:absolute;
|
||||
color:rgba(0,0,0,0.2);
|
||||
font-size:1.2em;
|
||||
padding-top:3px;
|
||||
padding-left:10px;
|
||||
cursor:pointer;
|
||||
|
||||
&:hover{
|
||||
color:rgba(0,0,0,0.6);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.qi_ordered_table_sort_select_wrapper{
|
||||
background:rgba(white, 0.98);
|
||||
box-shadow:0 0 10px rgba(0,0,0,0.2);
|
||||
width:auto;
|
||||
position:absolute;
|
||||
margin-left:15px;
|
||||
margin-top:25px;
|
||||
z-index:5;
|
||||
padding:5px 10px;
|
||||
.qi_order_item{
|
||||
padding:2px 0;
|
||||
cursor:pointer;
|
||||
|
||||
}
|
||||
.active{
|
||||
font-weight:bold;
|
||||
}
|
||||
}
|
||||
|
||||
:coffeescript
|
||||
$(".update_table_order_link").click ->
|
||||
r = []
|
||||
$(this).closest('.qi_ordered_table_sort_select_wrapper').find(".qi_order_item").each ->
|
||||
if $(this).hasClass("active")
|
||||
r.push $(this).data("ref")
|
||||
|
||||
|
||||
$(this).closest("form").find(".qi_sort_string").val(r.join(','))
|
||||
$.ajax
|
||||
type: "GET",
|
||||
url: "/",
|
||||
data: $(this).closest("form").serialize(),
|
||||
success: ->
|
||||
location.reload()
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
$( ".qi_ordered_table_sort_select" ).sortable
|
||||
axis: "y"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.qi_pannel.padding.new_table_container
|
||||
.table-slider
|
||||
.inner
|
||||
<form class="range-field">
|
||||
<input type="range" min="0" max="100" step="0.1" class="range" value="0" />
|
||||
</form>
|
||||
.table-area
|
||||
.table-area-inner
|
||||
|
||||
|
||||
.freezeTable
|
||||
%table.table.table-striped.table-hover.table-bordered.data_table
|
||||
%thead.header
|
||||
%tr
|
||||
-@qi_table_orders[qi_ordered_table_name.to_sym].each do |key, value|
|
||||
-if value.instance_of? Hash
|
||||
-if value[:reorder]
|
||||
-sort_name = value[:sort_name] ? value[:sort_name] : key
|
||||
|
||||
%th=raw sort_link sort_name.to_s, value[:name]
|
||||
-else
|
||||
%th=raw value[:name]
|
||||
|
||||
-else
|
||||
%th=raw value
|
||||
|
||||
|
||||
=#sort_link "code", "Code"
|
||||
|
||||
|
||||
-if false
|
||||
%th
|
||||
|
||||
|
||||
%tbody{:id => "#{qi_ordered_table_name}_rows"}
|
||||
=render qi_ordered_table_collection
|
||||
|
||||
|
||||
.qi_pagination
|
||||
= paginate qi_ordered_table_collection #, :remote => true
|
||||
|
||||
:scss
|
||||
|
||||
.freezeTable{
|
||||
overflow:auto;
|
||||
}
|
||||
|
||||
.table-slider{
|
||||
position:fixed;
|
||||
bottom:0;
|
||||
width:200px;
|
||||
right:0;
|
||||
z-index:2;
|
||||
background:rgba(black,0.3);
|
||||
padding:10px 20px;
|
||||
padding-left:20px;
|
||||
|
||||
border-radius:40px 0 0 0;
|
||||
opacity:0.4;
|
||||
&:hover{
|
||||
opacity:1;
|
||||
background:rgba(black,0.7);
|
||||
box-shadow:0 0 5px rgba(black,0.2);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
-if qi_ordered_table_nbr_col == 0.to_s
|
||||
:javascript
|
||||
resize();
|
||||
$('.freezeTable').freezeTable({fixedNavbar:'#qi_header_wrapper', freezeColumn: false});
|
||||
|
||||
-else
|
||||
:javascript
|
||||
resize();
|
||||
$('.freezeTable').freezeTable({columnNum:#{qi_ordered_table_nbr_col},fixedNavbar:'#qi_header_wrapper'});
|
||||
|
||||
|
||||
|
||||
|
||||
:coffeescript
|
||||
#mousemove
|
||||
|
||||
|
||||
|
||||
lastScrollLeft = 0
|
||||
$(".freezeTable").scroll ->
|
||||
#alert("t")
|
||||
documentScrollLeft = $(this).scrollLeft()
|
||||
|
||||
if (lastScrollLeft != documentScrollLeft)
|
||||
|
||||
lastScrollLeft = documentScrollLeft
|
||||
|
||||
size = ($(this).find(".table").outerWidth() - $(this).outerWidth())
|
||||
|
||||
value = ( $(this).scrollLeft() / size)*100
|
||||
|
||||
|
||||
$(this).closest(".new_table_container").find(".range").val(value)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
$(".freezeTable").each ->
|
||||
freeze = $(this)
|
||||
|
||||
|
||||
|
||||
$("document").on "scroll", ->
|
||||
if ($(this).scrollTop() < freeze.offset[0] + freeze.outerHeight())
|
||||
freeze.closest(".new_table_container").find(".table-slider").show()
|
||||
|
||||
else
|
||||
freeze.closest(".new_table_container").find(".table-slider").hide()
|
||||
|
||||
|
||||
$(".range").on 'input change mousemove', ->
|
||||
|
||||
freeze = $(this).closest(".new_table_container").find(".freezeTable")
|
||||
|
||||
size = (freeze.find(".table").outerWidth() - freeze.outerWidth())
|
||||
|
||||
value = size*($(this).val() / 100)
|
||||
|
||||
freeze.scrollLeft(value);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
=#1
|
||||
|
177
app/views/qi.old/_qi_ordered_table.html.haml.old
Normal file
177
app/views/qi.old/_qi_ordered_table.html.haml.old
Normal file
@ -0,0 +1,177 @@
|
||||
-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
|
||||
|
||||
-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
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
%span.qi_ordered_table_column{:onclick => "$(this).next('.qi_ordered_table_sort_select_wrapper').toggle();"}
|
||||
=ic :columns
|
||||
|
||||
|
||||
.qi_ordered_table_sort_select_wrapper{:style => "display:none;"}
|
||||
=form_tag request.url, :method => "get", :onsubmit => "", :remote => false do
|
||||
|
||||
|
||||
=hidden_field_tag "qi_sort_string[class]",qi_ordered_table_name
|
||||
|
||||
=hidden_field_tag "qi_sort_string[list]", "", :class => "qi_sort_string"
|
||||
.qi_ordered_table_sort_select
|
||||
|
||||
-my_keys = []
|
||||
-@qi_table_orders[qi_ordered_table_name.to_sym].each do |key, value|
|
||||
.qi_order_item{:"data-ref" => "#{key}", :class => "active", :onclick => "$(this).toggleClass('active');"}
|
||||
-if value.instance_of? Hash
|
||||
=value[:name]
|
||||
-else
|
||||
=value
|
||||
-my_keys << key
|
||||
|
||||
|
||||
-qi_ordered_table_collection.klass.qi_table_order.each do |key, value|
|
||||
-if !my_keys.include?(key)
|
||||
.qi_order_item{:"data-ref" => "#{key}", :onclick => "$(this).toggleClass('active');"}
|
||||
-if value.instance_of? Hash
|
||||
=value[:name]
|
||||
-else
|
||||
=value
|
||||
%hr{:style => "margin:3px 0;"}
|
||||
-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"
|
||||
|
||||
|
||||
:scss
|
||||
.qi_ordered_table_column{
|
||||
position:absolute;
|
||||
color:rgba(0,0,0,0.2);
|
||||
font-size:1.2em;
|
||||
padding-top:3px;
|
||||
padding-left:10px;
|
||||
cursor:pointer;
|
||||
|
||||
&:hover{
|
||||
color:rgba(0,0,0,0.6);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.qi_ordered_table_sort_select_wrapper{
|
||||
background:rgba(white, 0.98);
|
||||
box-shadow:0 0 10px rgba(0,0,0,0.2);
|
||||
width:auto;
|
||||
position:absolute;
|
||||
margin-left:15px;
|
||||
margin-top:25px;
|
||||
z-index:5;
|
||||
padding:5px 10px;
|
||||
.qi_order_item{
|
||||
padding:2px 0;
|
||||
cursor:pointer;
|
||||
|
||||
}
|
||||
.active{
|
||||
font-weight:bold;
|
||||
}
|
||||
}
|
||||
|
||||
:coffeescript
|
||||
$(".update_table_order_link").click ->
|
||||
r = []
|
||||
$(this).closest('.qi_ordered_table_sort_select_wrapper').find(".qi_order_item").each ->
|
||||
if $(this).hasClass("active")
|
||||
r.push $(this).data("ref")
|
||||
|
||||
|
||||
$(this).closest("form").find(".qi_sort_string").val(r.join(','))
|
||||
$.ajax
|
||||
type: "GET",
|
||||
url: "/",
|
||||
data: $(this).closest("form").serialize(),
|
||||
success: ->
|
||||
location.reload()
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
$( ".qi_ordered_table_sort_select" ).sortable
|
||||
axis: "y"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.qi_pannel.padding.new_table_container
|
||||
|
||||
.table-area
|
||||
.table-area-inner
|
||||
|
||||
|
||||
.freezeTable
|
||||
%table.table.table-striped.table-hover.table-bordered.data_table
|
||||
%thead.header
|
||||
%tr
|
||||
-@qi_table_orders[qi_ordered_table_name.to_sym].each do |key, value|
|
||||
-if value.instance_of? Hash
|
||||
-if value[:reorder]
|
||||
-sort_name = value[:sort_name] ? value[:sort_name] : key
|
||||
|
||||
%th=raw sort_link sort_name.to_s, value[:name]
|
||||
-else
|
||||
%th=raw value[:name]
|
||||
|
||||
-else
|
||||
%th=raw value
|
||||
|
||||
|
||||
=#sort_link "code", "Code"
|
||||
|
||||
|
||||
-if false
|
||||
%th
|
||||
|
||||
|
||||
%tbody{:id => "#{qi_ordered_table_name}_rows"}
|
||||
=render qi_ordered_table_collection
|
||||
|
||||
|
||||
.qi_pagination
|
||||
= paginate qi_ordered_table_collection #, :remote => true
|
||||
|
||||
:javascript
|
||||
resize();
|
||||
$('.freezeTable').freezeTable({columnNum:#{qi_ordered_table_nbr_col},fixedNavbar:'#qi_header_wrapper'});
|
||||
|
35
app/views/qi.old/_qi_ordered_table_head.html.haml
Normal file
35
app/views/qi.old/_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
|
35
app/views/qi.old/_qi_ordered_table_head.html.haml.old
Normal file
35
app/views/qi.old/_qi_ordered_table_head.html.haml.old
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
|
42
app/views/qi.old/_qi_ordered_table_object.html.haml
Normal file
42
app/views/qi.old/_qi_ordered_table_object.html.haml
Normal file
@ -0,0 +1,42 @@
|
||||
-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?("tr_"+key.to_s) or object.respond_to?(key.to_s)
|
||||
-if object.respond_to?("tr_"+key.to_s)
|
||||
-v =object.send("tr_"+key.to_s)
|
||||
|
||||
-elsif object.respond_to?(key.to_s)
|
||||
-v = object.send(key.to_s)
|
||||
|
||||
|
||||
-if value.instance_of? Hash and value[:format]
|
||||
|
||||
-if value[:format] == :date
|
||||
%td=l v, :format => :short_date
|
||||
-elsif value[:format] == :boolean
|
||||
%td="Oui" if v
|
||||
|
||||
-elsif value[:format] == :currency
|
||||
%td.numeraire=number_to_currency v
|
||||
|
||||
-else
|
||||
%td= v
|
||||
-else
|
||||
%td=v
|
||||
|
||||
-else
|
||||
%td
|
||||
Err :
|
||||
=key
|
10
app/views/qi.old/_qi_ordered_table_search_footer.html.haml
Normal file
10
app/views/qi.old/_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,6 +1,6 @@
|
||||
%div{:class => ("error has-error" if form.object.errors["#{field}_id".to_sym].size > 0 )}
|
||||
%label=label
|
||||
%input.p_fournisseur_autocomplete_input.form-control{:type => "text", :value => ("#{eval("form.object.#{field}.member_label")}" if eval("form.object.#{field}"))}
|
||||
%input.form-control{:class => "#{field}_autocomplete_input", :type => "text", :value => ("#{eval("form.object.#{field}.member_label")}" if eval("form.object.#{field}"))}
|
||||
|
||||
|
||||
= form.hidden_field "#{field}_id".to_sym, :class => "#{field}_id"
|
||||
|
@ -34,7 +34,7 @@
|
||||
%span.qi_ordered_table_column{:onclick => "$(this).next('.qi_ordered_table_sort_select_wrapper').toggle();"}
|
||||
=ic :columns
|
||||
|
||||
|
||||
|
||||
.qi_ordered_table_sort_select_wrapper{:style => "display:none;"}
|
||||
=form_tag request.url, :method => "get", :onsubmit => "", :remote => false do
|
||||
|
||||
|
@ -21,14 +21,14 @@
|
||||
-v = object.send(key.to_s)
|
||||
|
||||
|
||||
-if value.instance_of? Hash and value[:format]
|
||||
|
||||
-if value[:format] == :date
|
||||
-if value.instance_of? Hash and (value[:format] or value[:as])
|
||||
-value[:as] = value[:format] if value[:format] and !value[:as]
|
||||
-if value[:as] == :date
|
||||
%td=l v, :format => :short_date
|
||||
-elsif value[:format] == :boolean
|
||||
-elsif value[:as] == :boolean
|
||||
%td="Oui" if v
|
||||
|
||||
-elsif value[:format] == :currency
|
||||
-elsif value[:as] == :currency
|
||||
%td.numeraire=number_to_currency v
|
||||
|
||||
-else
|
||||
|
@ -1,3 +1,6 @@
|
||||
=hidden_field_tag :column, params[:column]
|
||||
=hidden_field_tag :direction, params[:direction]
|
||||
|
||||
=link_to ic(:search)+" Rechercher", "#", :class => "btn btn-default btn-qi-search", :onclick => "$(this).closest('form').submit();$(this).html('...');return false;"
|
||||
|
||||
|
||||
|
12
app/views/qi/_render_collection.html.haml
Normal file
12
app/views/qi/_render_collection.html.haml
Normal file
@ -0,0 +1,12 @@
|
||||
-i =0
|
||||
-step = step || 4
|
||||
|
||||
-collec.each do |c|
|
||||
=render c
|
||||
|
||||
|
||||
-if i
|
||||
-i += 1
|
||||
-if i == step
|
||||
.clear
|
||||
-i = 0
|
6
config/initializers/qi.rb
Normal file
6
config/initializers/qi.rb
Normal file
@ -0,0 +1,6 @@
|
||||
require "acts_as_caching"
|
||||
|
||||
|
||||
require "acts_as_sorting"
|
||||
|
||||
require "acts_as_csv_import"
|
@ -4,6 +4,8 @@ Rails.application.routes.draw do
|
||||
|
||||
|
||||
namespace :admin do
|
||||
resources :mail_types
|
||||
|
||||
resources :m_odr_product_cats do
|
||||
member do
|
||||
|
||||
@ -239,7 +241,7 @@ Rails.application.routes.draw do
|
||||
namespace :admin do
|
||||
resources :m_odrs do
|
||||
member do
|
||||
|
||||
get :stats
|
||||
end
|
||||
collection do
|
||||
|
||||
|
13
db/migrate/20200703080324_add_ba_to_m_odr.rb
Normal file
13
db/migrate/20200703080324_add_ba_to_m_odr.rb
Normal file
@ -0,0 +1,13 @@
|
||||
class AddBaToMOdr < ActiveRecord::Migration[6.0]
|
||||
def change
|
||||
add_column :m_odrs, :ba_generation, :boolean, :default => false
|
||||
add_column :m_odrs, :ba_send, :boolean, :default => false
|
||||
add_column :m_odrs, :ba_width, :integer
|
||||
add_column :m_odrs, :ba_height, :integer
|
||||
add_column :m_odrs, :ba_name_x, :integer
|
||||
add_column :m_odrs, :ba_name_y, :integer
|
||||
add_column :m_odrs, :ba_place_x, :integer
|
||||
add_column :m_odrs, :ba_place_y, :integer
|
||||
add_column :m_odrs, :ba_image_file_id, :integer
|
||||
end
|
||||
end
|
11
db/schema.rb
11
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_04_13_164941) do
|
||||
ActiveRecord::Schema.define(version: 2020_07_03_080324) do
|
||||
|
||||
create_table "accounting_zones", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4", force: :cascade do |t|
|
||||
t.string "name"
|
||||
@ -898,6 +898,15 @@ ActiveRecord::Schema.define(version: 2020_04_13_164941) do
|
||||
t.boolean "buy_date_process"
|
||||
t.boolean "buy_date_needed"
|
||||
t.text "buy_infos"
|
||||
t.boolean "ba_generation", default: false
|
||||
t.boolean "ba_send", default: false
|
||||
t.integer "ba_width"
|
||||
t.integer "ba_height"
|
||||
t.integer "ba_name_x"
|
||||
t.integer "ba_name_y"
|
||||
t.integer "ba_place_x"
|
||||
t.integer "ba_place_y"
|
||||
t.integer "ba_image_file_id"
|
||||
t.index ["p_customer_id"], name: "index_m_odrs_on_p_customer_id"
|
||||
end
|
||||
|
||||
|
9
lib/acts_as_caching.rb
Normal file
9
lib/acts_as_caching.rb
Normal file
@ -0,0 +1,9 @@
|
||||
require 'active_support/core_ext'
|
||||
p "loading main"
|
||||
require File.join(File.dirname(__FILE__), "acts_as_caching/railtie.rb")
|
||||
|
||||
module ActsAsCaching
|
||||
autoload :Hook, File.join(File.dirname(__FILE__), "acts_as_caching/hook")
|
||||
#autoload :InstanceMethods, File.join(File.dirname(__FILE__), "acts_as_caching/instance_methods")
|
||||
end
|
||||
|
85
lib/acts_as_caching/hook.rb
Normal file
85
lib/acts_as_caching/hook.rb
Normal file
@ -0,0 +1,85 @@
|
||||
module ActsAsCaching::Hook
|
||||
def acts_as_caching(*args)
|
||||
@acts_as_caching_options = args.extract_options!
|
||||
|
||||
|
||||
def self.qi_cache_fields
|
||||
@acts_as_caching_options[:fields]
|
||||
|
||||
end
|
||||
|
||||
|
||||
@acts_as_caching_options[:fields].each do |s|
|
||||
define_method("#{s}") {
|
||||
puts "CCC"
|
||||
if self.methods.include?(eval(":ca_#{s}"))
|
||||
puts "AAAA"
|
||||
puts self.methods.include?(eval(":ca_#{s}"))
|
||||
return eval("!self.ac_#{s} ? self.ca_#{s} : self.ac_#{s}")
|
||||
|
||||
end
|
||||
}
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
define_method("qi_dynamics_cache"){
|
||||
puts "qi_dynamics_cache"
|
||||
puts "hook"
|
||||
puts self.class
|
||||
|
||||
|
||||
if self.methods.include?(:to_no_archive)
|
||||
self.to_no_archive.each do |noc|
|
||||
eval("self.ac_#{noc} = nil")
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
|
||||
|
||||
self.class.qi_cache_fields.each do |s|
|
||||
if self.methods.include?(eval(":ca_#{s}"))
|
||||
eval("self.cc_#{s} = self.#{s}")
|
||||
end
|
||||
end
|
||||
}
|
||||
|
||||
after_validation :qi_dynamics_cache
|
||||
|
||||
define_method("archive_now"){
|
||||
self.qi_dynamics_cache
|
||||
self.archived = true
|
||||
|
||||
self.class.qi_cache_fields.each do |s|
|
||||
eval("self.ac_#{s} = self.cc_#{s} ")
|
||||
end
|
||||
|
||||
self.personalised_archive if self.methods.include?(:personalised_archive)
|
||||
self.save
|
||||
}
|
||||
|
||||
define_method("unarchive_now"){
|
||||
self.archived = false
|
||||
self.qi_dynamics_cache
|
||||
|
||||
self.class.qi_cache_fields.each do |s|
|
||||
eval("self.ac_#{s} = nil ")
|
||||
end
|
||||
|
||||
self.personalised_unarchive if self.methods.include?(:personalised_unarchive)
|
||||
|
||||
self.save
|
||||
}
|
||||
|
||||
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
end
|
18
lib/acts_as_caching/railtie.rb
Normal file
18
lib/acts_as_caching/railtie.rb
Normal file
@ -0,0 +1,18 @@
|
||||
require 'rails'
|
||||
require 'acts_as_caching'
|
||||
|
||||
p "Railtie loaded"
|
||||
|
||||
begin
|
||||
module ActsAsCaching
|
||||
class Railtie < Rails::Railtie
|
||||
config.to_prepare do
|
||||
p "hook added"
|
||||
ActiveRecord::Base.send(:extend, ActsAsCaching::Hook)
|
||||
end
|
||||
end
|
||||
end
|
||||
rescue
|
||||
p $!, $!.message
|
||||
raise $!
|
||||
end
|
9
lib/acts_as_csv_import.rb
Normal file
9
lib/acts_as_csv_import.rb
Normal file
@ -0,0 +1,9 @@
|
||||
require 'active_support/core_ext'
|
||||
p "loading main"
|
||||
require File.join(File.dirname(__FILE__), "acts_as_csv_import/railtie.rb")
|
||||
|
||||
module ActsAsCsvImport
|
||||
autoload :Hook, File.join(File.dirname(__FILE__), "acts_as_csv_import/hook")
|
||||
#autoload :InstanceMethods, File.join(File.dirname(__FILE__), "acts_as_csv_import/instance_methods")
|
||||
end
|
||||
|
46
lib/acts_as_csv_import/hook.rb
Normal file
46
lib/acts_as_csv_import/hook.rb
Normal file
@ -0,0 +1,46 @@
|
||||
module ActsAsCsvImport::Hook
|
||||
def acts_as_csv_import(*args)
|
||||
@csv_options = args.extract_options!
|
||||
|
||||
|
||||
|
||||
def self.import_csv_fields
|
||||
@csv_options[:fields]
|
||||
end
|
||||
|
||||
def self.import_csv(list, import_csv)
|
||||
puts self.instance_methods
|
||||
|
||||
if self.methods.include?(:custom_csv_import)
|
||||
custom_csv_import(list, import_csv)
|
||||
else
|
||||
default_import_csv(list, import_csv)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
def self.default_import_csv(list, import_csv)
|
||||
list.each do |row|
|
||||
n = self.new
|
||||
|
||||
row.each do |key, value|
|
||||
eval "n.#{key} = value"
|
||||
|
||||
|
||||
end
|
||||
|
||||
n.save
|
||||
|
||||
import_csv.import_csv_elements << ImportCsvElement.new(:element => n)
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
end
|
18
lib/acts_as_csv_import/railtie.rb
Normal file
18
lib/acts_as_csv_import/railtie.rb
Normal file
@ -0,0 +1,18 @@
|
||||
require 'rails'
|
||||
require 'acts_as_csv_import'
|
||||
|
||||
p "Railtie loaded"
|
||||
|
||||
begin
|
||||
module ActsAsCsvImport
|
||||
class Railtie < Rails::Railtie
|
||||
config.to_prepare do
|
||||
p "hook csv import added"
|
||||
ActiveRecord::Base.send(:extend, ActsAsCsvImport::Hook)
|
||||
end
|
||||
end
|
||||
end
|
||||
rescue
|
||||
p $!, $!.message
|
||||
raise $!
|
||||
end
|
9
lib/acts_as_sorting.rb
Normal file
9
lib/acts_as_sorting.rb
Normal file
@ -0,0 +1,9 @@
|
||||
require 'active_support/core_ext'
|
||||
p "loading main"
|
||||
require File.join(File.dirname(__FILE__), "acts_as_sorting/railtie.rb")
|
||||
|
||||
module ActsAsSorting
|
||||
autoload :Hook, File.join(File.dirname(__FILE__), "acts_as_sorting/hook")
|
||||
#autoload :InstanceMethods, File.join(File.dirname(__FILE__), "acts_as_sorting/instance_methods")
|
||||
end
|
||||
|
39
lib/acts_as_sorting/hook.rb
Normal file
39
lib/acts_as_sorting/hook.rb
Normal file
@ -0,0 +1,39 @@
|
||||
module ActsAsSorting::Hook
|
||||
def acts_as_sorting(*args)
|
||||
@acts_as_sorting_options = args.extract_options!
|
||||
|
||||
|
||||
def self.qi_table_order
|
||||
@acts_as_sorting_options[:fields]
|
||||
|
||||
end
|
||||
|
||||
def self.valid_sort
|
||||
r = []
|
||||
self.qi_table_order.each do |key, value|
|
||||
if value.instance_of? Hash
|
||||
if value[:reorder] == false
|
||||
|
||||
elsif value[:reorder] == true
|
||||
if value[:sort_name]
|
||||
r << value[:sort_name]
|
||||
else
|
||||
r << key.to_s
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
return r
|
||||
|
||||
|
||||
end
|
||||
|
||||
|
||||
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
end
|
18
lib/acts_as_sorting/railtie.rb
Normal file
18
lib/acts_as_sorting/railtie.rb
Normal file
@ -0,0 +1,18 @@
|
||||
require 'rails'
|
||||
require 'acts_as_sorting'
|
||||
|
||||
p "Railtie loaded"
|
||||
|
||||
begin
|
||||
module ActsAsSorting
|
||||
class Railtie < Rails::Railtie
|
||||
config.to_prepare do
|
||||
p "hook sorting added"
|
||||
ActiveRecord::Base.send(:extend, ActsAsSorting::Hook)
|
||||
end
|
||||
end
|
||||
end
|
||||
rescue
|
||||
p $!, $!.message
|
||||
raise $!
|
||||
end
|
Loading…
x
Reference in New Issue
Block a user