* Copyright (C) 2013-2018 Alexandre Spangaro * Copyright (C) 2014 Florian Henry * * 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/card.php * \ingroup Advanced accountancy * \brief Card of accounting account */ require '../../main.inc.php'; require_once DOL_DOCUMENT_ROOT . '/core/lib/accounting.lib.php'; require_once DOL_DOCUMENT_ROOT . '/accountancy/class/accountingaccount.class.php'; require_once DOL_DOCUMENT_ROOT . '/accountancy/class/accountancysystem.class.php'; require_once DOL_DOCUMENT_ROOT . '/core/class/html.formaccounting.class.php'; $error = 0; // Load translation files required by the page $langs->loadLangs(array("bills","accountancy")); $mesg = ''; $action = GETPOST('action','aZ09'); $backtopage = GETPOST('backtopage','alpha'); $id = GETPOST('id', 'int'); $ref = GETPOST('ref', 'alpha'); $rowid = GETPOST('rowid', 'int'); $cancel = GETPOST('cancel','alpha'); $accountingaccount = GETPOST('accountingaccount','alpha'); // Security check $object = new AccountingAccount($db); /* * Action */ if (GETPOST('cancel','alpha')) { $urltogo=$backtopage?$backtopage:dol_buildpath('/accountancy/admin/account.php',1); header("Location: ".$urltogo); exit; } if ($action == 'add' && $user->rights->accounting->chartofaccount) { if (! $cancel) { $sql = 'SELECT pcg_version FROM ' . MAIN_DB_PREFIX . 'accounting_system WHERE rowid=' . $conf->global->CHARTOFACCOUNTS; dol_syslog('accountancy/admin/card.php:: $sql=' . $sql); $result = $db->query($sql); $obj = $db->fetch_object($result); // Clean code // To manage zero or not at the end of the accounting account if($conf->global->ACCOUNTING_MANAGE_ZERO == 1) { $account_number = GETPOST('account_number','string'); } else { $account_number = clean_account(GETPOST('account_number','string')); } if (GETPOST('account_parent','int') <= 0) { $account_parent = 0; } else { $account_parent = GETPOST('account_parent','int'); } $object->fk_pcg_version = $obj->pcg_version; $object->pcg_type = GETPOST('pcg_type','alpha'); $object->pcg_subtype = GETPOST('pcg_subtype','alpha'); $object->account_number = $account_number; $object->account_parent = $account_parent; $object->account_category = GETPOST('account_category','alpha'); $object->label = GETPOST('label', 'alpha'); $object->active = 1; $res = $object->create($user); if ($res == - 3) { $error = 1; $action = "create"; setEventMessages($object->error, $object->errors, 'errors'); } elseif ($res == - 4) { $error = 2; $action = "create"; setEventMessages($object->error, $object->errors, 'errors'); } elseif ($res < 0) { $error++; setEventMessages($object->error, $object->errors, 'errors'); $action = "create"; } if (! $error) { setEventMessages("RecordCreatedSuccessfully",null,'mesgs'); $urltogo=$backtopage?$backtopage:dol_buildpath('/accountancy/admin/account.php',1); header("Location: ".$urltogo); exit; } } } elseif ($action == 'edit' && $user->rights->accounting->chartofaccount) { if (! $cancel) { $result = $object->fetch($id); $sql = 'SELECT pcg_version FROM ' . MAIN_DB_PREFIX . 'accounting_system WHERE rowid=' . $conf->global->CHARTOFACCOUNTS; dol_syslog('accountancy/admin/card.php:: $sql=' . $sql); $result2 = $db->query($sql); $obj = $db->fetch_object($result2); // Clean code // To manage zero or not at the end of the accounting account if($conf->global->ACCOUNTING_MANAGE_ZERO == 1) { $account_number = GETPOST('account_number','string'); } else { $account_number = clean_account(GETPOST('account_number','string')); } if (GETPOST('account_parent','int') <= 0) { $account_parent = 0; } else { $account_parent = GETPOST('account_parent','int'); } $object->fk_pcg_version = $obj->pcg_version; $object->pcg_type = GETPOST('pcg_type','alpha'); $object->pcg_subtype = GETPOST('pcg_subtype','alpha'); $object->account_number = $account_number; $object->account_parent = $account_parent; $object->account_category = GETPOST('account_category','alpha'); $object->label = GETPOST('label', 'alpha'); $result = $object->update($user); if ($result > 0) { $urltogo=$backtopage?$backtopage:($_SERVER["PHP_SELF"]."?id=".$id); header("Location: " . $urltogo); exit(); } else { $mesg = $object->error; } } else { $urltogo=$backtopage?$backtopage:($_SERVER["PHP_SELF"]."?id=".$id); header("Location: " . $urltogo); exit(); } } elseif ($action == 'delete' && $user->rights->accounting->chartofaccount) { $result = $object->fetch($id); if (! empty($object->id)) { $result = $object->delete($user); if ($result > 0) { header("Location: account.php"); exit; } } if ($result < 0) { setEventMessages($object->error, $object->errors, 'errors'); } } /* * View */ $form = new Form($db); $formaccounting = new FormAccounting($db); $accountsystem = new AccountancySystem($db); $accountsystem->fetch($conf->global->CHARTOFACCOUNTS); $title = $langs->trans('AccountAccounting') ." - ". $langs->trans('Card'); $helpurl = ''; llxheader('', $title, $helpurl); // Create mode if ($action == 'create') { print load_fiche_titre($langs->trans('NewAccountingAccount')); print '
' . "\n"; print ''; print ''; dol_fiche_head(); print ''; // Chart of account print ''; print ''; // Account number print ''; print ''; // Label print ''; print ''; // Account parent print ''; print ''; // Category print ''; print ''; // Chart of accounts type print ''; print ''; // Chart of acounts subtype print ''; print ''; print '
' . $langs->trans("Chartofaccounts") . ''; print $accountsystem->ref; print '
' . $langs->trans("AccountNumber") . '
' . $langs->trans("Label") . '
' . $langs->trans("Accountparent") . ''; print $formaccounting->select_account($object->account_parent, 'account_parent', 1, null, 0, 0, 'minwidth200'); print '
' . $langs->trans("AccountingCategory") . ''; $formaccounting->select_accounting_category($object->account_category, 'account_category', 1, 0, 1); print '
' . $langs->trans("Pcgtype") . ''; print ''; print '
' . $langs->trans("Pcgsubtype") . ''; print ''; print '
'; dol_fiche_end(); print '
'; print ''; print '     '; print ''; print '
'; print '
'; } elseif ($id > 0 || $ref) { $result = $object->fetch($id, $ref, 1); if ($result > 0) { dol_htmloutput_mesg($mesg); $head = accounting_prepare_head($object); // Edit mode if ($action == 'update') { dol_fiche_head($head, 'card', $langs->trans('AccountAccounting'), 0, 'billr'); print '
' . "\n"; print ''; print ''; print ''; print ''; print ''; // Account number print ''; print ''; // Label print ''; print ''; // Account parent print ''; print ''; // Category print ''; print ''; // Chart of accounts type print ''; print ''; // Chart of accounts subtype print ''; print ''; print '
' . $langs->trans("AccountNumber") . '
' . $langs->trans("Label") . '
' . $langs->trans("Accountparent") . ''; print $formaccounting->select_account($object->account_parent, 'account_parent', 1); print '
'.$langs->trans("AccountingCategory").''; $formaccounting->select_accounting_category($object->account_category, 'account_category', 1); print '
' . $langs->trans("Pcgtype") . ''; print ''; print '
' . $langs->trans("Pcgsubtype") . ''; print ''; print '
'; dol_fiche_end(); print '
'; print ''; print '     '; print ''; print '
'; print '
'; } else { // View mode $linkback = '' . $langs->trans("BackToList") . ''; dol_fiche_head($head, 'card', $langs->trans('AccountAccounting'), -1, 'billr'); dol_banner_tab($object, 'ref', $linkback, 1, 'account_number', 'ref'); print '
'; print '
'; print ''; // Label print ''; print ''; // Account parent $accp = new AccountingAccount($db); if (! empty($object->account_parent)) { $accp->fetch($object->account_parent, ''); } print ''; print ''; // Category print ""; // Chart of accounts type print ''; print ''; // Chart of accounts subtype print ''; print ''; print '
' . $langs->trans("Label") . '' . $object->label . '
' . $langs->trans("Accountparent") . '' . $accp->account_number . ' - ' . $accp->label . '
".$langs->trans("AccountingCategory")."".$object->account_category_label."
' . $langs->trans("Pcgtype") . '' . $object->pcg_type . '
' . $langs->trans("Pcgsubtype") . '' . $object->pcg_subtype . '
'; print '
'; dol_fiche_end(); /* * Actions buttons */ print '
'; if (! empty($user->rights->accounting->chartofaccount)) { print '' . $langs->trans('Modify') . ''; } else { print '' . $langs->trans('Modify') . ''; } if (! empty($user->rights->accounting->chartofaccount)) { print '' . $langs->trans('Delete') . ''; } else { print '' . $langs->trans('Delete') . ''; } print '
'; } } else { dol_print_error($db, $object->error, $object->errors); } } // End of page llxFooter(); $db->close();