fossil 0.5.47 → 0.5.48
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/VERSION +1 -1
- data/fossil.gemspec +2 -2
- data/lib/dbr_models/trip_leg.rb +16 -14
- data/lib/models/flight_log_expense.rb +2 -2
- data/lib/models/trip_leg.rb +10 -20
- data/lib/support/core_extensions.rb +1 -1
- data/spec/models/flight_log_expense_spec.rb +59 -3
- data/spec/models/trip_leg_spec.rb +61 -6
- data/spec/temp_spec.rb +20 -8
- metadata +2 -2
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.5.
|
1
|
+
0.5.48
|
data/fossil.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{fossil}
|
8
|
-
s.version = "0.5.
|
8
|
+
s.version = "0.5.48"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Daniel Sudol", "Patrick Lardin"]
|
12
|
-
s.date = %q{2011-
|
12
|
+
s.date = %q{2011-04-01}
|
13
13
|
s.description = %q{Access FOS/betrieve db with this Sequel based orm wrapper}
|
14
14
|
s.email = %q{dansudol@yahoo.com}
|
15
15
|
s.extra_rdoc_files = [
|
data/lib/dbr_models/trip_leg.rb
CHANGED
@@ -7,18 +7,20 @@
|
|
7
7
|
# The other methods are special methods for datamart trip_leg summary table
|
8
8
|
#
|
9
9
|
class TripLeg
|
10
|
-
one_to_many :crew_legs,
|
11
|
-
one_to_many :flight_log_expenses,
|
12
|
-
many_to_one :trip,
|
13
|
-
many_to_one :arrival_fbo,
|
14
|
-
many_to_one :departure_fbo,
|
15
|
-
many_to_one :trip_requester,
|
16
|
-
many_to_one :leg_requestor,
|
17
|
-
many_to_one :departure_catering_comment, :class=>:Comment,
|
18
|
-
many_to_one :arrival_catering_comment, :class=>:Comment,
|
19
|
-
many_to_one :departure_transport_comment, :class=>:Comment,
|
20
|
-
many_to_one :arrival_transport_comment, :class=>:Comment,
|
21
|
-
many_to_one :departure_general_comment, :class=>:Comment,
|
22
|
-
many_to_one :arrival_general_comment, :class=>:Comment,
|
23
|
-
many_to_one :crew_transport_comment, :class=>:Comment,
|
10
|
+
one_to_many :crew_legs, :class=>:CrewLeg, :key=>:trip_leg_id, :primary_key=>:id
|
11
|
+
one_to_many :flight_log_expenses, :class=>:FlightLogExpense, :key=>:trip_leg_id, :primary_key=>:id
|
12
|
+
many_to_one :trip, :class=>:Trip, :key=>:trips_id
|
13
|
+
many_to_one :arrival_fbo, :class=>:AirportFbo, :key=>:fbo_id
|
14
|
+
many_to_one :departure_fbo, :class=>:AirportFbo, :key=>:fueler_id
|
15
|
+
many_to_one :trip_requester, :class=>:Passenger, :key=>:requester_id
|
16
|
+
many_to_one :leg_requestor, :class=>:Passenger, :key=>:leg_req_id
|
17
|
+
many_to_one :departure_catering_comment, :class=>:Comment, :key=>:departure_catering_comment_id
|
18
|
+
many_to_one :arrival_catering_comment, :class=>:Comment, :key=>:arrival_catering_comment_id
|
19
|
+
many_to_one :departure_transport_comment, :class=>:Comment, :key=>:departure_transport_comment_id
|
20
|
+
many_to_one :arrival_transport_comment, :class=>:Comment, :key=>:arrival_transport_comment_id
|
21
|
+
many_to_one :departure_general_comment, :class=>:Comment, :key=>:departure_general_comment_id
|
22
|
+
many_to_one :arrival_general_comment, :class=>:Comment, :key=>:arrival_general_comment_id
|
23
|
+
many_to_one :crew_transport_comment, :class=>:Comment, :key=>:crew_transport_comment_id
|
24
|
+
many_to_one :arrival_airport, :class=>:Airport, :key=>:arrival_airport_id, :primary_key => :airport_id
|
25
|
+
many_to_one :departure_airport, :class=>:Airport, :key=>:depart_airport_id, :primary_key => :airport_id
|
24
26
|
end
|
@@ -63,7 +63,7 @@ class FlightLogExpense < Sequel::Model(:'flight log expenses')
|
|
63
63
|
column_alias :pay_method, :'pay method'
|
64
64
|
column_alias :percent_markup, :'percent markup'
|
65
65
|
column_alias :problem, :'problem'
|
66
|
-
column_alias :quantity, :'quantity'
|
66
|
+
column_alias :quantity, :'quantity', :type => :integer
|
67
67
|
column_alias :quantity_tenths, :'quantity tenths'
|
68
68
|
column_alias :receipt, :'receipt'
|
69
69
|
column_alias :receipt_number, :'receipt number'
|
@@ -83,7 +83,7 @@ class FlightLogExpense < Sequel::Model(:'flight log expenses')
|
|
83
83
|
column_alias :trip_leg_kid_mult, :'trip leg kid - mult'
|
84
84
|
column_alias :trip_leg_kid_time, :'trip leg kid - time'
|
85
85
|
column_alias :trip_leg_kid_user, :'trip leg kid - user'
|
86
|
-
column_alias :type, :'type'
|
86
|
+
column_alias :type, :'type', :type => :integer
|
87
87
|
column_alias :unit, :'unit'
|
88
88
|
column_alias :unit_cost, :'unit cost'
|
89
89
|
column_alias :vendor_id, :'vendor id'
|
data/lib/models/trip_leg.rb
CHANGED
@@ -950,35 +950,25 @@ class TripLeg < Sequel::Model(:'trip legs')
|
|
950
950
|
TripLeg.filter(:cancelled => 0, :status => [0,1,2]).
|
951
951
|
filter(~{:'leg state' => 5}).
|
952
952
|
filter({:'dept date act local' => start_date..end_date,
|
953
|
-
:'depart date - local'
|
954
|
-
|
955
|
-
# eager_graph(:departure_fbo).
|
956
|
-
# eager_graph(:arrival_fbo).
|
957
|
-
# select_fields(:self => [:dept_date_act_local, :depart_date_local, :trip_number, :leg_number,
|
958
|
-
# :departure_icao, :depart_ap_prefix, :depart_airport_id, :arrival_icao,
|
959
|
-
# :arrival_airport_id, :arrival_ap_prefix, :aircraft_id],
|
960
|
-
# :flight_log_expenses__vendor => [:company_2, :company_1, :vendor_id],
|
961
|
-
# :flight_log_expenses => [:*],
|
962
|
-
# :departure_fbo => [:name],
|
963
|
-
# :arrival_fbo => [:name]).all
|
953
|
+
:'depart date - local' => start_date..end_date}.sql_or).
|
954
|
+
order(:depart_date_local).all
|
964
955
|
end
|
965
956
|
|
966
957
|
def fuel_data_by_fbo_keys trip_legs, fbo_keys
|
967
|
-
data =
|
958
|
+
data = Hash.new { |hash, key| hash[key] = Array.new }
|
968
959
|
trip_legs.each do |leg|
|
969
960
|
leg.fuel_expenses.each do |expense|
|
970
961
|
|
971
962
|
fbo_name = leg.send( "#{expense.type_string}_fbo__name" )
|
972
|
-
|
973
|
-
|
974
|
-
|
975
|
-
|
976
|
-
|
977
|
-
data[fbo_name].push(expense_hash)
|
978
|
-
else
|
979
|
-
data[fbo_name] = [expense_hash]
|
963
|
+
match = false
|
964
|
+
fbo_keys.each do |key|
|
965
|
+
if fbo_name.index(key) == 0 # fbo name can have suffix like A, B, SOUTH, EAST, etc.
|
966
|
+
match = true
|
967
|
+
break
|
980
968
|
end
|
981
969
|
end
|
970
|
+
|
971
|
+
data[fbo_name].push( expense.fuel_passdown_hash ) if match
|
982
972
|
end
|
983
973
|
end
|
984
974
|
data
|
@@ -8,7 +8,7 @@ describe FlightLogExpense do
|
|
8
8
|
@fe = FlightLogExpense.new(:type => 1)
|
9
9
|
end
|
10
10
|
|
11
|
-
describe '
|
11
|
+
describe '#fuel_cost' do
|
12
12
|
|
13
13
|
it 'should not have a cost if it doesnt have a quantity' do
|
14
14
|
@fe.quantity = 0
|
@@ -24,7 +24,7 @@ describe FlightLogExpense do
|
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
27
|
-
describe '
|
27
|
+
describe '#fuel_rate' do
|
28
28
|
|
29
29
|
it 'should not have a rate if the airport fuel pricing cannnot be determined' do
|
30
30
|
@fe.quantity = 100
|
@@ -35,7 +35,7 @@ describe FlightLogExpense do
|
|
35
35
|
|
36
36
|
describe 'different fuel tiers' do
|
37
37
|
|
38
|
-
before
|
38
|
+
before do
|
39
39
|
airport_fuel = {
|
40
40
|
:"qty 1"=>1, :"cost 1"=>393,
|
41
41
|
:"qty 2"=>1000, :"cost 2"=>373,
|
@@ -67,6 +67,62 @@ describe FlightLogExpense do
|
|
67
67
|
end
|
68
68
|
end
|
69
69
|
end
|
70
|
+
|
71
|
+
describe '#fuel_passdown_hash' do
|
72
|
+
|
73
|
+
before :each do
|
74
|
+
atlantic_fbo = AirportFbo.new( :name => "ATLANTIC AVIATION SERVIC" )
|
75
|
+
signature_fbo = AirportFbo.new( :name => "SIGNATURE FLIGHT SUPPORT" )
|
76
|
+
|
77
|
+
@trip_leg = TripLeg.new( :trip_number => 12345, :leg_number => 1, :aircraft_id => "C750",
|
78
|
+
:departure_icao => "KSFO", :arrival_icao => "KTEB",
|
79
|
+
:departure_fbo => signature_fbo, :arrival_fbo => atlantic_fbo,
|
80
|
+
:dept_date_act_local => 40123, :depart_date_local => 40124 )
|
81
|
+
|
82
|
+
@vendor = Vendor.new( :company_2 => "Landmark Aviation", :company_1 => "Landmark", :vendor_id => "LMAR" )
|
83
|
+
|
84
|
+
stub(@fe).trip_leg { @trip_leg }
|
85
|
+
stub(@fe).vendor { @vendor }
|
86
|
+
stub(@fe).fuel_rate { 4.12 }
|
87
|
+
@fe.quantity = 1234
|
88
|
+
@fe.arrival_airport = 0
|
89
|
+
|
90
|
+
@expected = {
|
91
|
+
:leg_date => 40123,
|
92
|
+
:trip_number => 12345,
|
93
|
+
:leg_number => 1,
|
94
|
+
:ac => "C750",
|
95
|
+
:airport => "KTEB",
|
96
|
+
:fbo => "ATLANTIC AVIATION SERVIC",
|
97
|
+
:vendor => "Landmark Aviation",
|
98
|
+
:fuel_rate => 4.12,
|
99
|
+
:fuel_quantity => 1234,
|
100
|
+
:fuel_cost => 5084.08
|
101
|
+
}
|
102
|
+
end
|
103
|
+
|
104
|
+
it 'should use arrival attributes if the expense is arrival' do
|
105
|
+
@fe.arrival_airport = 1
|
106
|
+
@fe.fuel_passdown_hash.should == @expected
|
107
|
+
end
|
108
|
+
|
109
|
+
it 'should use departure attributes if the expense is departure' do
|
110
|
+
@expected[:fbo] = "SIGNATURE FLIGHT SUPPORT"
|
111
|
+
@expected[:airport] = "KSFO"
|
112
|
+
@fe.fuel_passdown_hash.should == @expected
|
113
|
+
end
|
114
|
+
|
115
|
+
it 'should use vendor company_1 if company_2 is blank or nil' do
|
116
|
+
@vendor.company_2 = ""
|
117
|
+
@fe.fuel_passdown_hash[:vendor].should == "Landmark"
|
118
|
+
end
|
119
|
+
|
120
|
+
it 'should use vendor vendor_id if company_2 and company_1 are blank or nil' do
|
121
|
+
@vendor.company_2 = ""
|
122
|
+
@vendor.company_1 = ""
|
123
|
+
@fe.fuel_passdown_hash[:vendor].should == "LMAR"
|
124
|
+
end
|
125
|
+
end
|
70
126
|
end
|
71
127
|
|
72
128
|
it 'should give the type as a string' do
|
@@ -5,7 +5,6 @@ describe TripLeg do
|
|
5
5
|
describe "leg_status" do
|
6
6
|
it "shows maint status" do
|
7
7
|
trip_leg = TripLeg.new(:cancel_code=>0, :status=>21, :flight_time_actual=>0, :verify_date=>0)
|
8
|
-
trip_leg.status= 21
|
9
8
|
trip_leg.leg_status.should == "MAINT"
|
10
9
|
end
|
11
10
|
end
|
@@ -353,7 +352,7 @@ describe TripLeg do
|
|
353
352
|
@tl.total_fuel_cost.should == 200.0
|
354
353
|
end
|
355
354
|
end
|
356
|
-
|
355
|
+
|
357
356
|
describe 'arrival fuel quantity' do
|
358
357
|
|
359
358
|
it 'should not have a quantity if there are no fuel flight log expenses' do
|
@@ -370,7 +369,7 @@ describe TripLeg do
|
|
370
369
|
|
371
370
|
it 'should not have a quantity if the fuel flight log expense is not arrival' do
|
372
371
|
fe = FlightLogExpense.new(:type => 1, :arrival_airport => 0)
|
373
|
-
fe.quantity = 300
|
372
|
+
fe.quantity = 300
|
374
373
|
stub(@tl).fuel_expenses { [fe] }
|
375
374
|
|
376
375
|
@tl.arrival_fuel_purchased_quantity.should == 0
|
@@ -401,7 +400,7 @@ describe TripLeg do
|
|
401
400
|
@tl.arrival_fuel_purchased_quantity.should == 700.0
|
402
401
|
end
|
403
402
|
end
|
404
|
-
|
403
|
+
|
405
404
|
describe 'departure fuel quantity' do
|
406
405
|
|
407
406
|
it 'should not have a quantity if there are no fuel flight log expenses' do
|
@@ -418,7 +417,7 @@ describe TripLeg do
|
|
418
417
|
|
419
418
|
it 'should not have a quantity if the fuel flight log expense is not departure' do
|
420
419
|
fe = FlightLogExpense.new(:type => 1, :arrival_airport => 1)
|
421
|
-
fe.quantity = 300
|
420
|
+
fe.quantity = 300
|
422
421
|
stub(@tl).fuel_expenses { [fe] }
|
423
422
|
|
424
423
|
@tl.departure_fuel_purchased_quantity.should == 0
|
@@ -449,7 +448,7 @@ describe TripLeg do
|
|
449
448
|
@tl.departure_fuel_purchased_quantity.should == 700.0
|
450
449
|
end
|
451
450
|
end
|
452
|
-
|
451
|
+
|
453
452
|
describe 'total fuel quantities' do
|
454
453
|
it 'should not have a total quantity if there are no fuel flight log expenses' do
|
455
454
|
stub(@tl).departure_fuel_purchased_quantity { 0 }
|
@@ -480,4 +479,60 @@ describe TripLeg do
|
|
480
479
|
end
|
481
480
|
end
|
482
481
|
end
|
482
|
+
|
483
|
+
describe 'Fuel Passdown' do
|
484
|
+
describe '#fuel_passdown_data' do
|
485
|
+
it 'should take start_date end_date and fbo_keys and return the fuel expense data trip legs in the range' do
|
486
|
+
start_date = Date.new
|
487
|
+
end_date = Date.new + 1.days
|
488
|
+
fbo_keys = ["ATLANTIC AVIATION SERVICE"]
|
489
|
+
trip_legs = []
|
490
|
+
fuel_data = {}
|
491
|
+
mock(TripLeg).get_fuel_passdown_trip_legs( start_date, end_date ) { trip_legs }
|
492
|
+
mock(TripLeg).fuel_data_by_fbo_keys( trip_legs, fbo_keys ) { fuel_data }
|
493
|
+
|
494
|
+
TripLeg.fuel_passdown_data(start_date, end_date, fbo_keys).should == fuel_data
|
495
|
+
end
|
496
|
+
end
|
497
|
+
|
498
|
+
describe '#fuel_data_by_fbo_keys' do
|
499
|
+
before do
|
500
|
+
@fuel_data_hash1 = {}
|
501
|
+
@fuel_data_hash2 = {}
|
502
|
+
|
503
|
+
atlantic_fbo = AirportFbo.new( :name => "ATLANTIC AVIATION SERVIC" )
|
504
|
+
landmark_fbo = AirportFbo.new( :name => "LANDMARK AVIATION" )
|
505
|
+
signature_fbo = AirportFbo.new( :name => "SIGNATURE FLIGHT SUPPORT" )
|
506
|
+
no_match_fbo = AirportFbo.new( :name => "NOT MATCHING" )
|
507
|
+
|
508
|
+
flight_log_expense1 = FlightLogExpense.new( :arrival_airport => 0, :type => 1 )
|
509
|
+
stub( flight_log_expense1 ).fuel_passdown_hash { @fuel_data_hash1 }
|
510
|
+
|
511
|
+
flight_log_expense2 = FlightLogExpense.new( :arrival_airport => 1, :type => 1 )
|
512
|
+
stub( flight_log_expense2 ).fuel_passdown_hash { @fuel_data_hash2 }
|
513
|
+
|
514
|
+
flight_log_expense3 = FlightLogExpense.new( :arrival_airport => 0, :type => 1 )
|
515
|
+
|
516
|
+
leg1 = TripLeg.new( :departure_fbo => landmark_fbo, :arrival_fbo => atlantic_fbo )
|
517
|
+
stub( leg1 ).flight_log_expenses { [ flight_log_expense1 ] }
|
518
|
+
|
519
|
+
leg2 = TripLeg.new( :departure_fbo => landmark_fbo, :arrival_fbo => signature_fbo )
|
520
|
+
stub( leg2 ).flight_log_expenses { [ flight_log_expense2 ] }
|
521
|
+
|
522
|
+
leg3 = TripLeg.new( :departure_fbo => no_match_fbo, :arrival_fbo => no_match_fbo )
|
523
|
+
stub( leg3 ).flight_log_expenses { [ flight_log_expense3 ] }
|
524
|
+
|
525
|
+
@trip_legs = [ leg1, leg2, leg3 ]
|
526
|
+
end
|
527
|
+
|
528
|
+
it 'should return a hash of fuel data hashes grouped by fbo names' do
|
529
|
+
fbo_keys = [ "LANDMARK AVIATION", "SIGNATURE FLIGHT SUPPORT" ]
|
530
|
+
results = TripLeg.send( :fuel_data_by_fbo_keys, @trip_legs, fbo_keys )
|
531
|
+
|
532
|
+
results.should == { "LANDMARK AVIATION" => [ @fuel_data_hash1 ],
|
533
|
+
"SIGNATURE FLIGHT SUPPORT" => [ @fuel_data_hash2 ]
|
534
|
+
}
|
535
|
+
end
|
536
|
+
end
|
537
|
+
end
|
483
538
|
end
|
data/spec/temp_spec.rb
CHANGED
@@ -5,15 +5,27 @@ describe "FOS Licensing" do
|
|
5
5
|
before :all do
|
6
6
|
# set_fos_db([TripLeg, FlightLogExpense, Vendor, AirportFbo])
|
7
7
|
# set_dbr_db([TripLeg, FlightLogExpense, Aircraft, Vendor, AirportFbo])
|
8
|
-
db = Sequel.fos_dbr(:username => 'datamart', :password => 'datap@ss', :adapter => 'mysql', :host => 'hrkdm', :database => 'dbr')
|
9
|
-
db.loggers=[Logger.new($stdout)]
|
10
|
-
[TripLeg, FlightLogExpense, Aircraft, Vendor, AirportFbo, AirportFuel].each { |m| m.db = db }
|
8
|
+
# db = Sequel.fos_dbr(:username => 'datamart', :password => 'datap@ss', :adapter => 'mysql', :host => 'hrkdm', :database => 'dbr')
|
9
|
+
# db.loggers=[Logger.new($stdout)]
|
10
|
+
# [TripLeg, FlightLogExpense, Aircraft, Vendor, AirportFbo, AirportFuel].each { |m| m.db = db }
|
11
11
|
end
|
12
12
|
|
13
|
-
it "
|
14
|
-
|
15
|
-
|
16
|
-
|
13
|
+
it "pass a block to include?" do
|
14
|
+
fbos = ["ATLANTIC AVIATION SERVIC", "SIGNATURE FLIGHT SUPPORT", "LANDMARK AVIATION"]
|
15
|
+
search = "LANDMARK AVIATION EAST"
|
16
|
+
|
17
|
+
result = nil
|
18
|
+
fbos.each do |fbo|
|
19
|
+
result = fbo and break if search.match(/^#{fbo}.*/)
|
20
|
+
end
|
21
|
+
|
22
|
+
p result
|
23
|
+
end
|
24
|
+
|
25
|
+
# it "puts the lotion on the skin" do
|
26
|
+
# legs = TripLeg.fuel_passdown_data(Date.parse('2011-02-06'), Date.parse('2011-02-06'), ["SIGNATURE FLIGHT SUPPORT"])
|
27
|
+
# p "BLAH BLAH BLAH"
|
28
|
+
# pp legs
|
17
29
|
|
18
30
|
# l = TripLeg.filter(:'trip number' => 68562, :'leg number' => 1).eager_graph(:flight_log_expenses => :vendor).all.first
|
19
31
|
# p "BLAH BLAH BLAH BLAH"
|
@@ -23,7 +35,7 @@ describe "FOS Licensing" do
|
|
23
35
|
# tl = TripLeg.filter(:trip_number=>68562, :leg_number =>1).first
|
24
36
|
# tl = TripLeg.filter(:trip_number => 68562, :leg_number => 1).eager_graph(:fuel_expenses).select_fields(:self => [:trip_number, :leg_number], :fuel_expenses => [:type]).all
|
25
37
|
# tl = TripLeg.filter(:trip_number => 68562, :leg_number => 1).eager_graph(:aircraft).select_fields(:self => [:trip_number, :leg_number], :aircraft => [:tail_number]).all
|
26
|
-
end
|
38
|
+
# end
|
27
39
|
|
28
40
|
# it "gets the user licensing information" do
|
29
41
|
# print UserInformation.select(:users_initials, :mobile_access).sql
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: fossil
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.5.
|
5
|
+
version: 0.5.48
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Daniel Sudol
|
@@ -11,7 +11,7 @@ autorequire:
|
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
13
|
|
14
|
-
date: 2011-
|
14
|
+
date: 2011-04-01 00:00:00 -07:00
|
15
15
|
default_executable:
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|