28 require
'../../main.inc.php';
29 require_once DOL_DOCUMENT_ROOT.
'/core/lib/date.lib.php';
30 require_once DOL_DOCUMENT_ROOT.
'/core/lib/accounting.lib.php';
31 require_once DOL_DOCUMENT_ROOT.
'/core/lib/company.lib.php';
32 require_once DOL_DOCUMENT_ROOT.
'/fourn/class/fournisseur.facture.class.php';
33 require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/accountingaccount.class.php';
36 $langs->loadLangs(array(
"compta",
"bills",
"other",
"accountancy"));
52 $year_end = $year_start + 1;
53 $month_end = $month_start - 1;
58 $search_date_start =
dol_mktime(0, 0, 0, $month_start, 1, $year_start);
60 $year_current = $year_start;
63 $action =
GETPOST(
'action',
'aZ09');
71 if ($user->socid > 0) {
74 if (!$user->hasRight(
'accounting',
'bind',
'write')) {
83 if (($action ==
'clean' || $action ==
'validatehistory') && $user->hasRight(
'accounting',
'bind',
'write')) {
86 $sql1 =
"UPDATE ".$db->prefix().
"facture_fourn_det as fd";
87 $sql1 .=
" SET fk_code_ventilation = 0";
88 $sql1 .=
' WHERE fd.fk_code_ventilation NOT IN';
89 $sql1 .=
' (SELECT accnt.rowid ';
90 $sql1 .=
" FROM ".$db->prefix().
"accounting_account as accnt";
91 $sql1 .=
" INNER JOIN ".$db->prefix().
"accounting_system as syst";
92 $sql1 .=
" ON accnt.fk_pcg_version = syst.pcg_version AND syst.rowid = ".getDolGlobalInt(
'CHARTOFACCOUNTS').
" AND accnt.entity = ".((int) $conf->entity).
")";
93 $sql1 .=
" AND fd.fk_facture_fourn IN (SELECT rowid FROM ".$db->prefix().
"facture_fourn WHERE entity = ".((int) $conf->entity).
")";
94 $sql1 .=
" AND fk_code_ventilation <> 0";
96 dol_syslog(
"htdocs/accountancy/customer/index.php fixaccountancycode", LOG_DEBUG);
97 $resql1 = $db->query($sql1);
108 if ($action ==
'validatehistory') {
118 $sql =
"SELECT f.rowid as facid, f.ref, f.ref_supplier, f.libelle as invoice_label, f.datef, f.type as ftype, f.fk_facture_source,";
119 $sql .=
" l.rowid, l.fk_product, l.description, l.total_ht, l.fk_code_ventilation, l.product_type as type_l, l.tva_tx as tva_tx_line, l.vat_src_code,";
120 $sql .=
" p.rowid as product_id, p.ref as product_ref, p.label as product_label, p.fk_product_type as type, p.tva_tx as tva_tx_prod,";
122 $sql .=
" ppe.accountancy_code_buy as code_buy, ppe.accountancy_code_buy_intra as code_buy_intra, ppe.accountancy_code_buy_export as code_buy_export,";
124 $sql .=
" p.accountancy_code_buy as code_buy, p.accountancy_code_buy_intra as code_buy_intra, p.accountancy_code_buy_export as code_buy_export,";
126 $sql .=
" aa.rowid as aarowid, aa2.rowid as aarowid_intra, aa3.rowid as aarowid_export, aa4.rowid as aarowid_thirdparty,";
127 $sql .=
" co.code as country_code, co.label as country_label,";
128 $sql .=
" s.tva_intra,";
130 $sql .=
" spe.accountancy_code_buy as company_code_buy";
132 $sql .=
" s.accountancy_code_buy as company_code_buy";
134 $sql .=
" FROM ".$db->prefix().
"facture_fourn as f";
135 $sql .=
" INNER JOIN ".$db->prefix().
"societe as s ON s.rowid = f.fk_soc";
137 $sql .=
" LEFT JOIN " . $db->prefix() .
"societe_perentity as spe ON spe.fk_soc = s.rowid AND spe.entity = " . ((int) $conf->entity);
139 $sql .=
" LEFT JOIN ".$db->prefix().
"c_country as co ON co.rowid = s.fk_pays ";
140 $sql .=
" INNER JOIN ".$db->prefix().
"facture_fourn_det as l ON f.rowid = l.fk_facture_fourn";
141 $sql .=
" LEFT JOIN ".$db->prefix().
"product as p ON p.rowid = l.fk_product";
143 $sql .=
" LEFT JOIN " . $db->prefix() .
"product_perentity as ppe ON ppe.fk_product = p.rowid AND ppe.entity = " . ((int) $conf->entity);
145 $alias_societe_perentity = !
getDolGlobalString(
'MAIN_COMPANY_PERENTITY_SHARED') ?
"s" :
"spe";
146 $alias_product_perentity = !
getDolGlobalString(
'MAIN_PRODUCT_PERENTITY_SHARED') ?
"p" :
"ppe";
147 $sql .=
" LEFT JOIN ".$db->prefix().
"accounting_account as aa ON " . $alias_product_perentity .
".accountancy_code_buy = aa.account_number AND aa.active = 1 AND aa.fk_pcg_version = '".$db->escape($chartaccountcode).
"' AND aa.entity = ".$conf->entity;
148 $sql .=
" LEFT JOIN ".$db->prefix().
"accounting_account as aa2 ON " . $alias_product_perentity .
".accountancy_code_buy_intra = aa2.account_number AND aa2.active = 1 AND aa2.fk_pcg_version = '".$db->escape($chartaccountcode).
"' AND aa2.entity = ".$conf->entity;
149 $sql .=
" LEFT JOIN ".$db->prefix().
"accounting_account as aa3 ON " . $alias_product_perentity .
".accountancy_code_buy_export = aa3.account_number AND aa3.active = 1 AND aa3.fk_pcg_version = '".$db->escape($chartaccountcode).
"' AND aa3.entity = ".$conf->entity;
150 $sql .=
" LEFT JOIN ".$db->prefix().
"accounting_account as aa4 ON " . $alias_product_perentity .
".accountancy_code_buy = aa4.account_number AND aa4.active = 1 AND aa4.fk_pcg_version = '".$db->escape($chartaccountcode).
"' AND aa4.entity = ".$conf->entity;
151 $sql .=
" WHERE f.fk_statut > 0 AND l.fk_code_ventilation <= 0";
152 $sql .=
" AND l.product_type <= 2";
153 $sql .=
" AND f.entity IN (".getEntity(
'facture_fourn', 0).
")";
157 if ($validatemonth && $validateyear) {
161 dol_syslog(
'htdocs/accountancy/supplier/index.php');
163 $result = $db->query(
$sql);
168 $num_lines = $db->num_rows($result);
170 $isBuyerInEEC =
isInEEC($mysoc);
172 $thirdpartystatic =
new Societe($db);
175 $product_static =
new Product($db);
178 while ($i < min($num_lines, 10000)) {
179 $objp = $db->fetch_object($result);
181 $thirdpartystatic->id = $objp->socid;
182 $thirdpartystatic->name = $objp->name;
183 $thirdpartystatic->client = $objp->client;
184 $thirdpartystatic->fournisseur = $objp->fournisseur;
185 $thirdpartystatic->code_client = $objp->code_client;
186 $thirdpartystatic->code_compta_client = $objp->code_compta_client;
187 $thirdpartystatic->code_fournisseur = $objp->code_fournisseur;
188 $thirdpartystatic->code_compta_fournisseur = $objp->code_compta_fournisseur;
189 $thirdpartystatic->email = $objp->email;
190 $thirdpartystatic->country_code = $objp->country_code;
191 $thirdpartystatic->tva_intra = $objp->tva_intra;
192 $thirdpartystatic->code_compta_product = $objp->company_code_buy;
194 $product_static->ref = $objp->product_ref;
195 $product_static->id = $objp->product_id;
196 $product_static->type = $objp->type;
197 $product_static->label = $objp->product_label;
198 $product_static->status = $objp->status;
199 $product_static->status_buy = $objp->status_buy;
200 $product_static->accountancy_code_sell = $objp->code_sell;
201 $product_static->accountancy_code_sell_intra = $objp->code_sell_intra;
202 $product_static->accountancy_code_sell_export = $objp->code_sell_export;
203 $product_static->accountancy_code_buy = $objp->code_buy;
204 $product_static->accountancy_code_buy_intra = $objp->code_buy_intra;
205 $product_static->accountancy_code_buy_export = $objp->code_buy_export;
206 $product_static->tva_tx = $objp->tva_tx_prod;
208 $facture_static->ref = $objp->ref;
209 $facture_static->id = $objp->facid;
210 $facture_static->type = $objp->ftype;
211 $facture_static->ref_supplier = $objp->ref_supplier;
212 $facture_static->label = $objp->invoice_label;
213 $facture_static->date = $db->jdate($objp->datef);
214 $facture_static->fk_facture_source = $objp->fk_facture_source;
216 $facture_static_det->id = $objp->rowid;
217 $facture_static_det->total_ht = $objp->total_ht;
218 $facture_static_det->tva_tx = $objp->tva_tx_line;
219 $facture_static_det->vat_src_code = $objp->vat_src_code;
220 $facture_static_det->product_type = $objp->type_l;
221 $facture_static_det->desc = $objp->description;
223 $accountingAccountArray = array(
224 'dom' => $objp->aarowid,
225 'intra' => $objp->aarowid_intra,
226 'export' => $objp->aarowid_export,
227 'thirdparty' => $objp->aarowid_thirdparty);
229 $code_buy_p_notset =
'';
230 $code_buy_t_notset =
'';
234 $return = $accountingAccount->getAccountingCodeToBind($mysoc, $thirdpartystatic, $product_static, $facture_static, $facture_static_det, $accountingAccountArray,
'supplier');
235 if (!is_array($return) && $return < 0) {
238 $suggestedid = $return[
'suggestedid'];
239 $suggestedaccountingaccountfor = $return[
'suggestedaccountingaccountfor'];
241 if (!empty($suggestedid) && $suggestedaccountingaccountfor !=
'' && $suggestedaccountingaccountfor !=
'eecwithoutvatnumber') {
242 $suggestedid = $return[
'suggestedid'];
248 if ($suggestedid > 0) {
249 $sqlupdate =
"UPDATE ".$db->prefix().
"facture_fourn_det";
250 $sqlupdate .=
" SET fk_code_ventilation = ".((int) $suggestedid);
251 $sqlupdate .=
" WHERE fk_code_ventilation <= 0 AND product_type <= 2 AND rowid = ".((int) $facture_static_det->id);
253 $resqlupdate = $db->query($sqlupdate);
269 if ($num_lines > 10000) {
270 $notpossible += ($num_lines - 10000);
278 setEventMessages($langs->trans(
'AutomaticBindingDone', $nbbinddone, $notpossible),
null, ($notpossible ?
'warnings' :
'mesgs'));
280 setEventMessages($langs->trans(
'DoManualBindingForFailedRecord', $nbbindfailed),
null,
'warnings');
289 $help_url =
'EN:Module_Double_Entry_Accounting|FR:Module_Comptabilité_en_Partie_Double#Liaisons_comptables';
291 llxHeader(
'', $langs->trans(
"SuppliersVentilation"), $help_url);
293 $textprevyear =
'<a href="'.$_SERVER[
"PHP_SELF"].
'?year='.($year_current - 1).
'">'.
img_previous().
'</a>';
294 $textnextyear =
' <a href="'.$_SERVER[
"PHP_SELF"].
'?year='.($year_current + 1).
'">'.
img_next().
'</a>';
296 print
load_fiche_titre($langs->trans(
"SuppliersVentilation").
" ".$textprevyear.
" ".$langs->trans(
"Year").
" ".$year_start.
" ".$textnextyear,
'',
'title_accountancy');
298 print
'<span class="opacitymedium">'.$langs->trans(
"DescVentilSupplier").
'</span><br>';
299 print
'<span class="opacitymedium hideonsmartphone">'.$langs->trans(
"DescVentilMore", $langs->transnoentitiesnoconv(
"ValidateHistory"), $langs->transnoentitiesnoconv(
"ToBind")).
'<br>';
304 $buttonbind =
'<a class="button small" href="'.$_SERVER[
'PHP_SELF'].
'?action=validatehistory&token='.
newToken().
'">'.
img_picto(
'',
'link',
'class="paddingright fa-color-unset smallpaddingimp"').$langs->trans(
"ValidateHistory").
'</a>';
307 print_barre_liste(
img_picto(
'',
'unlink',
'class="paddingright fa-color-unset"').$langs->trans(
"OverviewOfAmountOfLinesNotBound"),
'',
'',
'',
'',
'',
'', -1,
'',
'', 0,
'',
'', 0, 1, 1, 0, $buttonbind);
310 print
'<div class="div-table-responsive-no-min">';
311 print
'<table class="noborder centpercent">';
312 print
'<tr class="liste_titre"><td class="minwidth100">'.$langs->trans(
"Account").
'</td>';
313 print
'<td>'.$langs->trans(
"Label").
'</td>';
314 for ($i = 1; $i <= 12; $i++) {
320 if ($cursormonth > 12) {
323 $cursoryear = ($cursormonth <
getDolGlobalInt(
'SOCIETE_FISCAL_MONTH_START', 1)) ? $y + 1 : $y;
326 print
'<td width="60" class="right">';
327 if (!empty($tmp[
'mday'])) {
328 $param =
'search_date_startday=1&search_date_startmonth='.$cursormonth.
'&search_date_startyear='.$cursoryear;
329 $param .=
'&search_date_endday='.$tmp[
'mday'].
'&search_date_endmonth='.$tmp[
'mon'].
'&search_date_endyear='.$tmp[
'year'];
330 print
'<a href="'.DOL_URL_ROOT.
'/accountancy/supplier/list.php?'.$param.
'">';
332 print $langs->trans(
'MonthShort'.str_pad((
string) $j, 2,
'0', STR_PAD_LEFT));
333 if (!empty($tmp[
'mday'])) {
338 print
'<td width="60" class="right"><b>'.$langs->trans(
"Total").
'</b></td></tr>';
340 $sql =
"SELECT ".$db->ifsql(
'aa.account_number IS NULL',
"'tobind'",
'aa.account_number').
" AS codecomptable,";
341 $sql .=
" ".$db->ifsql(
'aa.label IS NULL',
"'tobind'",
'aa.label').
" AS intitule,";
342 for ($i = 1; $i <= 12; $i++) {
347 $sql .=
" SUM(".$db->ifsql(
"MONTH(ff.datef) = ".((
int) $j),
"ffd.total_ht",
"0").
") AS month".str_pad((
string) $j, 2,
"0", STR_PAD_LEFT).
",";
349 $sql .=
" SUM(ffd.total_ht) as total";
350 $sql .=
" FROM ".$db->prefix().
"facture_fourn_det as ffd";
351 $sql .=
" LEFT JOIN ".$db->prefix().
"facture_fourn as ff ON ff.rowid = ffd.fk_facture_fourn";
352 $sql .=
" LEFT JOIN ".$db->prefix().
"accounting_account as aa ON aa.rowid = ffd.fk_code_ventilation";
353 $sql .=
" WHERE ff.datef >= '".$db->idate($search_date_start).
"'";
354 $sql .=
" AND ff.datef <= '".$db->idate($search_date_end).
"'";
359 $sql .=
" AND ff.fk_statut > 0";
360 $sql .=
" AND ffd.product_type <= 2";
361 $sql .=
" AND ff.entity IN (".getEntity(
'facture_fourn', 0).
")";
362 $sql .=
" AND aa.account_number IS NULL";
368 $sql .=
" GROUP BY ffd.fk_code_ventilation,aa.account_number,aa.label";
370 dol_syslog(
'htdocs/accountancy/supplier/index.php', LOG_DEBUG);
371 $resql = $db->query(
$sql);
373 $num = $db->num_rows($resql);
375 while ($row = $db->fetch_row($resql)) {
376 print
'<tr class="oddeven">';
378 if ($row[0] ==
'tobind') {
379 print
'<span class="opacitymedium">'.$langs->trans(
"Unknown").
'</span>';
385 if ($row[0] ==
'tobind') {
387 if ($startmonth > 12) {
390 $startyear = ($startmonth <
getDolGlobalInt(
'SOCIETE_FISCAL_MONTH_START', 1)) ? $y + 1 : $y;
392 if ($endmonth > 12) {
395 $endyear = ($endmonth <
getDolGlobalInt(
'SOCIETE_FISCAL_MONTH_START', 1)) ? $y + 1 : $y;
396 print $langs->trans(
"UseMenuToSetBindindManualy", DOL_URL_ROOT.
'/accountancy/supplier/list.php?search_date_startday=1&search_date_startmonth='.((
int) $startmonth).
'&search_date_startyear='.((int) $startyear).
'&search_date_endday=&search_date_endmonth='.((int) $endmonth).
'&search_date_endyear='.((int) $endyear), $langs->transnoentitiesnoconv(
"ToBind"));
401 for ($i = 2; $i <= 13; $i++) {
402 $cursormonth = (
getDolGlobalInt(
'SOCIETE_FISCAL_MONTH_START', 1) + $i - 2);
403 if ($cursormonth > 12) {
406 $cursoryear = ($cursormonth <
getDolGlobalInt(
'SOCIETE_FISCAL_MONTH_START', 1)) ? $y + 1 : $y;
409 print
'<td class="right nowraponall amount">';
410 print
price($row[$i]);
413 print
'<a href="'.$_SERVER[
'PHP_SELF'].
'?action=validatehistory&year='.$y.
'&validatemonth='.((int) $cursormonth).
'&validateyear='.((int) $cursoryear).
'&token='.
newToken().
'">';
414 print
img_picto($langs->trans(
"ValidateHistory").
' ('.$langs->trans(
'Month'.str_pad((
string) $cursormonth, 2,
'0', STR_PAD_LEFT)).
' '.$cursoryear.
')',
'link',
'class="marginleft2"');
419 print
'<td class="right nowraponall amount"><b>'.price($row[14]).
'</b></td>';
425 print
'<tr class="oddeven"><td colspan="16">';
426 print
'<span class="opacitymedium">'.$langs->trans(
"NoRecordFound").
'</span>';
430 print $db->lasterror();
439 print_barre_liste(
img_picto(
'',
'link',
'class="paddingright fa-color-unset"').$langs->trans(
"OverviewOfAmountOfLinesBound"),
'',
'',
'',
'',
'',
'', -1,
'',
'', 0,
'',
'', 0, 1, 1);
442 print
'<div class="div-table-responsive-no-min">';
443 print
'<table class="noborder centpercent">';
444 print
'<tr class="liste_titre"><td class="minwidth100">'.$langs->trans(
"Account").
'</td>';
445 print
'<td>'.$langs->trans(
"Label").
'</td>';
446 for ($i = 1; $i <= 12; $i++) {
452 if ($cursormonth > 12) {
455 $cursoryear = ($cursormonth <
getDolGlobalInt(
'SOCIETE_FISCAL_MONTH_START', 1)) ? $y + 1 : $y;
458 print
'<td width="60" class="right">';
459 if (!empty($tmp[
'mday'])) {
460 $param =
'search_date_startday=1&search_date_startmonth='.$cursormonth.
'&search_date_startyear='.$cursoryear;
461 $param .=
'&search_date_endday='.$tmp[
'mday'].
'&search_date_endmonth='.$tmp[
'mon'].
'&search_date_endyear='.$tmp[
'year'];
462 print
'<a href="'.DOL_URL_ROOT.
'/accountancy/supplier/lines.php?'.$param.
'">';
464 print $langs->trans(
'MonthShort'.str_pad((
string) $j, 2,
'0', STR_PAD_LEFT));
465 if (!empty($tmp[
'mday'])) {
470 print
'<td width="60" class="right"><b>'.$langs->trans(
"Total").
'</b></td></tr>';
472 $sql =
"SELECT ".$db->ifsql(
'aa.account_number IS NULL',
"'tobind'",
'aa.account_number').
" AS codecomptable,";
473 $sql .=
" ".$db->ifsql(
'aa.label IS NULL',
"'tobind'",
'aa.label').
" AS intitule,";
474 for ($i = 1; $i <= 12; $i++) {
479 $sql .=
" SUM(".$db->ifsql(
"MONTH(ff.datef) = ".((
int) $j),
"ffd.total_ht",
"0").
") AS month".str_pad((
string) $j, 2,
"0", STR_PAD_LEFT).
",";
481 $sql .=
" SUM(ffd.total_ht) as total";
482 $sql .=
" FROM ".$db->prefix().
"facture_fourn_det as ffd";
483 $sql .=
" LEFT JOIN ".$db->prefix().
"facture_fourn as ff ON ff.rowid = ffd.fk_facture_fourn";
484 $sql .=
" LEFT JOIN ".$db->prefix().
"accounting_account as aa ON aa.rowid = ffd.fk_code_ventilation";
485 $sql .=
" WHERE ff.datef >= '".$db->idate($search_date_start).
"'";
486 $sql .=
" AND ff.datef <= '".$db->idate($search_date_end).
"'";
491 $sql .=
" AND ff.entity IN (".getEntity(
'facture_fourn', 0).
")";
492 $sql .=
" AND ff.fk_statut > 0";
493 $sql .=
" AND ffd.product_type <= 2";
499 $sql .=
" AND aa.account_number IS NOT NULL";
500 $sql .=
" GROUP BY ffd.fk_code_ventilation,aa.account_number,aa.label";
501 $sql .=
' ORDER BY aa.account_number';
503 dol_syslog(
'htdocs/accountancy/supplier/index.php');
504 $resql = $db->query(
$sql);
506 $num = $db->num_rows($resql);
508 while ($row = $db->fetch_row($resql)) {
509 print
'<tr class="oddeven">';
511 if ($row[0] ==
'tobind') {
512 print $langs->trans(
"Unknown");
518 print
'<td class="tdoverflowmax300"'.(empty($row[1]) ?
'' :
' title="'.dol_escape_htmltag($row[1]).
'"').
'>';
519 if ($row[0] ==
'tobind') {
520 print $langs->trans(
"UseMenuToSetBindindManualy", DOL_URL_ROOT.
'/accountancy/supplier/list.php?search_year='.((
int) $y), $langs->transnoentitiesnoconv(
"ToBind"));
526 for ($i = 2; $i <= 13; $i++) {
527 print
'<td class="right nowraponall amount">';
528 print
price($row[$i]);
531 print
'<td class="right nowraponall amount"><b>'.price($row[14]).
'</b></td>';
537 print
'<tr class="oddeven"><td colspan="16">';
538 print
'<span class="opacitymedium">'.$langs->trans(
"NoRecordFound").
'</span>';
542 print $db->lasterror();
552 print_barre_liste($langs->trans(
"OtherInfo"),
'',
'',
'',
'',
'',
'', -1,
'',
'', 0,
'',
'', 0, 1, 1);
555 print
'<div class="div-table-responsive-no-min">';
556 print
'<table class="noborder centpercent">';
557 print
'<tr class="liste_titre"><td>'.$langs->trans(
"Total").
'</td>';
558 for ($i = 1; $i <= 12; $i++) {
563 print
'<td width="60" class="right">'.$langs->trans(
'MonthShort'.str_pad((
string) $j, 2,
'0', STR_PAD_LEFT)).
'</td>';
565 print
'<td width="60" class="right"><b>'.$langs->trans(
"Total").
'</b></td></tr>';
567 $sql =
"SELECT '".$db->escape($langs->trans(
"CAHTF")).
"' AS label,";
568 for ($i = 1; $i <= 12; $i++) {
573 $sql .=
" SUM(".$db->ifsql(
"MONTH(ff.datef) = ".((
int) $j),
"ffd.total_ht",
"0").
") AS month".str_pad((
string) $j, 2,
"0", STR_PAD_LEFT).
",";
575 $sql .=
" SUM(ffd.total_ht) as total";
576 $sql .=
" FROM ".$db->prefix().
"facture_fourn_det as ffd";
577 $sql .=
" LEFT JOIN ".$db->prefix().
"facture_fourn as ff ON ff.rowid = ffd.fk_facture_fourn";
578 $sql .=
" WHERE ff.datef >= '".$db->idate($search_date_start).
"'";
579 $sql .=
" AND ff.datef <= '".$db->idate($search_date_end).
"'";
584 $sql .=
" AND ff.entity IN (".getEntity(
'facture_fourn', 0).
")";
585 $sql .=
" AND ff.fk_statut > 0";
586 $sql .=
" AND ffd.product_type <= 2";
593 dol_syslog(
'htdocs/accountancy/supplier/index.php');
594 $resql = $db->query(
$sql);
596 $num = $db->num_rows($resql);
598 while ($row = $db->fetch_row($resql)) {
599 print
'<tr><td>'.$row[0].
'</td>';
600 for ($i = 1; $i <= 12; $i++) {
601 print
'<td class="right nowraponall amount">'.price($row[$i]).
'</td>';
603 print
'<td class="right nowraponall amount"><b>'.price($row[13]).
'</b></td>';
608 print $db->lasterror();
length_accountg($account)
Return General accounting account with defined length (used for product and miscellaneous)
Class to manage accounting accounts.
Class to manage suppliers invoices.
const TYPE_DEPOSIT
Deposit invoice.
const TYPE_CREDIT_NOTE
Credit note invoice.
const TYPE_REPLACEMENT
Replacement invoice.
Class to manage products or services.
Class to manage third parties objects (customers, suppliers, prospects...)
Class to manage line invoices.
isInEEC($object)
Return if a country of an object is inside the EEC (European Economic Community)
if(isModEnabled('invoice') && $user->hasRight('facture', 'lire')) if((isModEnabled('fournisseur') &&!getDolGlobalString('MAIN_USE_NEW_SUPPLIERMOD') && $user->hasRight("fournisseur", "facture", "lire"))||(isModEnabled('supplier_invoice') && $user->hasRight("supplier_invoice", "lire"))) if(isModEnabled('don') && $user->hasRight('don', 'lire')) if(isModEnabled('tax') && $user->hasRight('tax', 'charges', 'lire')) if(isModEnabled('invoice') &&isModEnabled('order') && $user->hasRight("commande", "lire") &&!getDolGlobalString('WORKFLOW_DISABLE_CREATE_INVOICE_FROM_ORDER')) $sql
Social contributions to pay.
dolSqlDateFilter($datefield, $day_date, $month_date, $year_date, $excludefirstand=0, $gm=false)
Generate a SQL string to make a filter into a range (for second of date until last second of date).
dol_get_last_day($year, $month=12, $gm=false)
Return GMT time for last day of a month or year.
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_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=0, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2)
Show picto whatever it's its name (generic function)
GETPOSTINT($paramname, $method=0)
Return the value of a $_GET or $_POST supervariable, converted into integer.
price2num($amount, $rounding='', $option=0)
Function that return a number with universal decimal format (decimal separator is '.
setEventMessage($mesgs, $style='mesgs', $noduplicate=0)
Set event message in dol_events session object.
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.
dol_now($mode='auto')
Return date for now.
getDolGlobalInt($key, $default=0)
Return a Dolibarr global constant int value.
dol_getIdFromCode($db, $key, $tablename, $fieldkey='code', $fieldid='id', $entityfilter=0, $filters='')
Return an id or code from a code or id.
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'.
img_previous($titlealt='default', $moreatt='')
Show previous logo.
print_barre_liste($title, $page, $file, $options='', $sortfield='', $sortorder='', $morehtmlcenter='', $num=-1, $totalnboflines='', $picto='generic', $pictoisfullpath=0, $morehtmlright='', $morecss='', $limit=-1, $hideselectlimit=0, $hidenavigation=0, $pagenavastextinput=0, $morehtmlrightbeforearrow='')
Print a title with navigation controls for pagination.
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.
img_next($titlealt='default', $moreatt='')
Show next logo.
getDolGlobalString($key, $default='')
Return dolibarr global constant string value.
isModEnabled($module)
Is Dolibarr module enabled.
dol_syslog($message, $level=LOG_INFO, $ident=0, $suffixinfilename='', $restricttologhandler='', $logcontext=null)
Write log message into outputs.
dol_getdate($timestamp, $fast=false, $forcetimezone='')
Return an array with locale date info.
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...
if(!defined('NOTOKENRENEWAL')) if(!defined('NOLOGIN')) if(!defined('NOCSRFCHECK')) if(!defined('NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined('NOREQUIREAJAX')) if(!defined('NOIPCHECK')) if(!defined('NOBROWSERNOTIF')) llxHeader()
Header empty.
accessforbidden($message='', $printheader=1, $printfooter=1, $showonlymessage=0, $params=null)
Show a message to say access is forbidden and stop program.