mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-09-06 12:45:30 +00:00
Attempt to add external_url filtering support
This commit is contained in:
@@ -212,6 +212,36 @@ trait MetaCollection
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
public function withoutExternalUrl(): GroupCollectorInterface
|
||||
{
|
||||
if (false === $this->hasJoinedMetaTables) {
|
||||
$this->hasJoinedMetaTables = true;
|
||||
$this->query->leftJoin('journal_meta', 'transaction_journals.id', '=', 'journal_meta.transaction_journal_id');
|
||||
}
|
||||
$this->query->where('journal_meta.name', '=', 'external_url');
|
||||
$this->query->whereNull('journal_meta.data');
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
public function withExternalUrl(): GroupCollectorInterface
|
||||
{
|
||||
if (false === $this->hasJoinedMetaTables) {
|
||||
$this->hasJoinedMetaTables = true;
|
||||
$this->query->leftJoin('journal_meta', 'transaction_journals.id', '=', 'journal_meta.transaction_journal_id');
|
||||
}
|
||||
$this->query->where('journal_meta.name', '=', 'external_url');
|
||||
$this->query->whereNotNull('journal_meta.data');
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
|
@@ -305,6 +305,20 @@ interface GroupCollectorInterface
|
||||
*/
|
||||
public function setExternalId(string $externalId): GroupCollectorInterface;
|
||||
|
||||
/**
|
||||
* Transactions without an external URL
|
||||
*
|
||||
* @return GroupCollectorInterface
|
||||
*/
|
||||
public function withoutExternalUrl(): GroupCollectorInterface;
|
||||
|
||||
/**
|
||||
* Transactions with an external URL
|
||||
*
|
||||
* @return GroupCollectorInterface
|
||||
*/
|
||||
public function withExternalUrl(): GroupCollectorInterface;
|
||||
|
||||
/**
|
||||
* Limit results to a specific foreign currency.
|
||||
*
|
||||
|
@@ -627,6 +627,15 @@ class OperatorQuerySearch implements SearchInterface
|
||||
$this->collector->setUpdatedAt($updatedAt);
|
||||
break;
|
||||
//
|
||||
// external URL
|
||||
//
|
||||
case 'no_external_url':
|
||||
$this->collector->withoutExternalUrl();
|
||||
break;
|
||||
case 'any_external_url':
|
||||
$this->collector->withExternalUrl();
|
||||
break;
|
||||
//
|
||||
// other fields
|
||||
//
|
||||
case 'external_id':
|
||||
|
@@ -518,6 +518,8 @@ return [
|
||||
'notes_are' => ['alias' => false, 'needs_context' => true,],
|
||||
'no_notes' => ['alias' => false, 'needs_context' => false,],
|
||||
'any_notes' => ['alias' => false, 'needs_context' => false,],
|
||||
'no_external_url' => ['alias' => false, 'needs_context' => false,],
|
||||
'any_external_url' => ['alias' => false, 'needs_context' => false,],
|
||||
|
||||
// one exact (or array of) journals:
|
||||
'id' => ['alias' => false, 'trigger_class' => null, 'needs_context' => true,],
|
||||
|
2
public/v1/js/ff/rules/create-edit.js
vendored
2
public/v1/js/ff/rules/create-edit.js
vendored
@@ -348,6 +348,8 @@ function updateTriggerInput(selectList) {
|
||||
case 'source_is_cash':
|
||||
case 'destination_is_cash':
|
||||
case 'account_is_cash':
|
||||
case 'no_external_url':
|
||||
case 'any_external_url':
|
||||
console.log('Select list value is ' + selectList.val() + ', so input needs to be disabled.');
|
||||
inputResult.prop('disabled', true);
|
||||
inputResult.typeahead('destroy');
|
||||
|
@@ -562,6 +562,8 @@ return [
|
||||
'rule_trigger_internal_reference' => 'Internal reference is ":trigger_value"',
|
||||
'rule_trigger_journal_id_choice' => 'Transaction journal ID is..',
|
||||
'rule_trigger_journal_id' => 'Transaction journal ID is ":trigger_value"',
|
||||
'rule_trigger_no_external_url' => 'Transaction has no external URL',
|
||||
'rule_trigger_any_external_url' => 'Transaction has an external URL',
|
||||
|
||||
// actions
|
||||
'rule_action_delete_transaction_choice' => 'DELETE transaction (!)',
|
||||
|
Reference in New Issue
Block a user