Activate user insurance while doing first payment

This commit is contained in:
Djery-Tom 2022-03-31 12:57:44 +01:00
parent 855cb3fc41
commit 1871103582
13 changed files with 132 additions and 38 deletions

View File

@ -4,12 +4,14 @@ namespace App\Http\Controllers;
use App\Events\InsuranceEvent; use App\Events\InsuranceEvent;
use App\InsuranceAction; use App\InsuranceAction;
use App\InsuranceInvoiceState;
use App\InsuranceState; use App\InsuranceState;
use App\InsuranceSubscriptionState; use App\InsuranceSubscriptionState;
use App\Models\AgentPlus; use App\Models\AgentPlus;
use App\Models\CountriesCurrency; use App\Models\CountriesCurrency;
use App\Models\NhInsurance; use App\Models\NhInsurance;
use App\Models\NhInsurancesHavingRight; use App\Models\NhInsurancesHavingRight;
use App\Models\NhInsurancesInvoice;
use App\Models\NhInsurancesPayment; use App\Models\NhInsurancesPayment;
use App\Models\NhInsurancesSubscription; use App\Models\NhInsurancesSubscription;
use App\Models\NhInsurancesSubscriptionsHistory; use App\Models\NhInsurancesSubscriptionsHistory;
@ -672,8 +674,13 @@ class InsuranceController extends Controller
$beneficiary->bonus_amount = $amount; $beneficiary->bonus_amount = $amount;
$beneficiary->save(); $beneficiary->save();
} }
$total_bonus_amount = $bonus_amount + $beneficiaries_bonus_amount;
$amountToPaid = $bonus_amount + $beneficiaries_bonus_amount; $amount_per_split = ceil($total_bonus_amount / $monthPrice->number_of_fractions);
$amount_last_payment = $total_bonus_amount - ($amount_per_split * ($monthPrice->number_of_fractions - 1));
// Paiement de la 1ere facture
$amountToPaid = $amount_per_split;
if ($user->wallet->balance < $amountToPaid) { if ($user->wallet->balance < $amountToPaid) {
$amount = $amountToPaid - $user->wallet->balance; $amount = $amountToPaid - $user->wallet->balance;
return $this->errorResponse(trans('errors.insufficient_balance', ['amount' => $this->toMoneyWithCurrencyCode($amount, $currency)])); return $this->errorResponse(trans('errors.insufficient_balance', ['amount' => $this->toMoneyWithCurrencyCode($amount, $currency)]));
@ -700,22 +707,31 @@ class InsuranceController extends Controller
$insurance->update([ $insurance->update([
'number_of_beneficiaries' => sizeof($insurance->beneficiaries), 'number_of_beneficiaries' => sizeof($insurance->beneficiaries),
'total_bonus_amount' => $amountToPaid, 'total_bonus_amount' => $total_bonus_amount,
'bonus_amount' => $bonus_amount, 'bonus_amount' => $bonus_amount,
'insurance_coverage_amount' => 0, 'insurance_coverage_amount' => 0,
'updated_at' => $datetime, 'updated_at' => $datetime,
'state' => InsuranceState::PAID, 'state' => $monthPrice->number_of_fractions == 1 ? InsuranceState::PAID : InsuranceState::PARTIALLY_PAID,
'start_at' => $start_at, 'start_at' => $start_at,
'end_at' => $end_at 'end_at' => $end_at,
'deadlines' => $monthPrice->number_of_fractions,
'paid_deadlines' => 1,
'amount_per_split' => $amount_per_split,
'amount_last_payment' => $amount_last_payment
]); ]);
// Reinitialiser les montants de couvertures de l'assurance // Reinitialiser les montants de couvertures de l'assurance
$insurance->beneficiaries->each->update([ $insurance->beneficiaries->each->update([
'insurance_coverage_amount' => 0 'insurance_coverage_amount' => 0
]); ]);
NhInsurancesPayment::create([ // Generer la 1ere facture
'insured_id' => $insurance->insured_id, NhInsurancesInvoice::create([
'amount' => $amountToPaid, 'invoice_id' => $this->generateInsuranceInvoiceID(),
'insurance_id' => $insurance->id,
'amount' => $amount_per_split,
'payment_deadline' => $this->addDaysToDateTime($datetime, 10), // 1 semaine + 3 jours
'payment_reminder' => $this->addDaysToDateTime($datetime, 7),
'state' => InsuranceInvoiceState::PAID,
'reason' => InsuranceAction::RENEWAL, 'reason' => InsuranceAction::RENEWAL,
'created_at' => $datetime, 'updated_at' => $datetime, 'created_at' => $datetime, 'updated_at' => $datetime,
]); ]);

View File

@ -135,7 +135,7 @@ class InsuranceInvoiceController extends Controller
if (!empty($state)) { if (!empty($state)) {
if ($state == 'TO_PAID') { if ($state == 'TO_PAID') {
$query = $query->where('state', InsuranceInvoiceState::UNPAID) $query = $query->where('state', InsuranceInvoiceState::UNPAID)
->where('payment_deadline', '<', $datetime); ->where('payment_deadline', '>=', $datetime);
} else { } else {
$query = $query->where('state', $state); $query = $query->where('state', $state);
} }
@ -243,13 +243,16 @@ class InsuranceInvoiceController extends Controller
$invoice->update(['state' => InsuranceInvoiceState::PAID, 'updated_at' => $datetime]); $invoice->update(['state' => InsuranceInvoiceState::PAID, 'updated_at' => $datetime]);
$invoice->insurance->paid_deadlines++; $invoice->insurance->paid_deadlines++;
$isPartialPayment = true;
if ($invoice->insurance->paid_deadlines == $invoice->insurance->deadlines) { if ($invoice->insurance->paid_deadlines == $invoice->insurance->deadlines) {
$invoice->insurance->state = InsuranceState::PAID; $invoice->insurance->state = InsuranceState::PAID;
$isPartialPayment = false; $isPartialPayment = false;
} else {
$invoice->insurance->state = InsuranceState::PARTIALLY_PAID;
$isPartialPayment = true;
} }
if ($invoice->insurance->state == InsuranceState::PAID) { // Si c'est le 1er paiement
if ($invoice->insurance->paid_deadlines == 1) {
if ($invoice->reason == InsuranceAction::ADDITION_OF_BENEFICIARY) { if ($invoice->reason == InsuranceAction::ADDITION_OF_BENEFICIARY) {
$invoice->insurance->bonus_amount = $invoice->subscription->bonus_amount; $invoice->insurance->bonus_amount = $invoice->subscription->bonus_amount;
@ -270,9 +273,9 @@ class InsuranceInvoiceController extends Controller
if (empty($invoice->insurance->monthsGrid->waiting_period_days)) { if (empty($invoice->insurance->monthsGrid->waiting_period_days)) {
$start_at = $datetime; $start_at = $datetime;
} else { } else {
$start_at = $this->addDaysToDateTime($datetime, $invoice->insurance->monthsGrid->waiting_period_days); $start_at = $this->addDaysToDateTime($datetime, $invoice->insurance->monthsGrid->waiting_period_days)->format('Y-m-d H:i:s');
} }
$end_at = $this->addMonthsToDateTime($start_at->format('Y-m-d H:i:s'), $invoice->insurance->monthsGrid->number_of_months); $end_at = $this->addMonthsToDateTime($start_at, $invoice->insurance->monthsGrid->number_of_months);
$invoice->insurance->start_at = $start_at; $invoice->insurance->start_at = $start_at;
$invoice->insurance->end_at = $end_at; $invoice->insurance->end_at = $end_at;
} }
@ -285,9 +288,13 @@ class InsuranceInvoiceController extends Controller
'bonus_amount' => $this->toMoneyWithCurrencyCode($invoice->insurance->bonus_amount, $currency), 'total_bonus_amount' => $this->toMoneyWithCurrencyCode($invoice->insurance->total_bonus_amount, $currency), 'number_of_beneficiaries' => $invoice->insurance->number_of_beneficiaries, 'bonus_amount' => $this->toMoneyWithCurrencyCode($invoice->insurance->bonus_amount, $currency), 'total_bonus_amount' => $this->toMoneyWithCurrencyCode($invoice->insurance->total_bonus_amount, $currency), 'number_of_beneficiaries' => $invoice->insurance->number_of_beneficiaries,
'gender' => trans('states.' . $invoice->insurance->user->identification->gender), 'insurance_name' => $invoice->insurance->network->name, 'months' => $invoice->insurance->monthsGrid->number_of_months, 'invoice_id' => $invoice->invoice_id, 'gender' => trans('states.' . $invoice->insurance->user->identification->gender), 'insurance_name' => $invoice->insurance->network->name, 'months' => $invoice->insurance->monthsGrid->number_of_months, 'invoice_id' => $invoice->invoice_id,
'amount' => $this->toMoneyWithCurrencyCode($invoice->amount, $currency), 'paid_deadlines' => $invoice->insurance->paid_deadlines, 'remains_deadlines' => $invoice->insurance->deadlines - $invoice->insurance->paid_deadlines, 'amount' => $this->toMoneyWithCurrencyCode($invoice->amount, $currency), 'paid_deadlines' => $invoice->insurance->paid_deadlines, 'remains_deadlines' => $invoice->insurance->deadlines - $invoice->insurance->paid_deadlines,
'reason' => trans('states.' . $invoice->reason), 'title' => $isPartialPayment ? trans('messages.insurance_partially_paid_title') : trans('messages.insurance_fully_paid_title')]))); 'payment_period' => trans('states.' . $invoice->insurance->monthsGrid->payment_period), 'reason' => trans('states.' . $invoice->reason), 'title' => $isPartialPayment ? trans('messages.insurance_partially_paid_title') : trans('messages.insurance_fully_paid_title'),
'deadlines' => $invoice->insurance->deadlines, 'amount_per_split' => $this->toMoneyWithCurrencyCode($invoice->insurance->amount_per_split, $currency), 'amount_last_payment' => $this->toMoneyWithCurrencyCode($invoice->insurance->amount_last_payment, $currency),
'waiting_days' => empty($invoice->insurance->monthsGrid->waiting_period_days) ? trans('messages.none') : trans('messages.n_days', ['n' => $invoice->insurance->monthsGrid->waiting_period_days]),
'start_at' => $invoice->insurance->start_at
])));
DB::commit(); DB::commit();
return $this->successResponse(trans('messages.insurance_subscription_paid')); return $this->successResponse(trans('messages.insurance_invoice_paid'));
} catch (Throwable $e) { } catch (Throwable $e) {
Log::error($e->getMessage() . '\n' . $e->getTraceAsString()); Log::error($e->getMessage() . '\n' . $e->getTraceAsString());
DB::rollBack(); DB::rollBack();

View File

@ -440,15 +440,14 @@ class InsuranceSubscriptionController extends Controller
$notification = trans('messages.insurance_stop_accepted_notification', ['subscription_id' => $subscription->insurance_subscription_id]); $notification = trans('messages.insurance_stop_accepted_notification', ['subscription_id' => $subscription->insurance_subscription_id]);
$mail = trans('messages.insurance_stop_accepted_mail', $mail_data); $mail = trans('messages.insurance_stop_accepted_mail', $mail_data);
} else { } else {
$amount_per_split = round($subscription->total_bonus_amount / $subscription->monthsGrid->number_of_fractions); $amount_per_split = ceil($subscription->total_bonus_amount / $subscription->monthsGrid->number_of_fractions);
$amount_last_payment = $subscription->total_bonus_amount - ($amount_per_split * ($subscription->monthsGrid->number_of_fractions - 1)); $amount_last_payment = $subscription->total_bonus_amount - ($amount_per_split * ($subscription->monthsGrid->number_of_fractions - 1));
if ($subscription->insurance_action == InsuranceAction::ACTIVATION) { if ($subscription->insurance_action == InsuranceAction::ACTIVATION) {
$insuredId = $this->generateInsuredID();
$insurance = NhInsurance::create([ $insurance = NhInsurance::create([
'network_id' => $subscription->network_id, 'network_id' => $subscription->network_id,
'user_id' => $subscription->user_id, 'user_id' => $subscription->user_id,
'insured_id' => $insuredId, 'insured_id' => $this->generateInsuredID(),
'months_grid_id' => $subscription->months_grid_id, 'months_grid_id' => $subscription->months_grid_id,
'total_bonus_amount' => $subscription->total_bonus_amount, 'total_bonus_amount' => $subscription->total_bonus_amount,
'number_of_beneficiaries' => $subscription->number_of_beneficiaries, 'number_of_beneficiaries' => $subscription->number_of_beneficiaries,
@ -466,17 +465,6 @@ class InsuranceSubscriptionController extends Controller
'having_right_id' => $b->id 'having_right_id' => $b->id
]); ]);
} }
// Generer la 1ere facture
NhInsurancesInvoice::create([
'invoice_id' => $this->generateInsuranceInvoiceID(),
'insurance_id' => $insurance->id,
'subscription_id' => $subscription->id,
'amount' => $amount_per_split,
'payment_deadline' => $this->addDaysToDateTime($datetime, 10), // 1 semaine + 3 jours
'payment_reminder' => $this->addDaysToDateTime($datetime, 7),
'state' => InsuranceInvoiceState::UNPAID,
'reason' => $subscription->insurance_action
]);
} }
if ($subscription->insurance_action == InsuranceAction::ADDITION_OF_BENEFICIARY) { if ($subscription->insurance_action == InsuranceAction::ADDITION_OF_BENEFICIARY) {
@ -494,7 +482,9 @@ class InsuranceSubscriptionController extends Controller
'amount_last_payment' => $amount_last_payment, 'amount_last_payment' => $amount_last_payment,
'updated_at' => $datetime, 'updated_at' => $datetime,
]); ]);
}
if (in_array($subscription->insurance_action, [InsuranceAction::ADDITION_OF_BENEFICIARY, InsuranceAction::ACTIVATION])) {
// Generer la 1ere facture // Generer la 1ere facture
NhInsurancesInvoice::create([ NhInsurancesInvoice::create([
'invoice_id' => $this->generateInsuranceInvoiceID(), 'invoice_id' => $this->generateInsuranceInvoiceID(),
@ -504,7 +494,8 @@ class InsuranceSubscriptionController extends Controller
'payment_deadline' => $this->addDaysToDateTime($datetime, 10), // 1 semaine + 3 jours 'payment_deadline' => $this->addDaysToDateTime($datetime, 10), // 1 semaine + 3 jours
'payment_reminder' => $this->addDaysToDateTime($datetime, 7), 'payment_reminder' => $this->addDaysToDateTime($datetime, 7),
'state' => InsuranceInvoiceState::UNPAID, 'state' => InsuranceInvoiceState::UNPAID,
'reason' => $subscription->insurance_action 'reason' => $subscription->insurance_action,
'created_at' => $datetime, 'updated_at' => $datetime,
]); ]);
} }
$message = trans('messages.insurance_subscription_accepted'); $message = trans('messages.insurance_subscription_accepted');
@ -677,7 +668,7 @@ class InsuranceSubscriptionController extends Controller
if (empty($subscription->monthsGrid->waiting_period_days)) { if (empty($subscription->monthsGrid->waiting_period_days)) {
$start_at = $datetime; $start_at = $datetime;
} else { } else {
$start_at = $this->addDaysToDateTime($datetime, $subscription->monthsGrid->waiting_period_days); $start_at = $this->addDaysToDateTime($datetime, $subscription->monthsGrid->waiting_period_days)->format('Y-m-d H:i:s');
} }
$end_at = $this->addMonthsToDateTime($start_at, $subscription->monthsGrid->number_of_months); $end_at = $this->addMonthsToDateTime($start_at, $subscription->monthsGrid->number_of_months);
$insurance = NhInsurance::create([ $insurance = NhInsurance::create([

View File

@ -98,7 +98,7 @@ class InsuredController extends Controller
$datetime = $this->getCurrentTimeByCountryCode($network->country->code_country); $datetime = $this->getCurrentTimeByCountryCode($network->country->code_country);
$q = NhInsurance::with(['user:id,firstname,lastname,phone,email', 'network:id,name', 'beneficiaries', 'nhNetworkConfig', 'monthsGrid'])->where('network_id', $network_id) $q = NhInsurance::with(['user:id,firstname,lastname,phone,email', 'network:id,name', 'beneficiaries', 'nhNetworkConfig', 'monthsGrid'])->where('network_id', $network_id)
->where('state', InsuranceState::PAID)->where('start_at', '<=', $datetime); ->whereIn('state', [InsuranceState::PAID, InsuranceState::PARTIALLY_PAID])->where('start_at', '<=', $datetime);
if (!empty($insured_id)) { if (!empty($insured_id)) {
$q = $q->where('insured_id', $insured_id); $q = $q->where('insured_id', $insured_id);

View File

@ -11,4 +11,6 @@ abstract class InsuranceState
const UNDER_ACTIVATION = 'UNDER_ACTIVATION'; const UNDER_ACTIVATION = 'UNDER_ACTIVATION';
const UNDER_RENEW = 'UNDER_RENEW'; const UNDER_RENEW = 'UNDER_RENEW';
const UNDER_ADDING_BENEFICIARY = 'UNDER_ADDING_BENEFICIARY'; const UNDER_ADDING_BENEFICIARY = 'UNDER_ADDING_BENEFICIARY';
const PARTIALLY_PAID = 'PARTIALLY_PAID';
const SUSPENDED = 'SUSPENDED';
} }

View File

@ -377,7 +377,7 @@ trait Helper
$lastInvoice = NhInsurancesInvoice::where('insurance_id', $i->id)->orderBy('id', 'DESC')->first(); $lastInvoice = NhInsurancesInvoice::where('insurance_id', $i->id)->orderBy('id', 'DESC')->first();
if (isset($lastInvoice) && $lastInvoice->deadline_number < $i->deadlines) { if (isset($lastInvoice) && $lastInvoice->deadline_number < $i->deadlines) {
if (in_array($i->monthsGrid->payment_period, ['DAILY', 'MONTHLY'])) { if (in_array($i->monthsGrid->payment_period, ['DAILY', 'MONTHLY'])) {
// Si le paiment est mensuel, se rassurer que cela fait deja 1 mois // Si le paiement est mensuel, se rassurer que cela fait deja 1 mois
if ($i->monthsGrid->payment_period == 'MONTHLY' && $lastInvoice->created_at->diff(date('Y-m-d'))->m < 1) { if ($i->monthsGrid->payment_period == 'MONTHLY' && $lastInvoice->created_at->diff(date('Y-m-d'))->m < 1) {
continue; continue;
} }
@ -411,12 +411,22 @@ trait Helper
'bonus_amount' => $this->toMoneyWithCurrencyCode($invoice->insurance->bonus_amount, $currency), 'total_bonus_amount' => $this->toMoneyWithCurrencyCode($invoice->insurance->total_bonus_amount, $currency), 'number_of_beneficiaries' => $invoice->insurance->number_of_beneficiaries, 'bonus_amount' => $this->toMoneyWithCurrencyCode($invoice->insurance->bonus_amount, $currency), 'total_bonus_amount' => $this->toMoneyWithCurrencyCode($invoice->insurance->total_bonus_amount, $currency), 'number_of_beneficiaries' => $invoice->insurance->number_of_beneficiaries,
'gender' => trans('states.' . $invoice->insurance->user->identification->gender), 'insurance_name' => $invoice->insurance->network->name, 'months' => $invoice->insurance->monthsGrid->number_of_months, 'invoice_id' => $invoice->invoice_id, 'gender' => trans('states.' . $invoice->insurance->user->identification->gender), 'insurance_name' => $invoice->insurance->network->name, 'months' => $invoice->insurance->monthsGrid->number_of_months, 'invoice_id' => $invoice->invoice_id,
'amount' => $this->toMoneyWithCurrencyCode($invoice->amount, $currency), 'paid_deadlines' => $invoice->insurance->paid_deadlines, 'remains_deadlines' => $invoice->insurance->deadlines - $invoice->insurance->paid_deadlines, 'amount' => $this->toMoneyWithCurrencyCode($invoice->amount, $currency), 'paid_deadlines' => $invoice->insurance->paid_deadlines, 'remains_deadlines' => $invoice->insurance->deadlines - $invoice->insurance->paid_deadlines,
'reason' => trans('states.' . $invoice->reason), 'title' => trans('messages.insurance_payment_reminder_title')]))); 'payment_period' => trans('states.' . $invoice->insurance->monthsGrid->payment_period), 'reason' => trans('states.' . $invoice->reason), 'title' => trans('messages.insurance_payment_reminder_title'),
'deadlines' => $invoice->insurance->deadlines, 'amount_per_split' => $this->toMoneyWithCurrencyCode($invoice->insurance->amount_per_split, $currency), 'amount_last_payment' => $this->toMoneyWithCurrencyCode($invoice->insurance->amount_last_payment, $currency),
'waiting_days' => empty($invoice->insurance->monthsGrid->waiting_period_days) ? trans('messages.none') : trans('messages.n_days', ['n' => $invoice->insurance->monthsGrid->waiting_period_days]),
'start_at' => $invoice->insurance->start_at
])));
} }
$invoices = NhInsurancesInvoice::with(['insurance'])->where('state', InsuranceInvoiceState::UNPAID) $invoices = NhInsurancesInvoice::with(['insurance'])->where('state', InsuranceInvoiceState::UNPAID)
->whereDate('payment_deadline', Carbon::now()->subDay())->get(); ->whereDate('payment_deadline', Carbon::now()->subDay())->get();
foreach ($invoices as $invoice) {
$invoice->insurance->update([
'state' => InsuranceState::SUSPENDED
]);
}
foreach ($invoices as $invoice) { foreach ($invoices as $invoice) {
// Reminders // Reminders
$currency = $this->getNetworkCurrency($invoice->insurance->network_id); $currency = $this->getNetworkCurrency($invoice->insurance->network_id);
@ -425,7 +435,11 @@ trait Helper
'bonus_amount' => $this->toMoneyWithCurrencyCode($invoice->insurance->bonus_amount, $currency), 'total_bonus_amount' => $this->toMoneyWithCurrencyCode($invoice->insurance->total_bonus_amount, $currency), 'number_of_beneficiaries' => $invoice->insurance->number_of_beneficiaries, 'bonus_amount' => $this->toMoneyWithCurrencyCode($invoice->insurance->bonus_amount, $currency), 'total_bonus_amount' => $this->toMoneyWithCurrencyCode($invoice->insurance->total_bonus_amount, $currency), 'number_of_beneficiaries' => $invoice->insurance->number_of_beneficiaries,
'gender' => trans('states.' . $invoice->insurance->user->identification->gender), 'insurance_name' => $invoice->insurance->network->name, 'months' => $invoice->insurance->monthsGrid->number_of_months, 'invoice_id' => $invoice->invoice_id, 'gender' => trans('states.' . $invoice->insurance->user->identification->gender), 'insurance_name' => $invoice->insurance->network->name, 'months' => $invoice->insurance->monthsGrid->number_of_months, 'invoice_id' => $invoice->invoice_id,
'amount' => $this->toMoneyWithCurrencyCode($invoice->amount, $currency), 'paid_deadlines' => $invoice->insurance->paid_deadlines, 'remains_deadlines' => $invoice->insurance->deadlines - $invoice->insurance->paid_deadlines, 'amount' => $this->toMoneyWithCurrencyCode($invoice->amount, $currency), 'paid_deadlines' => $invoice->insurance->paid_deadlines, 'remains_deadlines' => $invoice->insurance->deadlines - $invoice->insurance->paid_deadlines,
'reason' => trans('states.' . $invoice->reason), 'title' => trans('messages.insurance_payment_suspended_title')]))); 'payment_period' => trans('states.' . $invoice->insurance->monthsGrid->payment_period), 'reason' => trans('states.' . $invoice->reason), 'title' => trans('messages.insurance_payment_suspended_title'),
'deadlines' => $invoice->insurance->deadlines, 'amount_per_split' => $this->toMoneyWithCurrencyCode($invoice->insurance->amount_per_split, $currency), 'amount_last_payment' => $this->toMoneyWithCurrencyCode($invoice->insurance->amount_last_payment, $currency),
'waiting_days' => empty($invoice->insurance->monthsGrid->waiting_period_days) ? trans('messages.none') : trans('messages.n_days', ['n' => $invoice->insurance->monthsGrid->waiting_period_days]),
'start_at' => $invoice->insurance->start_at
])));
} }
} }

