v2 first commit
This commit is contained in:
		
							
								
								
									
										112
									
								
								app/Jobs/Banking/UpdateTransfer.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										112
									
								
								app/Jobs/Banking/UpdateTransfer.php
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,112 @@ | ||||
| <?php | ||||
|  | ||||
| namespace App\Jobs\Banking; | ||||
|  | ||||
| use App\Abstracts\Job; | ||||
| use App\Models\Banking\Account; | ||||
| use App\Models\Banking\Transaction; | ||||
| use App\Models\Banking\Transfer; | ||||
| use App\Models\Setting\Category; | ||||
| use App\Models\Setting\Currency; | ||||
|  | ||||
| class UpdateTransfer extends Job | ||||
| { | ||||
|     protected $transfer; | ||||
|  | ||||
|     protected $request; | ||||
|  | ||||
|     /** | ||||
|      * Create a new job instance. | ||||
|      * | ||||
|      * @param  $transfer | ||||
|      * @param  $request | ||||
|      */ | ||||
|     public function __construct($transfer, $request) | ||||
|     { | ||||
|         $this->transfer = $transfer; | ||||
|         $this->request = $this->getRequestInstance($request); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Execute the job. | ||||
|      * | ||||
|      * @return Transfer | ||||
|      */ | ||||
|     public function handle() | ||||
|     { | ||||
|         $currencies = Currency::enabled()->pluck('rate', 'code')->toArray(); | ||||
|  | ||||
|         $expense_currency_code = Account::where('id', $this->request->get('from_account_id'))->pluck('currency_code')->first(); | ||||
|         $income_currency_code = Account::where('id', $this->request->get('to_account_id'))->pluck('currency_code')->first(); | ||||
|  | ||||
|         $expense_transaction = Transaction::findOrFail($this->transfer->expense_transaction_id); | ||||
|         $income_transaction = Transaction::findOrFail($this->transfer->income_transaction_id); | ||||
|  | ||||
|         $expense_transaction->update([ | ||||
|             'company_id' => $this->request['company_id'], | ||||
|             'type' => 'expense', | ||||
|             'account_id' => $this->request->get('from_account_id'), | ||||
|             'paid_at' => $this->request->get('transferred_at'), | ||||
|             'currency_code' => $expense_currency_code, | ||||
|             'currency_rate' => $currencies[$expense_currency_code], | ||||
|             'amount' => $this->request->get('amount'), | ||||
|             'contact_id' => 0, | ||||
|             'description' => $this->request->get('description'), | ||||
|             'category_id' => Category::transfer(), // Transfer Category ID | ||||
|             'payment_method' => $this->request->get('payment_method'), | ||||
|             'reference' => $this->request->get('reference'), | ||||
|         ]); | ||||
|  | ||||
|         // Convert amount if not same currency | ||||
|         if ($expense_currency_code != $income_currency_code) { | ||||
|             $default_currency = setting('default.currency', 'USD'); | ||||
|  | ||||
|             $default_amount = $this->request->get('amount'); | ||||
|  | ||||
|             if ($default_currency != $expense_currency_code) { | ||||
|                 $default_amount_model = new Transfer(); | ||||
|  | ||||
|                 $default_amount_model->default_currency_code = $default_currency; | ||||
|                 $default_amount_model->amount = $this->request->get('amount'); | ||||
|                 $default_amount_model->currency_code = $expense_currency_code; | ||||
|                 $default_amount_model->currency_rate = $currencies[$expense_currency_code]; | ||||
|  | ||||
|                 $default_amount = $default_amount_model->getDivideConvertedAmount(); | ||||
|             } | ||||
|  | ||||
|             $transfer_amount = new Transfer(); | ||||
|  | ||||
|             $transfer_amount->default_currency_code = $expense_currency_code; | ||||
|             $transfer_amount->amount = $default_amount; | ||||
|             $transfer_amount->currency_code = $income_currency_code; | ||||
|             $transfer_amount->currency_rate = $currencies[$income_currency_code]; | ||||
|  | ||||
|             $amount = $transfer_amount->getAmountConvertedFromCustomDefault(); | ||||
|         } else { | ||||
|             $amount = $this->request->get('amount'); | ||||
|         } | ||||
|  | ||||
|         $income_transaction->update([ | ||||
|             'company_id' => $this->request['company_id'], | ||||
|             'type' => 'income', | ||||
|             'account_id' => $this->request->get('to_account_id'), | ||||
|             'paid_at' => $this->request->get('transferred_at'), | ||||
|             'currency_code' => $income_currency_code, | ||||
|             'currency_rate' => $currencies[$income_currency_code], | ||||
|             'amount' => $amount, | ||||
|             'contact_id' => 0, | ||||
|             'description' => $this->request->get('description'), | ||||
|             'category_id' => Category::transfer(), // Transfer Category ID | ||||
|             'payment_method' => $this->request->get('payment_method'), | ||||
|             'reference' => $this->request->get('reference'), | ||||
|         ]); | ||||
|  | ||||
|         $this->transfer->update([ | ||||
|             'company_id' => $this->request['company_id'], | ||||
|             'expense_transaction_id' => $expense_transaction->id, | ||||
|             'income_transaction_id' => $income_transaction->id, | ||||
|         ]); | ||||
|  | ||||
|         return $this->transfer; | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user