* Copyright (C) 2018-2025 Frédéric France * Copyright (C) 2025 MDW * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ /** * \file htdocs/accountancy/admin/fiscalyear_card.php * \ingroup Accountancy (Double entries) * \brief Page to show a fiscal year */ // Load Dolibarr environment require '../../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/fiscalyear.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/fiscalyear.class.php'; /** * @var Conf $conf * @var DoliDB $db * @var HookManager $hookmanager * @var Translate $langs * @var User $user */ // Load translation files required by the page $langs->loadLangs(array("admin", "compta")); // Get parameters $id = GETPOSTINT('id'); $ref = GETPOST('ref', 'alpha'); $action = GETPOST('action', 'aZ09'); $confirm = GETPOST('confirm', 'alpha'); $cancel = GETPOST('cancel', 'aZ09'); $contextpage = GETPOST('contextpage', 'aZ') ? GETPOST('contextpage', 'aZ') : str_replace('_', '', basename(dirname(__FILE__)).basename(__FILE__, '.php')); // To manage different context of search $backtopage = GETPOST('backtopage', 'alpha'); // if not set, a default page will be used $backtopageforcancel = GETPOST('backtopageforcancel', 'alpha'); // if not set, $backtopage will be used $dol_openinpopup = GETPOST('dol_openinpopup', 'aZ09'); $error = 0; // Initialize a technical objects $object = new Fiscalyear($db); $extrafields = new ExtraFields($db); // Load object include DOL_DOCUMENT_ROOT.'/core/actions_fetchobject.inc.php'; // Must be 'include', not 'include_once'. // List of status static $tmpstatus2label = array( '0' => 'OpenFiscalYear', '1' => 'CloseFiscalYear' ); $status2label = array( '' => '' ); foreach ($tmpstatus2label as $key => $val) { $status2label[$key] = $langs->trans($val); } $date_start = dol_mktime(0, 0, 0, GETPOSTINT('fiscalyearmonth'), GETPOSTINT('fiscalyearday'), GETPOSTINT('fiscalyearyear')); $date_end = dol_mktime(0, 0, 0, GETPOSTINT('fiscalyearendmonth'), GETPOSTINT('fiscalyearendday'), GETPOSTINT('fiscalyearendyear')); $permissiontoadd = $user->hasRight('accounting', 'fiscalyear', 'write'); // Security check if ($user->socid > 0) { accessforbidden(); } if (!$permissiontoadd) { // after this test $permissiontoadd is always true accessforbidden(); } /* * Actions */ $parameters = array(); $reshook = $hookmanager->executeHooks('doActions', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks if ($reshook < 0) { setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); } if ($action == 'confirm_delete' && $confirm == "yes" /* && $permissiontoadd // always true */) { $result = $object->delete($user); if ($result >= 0) { header("Location: fiscalyear.php"); exit(); } else { setEventMessages($object->error, $object->errors, 'errors'); } } elseif ($action == 'add' /* && $permissiontoadd // always true */) { if (!GETPOST('cancel', 'alpha')) { $error = 0; $object->date_start = $date_start; $object->date_end = $date_end; $object->label = GETPOST('label', 'alpha'); $object->status = GETPOSTINT('status'); $object->datec = dol_now(); if (empty($object->date_start) && empty($object->date_end)) { setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Date")), null, 'errors'); $error++; } if (empty($object->label)) { setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Label")), null, 'errors'); $error++; } if (!$error) { $db->begin(); $id = $object->create($user); if ($id > 0) { $db->commit(); header("Location: ".$_SERVER["PHP_SELF"]."?id=".$id); exit(); } else { $db->rollback(); setEventMessages($object->error, $object->errors, 'errors'); $action = 'create'; } } else { $action = 'create'; } } else { header("Location: ./fiscalyear.php"); exit(); } } elseif ($action == 'update' /* && $permissiontoadd // always true */) { // Update record if (!GETPOST('cancel', 'alpha')) { $result = $object->fetch($id); $object->date_start = GETPOST("fiscalyear") ? $date_start : ''; $object->date_end = GETPOST("fiscalyearend") ? $date_end : ''; $object->label = GETPOST('label', 'alpha'); $object->status = GETPOSTINT('status'); $result = $object->update($user); if ($result > 0) { header("Location: ".$_SERVER["PHP_SELF"]."?id=".$id); exit(); } else { setEventMessages($object->error, $object->errors, 'errors'); } } else { header("Location: ".$_SERVER["PHP_SELF"]."?id=".$id); exit(); } } elseif ($action == 'reopen' /* && $permissiontoadd // always true */ && getDolGlobalString('ACCOUNTING_CAN_REOPEN_CLOSED_PERIOD')) { $result = $object->fetch($id); $object->status = GETPOSTINT('status'); $result = $object->update($user); if ($result > 0) { header("Location: ".$_SERVER["PHP_SELF"]."?id=".$id); exit(); } else { setEventMessages($object->error, $object->errors, 'errors'); } } /* * View */ $form = new Form($db); $title = $langs->trans("Fiscalyear")." - ".$langs->trans("Card"); if ($action == 'create') { $title = $langs->trans("NewFiscalYear"); } $help_url = 'EN:Module_Double_Entry_Accounting#Setup|FR:Module_Comptabilité_en_Partie_Double#Configuration'; llxHeader('', $title, $help_url, '', 0, 0, '', '', '', 'mod-accountancy page-fiscalyear'); if ($action == 'create') { print load_fiche_titre($title, '', 'object_'.$object->picto); print '
'; print ''; print ''; print dol_get_fiche_head(array(), ''); print ''."\n"; // Label print ''; // Date start print ''; // Date end print ''; /* // Status print ''; print ''; print ''; */ // Common attributes //include DOL_DOCUMENT_ROOT.'/core/tpl/commonfields_add.tpl.php'; // Other attributes //include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_add.tpl.php'; print '
'.$langs->trans("Label").'
'.$langs->trans("DateStart").''; print $form->selectDate(($date_start ? $date_start : ''), 'fiscalyear'); print '
'.$langs->trans("DateEnd").''; print $form->selectDate(($date_end ? $date_end : - 1), 'fiscalyearend'); print '
' . $langs->trans("Status") . ''; print $form->selectarray('status', $status2label, GETPOST('status', 'int')); print '
'."\n"; print dol_get_fiche_end(); print $form->buttonsSaveCancel("Create"); print '
'; dol_set_focus('input[name="label"]'); } // Part to edit record if (($id || $ref) && $action == 'edit') { print load_fiche_titre($langs->trans("Fiscalyear"), '', 'object_'.$object->picto); print '
'."\n"; print ''; print ''; print ''; if ($backtopage) { print ''; } if ($backtopageforcancel) { print ''; } print dol_get_fiche_head(); print ''."\n"; // Ref print ""; print ''; // Label print ''; // Date start print ''; // Date end print ''; // Status print ''; // Common attributes //include DOL_DOCUMENT_ROOT.'/core/tpl/commonfields_edit.tpl.php'; // Other attributes //include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_edit.tpl.php'; print '
'.$langs->trans("Ref").''; print $object->ref; print '
'.$langs->trans("Label").''; print ''; print '
'.$langs->trans("DateStart").''; print $form->selectDate($object->date_start ? $object->date_start : - 1, 'fiscalyear'); print '
'.$langs->trans("DateEnd").''; print $form->selectDate($object->date_end ? $object->date_end : - 1, 'fiscalyearend'); print '
'.$langs->trans("Status").''; print $object->getLibStatut(4); print '
'; print dol_get_fiche_end(); print $form->buttonsSaveCancel(); print '
'; } // Part to show record if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'create'))) { $head = fiscalyear_prepare_head($object); print dol_get_fiche_head($head, 'card', $langs->trans("Fiscalyear"), -1, $object->picto, 0, '', '', 0, '', 1); $morehtmlref = ''; //$morehtmlref .= '
'; //$morehtmlref .= '
'; $formconfirm = ''; // Confirmation to delete if ($action == 'delete') { $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"]."?id=".$object->id, $langs->trans("DeleteFiscalYear"), $langs->trans("ConfirmDeleteFiscalYear"), "confirm_delete", '', 0, 1); } // Print form confirm print $formconfirm; // Object card // ------------------------------------------------------------ $linkback = ''.$langs->trans("BackToList").''; dol_banner_tab($object, 'ref', $linkback, 1, 'ref', 'ref', $morehtmlref); print '
'; print '
'; print '
'; print ''."\n"; // Label print '"; // Date start print ''; // Date end print ''; print '
'; print $form->editfieldkey("Label", 'label', $object->label, $object, 0, 'alpha:32'); print ''; print $form->editfieldval("Label", 'label', $object->label, $object, 0, 'alpha:32'); print "
'; print $form->editfieldkey("DateStart", 'date_start', (string) $object->date_start, $object, 0, 'datepicker'); print ''; print $form->editfieldval("DateStart", 'date_start', $object->date_start, $object, 0, 'datepicker'); print '
'; print $form->editfieldkey("DateEnd", 'date_end', (string) $object->date_end, $object, 0, 'datepicker'); print ''; print $form->editfieldval("DateEnd", 'date_end', $object->date_end, $object, 0, 'datepicker'); print '
'; print '
'; print '
'; print '
'; print dol_get_fiche_end(); /* * Action bar */ if ($user->hasRight('accounting', 'fiscalyear', 'write')) { print '
'; if (getDolGlobalString('ACCOUNTING_CAN_REOPEN_CLOSED_PERIOD') && $object->status == $object::STATUS_CLOSED) { print dolGetButtonAction($langs->trans("ReOpen"), '', 'reopen', $_SERVER["PHP_SELF"].'?id='.$object->id.'&action=reopen&token='.newToken(), 'reopen', (int) $permissiontoadd); } print ''.$langs->trans('Modify').''; //print dolGetButtonAction($langs->trans("Delete"), '', 'delete', $_SERVER["PHP_SELF"].'?id='.$object->id.'&action=delete&token='.newToken(), 'delete', $permissiontodelete); print '
'; } } // End of page llxFooter(); $db->close();