Add export to bill page.
This commit is contained in:
parent
b717ce7a14
commit
8938260212
|
@ -82,8 +82,12 @@ class Admin::VenueManagementBillsController < Admin::VenueAdminController
|
|||
end
|
||||
end
|
||||
if !@main_ids.nil?
|
||||
if @bills.nil?
|
||||
@bills = VenueManagementBill.where(:venue_management_main_id.in=>@main_ids).page(params[:page]).per(10)
|
||||
else
|
||||
@bills = @bills.where(:venue_management_main_id.in=>@main_ids).page(params[:page]).per(10)
|
||||
end
|
||||
end
|
||||
if @bills.nil?
|
||||
@bills = VenueManagementBill.all.page(params[:page]).per(10)
|
||||
end
|
||||
|
@ -139,6 +143,81 @@ class Admin::VenueManagementBillsController < Admin::VenueAdminController
|
|||
def render_html(code,pass_variables={})
|
||||
render_to_string(:inline=>code,:locals=>pass_variables)
|
||||
end
|
||||
def export
|
||||
filename = ""
|
||||
@bills = nil
|
||||
@categories = @module_app.categories.enabled
|
||||
@filter_fields = filter_fields(@categories)
|
||||
filter_tags = params[:filters]["type"].to_a rescue []
|
||||
@main_ids = nil
|
||||
if !filter_tags.blank?
|
||||
filename += (I18n.t("vm_bill.type") + ": #{Tag.where(:id.in=>filter_tags).map{|t| t.name}.join(',')}")
|
||||
@main_ids = VenueManagementInviting.with_tags(filter_tags).pluck(:venue_management_main_id)
|
||||
if !filters("category").blank?
|
||||
@main_ids = VenueManagementMain.where(:id.in=>@main_ids).with_categories(filters("category")).pluck(:id)
|
||||
end
|
||||
elsif !filters("category").blank?
|
||||
filename += (I18n.t(:category) + ": #{Category.where(:id.in=>filters("category")).map{|t| t.title}.join(',')}") if filename.blank?
|
||||
@main_ids = VenueManagementMain.all.with_categories(filters("category")).pluck(:id)
|
||||
end
|
||||
if ( !params[:filters]["bill_typeA"].blank? rescue false)
|
||||
@bills = VenueManagementBill.where(:bill_typeA=>params[:filters]["bill_typeA"],:bill_typeB=>params[:filters]["bill_typeB"]).page(params[:page]).per(10)
|
||||
end
|
||||
accounting_month_start = DateTime.parse(params[:filters]["accounting_month_start"]) rescue 0
|
||||
accounting_month_end = DateTime.parse(params[:filters]["accounting_month_end"]) rescue 0
|
||||
if @bills.nil?
|
||||
if accounting_month_start != 0 && accounting_month_end != 0
|
||||
filename += (I18n.t("vm_bill.accounting_month") + ": #{accounting_month_start}~#{accounting_month_end}") if filename.blank?
|
||||
@bills = VenueManagementBill.where(:accounting_month.gt=>accounting_month_start,:accounting_month.lte=>accounting_month_end).page(params[:page]).per(10)
|
||||
elsif accounting_month_start != 0
|
||||
filename += (I18n.t("vm_bill.accounting_month") + ": #{accounting_month_start}~") if filename.blank?
|
||||
@bills = VenueManagementBill.where(:accounting_month.gt=>accounting_month_start).page(params[:page]).per(10)
|
||||
elsif accounting_month_end != 0
|
||||
filename += (I18n.t("vm_bill.accounting_month") + ": ~#{accounting_month_end}") if filename.blank?
|
||||
@bills = VenueManagementBill.where(:accounting_month.lte=>accounting_month_end).page(params[:page]).per(10)
|
||||
end
|
||||
else
|
||||
if accounting_month_start != 0 && accounting_month_end != 0
|
||||
filename += (I18n.t("vm_bill.accounting_month") + ": #{accounting_month_start}~#{accounting_month_end}") if filename.blank?
|
||||
@bills = @bills.where(:accounting_month.gt=>accounting_month_start,:accounting_month.lte=>accounting_month_end).page(params[:page]).per(10)
|
||||
elsif accounting_month_start != 0
|
||||
filename += (I18n.t("vm_bill.accounting_month") + ": #{accounting_month_start}~") if filename.blank?
|
||||
@bills = @bills.where(:accounting_month.gt=>accounting_month_start).page(params[:page]).per(10)
|
||||
elsif accounting_month_end != 0
|
||||
filename += (I18n.t("vm_bill.accounting_month") + ": ~#{accounting_month_end}") if filename.blank?
|
||||
@bills = @bills.where(:accounting_month.lte=>accounting_month_end).page(params[:page]).per(10)
|
||||
end
|
||||
end
|
||||
if !@main_ids.nil?
|
||||
if @bills.nil?
|
||||
@bills = VenueManagementBill.where(:venue_management_main_id.in=>@main_ids).page(params[:page]).per(10)
|
||||
else
|
||||
@bills = @bills.where(:venue_management_main_id.in=>@main_ids).page(params[:page]).per(10)
|
||||
end
|
||||
end
|
||||
if @bills.nil?
|
||||
@bills = VenueManagementBill.all.page(params[:page]).per(10)
|
||||
end
|
||||
@bills = @bills.page(1).per(@bills.count)
|
||||
@protocol = (request.referer.blank? ? "http" : URI(request.referer).scheme)
|
||||
@host = "#{@protocol}://#{request.host_with_port}"
|
||||
@site_in_use_locales = Site.first.in_use_locales
|
||||
filename = "export_bills" if filename.blank?
|
||||
filename = filename + "_export.xlsx"
|
||||
respond_to do |format|
|
||||
format.xlsx {
|
||||
response.headers['Content-Transfer-Encoding'] = 'binary'
|
||||
response.headers['Content-Type'] = 'binary/octet-stream'
|
||||
response.headers['Content-Disposition'] = 'attachment; filename="' + filename + '"'
|
||||
}
|
||||
end
|
||||
render :layout => false
|
||||
# file_path = "tmp/cache/#{filename}"
|
||||
# File.open(file_path, 'w') do |f|
|
||||
# f.write render_to_string( handlers: [:axlsx], formats: [:xlsx] ,locals: {:@bills=>@bills,:@protocol=>@protocol,:@host=>@host,:@site_in_use_locales=>@site_in_use_locales}, :layout=>false )
|
||||
# end
|
||||
# send_file file_path
|
||||
end
|
||||
private
|
||||
|
||||
def set_venue_management_bill
|
||||
|
|
|
@ -364,7 +364,7 @@ class Admin::VenueManagementsController < Admin::VenueAdminController
|
|||
(render_html('<%= org_datetime_picker("filters[accounting_month_start]", {:no_label => true, :format=>"yyyy/MM", :new_record=>false, :value=>(DateTime.parse(params[:filters]["accounting_month_start"]) rescue nil)}) %>')) +
|
||||
"</div><span style=\"float: left;\">~</span><div style=\"float: left;\">" +
|
||||
(render_html('<%= org_datetime_picker("filters[accounting_month_end]", {:no_label => true, :format=>"yyyy/MM", :new_record=>false, :value=>(DateTime.parse(params[:filters]["accounting_month_end"]) rescue nil)}) %>' ) ) +
|
||||
render_html("submit_tag(I18n.t('venue_management.search'))") +
|
||||
render_html("<%= submit_tag(I18n.t('venue_management.search')) %>") +
|
||||
'</div></div></form>')
|
||||
filter_tags = params[:filters]["type"].to_a rescue []
|
||||
@main_ids = nil
|
||||
|
|
|
@ -203,6 +203,7 @@
|
|||
<% end %>
|
||||
</div>
|
||||
<% end %>
|
||||
<%= render partial: 'admin/venue_shared/venue_file_link',locals: {venue: @venue_management_bill,f: f} %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
|
@ -1,9 +1,5 @@
|
|||
<% content_for :page_specific_javascript do %>
|
||||
<%= javascript_include_tag "lib/bootstrap-fileupload" %>
|
||||
<%= javascript_include_tag "lib/bootstrap-datetimepicker" %>
|
||||
<%= javascript_include_tag "lib/datetimepicker/datetimepicker.js" %>
|
||||
<%= javascript_include_tag "lib/file-type" %>
|
||||
<%= javascript_include_tag "lib/module-area" %>
|
||||
<% end %>
|
||||
<script>
|
||||
if(document.querySelectorAll("#orbit-bar").length==0) location.reload();
|
||||
|
@ -55,27 +51,35 @@
|
|||
<% end %>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<%=
|
||||
content_tag :div, class: "bottomnav clearfix" do
|
||||
content_tag :div, paginate(@bills), class: "pagination pagination-centered"
|
||||
end
|
||||
%>
|
||||
<% filter_url = request.fullpath.split("?")[1..-1].join("?") %>
|
||||
<% if @venue_management.present? %>
|
||||
<!-- footer -->
|
||||
<div class="bottomnav clearfix">
|
||||
<%= content_tag :div, class: "pagination pagination-centered" do %>
|
||||
<%= content_tag :div, class: "pagination-centered" do %>
|
||||
<%= paginate(@bills) %>
|
||||
<div class="action pull-right">
|
||||
<%= link_to content_tag(:i, nil, class: "fa fa-download") + " " + t('venue_management.export'), export_admin_venue_management_bills_path(:format=>'xlsx')+"#{(filter_url.blank? ? '' : ('?'+filter_url))}", class: "btn btn-primary", target: '_blank' %>
|
||||
<%= link_to content_tag(:i, nil, class: "icons-plus") + " " + t(:add), new_admin_venue_management_bill_path(id: @venue_management.id), class: "btn btn-primary" %>
|
||||
</div>
|
||||
<% end %>
|
||||
</div>
|
||||
<!-- footer:end -->
|
||||
<% else %>
|
||||
<%=
|
||||
content_tag :div, class: "bottomnav clearfix" do
|
||||
(content_tag(:div, class: "pagination-centered") do
|
||||
paginate(@bills)
|
||||
end) +
|
||||
('<div class="action pull-right">'.html_safe +
|
||||
link_to(content_tag(:i, nil, class: "fa fa-download") + " " + t('venue_management.export'), export_admin_venue_management_bills_path(:format=>'xlsx')+"#{(filter_url.blank? ? '' : ('?'+filter_url))}", class: "btn btn-primary", target: '_blank') +
|
||||
'</div>'.html_safe)
|
||||
end
|
||||
%>
|
||||
<% end %>
|
||||
<style type="text/css">
|
||||
.pagination-centered .pagination{
|
||||
width: calc(100% - 6em);
|
||||
width: calc(100% - 18em);
|
||||
padding-left: 6em;
|
||||
float: left;
|
||||
}
|
||||
.main-list {
|
||||
|
|
|
@ -0,0 +1,62 @@
|
|||
# encoding: utf-8
|
||||
|
||||
wb = xlsx_package.workbook
|
||||
|
||||
wb.add_worksheet(name: t('restful_actions.venue_management_bills')) do |sheet|
|
||||
row = []
|
||||
row << t('venue_management.contractor')
|
||||
row << t('vm_bill.accounting_month')
|
||||
row << t('vm_bill.bill_type')
|
||||
row << t('vm_bill.caculation_basis')
|
||||
@site_in_use_locales.each do |locale|
|
||||
row << t('vm_bill.reason') + " - " + t(locale)
|
||||
end
|
||||
@site_in_use_locales.each do |locale|
|
||||
row << t('vm_bill.pay_method') + " - " + t(locale)
|
||||
end
|
||||
@site_in_use_locales.each do |locale|
|
||||
row << t('vm_bill.note') + " - " + t(locale)
|
||||
end
|
||||
row << t("link")
|
||||
@site_in_use_locales.each do |locale|
|
||||
row << t("link") + " " + t("url_alt") + " - " + t(locale)
|
||||
end
|
||||
row << t("file_")
|
||||
@site_in_use_locales.each do |locale|
|
||||
row << t("file_") + " " + t("description") + " - " + t(locale)
|
||||
end
|
||||
@site_in_use_locales.each do |locale|
|
||||
row << t("file_") + " " + t("alternative") + " - " + t(locale)
|
||||
end
|
||||
sheet.add_row row
|
||||
@bills.each do |bill|
|
||||
row2 = []
|
||||
row2 << (bill.contractor.display_contractors rescue "")
|
||||
row2 << bill.display_accounting_month
|
||||
row2 << "#{t("vm_bill.#{bill.bill_typeA}")}/#{t("vm_bill.#{bill.bill_typeB}")}"
|
||||
row2 << bill.display_caculation_basis
|
||||
@site_in_use_locales.each do |locale|
|
||||
row2 << bill.reason_translations[locale]
|
||||
end
|
||||
@site_in_use_locales.each do |locale|
|
||||
row2 << bill.pay_method_translations[locale]
|
||||
end
|
||||
@site_in_use_locales.each do |locale|
|
||||
row2 << bill.note_translations[locale]
|
||||
end
|
||||
row2 << bill.venue_management_links.map{|l| l.url.to_s.strip}.join(";")
|
||||
@site_in_use_locales.each do |locale|
|
||||
row2 << bill.venue_management_links.map{|l| l.title_translations[locale].to_s.strip}.join(";")
|
||||
end
|
||||
row2 << bill.venue_management_files.map{|f| @host + f.file.url rescue nil}.select{|s| !s.nil?}.join(";")
|
||||
@site_in_use_locales.each do |locale|
|
||||
row2 << bill.venue_management_files.map{|f| f.description_translations[locale].to_s.strip}.join(";")
|
||||
end
|
||||
@site_in_use_locales.each do |locale|
|
||||
row2 << bill.venue_management_files.map{|f| f.title_translations[locale].to_s.strip}.join(";")
|
||||
end
|
||||
sheet.add_row row2
|
||||
end
|
||||
|
||||
|
||||
end
|
|
@ -86,13 +86,13 @@
|
|||
<div class="control-group">
|
||||
<label class="control-label muted"><%= t('vm_inviting.house_tax_payer') %></label>
|
||||
<div class="controls">
|
||||
<%= f.select :house_tax_payer, VenueManagementInviting::PAYERS.map { |p| [t("vm_inviting.enums.#{p}"), p] } %>
|
||||
<%= f.select :house_tax_payer, options_for_select(VenueManagementInviting::PAYERS.map { |p| [t("vm_inviting.enums.#{p}"), p] },(@venue_management_inviting.new_record? ? VenueManagementInviting::PAYERS.last : @venue_management_inviting.house_tax_payer)) %>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label muted"><%= t('vm_inviting.land_tax_payer') %></label>
|
||||
<div class="controls">
|
||||
<%= f.select :land_tax_payer, VenueManagementInviting::PAYERS.map { |p| [t("vm_inviting.enums.#{p}"), p] } %>
|
||||
<%= f.select :land_tax_payer, options_for_select(VenueManagementInviting::PAYERS.map { |p| [t("vm_inviting.enums.#{p}"), p] },(@venue_management_inviting.new_record? ? VenueManagementInviting::PAYERS.last : @venue_management_inviting.land_tax_payer)) %>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
|
|
|
@ -34,6 +34,7 @@ Rails.application.routes.draw do
|
|||
scope "(:id)" do
|
||||
get 'copy', to: 'venue_management_bills#copy'
|
||||
end
|
||||
get 'export'
|
||||
end
|
||||
end
|
||||
resources :venue_management_contracts do
|
||||
|
|
Loading…
Reference in New Issue