35require
'../../main.inc.php';
36require_once DOL_DOCUMENT_ROOT.
'/core/lib/report.lib.php';
37require_once DOL_DOCUMENT_ROOT.
'/core/lib/date.lib.php';
38require_once DOL_DOCUMENT_ROOT.
'/core/lib/accounting.lib.php';
39require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/accountingjournal.class.php';
40require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/accountingaccount.class.php';
41require_once DOL_DOCUMENT_ROOT.
'/compta/facture/class/facture.class.php';
42require_once DOL_DOCUMENT_ROOT.
'/societe/class/client.class.php';
43require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/bookkeeping.class.php';
46$langs->loadLangs(array(
"commercial",
"compta",
"bills",
"other",
"accountancy",
"errors"));
49$action =
GETPOST(
'action',
'aZ09');
51$date_startmonth =
GETPOST(
'date_startmonth');
52$date_startday =
GETPOST(
'date_startday');
53$date_startyear =
GETPOST(
'date_startyear');
54$date_endmonth =
GETPOST(
'date_endmonth');
55$date_endday =
GETPOST(
'date_endday');
56$date_endyear =
GETPOST(
'date_endyear');
57$in_bookkeeping =
GETPOST(
'in_bookkeeping');
58if ($in_bookkeeping ==
'') {
59 $in_bookkeeping =
'notyet';
64$hookmanager->initHooks(array(
'sellsjournal'));
68if (!isModEnabled(
'accounting')) {
71if ($user->socid > 0) {
74if (!$user->hasRight(
'accounting',
'bind',
'write')) {
85$reshook = $hookmanager->executeHooks(
'doActions', $parameters, $user, $action);
91$accountingjournalstatic->fetch($id_journal);
92$journal = $accountingjournalstatic->code;
93$journal_label = $accountingjournalstatic->label;
95$date_start =
dol_mktime(0, 0, 0, $date_startmonth, $date_startday, $date_startyear);
96$date_end =
dol_mktime(23, 59, 59, $date_endmonth, $date_endday, $date_endyear);
98if (empty($date_startmonth)) {
101 $date_start = $dates[
'date_start'];
102 $pastmonthyear = $dates[
'pastmonthyear'];
103 $pastmonth = $dates[
'pastmonth'];
105if (empty($date_endmonth)) {
108 $date_end = $dates[
'date_end'];
109 $pastmonthyear = $dates[
'pastmonthyear'];
110 $pastmonth = $dates[
'pastmonth'];
116if (!GETPOSTISSET(
'date_startmonth') && (empty($date_start) || empty($date_end))) {
121$sql =
"SELECT f.rowid, f.ref, f.type, f.situation_cycle_ref, f.datef as df, f.ref_client, f.date_lim_reglement as dlr, f.close_code, f.retained_warranty, f.revenuestamp,";
122$sql .=
" fd.rowid as fdid, fd.description, fd.product_type, fd.total_ht, fd.total_tva, fd.total_localtax1, fd.total_localtax2, fd.tva_tx, fd.total_ttc, fd.situation_percent, fd.vat_src_code, fd.info_bits,";
123$sql .=
" s.rowid as socid, s.nom as name, s.code_client, s.code_fournisseur,";
125 $sql .=
" spe.accountancy_code_customer as code_compta,";
126 $sql .=
" spe.accountancy_code_supplier as code_compta_fournisseur,";
128 $sql .=
" s.code_compta as code_compta,";
129 $sql .=
" s.code_compta_fournisseur,";
131$sql .=
" p.rowid as pid, p.ref as pref, aa.rowid as fk_compte, aa.account_number as compte, aa.label as label_compte,";
133 $sql .=
" ppe.accountancy_code_sell";
135 $sql .=
" p.accountancy_code_sell";
137$parameters = array();
138$reshook = $hookmanager->executeHooks(
'printFieldListSelect', $parameters);
139$sql .= $hookmanager->resPrint;
140$sql .=
" FROM ".MAIN_DB_PREFIX.
"facturedet as fd";
141$sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"product as p ON p.rowid = fd.fk_product";
143 $sql .=
" LEFT JOIN " . MAIN_DB_PREFIX .
"product_perentity as ppe ON ppe.fk_product = p.rowid AND ppe.entity = " . ((int) $conf->entity);
145$sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"accounting_account as aa ON aa.rowid = fd.fk_code_ventilation";
146$sql .=
" JOIN ".MAIN_DB_PREFIX.
"facture as f ON f.rowid = fd.fk_facture";
147$sql .=
" JOIN ".MAIN_DB_PREFIX.
"societe as s ON s.rowid = f.fk_soc";
149 $sql .=
" LEFT JOIN " . MAIN_DB_PREFIX .
"societe_perentity as spe ON spe.fk_soc = s.rowid AND spe.entity = " . ((int) $conf->entity);
151$parameters = array();
152$reshook = $hookmanager->executeHooks(
'printFieldListFrom', $parameters);
153$sql .= $hookmanager->resPrint;
154$sql .=
" WHERE fd.fk_code_ventilation > 0";
155$sql .=
" AND f.entity IN (".getEntity(
'invoice', 0).
')';
156$sql .=
" AND f.fk_statut > 0";
162$sql .=
" AND fd.product_type IN (0,1)";
163if ($date_start && $date_end) {
164 $sql .=
" AND f.datef >= '".$db->idate($date_start).
"' AND f.datef <= '".$db->idate($date_end).
"'";
168 $sql .=
" AND f.datef >= '".$db->idate(
getDolGlobalString(
'ACCOUNTING_DATE_START_BINDING')).
"'";
171if ($in_bookkeeping ==
'already') {
172 $sql .=
" AND f.rowid IN (SELECT fk_doc FROM ".MAIN_DB_PREFIX.
"accounting_bookkeeping as ab WHERE ab.doc_type='customer_invoice')";
175if ($in_bookkeeping ==
'notyet') {
176 $sql .=
" AND f.rowid NOT IN (SELECT fk_doc FROM ".MAIN_DB_PREFIX.
"accounting_bookkeeping as ab WHERE ab.doc_type='customer_invoice')";
179$parameters = array();
180$reshook = $hookmanager->executeHooks(
'printFieldListWhere', $parameters);
181$sql .= $hookmanager->resPrint;
182$sql .=
" ORDER BY f.datef, f.ref";
185dol_syslog(
'accountancy/journal/sellsjournal.php', LOG_DEBUG);
186$result = $db->query($sql);
192 $tabwarranty = array();
193 $tabrevenuestamp = array();
195 $tablocaltax1 = array();
196 $tablocaltax2 = array();
197 $tabcompany = array();
198 $vatdata_cache = array();
200 $num = $db->num_rows($result);
208 $obj = $db->fetch_object($result);
211 $compta_soc = (!empty($obj->code_compta)) ? $obj->code_compta : $cptcli;
213 $compta_prod = $obj->compte;
214 if (empty($compta_prod)) {
215 if ($obj->product_type == 0) {
224 $tax_id = $obj->tva_tx . ($obj->vat_src_code ?
' (' . $obj->vat_src_code .
')' :
'');
225 if (array_key_exists($tax_id, $vatdata_cache)) {
226 $vatdata = $vatdata_cache[$tax_id];
231 $buyer->fetch($obj->socid);
237 $vatdata_cache[$tax_id] = $vatdata;
239 $compta_tva = (!empty($vatdata[
'accountancy_code_sell']) ? $vatdata[
'accountancy_code_sell'] : $cpttva);
240 $compta_localtax1 = (!empty($vatdata[
'accountancy_code_sell']) ? $vatdata[
'accountancy_code_sell'] : $cpttva);
241 $compta_localtax2 = (!empty($vatdata[
'accountancy_code_sell']) ? $vatdata[
'accountancy_code_sell'] : $cpttva);
244 if (
price2num($obj->tva_tx) || !empty($obj->vat_src_code)) {
245 $def_tva[$obj->rowid][$compta_tva][
vatrate($obj->tva_tx).($obj->vat_src_code ?
' ('.$obj->vat_src_code.
')' :
'')] = (
vatrate($obj->tva_tx).($obj->vat_src_code ?
' ('.$obj->vat_src_code.
')' :
''));
249 $situation_ratio = 1;
251 if ($obj->situation_cycle_ref) {
253 if ($obj->situation_percent == 0) {
254 $situation_ratio = 0;
257 $line->fetch($obj->fdid);
260 $prev_progress = $line->get_prev_progress($obj->rowid);
262 $situation_ratio = ($obj->situation_percent - $prev_progress) / $obj->situation_percent;
267 $revenuestamp = (float)
price2num($obj->revenuestamp,
'MT');
270 $tabfac[$obj->rowid][
"date"] = $db->jdate($obj->df);
271 $tabfac[$obj->rowid][
"datereg"] = $db->jdate($obj->dlr);
272 $tabfac[$obj->rowid][
"ref"] = $obj->ref;
273 $tabfac[$obj->rowid][
"type"] = $obj->type;
274 $tabfac[$obj->rowid][
"description"] = $obj->label_compte;
275 $tabfac[$obj->rowid][
"close_code"] = $obj->close_code;
276 $tabfac[$obj->rowid][
"revenuestamp"] = $revenuestamp;
280 if (!isset($tabttc[$obj->rowid][$compta_soc])) {
281 $tabttc[$obj->rowid][$compta_soc] = 0;
283 if (!isset($tabht[$obj->rowid][$compta_prod])) {
284 $tabht[$obj->rowid][$compta_prod] = 0;
286 if (!isset($tabtva[$obj->rowid][$compta_tva])) {
287 $tabtva[$obj->rowid][$compta_tva] = 0;
289 if (!isset($tablocaltax1[$obj->rowid][$compta_localtax1])) {
290 $tablocaltax1[$obj->rowid][$compta_localtax1] = 0;
292 if (!isset($tablocaltax2[$obj->rowid][$compta_localtax2])) {
293 $tablocaltax2[$obj->rowid][$compta_localtax2] = 0;
302 $total_ttc = $obj->total_ttc * $situation_ratio;
304 $total_ttc = $obj->total_ttc;
308 if (
getDolGlobalString(
'INVOICE_USE_RETAINED_WARRANTY') && $obj->retained_warranty > 0) {
309 $retained_warranty = (float)
price2num($total_ttc * $obj->retained_warranty / 100,
'MT');
310 $tabwarranty[$obj->rowid][$compta_soc] += $retained_warranty;
311 $total_ttc -= $retained_warranty;
314 $tabttc[$obj->rowid][$compta_soc] += $total_ttc;
315 $tabht[$obj->rowid][$compta_prod] += $obj->total_ht * $situation_ratio;
316 $tva_npr = ((($obj->info_bits & 1) == 1) ? 1 : 0);
319 $tabtva[$obj->rowid][$compta_tva] += $obj->total_tva;
320 $tablocaltax1[$obj->rowid][$compta_localtax1] += $obj->total_localtax1;
321 $tablocaltax2[$obj->rowid][$compta_localtax2] += $obj->total_localtax2;
323 $tabtva[$obj->rowid][$compta_tva] += $obj->total_tva * $situation_ratio;
324 $tablocaltax1[$obj->rowid][$compta_localtax1] += $obj->total_localtax1 * $situation_ratio;
325 $tablocaltax2[$obj->rowid][$compta_localtax2] += $obj->total_localtax2 * $situation_ratio;
329 $compta_revenuestamp =
'NotDefined';
330 if (!empty($revenuestamp)) {
331 $sqlrevenuestamp =
"SELECT accountancy_code_sell FROM ".MAIN_DB_PREFIX.
"c_revenuestamp";
332 $sqlrevenuestamp .=
" WHERE fk_pays = ".((int) $mysoc->country_id);
333 $sqlrevenuestamp .=
" AND taux = ".((float) $revenuestamp);
334 $sqlrevenuestamp .=
" AND active = 1";
335 $resqlrevenuestamp = $db->query($sqlrevenuestamp);
337 if ($resqlrevenuestamp) {
338 $num_rows_revenuestamp = $db->num_rows($resqlrevenuestamp);
339 if ($num_rows_revenuestamp > 1) {
340 dol_print_error($db,
'Failed 2 or more lines for the revenue stamp of your country. Check the dictionary of revenue stamp.');
342 $objrevenuestamp = $db->fetch_object($resqlrevenuestamp);
343 if ($objrevenuestamp) {
344 $compta_revenuestamp = $objrevenuestamp->accountancy_code_sell;
350 if (empty($tabrevenuestamp[$obj->rowid][$compta_revenuestamp]) && !empty($revenuestamp)) {
352 $tabttc[$obj->rowid][$compta_soc] += $obj->revenuestamp;
353 $tabrevenuestamp[$obj->rowid][$compta_revenuestamp] = $obj->revenuestamp;
356 $tabcompany[$obj->rowid] = array(
358 'name' => $obj->name,
359 'code_client' => $obj->code_client,
360 'code_compta' => $compta_soc
366 if ($i >
getDolGlobalInt(
'ACCOUNTANCY_MAX_TOO_MANY_LINES_TO_PROCESS', 10000)) {
368 setEventMessages(
"ErrorTooManyLinesToProcessPleaseUseAMoreSelectiveFilter",
null,
'errors');
379$errorforinvoice = array();
401if (!empty($tabfac)) {
405 COUNT(fd.rowid) as nb
407 ".MAIN_DB_PREFIX.
"facturedet as fd
410 AND fd.fk_code_ventilation <= 0
411 AND fd.total_ttc <> 0
412 AND fk_facture IN (".$db->sanitize(implode(
",", array_keys($tabfac))).
")
415 $resql = $db->query($sql);
417 $num = $db->num_rows($resql);
420 $obj = $db->fetch_object($resql);
422 $errorforinvoice[$obj->fk_facture] =
'somelinesarenotbound';
431if ($action ==
'writebookkeeping' && !$error && $user->hasRight(
'accounting',
'bind',
'write')) {
435 $companystatic =
new Societe($db);
436 $invoicestatic =
new Facture($db);
439 $accountingaccountcustomer->fetch(
null,
getDolGlobalString(
'ACCOUNTING_ACCOUNT_CUSTOMER'),
true);
442 $accountingaccountcustomerwarranty->fetch(
null,
getDolGlobalString(
'ACCOUNTING_ACCOUNT_CUSTOMER_RETAINED_WARRANTY'),
true);
444 foreach ($tabfac as $key => $val) {
452 $companystatic->id = $tabcompany[$key][
'id'];
453 $companystatic->name = $tabcompany[$key][
'name'];
454 $companystatic->code_compta = $tabcompany[$key][
'code_compta'];
455 $companystatic->code_compta_client = $tabcompany[$key][
'code_compta'];
456 $companystatic->code_client = $tabcompany[$key][
'code_client'];
457 $companystatic->client = 3;
459 $invoicestatic->id = $key;
460 $invoicestatic->ref = (string) $val[
"ref"];
461 $invoicestatic->type = $val[
"type"];
462 $invoicestatic->close_code = $val[
"close_code"];
467 $replacedinvoice = 0;
468 if ($invoicestatic->close_code == Facture::CLOSECODE_REPLACED) {
469 $replacedinvoice = 1;
470 $alreadydispatched = $invoicestatic->getVentilExportCompta();
471 if ($alreadydispatched) {
472 $replacedinvoice = 2;
477 if ($replacedinvoice == 1) {
483 if (isset($errorforinvoice[$key]) && $errorforinvoice[$key] ==
'somelinesarenotbound') {
486 setEventMessages($langs->trans(
'ErrorInvoiceContainsLinesNotYetBounded', $val[
'ref']),
null,
'errors');
491 if (isset($tabwarranty[$key]) && is_array($tabwarranty[$key])) {
492 foreach ($tabwarranty[$key] as $k => $mt) {
494 $bookkeeping->doc_date = $val[
"date"];
495 $bookkeeping->date_lim_reglement = $val[
"datereg"];
496 $bookkeeping->doc_ref = $val[
"ref"];
497 $bookkeeping->date_creation = $now;
498 $bookkeeping->doc_type =
'customer_invoice';
499 $bookkeeping->fk_doc = $key;
500 $bookkeeping->fk_docdet = 0;
501 $bookkeeping->thirdparty_code = $companystatic->code_client;
503 $bookkeeping->subledger_account = $tabcompany[$key][
'code_compta'];
504 $bookkeeping->subledger_label = $tabcompany[$key][
'name'];
506 $bookkeeping->numero_compte =
getDolGlobalString(
'ACCOUNTING_ACCOUNT_CUSTOMER_RETAINED_WARRANTY');
507 $bookkeeping->label_compte = $accountingaccountcustomerwarranty->label;
509 $bookkeeping->label_operation =
dol_trunc($companystatic->name, 16) .
' - ' . $invoicestatic->ref .
' - ' . $langs->trans(
"RetainedWarranty");
510 $bookkeeping->montant = $mt;
511 $bookkeeping->sens = ($mt >= 0) ?
'D' :
'C';
512 $bookkeeping->debit = ($mt >= 0) ? $mt : 0;
513 $bookkeeping->credit = ($mt < 0) ? -$mt : 0;
514 $bookkeeping->code_journal = $journal;
515 $bookkeeping->journal_label = $langs->transnoentities($journal_label);
516 $bookkeeping->fk_user_author = $user->id;
517 $bookkeeping->entity = $conf->entity;
519 $totaldebit += $bookkeeping->debit;
520 $totalcredit += $bookkeeping->credit;
522 $result = $bookkeeping->create($user);
524 if ($bookkeeping->error ==
'BookkeepingRecordAlreadyExists') {
527 $errorforinvoice[$key] =
'alreadyjournalized';
532 $errorforinvoice[$key] =
'other';
541 if (!$errorforline) {
542 foreach ($tabttc[$key] as $k => $mt) {
544 $bookkeeping->doc_date = $val[
"date"];
545 $bookkeeping->date_lim_reglement = $val[
"datereg"];
546 $bookkeeping->doc_ref = $val[
"ref"];
547 $bookkeeping->date_creation = $now;
548 $bookkeeping->doc_type =
'customer_invoice';
549 $bookkeeping->fk_doc = $key;
550 $bookkeeping->fk_docdet = 0;
551 $bookkeeping->thirdparty_code = $companystatic->code_client;
553 $bookkeeping->subledger_account = $tabcompany[$key][
'code_compta'];
554 $bookkeeping->subledger_label = $tabcompany[$key][
'name'];
557 $bookkeeping->label_compte = $accountingaccountcustomer->label;
559 $bookkeeping->label_operation =
dol_trunc($companystatic->name, 16).
' - '.$invoicestatic->ref.
' - '.$langs->trans(
"SubledgerAccount");
560 $bookkeeping->montant = $mt;
561 $bookkeeping->sens = ($mt >= 0) ?
'D' :
'C';
562 $bookkeeping->debit = ($mt >= 0) ? $mt : 0;
563 $bookkeeping->credit = ($mt < 0) ? -$mt : 0;
564 $bookkeeping->code_journal = $journal;
565 $bookkeeping->journal_label = $langs->transnoentities($journal_label);
566 $bookkeeping->fk_user_author = $user->id;
567 $bookkeeping->entity = $conf->entity;
569 $totaldebit += $bookkeeping->debit;
570 $totalcredit += $bookkeeping->credit;
572 $result = $bookkeeping->create($user);
574 if ($bookkeeping->error ==
'BookkeepingRecordAlreadyExists') {
577 $errorforinvoice[$key] =
'alreadyjournalized';
582 $errorforinvoice[$key] =
'other';
587 require_once DOL_DOCUMENT_ROOT .
'/accountancy/class/lettering.class.php';
590 $nb_lettering = $lettering_static->bookkeepingLettering(array($bookkeeping->id));
597 if (!$errorforline) {
598 foreach ($tabht[$key] as $k => $mt) {
599 if (empty($conf->cache[
'accountingaccountincurrententity'][$k])) {
601 $accountingaccount->fetch(0, $k,
true);
602 $conf->cache[
'accountingaccountincurrententity'][$k] = $accountingaccount;
604 $accountingaccount = $conf->cache[
'accountingaccountincurrententity'][$k];
607 $label_account = $accountingaccount->label;
610 if ($accountingaccount->id > 0) {
612 $bookkeeping->doc_date = $val[
"date"];
613 $bookkeeping->date_lim_reglement = $val[
"datereg"];
614 $bookkeeping->doc_ref = $val[
"ref"];
615 $bookkeeping->date_creation = $now;
616 $bookkeeping->doc_type =
'customer_invoice';
617 $bookkeeping->fk_doc = $key;
618 $bookkeeping->fk_docdet = 0;
619 $bookkeeping->thirdparty_code = $companystatic->code_client;
623 $bookkeeping->subledger_account = $tabcompany[$key][
'code_compta'];
624 $bookkeeping->subledger_label = $tabcompany[$key][
'name'];
626 $bookkeeping->subledger_account =
'';
627 $bookkeeping->subledger_label =
'';
630 $bookkeeping->subledger_account =
'';
631 $bookkeeping->subledger_label =
'';
634 $bookkeeping->numero_compte = $k;
635 $bookkeeping->label_compte = $label_account;
637 $bookkeeping->label_operation =
dol_trunc($companystatic->name, 16).
' - '.$invoicestatic->ref.
' - '.$label_account;
638 $bookkeeping->montant = $mt;
639 $bookkeeping->sens = ($mt < 0) ?
'D' :
'C';
640 $bookkeeping->debit = ($mt < 0) ? -$mt : 0;
641 $bookkeeping->credit = ($mt >= 0) ? $mt : 0;
642 $bookkeeping->code_journal = $journal;
643 $bookkeeping->journal_label = $langs->transnoentities($journal_label);
644 $bookkeeping->fk_user_author = $user->id;
645 $bookkeeping->entity = $conf->entity;
647 $totaldebit += $bookkeeping->debit;
648 $totalcredit += $bookkeeping->credit;
650 $result = $bookkeeping->create($user);
652 if ($bookkeeping->error ==
'BookkeepingRecordAlreadyExists') {
655 $errorforinvoice[$key] =
'alreadyjournalized';
660 $errorforinvoice[$key] =
'other';
669 if (!$errorforline) {
670 $listoftax = array(0, 1, 2);
671 foreach ($listoftax as $numtax) {
672 $arrayofvat = $tabtva;
674 $arrayofvat = $tablocaltax1;
677 $arrayofvat = $tablocaltax2;
680 foreach ($arrayofvat[$key] as $k => $mt) {
682 if (empty($conf->cache[
'accountingaccountincurrententity_vat'][$k])) {
684 $accountingaccount->fetch(0, $k,
true);
685 $conf->cache[
'accountingaccountincurrententity_vat'][$k] = $accountingaccount;
687 $accountingaccount = $conf->cache[
'accountingaccountincurrententity_vat'][$k];
690 $label_account = $accountingaccount->label;
693 $bookkeeping->doc_date = $val[
"date"];
694 $bookkeeping->date_lim_reglement = $val[
"datereg"];
695 $bookkeeping->doc_ref = $val[
"ref"];
696 $bookkeeping->date_creation = $now;
697 $bookkeeping->doc_type =
'customer_invoice';
698 $bookkeeping->fk_doc = $key;
699 $bookkeeping->fk_docdet = 0;
700 $bookkeeping->thirdparty_code = $companystatic->code_client;
702 $bookkeeping->subledger_account =
'';
703 $bookkeeping->subledger_label =
'';
705 $bookkeeping->numero_compte = $k;
706 $bookkeeping->label_compte = $label_account;
709 $bookkeeping->label_operation =
dol_trunc($companystatic->name, 16).
' - '.$invoicestatic->ref;
710 $tmpvatrate = (empty($def_tva[$key][$k]) ? (empty($arrayofvat[$key][$k]) ?
'' : $arrayofvat[$key][$k]) : implode(
', ', $def_tva[$key][$k]));
711 $bookkeeping->label_operation .=
' - '.$langs->trans(
"Taxes").
' '.$tmpvatrate.
' %';
712 $bookkeeping->label_operation .= ($numtax ?
' - Localtax '.$numtax :
'');
714 $bookkeeping->montant = $mt;
715 $bookkeeping->sens = ($mt < 0) ?
'D' :
'C';
716 $bookkeeping->debit = ($mt < 0) ? -$mt : 0;
717 $bookkeeping->credit = ($mt >= 0) ? $mt : 0;
718 $bookkeeping->code_journal = $journal;
719 $bookkeeping->journal_label = $langs->transnoentities($journal_label);
720 $bookkeeping->fk_user_author = $user->id;
721 $bookkeeping->entity = $conf->entity;
723 $totaldebit += $bookkeeping->debit;
724 $totalcredit += $bookkeeping->credit;
726 $result = $bookkeeping->create($user);
728 if ($bookkeeping->error ==
'BookkeepingRecordAlreadyExists') {
731 $errorforinvoice[$key] =
'alreadyjournalized';
736 $errorforinvoice[$key] =
'other';
746 if (!$errorforline) {
747 if (isset($tabrevenuestamp[$key]) && is_array($tabrevenuestamp[$key])) {
748 foreach ($tabrevenuestamp[$key] as $k => $mt) {
750 if (empty($conf->cache[
'accountingaccountincurrententity_rs'][$k])) {
752 $accountingaccount->fetch(0, $k,
true);
753 $conf->cache[
'accountingaccountincurrententity_rs'][$k] = $accountingaccount;
755 $accountingaccount = $conf->cache[
'accountingaccountincurrententity_rs'][$k];
758 $label_account = $accountingaccount->label;
761 $bookkeeping->doc_date = $val[
"date"];
762 $bookkeeping->date_lim_reglement = $val[
"datereg"];
763 $bookkeeping->doc_ref = $val[
"ref"];
764 $bookkeeping->date_creation = $now;
765 $bookkeeping->doc_type =
'customer_invoice';
766 $bookkeeping->fk_doc = $key;
767 $bookkeeping->fk_docdet = 0;
768 $bookkeeping->thirdparty_code = $companystatic->code_client;
770 $bookkeeping->subledger_account =
'';
771 $bookkeeping->subledger_label =
'';
773 $bookkeeping->numero_compte = $k;
774 $bookkeeping->label_compte = $label_account;
776 $bookkeeping->label_operation =
dol_trunc($companystatic->name, 16) .
' - ' . $invoicestatic->ref .
' - ' . $langs->trans(
"RevenueStamp");
777 $bookkeeping->montant = $mt;
778 $bookkeeping->sens = ($mt < 0) ?
'D' :
'C';
779 $bookkeeping->debit = ($mt < 0) ? -$mt : 0;
780 $bookkeeping->credit = ($mt >= 0) ? $mt : 0;
781 $bookkeeping->code_journal = $journal;
782 $bookkeeping->journal_label = $langs->transnoentities($journal_label);
783 $bookkeeping->fk_user_author = $user->id;
784 $bookkeeping->entity = $conf->entity;
786 $totaldebit += $bookkeeping->debit;
787 $totalcredit += $bookkeeping->credit;
789 $result = $bookkeeping->create($user);
791 if ($bookkeeping->error ==
'BookkeepingRecordAlreadyExists') {
794 $errorforinvoice[$key] =
'alreadyjournalized';
799 $errorforinvoice[$key] =
'other';
809 if (!$errorforline && (
price2num($totaldebit,
'MT') !=
price2num($totalcredit,
'MT'))) {
812 $errorforinvoice[$key] =
'amountsnotbalanced';
813 setEventMessages(
'We Tried to insert a non balanced transaction in book for '.$invoicestatic->ref.
'. Canceled. Surely a bug.',
null,
'errors');
816 if (!$errorforline) {
822 setEventMessages($langs->trans(
"ErrorTooManyErrorsProcessStopped"),
null,
'errors');
830 if (empty($error) && count($tabpay) > 0) {
832 } elseif (count($tabpay) == $error) {
835 setEventMessages($langs->trans(
"GeneralLedgerSomeRecordWasNotRecorded"),
null,
'warnings');
841 if (count($tabpay) != $error) {
842 $param =
'id_journal='.$id_journal;
843 $param .=
'&date_startday='.$date_startday;
844 $param .=
'&date_startmonth='.$date_startmonth;
845 $param .=
'&date_startyear='.$date_startyear;
846 $param .=
'&date_endday='.$date_endday;
847 $param .=
'&date_endmonth='.$date_endmonth;
848 $param .=
'&date_endyear='.$date_endyear;
849 $param .=
'&in_bookkeeping='.$in_bookkeeping;
850 header(
"Location: ".$_SERVER[
'PHP_SELF'].($param ?
'?'.$param :
''));
861$form =
new Form($db);
864if ($action ==
'exportcsv' && !$error) {
868 $filename =
'journal';
869 $type_export =
'journal';
870 include DOL_DOCUMENT_ROOT.
'/accountancy/tpl/export_journal.tpl.php';
872 $companystatic =
new Client($db);
873 $invoicestatic =
new Facture($db);
875 foreach ($tabfac as $key => $val) {
876 $companystatic->id = $tabcompany[$key][
'id'];
877 $companystatic->name = $tabcompany[$key][
'name'];
878 $companystatic->code_compta = $tabcompany[$key][
'code_compta'];
879 $companystatic->code_compta_client = $tabcompany[$key][
'code_compta'];
880 $companystatic->code_client = $tabcompany[$key][
'code_client'];
881 $companystatic->client = 3;
883 $invoicestatic->id = $key;
884 $invoicestatic->ref = (string) $val[
"ref"];
885 $invoicestatic->type = $val[
"type"];
886 $invoicestatic->close_code = $val[
"close_code"];
891 $replacedinvoice = 0;
892 if ($invoicestatic->close_code == Facture::CLOSECODE_REPLACED) {
893 $replacedinvoice = 1;
894 $alreadydispatched = $invoicestatic->getVentilExportCompta();
895 if ($alreadydispatched) {
896 $replacedinvoice = 2;
901 if ($replacedinvoice == 1) {
906 if (
getDolGlobalString(
'INVOICE_USE_RETAINED_WARRANTY') && isset($tabwarranty[$key])) {
907 foreach ($tabwarranty[$key] as $k => $mt) {
909 print
'"'.$key.
'"'.$sep;
910 print
'"'.$date.
'"'.$sep;
911 print
'"'.$val[
"ref"].
'"'.$sep;
912 print
'"'.mb_convert_encoding(
dol_trunc($companystatic->name, 32),
'ISO-8859-1').
'"'.$sep;
913 print
'"'.length_accounta(html_entity_decode($k)).
'"'.$sep;
914 print
'"'.length_accountg(
getDolGlobalString(
'ACCOUNTING_ACCOUNT_CUSTOMER_RETAINED_WARRANTY')).
'"'.$sep;
915 print
'"'.length_accounta(html_entity_decode($k)).
'"'.$sep;
916 print
'"'.$langs->trans(
"Thirdparty").
'"'.$sep;
917 print
'"'.mb_convert_encoding(
dol_trunc($companystatic->name, 16),
'ISO-8859-1').
' - '.$invoicestatic->ref.
' - '.$langs->trans(
"RetainedWarranty").
'"'.$sep;
918 print
'"'.($mt >= 0 ?
price($mt) :
'').
'"'.$sep;
919 print
'"'.($mt < 0 ?
price(-$mt) :
'').
'"'.$sep;
920 print
'"'.$journal.
'"';
927 foreach ($tabttc[$key] as $k => $mt) {
929 print
'"'.$key.
'"'.$sep;
930 print
'"'.$date.
'"'.$sep;
931 print
'"'.$val[
"ref"].
'"'.$sep;
932 print
'"'.mb_convert_encoding(
dol_trunc($companystatic->name, 32),
'ISO-8859-1').
'"'.$sep;
933 print
'"'.length_accounta(html_entity_decode($k)).
'"'.$sep;
934 print
'"'.length_accountg(
getDolGlobalString(
'ACCOUNTING_ACCOUNT_CUSTOMER')).
'"'.$sep;
935 print
'"'.length_accounta(html_entity_decode($k)).
'"'.$sep;
936 print
'"'.$langs->trans(
"Thirdparty").
'"'.$sep;
937 print
'"'.mb_convert_encoding(
dol_trunc($companystatic->name, 16),
'ISO-8859-1').
' - '.$invoicestatic->ref.
' - '.$langs->trans(
"Thirdparty").
'"'.$sep;
938 print
'"'.($mt >= 0 ?
price($mt) :
'').
'"'.$sep;
939 print
'"'.($mt < 0 ?
price(-$mt) :
'').
'"'.$sep;
940 print
'"'.$journal.
'"';
946 foreach ($tabht[$key] as $k => $mt) {
948 $accountingaccount->fetch(
null, $k,
true);
950 print
'"'.$key.
'"'.$sep;
951 print
'"'.$date.
'"'.$sep;
952 print
'"'.$val[
"ref"].
'"'.$sep;
953 print
'"'.mb_convert_encoding(
dol_trunc($companystatic->name, 32),
'ISO-8859-1').
'"'.$sep;
954 print
'"'.length_accountg(html_entity_decode($k)).
'"'.$sep;
955 print
'"'.length_accountg(html_entity_decode($k)).
'"'.$sep;
957 print
'"'.mb_convert_encoding(
dol_trunc($accountingaccount->label, 32),
'ISO-8859-1').
'"'.$sep;
958 print
'"'.mb_convert_encoding(
dol_trunc($companystatic->name, 16),
'ISO-8859-1').
' - '.
dol_trunc($accountingaccount->label, 32).
'"'.$sep;
959 print
'"'.($mt < 0 ?
price(-$mt) :
'').
'"'.$sep;
960 print
'"'.($mt >= 0 ?
price($mt) :
'').
'"'.$sep;
961 print
'"'.$journal.
'"';
967 $listoftax = array(0, 1, 2);
968 foreach ($listoftax as $numtax) {
969 $arrayofvat = $tabtva;
971 $arrayofvat = $tablocaltax1;
974 $arrayofvat = $tablocaltax2;
977 foreach ($arrayofvat[$key] as $k => $mt) {
979 print
'"'.$key.
'"'.$sep;
980 print
'"'.$date.
'"'.$sep;
981 print
'"'.$val[
"ref"].
'"'.$sep;
982 print
'"'.mb_convert_encoding(
dol_trunc($companystatic->name, 32),
'ISO-8859-1').
'"'.$sep;
983 print
'"'.length_accountg(html_entity_decode($k)).
'"'.$sep;
984 print
'"'.length_accountg(html_entity_decode($k)).
'"'.$sep;
986 print
'"'.$langs->trans(
"VAT").
' - '.implode(
', ', $def_tva[$key][$k]).
' %"'.$sep;
987 print
'"'.mb_convert_encoding(
dol_trunc($companystatic->name, 16),
'ISO-8859-1').
' - '.$invoicestatic->ref.
' - '.$langs->trans(
"VAT").implode(
', ', $def_tva[$key][$k]).
' %'.($numtax ?
' - Localtax '.$numtax :
'').
'"'.$sep;
988 print
'"'.($mt < 0 ?
price(-$mt) :
'').
'"'.$sep;
989 print
'"'.($mt >= 0 ?
price($mt) :
'').
'"'.$sep;
990 print
'"'.$journal.
'"';
997 if (isset($tabrevenuestamp[$key])) {
998 foreach ($tabrevenuestamp[$key] as $k => $mt) {
1000 print
'"'.$key.
'"'.$sep;
1001 print
'"'.$date.
'"'.$sep;
1002 print
'"'.$val[
"ref"].
'"'.$sep;
1003 print
'"'.mb_convert_encoding(
dol_trunc($companystatic->name, 32),
'ISO-8859-1').
'"'.$sep;
1004 print
'"'.length_accountg(html_entity_decode($k)).
'"'.$sep;
1005 print
'"'.length_accountg(html_entity_decode($k)).
'"'.$sep;
1007 print
'"'.$langs->trans(
"RevenueStamp").
'"'.$sep;
1008 print
'"'.mb_convert_encoding(
dol_trunc($companystatic->name, 16),
'ISO-8859-1').
' - '.$invoicestatic->ref.
' - '.$langs->trans(
"RevenueStamp").
'"'.$sep;
1009 print
'"'.($mt < 0 ?
price(-$mt) :
'').
'"'.$sep;
1010 print
'"'.($mt >= 0 ?
price($mt) :
'').
'"'.$sep;
1011 print
'"'.$journal.
'"';
1021if (empty($action) || $action ==
'view') {
1022 $title = $langs->trans(
"GenerationOfAccountingEntries").
' - '.$accountingjournalstatic->getNomUrl(0, 2, 1,
'', 1);
1023 $help_url =
'EN:Module_Double_Entry_Accounting|FR:Module_Comptabilité_en_Partie_Double#Génération_des_écritures_en_comptabilité';
1031 $description = $langs->trans(
"DescJournalOnlyBindedVisible").
'<br>';
1033 $description .= $langs->trans(
"DepositsAreNotIncluded");
1035 $description .= $langs->trans(
"DepositsAreIncluded");
1038 $listofchoices = array(
'notyet' => $langs->trans(
"NotYetInGeneralLedger"),
'already' => $langs->trans(
"AlreadyInGeneralLedger"));
1039 $period = $form->selectDate($date_start ? $date_start : -1,
'date_start', 0, 0, 0,
'', 1, 0).
' - '.$form->selectDate($date_end ? $date_end : -1,
'date_end', 0, 0, 0,
'', 1, 0);
1040 $period .=
' - '.$langs->trans(
"JournalizationInLedgerStatus").
' '.$form->selectarray(
'in_bookkeeping', $listofchoices, $in_bookkeeping, 1);
1042 $varlink =
'id_journal='.$id_journal;
1044 journalHead($nom, $nomlink, $period, $periodlink, $description, $builddate, $exportlink, array(
'action' =>
''),
'', $varlink);
1049 $sql =
"SELECT COUNT(rowid) as nb FROM ".MAIN_DB_PREFIX.
"accounting_fiscalyear WHERE entity = ".((int) $conf->entity);
1050 $resql = $db->query($sql);
1052 $obj = $db->fetch_object($resql);
1053 if ($obj->nb == 0) {
1054 print
'<br><div class="warning">'.img_warning().
' '.$langs->trans(
"TheFiscalPeriodIsNotDefined");
1055 $desc =
' : '.$langs->trans(
"AccountancyAreaDescFiscalPeriod", 4,
'{link}');
1056 $desc = str_replace(
'{link}',
'<strong>'.$langs->transnoentitiesnoconv(
"MenuAccountancy").
'-'.$langs->transnoentitiesnoconv(
"Setup").
"-".$langs->transnoentitiesnoconv(
"FiscalPeriod").
'</strong>', $desc);
1066 $acctCustomerNotConfigured = in_array(
getDolGlobalString(
'ACCOUNTING_ACCOUNT_CUSTOMER'), [
'',
'-1']);
1067 if ($acctCustomerNotConfigured) {
1068 print
'<br><div class="warning">'.img_warning().
' '.$langs->trans(
"SomeMandatoryStepsOfSetupWereNotDone");
1069 $desc =
' : '.$langs->trans(
"AccountancyAreaDescMisc", 4,
'{link}');
1070 $desc = str_replace(
'{link}',
'<strong>'.$langs->transnoentitiesnoconv(
"MenuAccountancy").
'-'.$langs->transnoentitiesnoconv(
"Setup").
"-".$langs->transnoentitiesnoconv(
"MenuDefaultAccounts").
'</strong>', $desc);
1074 print
'<br><div class="tabsAction tabsActionNoBottom centerimp">';
1075 if (
getDolGlobalString(
'ACCOUNTING_ENABLE_EXPORT_DRAFT_JOURNAL') && $in_bookkeeping ==
'notyet') {
1076 print
'<input type="button" class="butAction" name="exportcsv" value="'.$langs->trans(
"ExportDraftJournal").
'" onclick="launch_export();" />';
1078 if ($acctCustomerNotConfigured) {
1079 print
'<input type="button" class="butActionRefused classfortooltip" title="'.dol_escape_htmltag($langs->trans(
"SomeMandatoryStepsOfSetupWereNotDone")).
'" value="'.$langs->trans(
"WriteBookKeeping").
'" />';
1081 if ($in_bookkeeping ==
'notyet') {
1082 print
'<input type="button" class="butAction" name="writebookkeeping" value="'.$langs->trans(
"WriteBookKeeping").
'" onclick="writebookkeeping();" />';
1084 print
'<a href="#" class="butActionRefused classfortooltip" name="writebookkeeping">'.$langs->trans(
"WriteBookKeeping").
'</a>';
1091 <script type="text/javascript">
1092 function launch_export() {
1093 $("div.fiche form input[name=\"action\"]").val("exportcsv");
1094 $("div.fiche form input[type=\"submit\"]").click();
1095 $("div.fiche form input[name=\"action\"]").val("");
1097 function writebookkeeping() {
1098 console.log("click on writebookkeeping");
1099 $("div.fiche form input[name=\"action\"]").val("writebookkeeping");
1100 $("div.fiche form input[type=\"submit\"]").click();
1101 $("div.fiche form input[name=\"action\"]").val("");
1110 print
'<div class="div-table-responsive">';
1111 print
"<table class=\"noborder\" width=\"100%\">";
1112 print
"<tr class=\"liste_titre\">";
1113 print
"<td>".$langs->trans(
"Date").
"</td>";
1114 print
"<td>".$langs->trans(
"Piece").
' ('.$langs->trans(
"InvoiceRef").
")</td>";
1115 print
"<td>".$langs->trans(
"AccountAccounting").
"</td>";
1116 print
"<td>".$langs->trans(
"SubledgerAccount").
"</td>";
1117 print
"<td>".$langs->trans(
"LabelOperation").
"</td>";
1118 print
'<td class="center">'.$langs->trans(
"AccountingDebit").
"</td>";
1119 print
'<td class="center">'.$langs->trans(
"AccountingCredit").
"</td>";
1124 $companystatic =
new Client($db);
1125 $invoicestatic =
new Facture($db);
1127 foreach ($tabfac as $key => $val) {
1128 $companystatic->id = $tabcompany[$key][
'id'];
1129 $companystatic->name = $tabcompany[$key][
'name'];
1130 $companystatic->code_compta = $tabcompany[$key][
'code_compta'];
1131 $companystatic->code_compta_client = $tabcompany[$key][
'code_compta'];
1132 $companystatic->code_client = $tabcompany[$key][
'code_client'];
1133 $companystatic->client = 3;
1135 $invoicestatic->id = $key;
1136 $invoicestatic->ref = (string) $val[
"ref"];
1137 $invoicestatic->type = $val[
"type"];
1138 $invoicestatic->close_code = $val[
"close_code"];
1143 $replacedinvoice = 0;
1144 if ($invoicestatic->close_code == Facture::CLOSECODE_REPLACED) {
1145 $replacedinvoice = 1;
1146 $alreadydispatched = $invoicestatic->getVentilExportCompta();
1147 if ($alreadydispatched) {
1148 $replacedinvoice = 2;
1153 if ($replacedinvoice == 1) {
1154 print
'<tr class="oddeven">';
1155 print
"<!-- Replaced invoice -->";
1156 print
"<td>".$date.
"</td>";
1157 print
"<td><strike>".$invoicestatic->getNomUrl(1).
"</strike></td>";
1160 print $langs->trans(
"Replaced");
1167 print
'<td class="right"></td>';
1168 print
'<td class="right"></td>';
1174 if (isset($errorforinvoice[$key]) && $errorforinvoice[$key] ==
'somelinesarenotbound') {
1175 print
'<tr class="oddeven">';
1176 print
"<!-- Some lines are not bound -->";
1177 print
"<td>".$date.
"</td>";
1178 print
"<td>".$invoicestatic->getNomUrl(1).
"</td>";
1181 print
'<span class="error">'.$langs->trans(
'ErrorInvoiceContainsLinesNotYetBoundedShort', $val[
'ref']).
'</span>';
1188 print
'<td class="right"></td>';
1189 print
'<td class="right"></td>';
1196 if (
getDolGlobalString(
'INVOICE_USE_RETAINED_WARRANTY') && isset($tabwarranty[$key]) && is_array($tabwarranty[$key])) {
1197 foreach ($tabwarranty[$key] as $k => $mt) {
1198 print
'<tr class="oddeven">';
1199 print
"<!-- Thirdparty warranty -->";
1200 print
"<td>" . $date .
"</td>";
1201 print
"<td>" . $invoicestatic->getNomUrl(1) .
"</td>";
1205 if (($accountoshow ==
"") || $accountoshow ==
'NotDefined') {
1206 print
'<span class="error">' . $langs->trans(
"MainAccountForRetainedWarrantyNotDefined") .
'</span>';
1208 print $accountoshow;
1214 if (($accountoshow ==
"") || $accountoshow ==
'NotDefined') {
1215 print
'<span class="error">' . $langs->trans(
"ThirdpartyAccountNotDefined") .
'</span>';
1217 print $accountoshow;
1220 print
"<td>" . $companystatic->getNomUrl(0,
'customer', 16) .
' - ' . $invoicestatic->ref .
' - ' . $langs->trans(
"RetainedWarranty") .
"</td>";
1221 print
'<td class="right nowraponall amount">' . ($mt >= 0 ?
price($mt) :
'') .
"</td>";
1222 print
'<td class="right nowraponall amount">' . ($mt < 0 ?
price(-$mt) :
'') .
"</td>";
1228 foreach ($tabttc[$key] as $k => $mt) {
1229 print
'<tr class="oddeven">';
1230 print
"<!-- Thirdparty -->";
1231 print
"<td>".$date.
"</td>";
1232 print
"<td>".$invoicestatic->getNomUrl(1).
"</td>";
1236 if (($accountoshow ==
"") || $accountoshow ==
'NotDefined') {
1237 print
'<span class="error">'.$langs->trans(
"MainAccountForCustomersNotDefined").
'</span>';
1239 print $accountoshow;
1245 if (($accountoshow ==
"") || $accountoshow ==
'NotDefined') {
1246 print
'<span class="error">'.$langs->trans(
"ThirdpartyAccountNotDefined").
'</span>';
1248 print $accountoshow;
1251 print
"<td>".$companystatic->getNomUrl(0,
'customer', 16).
' - '.$invoicestatic->ref.
' - '.$langs->trans(
"SubledgerAccount").
"</td>";
1252 print
'<td class="right nowraponall amount">'.($mt >= 0 ?
price($mt) :
'').
"</td>";
1253 print
'<td class="right nowraponall amount">'.($mt < 0 ?
price(-$mt) :
'').
"</td>";
1260 foreach ($tabht[$key] as $k => $mt) {
1261 if (empty($conf->cache[
'accountingaccountincurrententity'][$k])) {
1263 $accountingaccount->fetch(0, $k,
true);
1264 $conf->cache[
'accountingaccountincurrententity'][$k] = $accountingaccount;
1266 $accountingaccount = $conf->cache[
'accountingaccountincurrententity'][$k];
1269 print
'<tr class="oddeven">';
1270 print
"<!-- Product -->";
1271 print
"<td>".$date.
"</td>";
1272 print
"<td>".$invoicestatic->getNomUrl(1).
"</td>";
1276 if (($accountoshow ==
"") || $accountoshow ==
'NotDefined') {
1277 print
'<span class="error">'.$langs->trans(
"ProductNotDefined").
'</span>';
1279 print $accountoshow;
1288 } elseif (($accountoshow ==
"") || $accountoshow ==
'NotDefined') {
1289 print
'<span class="error">' . $langs->trans(
"ThirdpartyAccountNotDefined") .
'</span>';
1292 $companystatic->id = $tabcompany[$key][
'id'];
1293 $companystatic->name = $tabcompany[$key][
'name'];
1294 print
"<td>".$companystatic->getNomUrl(0,
'customer', 16).
' - '.$invoicestatic->ref.
' - '.$accountingaccount->label.
"</td>";
1295 print
'<td class="right nowraponall amount">'.($mt < 0 ?
price(-$mt) :
'').
"</td>";
1296 print
'<td class="right nowraponall amount">'.($mt >= 0 ?
price($mt) :
'').
"</td>";
1303 $listoftax = array(0, 1, 2);
1304 foreach ($listoftax as $numtax) {
1305 $arrayofvat = $tabtva;
1307 $arrayofvat = $tablocaltax1;
1310 $arrayofvat = $tablocaltax2;
1314 foreach ($arrayofvat[$key] as $k => $mt) {
1316 print
'<tr class="oddeven">';
1317 print
"<!-- VAT -->";
1318 print
"<td>".$date.
"</td>";
1319 print
"<td>".$invoicestatic->getNomUrl(1).
"</td>";
1323 if (($accountoshow ==
"") || $accountoshow ==
'NotDefined') {
1324 print
'<span class="error">'.$langs->trans(
"VATAccountNotDefined").
' ('.$langs->trans(
"AccountingJournalType2").
')</span>';
1326 print $accountoshow;
1332 print
"<td>".$companystatic->getNomUrl(0,
'customer', 16).
' - '.$invoicestatic->ref;
1335 $tmpvatrate = (empty($def_tva[$key][$k]) ? (empty($arrayofvat[$key][$k]) ?
'' : $arrayofvat[$key][$k]) : implode(
', ', $def_tva[$key][$k]));
1336 print
' - '.$langs->trans(
"Taxes").
' '.$tmpvatrate.
' %';
1337 print($numtax ?
' - Localtax '.$numtax :
'');
1339 print
'<td class="right nowraponall amount">'.($mt < 0 ?
price(-$mt) :
'').
"</td>";
1340 print
'<td class="right nowraponall amount">'.($mt >= 0 ?
price($mt) :
'').
"</td>";
1349 if (isset($tabrevenuestamp[$key]) && is_array($tabrevenuestamp[$key])) {
1350 foreach ($tabrevenuestamp[$key] as $k => $mt) {
1351 print
'<tr class="oddeven">';
1352 print
"<!-- Thirdparty revenuestamp -->";
1353 print
"<td>" . $date .
"</td>";
1354 print
"<td>" . $invoicestatic->getNomUrl(1) .
"</td>";
1358 if (($accountoshow ==
"") || $accountoshow ==
'NotDefined') {
1359 print
'<span class="error">' . $langs->trans(
"MainAccountForRevenueStampSaleNotDefined") .
'</span>';
1361 print $accountoshow;
1367 print
"<td>" . $companystatic->getNomUrl(0,
'customer', 16) .
' - ' . $invoicestatic->ref .
' - ' . $langs->trans(
"RevenueStamp") .
"</td>";
1368 print
'<td class="right nowraponall amount">' . ($mt < 0 ?
price(-$mt) :
'') .
"</td>";
1369 print
'<td class="right nowraponall amount">' . ($mt >= 0 ?
price($mt) :
'') .
"</td>";
1376 print
'<tr class="oddeven"><td colspan="7"><span class="opacitymedium">'.$langs->trans(
"NoRecordFound").
'</span></td></tr>';
length_accountg($account)
Return General accounting account with defined length (used for product and miscellaneous)
journalHead($nom, $variant, $period, $periodlink, $description, $builddate, $exportlink='', $moreparam=array(), $calcmode='', $varlink='', $moreoptions=array())
Show header of a page used to transfer/dispatch data in accounting.
getDefaultDatesForTransfer()
Return Default dates for transfer based on periodicity option in accountancy setup.
length_accounta($accounta)
Return Auxiliary accounting account of thirdparties with defined length.
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)
Class to manage customers or prospects.
Class to manage invoices.
const TYPE_REPLACEMENT
Replacement invoice.
const TYPE_SITUATION
Situation invoice.
const TYPE_DEPOSIT
Deposit invoice.
const TYPE_CREDIT_NOTE
Credit note invoice.
Class to manage invoice lines.
Class to manage third parties objects (customers, suppliers, prospects...)
dol_get_first_day($year, $month=1, $gm=false)
Return GMT time for first day of a month or year.
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...
vatrate($rate, $addpercent=false, $info_bits=0, $usestarfornpr=0, $html=0)
Return a string with VAT rate label formatted for view output Used into pdf and HTML pages.
GETPOSTINT($paramname, $method=0)
Return the value of a $_GET or $_POST supervariable, converted into integer.
dol_string_nohtmltag($stringtoclean, $removelinefeed=1, $pagecodeto='UTF-8', $strip_tags=0, $removedoublespaces=1)
Clean a string from all HTML tags and entities.
price2num($amount, $rounding='', $option=0)
Function that return a number with universal decimal format (decimal separator is '.
getTaxesFromId($vatrate, $buyer=null, $seller=null, $firstparamisid=1)
Get tax (VAT) main information from Id.
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_print_date($time, $format='', $tzoutput='auto', $outputlangs=null, $encodetooutput=false)
Output date in a string format according to outputlangs (or langs if not defined).
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...
dol_trunc($string, $size=40, $trunc='right', $stringencoding='UTF-8', $nodot=0, $display=0)
Truncate a string to a particular length adding '…' if string larger than length.
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.