View File

@ -15,7 +15,7 @@ class CreateNhInsurancesInvoicesTable extends Migration
{ {
Schema::create('nh_insurances_invoices', function (Blueprint $table) { Schema::create('nh_insurances_invoices', function (Blueprint $table) {
$table->id(); $table->id();
$table->string('invoice_id'); $table->string('invoice_id')->unique();
$table->integer('insurance_id'); $table->integer('insurance_id');
$table->integer('subscription_id')->nullable(); $table->integer('subscription_id')->nullable();
$table->decimal('amount', 10); $table->decimal('amount', 10);

View File

@ -0,0 +1,36 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Schema;
class AddAmountToNhActsAndUpdateNhInsurancesState extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('nh_acts', function (Blueprint $table) {
DB::statement("alter table nh_insurances modify state enum ('PAID', 'UNDER_STOPPING',
'STOPPED', 'EXPIRED', 'UNDER_ACTIVATION', 'UNDER_RENEW','UNDER_ADDING_BENEFICIARY', 'PARTIALLY_PAID', 'SUSPENDED') default 'PAID' not null;");
$table->decimal('amount', 10)->nullable()->after('billing_type');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('nh_acts', function (Blueprint $table) {
$table->dropColumn(['billing_type']);
});
}
}

View File

@ -208,11 +208,20 @@ Your insurance has expired.
- Total premium amount: :total_bonus_amount - Total premium amount: :total_bonus_amount
- Number of beneficiaries : :number_of_beneficiaries - Number of beneficiaries : :number_of_beneficiaries
- Number of months: :months - Number of months: :months
- Payment period: :payment_period
- Total number of instalments: :deadlines
- Amount per due date: :amount_per_split
- Amount of the last payment: :amount_last_payment
- Waiting period: :waiting_days
- Start date of the insurance: :start_at
", ",
'insurance_partially_paid_title' => "Your insurance has been partially paid", 'insurance_partially_paid_title' => "Your insurance has been partially paid",
'insurance_fully_paid_title' => "Your insurance has been paid in full.", 'insurance_fully_paid_title' => "Your insurance has been paid in full.",
'insurance_payment_reminder' => "Reminder to pay your insurance", 'insurance_payment_reminder' => "Reminder to pay your insurance",
'insurance_payment_reminder_title' => 'The deadline for paying your bill is approaching', 'insurance_payment_reminder_title' => 'The deadline for paying your bill is approaching',
'insurance_payment_suspended' => "Insurance suspended", 'insurance_payment_suspended' => "Insurance suspended",
'insurance_payment_suspended_title' => 'You have an outstanding payment' 'insurance_payment_suspended_title' => 'You have an outstanding payment',
'insurance_invoice_paid' => "Insurance invoice paid",
'none' => "None",
'n_days' => ":n days"
]; ];

View File

@ -30,4 +30,9 @@ return [
'USED' => 'USED', 'USED' => 'USED',
'EXPIRED' => 'EXPIRED', 'EXPIRED' => 'EXPIRED',
"UNPAID" => "UNPAID", "UNPAID" => "UNPAID",
"PARTIALLY_PAID" => "PARTIALLY PAID",
"SUSPENDED" => "SUSPENDED",
"ONE_TIME" => "ONCE",
"DAILY" => "JOURNELLEMENT",
"MONTHLY" => "MONTHLY"
]; ];

View File

@ -225,11 +225,20 @@ Votre assurance est arrivée à échéance.
- Montant total de la prime : :total_bonus_amount - Montant total de la prime : :total_bonus_amount
- Nombre d'ayants droit : :number_of_beneficiaries - Nombre d'ayants droit : :number_of_beneficiaries
- Nombre de mois : :months - Nombre de mois : :months
- Période de paiement : :payment_period
- Nombre d'échéances totales : :deadlines
- Montant par échéance : :amount_per_split
- Montant de la dernière échéance : :amount_last_payment
- Délai de carence : :waiting_days
- Date de debut de l'assurance : :start_at
", ",
'insurance_partially_paid_title' => "Votre assurance a été payée partiellement.", 'insurance_partially_paid_title' => "Votre assurance a été payée partiellement.",
'insurance_fully_paid_title' => "Votre assurance a été payée complétement.", 'insurance_fully_paid_title' => "Votre assurance a été payée complétement.",
'insurance_payment_reminder' => "Rappel du paiement de votre assurance", 'insurance_payment_reminder' => "Rappel du paiement de votre assurance",
'insurance_payment_reminder_title' => 'Le délai du paiement de votre facture est proche', 'insurance_payment_reminder_title' => 'Le délai du paiement de votre facture est proche',
'insurance_payment_suspended' => "Assurance suspendue", 'insurance_payment_suspended' => "Assurance suspendue",
'insurance_payment_suspended_title' => 'Vous avez un paiement non effectué' 'insurance_payment_suspended_title' => 'Vous avez un paiement non effectué',
'insurance_invoice_paid' => "Facture de l'assurance payée",
'none' => "Aucun",
'n_days' => ":n jours"
]; ];

View File

@ -30,4 +30,9 @@ return [
'USED' => 'UTILISÉE', 'USED' => 'UTILISÉE',
'EXPIRED' => 'EXPIRÉE', 'EXPIRED' => 'EXPIRÉE',
"UNPAID" => "NON PAYÉE", "UNPAID" => "NON PAYÉE",
"PARTIALLY_PAID" => "PARTIELLEMENT PAYÉE",
"SUSPENDED" => "SUSPENDUE",
"ONE_TIME" => "UNE SEULE FOIS",
"DAILY" => "JOURNELLEMENT",
"MONTHLY" => "MENSUELLEMENT"
]; ];

View File

@ -41,7 +41,7 @@ $router->group(['prefix' => '', 'middleware' => 'auth'], function () use ($route
$router->get('', 'InsuranceInvoiceController@getInvoices'); $router->get('', 'InsuranceInvoiceController@getInvoices');
$router->put('{id}/pay', 'InsuranceInvoiceController@payInvoice'); $router->put('{id}/pay', 'InsuranceInvoiceController@payInvoice');
$router->get('generate', 'InsuranceInvoiceController@generateInvoices'); $router->get('generate', 'InsuranceInvoiceController@generateInvoices');
$router->get('reminder', 'InsuranceInvoiceController@generateReminder'); $router->get('reminder', 'InsuranceInvoiceController@reminderInvoices');
}); });
}); });