diff --git a/app/controllers/admin/p_stats_controller.rb b/app/controllers/admin/p_stats_controller.rb
index baaad14..18ebac9 100644
--- a/app/controllers/admin/p_stats_controller.rb
+++ b/app/controllers/admin/p_stats_controller.rb
@@ -23,7 +23,7 @@ class Admin::PStatsController < ApplicationController
@start = Date.parse(params[:start]).beginning_of_day
else
- @start = Date.today.beginning_of_month
+ @start = Date.parse("2000-01-01")
end
params[:start]= @start.strftime('%d/%m/%Y')
diff --git a/app/models/m_odr_prime.rb b/app/models/m_odr_prime.rb
index 731f302..5dee8e8 100644
--- a/app/models/m_odr_prime.rb
+++ b/app/models/m_odr_prime.rb
@@ -8,24 +8,57 @@ class MOdrPrime < ApplicationRecord
include ActionView::Helpers::TranslationHelper
include ActionView::Helpers::UrlHelper
+
+
has_many :m_odr_prime_files #, :dependent => :destroy
+
+
+ has_many :m_odr_files, :through => :m_odr_prime_files
+
+ has_many :m_odr_places, :through => :m_odr_files
+
+ has_many :m_odr_file_products, :through => :m_odr_files
+
+
+ has_many :m_odr_products, :through => :m_odr_file_products
+
has_many :mail_hists
has_many :m_odr_virements
acts_as_sorting :fields => {
:id => {:name => "Id", :reorder => true},
- :p_customer => {:name => "Client", :reorder => true, :sort_name => "p_customers.cc_show_name"},
+ #:p_customer => {:name => "Client", :reorder => true, :sort_name => "p_customers.cc_show_name"},
+
+ :p_customer_created_at => {:name => "Inscription", :reorder => true, :sort_name => "p_customers.created_at"},
+
+ :particular_name => {:name => "Nom", :reorder => true, :sort_name => "particulars.name"},
+ :particular_firstname => {:name => "Prénom", :reorder => true, :sort_name => "particulars.firstname"},
+ :amount => {:name => "Montant", :as => :currency},
+
+ :created_at => {:name => "Date"},
+
+
+ :pneu_gamme => {:name => "Gamme"},
+
+ #:pneu_tailles => {:name => "Tailles"},
+
+ :m_odr_place_name => {:name => "Nom"},
+ :m_odr_place_cp=> {:name => "CP"},
+ :m_odr_place_city => {:name => "Nom"},
+
+ :organisateur_name => {:name => "Organisateur"},
+
+
:date_roulage => {:name => "Date de roulage", :reorder => true, :sort_name => "m_odr_file_roulages.date"},
:state => {:name => "Statut", :reorder => true},
- :amount => {:name => "Montant"},
+
:actions => {:name => "Actions", :reorder => true},
}
-
before_validation do
diff --git a/app/views/admin/m_odr_primes/_m_odr_prime.html.haml b/app/views/admin/m_odr_primes/_m_odr_prime.html.haml
index 6c38b28..109e613 100644
--- a/app/views/admin/m_odr_primes/_m_odr_prime.html.haml
+++ b/app/views/admin/m_odr_primes/_m_odr_prime.html.haml
@@ -1,9 +1,18 @@
%tr#m_odr_prime_row{:id => m_odr_prime.id}
-tr = {}
- -tr[:p_customer] = capture do
+ -tr[:particular_name] = capture do
%td
- =link_to m_odr_prime.p_customer.show_name, [:admin, m_odr_prime.p_customer] if m_odr_prime.p_customer
+ =link_to m_odr_prime.particular.name, [:admin, m_odr_prime.p_customer] if m_odr_prime.particular
+
+ -tr[:particular_firstname] = capture do
+ %td
+ =link_to m_odr_prime.particular.firstname, [:admin, m_odr_prime.p_customer] if m_odr_prime.particular
+
+
+ -tr[:p_customer_created_at] = capture do
+ %td
+ =l m_odr_prime.p_customer.created_at if m_odr_prime.p_customer
-tr[:state] = capture do
%td
@@ -14,6 +23,31 @@
=l m_odr_prime.m_odr_file_roulage.date if m_odr_prime.m_odr_file_roulage
+
+
+ -tr[:pneu_gamme] = capture do
+ %td
+ =m_odr_prime.m_odr_products.uniq.map{ |u| (u.name)}.join(" | ")
+
+ -tr[:m_odr_place_name] = capture do
+ %td
+ =m_odr_prime.m_odr_places.uniq.map{ |u| u.name}.join(" | ")
+
+ -tr[:m_odr_place_cp] = capture do
+ %td
+ =m_odr_prime.m_odr_places.uniq.map{ |u| u.cp}.join(" | ")
+
+ -tr[:m_odr_place_city] = capture do
+ %td
+ =m_odr_prime.m_odr_places.uniq.map{ |u| u.city}.join(" | ")
+
+
+ -tr[:organisateur_name] = capture do
+ %td
+ =m_odr_prime.m_odr_file_roulage.m_event.organisateur.name if m_odr_prime.m_odr_file_roulage and m_odr_prime.m_odr_file_roulage.m_event and m_odr_prime.m_odr_file_roulage.m_event.organisateur
+
+
+
-tr[:actions] = capture do
diff --git a/app/views/admin/p_stats/index.html.haml b/app/views/admin/p_stats/index.html.haml
index 051c1b0..09b0643 100644
--- a/app/views/admin/p_stats/index.html.haml
+++ b/app/views/admin/p_stats/index.html.haml
@@ -45,184 +45,60 @@
-if @start and @stop
=link_to "Mois suivant >","?start=#{CGI.escape((@start + 1.month).beginning_of_month.strftime('%d/%m/%Y'))}&stop=#{CGI.escape((@stop + 1.month).end_of_month.strftime('%d/%m/%Y'))}", :class => "btn btn-default"
-
- %p
- -if @start and @stop
- =link_to "< Année précédente","?start=#{CGI.escape((@start - 1.year).beginning_of_month.strftime('%d/%m/%Y'))}&stop=#{CGI.escape((@stop - 1.year).end_of_month.strftime('%d/%m/%Y'))}", :class => "btn btn-default"
- -if @start and @stop
- =link_to "Année suivante >","?start=#{CGI.escape((@start + 1.year).beginning_of_month.strftime('%d/%m/%Y'))}&stop=#{CGI.escape((@stop + 1.year).end_of_month.strftime('%d/%m/%Y'))}", :class => "btn btn-default"
-
+
%hr
+ -@m_odr_primes = MOdrPrime.where("created_at >= ? and created_at < ?",@start.beginning_of_year, @stop).where(:state => ["Virement envoyé"])
-
-
- %h2
- =#raw("#{l(@start_at, :format => '%B %Y')}")
- %table.table
+ %table.table.table-stripped
%tr
- %td{:style => "width:50%;"}
- =l @start
- %td{:style => "width:50%;"}
- =l @stop
-
-
- %p
- Nombre de commandes finalisées :
-
- =orders_ok = @finished.count
- -if false
- %table
+ %th
+ %th Nombre
+ %th Montant
+ %th Nbr pneus
+ %tr
+ %th Motards
+ %td
+ =PCustomer.where(:test_user => false, :enabled => true).where("created_at < ?", @stop).count
+ %td
+ %td
+
+ %tr
+ %th Organisateurs
+ %td
+ =Organisateur.where("created_at < ?", @stop).count
+ %td
+ %td
+
+ %tr
+ %th Circuits
+ %td
+ =Circuit.where("created_at < ?", @stop).count
+ %td
+ %td
+
+
+ %tr
+ %th Dates
+ %td
+ -r = 0
+ -MEvent.where("start_at >= ? and start_at < ? and created_at >= ? and created_at < ?",@start.beginning_of_year, @stop.end_of_year, @start.beginning_of_year, @stop).all.each do |m_event|
+ -r+=(m_event.end_at - m_event.start_at ).to_i / (24 * 60 * 60) +1
+ =r
+ %td
+ %td
+
+ %tr
+ %th
+ Primes
+ %td
+ =@m_odr_primes.count
+ %td
+ =number_to_currency @m_odr_primes.sum(:amount)
+
+ %td
+ = @m_odr_primes.sum(:nbr_pneus)
+
- -@finished.each do |ps|
- %tr
- %td
- =ps.a_ok_total
- %td
- =ps.a_total_cost_ok
-
-
- %br
- %strong=number_to_percentage ((@finished.count*100)/@p_customer_sheets.count), :precision => 2 if @p_customer_sheets.count > 0
-
- %p
- Nombre de commandes non finalisées :
- =orders_not_ok = (@p_customer_sheets.count - @finished.count)
-
- %p
- CA HT :
-
- %strong=number_to_currency @finished.sum(:a_ok_total)
-
- -if @sans_marges.count > 0
- %p{:style => "color:red;"}
- Attention : le calcul des marges est faussé car certaines factures fournisseurs semblent ne pas être saisies, et donc certaines commandes n'ont pas pu être attribuées.
- %p
- Coût estimé HT :
- -cout = @finished.sum(:a_total_cost_ok)
- %strong=number_to_currency cout
-
- %p
- Marge estimée HT :
- -marge = @finished.sum(:a_ok_total) - @finished.sum(:a_total_cost_ok)
- %strong=number_to_currency(marge)
- %br
- %strong=number_to_percentage ((@finished.sum(:a_ok_total) - @finished.sum(:a_total_cost_ok))/@finished.sum(:a_ok_total)*100), :precision => 2 if @finished.sum(:a_ok_total) > 0.0
-
-
- %div{:style => "width:350px;display:inline-block;"}
-
-
-
-
- :javascript
- var myPieChart = new Chart("ordersChart",{
- type: 'pie',
- data: {
- labels: ["Finalisées", "Non finalisées"],
- datasets: [{
- label: '# of Votes',
- data: [#{orders_ok},#{orders_not_ok}],
- backgroundColor: [
- '#4BC0C0',
- '#FF6384',
-
- ],
- borderColor: [
- 'white',
- 'white',
-
- ],
- borderWidth: 2
- }]
- },
- options: {
- title: {
- display: true,
- text: 'Finalisation des commandes'
- }
- }
- // options: options
- });
-
-
- %div{:style => "width:350px;display:inline-block;"}
-
-
-
-
- :javascript
- var myPieChart = new Chart("margeChart",{
- type: 'pie',
- data: {
- labels: ["Marge", "Cout"],
- datasets: [{
- label: '# of Votes',
- data: [#{marge},#{cout}],
- backgroundColor: [
- '#4BC0C0',
- '#FF6384',
-
- ],
- borderColor: [
- 'white',
- 'white',
-
- ],
- borderWidth: 2
- }]
- },
- options: {
- title: {
- display: true,
- text: 'Marges'
- }
- }
- // options: options
- });
-
-
--if false
-
-
- :javascript
- var ctx = document.getElementById("myChart");
- var myChart = new Chart(ctx, {
- type: 'bar',
- data: {
- labels: ["Red", "Blue", "Yellow", "Green", "Purple", "Orange"],
- datasets: [{
- label: '# of Votes',
- data: [12, 19, 3, 5, 2, 3],
- backgroundColor: [
- 'rgba(255, 99, 132, 0.2)',
- 'rgba(54, 162, 235, 0.2)',
- 'rgba(255, 206, 86, 0.2)',
- 'rgba(75, 192, 192, 0.2)',
- 'rgba(153, 102, 255, 0.2)',
- 'rgba(255, 159, 64, 0.2)'
- ],
- borderColor: [
- 'rgba(255,99,132,1)',
- 'rgba(54, 162, 235, 1)',
- 'rgba(255, 206, 86, 1)',
- 'rgba(75, 192, 192, 1)',
- 'rgba(153, 102, 255, 1)',
- 'rgba(255, 159, 64, 1)'
- ],
- borderWidth: 0
- }]
- },
- options: {
- scales: {
- yAxes: [{
- ticks: {
- beginAtZero:true
- }
- }]
- }
- }
- });
-
diff --git a/app/views/layouts/admin.html.haml b/app/views/layouts/admin.html.haml
index bdbe4e9..b38ce81 100644
--- a/app/views/layouts/admin.html.haml
+++ b/app/views/layouts/admin.html.haml
@@ -86,7 +86,7 @@
Tunnels fichier sécurisés
- -if false
+ -if current_admin.has_permission?("statistiques")
.element
=link_to admin_p_stats_path do
.cat#big_cat_statistiques