292 lines
7.6 KiB
Plaintext
292 lines
7.6 KiB
Plaintext
-@date = Date.parse("2019-10-01")
|
|
|
|
.qi_header
|
|
Sociétés détectées
|
|
|
|
.qi_row
|
|
.qi_pannel.qi_plain.padding
|
|
|
|
|
|
%p
|
|
Cartes restant à traiter :
|
|
%strong
|
|
=VContact.where(:enabled => true, :nbr_mvt => nil).count
|
|
|
|
%h3 Stats générales
|
|
|
|
.table-area
|
|
%table.table.table-hover
|
|
%tr
|
|
%td Nombre de sociétés
|
|
%td.numeraire
|
|
%strong=Societe.count
|
|
|
|
%tr
|
|
%td Nombre de sociétés valides
|
|
%td.numeraire
|
|
%strong=Societe.where(:enabled => true).count
|
|
%tr
|
|
%td
|
|
Nombre de cartes retrouvées
|
|
%td.numeraire
|
|
=VContact.where("codemanaginn LIKE 'CCV%'").count
|
|
|
|
%tr
|
|
%td
|
|
Nombre de cartes appartenants à des sociétés valides
|
|
%td.numeraire
|
|
%strong=VContact.where("codemanaginn LIKE 'CCV%'").where(:enabled => true).count
|
|
|
|
|
|
|
|
|
|
|
|
-echantillon1 = VContact.where(:enabled => true)
|
|
-echantillon2 = VContact.where(:enabled => true).where("last_volume_at < ?", @date - 10.year)
|
|
-echantillon3 = VContact.where(:enabled => true).where("last_volume_at < ?", @date - 5.year)
|
|
-echantillon4 = VContact.where(:enabled => true).where("last_volume_at < ?", @date - 2.year)
|
|
|
|
%h3 Chifres clés
|
|
|
|
%table.table{:style => "width:auto;"}
|
|
%tr
|
|
%th
|
|
%th années
|
|
%th Nbr
|
|
%th Primes
|
|
|
|
%tr
|
|
%th Sur toutes les cartes actives
|
|
%td
|
|
%td.numeraire= echantillon1.count
|
|
%td.numeraire=number_to_currency echantillon1.sum(:prime)
|
|
|
|
%tr
|
|
%th
|
|
Sur cartes n'ayant pas eu d'activité depuis
|
|
|
|
%td.numeraire 2 ans
|
|
%td.numeraire= echantillon4.count
|
|
%td.numeraire=number_to_currency echantillon4.sum(:prime)
|
|
|
|
%tr
|
|
%th
|
|
Sur cartes n'ayant pas eu d'activité depuis
|
|
|
|
%td.numeraire 5 ans
|
|
%td.numeraire= echantillon3.count
|
|
%td.numeraire=number_to_currency echantillon3.sum(:prime)
|
|
|
|
%tr
|
|
%th
|
|
Sur cartes n'ayant pas eu d'activité depuis
|
|
|
|
%td.numeraire 10 ans
|
|
%td.numeraire= echantillon2.count
|
|
%td.numeraire=number_to_currency echantillon2.sum(:prime)
|
|
|
|
|
|
|
|
%h3 Chifres interessants
|
|
|
|
%table.table{:style => "width:auto;"}
|
|
%tr
|
|
%th Cartes n'ayant jamais eu de mouvement
|
|
%td=VContact.where(:enabled => true, :nbr_mvt => 0).count
|
|
%tr
|
|
%th Cartes avec % de remise nul
|
|
%td=VContact.where(:enabled => true,:ac_rate => 0.0).count
|
|
%tr
|
|
%th Société sans seuil de déclenchement
|
|
%td=VContact.where(:enabled => true,:ac_rate => 0.0).group(:codeproprietaire).map {|a| a.codeproprietaire}.join(", ")
|
|
|
|
%h3 Cartes ayant une prime négative :
|
|
%table.table
|
|
=render VContact.where(:enabled => true).where("prime < 0.0").order("codeproprietaire")
|
|
|
|
-if false
|
|
|
|
-@soc_ids = VContact.where("codemanaginn LIKE 'CCV%'").group(:codeproprietaire).map{|a| a.codeproprietaire}
|
|
|
|
|
|
=@soc_ids = (@soc_ids-["", nil])
|
|
|
|
-@valid_soc_ids = Societe.where(:socmanaginn => @soc_ids).group(:socmanaginn).map{|a| a.socmanaginn}
|
|
|
|
|
|
%p
|
|
Date de référence :
|
|
%strong
|
|
=l @date
|
|
|
|
|
|
%table.table
|
|
%tr
|
|
%td Nombre de sociétés valides
|
|
%td=@valid_soc_ids.size
|
|
|
|
%tr
|
|
%td Nombre de sociétés invalides
|
|
%td=@soc_ids.size - @valid_soc_ids.size
|
|
|
|
%tr
|
|
%td
|
|
Nombre de cartes retrouvées
|
|
%td
|
|
=VContact.where("codemanaginn LIKE 'CCV%'").count
|
|
|
|
%tr
|
|
%td
|
|
Nombre de cartes appartenants à des sociétés valides
|
|
%td
|
|
=VContact.where("codemanaginn LIKE 'CCV%'").where(:codeproprietaire => @valid_soc_ids).count
|
|
|
|
|
|
%p
|
|
Nombre de cartes non traitées :
|
|
=VContact.where("codemanaginn LIKE 'CCV%' and prime is null").count
|
|
|
|
%p
|
|
Total des primes :
|
|
|
|
|
|
-echantillon1 = VContact.where("codemanaginn LIKE 'CCV%'")
|
|
-echantillon2 = VContact.where("codemanaginn LIKE 'CCV%'").where("last_volume_at < ?", @date - 10.year)
|
|
-echantillon3 = VContact.where("codemanaginn LIKE 'CCV%'").where("last_volume_at < ?", @date - 5.year)
|
|
-echantillon4 = VContact.where("codemanaginn LIKE 'CCV%'").where("last_volume_at < ?", @date - 2.year)
|
|
|
|
|
|
%strong= VContact.where("codemanaginn LIKE 'CCV%' and prime < 0.0").sum("prime")
|
|
|
|
%table.table
|
|
=#render VContact.where("codemanaginn LIKE 'CCV%' and prime < 0.0")
|
|
|
|
%table.table{:style => "width:auto;"}
|
|
%tr
|
|
%th
|
|
%th années
|
|
%th Nbr
|
|
%th Primes
|
|
|
|
%tr
|
|
%th Total
|
|
%td
|
|
%td= echantillon1.count
|
|
%td=number_to_currency echantillon1.sum(:prime)
|
|
|
|
%tr
|
|
%th
|
|
Sur cartes n'ayant pas eu d'activité depuis
|
|
|
|
%td 10 ans
|
|
%td= echantillon2.count
|
|
%td=number_to_currency echantillon2.sum(:prime)
|
|
|
|
%tr
|
|
%th
|
|
Sur cartes n'ayant pas eu d'activité depuis
|
|
|
|
%td 5 ans
|
|
%td= echantillon3.count
|
|
%td=number_to_currency echantillon3.sum(:prime)
|
|
|
|
%tr
|
|
%th
|
|
Sur cartes n'ayant pas eu d'activité depuis
|
|
|
|
%td 2 ans
|
|
%td= echantillon4.count
|
|
%td=number_to_currency echantillon4.sum(:prime)
|
|
|
|
|
|
|
|
|
|
%table.table
|
|
|
|
|
|
-VContact.where("codemanaginn LIKE 'CCV%' and prime is null").order("rand()").limit(1000000).each do |v_contact|
|
|
-societe = Societe.where(:socmanaginn => v_contact.codeproprietaire).first
|
|
|
|
-seuils = SeuilDeclencheur.where(:codedeclencheur => "MGD00000004", :socmanaginn => v_contact.codeproprietaire).where("datefin > ?", @date)
|
|
|
|
-#seuil_vidanges = SeuilDeclencheur.where(:codedeclencheur => "MGD00000005", :socmanaginn => v_contact.codeproprietaire).where("datefin > ?", @date)
|
|
|
|
|
|
-seuil = seuils.first
|
|
-if seuil
|
|
-rate = ((seuil.valba.to_f / seuil.valseuil.to_f) * 100.0).round(2) if seuil.valba? and seuil.valseuil.to_f > 0.0
|
|
-else
|
|
-rate = 0.0
|
|
|
|
-cagnotte = VolumePeriodique.where(:codemanaginn => v_contact.codemanaginn, :codeindicateur => "MGI000000001").where("datereception <= ?", @date).sum(:valeur)
|
|
|
|
-prime = (cagnotte * (rate/100)).round(2)
|
|
|
|
|
|
-#vidanges = VolumePeriodique.where(:codemanaginn => v_contact.codemanaginn, :codeindicateur => "MGI000000003").where("datereception <= ?", @date).sum(:valeur)
|
|
|
|
-#seuil_vidange = seuil_vidanges.first
|
|
|
|
-last_date = nil
|
|
-last = VolumePeriodique.where(:codemanaginn => v_contact.codemanaginn).order("datereception DESC").first
|
|
|
|
-if last
|
|
-last_date = last.datereception
|
|
|
|
|
|
-v_contact.rate = rate
|
|
-v_contact.cagnotte = cagnotte
|
|
-v_contact.prime = prime
|
|
-#v_contact.nbr_vidanges = vidanges
|
|
-if false
|
|
-if seuil_vidange
|
|
-v_contact.vidanges_seuil = seuil_vidange.valseuil.to_i
|
|
-v_contact.vidanges_offerte = seuil_vidange.valba
|
|
- v_contact.last_volume_at = last_date
|
|
|
|
-v_contact.save
|
|
|
|
|
|
-if false and societe
|
|
%tr
|
|
%td- v_contact.codemanaginn
|
|
%td
|
|
=v_contact.prenom
|
|
=v_contact.nom
|
|
%td= v_contact.codeproprietaire
|
|
|
|
|
|
|
|
|
|
%td
|
|
=societe.nom if societe
|
|
|
|
|
|
|
|
%td
|
|
= seuils.count
|
|
|
|
%td
|
|
|
|
=rate
|
|
="%"
|
|
|
|
%td
|
|
|
|
=number_to_currency cagnotte
|
|
%td
|
|
=number_to_currency prime
|
|
|
|
%td
|
|
=vidanges
|
|
|
|
|
|
%td
|
|
|
|
=last_date
|
|
|
|
|
|
|
|
|
|
|
|
|