Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
59 changes: 51 additions & 8 deletions Controller/ListProyecto.php
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@

namespace FacturaScripts\Plugins\Proyectos\Controller;

use FacturaScripts\Core\Base\DataBase\DataBaseWhere;
use FacturaScripts\Core\Where;
use FacturaScripts\Core\Lib\ExtendedController\ListController;
use FacturaScripts\Core\Lib\ExtendedController\ListView;
use FacturaScripts\Core\Tools;
Expand All @@ -45,6 +45,7 @@ protected function createViews()
{
$this->createViewsProjects('ListProyecto', 'projects', 'fa-brands fa-stack-overflow');
$this->createViewsProjects('ListProyecto-private', 'private', 'fa-solid fa-unlock-alt');
$this->createViewsProjectsClosed('Listproyecto-closed', 'closed', 'fa-solid fa-lock');
}

protected function createViewsProjects(string $viewName, string $label, string $icon): void
Expand All @@ -61,12 +62,12 @@ protected function createViewsProjects(string $viewName, string $label, string $
// filtros
$users = $this->codeModel->all('users', 'nick', 'nick');
$where = [
['label' => Tools::lang()->trans('only-active'), 'where' => [new DataBaseWhere('editable', true)]],
['label' => Tools::lang()->trans('only-closed'), 'where' => [new DataBaseWhere('editable', false)]],
['label' => Tools::lang()->trans('only-active'), 'where' => [Where::column('editable', true)]],
['label' => Tools::lang()->trans('only-closed'), 'where' => [Where::column('editable', false)]],
['label' => Tools::lang()->trans('all'), 'where' => []]
];
foreach ($this->codeModel->all('proyectos_estados', 'idestado', 'nombre') as $status) {
$where[] = ['label' => $status->description, 'where' => [new DataBaseWhere('idestado', $status->code)]];
$where[] = ['label' => ($status->description ?? $status->nombre), 'where' => [Where::column('idestado', $status->code)]];
}

$this->listView($viewName)
Expand Down Expand Up @@ -95,8 +96,8 @@ protected function loadData($viewName, $view)
break;
}
$where = [
new DataBaseWhere('idempresa', $this->user->idempresa),
new DataBaseWhere('privado', false)
Where::column('idempresa', $this->user->idempresa),
Where::column('privado', false)
];
$view->loadData('', $where);
break;
Expand All @@ -105,8 +106,21 @@ protected function loadData($viewName, $view)
$sql = 'SELECT idproyecto FROM proyectos WHERE nick = ' . $this->dataBase->var2str($this->user->nick)
. ' UNION SELECT idproyecto FROM proyectos_users WHERE nick = ' . $this->dataBase->var2str($this->user->nick);
$where = [
new DataBaseWhere('privado', true),
new DataBaseWhere('idproyecto', $sql, 'IN')
Where::column('privado', true),
Where::in('idproyecto', $sql)
];
$view->loadData('', $where);
break;

case 'Listproyecto-closed':
if ($this->user->admin) {
$view->loadData();
break;
}
$where = [
Where::column('idempresa', $this->user->idempresa),
Where::column('privado', false),
Where::column('editable', false),
];
$view->loadData('', $where);
break;
Expand Down Expand Up @@ -134,4 +148,33 @@ protected function setProjectColors(string $viewName): void
];
}
}

protected function createViewsProjectsClosed(string $viewName, string $label, string $icon): void
{
$this->addView($viewName, 'Proyecto', $label, $icon)
->addOrderBy(['fecha', 'idproyecto'], 'date', 2)
->addOrderBy(['fechainicio'], 'start-date')
->addOrderBy(['fechafin'], 'end-date')
->addOrderBy(['nombre'], 'name')
->addOrderBy(['totalcompras'], 'total-purchases')
->addOrderBy(['totalventas'], 'total-sales')
->addSearchFields(['nombre', 'descripcion']);
// sólo estados no editables
$where = [
['label' => Tools::lang()->trans('only-closed'), 'where' => [Where::column('editable', false)]],
['label' => '------', 'where' => [Where::column('editable', false)]],
];

foreach (EstadoProyecto::all([], [], 0, 0) as $estado) {
if (false === $estado->editable) {
$where[] = [
'label' => $estado->nombre,
'where' => [Where::column('idestado', $estado->idestado)]
];
}
}

$this->listView($viewName)->addFilterSelectWhere('status', $where);
$this->setProjectColors($viewName);
}
}
Loading