From d4c76bafa8310c49be59eac7f9bf05263bf13146 Mon Sep 17 00:00:00 2001 From: Nicolas Bally Date: Fri, 3 Jul 2020 10:19:55 +0200 Subject: [PATCH] suite --- .../admin/m_odr_brands_controller.rb | 2 +- .../admin/m_odr_file_types_controller.rb | 2 +- .../admin/m_odr_places_controller.rb | 2 +- .../admin/m_odr_product_cats_controller.rb | 2 +- .../admin/m_odr_products_controller.rb | 2 +- .../admin/m_odr_trackers_controller.rb | 2 +- app/controllers/admin/m_odrs_controller.rb | 5 + .../admin/mail_types_controller.rb | 76 +++++ app/models/m_odr.rb | 2 + app/models/m_odr_brand.rb | 13 + app/models/m_odr_file_type.rb | 12 + app/models/m_odr_place.rb | 7 + app/models/m_odr_product.rb | 9 + app/models/m_odr_product_cat.rb | 6 + app/models/m_odr_tracker.rb | 8 + app/models/mail_type.rb | 11 + app/views/admin/m_odr_brands/_form.html.haml | 27 +- .../admin/m_odr_brands/_m_odr_brand.html.haml | 19 +- app/views/admin/m_odr_brands/destroy.js.erb | 2 +- .../admin/m_odr_file_types/_form.html.haml | 11 +- .../_m_odr_file_type.html.haml | 24 +- .../admin/m_odr_file_types/destroy.js.erb | 2 +- app/views/admin/m_odr_places/_form.html.haml | 22 +- .../admin/m_odr_places/_m_odr_place.html.haml | 25 +- app/views/admin/m_odr_places/destroy.js.erb | 2 +- .../admin/m_odr_product_cats/_form.html.haml | 10 +- .../_m_odr_product_cat.html.haml | 11 +- .../admin/m_odr_product_cats/destroy.js.erb | 2 +- .../m_odr_product_remises/_form.html.haml | 2 +- .../admin/m_odr_products/_form.html.haml | 26 +- .../m_odr_products/_m_odr_product.html.haml | 19 +- .../admin/m_odr_trackers/_form.html.haml | 10 +- .../m_odr_trackers/_m_odr_tracker.html.haml | 30 +- app/views/admin/m_odr_trackers/destroy.js.erb | 2 +- app/views/admin/m_odrs/_form.html.haml | 93 +----- app/views/admin/m_odrs/_m_odr.html.haml | 4 +- app/views/admin/m_odrs/show.html.haml | 299 +++++++++++------- app/views/admin/m_odrs/stats.html.haml | 126 ++++++++ app/views/admin/mail_types/_form.html.haml | 31 +- .../admin/mail_types/_mail_type.html.haml | 16 + app/views/admin/mail_types/create.js.erb | 2 + app/views/admin/mail_types/destroy.js.erb | 1 + app/views/admin/mail_types/edit.js.erb | 1 + app/views/admin/mail_types/index.html.haml | 18 ++ app/views/admin/mail_types/new.js.erb | 1 + app/views/admin/mail_types/show.html.haml | 10 + app/views/admin/mail_types/update.js.erb | 2 + .../admin/odr_trackers/_odr_tracker.html.haml | 5 +- app/views/qi.old/_autocomplete.html.haml | 9 + app/views/qi.old/_qi_ordered_table.html.haml | 273 ++++++++++++++++ .../qi.old/_qi_ordered_table.html.haml.old | 177 +++++++++++ .../qi.old/_qi_ordered_table_head.html.haml | 35 ++ .../_qi_ordered_table_head.html.haml.old | 35 ++ .../qi.old/_qi_ordered_table_object.html.haml | 42 +++ .../_qi_ordered_table_search_footer.html.haml | 10 + app/views/qi/_autocomplete.html.haml | 2 +- app/views/qi/_qi_ordered_table.html.haml | 2 +- .../qi/_qi_ordered_table_object.html.haml | 10 +- .../_qi_ordered_table_search_footer.html.haml | 3 + app/views/qi/_render_collection.html.haml | 12 + config/initializers/qi.rb | 6 + config/routes.rb | 4 +- db/migrate/20200703080324_add_ba_to_m_odr.rb | 13 + db/schema.rb | 11 +- lib/acts_as_caching.rb | 9 + lib/acts_as_caching/hook.rb | 85 +++++ lib/acts_as_caching/railtie.rb | 18 ++ lib/acts_as_csv_import.rb | 9 + lib/acts_as_csv_import/hook.rb | 46 +++ lib/acts_as_csv_import/railtie.rb | 18 ++ lib/acts_as_sorting.rb | 9 + lib/acts_as_sorting/hook.rb | 39 +++ lib/acts_as_sorting/railtie.rb | 18 ++ 73 files changed, 1583 insertions(+), 328 deletions(-) create mode 100644 app/controllers/admin/mail_types_controller.rb create mode 100644 app/views/admin/m_odrs/stats.html.haml create mode 100644 app/views/admin/mail_types/_mail_type.html.haml create mode 100644 app/views/admin/mail_types/create.js.erb create mode 100644 app/views/admin/mail_types/destroy.js.erb create mode 100644 app/views/admin/mail_types/edit.js.erb create mode 100644 app/views/admin/mail_types/index.html.haml create mode 100644 app/views/admin/mail_types/new.js.erb create mode 100644 app/views/admin/mail_types/show.html.haml create mode 100644 app/views/admin/mail_types/update.js.erb create mode 100644 app/views/qi.old/_autocomplete.html.haml create mode 100644 app/views/qi.old/_qi_ordered_table.html.haml create mode 100644 app/views/qi.old/_qi_ordered_table.html.haml.old create mode 100644 app/views/qi.old/_qi_ordered_table_head.html.haml create mode 100644 app/views/qi.old/_qi_ordered_table_head.html.haml.old create mode 100644 app/views/qi.old/_qi_ordered_table_object.html.haml create mode 100644 app/views/qi.old/_qi_ordered_table_search_footer.html.haml create mode 100644 app/views/qi/_render_collection.html.haml create mode 100644 config/initializers/qi.rb create mode 100644 db/migrate/20200703080324_add_ba_to_m_odr.rb create mode 100644 lib/acts_as_caching.rb create mode 100644 lib/acts_as_caching/hook.rb create mode 100644 lib/acts_as_caching/railtie.rb create mode 100644 lib/acts_as_csv_import.rb create mode 100644 lib/acts_as_csv_import/hook.rb create mode 100644 lib/acts_as_csv_import/railtie.rb create mode 100644 lib/acts_as_sorting.rb create mode 100644 lib/acts_as_sorting/hook.rb create mode 100644 lib/acts_as_sorting/railtie.rb diff --git a/app/controllers/admin/m_odr_brands_controller.rb b/app/controllers/admin/m_odr_brands_controller.rb index 4af2425..50c16b3 100644 --- a/app/controllers/admin/m_odr_brands_controller.rb +++ b/app/controllers/admin/m_odr_brands_controller.rb @@ -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 diff --git a/app/controllers/admin/m_odr_file_types_controller.rb b/app/controllers/admin/m_odr_file_types_controller.rb index 4a3c4b0..a1cfe89 100644 --- a/app/controllers/admin/m_odr_file_types_controller.rb +++ b/app/controllers/admin/m_odr_file_types_controller.rb @@ -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 diff --git a/app/controllers/admin/m_odr_places_controller.rb b/app/controllers/admin/m_odr_places_controller.rb index 27608b7..d50421a 100644 --- a/app/controllers/admin/m_odr_places_controller.rb +++ b/app/controllers/admin/m_odr_places_controller.rb @@ -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 diff --git a/app/controllers/admin/m_odr_product_cats_controller.rb b/app/controllers/admin/m_odr_product_cats_controller.rb index 82a8934..ad21230 100644 --- a/app/controllers/admin/m_odr_product_cats_controller.rb +++ b/app/controllers/admin/m_odr_product_cats_controller.rb @@ -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 diff --git a/app/controllers/admin/m_odr_products_controller.rb b/app/controllers/admin/m_odr_products_controller.rb index 694b415..221f6af 100644 --- a/app/controllers/admin/m_odr_products_controller.rb +++ b/app/controllers/admin/m_odr_products_controller.rb @@ -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 diff --git a/app/controllers/admin/m_odr_trackers_controller.rb b/app/controllers/admin/m_odr_trackers_controller.rb index 4b8a81a..7a9425d 100644 --- a/app/controllers/admin/m_odr_trackers_controller.rb +++ b/app/controllers/admin/m_odr_trackers_controller.rb @@ -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 diff --git a/app/controllers/admin/m_odrs_controller.rb b/app/controllers/admin/m_odrs_controller.rb index 2901e66..d0341c9 100644 --- a/app/controllers/admin/m_odrs_controller.rb +++ b/app/controllers/admin/m_odrs_controller.rb @@ -20,6 +20,11 @@ class Admin::MOdrsController < ApplicationController end + def stats + @m_odr = MOdr.find(params[:id]) + + end + def new @m_odr = MOdr.new diff --git a/app/controllers/admin/mail_types_controller.rb b/app/controllers/admin/mail_types_controller.rb new file mode 100644 index 0000000..86b20a0 --- /dev/null +++ b/app/controllers/admin/mail_types_controller.rb @@ -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 diff --git a/app/models/m_odr.rb b/app/models/m_odr.rb index 0949ed3..953efd3 100644 --- a/app/models/m_odr.rb +++ b/app/models/m_odr.rb @@ -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 diff --git a/app/models/m_odr_brand.rb b/app/models/m_odr_brand.rb index 0f8c73f..672bb1d 100644 --- a/app/models/m_odr_brand.rb +++ b/app/models/m_odr_brand.rb @@ -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 diff --git a/app/models/m_odr_file_type.rb b/app/models/m_odr_file_type.rb index c2fddc7..d2fb639 100644 --- a/app/models/m_odr_file_type.rb +++ b/app/models/m_odr_file_type.rb @@ -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 diff --git a/app/models/m_odr_place.rb b/app/models/m_odr_place.rb index 32a3f4b..8e98e2f 100644 --- a/app/models/m_odr_place.rb +++ b/app/models/m_odr_place.rb @@ -1,3 +1,10 @@ class MOdrPlace < ApplicationRecord belongs_to :m_odr + + acts_as_sorting :fields => { + :name => {:name => "Nom", :reorder => true}, + + :actions => "Actions" + } + end diff --git a/app/models/m_odr_product.rb b/app/models/m_odr_product.rb index 97c3ff4..35904c1 100644 --- a/app/models/m_odr_product.rb +++ b/app/models/m_odr_product.rb @@ -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 diff --git a/app/models/m_odr_product_cat.rb b/app/models/m_odr_product_cat.rb index 23551eb..a6cfa6b 100644 --- a/app/models/m_odr_product_cat.rb +++ b/app/models/m_odr_product_cat.rb @@ -1,3 +1,9 @@ class MOdrProductCat < ApplicationRecord belongs_to :m_odr + + acts_as_sorting :fields => { + :name => {:name => "Nom", :reorder => true}, + + :actions => "Actions" + } end diff --git a/app/models/m_odr_tracker.rb b/app/models/m_odr_tracker.rb index 0829a43..b37ad22 100644 --- a/app/models/m_odr_tracker.rb +++ b/app/models/m_odr_tracker.rb @@ -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() diff --git a/app/models/mail_type.rb b/app/models/mail_type.rb index e9a2c9c..a64ab1b 100644 --- a/app/models/mail_type.rb +++ b/app/models/mail_type.rb @@ -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 diff --git a/app/views/admin/m_odr_brands/_form.html.haml b/app/views/admin/m_odr_brands/_form.html.haml index 6adec98..60e9fd2 100644 --- a/app/views/admin/m_odr_brands/_form.html.haml +++ b/app/views/admin/m_odr_brands/_form.html.haml @@ -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 \ No newline at end of file + .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" diff --git a/app/views/admin/m_odr_brands/_m_odr_brand.html.haml b/app/views/admin/m_odr_brands/_m_odr_brand.html.haml index c2f89f5..b7590b9 100644 --- a/app/views/admin/m_odr_brands/_m_odr_brand.html.haml +++ b/app/views/admin/m_odr_brands/_m_odr_brand.html.haml @@ -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} + + + \ No newline at end of file diff --git a/app/views/admin/m_odr_brands/destroy.js.erb b/app/views/admin/m_odr_brands/destroy.js.erb index f06ea64..f1be815 100644 --- a/app/views/admin/m_odr_brands/destroy.js.erb +++ b/app/views/admin/m_odr_brands/destroy.js.erb @@ -1 +1 @@ -$('#m_odr_brand_<%= @m_odr_brand.id %>').remove(); \ No newline at end of file +$('#m_odr_brand_row_<%= @m_odr_brand.id %>').remove(); \ No newline at end of file diff --git a/app/views/admin/m_odr_file_types/_form.html.haml b/app/views/admin/m_odr_file_types/_form.html.haml index bfe7e49..c2c1c41 100644 --- a/app/views/admin/m_odr_file_types/_form.html.haml +++ b/app/views/admin/m_odr_file_types/_form.html.haml @@ -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 - - \ No newline at end of file + + .actions=form.submit "sauvegarder", :class => "btn btn-primary" + \ No newline at end of file diff --git a/app/views/admin/m_odr_file_types/_m_odr_file_type.html.haml b/app/views/admin/m_odr_file_types/_m_odr_file_type.html.haml index 38a64f8..c7e4a0f 100644 --- a/app/views/admin/m_odr_file_types/_m_odr_file_type.html.haml +++ b/app/views/admin/m_odr_file_types/_m_odr_file_type.html.haml @@ -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} + + + + \ No newline at end of file diff --git a/app/views/admin/m_odr_file_types/destroy.js.erb b/app/views/admin/m_odr_file_types/destroy.js.erb index 2691295..645a183 100644 --- a/app/views/admin/m_odr_file_types/destroy.js.erb +++ b/app/views/admin/m_odr_file_types/destroy.js.erb @@ -1 +1 @@ -$('#m_odr_file_type_<%= @m_odr_file_type.id %>').remove(); \ No newline at end of file +$('#m_odr_file_type_row_<%= @m_odr_file_type.id %>').remove(); \ No newline at end of file diff --git a/app/views/admin/m_odr_places/_form.html.haml b/app/views/admin/m_odr_places/_form.html.haml index 83a5383..26c1a8c 100644 --- a/app/views/admin/m_odr_places/_form.html.haml +++ b/app/views/admin/m_odr_places/_form.html.haml @@ -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 - - - \ No newline at end of file + .content + =form.hidden_field :m_odr_id + = form.input :name, :label => "Nom du magasin :" + .actions=form.submit "sauvegarder", :class => "btn btn-primary" diff --git a/app/views/admin/m_odr_places/_m_odr_place.html.haml b/app/views/admin/m_odr_places/_m_odr_place.html.haml index b6d96d8..744a36e 100644 --- a/app/views/admin/m_odr_places/_m_odr_place.html.haml +++ b/app/views/admin/m_odr_places/_m_odr_place.html.haml @@ -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} + + + \ No newline at end of file diff --git a/app/views/admin/m_odr_places/destroy.js.erb b/app/views/admin/m_odr_places/destroy.js.erb index 1c275ba..9c6ba5c 100644 --- a/app/views/admin/m_odr_places/destroy.js.erb +++ b/app/views/admin/m_odr_places/destroy.js.erb @@ -1 +1 @@ -$('#m_odr_place_<%= @m_odr_place.id %>').remove(); \ No newline at end of file +$('#m_odr_place_row_<%= @m_odr_place.id %>').remove(); \ No newline at end of file diff --git a/app/views/admin/m_odr_product_cats/_form.html.haml b/app/views/admin/m_odr_product_cats/_form.html.haml index 52e86d5..87f0890 100644 --- a/app/views/admin/m_odr_product_cats/_form.html.haml +++ b/app/views/admin/m_odr_product_cats/_form.html.haml @@ -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 \ No newline at end of file + .actions=form.submit "sauvegarder", :class => "btn btn-primary" diff --git a/app/views/admin/m_odr_product_cats/_m_odr_product_cat.html.haml b/app/views/admin/m_odr_product_cats/_m_odr_product_cat.html.haml index 620101e..c70faf1 100644 --- a/app/views/admin/m_odr_product_cats/_m_odr_product_cat.html.haml +++ b/app/views/admin/m_odr_product_cats/_m_odr_product_cat.html.haml @@ -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} \ No newline at end of file + \ No newline at end of file diff --git a/app/views/admin/m_odr_product_cats/destroy.js.erb b/app/views/admin/m_odr_product_cats/destroy.js.erb index c7b9dc1..0250fa0 100644 --- a/app/views/admin/m_odr_product_cats/destroy.js.erb +++ b/app/views/admin/m_odr_product_cats/destroy.js.erb @@ -1 +1 @@ -$('#m_odr_product_cat_<%= @m_odr_product_cat.id %>').remove(); \ No newline at end of file +$('#m_odr_product_cat_row_<%= @m_odr_product_cat.id %>').remove(); \ No newline at end of file diff --git a/app/views/admin/m_odr_product_remises/_form.html.haml b/app/views/admin/m_odr_product_remises/_form.html.haml index 8dc6b3c..8de8bc0 100644 --- a/app/views/admin/m_odr_product_remises/_form.html.haml +++ b/app/views/admin/m_odr_product_remises/_form.html.haml @@ -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 \ No newline at end of file + %td=link_to_remove_fields ic(:"trash-o"), form \ No newline at end of file diff --git a/app/views/admin/m_odr_products/_form.html.haml b/app/views/admin/m_odr_products/_form.html.haml index 02ef68e..037537c 100644 --- a/app/views/admin/m_odr_products/_form.html.haml +++ b/app/views/admin/m_odr_products/_form.html.haml @@ -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 \ No newline at end of file + + + .actions=form.submit "sauvegarder", :class => "btn btn-primary" diff --git a/app/views/admin/m_odr_products/_m_odr_product.html.haml b/app/views/admin/m_odr_products/_m_odr_product.html.haml index 8daba18..e8637aa 100644 --- a/app/views/admin/m_odr_products/_m_odr_product.html.haml +++ b/app/views/admin/m_odr_products/_m_odr_product.html.haml @@ -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} + + + \ No newline at end of file diff --git a/app/views/admin/m_odr_trackers/_form.html.haml b/app/views/admin/m_odr_trackers/_form.html.haml index c260ecc..a5ea437 100644 --- a/app/views/admin/m_odr_trackers/_form.html.haml +++ b/app/views/admin/m_odr_trackers/_form.html.haml @@ -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" diff --git a/app/views/admin/m_odr_trackers/_m_odr_tracker.html.haml b/app/views/admin/m_odr_trackers/_m_odr_tracker.html.haml index 0641e70..9265587 100644 --- a/app/views/admin/m_odr_trackers/_m_odr_tracker.html.haml +++ b/app/views/admin/m_odr_trackers/_m_odr_tracker.html.haml @@ -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} + + + \ No newline at end of file diff --git a/app/views/admin/m_odr_trackers/destroy.js.erb b/app/views/admin/m_odr_trackers/destroy.js.erb index cc62f7c..f73b798 100644 --- a/app/views/admin/m_odr_trackers/destroy.js.erb +++ b/app/views/admin/m_odr_trackers/destroy.js.erb @@ -1 +1 @@ -$('#m_odr_tracker_<%= @m_odr_tracker.id %>').remove(); \ No newline at end of file +$('#m_odr_tracker_row_<%= @m_odr_tracker.id %>').remove(); \ 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 e7d2b1a..20e56cd 100644 --- a/app/views/admin/m_odrs/_form.html.haml +++ b/app/views/admin/m_odrs/_form.html.haml @@ -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 diff --git a/app/views/admin/m_odrs/_m_odr.html.haml b/app/views/admin/m_odrs/_m_odr.html.haml index 3192237..2e89580 100644 --- a/app/views/admin/m_odrs/_m_odr.html.haml +++ b/app/views/admin/m_odrs/_m_odr.html.haml @@ -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 diff --git a/app/views/admin/m_odrs/show.html.haml b/app/views/admin/m_odrs/show.html.haml index 38496eb..680d27a 100644 --- a/app/views/admin/m_odrs/show.html.haml +++ b/app/views/admin/m_odrs/show.html.haml @@ -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) \ No newline at end of file + .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} + + + + + + + + + + \ No newline at end of file diff --git a/app/views/admin/m_odrs/stats.html.haml b/app/views/admin/m_odrs/stats.html.haml new file mode 100644 index 0000000..38496eb --- /dev/null +++ b/app/views/admin/m_odrs/stats.html.haml @@ -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) \ No newline at end of file diff --git a/app/views/admin/mail_types/_form.html.haml b/app/views/admin/mail_types/_form.html.haml index bd6dd81..9b5f16d 100644 --- a/app/views/admin/mail_types/_form.html.haml +++ b/app/views/admin/mail_types/_form.html.haml @@ -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" \ No newline at end of file diff --git a/app/views/admin/mail_types/_mail_type.html.haml b/app/views/admin/mail_types/_mail_type.html.haml new file mode 100644 index 0000000..640d6d1 --- /dev/null +++ b/app/views/admin/mail_types/_mail_type.html.haml @@ -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} + + + + \ No newline at end of file diff --git a/app/views/admin/mail_types/create.js.erb b/app/views/admin/mail_types/create.js.erb new file mode 100644 index 0000000..a67b46b --- /dev/null +++ b/app/views/admin/mail_types/create.js.erb @@ -0,0 +1,2 @@ +$('#mail_types_rows').prepend("<%= escape_javascript(render(@mail_type))%>"); +close_pane_hover(); \ No newline at end of file diff --git a/app/views/admin/mail_types/destroy.js.erb b/app/views/admin/mail_types/destroy.js.erb new file mode 100644 index 0000000..b59fed6 --- /dev/null +++ b/app/views/admin/mail_types/destroy.js.erb @@ -0,0 +1 @@ +$('#mail_type_row_<%= @mail_type.id %>').remove(); \ No newline at end of file diff --git a/app/views/admin/mail_types/edit.js.erb b/app/views/admin/mail_types/edit.js.erb new file mode 100644 index 0000000..6c8f015 --- /dev/null +++ b/app/views/admin/mail_types/edit.js.erb @@ -0,0 +1 @@ +show_pane_hover("<%= escape_javascript(render(:partial => "form"))%>",700,900); \ No newline at end of file diff --git a/app/views/admin/mail_types/index.html.haml b/app/views/admin/mail_types/index.html.haml new file mode 100644 index 0000000..ec773f5 --- /dev/null +++ b/app/views/admin/mail_types/index.html.haml @@ -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} + + + diff --git a/app/views/admin/mail_types/new.js.erb b/app/views/admin/mail_types/new.js.erb new file mode 100644 index 0000000..6c8f015 --- /dev/null +++ b/app/views/admin/mail_types/new.js.erb @@ -0,0 +1 @@ +show_pane_hover("<%= escape_javascript(render(:partial => "form"))%>",700,900); \ No newline at end of file diff --git a/app/views/admin/mail_types/show.html.haml b/app/views/admin/mail_types/show.html.haml new file mode 100644 index 0000000..de43308 --- /dev/null +++ b/app/views/admin/mail_types/show.html.haml @@ -0,0 +1,10 @@ +.qi_header + %h1 + + %span + + + +.qi_row + .qi_pannel.qi_plain.padding + =debug @mail_type \ No newline at end of file diff --git a/app/views/admin/mail_types/update.js.erb b/app/views/admin/mail_types/update.js.erb new file mode 100644 index 0000000..5ddaa04 --- /dev/null +++ b/app/views/admin/mail_types/update.js.erb @@ -0,0 +1,2 @@ +$('#mail_type_row_<%= @mail_type.id %>').replaceWith("<%= escape_javascript(render(@mail_type))%>"); +close_pane_hover(); \ No newline at end of file diff --git a/app/views/admin/odr_trackers/_odr_tracker.html.haml b/app/views/admin/odr_trackers/_odr_tracker.html.haml index 57ec9ed..5efc9de 100644 --- a/app/views/admin/odr_trackers/_odr_tracker.html.haml +++ b/app/views/admin/odr_trackers/_odr_tracker.html.haml @@ -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 diff --git a/app/views/qi.old/_autocomplete.html.haml b/app/views/qi.old/_autocomplete.html.haml new file mode 100644 index 0000000..d180a6c --- /dev/null +++ b/app/views/qi.old/_autocomplete.html.haml @@ -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}'); \ No newline at end of file diff --git a/app/views/qi.old/_qi_ordered_table.html.haml b/app/views/qi.old/_qi_ordered_table.html.haml new file mode 100644 index 0000000..94f33ed --- /dev/null +++ b/app/views/qi.old/_qi_ordered_table.html.haml @@ -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 +
+ +
+ .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 + diff --git a/app/views/qi.old/_qi_ordered_table.html.haml.old b/app/views/qi.old/_qi_ordered_table.html.haml.old new file mode 100644 index 0000000..6105a21 --- /dev/null +++ b/app/views/qi.old/_qi_ordered_table.html.haml.old @@ -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'}); + \ No newline at end of file diff --git a/app/views/qi.old/_qi_ordered_table_head.html.haml b/app/views/qi.old/_qi_ordered_table_head.html.haml new file mode 100644 index 0000000..80da8d8 --- /dev/null +++ b/app/views/qi.old/_qi_ordered_table_head.html.haml @@ -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 diff --git a/app/views/qi.old/_qi_ordered_table_head.html.haml.old b/app/views/qi.old/_qi_ordered_table_head.html.haml.old new file mode 100644 index 0000000..80da8d8 --- /dev/null +++ b/app/views/qi.old/_qi_ordered_table_head.html.haml.old @@ -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 diff --git a/app/views/qi.old/_qi_ordered_table_object.html.haml b/app/views/qi.old/_qi_ordered_table_object.html.haml new file mode 100644 index 0000000..15e39b6 --- /dev/null +++ b/app/views/qi.old/_qi_ordered_table_object.html.haml @@ -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 diff --git a/app/views/qi.old/_qi_ordered_table_search_footer.html.haml b/app/views/qi.old/_qi_ordered_table_search_footer.html.haml new file mode 100644 index 0000000..b9fe2dd --- /dev/null +++ b/app/views/qi.old/_qi_ordered_table_search_footer.html.haml @@ -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 \ No newline at end of file diff --git a/app/views/qi/_autocomplete.html.haml b/app/views/qi/_autocomplete.html.haml index d180a6c..2bf3871 100644 --- a/app/views/qi/_autocomplete.html.haml +++ b/app/views/qi/_autocomplete.html.haml @@ -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" diff --git a/app/views/qi/_qi_ordered_table.html.haml b/app/views/qi/_qi_ordered_table.html.haml index 94f33ed..61af66e 100644 --- a/app/views/qi/_qi_ordered_table.html.haml +++ b/app/views/qi/_qi_ordered_table.html.haml @@ -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 diff --git a/app/views/qi/_qi_ordered_table_object.html.haml b/app/views/qi/_qi_ordered_table_object.html.haml index 15e39b6..13fdc39 100644 --- a/app/views/qi/_qi_ordered_table_object.html.haml +++ b/app/views/qi/_qi_ordered_table_object.html.haml @@ -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 diff --git a/app/views/qi/_qi_ordered_table_search_footer.html.haml b/app/views/qi/_qi_ordered_table_search_footer.html.haml index b9fe2dd..edd4dfe 100644 --- a/app/views/qi/_qi_ordered_table_search_footer.html.haml +++ b/app/views/qi/_qi_ordered_table_search_footer.html.haml @@ -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;" diff --git a/app/views/qi/_render_collection.html.haml b/app/views/qi/_render_collection.html.haml new file mode 100644 index 0000000..4834783 --- /dev/null +++ b/app/views/qi/_render_collection.html.haml @@ -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 diff --git a/config/initializers/qi.rb b/config/initializers/qi.rb new file mode 100644 index 0000000..e266276 --- /dev/null +++ b/config/initializers/qi.rb @@ -0,0 +1,6 @@ +require "acts_as_caching" + + +require "acts_as_sorting" + +require "acts_as_csv_import" \ No newline at end of file diff --git a/config/routes.rb b/config/routes.rb index 61e547f..55c6d4c 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -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 diff --git a/db/migrate/20200703080324_add_ba_to_m_odr.rb b/db/migrate/20200703080324_add_ba_to_m_odr.rb new file mode 100644 index 0000000..8e72dc7 --- /dev/null +++ b/db/migrate/20200703080324_add_ba_to_m_odr.rb @@ -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 diff --git a/db/schema.rb b/db/schema.rb index c15a149..f33d1a5 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_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 diff --git a/lib/acts_as_caching.rb b/lib/acts_as_caching.rb new file mode 100644 index 0000000..8d6197b --- /dev/null +++ b/lib/acts_as_caching.rb @@ -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 + diff --git a/lib/acts_as_caching/hook.rb b/lib/acts_as_caching/hook.rb new file mode 100644 index 0000000..75f16c3 --- /dev/null +++ b/lib/acts_as_caching/hook.rb @@ -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 diff --git a/lib/acts_as_caching/railtie.rb b/lib/acts_as_caching/railtie.rb new file mode 100644 index 0000000..d1770b6 --- /dev/null +++ b/lib/acts_as_caching/railtie.rb @@ -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 diff --git a/lib/acts_as_csv_import.rb b/lib/acts_as_csv_import.rb new file mode 100644 index 0000000..18a1bb9 --- /dev/null +++ b/lib/acts_as_csv_import.rb @@ -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 + diff --git a/lib/acts_as_csv_import/hook.rb b/lib/acts_as_csv_import/hook.rb new file mode 100644 index 0000000..28dba2f --- /dev/null +++ b/lib/acts_as_csv_import/hook.rb @@ -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 diff --git a/lib/acts_as_csv_import/railtie.rb b/lib/acts_as_csv_import/railtie.rb new file mode 100644 index 0000000..786fccd --- /dev/null +++ b/lib/acts_as_csv_import/railtie.rb @@ -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 diff --git a/lib/acts_as_sorting.rb b/lib/acts_as_sorting.rb new file mode 100644 index 0000000..93da84e --- /dev/null +++ b/lib/acts_as_sorting.rb @@ -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 + diff --git a/lib/acts_as_sorting/hook.rb b/lib/acts_as_sorting/hook.rb new file mode 100644 index 0000000..bf5f026 --- /dev/null +++ b/lib/acts_as_sorting/hook.rb @@ -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 diff --git a/lib/acts_as_sorting/railtie.rb b/lib/acts_as_sorting/railtie.rb new file mode 100644 index 0000000..27f6dde --- /dev/null +++ b/lib/acts_as_sorting/railtie.rb @@ -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