30require
'../../main.inc.php';
31require_once DOL_DOCUMENT_ROOT.
'/core/lib/accounting.lib.php';
32require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/bookkeeping.class.php';
33require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formaccounting.class.php';
34require_once DOL_DOCUMENT_ROOT.
'/compta/facture/class/facture.class.php';
35require_once DOL_DOCUMENT_ROOT.
'/fourn/class/fournisseur.facture.class.php';
36require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/accountingjournal.class.php';
37require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/accountingaccount.class.php';
38require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/lettering.class.php';
41$langs->loadLangs(array(
"accountancy",
"bills",
"compta"));
43$action =
GETPOST(
'action',
'aZ09');
44$cancel =
GETPOST(
'cancel',
'aZ09');
45$confirm =
GETPOST(
'confirm',
'alpha');
47$optioncss =
GETPOST(
'optioncss',
'aZ');
56$accountingaccount_number =
GETPOST(
'accountingaccount_number',
'alphanohtml');
57$accountingaccount->fetch(0, $accountingaccount_number,
true);
58$accountingaccount_label = $accountingaccount->label;
60$journal_code =
GETPOST(
'code_journal',
'alpha');
61$accountingjournal->fetch(0, $journal_code);
62$journal_label = $accountingjournal->label;
64$subledger_account =
GETPOST(
'subledger_account',
'alphanohtml');
65if ($subledger_account == -1) {
66 $subledger_account =
null;
68$subledger_label =
GETPOST(
'subledger_label',
'alphanohtml');
70$label_operation =
GETPOST(
'label_operation',
'alphanohtml');
74$save =
GETPOST(
'save',
'alpha');
78$update =
GETPOST(
'update',
'alpha');
80 $action =
'confirm_update';
84$hookmanager->initHooks(array(
'bookkeepingcard',
'globalcard'));
89if (!isModEnabled(
'accounting')) {
92if ($user->socid > 0) {
95if (!$user->hasRight(
'accounting',
'mouvements',
'lire')) {
99$permissiontoadd = $user->hasRight(
'accounting',
'mouvements',
'creer');
100$permissiontodelete = $user->hasRight(
'accounting',
'mouvements',
'supprimer');
107$parameters = array();
108$reshook = $hookmanager->executeHooks(
'doActions', $parameters,
$object, $action);
112if (empty($reshook)) {
114 header(
"Location: ".DOL_URL_ROOT.
'/accountancy/bookkeeping/list.php');
118 if ($action ==
"confirm_update" && $permissiontoadd) {
121 if (((
float) $debit != 0.0) && ((
float) $credit != 0.0)) {
126 if (empty($accountingaccount_number) || $accountingaccount_number ==
'-1') {
128 setEventMessages($langs->trans(
'ErrorFieldRequired', $langs->transnoentitiesnoconv(
"AccountAccountingShort")),
null,
'errors');
135 $result =
$object->fetch($id,
null, $mode);
140 $object->numero_compte = $accountingaccount_number;
141 $object->subledger_account = $subledger_account;
142 $object->subledger_label = $subledger_label;
143 $object->label_compte = $accountingaccount_label;
144 $object->label_operation = $label_operation;
148 if ((
float) $debit != 0.0) {
153 if ((
float) $credit != 0.0) {
159 $result =
$object->update($user,
false, $mode);
163 if ($mode !=
'_tmp') {
174 } elseif ($action ==
"add" && $permissiontoadd) {
177 if (((
float) $debit != 0.0) && ((
float) $credit != 0.0)) {
182 if (empty($accountingaccount_number) || $accountingaccount_number ==
'-1') {
184 setEventMessages($langs->trans(
'ErrorFieldRequired', $langs->transnoentitiesnoconv(
"AccountAccountingShort")),
null,
'errors');
191 $object->numero_compte = $accountingaccount_number;
192 $object->subledger_account = $subledger_account;
193 $object->subledger_label = $subledger_label;
194 $object->label_compte = $accountingaccount_label;
195 $object->label_operation = $label_operation;
200 $object->piece_num = $piece_num;
202 $object->code_journal = $journal_code;
203 $object->journal_label = $journal_label;
207 if ((
float) $debit != 0.0) {
213 if ((
float) $credit != 0.0) {
219 $result =
$object->createStd($user,
false, $mode);
224 if ($mode !=
'_tmp') {
234 } elseif ($action ==
"confirm_delete" && $permissiontoadd) {
237 $result =
$object->fetch($id,
null, $mode);
238 $piece_num = (int)
$object->piece_num;
245 $result =
$object->delete($user, 0, $mode);
251 } elseif ($action ==
"confirm_create" && $permissiontoadd) {
256 if (!$journal_code || $journal_code ==
'-1') {
257 setEventMessages($langs->trans(
'ErrorFieldRequired', $langs->transnoentitiesnoconv(
"Journal")),
null,
'errors');
261 if (!
GETPOST(
'doc_ref',
'alpha')) {
262 setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentitiesnoconv(
"Piece")),
null,
'errors');
275 $object->code_journal = $journal_code;
276 $object->journal_label = $journal_label;
282 $result =
$object->createStd($user, 0, $mode);
289 $reshook = $hookmanager->executeHooks(
'afterCreateBookkeeping', $parameters,
$object, $action);
291 if ($mode !=
'_tmp') {
296 $piece_num = (int)
$object->piece_num;
301 if ($action ==
'setdate' && $permissiontoadd) {
303 $result =
$object->updateByMvt($piece_num,
'doc_date', $db->idate($datedoc), $mode);
307 if ($mode !=
'_tmp') {
314 if ($action ==
'setjournal' && $permissiontoadd) {
315 $result =
$object->updateByMvt($piece_num,
'code_journal', $journal_code, $mode);
316 $result =
$object->updateByMvt($piece_num,
'journal_label', $journal_label, $mode);
320 if ($mode !=
'_tmp') {
327 if ($action ==
'setdocref' && $permissiontoadd) {
328 $refdoc =
GETPOST(
'doc_ref',
'alpha');
329 $result =
$object->updateByMvt($piece_num,
'doc_ref', $refdoc, $mode);
333 if ($mode !=
'_tmp') {
341 if ($action ==
'valid' && $permissiontoadd) {
342 $result =
$object->transformTransaction(0, $piece_num);
346 header(
"Location: list.php?sortfield=t.piece_num&sortorder=asc");
352 $toselect = explode(
',',
GETPOST(
'toselect',
'alphanohtml'));
354 if ($action ==
'deletebookkeepingwriting' && $confirm ==
"yes" && $permissiontodelete) {
359 $nb_lettering = $lettering->bookkeepingLetteringAll($toselect,
true);
360 if ($nb_lettering < 0) {
369 foreach ($toselect as $toselectid) {
370 $result =
$object->fetch($toselectid);
371 if ($result >= 0 && (!isset(
$object->date_validation) ||
$object->date_validation ===
'')) {
380 } elseif ($result < 0) {
384 } elseif (isset(
$object->date_validation) &&
$object->date_validation !=
'') {
385 setEventMessages($langs->trans(
"ValidatedRecordWhereFound"),
null,
'errors');
398 } elseif ($nbok > 0) {
404 header(
"Location: ".DOL_URL_ROOT.
'/accountancy/bookkeeping/list.php?noreset=1');
418$form =
new Form($db);
421$title = $langs->trans(
"CreateMvts");
422$help_url =
'EN:Module_Double_Entry_Accounting|FR:Module_Comptabilité_en_Partie_Double';
424llxHeader(
'', $title, $help_url,
'', 0, 0,
'',
'',
'',
'mod-accountancy accountancy-consultation page-card');
427if ($action ==
'delete') {
428 $formconfirm = $form->formconfirm($_SERVER[
"PHP_SELF"].
'?id='.$id.
'&mode='.$mode, $langs->trans(
'DeleteMvt'), $langs->trans(
'ConfirmDeleteMvt', $langs->transnoentitiesnoconv(
"RegistrationInAccounting")),
'confirm_delete',
'', 0, 1);
432if ($action ==
'create') {
436 $next_num_mvt =
$object->getNextNumMvt(
'_tmp');
438 if (empty($next_num_mvt)) {
442 print
'<form action="'.$_SERVER[
"PHP_SELF"].
'" name="create_mvt" method="POST">';
443 if ($optioncss !=
'') {
444 print
'<input type="hidden" name="optioncss" value="'.$optioncss.
'">';
446 print
'<input type="hidden" name="token" value="'.newToken().
'">';
447 print
'<input type="hidden" name="action" value="confirm_create">'.
"\n";
448 print
'<input type="hidden" name="next_num_mvt" value="'.$next_num_mvt.
'">'.
"\n";
449 print
'<input type="hidden" name="mode" value="_tmp">'.
"\n";
453 print
'<table class="border centpercent">';
461 print
'<td class="titlefieldcreate fieldrequired">'.$langs->trans(
"Docdate").
'</td>';
463 print $form->selectDate(
'',
'doc_date', 0, 0, 0,
"create_mvt", 1, 1);
468 print
'<td class="fieldrequired">'.$langs->trans(
"Codejournal").
'</td>';
469 print
'<td>'.$formaccounting->select_journal($journal_code,
'code_journal', 0, 0, 1, 1).
'</td>';
473 print
'<td class="fieldrequired">'.$langs->trans(
"Piece").
'</td>';
474 print
'<td><input type="text" class="minwidth200" name="doc_ref" value="'.GETPOST(
'doc_ref',
'alpha').
'"></td>';
483 $reshookAddLine = $hookmanager->executeHooks(
'bookkeepingAddLine', $parameters,
$object, $action);
489 print $form->buttonsSaveCancel(
"Create");
495 $result =
$object->fetchPerMvt($piece_num, $mode);
500 if (!empty(
$object->piece_num)) {
501 $backlink =
'<a href="'.DOL_URL_ROOT.
'/accountancy/bookkeeping/list.php?restore_lastsearch_values=1">'.$langs->trans(
'BackToList').
'</a>';
511 $head[$h][0] = $_SERVER[
'PHP_SELF'].
'?piece_num='.((int)
$object->piece_num).($mode ?
'&mode='.$mode :
'');
512 $head[$h][1] = $langs->trans(
"Transaction");
513 $head[$h][2] =
'transaction';
521 $morehtmlref =
'<div style="clear: both;"></div>';
522 $morehtmlref .=
'<div class="refidno opacitymedium">';
523 $morehtmlref .=
$object->label;
524 $morehtmlref .=
'</div>';
526 dol_banner_tab(
$object,
'ref', $backlink, 1,
'piece_num',
'piece_num', $morehtmlref);
528 print
'<div class="fichecenter">';
530 print
'<div class="fichehalfleft">';
532 print
'<div class="underbanner clearboth"></div>';
533 print
'<table class="border tableforfield centpercent">';
537 print
'<td class="titlefield">'.$langs->trans(
"NumMvts").
'</td>';
538 print
'<td>'.($mode ==
'_tmp' ?
'<span class="opacitymedium" title="Id tmp '.$object->piece_num.
'">'.$langs->trans(
"Draft").
'</span>' :
$object->piece_num).
'</td>';
543 print
'<table class="nobordernopadding centpercent"><tr><td>';
544 print $langs->trans(
'Piece');
546 if ($action !=
'editdocref') {
547 print
'<td class="right">';
548 if ($permissiontoadd) {
549 print
'<a class="editfielda reposition" href="'.$_SERVER[
"PHP_SELF"].
'?action=editdocref&token='.
newToken().
'&piece_num='.((int)
$object->piece_num).
'&mode='.urlencode((
string) $mode).
'">'.
img_edit($langs->transnoentitiesnoconv(
'Edit'), 1).
'</a>';
553 print
'</tr></table>';
555 if ($action ==
'editdocref') {
556 print
'<form name="setdocref" action="'.$_SERVER[
"PHP_SELF"].
'?piece_num='.((int)
$object->piece_num).
'" method="POST">';
557 if ($optioncss !=
'') {
558 print
'<input type="hidden" name="optioncss" value="'.$optioncss.
'">';
560 print
'<input type="hidden" name="token" value="'.newToken().
'">';
561 print
'<input type="hidden" name="action" value="setdocref">';
562 print
'<input type="hidden" name="mode" value="'.$mode.
'">';
563 print
'<input type="text" size="20" name="doc_ref" value="'.dol_escape_htmltag(
$object->doc_ref).
'">';
564 print
'<input type="submit" class="button button-edit" value="'.$langs->trans(
'Modify').
'">';
574 print
'<table class="nobordernopadding centpercent"><tr><td>';
575 print $langs->trans(
'Docdate');
577 if ($action !=
'editdate') {
578 print
'<td class="right">';
579 if ($permissiontoadd) {
580 print
'<a class="editfielda reposition" href="'.$_SERVER[
"PHP_SELF"].
'?action=editdate&token='.
newToken().
'&piece_num='.((int)
$object->piece_num).
'&mode='.urlencode((
string) $mode).
'">'.
img_edit($langs->transnoentitiesnoconv(
'SetDate'), 1).
'</a>';
584 print
'</tr></table>';
585 print
'</td><td colspan="3">';
586 if ($action ==
'editdate') {
587 print
'<form name="setdate" action="'.$_SERVER[
"PHP_SELF"].
'?piece_num='.((int)
$object->piece_num).
'" method="POST">';
588 if ($optioncss !=
'') {
589 print
'<input type="hidden" name="optioncss" value="'.$optioncss.
'">';
591 print
'<input type="hidden" name="token" value="'.newToken().
'">';
592 print
'<input type="hidden" name="action" value="setdate">';
593 print
'<input type="hidden" name="mode" value="'.$mode.
'">';
594 print $form->selectDate(
$object->doc_date ?
$object->doc_date : - 1,
'doc_date', 0, 0, 0,
"setdate");
595 print
'<input type="submit" class="button button-edit" value="'.$langs->trans(
'Modify').
'">';
605 print
'<table class="nobordernopadding" width="100%"><tr><td>';
606 print $langs->trans(
'Codejournal');
608 if ($action !=
'editjournal') {
609 print
'<td class="right">';
610 if ($permissiontoadd) {
611 print
'<a class="editfielda reposition" href="'.$_SERVER[
"PHP_SELF"].
'?action=editjournal&token='.
newToken().
'&piece_num='.((int)
$object->piece_num).
'&mode='.urlencode((
string) $mode).
'">'.
img_edit($langs->transnoentitiesnoconv(
'Edit'), 1).
'</a>';
615 print
'</tr></table>';
617 if ($action ==
'editjournal') {
618 print
'<form name="setjournal" action="'.$_SERVER[
"PHP_SELF"].
'?piece_num='.((int)
$object->piece_num).
'" method="POST">';
619 if ($optioncss !=
'') {
620 print
'<input type="hidden" name="optioncss" value="'.$optioncss.
'">';
622 print
'<input type="hidden" name="token" value="'.newToken().
'">';
623 print
'<input type="hidden" name="action" value="setjournal">';
624 print
'<input type="hidden" name="mode" value="'.$mode.
'">';
625 print $formaccounting->select_journal(
$object->code_journal,
'code_journal', 0, 0, array(), 1, 1);
626 print
'<input type="submit" class="button button-edit" value="'.$langs->trans(
'Modify').
'">';
639 print
'<div class="fichehalfright">';
641 print
'<div class="underbanner clearboth"></div>';
642 print
'<table class="border tableforfield centpercent">';
645 if (!empty(
$object->doc_type)) {
647 print
'<td class="titlefield">'.$langs->trans(
"Doctype").
'</td>';
648 print
'<td>'.$object->doc_type.
'</td>';
654 print
'<td class="titlefield">'.$langs->trans(
"DateCreation").
'</td>';
661 if ($mode !=
"_tmp") {
664 print
'<td class="titlefield">' . $langs->trans(
"DateExport") .
'</td>';
672 print
'<td class="titlefield">' . $langs->trans(
"DateValidation") .
'</td>';
679 if (!empty(
$object->import_key)) {
681 print
'<td class="titlefield">' . $langs->trans(
"ImportId") .
'</td>';
734 print
'<div class="clearboth"></div>';
740 $result =
$object->fetchAllPerMvt($piece_num, $mode);
746 $tmptoselect = array();
747 $atleastonevalidated = 0;
748 $atleastoneexported = 0;
749 foreach (
$object->linesmvt as $line) {
750 $tmptoselect[] = $line->id;
751 if (!empty($line->date_validation)) {
752 $atleastonevalidated = 1;
754 if (!empty($line->date_export) || !empty($line->date_validation)) {
755 $atleastoneexported = 1;
759 if ($mode !=
'_tmp' && !$atleastonevalidated) {
760 print
"\n".
'<div class="tabsAction">'.
"\n";
762 $parameters = array();
763 $reshook = $hookmanager->executeHooks(
'addMoreActionsButtons', $parameters,
$object, $action);
764 if (empty($reshook)) {
765 if ($permissiontodelete) {
766 if (!isset($hookmanager->resArray[
'no_button_edit']) || $hookmanager->resArray[
'no_button_edit'] != 1) {
767 print
dolGetButtonAction(
'', $langs->trans(
'Delete'),
'delete', DOL_URL_ROOT.
'/accountancy/bookkeeping/card.php?action=deletebookkeepingwriting&confirm=yes&token='.
newToken().
'&piece_num='.((
int)
$object->piece_num).
'&toselect='.implode(
',', $tmptoselect),
'', $permissiontodelete);
778 print
'<form action="'.$_SERVER[
"PHP_SELF"].
'?piece_num='.((int)
$object->piece_num).
'" method="POST">';
779 if ($optioncss !=
'') {
780 print
'<input type="hidden" name="optioncss" value="'.$optioncss.
'">';
782 print
'<input type="hidden" name="token" value="'.newToken().
'">';
783 print
'<input type="hidden" name="doc_date" value="'.$object->doc_date.
'">'.
"\n";
784 print
'<input type="hidden" name="doc_type" value="'.$object->doc_type.
'">'.
"\n";
785 print
'<input type="hidden" name="doc_ref" value="'.$object->doc_ref.
'">'.
"\n";
786 print
'<input type="hidden" name="code_journal" value="'.$object->code_journal.
'">'.
"\n";
787 print
'<input type="hidden" name="fk_doc" value="'.$object->fk_doc.
'">'.
"\n";
788 print
'<input type="hidden" name="fk_docdet" value="'.$object->fk_docdet.
'">'.
"\n";
789 print
'<input type="hidden" name="mode" value="'.$mode.
'">'.
"\n";
791 if (count(
$object->linesmvt) > 0) {
792 print
'<div class="div-table-responsive-no-min">';
793 print
'<table class="noborder centpercent">';
798 print
'<tr class="liste_titre">';
805 if (empty(
$object->date_validation)) {
814 if (!empty(
$object->linesmvt[0])) {
815 $tmpline =
$object->linesmvt[0];
816 if (!empty($tmpline->numero_compte)) {
822 foreach (
$object->linesmvt as $line) {
823 $total_debit += $line->debit;
824 $total_credit += $line->credit;
826 if ($action ==
'update' && $line->id == $id) {
827 print
'<tr class="oddeven" data-lineid="'.((int) $line->id).
'">';
828 print
'<!-- td columns in edit mode -->';
830 print $formaccounting->select_account((GETPOSTISSET(
"accountingaccount_number") ?
GETPOST(
"accountingaccount_number",
"alpha") : $line->numero_compte),
'accountingaccount_number', 1, array(), 1, 1,
'minwidth200 maxwidth500');
838 print $formaccounting->select_auxaccount((GETPOSTISSET(
"subledger_account") ?
GETPOST(
"subledger_account",
"alpha") : $line->subledger_account),
'subledger_account', 1,
'maxwidth250',
'',
'subledger_label');
840 print
'<input type="text" class="maxwidth150" name="subledger_account" value="'.(GETPOSTISSET(
"subledger_account") ?
GETPOST(
"subledger_account",
"alpha") : $line->subledger_account).
'" placeholder="'.
dol_escape_htmltag($langs->trans(
"SubledgerAccount")).
'">';
843 print
'<br><input type="text" class="maxwidth150" name="subledger_label" value="'.(GETPOSTISSET(
"subledger_label") ?
GETPOST(
"subledger_label",
"alpha") : $line->subledger_label).
'" placeholder="'.
dol_escape_htmltag($langs->trans(
"SubledgerAccountLabel")).
'">';
845 print
'<td><input type="text" class="minwidth200" name="label_operation" value="'.(GETPOSTISSET(
"label_operation") ?
GETPOST(
"label_operation",
"alpha") : $line->label_operation).
'"></td>';
846 print
'<td class="right"><input type="text" class="right width50" name="debit" value="'.(GETPOSTISSET(
"debit") ?
GETPOST(
"debit",
"alpha") :
price($line->debit)).
'"></td>';
847 print
'<td class="right"><input type="text" class="right width50" name="credit" value="'.(GETPOSTISSET(
"credit") ?
GETPOST(
"credit",
"alpha") :
price($line->credit)).
'"></td>';
849 print
'<input type="hidden" name="id" value="'.$line->id.
'">'.
"\n";
850 print
'<input type="submit" class="button" name="update" value="'.$langs->trans(
"Update").
'">';
853 } elseif (empty($line->numero_compte) || (empty($line->debit) && empty($line->credit))) {
854 if (($action ==
"" || $action ==
'add') && $permissiontoadd) {
855 print
'<tr class="oddeven" data-lineid="'.((int) $line->id).
'">';
856 print
'<!-- td columns in add mode -->';
858 print $formaccounting->select_account($action ==
'add' ?
GETPOST(
'accountingaccount_number') :
'',
'accountingaccount_number', 1, array(), 1, 1,
'minwidth200 maxwidth500');
866 print $formaccounting->select_auxaccount(
'',
'subledger_account', 1,
'maxwidth250',
'',
'subledger_label');
868 print
'<input type="text" class="maxwidth150" name="subledger_account" value="" placeholder="' .
dol_escape_htmltag($langs->trans(
"SubledgerAccount")) .
'">';
870 print
'<br><input type="text" class="maxwidth150" name="subledger_label" value="" placeholder="' .
dol_escape_htmltag($langs->trans(
"SubledgerAccountLabel")) .
'">';
872 print
'<td><input type="text" class="minwidth200" name="label_operation" value="' .
dol_escape_htmltag($label_operation) .
'"/></td>';
873 print
'<td class="right"><input type="text" class="right width50" name="debit" value=""/></td>';
874 print
'<td class="right"><input type="text" class="right width50" name="credit" value=""/></td>';
875 print
'<td class="center"><input type="submit" class="button small" name="save" value="' . $langs->trans(
"Add") .
'"></td>';
879 print
'<tr class="oddeven" data-lineid="'.((int) $line->id).
'">';
880 print
'<!-- td columns in display mode -->';
881 $resultfetch = $accountingaccount->fetch(
null, $line->numero_compte,
true);
883 if ($resultfetch > 0) {
884 print $accountingaccount->getNomUrl(0, 1, 1,
'', 0);
886 print
dol_escape_htmltag($line->numero_compte).
' <span class="warning">('.$langs->trans(
"AccountRemovedFromCurrentChartOfAccount").
')</span>';
889 print
'<td>'.length_accounta($line->subledger_account);
890 if ($line->subledger_label) {
891 print
' - <span class="opacitymedium">'.dol_escape_htmltag($line->subledger_label).
'</span>';
894 print
'<td>'.$line->label_operation.
'</td>';
895 print
'<td class="right nowraponall amount">'.($line->debit != 0 ?
price($line->debit) :
'').
'</td>';
896 print
'<td class="right nowraponall amount">'.($line->credit != 0 ?
price($line->credit) :
'').
'</td>';
898 print
'<td class="center nowraponall">';
899 if ($permissiontoadd) {
900 if (empty($line->date_export) && empty($line->date_validation)) {
901 print
'<a class="editfielda reposition" href="' . $_SERVER[
"PHP_SELF"] .
'?action=update&id=' . $line->id .
'&piece_num=' . ((int) $line->piece_num) .
'&mode=' . urlencode((
string) $mode) .
'&token=' . urlencode(
newToken()) .
'">';
902 print
img_edit(
'', 0,
'class="marginrightonly"');
905 print
'<a class="editfielda nohover cursornotallowed reposition disabled" href="#" title="'.dol_escape_htmltag($langs->trans(
"ForbiddenTransactionAlreadyExported")).
'">';
906 print
img_edit($langs->trans(
"ForbiddenTransactionAlreadyExported"), 0,
'class="marginrightonly"');
910 if (empty($line->date_validation)) {
911 $actiontodelete =
'delete';
912 if ($mode ==
'_tmp' || $action !=
'delmouv') {
913 $actiontodelete =
'confirm_delete';
916 print
'<a href="' . $_SERVER[
"PHP_SELF"] .
'?action=' . $actiontodelete .
'&id=' . $line->id .
'&piece_num=' . ((int) $line->piece_num) .
'&mode=' . urlencode((
string) $mode) .
'&token=' . urlencode(
newToken()) .
'">';
920 print
'<a class="editfielda nohover cursornotallowed disabled" href="#" title="'.dol_escape_htmltag($langs->trans(
"ForbiddenTransactionAlreadyExported")).
'">';
921 print
img_delete($langs->trans(
"ForbiddenTransactionAlreadyValidated"));
930 $total_debit =
price2num($total_debit,
'MT');
931 $total_credit =
price2num($total_credit,
'MT');
933 if ($total_debit != $total_credit) {
934 setEventMessages(
null, array($langs->trans(
'MvtNotCorrectlyBalanced', $total_debit, $total_credit)),
'warnings');
940 if ($mode ==
'_tmp' && $action ==
'' && $permissiontoadd) {
942 print
'<div class="center">';
943 if (empty($total_debit) && empty($total_credit)) {
944 print
'<input type="submit" class="button" disabled="disabled" href="#" title="'.dol_escape_htmltag($langs->trans(
"EnterNonEmptyLinesFirst")).
'" value="'.
dol_escape_htmltag($langs->trans(
"ValidTransaction")).
'">';
945 } elseif ($total_debit == $total_credit) {
946 print
'<a class="button" href="'.$_SERVER[
"PHP_SELF"].
'?piece_num='.((int)
$object->piece_num).
'&action=valid&token='.
newToken().
'">'.$langs->trans(
"ValidTransaction").
'</a>';
948 print
'<input type="submit" class="button" disabled="disabled" href="#" title="'.dol_escape_htmltag($langs->trans(
"MvtNotCorrectlyBalanced", $total_debit, $total_credit)).
'" value="'.
dol_escape_htmltag($langs->trans(
"ValidTransaction")).
'">';
952 print
'<a class="button button-cancel" href="'.DOL_URL_ROOT.
'/accountancy/bookkeeping/list.php">'.$langs->trans(
"Cancel").
'</a>';
if( $user->socid > 0) if(! $user->hasRight('accounting', 'chartofaccount')) $object
if(!defined('NOREQUIRESOC')) if(!defined( 'NOREQUIRETRAN')) if(!defined('NOTOKENRENEWAL')) if(!defined( 'NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined( 'NOREQUIREAJAX')) llxHeader()
Empty header.
Class to manage accounting accounts.
Class to manage accounting journals.
Class to manage Ledger (General Ledger and Subledger)
dol_mktime($hour, $minute, $second, $month, $day, $year, $gm='auto', $check=1)
Return a timestamp date built from detailed information (by default a local PHP server timestamp) Rep...
load_fiche_titre($title, $morehtmlright='', $picto='generic', $pictoisfullpath=0, $id='', $morecssontable='', $morehtmlcenter='')
Load a title with picto.
img_delete($titlealt='default', $other='class="pictodelete"', $morecss='')
Show delete logo.
GETPOSTINT($paramname, $method=0)
Return the value of a $_GET or $_POST supervariable, converted into integer.
dol_get_fiche_head($links=array(), $active='', $title='', $notab=0, $picto='', $pictoisfullpath=0, $morehtmlright='', $morecss='', $limittoshow=0, $moretabssuffix='', $dragdropfile=0)
Show tabs of a record.
price2num($amount, $rounding='', $option=0)
Function that return a number with universal decimal format (decimal separator is '.
dol_get_fiche_end($notab=0)
Return tab footer of a card.
price($amount, $form=0, $outlangs='', $trunc=1, $rounding=-1, $forcerounding=-1, $currency_code='')
Function to format a value into an amount for visual output Function used into PDF and HTML pages.
getDolGlobalInt($key, $default=0)
Return a Dolibarr global constant int value.
dol_print_date($time, $format='', $tzoutput='auto', $outputlangs=null, $encodetooutput=false)
Output date in a string format according to outputlangs (or langs if not defined).
newToken()
Return the value of token currently saved into session with name 'newtoken'.
dolGetButtonAction($label, $text='', $actionType='default', $url='', $id='', $userRight=1, $params=array())
Function dolGetButtonAction.
print_liste_field_titre($name, $file="", $field="", $begin="", $moreparam="", $moreattrib="", $sortfield="", $sortorder="", $prefix="", $tooltip="", $forcenowrapcolumntitle=0)
Show title line of an array.
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='', $noduplicate=0)
Set event messages in dol_events session object.
dol_print_error($db=null, $error='', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
getDolGlobalString($key, $default='')
Return dolibarr global constant string value.
img_edit($titlealt='default', $float=0, $other='')
Show logo edit/modify fiche.
dol_escape_htmltag($stringtoescape, $keepb=0, $keepn=0, $noescapetags='', $escapeonlyhtmltags=0, $cleanalsojavascript=0)
Returns text escaped for inclusion in HTML alt or title or value tags, or into values of HTML input f...
accessforbidden($message='', $printheader=1, $printfooter=1, $showonlymessage=0, $params=null)
Show a message to say access is forbidden and stop program.