dolibarr 21.0.0-alpha
card.php
Go to the documentation of this file.
1<?php
2/* Copyright (C) 2004 Rodolphe Quiedeville <rodolphe@quiedeville.org>
3 * Copyright (C) 2005 Simon TOSSER <simon@kornog-computing.com>
4 * Copyright (C) 2013-2024 Alexandre Spangaro <aspangaro@easya.solutions>
5 * Copyright (C) 2013-2014 Olivier Geffroy <jeff@jeffinfo.com>
6 * Copyright (C) 2013-2014 Florian Henry <florian.henry@open-concept.pro>
7 * Copyright (C) 2014 Juanjo Menent <jmenent@2byte.es>
8 * Copyright (C) 2015 Jean-Fran├žois Ferry <jfefe@aternatik.fr>
9 *
10 * This program is free software; you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License as published by
12 * the Free Software Foundation; either version 3 of the License, or
13 * (at your option) any later version.
14 *
15 * This program is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU General Public License for more details.
19 *
20 * You should have received a copy of the GNU General Public License
21 * along with this program. If not, see <https://www.gnu.org/licenses/>.
22 *
23 */
29require '../../main.inc.php';
30
31require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php';
32require_once DOL_DOCUMENT_ROOT.'/core/class/html.formaccounting.class.php';
33
34// Load translation files required by the page
35$langs->loadLangs(array("bills", "accountancy"));
36
37$action = GETPOST('action', 'aZ09');
38$cancel = GETPOST('cancel', 'alpha');
39$backtopage = GETPOST('backtopage', 'alpha');
40
41$codeventil = GETPOSTINT('codeventil');
42$id = GETPOSTINT('id');
43
44// Security check
45if (!isModEnabled('accounting')) {
47}
48if ($user->socid > 0) {
50}
51if (!$user->hasRight('accounting', 'bind', 'write')) {
53}
54
55
56/*
57 * Actions
58 */
59
60if ($action == 'ventil' && $user->hasRight('accounting', 'bind', 'write')) {
61 if (!$cancel) {
62 if ($codeventil < 0) {
63 $codeventil = 0;
64 }
65
66 $sql = " UPDATE ".MAIN_DB_PREFIX."facture_fourn_det";
67 $sql .= " SET fk_code_ventilation = ".((int) $codeventil);
68 $sql .= " WHERE rowid = ".((int) $id);
69
70 $resql = $db->query($sql);
71 if (!$resql) {
72 setEventMessages($db->lasterror(), null, 'errors');
73 } else {
74 setEventMessages($langs->trans("RecordModifiedSuccessfully"), null, 'mesgs');
75 if ($backtopage) {
76 header("Location: ".$backtopage);
77 exit();
78 }
79 }
80 } else {
81 header("Location: ./lines.php");
82 exit();
83 }
84}
85
86
87
88/*
89 * View
90 */
91$help_url ='EN:Module_Double_Entry_Accounting|FR:Module_Comptabilit&eacute;_en_Partie_Double#Liaisons_comptables';
92
93llxHeader("", $langs->trans('FicheVentilation'), $help_url, '', 0, 0, '', '', '', 'mod-accountancy accountancy-supplier page-card');
94
95if ($cancel == $langs->trans("Cancel")) {
96 $action = '';
97}
98
99// Create
100$form = new Form($db);
101$facturefournisseur_static = new FactureFournisseur($db);
102$formaccounting = new FormAccounting($db);
103
104if (!empty($id)) {
105 $sql = "SELECT f.ref as ref, f.rowid as facid, l.fk_product, l.description, l.rowid, l.fk_code_ventilation, ";
106 $sql .= " p.rowid as product_id, p.ref as product_ref, p.label as product_label,";
107 if (getDolGlobalString('MAIN_PRODUCT_PERENTITY_SHARED')) {
108 $sql .= " ppe.accountancy_code_buy as code_buy,";
109 } else {
110 $sql .= " p.accountancy_code_buy as code_buy,";
111 }
112 $sql .= " aa.account_number, aa.label";
113 $sql .= " FROM ".MAIN_DB_PREFIX."facture_fourn_det as l";
114 $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."product as p ON p.rowid = l.fk_product";
115 if (getDolGlobalString('MAIN_PRODUCT_PERENTITY_SHARED')) {
116 $sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "product_perentity as ppe ON ppe.fk_product = p.rowid AND ppe.entity = " . ((int) $conf->entity);
117 }
118 $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."accounting_account as aa ON l.fk_code_ventilation = aa.rowid";
119 $sql .= " INNER JOIN ".MAIN_DB_PREFIX."facture_fourn as f ON f.rowid = l.fk_facture_fourn ";
120 $sql .= " WHERE f.fk_statut > 0 AND l.rowid = ".((int) $id);
121 $sql .= " AND f.entity IN (".getEntity('facture_fourn', 0).")"; // We don't share object for accountancy
122
123 dol_syslog("/accounting/supplier/card.php", LOG_DEBUG);
124 $result = $db->query($sql);
125
126 if ($result) {
127 $num_lines = $db->num_rows($result);
128 $i = 0;
129
130 if ($num_lines) {
131 $objp = $db->fetch_object($result);
132
133 print '<form action="'.$_SERVER["PHP_SELF"].'?id='.$id.'" method="post">'."\n";
134 print '<input type="hidden" name="token" value="'.newToken().'">';
135 print '<input type="hidden" name="action" value="ventil">';
136 print '<input type="hidden" name="backtopage" value="'.dol_escape_htmltag($backtopage).'">';
137
138 print load_fiche_titre($langs->trans('SuppliersVentilation'), '', 'title_accountancy');
139
140 print dol_get_fiche_head();
141
142 print '<table class="border centpercent">';
143
144 // ref invoice
145 print '<tr><td>'.$langs->trans("BillsSuppliers").'</td>';
146 $facturefournisseur_static->ref = $objp->ref;
147 $facturefournisseur_static->id = $objp->facid;
148 print '<td>'.$facturefournisseur_static->getNomUrl(1).'</td>';
149 print '</tr>';
150
151 print '<tr><td width="20%">'.$langs->trans("Line").'</td>';
152 print '<td>'.stripslashes(nl2br($objp->description)).'</td></tr>';
153 print '<tr><td width="20%">'.$langs->trans("ProductLabel").'</td>';
154 print '<td>'.dol_trunc($objp->product_label, 24).'</td>';
155 print '<tr><td width="20%">'.$langs->trans("Account").'</td><td>';
156 print $formaccounting->select_account($objp->fk_code_ventilation, 'codeventil', 1);
157 print '</td></tr>';
158 print '</table>';
159
160 print dol_get_fiche_end();
161
162 print '<div class="center">';
163 print '<input class="button button-save" type="submit" value="'.$langs->trans("Save").'">';
164 print '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
165 print '<input class="button button-cancel" type="submit" name="cancel" value="'.$langs->trans("Cancel").'">';
166 print '</div>';
167
168 print '</form>';
169 } else {
170 print "Error";
171 }
172 } else {
173 print "Error";
174 }
175} else {
176 print "Error ID incorrect";
177}
178
179// End of page
180llxFooter();
181$db->close();
if(!defined('NOREQUIRESOC')) if(!defined( 'NOREQUIRETRAN')) if(!defined('NOTOKENRENEWAL')) if(!defined( 'NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined( 'NOREQUIREAJAX')) llxHeader($head='', $title='', $help_url='', $target='', $disablejs=0, $disablehead=0, $arrayofjs='', $arrayofcss='', $morequerystring='', $morecssonbody='', $replacemainareaby='', $disablenofollow=0, $disablenoindex=0)
Empty header.
Definition wrapper.php:70
Class to manage suppliers invoices.
Class to manage generation of HTML components for accounting management.
Class to manage generation of HTML components Only common components must be here.
llxFooter()
Footer empty.
Definition document.php:107
load_fiche_titre($title, $morehtmlright='', $picto='generic', $pictoisfullpath=0, $id='', $morecssontable='', $morehtmlcenter='')
Load a title with picto.
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.
dol_get_fiche_end($notab=0)
Return tab footer of a card.
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.
getDolGlobalString($key, $default='')
Return dolibarr global constant string value.
dol_syslog($message, $level=LOG_INFO, $ident=0, $suffixinfilename='', $restricttologhandler='', $logcontext=null)
Write log message into outputs.
accessforbidden($message='', $printheader=1, $printfooter=1, $showonlymessage=0, $params=null)
Show a message to say access is forbidden and stop program.