+ Add method Agent - Envoi de cash vers cash

This commit is contained in:
Djery-Tom 2020-07-03 11:58:43 +01:00
parent f9be26c76b
commit 0a10771c11
4 changed files with 183 additions and 54 deletions

View File

@ -270,6 +270,7 @@ class iLinkTransactionController extends Controller
} }
$transaction->montant_net_final_country = $this->toMoneyAmount($montantRetrait, $init_country, $request->final_country); $transaction->montant_net_final_country = $this->toMoneyAmount($montantRetrait, $init_country, $request->final_country);
$transaction->commission_hyp = $transaction->part_reseau_emetteur; $transaction->commission_hyp = $transaction->part_reseau_emetteur;
$transaction->commission_hyp_final_country = $this->toMoneyAmount($transaction->commission_hyp, $init_country, $request->final_country);
$transaction->part_reseau_payeur_final_country = $this->toMoneyAmount($transaction->part_reseau_payeur, $init_country, $request->final_country); $transaction->part_reseau_payeur_final_country = $this->toMoneyAmount($transaction->part_reseau_payeur, $init_country, $request->final_country);
if (isset($reseauPayeur)) if (isset($reseauPayeur))
$reseauPayeur->balance_com += $transaction->part_reseau_payeur_final_country; $reseauPayeur->balance_com += $transaction->part_reseau_payeur_final_country;
@ -341,8 +342,8 @@ class iLinkTransactionController extends Controller
$transaction->final_country = $init_country; $transaction->final_country = $init_country;
$transaction->frais = $frais = $this->calculateFees($plr_user_wallet_cash_national, $request->montant); $transaction->frais = $frais = $this->calculateFees($plr_user_wallet_cash_national, $request->montant);
$transaction->taxe = $taxe = $this->calculateTax($taxesNationales, $frais); $transaction->taxe = $taxe = $this->calculateTax($taxesNationales, $frais);
$transaction->montant_net = $montantRetrait = $transaction->montant - $frais - $taxe; $transaction->montant_net_final_country = $transaction->montant_net = $montantRetrait = $transaction->montant - $frais - $taxe;
$transaction->commission_hyp = $frais; $transaction->commission_hyp_final_country = $transaction->commission_hyp = $frais;
$walletUser->balance -= $transaction->montant; $walletUser->balance -= $transaction->montant;
$walletHyperviseur->balance_com += $transaction->commission_hyp; $walletHyperviseur->balance_com += $transaction->commission_hyp;
@ -484,19 +485,25 @@ class iLinkTransactionController extends Controller
$transaction = WalletIlinkTransaction::where('id_transaction',$request->id_transaction)->first(); $transaction = WalletIlinkTransaction::where('id_transaction',$request->id_transaction)->first();
if ($transaction) { if ($transaction) {
if ($transaction->status_retrait == 0) { if ($transaction->status_retrait == 0) {
//Verifier que le pays de destinatation correspond au pays de retrait
if($transaction->type != 11)
if($init_country != $transaction->final_country)
return $this->errorResponse(trans('errors.operation_cannot_performed_in_country'));
if ($this->checkPassword($request->code_retrait, $transaction->encrypted_code_retrait, $transaction->code_retrait_salt)) { if ($this->checkPassword($request->code_retrait, $transaction->encrypted_code_retrait, $transaction->code_retrait_salt)) {
if ($transaction->montant_net == $request->montant) { $montantNet = $transaction->type == 11 ? $transaction->montant_net : $transaction->montant_net_final_country;
$commissionHyp = $transaction->type == 11 ? $transaction->commission_hyp : $transaction->commission_hyp_final_country;
if ($montantNet == $request->montant) {
$transactionRetrait = $transaction->replicate(); $transactionRetrait = $transaction->replicate();
$transactionRetrait->id = null; $transactionRetrait->id = null;
$transactionRetrait->type = $request->type; $transactionRetrait->type = $request->type;
$transactionRetrait->id_transaction = $this->getTransactionID(); $transactionRetrait->id_transaction = $this->getTransactionID();
$transactionRetrait->montant = $transaction->montant_net; $transactionRetrait->montant = $montantNet;
$emailEmetteur = $transaction->wallet_user ? $transaction->wallet_user->user->email : $transaction->email_emetteur; $emailEmetteur = $transaction->wallet_user ? $transaction->wallet_user->user->email : $transaction->email_emetteur;
$transactionRetrait->commission_ag = floatval($transaction->commission_hyp * $config->taux_com_ag_retrait_cash / 100); $transactionRetrait->commission_ag = floatval($commissionHyp * $config->taux_com_ag_retrait_cash / 100);
$transactionRetrait->commission_sup = floatval($transaction->commission_hyp * $config->taux_com_sup_retrait_cash / 100); $transactionRetrait->commission_sup = floatval($commissionHyp * $config->taux_com_sup_retrait_cash / 100);
$transactionRetrait->commission_hyp = $transaction->commission_hyp - $transactionRetrait->commission_ag - $transactionRetrait->commission_sup; $transactionRetrait->commission_hyp = $commissionHyp - $transactionRetrait->commission_ag - $transactionRetrait->commission_sup;
$walletAgent->balance_princ += $transaction->montant_net; $walletAgent->balance_princ += $montantNet;
$walletAgent->balance_com += $transactionRetrait->commission_ag; $walletAgent->balance_com += $transactionRetrait->commission_ag;
$walletSuperviseur->balance_com += $transactionRetrait->commission_sup; $walletSuperviseur->balance_com += $transactionRetrait->commission_sup;
$walletHyperviseur->balance_com -= ( $transactionRetrait->commission_ag + $transactionRetrait->commission_sup); $walletHyperviseur->balance_com -= ( $transactionRetrait->commission_ag + $transactionRetrait->commission_sup);
@ -504,7 +511,7 @@ class iLinkTransactionController extends Controller
$transactionRetrait->id_wallet_sup = $walletSuperviseur->id; $transactionRetrait->id_wallet_sup = $walletSuperviseur->id;
$transactionRetrait->id_wallet_hyp = $walletHyperviseur->id; $transactionRetrait->id_wallet_hyp = $walletHyperviseur->id;
$transactionRetrait->status_retrait = $transactionRetrait->code_retrait_salt = $transactionRetrait->encrypted_code_retrait = null; $transactionRetrait->status_retrait = $transactionRetrait->commission_banque = $transactionRetrait->code_retrait_salt = $transactionRetrait->encrypted_code_retrait = null;
$transactionRetrait->frais = $transactionRetrait->taxe = 0; $transactionRetrait->frais = $transactionRetrait->taxe = 0;
$transaction->status_retrait = 1; $transaction->status_retrait = 1;
$transaction->date_retrait = new \DateTime(); $transaction->date_retrait = new \DateTime();
@ -545,7 +552,7 @@ class iLinkTransactionController extends Controller
$transaction->expiration_date = $expiration_date; $transaction->expiration_date = $expiration_date;
$frais = floatval($request->montant * $config->taux_com_wallet_ag_carte_cash / 100); $frais = floatval($request->montant * $config->taux_com_wallet_ag_carte_cash / 100);
$montantRetrait = $transaction->montant + $frais; $montantRetrait = $transaction->montant - $frais;
$transaction->montant_net = $montantRetrait; $transaction->montant_net = $montantRetrait;
$body['amount'] = $this->toUSDAmount($montantRetrait, $init_country); $body['amount'] = $this->toUSDAmount($montantRetrait, $init_country);
$body['card_number'] = $request->numero_carte; $body['card_number'] = $request->numero_carte;
@ -610,7 +617,8 @@ class iLinkTransactionController extends Controller
$taxe = ($init_country!= $final_country) ? $this->calculateTax($taxesInternationales, $frais) : $this->calculateTax($taxesNationales, $frais); $taxe = ($init_country!= $final_country) ? $this->calculateTax($taxesInternationales, $frais) : $this->calculateTax($taxesNationales, $frais);
$montantDepot = $request->montant - $frais - $taxe; $montantDepot = $request->montant - $frais - $taxe;
$transaction->montant_net = $montantDepot; $transaction->montant_net = $montantDepot;
$walletUser->balance += $montantDepot; $transaction->montant_net_final_country = $this->toMoneyAmount($montantDepot, $init_country, $final_country);
$walletUser->balance += $transaction->montant_net_final_country;
$commisionAgent = floatval($frais * $config->taux_com_ag_envoi_cash / 100); $commisionAgent = floatval($frais * $config->taux_com_ag_envoi_cash / 100);
$commisionSuper = floatval($frais * $config->taux_com_sup_envoi_cash / 100); $commisionSuper = floatval($frais * $config->taux_com_sup_envoi_cash / 100);
$commisionHyper = floatval($frais * $config->taux_com_hyp_envoi_cash / 100); $commisionHyper = floatval($frais * $config->taux_com_hyp_envoi_cash / 100);
@ -634,7 +642,7 @@ class iLinkTransactionController extends Controller
$transaction->id_wallet_hyp = $walletHyperviseur->id; $transaction->id_wallet_hyp = $walletHyperviseur->id;
$transaction->id_transaction = $this->getTransactionID(); $transaction->id_transaction = $this->getTransactionID();
$transaction->save(); $transaction->save();
$message = trans('messages.successful_deposit_ilink', $message = trans('messages.successful_agent_deposit_wallet_ilink',
['id_transaction' => $transaction->id_transaction, 'amount' => $this->toMoney($transaction->montant, $init_country), 'net_init' => $this->toMoney($montantDepot, $init_country), ['id_transaction' => $transaction->id_transaction, 'amount' => $this->toMoney($transaction->montant, $init_country), 'net_init' => $this->toMoney($montantDepot, $init_country),
'net_final' => $this->toMoneyWithCurrency($montantDepot, $init_country, $final_country), 'fees' => $this->toMoney($frais + $taxe, $init_country), 'init_country' => $this->getCountryName($init_country), 'net_final' => $this->toMoneyWithCurrency($montantDepot, $init_country, $final_country), 'fees' => $this->toMoney($frais + $taxe, $init_country), 'init_country' => $this->getCountryName($init_country),
'final_country' => $this->getCountryName($final_country), 'user_code' => $request->user_code]); 'final_country' => $this->getCountryName($final_country), 'user_code' => $request->user_code]);
@ -645,19 +653,37 @@ class iLinkTransactionController extends Controller
} }
break; break;
case 15: // Agent - Envoi de cash vers autre wallet case 15: // Agent - Envoi de cash vers autre wallet
$this->validate($request, $transaction->cash_cash_rules()); $this->validate($request, array_merge($transaction->cash_cash_rules(),[
'network_destinataire'=>'required|integer|min:0|not_in:0'
]));
$agent = AgentPlus::findOrFail($network_agent->agent_id); $agent = AgentPlus::findOrFail($network_agent->agent_id);
if ($this->checkPassword($request->password, $agent->encrypted_password, $agent->salt)) { if ($this->checkPassword($request->password, $agent->encrypted_password, $agent->salt)) {
$frais = ($request->init_country != $request->final_country) ? $this->calculateFees($plr_agent_depot_autre_wallet, $request->montant) : $this->calculateFees($plr_agent_depot_autre_wallet_national, $request->montant); if ($request->montant > $walletAgent->balance_princ)
$taxe = ($request->init_country != $request->final_country) ? $this->calculateTax($taxesInternationales, $frais) : $this->calculateTax($taxesNationales, $frais); return $this->errorResponse(trans('errors.insufficient_balance'));
$frais = ($init_country != $request->final_country) ? $this->calculateFees($plr_agent_depot_autre_wallet, $request->montant) : $this->calculateFees($plr_agent_depot_autre_wallet_national, $request->montant);
$taxe = ($init_country != $request->final_country) ? $this->calculateTax($taxesInternationales, $frais) : $this->calculateTax($taxesNationales, $frais);
$montantDepot = $request->montant - $frais - $taxe; $montantDepot = $request->montant - $frais - $taxe;
$transaction->montant_net = $montantDepot; $transaction->montant_net = $montantDepot;
$transaction->montant_net_final_country = $this->toMoneyAmount($montantDepot, $init_country, $request->final_country);
if ($init_country != $request->final_country) {
$reseauPayeur = PayingNetwork::where('id_network', $request->network_destinataire)->where('id_configWallet', $config->id)->firstOrFail();
$transaction->part_reseau_payeur = $frais * $reseauPayeur->taux_partage / 100;
$transaction->part_reseau_emetteur = $frais - $transaction->part_reseau_payeur;
} else {
$transaction->part_reseau_payeur = 0;
$transaction->part_reseau_emetteur = $frais;
}
$transaction->part_reseau_payeur_final_country = $this->toMoneyAmount($transaction->part_reseau_payeur, $init_country, $request->final_country);
if (isset($reseauPayeur))
$reseauPayeur->balance_com += $transaction->part_reseau_payeur_final_country;
//Emettre une trame securise pour crediter le wallet utilisateur //Emettre une trame securise pour crediter le wallet utilisateur
// $walletUser->balance += $montantDepot; // $walletUser->balance += $transaction->montant_net_final_country;
// $transaction->id_destinataire = r // $transaction->id_destinataire = r
$commisionAgent = floatval($frais * $config->taux_com_ag_envoi_cash / 100); $commisionAgent = floatval($transaction->part_reseau_emetteur * $config->taux_com_ag_envoi_cash / 100);
$commisionSuper = floatval($frais * $config->taux_com_sup_envoi_cash / 100); $commisionSuper = floatval($transaction->part_reseau_emetteur * $config->taux_com_sup_envoi_cash / 100);
$commisionHyper = floatval($frais * $config->taux_com_hyp_envoi_cash / 100); $commisionHyper = floatval($transaction->part_reseau_emetteur * $config->taux_com_hyp_envoi_cash / 100);
$walletAgent->balance_princ -= $transaction->montant; $walletAgent->balance_princ -= $transaction->montant;
$walletAgent->balance_com += $commisionAgent; $walletAgent->balance_com += $commisionAgent;
$transaction->commission_ag = $commisionAgent; $transaction->commission_ag = $commisionAgent;
@ -672,10 +698,20 @@ class iLinkTransactionController extends Controller
$walletAgent->save(); $walletAgent->save();
$walletSuperviseur->save(); $walletSuperviseur->save();
$walletHyperviseur->save(); $walletHyperviseur->save();
if (isset($reseauPayeur))
$reseauPayeur->save();
$transaction->id_wallet_ag = $walletAgent->id; $transaction->id_wallet_ag = $walletAgent->id;
$transaction->id_wallet_sup = $walletSuperviseur->id; $transaction->id_wallet_sup = $walletSuperviseur->id;
$transaction->id_wallet_hyp = $walletHyperviseur->id; $transaction->id_wallet_hyp = $walletHyperviseur->id;
$transaction->id_transaction = $this->getTransactionID();
$transaction->save(); $transaction->save();
$message = trans('messages.successful_agent_deposit_other_wallet',
['id_transaction' => $transaction->id_transaction, 'amount' => $this->toMoney($transaction->montant, $init_country), 'net_init' => $this->toMoney($montantDepot, $init_country),
'net_final' => $this->toMoneyWithCurrency($montantDepot, $init_country, $request->final_country), 'fees' => $this->toMoney($frais + $taxe, $init_country), 'init_country' => $this->getCountryName($init_country),
'final_country' => $this->getCountryName($request->final_country), 'receiver_code' => $request->id_destinataire,
'sender_name' => $request->prenom_emetteur . ' ' . $request->nom_emetteur, 'receiver_name' => $request->prenom_destinataire . ' ' . $request->nom_destinataire,]);
$this->sendMail($request->email_emetteur, trans('messages.successful_transaction'), $message);
return $this->successResponse($message . trans('messages.sent_by_mail'));
} else { } else {
return $this->errorResponse(trans('messages.incorrect_user_password')); return $this->errorResponse(trans('messages.incorrect_user_password'));
} }
@ -684,6 +720,8 @@ class iLinkTransactionController extends Controller
$this->validate($request, $transaction->card_rules()); $this->validate($request, $transaction->card_rules());
$agent = AgentPlus::findOrFail($network_agent->agent_id); $agent = AgentPlus::findOrFail($network_agent->agent_id);
if ($this->checkPassword($request->password, $agent->encrypted_password, $agent->salt)) { if ($this->checkPassword($request->password, $agent->encrypted_password, $agent->salt)) {
if ($request->montant > $walletAgent->balance_princ)
return $this->errorResponse(trans('errors.insufficient_balance'));
$expiration_date = \DateTime::createFromFormat('m/y', $request->expiration_date); $expiration_date = \DateTime::createFromFormat('m/y', $request->expiration_date);
if (!$expiration_date) if (!$expiration_date)
$expiration_date = new \DateTime(); $expiration_date = new \DateTime();
@ -692,7 +730,7 @@ class iLinkTransactionController extends Controller
$frais = $request->montant * $config->taux_com_wallet_ag_envoi_cash_carte / 100; $frais = $request->montant * $config->taux_com_wallet_ag_envoi_cash_carte / 100;
$montantDepot = $transaction->montant - $frais; $montantDepot = $transaction->montant - $frais;
$transaction->montant_net = $montantDepot; $transaction->montant_net = $montantDepot;
$body['amount'] = $montantDepot; $body['amount'] = $this->toUSDAmount($montantDepot, $init_country);;
$body['card_number'] = $request->numero_carte; $body['card_number'] = $request->numero_carte;
$body['cvv'] = $request->cvv; $body['cvv'] = $request->cvv;
$body['expiry_date'] = $expiration_date->format('Y-m'); $body['expiry_date'] = $expiration_date->format('Y-m');
@ -729,6 +767,7 @@ class iLinkTransactionController extends Controller
$walletAgent->save(); $walletAgent->save();
$walletSuperviseur->save(); $walletSuperviseur->save();
$walletHyperviseur->save(); $walletHyperviseur->save();
$transaction->id_transaction = $this->getTransactionID();
$transaction->save(); $transaction->save();
return $this->successResponse(trans('messages.successful_transaction')); return $this->successResponse(trans('messages.successful_transaction'));
@ -740,25 +779,27 @@ class iLinkTransactionController extends Controller
} }
break; break;
case 17: // Agent - Envoi de cash vers cash case 17: // Agent - Envoi de cash vers cash
$this->validate($request, array_merge($transaction->cash_cash_rules(), [ $this->validate($request, $transaction->cash_cash_rules());
'email_emetteur' => 'required',
]));
$agent = AgentPlus::findOrFail($network_agent->agent_id); $agent = AgentPlus::findOrFail($network_agent->agent_id);
if ($this->checkPassword($request->password, $agent->encrypted_password, $agent->salt)) { if ($this->checkPassword($request->password, $agent->encrypted_password, $agent->salt)) {
$frais = ($request->init_country != $request->final_country) ? $this->calculateFees($plr_agent_cash_cash, $request->montant) : $this->calculateFees($plr_agent_cash_cash_national, $request->montant); if ($request->montant > $walletAgent->balance_princ)
$taxe = ($request->init_country != $request->final_country) ? $this->calculateTax($taxesInternationales, $frais) : $this->calculateTax($taxesNationales, $frais); return $this->errorResponse(trans('errors.insufficient_balance'));
$frais = ($init_country != $request->final_country) ? $this->calculateFees($plr_agent_cash_cash, $request->montant) : $this->calculateFees($plr_agent_cash_cash_national, $request->montant);
$taxe = ($init_country != $request->final_country) ? $this->calculateTax($taxesInternationales, $frais) : $this->calculateTax($taxesNationales, $frais);
$montantRetrait = $request->montant - $frais - $taxe; $montantRetrait = $request->montant - $frais - $taxe;
$commisionAgent = floatval($frais * $config->taux_com_ag_envoi_cash / 100); $commisionAgent = floatval($frais * $config->taux_com_ag_envoi_cash / 100);
$commisionSuper = floatval($frais * $config->taux_com_sup_envoi_cash / 100); $commisionSuper = floatval($frais * $config->taux_com_sup_envoi_cash / 100);
$commisionHyper = floatval($frais * $config->taux_com_hyp_envoi_cash / 100); $commisionHyper = floatval($frais * $config->taux_com_hyp_envoi_cash / 100);
$transaction->montant_net = $montantRetrait; $transaction->montant_net = $montantRetrait;
$transaction->montant_net_final_country = $this->toMoneyAmount($transaction->montant_net, $init_country, $request->final_country);
$walletAgent->balance_com += $commisionAgent; $walletAgent->balance_com += $commisionAgent;
$transaction->commission_ag = $commisionAgent; $transaction->commission_ag = $commisionAgent;
$walletSuperviseur->balance_com += $commisionSuper; $walletSuperviseur->balance_com += $commisionSuper;
$transaction->commission_sup = $commisionSuper; $transaction->commission_sup = $commisionSuper;
$walletHyperviseur->balance_com += $commisionHyper; $walletHyperviseur->balance_com += $commisionHyper;
$transaction->commission_hyp = $commisionHyper; $transaction->commission_hyp = $commisionHyper;
$transaction->commission_hyp_final_country = $this->toMoneyAmount($transaction->commission_hyp, $init_country, $request->final_country);
$transaction->id_wallet_ag = $walletAgent->id; $transaction->id_wallet_ag = $walletAgent->id;
$transaction->id_wallet_sup = $walletSuperviseur->id; $transaction->id_wallet_sup = $walletSuperviseur->id;
$transaction->id_wallet_hyp = $walletHyperviseur->id; $transaction->id_wallet_hyp = $walletHyperviseur->id;
@ -776,13 +817,15 @@ class iLinkTransactionController extends Controller
$walletAgent->save(); $walletAgent->save();
$walletSuperviseur->save(); $walletSuperviseur->save();
$walletHyperviseur->save(); $walletHyperviseur->save();
$transaction->id_transaction = $this->getTransactionID();
$transaction->save(); $transaction->save();
$this->sendMail($request->email_emetteur, trans('messages.successful_transaction'), trans('messages.successful_send_cash', $message = trans('messages.successful_agent_send_cash',
['sender_name' => $request->prenom_emetteur . ' ' . $request->nom_emetteur, 'receiver_name' => $request->prenom_destinataire . ' ' . $request->nom_destinataire, ['sender_name' => $request->prenom_emetteur . ' ' . $request->nom_emetteur, 'receiver_name' => $request->prenom_destinataire . ' ' . $request->nom_destinataire,
'id_transaction' => $transaction->id, 'amount' => $this->toMoney($transaction->montant, $request->init_country), 'net_init' => $this->toMoney($montantRetrait, $request->init_country), 'id_transaction' => $transaction->id_transaction, 'amount' => $this->toMoney($transaction->montant, $init_country), 'net_init' => $this->toMoney($montantRetrait, $init_country),
'net_final' => $this->toMoneyWithCurrency($montantRetrait, $request->init_country, $request->final_country), 'fees' => $this->toMoney($frais, $request->init_country), 'tax' => $this->toMoney($taxe, $request->init_country), 'net_final' => $this->toMoneyWithCurrency($montantRetrait, $init_country, $request->final_country), 'fees' => $this->toMoney($frais + $taxe, $init_country), 'init_country' => $this->getCountryName($init_country),
'code' => wordwrap($code_retrait, 4, ' ', true)])); 'final_country' => $this->getCountryName($request->final_country),'code' => wordwrap($code_retrait, 4, ' ', true)]);
return $this->successResponse(trans('messages.successful_transaction')); $this->sendMail($request->email_emetteur, trans('messages.successful_transaction'),$message);
return $this->successResponse($message . trans('messages.sent_by_mail'));
} else { } else {
return $this->errorResponse(trans('messages.incorrect_user_password')); return $this->errorResponse(trans('messages.incorrect_user_password'));
} }
@ -840,6 +883,8 @@ class iLinkTransactionController extends Controller
$network_agent = NetworksAgent::findOrFail($walletAgent->id_networkAgent); $network_agent = NetworksAgent::findOrFail($walletAgent->id_networkAgent);
// Configuratrion du wallet // Configuratrion du wallet
$config = ConfigWallet::where('id_network', $network_agent->network_id)->firstOrFail(); $config = ConfigWallet::where('id_network', $network_agent->network_id)->firstOrFail();
$init_country = $network_agent->network->country->id;
} else { } else {
$walletUser = WalletsUser::findOrFail($request->id_wallet_user); $walletUser = WalletsUser::findOrFail($request->id_wallet_user);
@ -925,6 +970,55 @@ class iLinkTransactionController extends Controller
$data['montant_net'] = $request->montant - $frais; $data['montant_net'] = $request->montant - $frais;
return $this->successResponse($data); return $this->successResponse($data);
break; break;
case 13: // Agent - Retrait de la carte vers cash
$frais = $request->montant * $config->taux_com_wallet_ag_carte_cash / 100;
$data['frais'] = $frais;
$data['montant_net'] = $request->montant - $frais;
return $this->successResponse($data);
break;
case 14: // Agent - Envoi de cash vers wallet iLink
$this->validate($request, [
'user_code' => 'required',
]);
$user = User::where('user_code', $request->user_code)->first();
if(!$user)
return $this->errorResponse(trans('errors.wallet_not_defined'));
$final_country = $user->network->country->id;
$frais = ($init_country != $final_country) ? $this->calculateFees($plr_agent_depot_wallet_ilink, $request->montant) : $this->calculateFees($plr_agent_depot_wallet_ilink_national, $request->montant);
$taxe = ($init_country!= $final_country) ? $this->calculateTax($taxesInternationales, $frais) : $this->calculateTax($taxesNationales, $frais);
$data['frais'] = $frais +$taxe;
$data['montant_net_init'] = $request->montant - $frais - $taxe;
$data['montant_net_final'] = $this->toMoneyWithCurrency($data['montant_net_init'], $init_country, $final_country);
return $this->successResponse($data);
break;
case 15: // Agent - Envoi de cash vers autre wallet
$this->validate($request, [
'final_country' => 'required|integer|min:0|not_in:0',
]);
$frais = ($init_country != $request->final_country) ? $this->calculateFees($plr_agent_depot_autre_wallet, $request->montant) : $this->calculateFees($plr_agent_depot_autre_wallet_national, $request->montant);
$taxe = ($init_country != $request->final_country) ? $this->calculateTax($taxesInternationales, $frais) : $this->calculateTax($taxesNationales, $frais);
$data['frais'] = $frais + $taxe;
$data['montant_net_init'] = $request->montant - $frais - $taxe;
$data['montant_net_final'] = $this->toMoneyWithCurrency($data['montant_net_init'], $init_country, $request->final_country);
return $this->successResponse($data);
break;
case 16: // Agent - Envoi de cash vers une carte visa
$frais = $request->montant * $config->taux_com_wallet_ag_envoi_cash_carte / 100;
$data['frais'] = $frais;
$data['montant_net'] = $request->montant - $frais;
return $this->successResponse($data);
break;
case 17: // Agent - Envoi de cash vers cash
$this->validate($request, [
'final_country' => 'required|integer|min:0|not_in:0',
]);
$frais = ($init_country != $request->final_country) ? $this->calculateFees($plr_agent_cash_cash, $request->montant) : $this->calculateFees($plr_agent_cash_cash_national, $request->montant);
$taxe = ($init_country != $request->final_country) ? $this->calculateTax($taxesInternationales, $frais) : $this->calculateTax($taxesNationales, $frais);
$data['frais'] = $frais + $taxe;
$data['montant_net_init'] = $request->montant - $frais - $taxe;
$data['montant_net_final'] = $this->toMoneyWithCurrency($data['montant_net_init'], $init_country, $request->final_country);
return $this->successResponse($data);
break;
} }
} }

View File

@ -47,6 +47,7 @@ use Illuminate\Database\Eloquent\Model;
* @property float $commission_ag * @property float $commission_ag
* @property float $commission_sup * @property float $commission_sup
* @property float $commission_hyp * @property float $commission_hyp
* @property float commission_hyp_final_country
* @property int $id_wallet_user * @property int $id_wallet_user
* @property int $id_wallet_ag * @property int $id_wallet_ag
* @property int $id_wallet_sup * @property int $id_wallet_sup
@ -87,6 +88,7 @@ class WalletIlinkTransaction extends Model
'commission_ag' => 'float', 'commission_ag' => 'float',
'commission_sup' => 'float', 'commission_sup' => 'float',
'commission_hyp' => 'float', 'commission_hyp' => 'float',
'commission_hyp_final_country'=>'float',
'id_wallet_user' => 'int', 'id_wallet_user' => 'int',
'id_wallet_ag' => 'int', 'id_wallet_ag' => 'int',
'id_wallet_sup' => 'int', 'id_wallet_sup' => 'int',
@ -137,6 +139,7 @@ class WalletIlinkTransaction extends Model
'commission_ag', 'commission_ag',
'commission_sup', 'commission_sup',
'commission_hyp', 'commission_hyp',
'commission_hyp_final_country',
'id_wallet_user', 'id_wallet_user',
'id_wallet_ag', 'id_wallet_ag',
'id_wallet_sup', 'id_wallet_sup',
@ -202,12 +205,12 @@ class WalletIlinkTransaction extends Model
public function cash_cash_rules() public function cash_cash_rules()
{ {
return [ return [
'init_country' =>'required|integer|min:0|not_in:0',
'final_country' =>'required|integer|min:0|not_in:0', 'final_country' =>'required|integer|min:0|not_in:0',
'nom_emetteur'=>'required', 'nom_emetteur'=>'required',
'prenom_emetteur'=>'required', 'prenom_emetteur'=>'required',
'type_document_emetteur'=>'required', 'type_document_emetteur'=>'required',
'id_document_emetteur'=>'required', 'id_document_emetteur'=>'required',
'email_emetteur' => 'required',
'nom_destinataire'=>'required', 'nom_destinataire'=>'required',
'prenom_destinataire'=>'required', 'prenom_destinataire'=>'required',
'type_document_destinataire'=>'required', 'type_document_destinataire'=>'required',

View File

@ -29,22 +29,39 @@ Welcome to the iLink World family !!!
Regards, Regards,
ILinkWorld team.', ILinkWorld team.',
'successful_deposit_ilink' => 'Deposit to an iLink wallet. User code: :user_code 'successful_agent_deposit_wallet_ilink' => 'Depositing money to an iLink account
Transaction information : Transaction information :
- Transaction ID : :id_transaction - Transaction ID : :id_transaction
- Amount of the transaction : :amount - Amount : :amount
- Net amount of the country of departure : :net_init - Fees and Taxes : :fees
- Net amount of the destination country : :net_final - Country of departure : :init_country
- Fees : :fees - Net amount : :net_init
- Tax : :tax', - Country of destination : :final_country
'successful_send_cash'=>'Sent by :sender_name to :receiver_name. - Net amount : :net_final
- Recipient account : :user_code',
'successful_agent_deposit_other_wallet' => 'Deposit money to another account
Transaction information : Transaction information :
- Transaction ID : :id_transaction - Transaction ID : :id_transaction
- Amount of the transaction : :amount - Amount : :amount
- Net amount of the country of departure : :net_init - Fees and Taxes : :fees
- Net amount of the destination country : :net_final - Country of departure : :init_country
- Fees : :fees - Net amount : :net_init
- Tax : :tax - Country of destination : :final_country
- Net amount : :net_final
- Issuer names : :sender_name
- Recipient names : :receiver_name.
- Recipient account : :receiver_code',
'successful_agent_send_cash'=>'Money sent
Transaction information:
- Transaction ID : :id_transaction
- Amount : :amount
- Fees and Taxes : :fees
- Country of departure : :init_country
- Net amount : :net_init
- Country of destination : :final_country
- Net amount : :net_final
- Issuer names : :sender_name
- Recipient names : :receiver_name.
- Withdrawal code : :code', - Withdrawal code : :code',
'successful_user_send_to_wallet' => 'Sending money account to account. 'successful_user_send_to_wallet' => 'Sending money account to account.
Transaction information : Transaction information :

View File

@ -29,26 +29,41 @@ Bienvenue dans la famille iLink World !!!
Cordialement, Cordialement,
Equipe iLinkWorld.', Equipe iLinkWorld.',
'successful_deposit_ilink' => 'Dépot vers un wallet iLink. Code de l\'utilisateur : :user_code 'successful_agent_deposit_wallet_ilink' => 'Dépot d\'argent vers un compte iLink
Informations de la transaction : Informations de la transaction :
- Transaction ID : :id_transaction - Transaction ID : :id_transaction
- Montant : :amount - Montant : :amount
- Frais et Taxes : :fees - Frais et Taxes : :fees
- Pays de départ : :init_country - Pays de départ : :init_country
- Montant net : :net_init - Montant net : :net_init
- Montant net : :net_final
- Pays de destination : :final_country - Pays de destination : :final_country
- Montant net : :net_final
- Compte destinataire : :user_code', - Compte destinataire : :user_code',
'successful_send_cash' => 'Envoi d\'argent effectué par :sender_name à :receiver_name. 'successful_agent_deposit_other_wallet' => 'Dépot d\'argent vers un autre compte
Informations de la transaction : Informations de la transaction :
- Transaction ID : :id_transaction - Transaction ID : :id_transaction
- Montant de la transaction : :amount - Montant : :amount
- Montant net du pays de départ : :net_init - Frais et Taxes : :fees
- Montant net du pays de destination : :net_final - Pays de départ : :init_country
- Frais : :fees - Montant net : :net_init
- Taxe : :tax - Pays de destination : :final_country
- Montant net : :net_final
- Noms de l\'emetteur : :sender_name
- Noms du destinataire : :receiver_name.
- Compte destinataire : :receiver_code',
'successful_agent_send_cash' => 'Envoi d\'argent effectué
Informations de la transaction :
- Transaction ID : :id_transaction
- Montant : :amount
- Frais et Taxes : :fees
- Pays de départ : :init_country
- Montant net : :net_init
- Pays de destination : :final_country
- Montant net : :net_final
- Noms de l\'emetteur : :sender_name
- Noms du destinataire : :receiver_name.
- Code de retrait : :code', - Code de retrait : :code',
'successful_user_send_to_wallet' => 'Envoi d\'argent compte à compte. 'successful_user_send_to_wallet' => 'Envoi d\'argent compte à compte
Informations de la transaction : Informations de la transaction :
- Numéro : :id_transaction - Numéro : :id_transaction
- Montant : :amount - Montant : :amount