diff --git a/app/Database/migrations/2020_03_06_141152_flights_add_pilot_pay.php b/app/Database/migrations/2020_03_06_141152_flights_add_pilot_pay.php new file mode 100644 index 00000000..ebce9e0b --- /dev/null +++ b/app/Database/migrations/2020_03_06_141152_flights_add_pilot_pay.php @@ -0,0 +1,32 @@ +decimal('pilot_pay') + ->nullable() + ->after('route'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('flights', function (Blueprint $table) { + $table->dropColumn('pilot_pay'); + }); + } +} diff --git a/app/Models/Flight.php b/app/Models/Flight.php index 0f4530f9..da0a2ea3 100644 --- a/app/Models/Flight.php +++ b/app/Models/Flight.php @@ -28,6 +28,7 @@ use Illuminate\Support\Collection; * @property int level * @property float load_factor * @property float load_factor_variance + * @property float pilot_pay * @property Airport dpt_airport * @property Airport arr_airport * @property Airport alt_airport @@ -69,6 +70,7 @@ class Flight extends Model 'flight_type', 'load_factor', 'load_factor_variance', + 'pilot_pay', 'route', 'notes', 'start_date', @@ -88,6 +90,7 @@ class Flight extends Model 'end_date' => 'date', 'load_factor' => 'double', 'load_factor_variance' => 'double', + 'pilot_pay' => 'float', 'has_bid' => 'boolean', 'route_leg' => 'integer', 'active' => 'boolean', diff --git a/app/Services/Finance/PirepFinanceService.php b/app/Services/Finance/PirepFinanceService.php index e79f0b28..d8e6f99c 100644 --- a/app/Services/Finance/PirepFinanceService.php +++ b/app/Services/Finance/PirepFinanceService.php @@ -374,11 +374,18 @@ class PirepFinanceService extends Service public function payPilotForPirep(Pirep $pirep): void { $pilot_pay = $this->getPilotPay($pirep); - $pilot_pay_rate = $this->getPilotPayRateForPirep($pirep); - $memo = 'Pilot Payment @ '.$pilot_pay_rate; - Log::info('Finance: PIREP: '.$pirep->id - .'; pilot pay: '.$pilot_pay_rate.', total: '.$pilot_pay); + if ($pirep->flight && !empty($pirep->flight->pilot_pay)) { + $memo = 'Pilot fixed payment for flight: '.$pirep->flight->pilot_pay; + Log::info('Finance: PIREP: '.$pirep->id + .'; pilot pay: fixed for flight='.$pirep->flight->pilot_pay.', total: '.$pilot_pay); + } else { + $pilot_pay_rate = $this->getPilotPayRateForPirep($pirep); + $memo = 'Pilot Payment @ '.$pilot_pay_rate; + + Log::info('Finance: PIREP: '.$pirep->id + .'; pilot pay: '.$pilot_pay_rate.', total: '.$pilot_pay); + } $this->financeSvc->debitFromJournal( $pirep->airline->journal, @@ -530,6 +537,13 @@ class PirepFinanceService extends Service */ public function getPilotPay(Pirep $pirep) { + // If there is a fixed price for this flight, return that amount + $flight = $pirep->flight; + if ($flight && !empty($flight->pilot_pay)) { + return new Money(Money::convertToSubunit($flight->pilot_pay)); + } + + // Divided by 60 to get the rate per minute $pilot_rate = $this->getPilotPayRateForPirep($pirep) / 60; $payment = round($pirep->flight_time * $pilot_rate, 2); diff --git a/app/Services/ImportExport/FlightImporter.php b/app/Services/ImportExport/FlightImporter.php index c76d2793..7c9653eb 100644 --- a/app/Services/ImportExport/FlightImporter.php +++ b/app/Services/ImportExport/FlightImporter.php @@ -41,6 +41,7 @@ class FlightImporter extends ImportExport 'flight_type' => 'required|alpha', 'load_factor' => 'nullable', 'load_factor_variance' => 'nullable', + 'pilot_pay' => 'nullable', 'route' => 'nullable', 'notes' => 'nullable', 'active' => 'nullable|boolean', diff --git a/resources/views/admin/flights/fields.blade.php b/resources/views/admin/flights/fields.blade.php index 870cbca3..985d9555 100644 --- a/resources/views/admin/flights/fields.blade.php +++ b/resources/views/admin/flights/fields.blade.php @@ -67,38 +67,14 @@
{{ $errors->first('dpt_airport_id') }}
+ {{ Form::label('pilot_pay', 'Pilot Pay:') }} + {{ Form::text('pilot_pay', null, ['class' => 'form-control']) }} +{{ $errors->first('pilot_pay') }}
+ @component('admin.components.info') + Fill this in to pay a pilot a fixed amount for this flight. + @endcomponent{{ $errors->first('arr_airport_id') }}
-{{ $errors->first('alt_airport_id') }}
-{{ $errors->first('dpt_airport_id') }}
+{{ $errors->first('arr_airport_id') }}
+{{ $errors->first('route') }}
+{{ $errors->first('alt_airport_id') }}
+{{ $errors->first('level') }}
+{{ $errors->first('route') }}
-{{ $errors->first('level') }}
-{{ $errors->first('notes') }}
+{{ $errors->first('notes') }}
+