This commit is contained in:
James Cole 2018-04-08 17:36:37 +02:00
parent 8f0e36a8e4
commit 3fbd2f93c8
No known key found for this signature in database
GPG Key ID: C16961E655E74B5E
6 changed files with 66 additions and 7 deletions

View File

@ -119,9 +119,11 @@ class UpgradeDatabase extends Command
}
// loop bills.
$order = 1;
$order = 1;
/** @var Collection $collection */
$collection = $user->bills()->where('active', 1)->get();
/** @var Bill $bill */
foreach ($user->bills()->get() as $bill) {
foreach ($collection as $bill) {
if ($bill->match !== 'MIGRATED_TO_RULES') {
$rule = Rule::create(
[

View File

@ -199,6 +199,16 @@ class BillController extends Controller
}
);
// add info about rules:
$rules = $repository->getRulesForBills($paginator->getCollection());
$bills = $bills->map(
function (array $bill) use ($rules) {
$bill['rules'] = $rules[$bill['id']] ?? [];
return $bill;
}
);
$paginator->setPath(route('bills.index'));
return view('bills.index', compact('bills', 'paginator'));

View File

@ -369,7 +369,7 @@ class RuleController extends Controller
// redirect to new bill creation.
if ((int)$request->get('bill_id') > 0) {
return redirect(route('bills.create'));
return redirect($this->getPreviousUri('bills.create.uri'));
}

View File

@ -367,6 +367,35 @@ class BillRepository implements BillRepositoryInterface
return $journals;
}
/**
* Return all rules related to the bills in the collection, in an associative array:
* 5= billid
*
* 5 => [['id' => 1, 'title' => 'Some rule'],['id' => 2, 'title' => 'Some other rule']]
*
* @param Collection $collection
*
* @return array
*/
public function getRulesForBills(Collection $collection): array
{
$rules = $this->user->rules()
->leftJoin('rule_actions', 'rule_actions.rule_id', '=', 'rules.id')
->where('rule_actions.action_type', 'link_to_bill')
->get(['rules.id', 'rules.title', 'rule_actions.action_value']);
$array = [];
foreach ($rules as $rule) {
$array[$rule->action_value] = $array[$rule->action_value] ?? [];
$array[$rule->action_value][] = ['id' => $rule->id, 'title' => $rule->title];
}
$return = [];
foreach ($collection as $bill) {
$return[$bill->id] = $array[$bill->name] ?? [];
}
return $return;
}
/**
* @param Bill $bill
* @param Carbon $date

View File

@ -140,6 +140,18 @@ interface BillRepositoryInterface
*/
public function getPossiblyRelatedJournals(Bill $bill): Collection;
/**
* Return all rules related to the bills in the collection, in an associative array:
* 5= billid
*
* 5 => [['id' => 1, 'title' => 'Some rule'],['id' => 2, 'title' => 'Some other rule']]
*
* @param Collection $collection
*
* @return array
*/
public function getRulesForBills(Collection $collection): array;
/**
* @param Bill $bill
* @param Carbon $date

View File

@ -21,8 +21,8 @@
{% for entry in bills %}
{% if entry.active %}
{% set count = count + 1 %}
{% set sum_min = sum_min + entry.amount_min %}
{% set sum_max = sum_min + entry.amount_max %}
{% set sum_min = sum_min + entry.amount_min %}
{% set sum_max = sum_min + entry.amount_max %}
{% set expected_total = expected_total + ((entry.amount_min + entry.amount_max) / 2) %}
{% endif %}
<tr>
@ -43,7 +43,13 @@
</td>
<td class="hidden-sm hidden-md hidden-xs">
(rules)
{% if entry.rules|length > 0 %}
<ul class="list-unstyled">
{% for rule in entry.rules %}
<li><a href="{{ route('rules.edit', [rule.id]) }}">{{ rule.title }}</a></li>
{% endfor %}
</ul>
{% endif %}
</td>
<td data-value="{{ entry.amount_min }}" style="text-align: right;">
<span style="margin-right:5px;" title="{{ entry.amount_min|formatAmountPlain }} - {{ entry.amount_max|formatAmountPlain }}">
@ -127,7 +133,7 @@
<td colspan="5">&nbsp;</td>
</tr>
{# calculate total#}
{# calculate total#}
{% if count > 0 %}
{% set avg_min = (sum_min / count) %}
{% set avg_max = (sum_max / count) %}