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];
229 $vatdata_cache[$tax_id] = $vatdata;
231 $compta_tva = (!empty($vatdata[
'accountancy_code_sell']) ? $vatdata[
'accountancy_code_sell'] : $cpttva);
232 $compta_localtax1 = (!empty($vatdata[
'accountancy_code_sell']) ? $vatdata[
'accountancy_code_sell'] : $cpttva);
233 $compta_localtax2 = (!empty($vatdata[
'accountancy_code_sell']) ? $vatdata[
'accountancy_code_sell'] : $cpttva);
236 if (
price2num($obj->tva_tx) || !empty($obj->vat_src_code)) {
237 $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.
')' :
''));
241 $situation_ratio = 1;
243 if ($obj->situation_cycle_ref) {
245 if ($obj->situation_percent == 0) {
246 $situation_ratio = 0;
249 $line->fetch($obj->fdid);
252 $prev_progress = $line->get_prev_progress($obj->rowid);
254 $situation_ratio = ($obj->situation_percent - $prev_progress) / $obj->situation_percent;
259 $revenuestamp = (float)
price2num($obj->revenuestamp,
'MT');
262 $tabfac[$obj->rowid][
"date"] = $db->jdate($obj->df);
263 $tabfac[$obj->rowid][
"datereg"] = $db->jdate($obj->dlr);
264 $tabfac[$obj->rowid][
"ref"] = $obj->ref;
265 $tabfac[$obj->rowid][
"type"] = $obj->type;
266 $tabfac[$obj->rowid][
"description"] = $obj->label_compte;
267 $tabfac[$obj->rowid][
"close_code"] = $obj->close_code;
268 $tabfac[$obj->rowid][
"revenuestamp"] = $revenuestamp;
272 if (!isset($tabttc[$obj->rowid][$compta_soc])) {
273 $tabttc[$obj->rowid][$compta_soc] = 0;
275 if (!isset($tabht[$obj->rowid][$compta_prod])) {
276 $tabht[$obj->rowid][$compta_prod] = 0;
278 if (!isset($tabtva[$obj->rowid][$compta_tva])) {
279 $tabtva[$obj->rowid][$compta_tva] = 0;
281 if (!isset($tablocaltax1[$obj->rowid][$compta_localtax1])) {
282 $tablocaltax1[$obj->rowid][$compta_localtax1] = 0;
284 if (!isset($tablocaltax2[$obj->rowid][$compta_localtax2])) {
285 $tablocaltax2[$obj->rowid][$compta_localtax2] = 0;
294 $total_ttc = $obj->total_ttc * $situation_ratio;
296 $total_ttc = $obj->total_ttc;
300 if (
getDolGlobalString(
'INVOICE_USE_RETAINED_WARRANTY') && $obj->retained_warranty > 0) {
301 $retained_warranty = (float)
price2num($total_ttc * $obj->retained_warranty / 100,
'MT');
302 $tabwarranty[$obj->rowid][$compta_soc] += $retained_warranty;
303 $total_ttc -= $retained_warranty;
306 $tabttc[$obj->rowid][$compta_soc] += $total_ttc;
307 $tabht[$obj->rowid][$compta_prod] += $obj->total_ht * $situation_ratio;
308 $tva_npr = ((($obj->info_bits & 1) == 1) ? 1 : 0);
311 $tabtva[$obj->rowid][$compta_tva] += $obj->total_tva;
312 $tablocaltax1[$obj->rowid][$compta_localtax1] += $obj->total_localtax1;
313 $tablocaltax2[$obj->rowid][$compta_localtax2] += $obj->total_localtax2;
315 $tabtva[$obj->rowid][$compta_tva] += $obj->total_tva * $situation_ratio;
316 $tablocaltax1[$obj->rowid][$compta_localtax1] += $obj->total_localtax1 * $situation_ratio;
317 $tablocaltax2[$obj->rowid][$compta_localtax2] += $obj->total_localtax2 * $situation_ratio;
321 $compta_revenuestamp =
'NotDefined';
322 if (!empty($revenuestamp)) {
323 $sqlrevenuestamp =
"SELECT accountancy_code_sell FROM ".MAIN_DB_PREFIX.
"c_revenuestamp";
324 $sqlrevenuestamp .=
" WHERE fk_pays = ".((int) $mysoc->country_id);
325 $sqlrevenuestamp .=
" AND taux = ".((float) $revenuestamp);
326 $sqlrevenuestamp .=
" AND active = 1";
327 $resqlrevenuestamp = $db->query($sqlrevenuestamp);
329 if ($resqlrevenuestamp) {
330 $num_rows_revenuestamp = $db->num_rows($resqlrevenuestamp);
331 if ($num_rows_revenuestamp > 1) {
332 dol_print_error($db,
'Failed 2 or more lines for the revenue stamp of your country. Check the dictionary of revenue stamp.');
334 $objrevenuestamp = $db->fetch_object($resqlrevenuestamp);
335 if ($objrevenuestamp) {
336 $compta_revenuestamp = $objrevenuestamp->accountancy_code_sell;
342 if (empty($tabrevenuestamp[$obj->rowid][$compta_revenuestamp]) && !empty($revenuestamp)) {
344 $tabttc[$obj->rowid][$compta_soc] += $obj->revenuestamp;
345 $tabrevenuestamp[$obj->rowid][$compta_revenuestamp] = $obj->revenuestamp;
348 $tabcompany[$obj->rowid] = array(
350 'name' => $obj->name,
351 'code_client' => $obj->code_client,
352 'code_compta' => $compta_soc
358 if ($i >
getDolGlobalInt(
'ACCOUNTANCY_MAX_TOO_MANY_LINES_TO_PROCESS', 10000)) {
360 setEventMessages(
"ErrorTooManyLinesToProcessPleaseUseAMoreSelectiveFilter",
null,
'errors');
371$errorforinvoice = array();
397 COUNT(fd.rowid) as nb
399 ".MAIN_DB_PREFIX.
"facturedet as fd
402 AND fd.fk_code_ventilation <= 0
403 AND fd.total_ttc <> 0
404 AND fk_facture IN (".$db->sanitize(implode(
",", array_keys($tabfac))).
")
407$resql = $db->query($sql);
409$num = $db->num_rows($resql);
412 $obj = $db->fetch_object($resql);
414 $errorforinvoice[$obj->fk_facture_fourn] =
'somelinesarenotbound';
421if ($action ==
'writebookkeeping' && !$error) {
425 $companystatic =
new Societe($db);
426 $invoicestatic =
new Facture($db);
429 $accountingaccountcustomer->fetch(
null,
getDolGlobalString(
'ACCOUNTING_ACCOUNT_CUSTOMER'),
true);
432 $accountingaccountcustomerwarranty->fetch(
null,
getDolGlobalString(
'ACCOUNTING_ACCOUNT_CUSTOMER_RETAINED_WARRANTY'),
true);
434 foreach ($tabfac as $key => $val) {
442 $companystatic->id = $tabcompany[$key][
'id'];
443 $companystatic->name = $tabcompany[$key][
'name'];
444 $companystatic->code_compta = $tabcompany[$key][
'code_compta'];
445 $companystatic->code_compta_client = $tabcompany[$key][
'code_compta'];
446 $companystatic->code_client = $tabcompany[$key][
'code_client'];
447 $companystatic->client = 3;
449 $invoicestatic->id = $key;
450 $invoicestatic->ref = (string) $val[
"ref"];
451 $invoicestatic->type = $val[
"type"];
452 $invoicestatic->close_code = $val[
"close_code"];
457 $replacedinvoice = 0;
458 if ($invoicestatic->close_code == Facture::CLOSECODE_REPLACED) {
459 $replacedinvoice = 1;
460 $alreadydispatched = $invoicestatic->getVentilExportCompta();
461 if ($alreadydispatched) {
462 $replacedinvoice = 2;
467 if ($replacedinvoice == 1) {
473 if (isset($errorforinvoice[$key]) && $errorforinvoice[$key] ==
'somelinesarenotbound') {
476 setEventMessages($langs->trans(
'ErrorInvoiceContainsLinesNotYetBounded', $val[
'ref']),
null,
'errors');
481 if (isset($tabwaranty[$key]) && is_array($tabwarranty[$key])) {
482 foreach ($tabwarranty[$key] as $k => $mt) {
484 $bookkeeping->doc_date = $val[
"date"];
485 $bookkeeping->date_lim_reglement = $val[
"datereg"];
486 $bookkeeping->doc_ref = $val[
"ref"];
487 $bookkeeping->date_creation = $now;
488 $bookkeeping->doc_type =
'customer_invoice';
489 $bookkeeping->fk_doc = $key;
490 $bookkeeping->fk_docdet = 0;
491 $bookkeeping->thirdparty_code = $companystatic->code_client;
493 $bookkeeping->subledger_account = $tabcompany[$key][
'code_compta'];
494 $bookkeeping->subledger_label = $tabcompany[$key][
'name'];
496 $bookkeeping->numero_compte =
getDolGlobalString(
'ACCOUNTING_ACCOUNT_CUSTOMER_RETAINED_WARRANTY');
497 $bookkeeping->label_compte = $accountingaccountcustomerwarranty->label;
499 $bookkeeping->label_operation =
dol_trunc($companystatic->name, 16) .
' - ' . $invoicestatic->ref .
' - ' . $langs->trans(
"RetainedWarranty");
500 $bookkeeping->montant = $mt;
501 $bookkeeping->sens = ($mt >= 0) ?
'D' :
'C';
502 $bookkeeping->debit = ($mt >= 0) ? $mt : 0;
503 $bookkeeping->credit = ($mt < 0) ? -$mt : 0;
504 $bookkeeping->code_journal = $journal;
505 $bookkeeping->journal_label = $langs->transnoentities($journal_label);
506 $bookkeeping->fk_user_author = $user->id;
507 $bookkeeping->entity = $conf->entity;
509 $totaldebit += $bookkeeping->debit;
510 $totalcredit += $bookkeeping->credit;
512 $result = $bookkeeping->create($user);
514 if ($bookkeeping->error ==
'BookkeepingRecordAlreadyExists') {
517 $errorforinvoice[$key] =
'alreadyjournalized';
522 $errorforinvoice[$key] =
'other';
531 if (!$errorforline) {
532 foreach ($tabttc[$key] as $k => $mt) {
534 $bookkeeping->doc_date = $val[
"date"];
535 $bookkeeping->date_lim_reglement = $val[
"datereg"];
536 $bookkeeping->doc_ref = $val[
"ref"];
537 $bookkeeping->date_creation = $now;
538 $bookkeeping->doc_type =
'customer_invoice';
539 $bookkeeping->fk_doc = $key;
540 $bookkeeping->fk_docdet = 0;
541 $bookkeeping->thirdparty_code = $companystatic->code_client;
543 $bookkeeping->subledger_account = $tabcompany[$key][
'code_compta'];
544 $bookkeeping->subledger_label = $tabcompany[$key][
'name'];
547 $bookkeeping->label_compte = $accountingaccountcustomer->label;
549 $bookkeeping->label_operation =
dol_trunc($companystatic->name, 16).
' - '.$invoicestatic->ref.
' - '.$langs->trans(
"SubledgerAccount");
550 $bookkeeping->montant = $mt;
551 $bookkeeping->sens = ($mt >= 0) ?
'D' :
'C';
552 $bookkeeping->debit = ($mt >= 0) ? $mt : 0;
553 $bookkeeping->credit = ($mt < 0) ? -$mt : 0;
554 $bookkeeping->code_journal = $journal;
555 $bookkeeping->journal_label = $langs->transnoentities($journal_label);
556 $bookkeeping->fk_user_author = $user->id;
557 $bookkeeping->entity = $conf->entity;
559 $totaldebit += $bookkeeping->debit;
560 $totalcredit += $bookkeeping->credit;
562 $result = $bookkeeping->create($user);
564 if ($bookkeeping->error ==
'BookkeepingRecordAlreadyExists') {
567 $errorforinvoice[$key] =
'alreadyjournalized';
572 $errorforinvoice[$key] =
'other';
577 require_once DOL_DOCUMENT_ROOT .
'/accountancy/class/lettering.class.php';
580 $nb_lettering = $lettering_static->bookkeepingLettering(array($bookkeeping->id));
587 if (!$errorforline) {
588 foreach ($tabht[$key] as $k => $mt) {
589 if (empty($conf->cache[
'accountingaccountincurrententity'][$k])) {
591 $accountingaccount->fetch(0, $k,
true);
592 $conf->cache[
'accountingaccountincurrententity'][$k] = $accountingaccount;
594 $accountingaccount = $conf->cache[
'accountingaccountincurrententity'][$k];
597 $label_account = $accountingaccount->label;
600 if ($accountingaccount->id > 0) {
602 $bookkeeping->doc_date = $val[
"date"];
603 $bookkeeping->date_lim_reglement = $val[
"datereg"];
604 $bookkeeping->doc_ref = $val[
"ref"];
605 $bookkeeping->date_creation = $now;
606 $bookkeeping->doc_type =
'customer_invoice';
607 $bookkeeping->fk_doc = $key;
608 $bookkeeping->fk_docdet = 0;
609 $bookkeeping->thirdparty_code = $companystatic->code_client;
613 $bookkeeping->subledger_account = $tabcompany[$key][
'code_compta'];
614 $bookkeeping->subledger_label = $tabcompany[$key][
'name'];
616 $bookkeeping->subledger_account =
'';
617 $bookkeeping->subledger_label =
'';
620 $bookkeeping->subledger_account =
'';
621 $bookkeeping->subledger_label =
'';
624 $bookkeeping->numero_compte = $k;
625 $bookkeeping->label_compte = $label_account;
627 $bookkeeping->label_operation =
dol_trunc($companystatic->name, 16).
' - '.$invoicestatic->ref.
' - '.$label_account;
628 $bookkeeping->montant = $mt;
629 $bookkeeping->sens = ($mt < 0) ?
'D' :
'C';
630 $bookkeeping->debit = ($mt < 0) ? -$mt : 0;
631 $bookkeeping->credit = ($mt >= 0) ? $mt : 0;
632 $bookkeeping->code_journal = $journal;
633 $bookkeeping->journal_label = $langs->transnoentities($journal_label);
634 $bookkeeping->fk_user_author = $user->id;
635 $bookkeeping->entity = $conf->entity;
637 $totaldebit += $bookkeeping->debit;
638 $totalcredit += $bookkeeping->credit;
640 $result = $bookkeeping->create($user);
642 if ($bookkeeping->error ==
'BookkeepingRecordAlreadyExists') {
645 $errorforinvoice[$key] =
'alreadyjournalized';
650 $errorforinvoice[$key] =
'other';
659 if (!$errorforline) {
660 $listoftax = array(0, 1, 2);
661 foreach ($listoftax as $numtax) {
662 $arrayofvat = $tabtva;
664 $arrayofvat = $tablocaltax1;
667 $arrayofvat = $tablocaltax2;
670 foreach ($arrayofvat[$key] as $k => $mt) {
672 $accountingaccount->fetch(
null, $k,
true);
673 $label_account = $accountingaccount->label;
676 $bookkeeping->doc_date = $val[
"date"];
677 $bookkeeping->date_lim_reglement = $val[
"datereg"];
678 $bookkeeping->doc_ref = $val[
"ref"];
679 $bookkeeping->date_creation = $now;
680 $bookkeeping->doc_type =
'customer_invoice';
681 $bookkeeping->fk_doc = $key;
682 $bookkeeping->fk_docdet = 0;
683 $bookkeeping->thirdparty_code = $companystatic->code_client;
685 $bookkeeping->subledger_account =
'';
686 $bookkeeping->subledger_label =
'';
688 $bookkeeping->numero_compte = $k;
689 $bookkeeping->label_compte = $label_account;
692 $bookkeeping->label_operation =
dol_trunc($companystatic->name, 16).
' - '.$invoicestatic->ref;
693 $tmpvatrate = (empty($def_tva[$key][$k]) ? (empty($arrayofvat[$key][$k]) ?
'' : $arrayofvat[$key][$k]) : implode(
', ', $def_tva[$key][$k]));
694 $bookkeeping->label_operation .=
' - '.$langs->trans(
"Taxes").
' '.$tmpvatrate.
' %';
695 $bookkeeping->label_operation .= ($numtax ?
' - Localtax '.$numtax :
'');
697 $bookkeeping->montant = $mt;
698 $bookkeeping->sens = ($mt < 0) ?
'D' :
'C';
699 $bookkeeping->debit = ($mt < 0) ? -$mt : 0;
700 $bookkeeping->credit = ($mt >= 0) ? $mt : 0;
701 $bookkeeping->code_journal = $journal;
702 $bookkeeping->journal_label = $langs->transnoentities($journal_label);
703 $bookkeeping->fk_user_author = $user->id;
704 $bookkeeping->entity = $conf->entity;
706 $totaldebit += $bookkeeping->debit;
707 $totalcredit += $bookkeeping->credit;
709 $result = $bookkeeping->create($user);
711 if ($bookkeeping->error ==
'BookkeepingRecordAlreadyExists') {
714 $errorforinvoice[$key] =
'alreadyjournalized';
719 $errorforinvoice[$key] =
'other';
729 if (!$errorforline) {
730 if (isset($tabrevenuestamp[$key]) && is_array($tabrevenuestamp[$key])) {
731 foreach ($tabrevenuestamp[$key] as $k => $mt) {
733 $accountingaccount->fetch(
null, $k,
true);
734 $label_account = $accountingaccount->label;
737 $bookkeeping->doc_date = $val[
"date"];
738 $bookkeeping->date_lim_reglement = $val[
"datereg"];
739 $bookkeeping->doc_ref = $val[
"ref"];
740 $bookkeeping->date_creation = $now;
741 $bookkeeping->doc_type =
'customer_invoice';
742 $bookkeeping->fk_doc = $key;
743 $bookkeeping->fk_docdet = 0;
744 $bookkeeping->thirdparty_code = $companystatic->code_client;
746 $bookkeeping->subledger_account =
'';
747 $bookkeeping->subledger_label =
'';
749 $bookkeeping->numero_compte = $k;
750 $bookkeeping->label_compte = $label_account;
752 $bookkeeping->label_operation =
dol_trunc($companystatic->name, 16) .
' - ' . $invoicestatic->ref .
' - ' . $langs->trans(
"RevenueStamp");
753 $bookkeeping->montant = $mt;
754 $bookkeeping->sens = ($mt < 0) ?
'D' :
'C';
755 $bookkeeping->debit = ($mt < 0) ? -$mt : 0;
756 $bookkeeping->credit = ($mt >= 0) ? $mt : 0;
757 $bookkeeping->code_journal = $journal;
758 $bookkeeping->journal_label = $langs->transnoentities($journal_label);
759 $bookkeeping->fk_user_author = $user->id;
760 $bookkeeping->entity = $conf->entity;
762 $totaldebit += $bookkeeping->debit;
763 $totalcredit += $bookkeeping->credit;
765 $result = $bookkeeping->create($user);
767 if ($bookkeeping->error ==
'BookkeepingRecordAlreadyExists') {
770 $errorforinvoice[$key] =
'alreadyjournalized';
775 $errorforinvoice[$key] =
'other';
785 if (!$errorforline && (
price2num($totaldebit,
'MT') !=
price2num($totalcredit,
'MT'))) {
788 $errorforinvoice[$key] =
'amountsnotbalanced';
789 setEventMessages(
'We Tried to insert a non balanced transaction in book for '.$invoicestatic->ref.
'. Canceled. Surely a bug.',
null,
'errors');
792 if (!$errorforline) {
798 setEventMessages($langs->trans(
"ErrorTooManyErrorsProcessStopped"),
null,
'errors');
806 if (empty($error) && count($tabpay) > 0) {
808 } elseif (count($tabpay) == $error) {
811 setEventMessages($langs->trans(
"GeneralLedgerSomeRecordWasNotRecorded"),
null,
'warnings');
817 if (count($tabpay) != $error) {
818 $param =
'id_journal='.$id_journal;
819 $param .=
'&date_startday='.$date_startday;
820 $param .=
'&date_startmonth='.$date_startmonth;
821 $param .=
'&date_startyear='.$date_startyear;
822 $param .=
'&date_endday='.$date_endday;
823 $param .=
'&date_endmonth='.$date_endmonth;
824 $param .=
'&date_endyear='.$date_endyear;
825 $param .=
'&in_bookkeeping='.$in_bookkeeping;
826 header(
"Location: ".$_SERVER[
'PHP_SELF'].($param ?
'?'.$param :
''));
837$form =
new Form($db);
840if ($action ==
'exportcsv' && !$error) {
844 $filename =
'journal';
845 $type_export =
'journal';
846 include DOL_DOCUMENT_ROOT.
'/accountancy/tpl/export_journal.tpl.php';
848 $companystatic =
new Client($db);
849 $invoicestatic =
new Facture($db);
851 foreach ($tabfac as $key => $val) {
852 $companystatic->id = $tabcompany[$key][
'id'];
853 $companystatic->name = $tabcompany[$key][
'name'];
854 $companystatic->code_compta = $tabcompany[$key][
'code_compta'];
855 $companystatic->code_compta_client = $tabcompany[$key][
'code_compta'];
856 $companystatic->code_client = $tabcompany[$key][
'code_client'];
857 $companystatic->client = 3;
859 $invoicestatic->id = $key;
860 $invoicestatic->ref = (string) $val[
"ref"];
861 $invoicestatic->type = $val[
"type"];
862 $invoicestatic->close_code = $val[
"close_code"];
867 $replacedinvoice = 0;
868 if ($invoicestatic->close_code == Facture::CLOSECODE_REPLACED) {
869 $replacedinvoice = 1;
870 $alreadydispatched = $invoicestatic->getVentilExportCompta();
871 if ($alreadydispatched) {
872 $replacedinvoice = 2;
877 if ($replacedinvoice == 1) {
882 if (
getDolGlobalString(
'INVOICE_USE_RETAINED_WARRANTY') && isset($tabwarranty[$key])) {
883 foreach ($tabwarranty[$key] as $k => $mt) {
885 print
'"'.$key.
'"'.$sep;
886 print
'"'.$date.
'"'.$sep;
887 print
'"'.$val[
"ref"].
'"'.$sep;
888 print
'"'.mb_convert_encoding(
dol_trunc($companystatic->name, 32),
'ISO-8859-1').
'"'.$sep;
889 print
'"'.length_accounta(html_entity_decode($k)).
'"'.$sep;
890 print
'"'.length_accountg(
getDolGlobalString(
'ACCOUNTING_ACCOUNT_CUSTOMER_RETAINED_WARRANTY')).
'"'.$sep;
891 print
'"'.length_accounta(html_entity_decode($k)).
'"'.$sep;
892 print
'"'.$langs->trans(
"Thirdparty").
'"'.$sep;
893 print
'"'.mb_convert_encoding(
dol_trunc($companystatic->name, 16),
'ISO-8859-1').
' - '.$invoicestatic->ref.
' - '.$langs->trans(
"RetainedWarranty").
'"'.$sep;
894 print
'"'.($mt >= 0 ?
price($mt) :
'').
'"'.$sep;
895 print
'"'.($mt < 0 ?
price(-$mt) :
'').
'"'.$sep;
896 print
'"'.$journal.
'"';
903 foreach ($tabttc[$key] as $k => $mt) {
905 print
'"'.$key.
'"'.$sep;
906 print
'"'.$date.
'"'.$sep;
907 print
'"'.$val[
"ref"].
'"'.$sep;
908 print
'"'.mb_convert_encoding(
dol_trunc($companystatic->name, 32),
'ISO-8859-1').
'"'.$sep;
909 print
'"'.length_accounta(html_entity_decode($k)).
'"'.$sep;
910 print
'"'.length_accountg(
getDolGlobalString(
'ACCOUNTING_ACCOUNT_CUSTOMER')).
'"'.$sep;
911 print
'"'.length_accounta(html_entity_decode($k)).
'"'.$sep;
912 print
'"'.$langs->trans(
"Thirdparty").
'"'.$sep;
913 print
'"'.mb_convert_encoding(
dol_trunc($companystatic->name, 16),
'ISO-8859-1').
' - '.$invoicestatic->ref.
' - '.$langs->trans(
"Thirdparty").
'"'.$sep;
914 print
'"'.($mt >= 0 ?
price($mt) :
'').
'"'.$sep;
915 print
'"'.($mt < 0 ?
price(-$mt) :
'').
'"'.$sep;
916 print
'"'.$journal.
'"';
922 foreach ($tabht[$key] as $k => $mt) {
924 $accountingaccount->fetch(
null, $k,
true);
926 print
'"'.$key.
'"'.$sep;
927 print
'"'.$date.
'"'.$sep;
928 print
'"'.$val[
"ref"].
'"'.$sep;
929 print
'"'.mb_convert_encoding(
dol_trunc($companystatic->name, 32),
'ISO-8859-1').
'"'.$sep;
930 print
'"'.length_accountg(html_entity_decode($k)).
'"'.$sep;
931 print
'"'.length_accountg(html_entity_decode($k)).
'"'.$sep;
933 print
'"'.mb_convert_encoding(
dol_trunc($accountingaccount->label, 32),
'ISO-8859-1').
'"'.$sep;
934 print
'"'.mb_convert_encoding(
dol_trunc($companystatic->name, 16),
'ISO-8859-1').
' - '.
dol_trunc($accountingaccount->label, 32).
'"'.$sep;
935 print
'"'.($mt < 0 ?
price(-$mt) :
'').
'"'.$sep;
936 print
'"'.($mt >= 0 ?
price($mt) :
'').
'"'.$sep;
937 print
'"'.$journal.
'"';
943 $listoftax = array(0, 1, 2);
944 foreach ($listoftax as $numtax) {
945 $arrayofvat = $tabtva;
947 $arrayofvat = $tablocaltax1;
950 $arrayofvat = $tablocaltax2;
953 foreach ($arrayofvat[$key] as $k => $mt) {
955 print
'"'.$key.
'"'.$sep;
956 print
'"'.$date.
'"'.$sep;
957 print
'"'.$val[
"ref"].
'"'.$sep;
958 print
'"'.mb_convert_encoding(
dol_trunc($companystatic->name, 32),
'ISO-8859-1').
'"'.$sep;
959 print
'"'.length_accountg(html_entity_decode($k)).
'"'.$sep;
960 print
'"'.length_accountg(html_entity_decode($k)).
'"'.$sep;
962 print
'"'.$langs->trans(
"VAT").
' - '.implode(
', ', $def_tva[$key][$k]).
' %"'.$sep;
963 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;
964 print
'"'.($mt < 0 ?
price(-$mt) :
'').
'"'.$sep;
965 print
'"'.($mt >= 0 ?
price($mt) :
'').
'"'.$sep;
966 print
'"'.$journal.
'"';
973 if (isset($tabrevenuestamp[$key])) {
974 foreach ($tabrevenuestamp[$key] as $k => $mt) {
976 print
'"'.$key.
'"'.$sep;
977 print
'"'.$date.
'"'.$sep;
978 print
'"'.$val[
"ref"].
'"'.$sep;
979 print
'"'.mb_convert_encoding(
dol_trunc($companystatic->name, 32),
'ISO-8859-1').
'"'.$sep;
980 print
'"'.length_accountg(html_entity_decode($k)).
'"'.$sep;
981 print
'"'.length_accountg(html_entity_decode($k)).
'"'.$sep;
983 print
'"'.$langs->trans(
"RevenueStamp").
'"'.$sep;
984 print
'"'.mb_convert_encoding(
dol_trunc($companystatic->name, 16),
'ISO-8859-1').
' - '.$invoicestatic->ref.
' - '.$langs->trans(
"RevenueStamp").
'"'.$sep;
985 print
'"'.($mt < 0 ?
price(-$mt) :
'').
'"'.$sep;
986 print
'"'.($mt >= 0 ?
price($mt) :
'').
'"'.$sep;
987 print
'"'.$journal.
'"';
997if (empty($action) || $action ==
'view') {
998 $title = $langs->trans(
"GenerationOfAccountingEntries").
' - '.$accountingjournalstatic->getNomUrl(0, 2, 1,
'', 1);
999 $help_url =
'EN:Module_Double_Entry_Accounting|FR:Module_Comptabilité_en_Partie_Double#Génération_des_écritures_en_comptabilité';
1007 $description = $langs->trans(
"DescJournalOnlyBindedVisible").
'<br>';
1009 $description .= $langs->trans(
"DepositsAreNotIncluded");
1011 $description .= $langs->trans(
"DepositsAreIncluded");
1014 $listofchoices = array(
'notyet' => $langs->trans(
"NotYetInGeneralLedger"),
'already' => $langs->trans(
"AlreadyInGeneralLedger"));
1015 $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);
1016 $period .=
' - '.$langs->trans(
"JournalizationInLedgerStatus").
' '.$form->selectarray(
'in_bookkeeping', $listofchoices, $in_bookkeeping, 1);
1018 $varlink =
'id_journal='.$id_journal;
1020 journalHead($nom, $nomlink, $period, $periodlink, $description, $builddate, $exportlink, array(
'action' =>
''),
'', $varlink);
1025 $sql =
"SELECT COUNT(rowid) as nb FROM ".MAIN_DB_PREFIX.
"accounting_fiscalyear WHERE entity = ".((int) $conf->entity);
1026 $resql = $db->query($sql);
1028 $obj = $db->fetch_object($resql);
1029 if ($obj->nb == 0) {
1030 print
'<br><div class="warning">'.img_warning().
' '.$langs->trans(
"TheFiscalPeriodIsNotDefined");
1031 $desc =
' : '.$langs->trans(
"AccountancyAreaDescFiscalPeriod", 4,
'{link}');
1032 $desc = str_replace(
'{link}',
'<strong>'.$langs->transnoentitiesnoconv(
"MenuAccountancy").
'-'.$langs->transnoentitiesnoconv(
"Setup").
"-".$langs->transnoentitiesnoconv(
"FiscalPeriod").
'</strong>', $desc);
1042 $acctCustomerNotConfigured = in_array(
getDolGlobalString(
'ACCOUNTING_ACCOUNT_CUSTOMER'), [
'',
'-1']);
1043 if ($acctCustomerNotConfigured) {
1044 print
'<br><div class="warning">'.img_warning().
' '.$langs->trans(
"SomeMandatoryStepsOfSetupWereNotDone");
1045 $desc =
' : '.$langs->trans(
"AccountancyAreaDescMisc", 4,
'{link}');
1046 $desc = str_replace(
'{link}',
'<strong>'.$langs->transnoentitiesnoconv(
"MenuAccountancy").
'-'.$langs->transnoentitiesnoconv(
"Setup").
"-".$langs->transnoentitiesnoconv(
"MenuDefaultAccounts").
'</strong>', $desc);
1050 print
'<br><div class="tabsAction tabsActionNoBottom centerimp">';
1051 if (
getDolGlobalString(
'ACCOUNTING_ENABLE_EXPORT_DRAFT_JOURNAL') && $in_bookkeeping ==
'notyet') {
1052 print
'<input type="button" class="butAction" name="exportcsv" value="'.$langs->trans(
"ExportDraftJournal").
'" onclick="launch_export();" />';
1054 if ($acctCustomerNotConfigured) {
1055 print
'<input type="button" class="butActionRefused classfortooltip" title="'.dol_escape_htmltag($langs->trans(
"SomeMandatoryStepsOfSetupWereNotDone")).
'" value="'.$langs->trans(
"WriteBookKeeping").
'" />';
1057 if ($in_bookkeeping ==
'notyet') {
1058 print
'<input type="button" class="butAction" name="writebookkeeping" value="'.$langs->trans(
"WriteBookKeeping").
'" onclick="writebookkeeping();" />';
1060 print
'<a href="#" class="butActionRefused classfortooltip" name="writebookkeeping">'.$langs->trans(
"WriteBookKeeping").
'</a>';
1067 <script type="text/javascript">
1068 function launch_export() {
1069 $("div.fiche form input[name=\"action\"]").val("exportcsv");
1070 $("div.fiche form input[type=\"submit\"]").click();
1071 $("div.fiche form input[name=\"action\"]").val("");
1073 function writebookkeeping() {
1074 console.log("click on writebookkeeping");
1075 $("div.fiche form input[name=\"action\"]").val("writebookkeeping");
1076 $("div.fiche form input[type=\"submit\"]").click();
1077 $("div.fiche form input[name=\"action\"]").val("");
1086 print
'<div class="div-table-responsive">';
1087 print
"<table class=\"noborder\" width=\"100%\">";
1088 print
"<tr class=\"liste_titre\">";
1089 print
"<td>".$langs->trans(
"Date").
"</td>";
1090 print
"<td>".$langs->trans(
"Piece").
' ('.$langs->trans(
"InvoiceRef").
")</td>";
1091 print
"<td>".$langs->trans(
"AccountAccounting").
"</td>";
1092 print
"<td>".$langs->trans(
"SubledgerAccount").
"</td>";
1093 print
"<td>".$langs->trans(
"LabelOperation").
"</td>";
1094 print
'<td class="center">'.$langs->trans(
"AccountingDebit").
"</td>";
1095 print
'<td class="center">'.$langs->trans(
"AccountingCredit").
"</td>";
1100 $companystatic =
new Client($db);
1101 $invoicestatic =
new Facture($db);
1103 foreach ($tabfac as $key => $val) {
1104 $companystatic->id = $tabcompany[$key][
'id'];
1105 $companystatic->name = $tabcompany[$key][
'name'];
1106 $companystatic->code_compta = $tabcompany[$key][
'code_compta'];
1107 $companystatic->code_compta_client = $tabcompany[$key][
'code_compta'];
1108 $companystatic->code_client = $tabcompany[$key][
'code_client'];
1109 $companystatic->client = 3;
1111 $invoicestatic->id = $key;
1112 $invoicestatic->ref = (string) $val[
"ref"];
1113 $invoicestatic->type = $val[
"type"];
1114 $invoicestatic->close_code = $val[
"close_code"];
1119 $replacedinvoice = 0;
1120 if ($invoicestatic->close_code == Facture::CLOSECODE_REPLACED) {
1121 $replacedinvoice = 1;
1122 $alreadydispatched = $invoicestatic->getVentilExportCompta();
1123 if ($alreadydispatched) {
1124 $replacedinvoice = 2;
1129 if ($replacedinvoice == 1) {
1130 print
'<tr class="oddeven">';
1131 print
"<!-- Replaced invoice -->";
1132 print
"<td>".$date.
"</td>";
1133 print
"<td><strike>".$invoicestatic->getNomUrl(1).
"</strike></td>";
1136 print $langs->trans(
"Replaced");
1143 print
'<td class="right"></td>';
1144 print
'<td class="right"></td>';
1150 if (isset($errorforinvoice[$key]) && $errorforinvoice[$key] ==
'somelinesarenotbound') {
1151 print
'<tr class="oddeven">';
1152 print
"<!-- Some lines are not bound -->";
1153 print
"<td>".$date.
"</td>";
1154 print
"<td>".$invoicestatic->getNomUrl(1).
"</td>";
1157 print
'<span class="error">'.$langs->trans(
'ErrorInvoiceContainsLinesNotYetBoundedShort', $val[
'ref']).
'</span>';
1164 print
'<td class="right"></td>';
1165 print
'<td class="right"></td>';
1172 if (
getDolGlobalString(
'INVOICE_USE_RETAINED_WARRANTY') && isset($tabwarranty[$key]) && is_array($tabwarranty[$key])) {
1173 foreach ($tabwarranty[$key] as $k => $mt) {
1174 print
'<tr class="oddeven">';
1175 print
"<!-- Thirdparty warranty -->";
1176 print
"<td>" . $date .
"</td>";
1177 print
"<td>" . $invoicestatic->getNomUrl(1) .
"</td>";
1181 if (($accountoshow ==
"") || $accountoshow ==
'NotDefined') {
1182 print
'<span class="error">' . $langs->trans(
"MainAccountForRetainedWarrantyNotDefined") .
'</span>';
1184 print $accountoshow;
1190 if (($accountoshow ==
"") || $accountoshow ==
'NotDefined') {
1191 print
'<span class="error">' . $langs->trans(
"ThirdpartyAccountNotDefined") .
'</span>';
1193 print $accountoshow;
1196 print
"<td>" . $companystatic->getNomUrl(0,
'customer', 16) .
' - ' . $invoicestatic->ref .
' - ' . $langs->trans(
"RetainedWarranty") .
"</td>";
1197 print
'<td class="right nowraponall amount">' . ($mt >= 0 ?
price($mt) :
'') .
"</td>";
1198 print
'<td class="right nowraponall amount">' . ($mt < 0 ?
price(-$mt) :
'') .
"</td>";
1204 foreach ($tabttc[$key] as $k => $mt) {
1205 print
'<tr class="oddeven">';
1206 print
"<!-- Thirdparty -->";
1207 print
"<td>".$date.
"</td>";
1208 print
"<td>".$invoicestatic->getNomUrl(1).
"</td>";
1212 if (($accountoshow ==
"") || $accountoshow ==
'NotDefined') {
1213 print
'<span class="error">'.$langs->trans(
"MainAccountForCustomersNotDefined").
'</span>';
1215 print $accountoshow;
1221 if (($accountoshow ==
"") || $accountoshow ==
'NotDefined') {
1222 print
'<span class="error">'.$langs->trans(
"ThirdpartyAccountNotDefined").
'</span>';
1224 print $accountoshow;
1227 print
"<td>".$companystatic->getNomUrl(0,
'customer', 16).
' - '.$invoicestatic->ref.
' - '.$langs->trans(
"SubledgerAccount").
"</td>";
1228 print
'<td class="right nowraponall amount">'.($mt >= 0 ?
price($mt) :
'').
"</td>";
1229 print
'<td class="right nowraponall amount">'.($mt < 0 ?
price(-$mt) :
'').
"</td>";
1236 foreach ($tabht[$key] as $k => $mt) {
1237 if (empty($conf->cache[
'accountingaccountincurrententity'][$k])) {
1239 $accountingaccount->fetch(0, $k,
true);
1240 $conf->cache[
'accountingaccountincurrententity'][$k] = $accountingaccount;
1242 $accountingaccount = $conf->cache[
'accountingaccountincurrententity'][$k];
1245 print
'<tr class="oddeven">';
1246 print
"<!-- Product -->";
1247 print
"<td>".$date.
"</td>";
1248 print
"<td>".$invoicestatic->getNomUrl(1).
"</td>";
1252 if (($accountoshow ==
"") || $accountoshow ==
'NotDefined') {
1253 print
'<span class="error">'.$langs->trans(
"ProductNotDefined").
'</span>';
1255 print $accountoshow;
1264 } elseif (($accountoshow ==
"") || $accountoshow ==
'NotDefined') {
1265 print
'<span class="error">' . $langs->trans(
"ThirdpartyAccountNotDefined") .
'</span>';
1268 $companystatic->id = $tabcompany[$key][
'id'];
1269 $companystatic->name = $tabcompany[$key][
'name'];
1270 print
"<td>".$companystatic->getNomUrl(0,
'customer', 16).
' - '.$invoicestatic->ref.
' - '.$accountingaccount->label.
"</td>";
1271 print
'<td class="right nowraponall amount">'.($mt < 0 ?
price(-$mt) :
'').
"</td>";
1272 print
'<td class="right nowraponall amount">'.($mt >= 0 ?
price($mt) :
'').
"</td>";
1279 $listoftax = array(0, 1, 2);
1280 foreach ($listoftax as $numtax) {
1281 $arrayofvat = $tabtva;
1283 $arrayofvat = $tablocaltax1;
1286 $arrayofvat = $tablocaltax2;
1290 foreach ($arrayofvat[$key] as $k => $mt) {
1292 print
'<tr class="oddeven">';
1293 print
"<!-- VAT -->";
1294 print
"<td>".$date.
"</td>";
1295 print
"<td>".$invoicestatic->getNomUrl(1).
"</td>";
1299 if (($accountoshow ==
"") || $accountoshow ==
'NotDefined') {
1300 print
'<span class="error">'.$langs->trans(
"VATAccountNotDefined").
' ('.$langs->trans(
"AccountingJournalType2").
')</span>';
1302 print $accountoshow;
1308 print
"<td>".$companystatic->getNomUrl(0,
'customer', 16).
' - '.$invoicestatic->ref;
1311 $tmpvatrate = (empty($def_tva[$key][$k]) ? (empty($arrayofvat[$key][$k]) ?
'' : $arrayofvat[$key][$k]) : implode(
', ', $def_tva[$key][$k]));
1312 print
' - '.$langs->trans(
"Taxes").
' '.$tmpvatrate.
' %';
1313 print($numtax ?
' - Localtax '.$numtax :
'');
1315 print
'<td class="right nowraponall amount">'.($mt < 0 ?
price(-$mt) :
'').
"</td>";
1316 print
'<td class="right nowraponall amount">'.($mt >= 0 ?
price($mt) :
'').
"</td>";
1325 if (isset($tabrevenuestamp[$key]) && is_array($tabrevenuestamp[$key])) {
1326 foreach ($tabrevenuestamp[$key] as $k => $mt) {
1327 print
'<tr class="oddeven">';
1328 print
"<!-- Thirdparty revenuestamp -->";
1329 print
"<td>" . $date .
"</td>";
1330 print
"<td>" . $invoicestatic->getNomUrl(1) .
"</td>";
1334 if (($accountoshow ==
"") || $accountoshow ==
'NotDefined') {
1335 print
'<span class="error">' . $langs->trans(
"MainAccountForRevenueStampSaleNotDefined") .
'</span>';
1337 print $accountoshow;
1343 print
"<td>" . $companystatic->getNomUrl(0,
'customer', 16) .
' - ' . $invoicestatic->ref .
' - ' . $langs->trans(
"RevenueStamp") .
"</td>";
1344 print
'<td class="right nowraponall amount">' . ($mt < 0 ?
price(-$mt) :
'') .
"</td>";
1345 print
'<td class="right nowraponall amount">' . ($mt >= 0 ?
price($mt) :
'') .
"</td>";
1352 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($head='', $title='', $help_url='', $target='', $disablejs=0, $disablehead=0, $arrayofjs='', $arrayofcss='', $morequerystring='', $morecssonbody='', $replacemainareaby='', $disablenofollow=0, $disablenoindex=0)
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.