mirror of
https://github.com/fspc/bike-database.git
synced 2025-02-23 09:33:23 -05:00
lk | adds ability to print multiple receipts for freecyclery clients
This commit is contained in:
parent
bbc84247b4
commit
2ca3ae21a8
@ -1,4 +1,4 @@
|
||||
.freecyclery-receipt{
|
||||
.print-receipts, .freecyclery-receipt{
|
||||
h2 {
|
||||
font-size: 18px;
|
||||
}
|
||||
@ -7,6 +7,7 @@
|
||||
border-bottom: 5px solid black;
|
||||
}
|
||||
.receipt{
|
||||
page-break-inside: avoid;
|
||||
margin: 10px;
|
||||
border: 5px solid black;
|
||||
height: 400px;
|
||||
|
@ -31,6 +31,15 @@ class ClientsController < ApplicationController
|
||||
end
|
||||
end
|
||||
|
||||
def print_select
|
||||
@clients = Client.includes(:bike).where.not(bike_id: nil).order(application_date: :desc).paginate(:page => params[:page], :per_page => 30)
|
||||
end
|
||||
|
||||
def print_receipts
|
||||
client_ids = print_params.map{|key, value| key if value == "1"}.compact
|
||||
@clients = Client.find(client_ids)
|
||||
end
|
||||
|
||||
private
|
||||
def set_client
|
||||
@client = Client.find(params[:id])
|
||||
@ -60,4 +69,8 @@ class ClientsController < ApplicationController
|
||||
:pickup_date,
|
||||
:volunteer_at_pickup)
|
||||
end
|
||||
|
||||
def print_params
|
||||
params.require(:print_clients)
|
||||
end
|
||||
end
|
||||
|
@ -5,6 +5,7 @@ class Bike < ActiveRecord::Base
|
||||
validates :bike_type, presence: true
|
||||
validates :color, presence: true
|
||||
validates :serial_number, presence: true
|
||||
has_one :client
|
||||
|
||||
def self.bike_types
|
||||
[
|
||||
|
@ -1,7 +1,7 @@
|
||||
class Client < ActiveRecord::Base
|
||||
# TODO: figure out why application_date validation is fubar
|
||||
# validates :application_date, presence: true
|
||||
has_one :bike
|
||||
belongs_to :bike
|
||||
belongs_to :agency
|
||||
|
||||
def self.waiting_list
|
||||
@ -20,8 +20,4 @@ class Client < ActiveRecord::Base
|
||||
Client.all.select{|client| client.application_voided || client.pickup_date}
|
||||
end
|
||||
|
||||
def bike
|
||||
Bike.find(self.bike_id)
|
||||
end
|
||||
|
||||
end
|
||||
|
74
app/views/clients/_receipt.html.haml
Normal file
74
app/views/clients/_receipt.html.haml
Normal file
@ -0,0 +1,74 @@
|
||||
.col-xs-6
|
||||
.receipt
|
||||
%h2
|
||||
%strong= client.bike.name
|
||||
%br
|
||||
.horizontal-line
|
||||
.client-information
|
||||
= client.name
|
||||
%br
|
||||
= client.agency.agency_name if client.agency
|
||||
.horizontal-line
|
||||
%br
|
||||
Includes:
|
||||
%br
|
||||
= 'Helmet' if client.helmet
|
||||
%br
|
||||
= 'Lock' if client.lock
|
||||
%br
|
||||
%br
|
||||
Date Received
|
||||
%br
|
||||
_______________
|
||||
%br
|
||||
Client Signature
|
||||
%br
|
||||
________________
|
||||
%br
|
||||
Recyclery Volunteer Initials
|
||||
%br
|
||||
___
|
||||
%br
|
||||
CLIENT COPY
|
||||
|
||||
.col-xs-6
|
||||
.receipt
|
||||
%h2
|
||||
%strong= client.bike.name
|
||||
%br
|
||||
.horizontal-line
|
||||
.client-information
|
||||
= client.name
|
||||
%br
|
||||
= client.agency.agency_name if client.agency
|
||||
.horizontal-line
|
||||
.row
|
||||
.col-xs-6
|
||||
%br
|
||||
= 'Will make 25$ payment for lock and helmet' if client.will_pay
|
||||
%br
|
||||
Includes:
|
||||
%br
|
||||
= 'Helmet' if client.helmet
|
||||
%br
|
||||
= 'Lock' if client.lock
|
||||
%br
|
||||
%br
|
||||
Date Received
|
||||
%br
|
||||
_______________
|
||||
%br
|
||||
Client Signature
|
||||
%br
|
||||
________________
|
||||
.col-xs-6
|
||||
.client-info-header CLIENT INFO
|
||||
.client-email= "Agency Email: " + client.agency.email
|
||||
.client-phone= "Agency Phone #: " + client.agency.phone_number
|
||||
.client-photo-consent [ ] I grant consent to the Recyclery to use and publish photographs of me.
|
||||
%br
|
||||
Recyclery Volunteer Initials
|
||||
%br
|
||||
___
|
||||
%br
|
||||
RECYCLERY COPY
|
4
app/views/clients/print_receipts.html.haml
Normal file
4
app/views/clients/print_receipts.html.haml
Normal file
@ -0,0 +1,4 @@
|
||||
.container.print-receipts
|
||||
- @clients.each do |client|
|
||||
.row
|
||||
= render partial: "receipt", locals: {client: client}
|
18
app/views/clients/print_select.html.haml
Normal file
18
app/views/clients/print_select.html.haml
Normal file
@ -0,0 +1,18 @@
|
||||
.container
|
||||
%h1 Select the clients whose receipts you would like to print
|
||||
|
||||
=form_tag("/clients/print_receipts", method: "get") do
|
||||
%table.table.table-striped.table-bordered.table-hover
|
||||
%thead
|
||||
%tr
|
||||
%th Client
|
||||
%th Bike
|
||||
%th Select
|
||||
-@clients.each do |client|
|
||||
%tr
|
||||
%td= client.name
|
||||
%td= client.bike.name
|
||||
%td= check_box("print_clients", client.id)
|
||||
=will_paginate @clients
|
||||
%br
|
||||
=submit_tag 'Generate Receipts', class: "btn btn-default"
|
@ -15,6 +15,8 @@
|
||||
%br
|
||||
= link_to "Freecyclery Agencies", agencies_path
|
||||
%br
|
||||
= link_to "Print Client Receipts", print_select_clients_path
|
||||
%br
|
||||
= link_to "Freecyclery Closed Applications", closed_applications_path
|
||||
%br
|
||||
= link_to "Available Bikes", available_bikes_path
|
||||
|
@ -18,6 +18,9 @@ Bikedb::Application.routes.draw do
|
||||
resources :agencies
|
||||
resources :clients do
|
||||
get 'receipt' => 'freecyclery#receipt'
|
||||
get 'print_select' => 'clients#print_select', on: :collection
|
||||
get 'print_receipts' => 'clients#print_receipts', on: :collection
|
||||
|
||||
end
|
||||
|
||||
get 'closed_applications' => 'freecyclery#closed_applications'
|
||||
|
58
db/schema.rb
58
db/schema.rb
@ -17,26 +17,26 @@ ActiveRecord::Schema.define(version: 20151230021120) do
|
||||
enable_extension "plpgsql"
|
||||
|
||||
create_table "agencies", force: :cascade do |t|
|
||||
t.string "agency_name"
|
||||
t.string "contact_name"
|
||||
t.string "street_address"
|
||||
t.string "city"
|
||||
t.string "state"
|
||||
t.string "postal_code"
|
||||
t.string "phone_number"
|
||||
t.string "email"
|
||||
t.string "agency_name", limit: 255
|
||||
t.string "contact_name", limit: 255
|
||||
t.string "street_address", limit: 255
|
||||
t.string "city", limit: 255
|
||||
t.string "state", limit: 255
|
||||
t.string "postal_code", limit: 255
|
||||
t.string "phone_number", limit: 255
|
||||
t.string "email", limit: 255
|
||||
end
|
||||
|
||||
create_table "bikes", force: :cascade do |t|
|
||||
t.string "entry_date"
|
||||
t.string "brand"
|
||||
t.string "model"
|
||||
t.string "bike_type"
|
||||
t.string "color"
|
||||
t.string "serial_number"
|
||||
t.string "entry_date", limit: 255
|
||||
t.string "brand", limit: 255
|
||||
t.string "model", limit: 255
|
||||
t.string "bike_type", limit: 255
|
||||
t.string "color", limit: 255
|
||||
t.string "serial_number", limit: 255
|
||||
t.text "work_done"
|
||||
t.text "new_parts"
|
||||
t.string "price"
|
||||
t.string "price", limit: 255
|
||||
t.datetime "created_at"
|
||||
t.datetime "updated_at"
|
||||
t.float "seat_tube_size"
|
||||
@ -49,17 +49,17 @@ ActiveRecord::Schema.define(version: 20151230021120) do
|
||||
end
|
||||
|
||||
create_table "clients", force: :cascade do |t|
|
||||
t.string "first_name"
|
||||
t.string "last_name"
|
||||
t.string "first_name", limit: 255
|
||||
t.string "last_name", limit: 255
|
||||
t.date "application_date_bkp"
|
||||
t.string "gender"
|
||||
t.string "gender", limit: 255
|
||||
t.integer "age"
|
||||
t.boolean "helmet"
|
||||
t.boolean "lock"
|
||||
t.datetime "created_at"
|
||||
t.datetime "updated_at"
|
||||
t.integer "bike_id"
|
||||
t.string "bike_type_requested"
|
||||
t.string "bike_type_requested", limit: 255
|
||||
t.boolean "will_pay"
|
||||
t.integer "agency_id"
|
||||
t.text "notes"
|
||||
@ -67,7 +67,7 @@ ActiveRecord::Schema.define(version: 20151230021120) do
|
||||
t.integer "number_of_calls"
|
||||
t.boolean "application_voided"
|
||||
t.date "pickup_date_bkp"
|
||||
t.string "volunteer_at_pickup"
|
||||
t.string "volunteer_at_pickup", limit: 255
|
||||
t.float "weight"
|
||||
t.float "height"
|
||||
t.datetime "application_date"
|
||||
@ -78,16 +78,16 @@ ActiveRecord::Schema.define(version: 20151230021120) do
|
||||
add_index "clients", ["bike_id"], name: "index_clients_on_bike_id", using: :btree
|
||||
|
||||
create_table "users", force: :cascade do |t|
|
||||
t.string "email", default: "", null: false
|
||||
t.string "encrypted_password", default: "", null: false
|
||||
t.string "reset_password_token"
|
||||
t.string "email", limit: 255, default: "", null: false
|
||||
t.string "encrypted_password", limit: 255, default: "", null: false
|
||||
t.string "reset_password_token", limit: 255
|
||||
t.datetime "reset_password_sent_at"
|
||||
t.datetime "remember_created_at"
|
||||
t.integer "sign_in_count", default: 0, null: false
|
||||
t.integer "sign_in_count", default: 0, null: false
|
||||
t.datetime "current_sign_in_at"
|
||||
t.datetime "last_sign_in_at"
|
||||
t.string "current_sign_in_ip"
|
||||
t.string "last_sign_in_ip"
|
||||
t.string "current_sign_in_ip", limit: 255
|
||||
t.string "last_sign_in_ip", limit: 255
|
||||
t.datetime "created_at"
|
||||
t.datetime "updated_at"
|
||||
end
|
||||
@ -96,9 +96,9 @@ ActiveRecord::Schema.define(version: 20151230021120) do
|
||||
add_index "users", ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true, using: :btree
|
||||
|
||||
create_table "volunteers", force: :cascade do |t|
|
||||
t.string "name"
|
||||
t.string "email"
|
||||
t.string "phone"
|
||||
t.string "name", limit: 255
|
||||
t.string "email", limit: 255
|
||||
t.string "phone", limit: 255
|
||||
t.date "orientation_date"
|
||||
t.integer "other_volunteer_hours"
|
||||
t.text "referral"
|
||||
|
Loading…
x
Reference in New Issue
Block a user