diff --git a/htdocs/compta/bank/bankentries.php b/htdocs/compta/bank/bankentries.php index 3fabed83d93..81bd829b8f5 100644 --- a/htdocs/compta/bank/bankentries.php +++ b/htdocs/compta/bank/bankentries.php @@ -414,7 +414,7 @@ if ($id > 0 || ! empty($ref)) print '
'; if ($user->rights->banque->modifier) { - print ''.$langs->trans("AddBankRecord").''; + print ''.$langs->trans("AddBankRecord").''; } else { print ''.$langs->trans("AddBankRecord").''; } diff --git a/htdocs/compta/bank/various_payment/card.php b/htdocs/compta/bank/various_payment/card.php new file mode 100644 index 00000000000..4e95cd0b402 --- /dev/null +++ b/htdocs/compta/bank/various_payment/card.php @@ -0,0 +1,389 @@ + + * + * 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/compta/bank/various_expenses/card.php + * \ingroup bank + * \brief Page of various expenses + */ + +require '../../../main.inc.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/bank.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/paymentvarious.class.php'; +require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; +if (! empty($conf->accounting->enabled)) require_once DOL_DOCUMENT_ROOT.'/core/lib/accounting.lib.php'; +if (! empty($conf->accounting->enabled)) require_once DOL_DOCUMENT_ROOT.'/accountancy/class/html.formventilation.class.php'; + +$langs->load("compta"); +$langs->load("banks"); +$langs->load("bills"); +$langs->load("users"); +$langs->load("accountancy"); + +$id=GETPOST("id",'int'); +$action=GETPOST('action','alpha'); +$cancel=GETPOST('cancel','alpha'); +$accountid=GETPOST("accountid") > 0 ? GETPOST("accountid","int") : 0; +$label=GETPOST("label","alpha"); +$sens=GETPOST("sens","int"); +$amount=GETPOST("amount"); +$paymenttype=GETPOST("paymenttype"); +$accountancy_code=GETPOST("accountancy_code","int"); + +// Security check +$socid = GETPOST("socid","int"); +if ($user->societe_id) $socid=$user->societe_id; +$result = restrictedArea($user, 'banque', '', '', ''); + +$object = new PaymentVarious($db); + +// Initialize technical object to manage hooks of thirdparties. Note that conf->hooks_modules contains array array +$hookmanager->initHooks(array('variouscard','globalcard')); + + + +/** + * Actions + */ + +if (! empty($cancel)) +{ + header("Location: index.php"); + exit; +} + +if ($action == 'add' && empty($cancel)) +{ + $error=0; + + $datep=dol_mktime(12,0,0, GETPOST("datepmonth"), GETPOST("datepday"), GETPOST("datepyear")); + $datev=dol_mktime(12,0,0, GETPOST("datevmonth"), GETPOST("datevday"), GETPOST("datevyear")); + if (empty($datev)) $datev=$datep; + + $object->accountid=GETPOST("accountid") > 0 ? GETPOST("accountid","int") : 0; + $object->datev=$datev; + $object->datep=$datep; + $object->amount=price2num(GETPOST("amount")); + $object->label=GETPOST("label"); + $object->note=GETPOST("note"); + $object->type_payment=GETPOST("paymenttype") > 0 ? GETPOST("paymenttype", "int") : 0; + $object->num_payment=GETPOST("num_payment"); + $object->fk_user_author=$user->id; + $object->accountancy_code=GETPOST("accountancy_code") > 0 ? GETPOST("accountancy_code","int") : ""; + + if (empty($datep) || empty($datev)) + { + setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Date")), null, 'errors'); + $error++; + } + if (empty($object->type_payment) || $object->type_payment < 0) + { + setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("PaymentMode")), null, 'errors'); + $error++; + } + if (empty($object->amount)) + { + setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Amount")), null, 'errors'); + $error++; + } + if (! empty($conf->banque->enabled) && ! $object->accountid > 0) + { + setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("BankAccount")), null, 'errors'); + $error++; + } + + if (! $error) + { + $db->begin(); + + $ret=$object->create($user); + if ($ret > 0) + { + $db->commit(); + header("Location: index.php"); + exit; + } + else + { + $db->rollback(); + setEventMessages($object->error, $object->errors, 'errors'); + $action="create"; + } + } + + $action='create'; +} + +if ($action == 'delete') +{ + $result=$object->fetch($id); + + if ($object->rappro == 0) + { + $db->begin(); + + $ret=$object->delete($user); + if ($ret > 0) + { + if ($object->fk_bank) + { + $accountline=new AccountLine($db); + $result=$accountline->fetch($object->fk_bank); + if ($result > 0) $result=$accountline->delete($user); // $result may be 0 if not found (when bank entry was deleted manually and fk_bank point to nothing) + } + + if ($result >= 0) + { + $db->commit(); + header("Location: ".DOL_URL_ROOT.'/compta/salaries/index.php'); + exit; + } + else + { + $object->error=$accountline->error; + $db->rollback(); + setEventMessages($object->error, $object->errors, 'errors'); + } + } + else + { + $db->rollback(); + setEventMessages($object->error, $object->errors, 'errors'); + } + } + else + { + setEventMessages('Error try do delete a line linked to a conciliated bank transaction', null, 'errors'); + } +} + + +/* + * View + */ + +llxHeader("",$langs->trans("VariousPayment")); + +$form = new Form($db); +if (! empty($conf->accounting->enabled)) $formaccountancy = New FormVentilation($db); + +if ($id) +{ + $object = new PaymentVarious($db); + $result = $object->fetch($id); + if ($result <= 0) + { + dol_print_error($db); + exit; + } +} + +/* ************************************************************************** */ +/* */ +/* Create mode */ +/* */ +/* ************************************************************************** */ +if ($action == 'create') +{ + print '
'; + print ''; + print ''; + + print load_fiche_titre($langs->trans("NewVariousPayment"),'', 'title_accountancy.png'); + + dol_fiche_head('', ''); + + print ''; + + // Date payment + print ''; + + // Date value for bank + print ''; + + // Label + print ''; + + // Sens + print ''; + + // Amount + print ''; + + // Bank + if (! empty($conf->banque->enabled)) + { + print ''; + } + + // Type payment + print ''; + + // Number + if (! empty($conf->banque->enabled)) + { + // Number + print ''; + print ''."\n"; + } + + // Accountancy account + if (! empty($conf->accounting->enabled)) + { + print ''; + print ''; + } + else // For external software + { + print ''; + print ''; + } + + // Other attributes + $parameters=array('colspan' => ' colspan="1"'); + $reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$object,$action); // Note that $action and $object may have been modified by hook + + print '
'; + print fieldLabel('DatePayment','datep',1).''; + print $form->select_date((empty($datep)?-1:$datep),"datep",'','','','add',1,1); + print '
'; + print fieldLabel('DateValue','datev',0).''; + print $form->select_date((empty($datev)?-1:$datev),"datev",'','','','add',1,1); + print '
'; + print fieldLabel('Label','label',1).''; + print 'trans("VariousPayment")).'">'; + print '
'; + print fieldLabel('Sens','sens',1).''; + $sensarray=array( '0' => $langs->trans("Debit"), '1' => $langs->trans("Credit")); + print $form->selectarray('sens',$sensarray,$sens); + print '
'; + print fieldLabel('Amount','amount',1).''; + print ''; + print '
'; + print fieldLabel('BankAccount','selectaccountid',1).''; + $form->select_comptes($accountid,"accountid",0,'',1); // Affiche liste des comptes courant + print '
'; + print fieldLabel('PaymentMode','selectpaymenttype',1).''; + $form->select_types_paiements($paymenttype, "paymenttype"); + print '
'.$langs->trans("AccountAccounting").''; + print $formaccountancy->select_account($accountancy_code, 'accountancy_code', 1, null, 1, 1, ''); + print '
'.$langs->trans("AccountAccounting").''; + print '
'; + + dol_fiche_end(); + + print '
'; + print ''; + print '     '; + print ''; + print '
'; + + print '
'; +} + + +/* ************************************************************************** */ +/* */ +/* View mode */ +/* */ +/* ************************************************************************** */ + +if ($id) +{ + + $head=various_payement_prepare_head($object); + + dol_fiche_head($head, 'card', $langs->trans("VariousPayment"), 0, 'payment'); + + print ''; + + $linkback = ''.$langs->trans("BackToList").''; + + print ""; + print ''; + + // Label + print ''; + + print ""; + print ''; + + print ''; + + print ''; + + if (! empty($conf->banque->enabled)) + { + if ($object->fk_account > 0) + { + $bankline=new AccountLine($db); + $bankline->fetch($object->fk_bank); + + print ''; + print ''; + print ''; + print ''; + } + } + + // Other attributes + $parameters=array('colspan' => ' colspan="3"'); + $reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$object,$action); // Note that $action and $object may have been modified by hook + + print '
'.$langs->trans("Ref").''; + print $form->showrefnav($object, 'id', $linkback, 1, 'rowid', 'ref', ''); + print '
'.$langs->trans("Label").''.$object->label.'
'.$langs->trans("DatePayment").''; + print dol_print_date($object->datep,'day'); + print '
'.$langs->trans("DateValue").''; + print dol_print_date($object->datev,'day'); + print '
'.$langs->trans("Amount").''.price($object->amount,0,$outputlangs,1,-1,-1,$conf->currency).'
'.$langs->trans('BankTransactionLine').''; + print $bankline->getNomUrl(1,0,'showall'); + print '
'; + + dol_fiche_end(); + + + /* + * Action buttons + */ + print '
'."\n"; + if ($object->rappro == 0) + { + if (! empty($user->rights->salaries->delete)) + { + print ''.$langs->trans("Delete").''; + } + else + { + print ''.$langs->trans("Delete").''; + } + } + else + { + print ''.$langs->trans("Delete").''; + } + print "
"; +} + + + +llxFooter(); + +$db->close(); diff --git a/htdocs/langs/en_US/banks.lang b/htdocs/langs/en_US/banks.lang index a6071e38fa5..00c0b26bb4b 100644 --- a/htdocs/langs/en_US/banks.lang +++ b/htdocs/langs/en_US/banks.lang @@ -149,4 +149,7 @@ CheckRejected=Check returned CheckRejectedAndInvoicesReopened=Check returned and invoices reopened BankAccountModelModule=Document templates for bank accounts DocumentModelSepaMandate=Template of SEPA mandate. Usefull for european countries in EEC only. -DocumentModelBan=Template to print a page with BAN information. +DocumentModelBan=Template to print a page with BAN information. +NewVariousPayment=New various payment +VariousPayment=Various payment +ShowVariousPayment=Show various payment