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';
55$langs->loadLangs(array(
"commercial",
"compta",
"bills",
"other",
"accountancy",
"errors"));
58$action =
GETPOST(
'action',
'aZ09');
60$date_startmonth =
GETPOSTINT(
'date_startmonth');
66$in_bookkeeping =
GETPOST(
'in_bookkeeping');
67if ($in_bookkeeping ==
'') {
68 $in_bookkeeping =
'notyet';
73$hookmanager->initHooks(array(
'sellsjournal'));
77if (!isModEnabled(
'accounting')) {
80if ($user->socid > 0) {
83if (!$user->hasRight(
'accounting',
'bind',
'write')) {
92$tabwarranty = array();
94$tablocaltax1 = array();
95$tablocaltax2 = array();
97$cptcli =
'NotDefined';
103$reshook = $hookmanager->executeHooks(
'doActions', $parameters, $user, $action);
109$accountingjournalstatic->fetch($id_journal);
110$journal = $accountingjournalstatic->code;
111$journal_label = $accountingjournalstatic->label;
113$date_start =
dol_mktime(0, 0, 0, $date_startmonth, $date_startday, $date_startyear);
114$date_end =
dol_mktime(23, 59, 59, $date_endmonth, $date_endday, $date_endyear);
117$pastmonthyear =
null;
119if (empty($date_startmonth)) {
122 $date_start = $dates[
'date_start'];
123 $pastmonthyear = $dates[
'pastmonthyear'];
124 $pastmonth = $dates[
'pastmonth'];
126if (empty($date_endmonth)) {
129 $date_end = $dates[
'date_end'];
130 $pastmonthyear = $dates[
'pastmonthyear'];
131 $pastmonth = $dates[
'pastmonth'];
137if (!GETPOSTISSET(
'date_startmonth') && (empty($date_start) || empty($date_end))) {
142$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,";
143$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,";
144$sql .=
" s.rowid as socid, s.nom as name, s.code_client, s.code_fournisseur,";
146 $sql .=
" spe.accountancy_code_customer_general,";
147 $sql .=
" spe.accountancy_code_customer as code_compta_client,";
148 $sql .=
" spe.accountancy_code_supplier_general,";
149 $sql .=
" spe.accountancy_code_supplier as code_compta_fournisseur,";
151 $sql .=
" s.accountancy_code_customer_general,";
152 $sql .=
" s.code_compta as code_compta_client,";
153 $sql .=
" s.accountancy_code_supplier_general,";
154 $sql .=
" s.code_compta_fournisseur,";
156$sql .=
" p.rowid as pid, p.ref as pref, aa.rowid as fk_compte, aa.account_number as compte, aa.label as label_compte,";
158 $sql .=
" ppe.accountancy_code_sell";
160 $sql .=
" p.accountancy_code_sell";
162$parameters = array();
163$reshook = $hookmanager->executeHooks(
'printFieldListSelect', $parameters);
164$sql .= $hookmanager->resPrint;
165$sql .=
" FROM ".MAIN_DB_PREFIX.
"facturedet as fd";
166$sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"product as p ON p.rowid = fd.fk_product";
168 $sql .=
" LEFT JOIN " . MAIN_DB_PREFIX .
"product_perentity as ppe ON ppe.fk_product = p.rowid AND ppe.entity = " . ((int)
$conf->entity);
170$sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"accounting_account as aa ON aa.rowid = fd.fk_code_ventilation";
171$sql .=
" JOIN ".MAIN_DB_PREFIX.
"facture as f ON f.rowid = fd.fk_facture";
172$sql .=
" JOIN ".MAIN_DB_PREFIX.
"societe as s ON s.rowid = f.fk_soc";
174 $sql .=
" LEFT JOIN " . MAIN_DB_PREFIX .
"societe_perentity as spe ON spe.fk_soc = s.rowid AND spe.entity = " . ((int)
$conf->entity);
176$parameters = array();
177$reshook = $hookmanager->executeHooks(
'printFieldListFrom', $parameters);
178$sql .= $hookmanager->resPrint;
179$sql .=
" WHERE fd.fk_code_ventilation > 0";
180$sql .=
" AND f.entity IN (".getEntity(
'invoice', 0).
')';
181$sql .=
" AND f.fk_statut > 0";
187$sql .=
" AND fd.product_type IN (0,1)";
188if ($date_start && $date_end) {
189 $sql .=
" AND f.datef >= '".$db->idate($date_start).
"' AND f.datef <= '".$db->idate($date_end).
"'";
193 $sql .=
" AND f.datef >= '".$db->idate(
getDolGlobalString(
'ACCOUNTING_DATE_START_BINDING')).
"'";
196if ($in_bookkeeping ==
'already') {
197 $sql .=
" AND f.rowid IN (SELECT fk_doc FROM ".MAIN_DB_PREFIX.
"accounting_bookkeeping as ab WHERE ab.doc_type='customer_invoice')";
200if ($in_bookkeeping ==
'notyet') {
201 $sql .=
" AND f.rowid NOT IN (SELECT fk_doc FROM ".MAIN_DB_PREFIX.
"accounting_bookkeeping as ab WHERE ab.doc_type='customer_invoice')";
204$parameters = array();
205$reshook = $hookmanager->executeHooks(
'printFieldListWhere', $parameters);
206$sql .= $hookmanager->resPrint;
207$sql .=
" ORDER BY f.datef, f.ref";
210dol_syslog(
'accountancy/journal/sellsjournal.php', LOG_DEBUG);
215$tabwarranty = array();
216$tabrevenuestamp = array();
218$tablocaltax1 = array();
219$tablocaltax2 = array();
220$tabcompany = array();
221$vatdata_cache = array();
227$result = $db->query($sql);
229 $num = $db->num_rows($result);
233 $obj = $db->fetch_object($result);
236 $accountancy_code_customer_general = (!empty($obj->accountancy_code_customer_general) && $obj->accountancy_code_customer_general !=
'-1') ? $obj->accountancy_code_customer_general : $cptcli;
237 $compta_soc = (!empty($obj->code_compta_client)) ? $obj->code_compta_client : $cptcli;
239 $compta_prod = $obj->compte;
240 if (empty($compta_prod)) {
241 if ($obj->product_type == 0) {
250 $tax_id = $obj->tva_tx . ($obj->vat_src_code ?
' (' . $obj->vat_src_code .
')' :
'');
251 if (array_key_exists($tax_id, $vatdata_cache)) {
252 $vatdata = $vatdata_cache[$tax_id];
256 $buyer->fetch($obj->socid);
262 $vatdata_cache[$tax_id] = $vatdata;
264 $compta_tva = (!empty($vatdata[
'accountancy_code_sell']) ? $vatdata[
'accountancy_code_sell'] : $cpttva);
265 $compta_localtax1 = (!empty($vatdata[
'accountancy_code_sell']) ? $vatdata[
'accountancy_code_sell'] : $cpttva);
266 $compta_localtax2 = (!empty($vatdata[
'accountancy_code_sell']) ? $vatdata[
'accountancy_code_sell'] : $cpttva);
269 if (
price2num($obj->tva_tx) || !empty($obj->vat_src_code)) {
270 $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.
')' :
''));
274 $situation_ratio = 1;
276 if ($obj->situation_cycle_ref) {
278 if ($obj->situation_percent == 0) {
279 $situation_ratio = 0;
282 $line->fetch($obj->fdid);
285 $prev_progress = $line->get_prev_progress($obj->rowid);
287 $situation_ratio = ($obj->situation_percent - $prev_progress) / $obj->situation_percent;
292 $revenuestamp = (float)
price2num($obj->revenuestamp,
'MT');
295 $tabfac[$obj->rowid][
"date"] = $db->jdate($obj->df);
296 $tabfac[$obj->rowid][
"datereg"] = $db->jdate($obj->dlr);
297 $tabfac[$obj->rowid][
"ref"] = $obj->ref;
298 $tabfac[$obj->rowid][
"type"] = $obj->type;
299 $tabfac[$obj->rowid][
"description"] = $obj->label_compte;
300 $tabfac[$obj->rowid][
"close_code"] = $obj->close_code;
301 $tabfac[$obj->rowid][
"revenuestamp"] = $revenuestamp;
305 if (!isset($tabttc[$obj->rowid][$compta_soc])) {
306 $tabttc[$obj->rowid][$compta_soc] = 0;
308 if (!isset($tabht[$obj->rowid][$compta_prod])) {
309 $tabht[$obj->rowid][$compta_prod] = 0;
311 if (!isset($tabtva[$obj->rowid][$compta_tva])) {
312 $tabtva[$obj->rowid][$compta_tva] = 0;
314 if (!isset($tablocaltax1[$obj->rowid][$compta_localtax1])) {
315 $tablocaltax1[$obj->rowid][$compta_localtax1] = 0;
317 if (!isset($tablocaltax2[$obj->rowid][$compta_localtax2])) {
318 $tablocaltax2[$obj->rowid][$compta_localtax2] = 0;
327 $total_ttc = $obj->total_ttc * $situation_ratio;
329 $total_ttc = $obj->total_ttc;
333 if (
getDolGlobalString(
'INVOICE_USE_RETAINED_WARRANTY') && $obj->retained_warranty > 0) {
334 $retained_warranty = (float)
price2num($total_ttc * $obj->retained_warranty / 100,
'MT');
335 $tabwarranty[$obj->rowid][$compta_soc] += $retained_warranty;
336 $total_ttc -= $retained_warranty;
339 $tabttc[$obj->rowid][$compta_soc] += $total_ttc;
340 $tabht[$obj->rowid][$compta_prod] += $obj->total_ht * $situation_ratio;
341 $tva_npr = ((($obj->info_bits & 1) == 1) ? 1 : 0);
344 $tabtva[$obj->rowid][$compta_tva] += $obj->total_tva;
345 $tablocaltax1[$obj->rowid][$compta_localtax1] += $obj->total_localtax1;
346 $tablocaltax2[$obj->rowid][$compta_localtax2] += $obj->total_localtax2;
348 $tabtva[$obj->rowid][$compta_tva] += $obj->total_tva * $situation_ratio;
349 $tablocaltax1[$obj->rowid][$compta_localtax1] += $obj->total_localtax1 * $situation_ratio;
350 $tablocaltax2[$obj->rowid][$compta_localtax2] += $obj->total_localtax2 * $situation_ratio;
354 $compta_revenuestamp =
'NotDefined';
355 if (!empty($revenuestamp)) {
356 $sqlrevenuestamp =
"SELECT accountancy_code_sell FROM ".MAIN_DB_PREFIX.
"c_revenuestamp";
357 $sqlrevenuestamp .=
" WHERE fk_pays = ".((int) $mysoc->country_id);
358 $sqlrevenuestamp .=
" AND taux = ".((float) $revenuestamp);
359 $sqlrevenuestamp .=
" AND active = 1";
360 $resqlrevenuestamp = $db->query($sqlrevenuestamp);
362 if ($resqlrevenuestamp) {
363 $num_rows_revenuestamp = $db->num_rows($resqlrevenuestamp);
364 if ($num_rows_revenuestamp > 1) {
365 dol_print_error($db,
'Failed 2 or more lines for the revenue stamp of your country. Check the dictionary of revenue stamp.');
367 $objrevenuestamp = $db->fetch_object($resqlrevenuestamp);
368 if ($objrevenuestamp) {
369 $compta_revenuestamp = $objrevenuestamp->accountancy_code_sell;
375 if (empty($tabrevenuestamp[$obj->rowid][$compta_revenuestamp]) && !empty($revenuestamp)) {
377 $tabttc[$obj->rowid][$compta_soc] += $obj->revenuestamp;
378 $tabrevenuestamp[$obj->rowid][$compta_revenuestamp] = $obj->revenuestamp;
381 $tabcompany[$obj->rowid] = array(
383 'name' => $obj->name,
384 'code_client' => $obj->code_client,
385 'accountancy_code_customer_general' => $accountancy_code_customer_general,
386 'code_compta' => $compta_soc
392 'tabfac' => &$tabfac,
394 'tabtva' => &$tabtva,
395 'def_tva' => &$def_tva,
396 'tabwarranty' => &$tabwarranty,
397 'tabrevenuestamp' => &$tabrevenuestamp,
398 'tabttc' => &$tabttc,
399 'tablocaltax1' => &$tablocaltax1,
400 'tablocaltax2' => &$tablocaltax2,
401 'tabcompany' => &$tabcompany,
402 'vatdata_cache' => &$vatdata_cache,
404 $reshook = $hookmanager->executeHooks(
'processingJournalData', $parameters);
409 if ($i >
getDolGlobalInt(
'ACCOUNTANCY_MAX_TOO_MANY_LINES_TO_PROCESS', 10000)) {
411 setEventMessages(
"ErrorTooManyLinesToProcessPleaseUseAMoreSelectiveFilter",
null,
'errors');
418 'tabfac' => &$tabfac,
420 'tabtva' => &$tabtva,
421 'def_tva' => &$def_tva,
422 'tabwarranty' => &$tabwarranty,
423 'tabrevenuestamp' => &$tabrevenuestamp,
424 'tabttc' => &$tabttc,
425 'tablocaltax1' => &$tablocaltax1,
426 'tablocaltax2' => &$tablocaltax2,
427 'tabcompany' => &$tabcompany,
428 'vatdata_cache' => &$vatdata_cache,
430 $reshook = $hookmanager->executeHooks(
'processedJournalData', $parameters);
436$errorforinvoice = array();
458if (!empty($tabfac)) {
462 COUNT(fd.rowid) as nb
464 ".MAIN_DB_PREFIX.
"facturedet as fd
467 AND fd.fk_code_ventilation <= 0
468 AND fd.total_ttc <> 0
469 AND fk_facture IN (".$db->sanitize(implode(
",", array_keys($tabfac))).
")
472 $resql = $db->query($sql);
474 $num = $db->num_rows($resql);
477 $obj = $db->fetch_object($resql);
479 $errorforinvoice[$obj->fk_facture] =
'somelinesarenotbound';
488if ($action ==
'writebookkeeping' && !$error && $user->hasRight(
'accounting',
'bind',
'write')) {
492 $companystatic =
new Societe($db);
493 $invoicestatic =
new Facture($db);
497 $accountingaccountcustomer->fetch(0,
getDolGlobalString(
'ACCOUNTING_ACCOUNT_CUSTOMER'),
true);
500 $accountingaccountcustomerwarranty->fetch(0,
getDolGlobalString(
'ACCOUNTING_ACCOUNT_CUSTOMER_RETAINED_WARRANTY'),
true);
502 foreach ($tabfac as $key => $val) {
510 $companystatic->id = $tabcompany[$key][
'id'];
511 $companystatic->name = $tabcompany[$key][
'name'];
512 $companystatic->accountancy_code_customer_general = $tabcompany[$key][
'accountancy_code_customer_general'];
513 $companystatic->code_compta = $tabcompany[$key][
'code_compta'];
514 $companystatic->code_compta_client = $tabcompany[$key][
'code_compta'];
515 $companystatic->code_client = $tabcompany[$key][
'code_client'];
516 $companystatic->client = 3;
518 $invoicestatic->id = $key;
519 $invoicestatic->ref = (string) $val[
"ref"];
520 $invoicestatic->type = $val[
"type"];
521 $invoicestatic->close_code = $val[
"close_code"];
526 $replacedinvoice = 0;
527 if ($invoicestatic->close_code == Facture::CLOSECODE_REPLACED) {
528 $replacedinvoice = 1;
529 $alreadydispatched = $invoicestatic->getVentilExportCompta();
530 if ($alreadydispatched) {
531 $replacedinvoice = 2;
536 if ($replacedinvoice == 1) {
542 if (isset($errorforinvoice[$key]) && $errorforinvoice[$key] ==
'somelinesarenotbound') {
545 setEventMessages($langs->trans(
'ErrorInvoiceContainsLinesNotYetBounded', $val[
'ref']),
null,
'errors');
550 if (isset($tabwarranty[$key]) && is_array($tabwarranty[$key])) {
551 foreach ($tabwarranty[$key] as $k => $mt) {
553 $bookkeeping->doc_date = $val[
"date"];
554 $bookkeeping->date_lim_reglement = $val[
"datereg"];
555 $bookkeeping->doc_ref = $val[
"ref"];
556 $bookkeeping->date_creation = $now;
557 $bookkeeping->doc_type =
'customer_invoice';
558 $bookkeeping->fk_doc = $key;
559 $bookkeeping->fk_docdet = 0;
560 $bookkeeping->thirdparty_code = $companystatic->code_client;
562 $bookkeeping->subledger_account = $tabcompany[$key][
'code_compta'];
563 $bookkeeping->subledger_label = $tabcompany[$key][
'name'];
565 $bookkeeping->numero_compte =
getDolGlobalString(
'ACCOUNTING_ACCOUNT_CUSTOMER_RETAINED_WARRANTY');
566 $bookkeeping->label_compte = $accountingaccountcustomerwarranty->label;
568 $bookkeeping->label_operation = $bookkeepingstatic->accountingLabelForOperation($companystatic->name, $invoicestatic->ref, $langs->trans(
"RetainedWarranty"));
569 $bookkeeping->montant = $mt;
570 $bookkeeping->sens = ($mt >= 0) ?
'D' :
'C';
571 $bookkeeping->debit = ($mt >= 0) ? $mt : 0;
572 $bookkeeping->credit = ($mt < 0) ? -$mt : 0;
573 $bookkeeping->code_journal = $journal;
574 $bookkeeping->journal_label = $langs->transnoentities($journal_label);
575 $bookkeeping->fk_user_author = $user->id;
576 $bookkeeping->entity =
$conf->entity;
578 $totaldebit += $bookkeeping->debit;
579 $totalcredit += $bookkeeping->credit;
581 $result = $bookkeeping->create($user);
583 if ($bookkeeping->error ==
'BookkeepingRecordAlreadyExists') {
586 $errorforinvoice[$key] =
'alreadyjournalized';
591 $errorforinvoice[$key] =
'other';
600 if (!$errorforline) {
601 foreach ($tabttc[$key] as $k => $mt) {
603 $bookkeeping->doc_date = $val[
"date"];
604 $bookkeeping->date_lim_reglement = $val[
"datereg"];
605 $bookkeeping->doc_ref = $val[
"ref"];
606 $bookkeeping->date_creation = $now;
607 $bookkeeping->doc_type =
'customer_invoice';
608 $bookkeeping->fk_doc = $key;
609 $bookkeeping->fk_docdet = 0;
610 $bookkeeping->thirdparty_code = $companystatic->code_client;
612 $bookkeeping->subledger_account = $tabcompany[$key][
'code_compta'];
613 $bookkeeping->subledger_label = $tabcompany[$key][
'name'];
615 $bookkeeping->numero_compte = (!empty($tabcompany[$key][
'accountancy_code_customer_general']) && $tabcompany[$key][
'accountancy_code_customer_general'] !=
'-1') ? $tabcompany[$key][
'accountancy_code_customer_general'] : $cptcli;
616 $bookkeeping->label_compte = $accountingaccountcustomer->label;
618 $bookkeeping->label_operation = $bookkeepingstatic->accountingLabelForOperation($companystatic->name, $invoicestatic->ref, $langs->trans(
"SubledgerAccount"));
619 $bookkeeping->montant = $mt;
620 $bookkeeping->sens = ($mt >= 0) ?
'D' :
'C';
621 $bookkeeping->debit = ($mt >= 0) ? $mt : 0;
622 $bookkeeping->credit = ($mt < 0) ? -$mt : 0;
623 $bookkeeping->code_journal = $journal;
624 $bookkeeping->journal_label = $langs->transnoentities($journal_label);
625 $bookkeeping->fk_user_author = $user->id;
626 $bookkeeping->entity =
$conf->entity;
628 $totaldebit += $bookkeeping->debit;
629 $totalcredit += $bookkeeping->credit;
631 $result = $bookkeeping->create($user);
633 if ($bookkeeping->error ==
'BookkeepingRecordAlreadyExists') {
636 $errorforinvoice[$key] =
'alreadyjournalized';
641 $errorforinvoice[$key] =
'other';
646 require_once DOL_DOCUMENT_ROOT .
'/accountancy/class/lettering.class.php';
649 $nb_lettering = $lettering_static->bookkeepingLettering(array($bookkeeping->id));
656 if (!$errorforline) {
657 foreach ($tabht[$key] as $k => $mt) {
658 if (empty(
$conf->cache[
'accountingaccountincurrententity'][$k])) {
660 $accountingaccount->fetch(0, $k,
true);
661 $conf->cache[
'accountingaccountincurrententity'][$k] = $accountingaccount;
663 $accountingaccount =
$conf->cache[
'accountingaccountincurrententity'][$k];
666 $label_account = $accountingaccount->label;
669 if ($accountingaccount->id > 0) {
671 $bookkeeping->doc_date = $val[
"date"];
672 $bookkeeping->date_lim_reglement = $val[
"datereg"];
673 $bookkeeping->doc_ref = $val[
"ref"];
674 $bookkeeping->date_creation = $now;
675 $bookkeeping->doc_type =
'customer_invoice';
676 $bookkeeping->fk_doc = $key;
677 $bookkeeping->fk_docdet = 0;
678 $bookkeeping->thirdparty_code = $companystatic->code_client;
682 $bookkeeping->subledger_account = $tabcompany[$key][
'code_compta'];
683 $bookkeeping->subledger_label = $tabcompany[$key][
'name'];
685 $bookkeeping->subledger_account =
'';
686 $bookkeeping->subledger_label =
'';
689 $bookkeeping->subledger_account =
'';
690 $bookkeeping->subledger_label =
'';
693 $bookkeeping->numero_compte = $k;
694 $bookkeeping->label_compte = $label_account;
696 $bookkeeping->label_operation = $bookkeepingstatic->accountingLabelForOperation($companystatic->name, $invoicestatic->ref, $label_account);
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';
728 if (!$errorforline) {
729 $listoftax = array(0, 1, 2);
730 foreach ($listoftax as $numtax) {
731 $arrayofvat = $tabtva;
733 $arrayofvat = $tablocaltax1;
736 $arrayofvat = $tablocaltax2;
739 foreach ($arrayofvat[$key] as $k => $mt) {
741 if (empty(
$conf->cache[
'accountingaccountincurrententity_vat'][$k])) {
743 $accountingaccount->fetch(0, $k,
true);
744 $conf->cache[
'accountingaccountincurrententity_vat'][$k] = $accountingaccount;
746 $accountingaccount =
$conf->cache[
'accountingaccountincurrententity_vat'][$k];
749 $label_account = $accountingaccount->label;
752 $bookkeeping->doc_date = $val[
"date"];
753 $bookkeeping->date_lim_reglement = $val[
"datereg"];
754 $bookkeeping->doc_ref = $val[
"ref"];
755 $bookkeeping->date_creation = $now;
756 $bookkeeping->doc_type =
'customer_invoice';
757 $bookkeeping->fk_doc = $key;
758 $bookkeeping->fk_docdet = 0;
759 $bookkeeping->thirdparty_code = $companystatic->code_client;
761 $bookkeeping->subledger_account =
'';
762 $bookkeeping->subledger_label =
'';
764 $bookkeeping->numero_compte = $k;
765 $bookkeeping->label_compte = $label_account;
768 $tmpvatrate = (empty($def_tva[$key][$k]) ? (empty($arrayofvat[$key][$k]) ?
'' : $arrayofvat[$key][$k]) : implode(
', ', $def_tva[$key][$k]));
769 $labelvataccount = $langs->trans(
"Taxes").
' '.$tmpvatrate.
' %';
770 $labelvataccount .= ($numtax ?
' - Localtax '.$numtax :
'');
771 $bookkeeping->label_operation = $bookkeepingstatic->accountingLabelForOperation($companystatic->name, $invoicestatic->ref, $labelvataccount);
773 $bookkeeping->montant = $mt;
774 $bookkeeping->sens = ($mt < 0) ?
'D' :
'C';
775 $bookkeeping->debit = ($mt < 0) ? -$mt : 0;
776 $bookkeeping->credit = ($mt >= 0) ? $mt : 0;
777 $bookkeeping->code_journal = $journal;
778 $bookkeeping->journal_label = $langs->transnoentities($journal_label);
779 $bookkeeping->fk_user_author = $user->id;
780 $bookkeeping->entity =
$conf->entity;
782 $totaldebit += $bookkeeping->debit;
783 $totalcredit += $bookkeeping->credit;
785 $result = $bookkeeping->create($user);
787 if ($bookkeeping->error ==
'BookkeepingRecordAlreadyExists') {
790 $errorforinvoice[$key] =
'alreadyjournalized';
795 $errorforinvoice[$key] =
'other';
805 if (!$errorforline) {
806 if (isset($tabrevenuestamp[$key]) && is_array($tabrevenuestamp[$key])) {
807 foreach ($tabrevenuestamp[$key] as $k => $mt) {
809 if (empty(
$conf->cache[
'accountingaccountincurrententity_rs'][$k])) {
811 $accountingaccount->fetch(0, $k,
true);
812 $conf->cache[
'accountingaccountincurrententity_rs'][$k] = $accountingaccount;
814 $accountingaccount =
$conf->cache[
'accountingaccountincurrententity_rs'][$k];
817 $label_account = $accountingaccount->label;
820 $bookkeeping->doc_date = $val[
"date"];
821 $bookkeeping->date_lim_reglement = $val[
"datereg"];
822 $bookkeeping->doc_ref = $val[
"ref"];
823 $bookkeeping->date_creation = $now;
824 $bookkeeping->doc_type =
'customer_invoice';
825 $bookkeeping->fk_doc = $key;
826 $bookkeeping->fk_docdet = 0;
827 $bookkeeping->thirdparty_code = $companystatic->code_client;
829 $bookkeeping->subledger_account =
'';
830 $bookkeeping->subledger_label =
'';
832 $bookkeeping->numero_compte = $k;
833 $bookkeeping->label_compte = $label_account;
835 $bookkeeping->label_operation = $bookkeepingstatic->accountingLabelForOperation($companystatic->name, $invoicestatic->ref, $langs->trans(
"RevenueStamp"));
836 $bookkeeping->montant = $mt;
837 $bookkeeping->sens = ($mt < 0) ?
'D' :
'C';
838 $bookkeeping->debit = ($mt < 0) ? -$mt : 0;
839 $bookkeeping->credit = ($mt >= 0) ? $mt : 0;
840 $bookkeeping->code_journal = $journal;
841 $bookkeeping->journal_label = $langs->transnoentities($journal_label);
842 $bookkeeping->fk_user_author = $user->id;
843 $bookkeeping->entity =
$conf->entity;
845 $totaldebit += $bookkeeping->debit;
846 $totalcredit += $bookkeeping->credit;
848 $result = $bookkeeping->create($user);
850 if ($bookkeeping->error ==
'BookkeepingRecordAlreadyExists') {
853 $errorforinvoice[$key] =
'alreadyjournalized';
858 $errorforinvoice[$key] =
'other';
868 if (!$errorforline && (
price2num($totaldebit,
'MT') !=
price2num($totalcredit,
'MT'))) {
871 $errorforinvoice[$key] =
'amountsnotbalanced';
872 setEventMessages(
'We Tried to insert a non balanced transaction in book for '.$invoicestatic->ref.
'. Canceled. Surely a bug.',
null,
'errors');
875 if (!$errorforline) {
881 setEventMessages($langs->trans(
"ErrorTooManyErrorsProcessStopped"),
null,
'errors');
889 if (empty($error) && count($tabpay) > 0) {
891 } elseif (count($tabpay) == $error) {
894 setEventMessages($langs->trans(
"GeneralLedgerSomeRecordWasNotRecorded"),
null,
'warnings');
900 if (count($tabpay) != $error) {
901 $param =
'id_journal='.$id_journal;
902 $param .=
'&date_startday='.$date_startday;
903 $param .=
'&date_startmonth='.$date_startmonth;
904 $param .=
'&date_startyear='.$date_startyear;
905 $param .=
'&date_endday='.$date_endday;
906 $param .=
'&date_endmonth='.$date_endmonth;
907 $param .=
'&date_endyear='.$date_endyear;
908 $param .=
'&in_bookkeeping='.$in_bookkeeping;
909 header(
"Location: ".$_SERVER[
'PHP_SELF'].($param ?
'?'.$param :
''));
920$form =
new Form($db);
923if ($action ==
'exportcsv' && !$error) {
927 $filename =
'journal';
928 $type_export =
'journal';
929 include DOL_DOCUMENT_ROOT.
'/accountancy/tpl/export_journal.tpl.php';
931 $companystatic =
new Client($db);
932 $invoicestatic =
new Facture($db);
935 foreach ($tabfac as $key => $val) {
936 $companystatic->id = $tabcompany[$key][
'id'];
937 $companystatic->name = $tabcompany[$key][
'name'];
938 $companystatic->accountancy_code_customer_general = (!empty($tabcompany[$key][
'accountancy_code_customer_general']) && $tabcompany[$key][
'accountancy_code_customer_general'] !=
'-1') ? $tabcompany[$key][
'accountancy_code_customer_general'] : $cptcli;
939 $companystatic->code_compta = $tabcompany[$key][
'code_compta'];
940 $companystatic->code_compta_client = $tabcompany[$key][
'code_compta'];
941 $companystatic->code_client = $tabcompany[$key][
'code_client'];
942 $companystatic->client = 3;
944 $invoicestatic->id = $key;
945 $invoicestatic->ref = (string) $val[
"ref"];
946 $invoicestatic->type = $val[
"type"];
947 $invoicestatic->close_code = $val[
"close_code"];
952 $replacedinvoice = 0;
953 if ($invoicestatic->close_code == Facture::CLOSECODE_REPLACED) {
954 $replacedinvoice = 1;
955 $alreadydispatched = $invoicestatic->getVentilExportCompta();
956 if ($alreadydispatched) {
957 $replacedinvoice = 2;
962 if ($replacedinvoice == 1) {
967 if (
getDolGlobalString(
'INVOICE_USE_RETAINED_WARRANTY') && isset($tabwarranty[$key])) {
968 foreach ($tabwarranty[$key] as $k => $mt) {
970 print
'"'.$key.
'"'.$sep;
971 print
'"'.$date.
'"'.$sep;
972 print
'"'.$val[
"ref"].
'"'.$sep;
973 print
'"'.csvClean(
dol_trunc($companystatic->name, 32)).
'"'.$sep;
974 print
'"'.length_accounta(html_entity_decode($k)).
'"'.$sep;
975 print
'"'.length_accountg(
getDolGlobalString(
'ACCOUNTING_ACCOUNT_CUSTOMER_RETAINED_WARRANTY')).
'"'.$sep;
976 print
'"'.length_accounta(html_entity_decode($k)).
'"'.$sep;
977 print
'"'.$langs->trans(
"Thirdparty").
'"'.$sep;
978 print
'"'.csvClean($bookkeepingstatic->accountingLabelForOperation($companystatic->name, $invoicestatic->ref, $langs->trans(
"RetainedWarranty"))).
'"'.$sep;
979 print
'"'.($mt >= 0 ?
price($mt) :
'').
'"'.$sep;
980 print
'"'.($mt < 0 ?
price(-$mt) :
'').
'"'.$sep;
981 print
'"'.$journal.
'"';
988 foreach ($tabttc[$key] as $k => $mt) {
990 print
'"'.$key.
'"'.$sep;
991 print
'"'.$date.
'"'.$sep;
992 print
'"'.$val[
"ref"].
'"'.$sep;
993 print
'"'.csvClean(
dol_trunc($companystatic->name, 32)).
'"'.$sep;
994 print
'"'.length_accounta(html_entity_decode($k)).
'"'.$sep;
995 print
'"'.length_accountg($companystatic->accountancy_code_customer_general).
'"'.$sep;
996 print
'"'.length_accounta(html_entity_decode($k)).
'"'.$sep;
997 print
'"'.$langs->trans(
"Thirdparty").
'"'.$sep;
998 print
'"'.csvClean($bookkeepingstatic->accountingLabelForOperation($companystatic->name, $invoicestatic->ref, $langs->trans(
"Thirdparty"))).
'"'.$sep;
999 print
'"'.($mt >= 0 ?
price($mt) :
'').
'"'.$sep;
1000 print
'"'.($mt < 0 ?
price(-$mt) :
'').
'"'.$sep;
1001 print
'"'.$journal.
'"';
1007 foreach ($tabht[$key] as $k => $mt) {
1009 $accountingaccount->fetch(0, $k,
true);
1011 print
'"'.$key.
'"'.$sep;
1012 print
'"'.$date.
'"'.$sep;
1013 print
'"'.$val[
"ref"].
'"'.$sep;
1014 print
'"'.csvClean(
dol_trunc($companystatic->name, 32)).
'"'.$sep;
1015 print
'"'.length_accountg(html_entity_decode($k)).
'"'.$sep;
1016 print
'"'.length_accountg(html_entity_decode($k)).
'"'.$sep;
1018 print
'"'.csvClean(
dol_trunc($accountingaccount->label, 32)).
'"'.$sep;
1019 print
'"'.csvClean($bookkeepingstatic->accountingLabelForOperation($companystatic->name, $invoicestatic->ref, $accountingaccount->label)).
'"'.$sep;
1020 print
'"'.($mt < 0 ?
price(-$mt) :
'').
'"'.$sep;
1021 print
'"'.($mt >= 0 ?
price($mt) :
'').
'"'.$sep;
1022 print
'"'.$journal.
'"';
1028 $listoftax = array(0, 1, 2);
1029 foreach ($listoftax as $numtax) {
1030 $arrayofvat = $tabtva;
1032 $arrayofvat = $tablocaltax1;
1035 $arrayofvat = $tablocaltax2;
1038 foreach ($arrayofvat[$key] as $k => $mt) {
1040 print
'"'.$key.
'"'.$sep;
1041 print
'"'.$date.
'"'.$sep;
1042 print
'"'.$val[
"ref"].
'"'.$sep;
1043 print
'"'.csvClean(
dol_trunc($companystatic->name, 32)).
'"'.$sep;
1044 print
'"'.length_accountg(html_entity_decode($k)).
'"'.$sep;
1045 print
'"'.length_accountg(html_entity_decode($k)).
'"'.$sep;
1047 print
'"'.$langs->trans(
"VAT").
' - '.implode(
', ', $def_tva[$key][$k]).
' %"'.$sep;
1048 print
'"'.csvClean($bookkeepingstatic->accountingLabelForOperation($companystatic->name, $invoicestatic->ref, $langs->trans(
"VAT").implode($def_tva[$key][$k]).
' %'.($numtax ?
' - Localtax '.$numtax :
''))).
'"'.$sep;
1049 print
'"'.($mt < 0 ?
price(-$mt) :
'').
'"'.$sep;
1050 print
'"'.($mt >= 0 ?
price($mt) :
'').
'"'.$sep;
1051 print
'"'.$journal.
'"';
1058 if (isset($tabrevenuestamp[$key])) {
1059 foreach ($tabrevenuestamp[$key] as $k => $mt) {
1061 print
'"'.$key.
'"'.$sep;
1062 print
'"'.$date.
'"'.$sep;
1063 print
'"'.$val[
"ref"].
'"'.$sep;
1064 print
'"'.csvClean(
dol_trunc($companystatic->name, 32)).
'"'.$sep;
1065 print
'"'.length_accountg(html_entity_decode($k)).
'"'.$sep;
1066 print
'"'.length_accountg(html_entity_decode($k)).
'"'.$sep;
1068 print
'"'.$langs->trans(
"RevenueStamp").
'"'.$sep;
1069 print
'"'.csvClean($bookkeepingstatic->accountingLabelForOperation($companystatic->name, $invoicestatic->ref, $langs->trans(
"RevenueStamp"))).
'"'.$sep;
1070 print
'"'.($mt < 0 ?
price(-$mt) :
'').
'"'.$sep;
1071 print
'"'.($mt >= 0 ?
price($mt) :
'').
'"'.$sep;
1072 print
'"'.$journal.
'"';
1082if (empty($action) || $action ==
'view') {
1083 $title = $langs->trans(
"GenerationOfAccountingEntries").
' - '.$accountingjournalstatic->getNomUrl(0, 2, 1,
'', 1);
1084 $help_url =
'EN:Module_Double_Entry_Accounting|FR:Module_Comptabilité_en_Partie_Double#Génération_des_écritures_en_comptabilité';
1092 $description = $langs->trans(
"DescJournalOnlyBindedVisible").
'<br>';
1094 $description .= $langs->trans(
"DepositsAreNotIncluded");
1096 $description .= $langs->trans(
"DepositsAreIncluded");
1099 $listofchoices = array(
'notyet' => $langs->trans(
"NotYetInGeneralLedger"),
'already' => $langs->trans(
"AlreadyInGeneralLedger"));
1100 $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);
1101 $period .=
' - '.$langs->trans(
"JournalizationInLedgerStatus").
' '.$form->selectarray(
'in_bookkeeping', $listofchoices, $in_bookkeeping, 1);
1103 $varlink =
'id_journal='.$id_journal;
1105 journalHead($nom, $nomlink, $period, $periodlink, $description, $builddate, $exportlink, array(
'action' =>
''),
'', $varlink);
1110 $sql =
"SELECT COUNT(rowid) as nb FROM ".MAIN_DB_PREFIX.
"accounting_fiscalyear WHERE entity = ".((int)
$conf->entity);
1111 $resql = $db->query($sql);
1113 $obj = $db->fetch_object($resql);
1114 if ($obj->nb == 0) {
1115 print
'<br><div class="warning">'.img_warning().
' '.$langs->trans(
"TheFiscalPeriodIsNotDefined");
1116 $desc =
' : '.$langs->trans(
"AccountancyAreaDescFiscalPeriod", 4,
'{link}');
1117 $desc = str_replace(
'{link}',
'<strong>'.$langs->transnoentitiesnoconv(
"MenuAccountancy").
'-'.$langs->transnoentitiesnoconv(
"Setup").
"-".$langs->transnoentitiesnoconv(
"FiscalPeriod").
'</strong>', $desc);
1127 $acctCustomerNotConfigured = in_array(
getDolGlobalString(
'ACCOUNTING_ACCOUNT_CUSTOMER'), [
'',
'-1']);
1128 if ($acctCustomerNotConfigured) {
1129 print
'<br><div class="warning">'.img_warning().
' '.$langs->trans(
"SomeMandatoryStepsOfSetupWereNotDone");
1130 $desc =
' : '.$langs->trans(
"AccountancyAreaDescMisc", 4,
'{link}');
1131 $desc = str_replace(
'{link}',
'<strong>'.$langs->transnoentitiesnoconv(
"MenuAccountancy").
'-'.$langs->transnoentitiesnoconv(
"Setup").
"-".$langs->transnoentitiesnoconv(
"MenuDefaultAccounts").
'</strong>', $desc);
1135 print
'<br><div class="tabsAction tabsActionNoBottom centerimp">';
1136 if (
getDolGlobalString(
'ACCOUNTING_ENABLE_EXPORT_DRAFT_JOURNAL') && $in_bookkeeping ==
'notyet') {
1137 print
'<input type="button" class="butAction" name="exportcsv" value="'.$langs->trans(
"ExportDraftJournal").
'" onclick="launch_export();" />';
1139 if ($acctCustomerNotConfigured) {
1140 print
'<input type="button" class="butActionRefused classfortooltip" title="'.dol_escape_htmltag($langs->trans(
"SomeMandatoryStepsOfSetupWereNotDone")).
'" value="'.$langs->trans(
"WriteBookKeeping").
'" />';
1142 if ($in_bookkeeping ==
'notyet') {
1143 print
'<input type="button" class="butAction" name="writebookkeeping" value="'.$langs->trans(
"WriteBookKeeping").
'" onclick="writebookkeeping();" />';
1145 print
'<a href="#" class="butActionRefused classfortooltip" name="writebookkeeping">'.$langs->trans(
"WriteBookKeeping").
'</a>';
1152 <script type="text/javascript">
1153 function launch_export() {
1154 $("div.fiche form input[name=\"action\"]").val("exportcsv");
1155 $("div.fiche form input[type=\"submit\"]").click();
1156 $("div.fiche form input[name=\"action\"]").val("");
1158 function writebookkeeping() {
1159 console.log("click on writebookkeeping");
1160 $("div.fiche form input[name=\"action\"]").val("writebookkeeping");
1161 $("div.fiche form input[type=\"submit\"]").click();
1162 $("div.fiche form input[name=\"action\"]").val("");
1171 print
'<div class="div-table-responsive">';
1172 print
"<table class=\"noborder\" width=\"100%\">";
1173 print
"<tr class=\"liste_titre\">";
1174 print
"<td>".$langs->trans(
"Date").
"</td>";
1175 print
"<td>".$langs->trans(
"Piece").
' ('.$langs->trans(
"InvoiceRef").
")</td>";
1176 print
"<td>".$langs->trans(
"AccountAccounting").
"</td>";
1177 print
"<td>".$langs->trans(
"SubledgerAccount").
"</td>";
1178 print
"<td>".$langs->trans(
"LabelOperation").
"</td>";
1179 print
'<td class="center">'.$langs->trans(
"AccountingDebit").
"</td>";
1180 print
'<td class="center">'.$langs->trans(
"AccountingCredit").
"</td>";
1185 $companystatic =
new Client($db);
1186 $invoicestatic =
new Facture($db);
1189 foreach ($tabfac as $key => $val) {
1190 $companystatic->id = $tabcompany[$key][
'id'];
1191 $companystatic->name = $tabcompany[$key][
'name'];
1192 $companystatic->accountancy_code_customer_general = (!empty($tabcompany[$key][
'accountancy_code_customer_general']) && $tabcompany[$key][
'accountancy_code_customer_general'] !=
'-1') ? $tabcompany[$key][
'accountancy_code_customer_general'] : $cptcli;
1193 $companystatic->code_compta = $tabcompany[$key][
'code_compta'];
1194 $companystatic->code_compta_client = $tabcompany[$key][
'code_compta'];
1195 $companystatic->code_client = $tabcompany[$key][
'code_client'];
1196 $companystatic->client = 3;
1198 $invoicestatic->id = $key;
1199 $invoicestatic->ref = (string) $val[
"ref"];
1200 $invoicestatic->type = $val[
"type"];
1201 $invoicestatic->close_code = $val[
"close_code"];
1206 $replacedinvoice = 0;
1207 if ($invoicestatic->close_code == Facture::CLOSECODE_REPLACED) {
1208 $replacedinvoice = 1;
1209 $alreadydispatched = $invoicestatic->getVentilExportCompta();
1210 if ($alreadydispatched) {
1211 $replacedinvoice = 2;
1216 if ($replacedinvoice == 1) {
1217 print
'<tr class="oddeven">';
1218 print
"<!-- Replaced invoice -->";
1219 print
"<td>".$date.
"</td>";
1220 print
"<td><strike>".$invoicestatic->getNomUrl(1).
"</strike></td>";
1223 print $langs->trans(
"Replaced");
1230 print
'<td class="right"></td>';
1231 print
'<td class="right"></td>';
1237 if (isset($errorforinvoice[$key]) && $errorforinvoice[$key] ==
'somelinesarenotbound') {
1238 print
'<tr class="oddeven">';
1239 print
"<!-- Some lines are not bound -->";
1240 print
"<td>".$date.
"</td>";
1241 print
"<td>".$invoicestatic->getNomUrl(1).
"</td>";
1244 print
'<span class="error">'.$langs->trans(
'ErrorInvoiceContainsLinesNotYetBoundedShort', $val[
'ref']).
'</span>';
1251 print
'<td class="right"></td>';
1252 print
'<td class="right"></td>';
1259 if (
getDolGlobalString(
'INVOICE_USE_RETAINED_WARRANTY') && isset($tabwarranty[$key]) && is_array($tabwarranty[$key])) {
1260 foreach ($tabwarranty[$key] as $k => $mt) {
1261 print
'<tr class="oddeven">';
1262 print
"<!-- Thirdparty warranty -->";
1263 print
"<td>" . $date .
"</td>";
1264 print
"<td>" . $invoicestatic->getNomUrl(1) .
"</td>";
1268 if (($accountoshow ==
"") || $accountoshow ==
'NotDefined') {
1269 print
'<span class="error">' . $langs->trans(
"MainAccountForRetainedWarrantyNotDefined") .
'</span>';
1271 print $accountoshow;
1277 if (($accountoshow ==
"") || $accountoshow ==
'NotDefined') {
1278 print
'<span class="error">' . $langs->trans(
"ThirdpartyAccountNotDefined") .
'</span>';
1280 print $accountoshow;
1283 print
"<td>" . $bookkeepingstatic->accountingLabelForOperation($companystatic->getNomUrl(0), $invoicestatic->ref, $langs->trans(
"RetainedWarranty"), 1) .
"</td>";
1284 print
'<td class="right nowraponall amount">' . ($mt >= 0 ?
price($mt) :
'') .
"</td>";
1285 print
'<td class="right nowraponall amount">' . ($mt < 0 ?
price(-$mt) :
'') .
"</td>";
1291 foreach ($tabttc[$key] as $k => $mt) {
1292 print
'<tr class="oddeven">';
1293 print
"<!-- Thirdparty -->";
1294 print
"<td>".$date.
"</td>";
1295 print
"<td>".$invoicestatic->getNomUrl(1).
"</td>";
1298 $accountoshow =
length_accountg($companystatic->accountancy_code_customer_general);
1299 if (($accountoshow ==
"") || $accountoshow ==
"-1" || $accountoshow ==
'NotDefined') {
1300 print
'<span class="error">'.$langs->trans(
"MainAccountForCustomersNotDefined").
'</span>';
1302 print $accountoshow;
1308 if (($accountoshow ==
"") || $accountoshow ==
'NotDefined') {
1309 print
'<span class="error">'.$langs->trans(
"ThirdpartyAccountNotDefined").
'</span>';
1311 print $accountoshow;
1314 print
"<td>" . $bookkeepingstatic->accountingLabelForOperation($companystatic->getNomUrl(0,
'customer'), $invoicestatic->ref, $langs->trans(
"SubledgerAccount"), 1) .
"</td>";
1315 print
'<td class="right nowraponall amount">'.($mt >= 0 ?
price($mt) :
'').
"</td>";
1316 print
'<td class="right nowraponall amount">'.($mt < 0 ?
price(-$mt) :
'').
"</td>";
1323 foreach ($tabht[$key] as $k => $mt) {
1324 if (empty(
$conf->cache[
'accountingaccountincurrententity'][$k])) {
1326 $accountingaccount->fetch(0, $k,
true);
1327 $conf->cache[
'accountingaccountincurrententity'][$k] = $accountingaccount;
1329 $accountingaccount =
$conf->cache[
'accountingaccountincurrententity'][$k];
1332 print
'<tr class="oddeven">';
1333 print
"<!-- Product -->";
1334 print
"<td>".$date.
"</td>";
1335 print
"<td>".$invoicestatic->getNomUrl(1).
"</td>";
1339 if (($accountoshow ==
"") || $accountoshow ==
'NotDefined') {
1340 print
'<span class="error">'.$langs->trans(
"ProductNotDefined").
'</span>';
1342 print $accountoshow;
1351 } elseif (($accountoshow ==
"") || $accountoshow ==
'NotDefined') {
1352 print
'<span class="error">' . $langs->trans(
"ThirdpartyAccountNotDefined") .
'</span>';
1355 $companystatic->id = $tabcompany[$key][
'id'];
1356 $companystatic->name = $tabcompany[$key][
'name'];
1357 print
"<td>" . $bookkeepingstatic->accountingLabelForOperation($companystatic->getNomUrl(0,
'customer'), $invoicestatic->ref, $accountingaccount->label, 1) .
"</td>";
1358 print
'<td class="right nowraponall amount">'.($mt < 0 ?
price(-$mt) :
'').
"</td>";
1359 print
'<td class="right nowraponall amount">'.($mt >= 0 ?
price($mt) :
'').
"</td>";
1366 $listoftax = array(0, 1, 2);
1367 foreach ($listoftax as $numtax) {
1368 $arrayofvat = $tabtva;
1370 $arrayofvat = $tablocaltax1;
1373 $arrayofvat = $tablocaltax2;
1377 foreach ($arrayofvat[$key] as $k => $mt) {
1379 print
'<tr class="oddeven">';
1380 print
"<!-- VAT -->";
1381 print
"<td>".$date.
"</td>";
1382 print
"<td>".$invoicestatic->getNomUrl(1).
"</td>";
1386 if (($accountoshow ==
"") || $accountoshow ==
'NotDefined') {
1387 print
'<span class="error">'.$langs->trans(
"VATAccountNotDefined").
' ('.$langs->trans(
"AccountingJournalType2").
')</span>';
1389 print $accountoshow;
1397 $tmpvatrate = (empty($def_tva[$key][$k]) ? (empty($arrayofvat[$key][$k]) ?
'' : $arrayofvat[$key][$k]) : implode(
', ', $def_tva[$key][$k]));
1398 $labelvatrate = $langs->trans(
"Taxes").
' '.$tmpvatrate.
' %';
1399 $labelvatrate .= ($numtax ?
' - Localtax '.$numtax :
'');
1400 print
"<td>" . $bookkeepingstatic->accountingLabelForOperation($companystatic->getNomUrl(0,
'customer'), $invoicestatic->ref, $labelvatrate, 1) .
"</td>";
1401 print
'<td class="right nowraponall amount">'.($mt < 0 ?
price(-$mt) :
'').
"</td>";
1402 print
'<td class="right nowraponall amount">'.($mt >= 0 ?
price($mt) :
'').
"</td>";
1411 if (isset($tabrevenuestamp[$key]) && is_array($tabrevenuestamp[$key])) {
1412 foreach ($tabrevenuestamp[$key] as $k => $mt) {
1413 print
'<tr class="oddeven">';
1414 print
"<!-- Thirdparty revenuestamp -->";
1415 print
"<td>" . $date .
"</td>";
1416 print
"<td>" . $invoicestatic->getNomUrl(1) .
"</td>";
1420 if (($accountoshow ==
"") || $accountoshow ==
'NotDefined') {
1421 print
'<span class="error">' . $langs->trans(
"MainAccountForRevenueStampSaleNotDefined") .
'</span>';
1423 print $accountoshow;
1429 print
"<td>" . $bookkeepingstatic->accountingLabelForOperation($companystatic->getNomUrl(0,
'customer'), $invoicestatic->ref, $langs->trans(
"RevenueStamp"), 1) .
"</td>";
1430 print
'<td class="right nowraponall amount">' . ($mt < 0 ?
price(-$mt) :
'') .
"</td>";
1431 print
'<td class="right nowraponall amount">' . ($mt >= 0 ?
price($mt) :
'') .
"</td>";
1438 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.
llxFooter($comment='', $zone='private', $disabledoutputofmessages=0)
Empty footer.
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...
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='', $noduplicate=0, $attop=0)
Set event messages in dol_events session object.
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.
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 a Dolibarr global constant string value.
dol_syslog($message, $level=LOG_INFO, $ident=0, $suffixinfilename='', $restricttologhandler='', $logcontext=null)
Write log message into outputs.
global $conf
The following vars must be defined: $type2label $form $conf, $lang, The following vars may also be de...
accessforbidden($message='', $printheader=1, $printfooter=1, $showonlymessage=0, $params=null)
Show a message to say access is forbidden and stop program.