30require
'../main.inc.php';
31require_once DOL_DOCUMENT_ROOT.
'/recruitment/class/recruitmentjobposition.class.php';
32require_once DOL_DOCUMENT_ROOT.
'/recruitment/class/recruitmentcandidature.class.php';
33require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formfile.class.php';
44$langs->loadLangs(array(
"recruitment",
"boxes"));
46$action =
GETPOST(
'action',
'aZ09');
53if (!empty($user->socid) && $user->socid > 0) {
55 $socid = $user->socid;
64restrictedArea($user,
'recruitment', 0,
'recruitment_recruitmentjobposition',
'recruitmentjobposition',
'',
'rowid');
83llxHeader(
"", $langs->trans(
"RecruitmentArea"));
85print
load_fiche_titre($langs->trans(
"RecruitmentArea"),
'',
'object_recruitmentjobposition');
87print
'<div class="fichecenter"><div class="fichethirdleft">';
94if (
$conf->use_javascript_ajax) {
95 $sql =
"SELECT COUNT(t.rowid) as nb, status";
96 $sql .=
" FROM ".MAIN_DB_PREFIX.
"recruitment_recruitmentjobposition as t";
97 $sql .=
" GROUP BY t.status";
98 $sql .=
" ORDER BY t.status ASC";
99 $resql =
$db->query($sql);
110 include DOL_DOCUMENT_ROOT.
'/theme/'.
$conf->theme.
'/theme_vars.inc.php';
112 $num =
$db->num_rows($resql);
116 $dataseries = array();
117 $colorseries = array();
122 $obj =
$db->fetch_object($resql);
124 $vals[$obj->status] = $obj->nb;
126 $totalnb += $obj->nb;
132 print
'<div class="div-table-responsive-no-min">';
133 print
'<table class="noborder nohover centpercent">';
134 print
'<tr class="liste_titre"><th colspan="2">'.$langs->trans(
"Statistics").
' - '.$langs->trans(
"JobPositions").
'</th></tr>'.
"\n";
135 $listofstatus = array(0, 1, 3, 9);
136 foreach ($listofstatus as $status) {
137 $dataseries[] = array(
dol_html_entity_decode($staticrecruitmentjobposition->LibStatut($status, 1), ENT_QUOTES | ENT_HTML5), (isset($vals[$status]) ? (
int) $vals[$status] : 0));
139 $colorseries[$status] =
'-'.$badgeStatus0;
142 $colorseries[$status] = $badgeStatus4;
145 $colorseries[$status] = $badgeStatus6;
148 $colorseries[$status] = $badgeStatus9;
151 if (empty(
$conf->use_javascript_ajax)) {
152 print
'<tr class="oddeven">';
153 print
'<td>'.$staticrecruitmentjobposition->LibStatut($status, 0).
'</td>';
154 print
'<td class="right"><a href="list.php?statut='.$status.
'">'.(isset($vals[$status]) ? $vals[$status] : 0).
'</a></td>';
158 print
'<tr><td class="center" colspan="2">';
160 include_once DOL_DOCUMENT_ROOT.
'/core/class/dolgraph.class.php';
162 $dolgraph->SetData($dataseries);
163 $dolgraph->SetDataColor(array_values($colorseries));
164 $dolgraph->setShowLegend(2);
165 $dolgraph->setShowPercent(1);
166 $dolgraph->SetType(array(
'pie'));
167 $dolgraph->SetHeight(
'200');
168 $dolgraph->draw(
'idgraphstatus');
169 print $dolgraph->show($totalnb ? 0 : 1);
180 $sql =
"SELECT COUNT(t.rowid) as nb, status";
181 $sql .=
" FROM ".MAIN_DB_PREFIX.
"recruitment_recruitmentcandidature as t";
182 $sql .=
" GROUP BY t.status";
183 $sql .=
" ORDER BY t.status ASC";
184 $resql =
$db->query($sql);
187 $num =
$db->num_rows($resql);
191 $dataseries = array();
192 $colorseries = array();
196 $obj =
$db->fetch_object($resql);
198 $vals[$obj->status] = $obj->nb;
200 $totalnb += $obj->nb;
206 print
'<div class="div-table-responsive-no-min">';
207 print
'<table class="noborder nohover centpercent">';
208 print
'<tr class="liste_titre"><th colspan="2">'.$langs->trans(
"Statistics").
' - '.$langs->trans(
"RecruitmentCandidatures").
'</th></tr>'.
"\n";
209 $listofstatus = array(0, 1, 3, 5, 8, 9);
210 foreach ($listofstatus as $status) {
211 $dataseries[] = array(
dol_html_entity_decode($staticrecruitmentcandidature->LibStatut($status, 1), ENT_QUOTES | ENT_HTML5), (isset($vals[$status]) ? (
int) $vals[$status] : 0));
212 if ($status == RecruitmentCandidature::STATUS_DRAFT) {
213 $colorseries[$status] =
'-'.$badgeStatus0;
215 if ($status == RecruitmentCandidature::STATUS_VALIDATED) {
216 $colorseries[$status] = $badgeStatus1;
218 if ($status == RecruitmentCandidature::STATUS_CONTRACT_PROPOSED) {
219 $colorseries[$status] = $badgeStatus4;
221 if ($status == RecruitmentCandidature::STATUS_CONTRACT_SIGNED) {
222 $colorseries[$status] = $badgeStatus5;
224 if ($status == RecruitmentCandidature::STATUS_REFUSED) {
225 $colorseries[$status] = $badgeStatus9;
227 if ($status == RecruitmentCandidature::STATUS_CANCELED) {
228 $colorseries[$status] = $badgeStatus9;
231 if (empty(
$conf->use_javascript_ajax)) {
232 print
'<tr class="oddeven">';
233 print
'<td>'.$staticrecruitmentcandidature->LibStatut($status, 0).
'</td>';
234 print
'<td class="right"><a href="list.php?statut='.$status.
'">'.(isset($vals[$status]) ? $vals[$status] : 0).
'</a></td>';
238 print
'<tr><td class="center" colspan="2">';
240 include_once DOL_DOCUMENT_ROOT.
'/core/class/dolgraph.class.php';
242 $dolgraph->SetData($dataseries);
243 $dolgraph->SetDataColor(array_values($colorseries));
244 $dolgraph->setShowLegend(2);
245 $dolgraph->setShowPercent(1);
246 $dolgraph->SetType(array(
'pie'));
247 $dolgraph->SetHeight(
'200');
248 $dolgraph->draw(
'idgraphstatuscandidature');
249 print $dolgraph->show($totalnb ? 0 : 1);
342print
'</div><div class="fichetwothirdright">';
346if (
isModEnabled(
'recruitment') && $user->hasRight(
'recruitment',
'recruitmentjobposition',
'read')) {
347 $sql =
"SELECT s.rowid, s.ref, s.label, s.date_creation, s.tms, s.status, COUNT(rc.rowid) as nbapplications";
348 $sql .=
" FROM ".MAIN_DB_PREFIX.
"recruitment_recruitmentjobposition as s";
349 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"recruitment_recruitmentcandidature as rc ON rc.fk_recruitmentjobposition = s.rowid";
350 if (
isModEnabled(
'societe') && !$user->hasRight(
'societe',
'client',
'voir') && !$socid) {
351 $sql .=
", ".MAIN_DB_PREFIX.
"societe_commerciaux as sc";
353 $sql .=
" WHERE s.entity IN (".getEntity($staticrecruitmentjobposition->element).
")";
354 if (
isModEnabled(
'societe') && !$user->hasRight(
'societe',
'client',
'voir') && !$socid) {
355 $sql .=
" AND s.fk_soc = sc.fk_soc AND sc.fk_user = ".((int) $user->id);
358 $sql .=
" AND s.fk_soc = ".((int) $socid);
360 $sql .=
" GROUP BY s.rowid, s.ref, s.label, s.date_creation, s.tms, s.status";
361 $sql .=
$db->order(
's.tms',
'DESC');
362 $sql .=
$db->plimit($max, 0);
364 $resql =
$db->query($sql);
366 $num =
$db->num_rows($resql);
369 print
'<div class="div-table-responsive-no-min">';
370 print
'<table class="noborder centpercent">';
371 print
'<tr class="liste_titre">';
372 print
'<th colspan="2">';
373 print $langs->trans(
"BoxTitleLatestModifiedJobPositions", $max);
375 print
'<th class="right">';
376 print $langs->trans(
"Applications");
378 print
'<th class="right" colspan="2"><a href="'.DOL_URL_ROOT.
'/recruitment/recruitmentjobposition_list.php?sortfield=t.tms&sortorder=DESC">'.$langs->trans(
"FullList").
'</th>';
382 $objp =
$db->fetch_object($resql);
383 $staticrecruitmentjobposition->id = $objp->rowid;
384 $staticrecruitmentjobposition->ref = $objp->ref;
385 $staticrecruitmentjobposition->label = $objp->label;
386 $staticrecruitmentjobposition->status = $objp->status;
387 $staticrecruitmentjobposition->date_creation = $objp->date_creation;
389 print
'<tr class="oddeven">';
390 print
'<td class="nowrap">'.$staticrecruitmentjobposition->getNomUrl(1,
'').
'</td>';
391 print
'<td class="right nowrap">';
393 print
'<td class="right">';
394 print $objp->nbapplications;
396 print
'<td class="right nowrap">'.dol_print_date(
$db->jdate($objp->tms),
'day').
"</td>";
397 print
'<td class="right nowrap" width="16">';
398 print $staticrecruitmentjobposition->getLibStatut(3);
406 print
'<tr class="oddeven"><td colspan="4"><span class="opacitymedium">'.$langs->trans(
"None").
'</span></td></tr>';
417if (
isModEnabled(
'recruitment') && $user->hasRight(
'recruitment',
'recruitmentjobposition',
'read')) {
418 $sql =
"SELECT rc.rowid, rc.ref, rc.email, rc.lastname, rc.firstname, rc.date_creation, rc.tms, rc.status";
419 $sql .=
" FROM ".MAIN_DB_PREFIX.
"recruitment_recruitmentcandidature as rc";
420 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"recruitment_recruitmentjobposition as s ON rc.fk_recruitmentjobposition = s.rowid";
421 if (
isModEnabled(
'societe') && !$user->hasRight(
'societe',
'client',
'voir') && !$socid) {
422 $sql .=
", ".MAIN_DB_PREFIX.
"societe_commerciaux as sc";
424 $sql .=
" WHERE rc.entity IN (".getEntity($staticrecruitmentjobposition->element).
")";
425 if (
isModEnabled(
'societe') && !$user->hasRight(
'societe',
'client',
'voir') && !$socid) {
426 $sql .=
" AND s.fk_soc = sc.fk_soc AND sc.fk_user = ".((int) $user->id);
429 $sql .=
" AND s.fk_soc = ".((int) $socid);
431 $sql .=
$db->order(
'rc.tms',
'DESC');
432 $sql .=
$db->plimit($max, 0);
434 $resql =
$db->query($sql);
436 $num =
$db->num_rows($resql);
439 print
'<div class="div-table-responsive-no-min">';
440 print
'<table class="noborder centpercent">';
441 print
'<tr class="liste_titre">';
442 print
'<th colspan="2">';
443 print $langs->trans(
"BoxTitleLatestModifiedCandidatures", $max);
445 print
'<th class="right" colspan="2"><a href="'.DOL_URL_ROOT.
'/recruitment/recruitmentcandidature_list.php?sortfield=t.tms&sortorder=DESC">'.$langs->trans(
"FullList").
'</th>';
449 $objp =
$db->fetch_object($resql);
450 $staticrecruitmentcandidature->id = $objp->rowid;
451 $staticrecruitmentcandidature->ref = $objp->ref;
452 $staticrecruitmentcandidature->email = $objp->email;
453 $staticrecruitmentcandidature->status = $objp->status;
454 $staticrecruitmentcandidature->date_creation = $objp->date_creation;
455 $staticrecruitmentcandidature->firstname = $objp->firstname;
456 $staticrecruitmentcandidature->lastname = $objp->lastname;
458 print
'<tr class="oddeven">';
459 print
'<td class="nowrap">'.$staticrecruitmentcandidature->getNomUrl(1,
'').
'</td>';
460 print
'<td class="right nowrap">';
462 print
'<td class="right nowrap">'.dol_print_date(
$db->jdate($objp->tms),
'day').
"</td>";
463 print
'<td class="right nowrap" width="16">';
464 print $staticrecruitmentcandidature->getLibStatut(3);
472 print
'<tr class="oddeven"><td colspan="4"><span class="opacitymedium">'.$langs->trans(
"None").
'</span></td></tr>';
llxFooter($comment='', $zone='private', $disabledoutputofmessages=0)
Empty footer.
if(!defined('NOREQUIRESOC')) if(!defined( 'NOREQUIRETRAN')) if(!defined('NOTOKENRENEWAL')) if(!defined( 'NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined( 'NOREQUIREAJAX')) llxHeader($head='', $title='', $help_url='', $target='', $disablejs=0, $disablehead=0, $arrayofjs='', $arrayofcss='', $morequerystring='', $morecssonbody='', $replacemainareaby='', $disablenofollow=0, $disablenoindex=0)
Empty header.
Class for RecruitmentCandidature.
Class for RecruitmentJobPosition.
const STATUS_VALIDATED
Validated.
const STATUS_RECRUITED
Recruited.
const STATUS_CANCELED
Canceled.
const STATUS_DRAFT
Draft status.
dol_html_entity_decode($a, $b, $c='UTF-8', $keepsomeentities=0)
Replace html_entity_decode functions to manage errors.
dol_now($mode='gmt')
Return date for now.
getDolUserInt($key, $default=0, $tmpuser=null)
Return Dolibarr user constant int value.
getDolGlobalInt($key, $default=0)
Return a Dolibarr global constant int value.
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0, $nodefault=0)
Return value of a param into GET or POST supervariable.
GETPOSTINT($paramname, $method=0, $nodefault=0)
Return the value of a $_GET or $_POST supervariable, converted into integer.
dol_print_error($db=null, $error='', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
load_fiche_titre($title, $morehtmlright='', $picto='generic', $pictoisfullpath=0, $id='', $morecssontable='', $morehtmlcenter='', $morecssonpicto='widthpictotitle')
Load a title with picto.
isModEnabled($module)
Is Dolibarr module enabled.
restrictedArea(User $user, $features, $object=0, $tableandshare='', $feature2='', $dbt_keyfield='fk_soc', $dbt_select='rowid', $isdraft=0, $mode=0)
Check permissions of a user to show a page and an object.