if (!isset(static::$_taskOptions[$invoicable])) {
static::$_taskOptions[$invoicable] = [];
- foreach (static::$_projectTasks as $project => $tasks) {
+ $d = self::getInvoiceData($invoicable);
- if (!isset(static::$_projects[$project])) {
- continue;
- }
- $p = static::$_projects[$project];
- if ($invoicable !== 'all' && Permissions::getCompanyByUser($p->client) != $invoicable) {
- continue;
- }
-
- foreach ($tasks as $id => $task) {
- static::$_taskOptions[$invoicable][$id] = $p->projet_id . ' | ' . $p->nom . ' > ' . $task->nom;
+ foreach ($d as $project_id => $p) {
+ foreach ($p['tasks'] as $task_id => $task_name) {
+ static::$_taskOptions[$invoicable][$task_id] = $project_id . ' | ' . $p['entry']->nom . ' > ' . $task_name;
}
}
}
return static::$_taskOptions[$invoicable];
}
+ public static function getInvoiceData($company)
+ {
+ if (null === static::$_projects) {
+ static::$_projects = static::_getProjects();
+ }
+ if (null === static::$_projectTasks) {
+ static::$_projectTasks = static::_getTasks();
+ }
+
+ $res = [];
+ foreach (static::$_projectTasks as $project => $tasks) {
+
+ if (!isset(static::$_projects[$project])) {
+ continue;
+ }
+ $p = static::$_projects[$project];
+ if (Permissions::getCompanyByUser($p->client) != $company) {
+ continue;
+ }
+
+ $res[$p->projet_id] = ['entry' => $p, 'tasks' => []];
+
+ foreach ($tasks as $id => $task) {
+ $res[$p->projet_id]['tasks'][$id] = $task->nom;
+ }
+ }
+
+ return $res;
+ }
+
protected function _postSetCrud()
{
$this->setAttribute('options', $this->getOptionsFiltered());
return $tasks;
});
}
+
+ public static function cleanCache()
+ {
+ Cache::forget('fluidbook_extranet_tasks');
+ Cache::forget('fluidbook_extranet_tasks_projects');
+ }
}
namespace App\Http\Controllers\Admin\Operations;
+use App\Fields\FluidbookExtranetTask;
use App\Models\FluidbookPublication;
use Illuminate\Support\Facades\Route;
{
protected function setupInvoiceRoutes($segment, $routeName, $controller)
{
- Route::match(['get'], $segment . '/{id}/invoice/dialog', $controller . '@dialog');
+ Route::match(['get'], $segment . '/{id}/invoice/dialog', $controller . '@dialogProject');
+ Route::match(['get'], $segment . '/{id}/invoice/dialog/{project}', $controller . '@dialogTask');
}
- public function dialog($id)
+ public function dialogProject($id)
{
$entry = FluidbookPublication::find($id);
- return view('invoice.dialog', ['entry' => $entry]);
+
+ if ($entry && $entry->invoicable_company) {
+ $invoicable = $entry->invoicable_company;
+ $data = FluidbookExtranetTask::getInvoiceData($invoicable);
+ }
+
+ return view('invoice.dialog_project', ['entry' => $entry, 'invoice' => $data]);
+ }
+
+ public function dialogTasj($id, $project)
+ {
+ $entry = FluidbookPublication::find($id);
+
+ if ($entry && $entry->invoicable_company) {
+ $invoicable = $entry->invoicable_company;
+ $data = FluidbookExtranetTask::getInvoiceData($invoicable);
+ }
+
+ return view('invoice.dialog_task', ['entry' => $entry, 'invoice' => $data]);
}
}
let select = $(Swal.getHtmlContainer()).find('select');
$(select).select2({
theme: 'bootstrap',
- ajax: {
- url: '{{backpack_url('select2')}}' + '/' + $(select).data('ajax'),
- dataType: 'json'
- },
escapeMarkup: function (m) {
return m;
}
+++ /dev/null
-{{$entry->id}}
--- /dev/null
+<form action="" method="post">
+ <div id="invoice_project">
+ {{__('Choisir un projet')}} : <select name="project">
+ <option value="">--</option>
+ @foreach($invoice as $project_id=>$project)
+ <option value="{{$project_id}}">#{{$project_id}} | {{$project['entry']->nom}}</option>
+ @endforeach
+ </select>
+ {{__('ou créer un nouveau projet')}} : <input type="text" name="project_new"/>
+ </div>
+
+</form>
--- /dev/null
+<form action="" method="post">
+ <div id="invoice_task">
+ {{__('Choisir une tâche')}} : <select name="task">
+ <option value="">--</option>
+ </select>
+ {{__('ou créer une nouvelle tâche')}} <input type="text" name="task_new"/>
+ {!! __('ayant un budget de :amount €',['amount'=>'<input type="text" name="task_amout">'])!!}
+ </div>
+</form>