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 '
';
+}
+
+
+/* ************************************************************************** */
+/* */
+/* 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 '| '.$langs->trans("Ref").' | ';
+ print $form->showrefnav($object, 'id', $linkback, 1, 'rowid', 'ref', '');
+ print ' |
';
+
+ // Label
+ print '| '.$langs->trans("Label").' | '.$object->label.' |
';
+
+ print "";
+ print '| '.$langs->trans("DatePayment").' | ';
+ print dol_print_date($object->datep,'day');
+ print ' |
';
+
+ print '| '.$langs->trans("DateValue").' | ';
+ print dol_print_date($object->datev,'day');
+ print ' |
';
+
+ print '| '.$langs->trans("Amount").' | '.price($object->amount,0,$outputlangs,1,-1,-1,$conf->currency).' |
';
+
+ if (! empty($conf->banque->enabled))
+ {
+ if ($object->fk_account > 0)
+ {
+ $bankline=new AccountLine($db);
+ $bankline->fetch($object->fk_bank);
+
+ print '';
+ print '| '.$langs->trans('BankTransactionLine').' | ';
+ print '';
+ print $bankline->getNomUrl(1,0,'showall');
+ 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 '
';
+
+ dol_fiche_end();
+
+
+ /*
+ * Action buttons
+ */
+ 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