mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-02-25 18:45:27 -06:00
First create basic objects. Then, enhance.
This commit is contained in:
parent
f8bf6c163f
commit
94a7b6b9bd
@ -111,30 +111,25 @@ class TransactionFactory
|
|||||||
{
|
{
|
||||||
// all this data is the same for both transactions:
|
// all this data is the same for both transactions:
|
||||||
$currency = $this->findCurrency($data['currency_id'], $data['currency_code']);
|
$currency = $this->findCurrency($data['currency_id'], $data['currency_code']);
|
||||||
$foreignCurrency = $this->findCurrency($data['foreign_currency_id'], $data['foreign_currency_code']);
|
|
||||||
$budget = $this->findBudget($data['budget_id'], $data['budget_name']);
|
|
||||||
$category = $this->findCategory($data['category_id'], $data['category_name']);
|
|
||||||
$description = $journal->description === $data['description'] ? null : $data['description'];
|
$description = $journal->description === $data['description'] ? null : $data['description'];
|
||||||
|
|
||||||
// type of source account depends on journal type:
|
// type of source account depends on journal type:
|
||||||
$sourceType = $this->accountType($journal, 'source');
|
$sourceType = $this->accountType($journal, 'source');
|
||||||
$sourceAccount = $this->findAccount($sourceType, $data['source_id'], $data['source_name']);
|
$sourceAccount = $this->findAccount($sourceType, $data['source_id'], $data['source_name']);
|
||||||
$sourceFa = is_null($data['foreign_amount']) ? null : app('steam')->negative(strval($data['foreign_amount']));
|
|
||||||
|
|
||||||
// same for destination account:
|
// same for destination account:
|
||||||
$destinationType = $this->accountType($journal, 'destination');
|
$destinationType = $this->accountType($journal, 'destination');
|
||||||
$destinationAccount = $this->findAccount($destinationType, $data['destination_id'], $data['destination_name']);
|
$destinationAccount = $this->findAccount($destinationType, $data['destination_id'], $data['destination_name']);
|
||||||
$destinationFa = is_null($data['foreign_amount']) ? null : app('steam')->positive(strval($data['foreign_amount']));
|
|
||||||
|
|
||||||
// first make a "negative" (source) transaction based on the data in the array.
|
// first make a "negative" (source) transaction based on the data in the array.
|
||||||
$sourceTransactionData = [
|
$sourceTransactionData = [
|
||||||
'description' => $description,
|
'description' => $description,
|
||||||
'amount' => app('steam')->negative(strval($data['amount'])),
|
'amount' => app('steam')->negative(strval($data['amount'])),
|
||||||
'foreign_amount' => $sourceFa,
|
'foreign_amount' => null,
|
||||||
'currency' => $currency,
|
'currency' => $currency,
|
||||||
'foreign_currency' => $foreignCurrency,
|
'foreign_currency' => null,
|
||||||
'budget' => $budget,
|
'budget' => null,
|
||||||
'category' => $category,
|
'category' => null,
|
||||||
'account' => $sourceAccount,
|
'account' => $sourceAccount,
|
||||||
'transaction_journal' => $journal,
|
'transaction_journal' => $journal,
|
||||||
'reconciled' => $data['reconciled'],
|
'reconciled' => $data['reconciled'],
|
||||||
@ -146,11 +141,11 @@ class TransactionFactory
|
|||||||
$destTransactionData = [
|
$destTransactionData = [
|
||||||
'description' => $sourceTransactionData['description'],
|
'description' => $sourceTransactionData['description'],
|
||||||
'amount' => app('steam')->positive(strval($data['amount'])),
|
'amount' => app('steam')->positive(strval($data['amount'])),
|
||||||
'foreign_amount' => $destinationFa,
|
'foreign_amount' => null,
|
||||||
'currency' => $currency,
|
'currency' => $currency,
|
||||||
'foreign_currency' => $foreignCurrency,
|
'foreign_currency' => null,
|
||||||
'budget' => $budget,
|
'budget' => null,
|
||||||
'category' => $category,
|
'category' => null,
|
||||||
'account' => $destinationAccount,
|
'account' => $destinationAccount,
|
||||||
'transaction_journal' => $journal,
|
'transaction_journal' => $journal,
|
||||||
'reconciled' => $data['reconciled'],
|
'reconciled' => $data['reconciled'],
|
||||||
|
@ -72,14 +72,13 @@ class TransactionJournalFactory
|
|||||||
*/
|
*/
|
||||||
public function create(array $data): TransactionJournal
|
public function create(array $data): TransactionJournal
|
||||||
{
|
{
|
||||||
|
// store basic journal first.
|
||||||
$type = $this->findTransactionType($data['type']);
|
$type = $this->findTransactionType($data['type']);
|
||||||
//$bill = $this->findBill($data['bill_id'], $data['bill_name']);
|
|
||||||
//$piggyBank = $this->findPiggyBank($data['piggy_bank_id'], $data['piggy_bank_name']);
|
|
||||||
$defaultCurrency = app('amount')->getDefaultCurrencyByUser($this->user);
|
$defaultCurrency = app('amount')->getDefaultCurrencyByUser($this->user);
|
||||||
$values = [
|
$values = [
|
||||||
'user_id' => $data['user'],
|
'user_id' => $data['user'],
|
||||||
'transaction_type_id' => $type->id,
|
'transaction_type_id' => $type->id,
|
||||||
'bill_id' => is_null($bill) ? null : $bill->id,
|
'bill_id' => null,
|
||||||
'transaction_currency_id' => $defaultCurrency->id,
|
'transaction_currency_id' => $defaultCurrency->id,
|
||||||
'description' => $data['description'],
|
'description' => $data['description'],
|
||||||
'date' => $data['date']->format('Y-m-d'),
|
'date' => $data['date']->format('Y-m-d'),
|
||||||
@ -90,6 +89,7 @@ class TransactionJournalFactory
|
|||||||
|
|
||||||
$journal = $this->repository->storeBasic($values);
|
$journal = $this->repository->storeBasic($values);
|
||||||
|
|
||||||
|
// store basic transactions:
|
||||||
$factory = app(TransactionFactory::class);
|
$factory = app(TransactionFactory::class);
|
||||||
$factory->setUser($this->user);
|
$factory->setUser($this->user);
|
||||||
|
|
||||||
@ -100,31 +100,6 @@ class TransactionJournalFactory
|
|||||||
}
|
}
|
||||||
$this->repository->markCompleted($journal);
|
$this->repository->markCompleted($journal);
|
||||||
|
|
||||||
// link piggy bank:
|
|
||||||
if ($type->type === TransactionType::TRANSFER && !is_null($piggyBank)) {
|
|
||||||
/** @var PiggyBankEventFactory $factory */
|
|
||||||
$factory = app(PiggyBankEventFactory::class);
|
|
||||||
$factory->create($journal, $piggyBank);
|
|
||||||
}
|
|
||||||
|
|
||||||
// store tags and link them:
|
|
||||||
/** @var TagFactory $factory */
|
|
||||||
$factory = app(TagFactory::class);
|
|
||||||
$factory->setUser($journal->user);
|
|
||||||
foreach ($data['tags'] as $string) {
|
|
||||||
$tagData = [
|
|
||||||
'tag' => $string,
|
|
||||||
'date' => null,
|
|
||||||
'description' => null,
|
|
||||||
'latitude' => null,
|
|
||||||
'longitude' => null,
|
|
||||||
'zoom_level' => null,
|
|
||||||
'user' => $journal->user,
|
|
||||||
];
|
|
||||||
$tag = $factory->create($tagData);
|
|
||||||
$this->repository->addTag($journal, $tag);
|
|
||||||
}
|
|
||||||
|
|
||||||
return $journal;
|
return $journal;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user