# -*- encoding : utf-8 -*- class Admin::PStatsController < ApplicationController layout "admin" before_action :auth_admin before_action :admin_space def admin_space @admin_space = "statistiques" end def index date_regex = /^(0[1-9]|[12][0-9]|3[01])[\/](0[1-9]|1[012])[\/](19|20)\d\d$/i if params[:start] and params[:start] =~ date_regex @start = Date.parse(params[:start]).beginning_of_day elsif !params[:start] @start = Date.today.beginning_of_year else @start = Date.parse("2000-01-01") end params[:start]= @start.strftime('%d/%m/%Y') if params[:stop] and params[:stop] =~ date_regex @stop = Date.parse(params[:stop]).end_of_day else @stop = Date.today.end_of_month end params[:stop]= @stop.strftime('%d/%m/%Y') @p_customer_sheets = PCustomerSheet.where("created_at >= ? and created_at <= ?",@start, @stop).order("id DESC").all @sans_marges = PSheetLine.where(:p_customer_sheet_id => @p_customer_sheets.ids).where(:externe => false, :stock_done => false, :shiped => true) @finished = @p_customer_sheets.where(:state => ["livrée","facturée"]) params[:search][:per_page] = params[:search][:per_page] || 500000 per_page = params[:search][:per_page] page = (params[:page] and params[:page] != "") ? params[:page] : 1 @m_odr_primes = MOdrPrime.where("m_odr_primes.created_at >= ? and m_odr_primes.created_at < ?",@start.beginning_of_year, @stop).where(:state => ["Virement envoyé"]) @m_odr_primes = @m_odr_primes.joins(:p_customer) @m_odr_primes = @m_odr_primes.where("m_odr_primes.created_at >= ?", @start) @m_odr_primes = sort_by_sorting(@m_odr_primes, "m_odr_primes.created_at DESC") @m_odr_primes = @m_odr_primes.page(page).per(per_page) respond_to do |format| format.html{ params[:per_page] = params[:per_page] || 50 per_page = params[:per_page] page = (params[:page] and params[:page] != "") ? params[:page] : 1 @m_odr_primes = @m_odr_primes.page(page).per(per_page) } format.csv { @headers = [] @columns = [] MOdrPrime.qi_table_order.each do |key, value| if value.instance_of? Hash name = value[:name] else name = value end if name != "Actions" @headers << name.to_s @columns << key end end xlsx_package = Axlsx::Package.new wb = xlsx_package.workbook wb.add_worksheet(name: "import") do |sheet| sheet.add_row @headers @m_odr_primes.each do |m_odr_prime| line = [] @columns.each do |column| if (m_odr_prime.respond_to?("csv_"+column.to_s)) line << m_odr_prime.send("csv_"+column.to_s) elsif (m_odr_prime.respond_to?(column)) if m_odr_prime.send(column.to_s).class.to_s == "BigDecimal" line << m_odr_prime.send(column.to_s).to_s.gsub('.', ',') else line << m_odr_prime.send(column.to_s) end else line << column.to_s end end sheet.add_row line, types: line.map{|t| self.cell_type_from_value(t)} end end @final_file = "#{Rails.root}/private_medias/export-primes-#{Time.now.to_s.to_slug}.xlsx" xlsx_package.serialize(@final_file) send_file @final_file } end end end