From b268ccf064b453974ea197a013e3b46f7ee2b809 Mon Sep 17 00:00:00 2001
From: aspangaro <alexandre.spangaro@gmail.com>
Date: Sun, 6 Sep 2015 04:52:03 +0200
Subject: [PATCH] Fix #3455 In advanced accounting module, button transfer to
 general ledger don't work

---
 .../accountancy/class/bookkeeping.class.php   | 58 +++++++++++++++----
 htdocs/accountancy/journal/bankjournal.php    |  2 +
 .../accountancy/journal/purchasesjournal.php  |  3 +
 htdocs/accountancy/journal/sellsjournal.php   |  3 +
 4 files changed, 54 insertions(+), 12 deletions(-)

diff --git a/htdocs/accountancy/class/bookkeeping.class.php b/htdocs/accountancy/class/bookkeeping.class.php
index 9dcba514ae1..2e6c300d004 100644
--- a/htdocs/accountancy/class/bookkeeping.class.php
+++ b/htdocs/accountancy/class/bookkeeping.class.php
@@ -1,7 +1,7 @@
 <?php
 /* Copyright (C) 2004-2005 Rodolphe Quiedeville <rodolphe@quiedeville.org>
  * Copyright (C) 2013-2014 Olivier Geffroy      <jeff@jeffinfo.com>
- * Copyright (C) 2013-2014 Alexandre Spangaro   <alexandre.spangaro@gmail.com>
+ * Copyright (C) 2013-2015 Alexandre Spangaro   <alexandre.spangaro@gmail.com>
  * Copyright (C) 2013-2014 Florian Henry		<florian.henry@open-concept.pro>
  *
  * This program is free software; you can redistribute it and/or modify
@@ -225,6 +225,8 @@ class BookKeeping
 	 */
 	function create($user='')
 	{
+		global $conf;
+
 		$this->piece_num = 0;
 
 		// first check if line not yet in bookkeeping
@@ -278,13 +280,45 @@ class BookKeeping
 					$this->date_create = $now;
 				}
 
-				$sql = "INSERT INTO " . MAIN_DB_PREFIX . "accounting_bookkeeping (doc_date, ";
-				$sql .= "doc_type, doc_ref,fk_doc,fk_docdet,code_tiers,numero_compte,label_compte,";
-				$sql .= "debit,credit,montant,sens,fk_user_author,import_key,code_journal,piece_num)";
-				$sql .= " VALUES ('" . $this->doc_date . "','" . $this->doc_type . "','" . $this->doc_ref . "'," . $this->fk_doc . ",";
-				$sql .= $this->fk_docdet . ",'" . $this->code_tiers . "','" . $this->numero_compte . "','" . $this->db->escape($this->label_compte) . "',";
-				$sql .= $this->debit . "," . $this->credit . "," . $this->montant . ",'" . $this->sens . "'," . $user->id . ", '";
-				$sql .= $this->date_create . "','" . $this->code_journal . "'," . $this->piece_num . ")";
+				$sql = "INSERT INTO " . MAIN_DB_PREFIX . "accounting_bookkeeping (";
+				
+				$sql .= "doc_date";
+				$sql .= ", doc_type";
+				$sql .= ", doc_ref";
+				$sql .= ", fk_doc";
+				$sql .= ", fk_docdet";
+				$sql .= ", code_tiers";
+				$sql .= ", numero_compte";
+				$sql .= ", label_compte";
+				$sql .= ", debit";
+				$sql .= ", credit";
+				$sql .= ", montant";
+				$sql .= ", sens";
+				$sql .= ", fk_user_author";
+				$sql .= ", import_key";
+				$sql .= ", code_journal";
+				$sql .= ", piece_num";
+
+				$sql .= ") VALUES (";
+				
+				$sql .= "'" . $this->doc_date . "'";
+				$sql .= ",'" . $this->doc_type . "'";
+				$sql .= ",'" . $this->doc_ref . "'";
+				$sql .= "," . $this->fk_doc;
+				$sql .= "," . $this->fk_docdet;
+				$sql .= ",'" . $this->code_tiers . "'";
+				$sql .= ",'" . $this->numero_compte . "'";
+				$sql .= ",'" . $this->db->escape($this->label_compte) . "'";
+				$sql .= "," . $this->debit;
+				$sql .= "," . $this->credit;
+				$sql .= "," . $this->montant;
+				$sql .= ",'" . $this->sens . "'";
+				$sql .= ",'" . $this->fk_user_author."'";
+				$sql .= ",'" . $this->date_create . "'";
+				$sql .= ",'" . $this->code_journal . "'";
+				$sql .= "," . $this->piece_num;
+				
+				$sql .= ")";
 
 				dol_syslog(get_class($this) . ":: create sql=" . $sql, LOG_DEBUG);
 				$resql = $this->db->query($sql);
@@ -296,19 +330,19 @@ class BookKeeping
 						$result = 0;
 					} else {
 						$result = - 2;
-						dol_syslog("BookKeeping::Create Erreur $result lecture ID");
+						dol_syslog("BookKeeping::Create Error $result lecture ID");
 					}
 				} else {
 					$result = - 1;
-					dol_syslog("BookKeeping::Create Erreur $result INSERT Mysql");
+					dol_syslog("BookKeeping::Create Error $result INSERT Mysql");
 				}
 			} else {
 				$result = - 3;
-				dol_syslog("BookKeeping::Create Erreur $result SELECT Mysql");
+				dol_syslog("BookKeeping::Create Error $result SELECT Mysql");
 			}
 		} else {
 			$result = - 5;
-			dol_syslog("BookKeeping::Create Erreur $result SELECT Mysql");
+			dol_syslog("BookKeeping::Create Error $result SELECT Mysql");
 		}
 
 		return $result;
diff --git a/htdocs/accountancy/journal/bankjournal.php b/htdocs/accountancy/journal/bankjournal.php
index 8125f6ef14d..ac6317d9d1f 100644
--- a/htdocs/accountancy/journal/bankjournal.php
+++ b/htdocs/accountancy/journal/bankjournal.php
@@ -286,6 +286,7 @@ if ($action == 'writeBookKeeping')
 			$bookkeeping->debit = ($mt >= 0 ? $mt : 0);
 			$bookkeeping->credit = ($mt < 0 ? - $mt : 0);
 			$bookkeeping->code_journal = $conf->global->ACCOUNTING_BANK_JOURNAL;
+			$bookkeeping->fk_user_author = $user->id;
 
 			if ($tabtype[$key] == 'payment') {
 
@@ -336,6 +337,7 @@ if ($action == 'writeBookKeeping')
 			$bookkeeping->debit = ($mt < 0 ? - $mt : 0);
 			$bookkeeping->credit = ($mt >= 0) ? $mt : 0;
 			$bookkeeping->code_journal = $conf->global->ACCOUNTING_BANK_JOURNAL;
+			$bookkeeping->fk_user_author = $user->id;
 
 			if ($tabtype[$key] == 'sc') {
 				$bookkeeping->code_tiers = '';
diff --git a/htdocs/accountancy/journal/purchasesjournal.php b/htdocs/accountancy/journal/purchasesjournal.php
index 8b9b7929db8..705434365fa 100644
--- a/htdocs/accountancy/journal/purchasesjournal.php
+++ b/htdocs/accountancy/journal/purchasesjournal.php
@@ -177,6 +177,7 @@ if ($action == 'writebookkeeping') {
 			$bookkeeping->debit = ($mt <= 0) ? $mt : 0;
 			$bookkeeping->credit = ($mt > 0) ? $mt : 0;
 			$bookkeeping->code_journal = $conf->global->ACCOUNTING_PURCHASE_JOURNAL;
+			$bookkeeping->fk_user_author = $user->id;
 
 			$bookkeeping->create();
 		}
@@ -202,6 +203,7 @@ if ($action == 'writebookkeeping') {
 					$bookkeeping->debit = ($mt > 0) ? $mt : 0;
 					$bookkeeping->credit = ($mt <= 0) ? $mt : 0;
 					$bookkeeping->code_journal = $conf->global->ACCOUNTING_PURCHASE_JOURNAL;
+					$bookkeeping->fk_user_author = $user->id;
 
 					$bookkeeping->create();
 				}
@@ -228,6 +230,7 @@ if ($action == 'writebookkeeping') {
 				$bookkeeping->debit = ($mt > 0) ? $mt : 0;
 				$bookkeeping->credit = ($mt <= 0) ? $mt : 0;
 				$bookkeeping->code_journal = $conf->global->ACCOUNTING_PURCHASE_JOURNAL;
+				$bookkeeping->fk_user_author = $user->id;
 
 				$bookkeeping->create();
 			}
diff --git a/htdocs/accountancy/journal/sellsjournal.php b/htdocs/accountancy/journal/sellsjournal.php
index d80e8f36562..1dd6975ea34 100644
--- a/htdocs/accountancy/journal/sellsjournal.php
+++ b/htdocs/accountancy/journal/sellsjournal.php
@@ -188,6 +188,7 @@ if ($action == 'writebookkeeping') {
 			$bookkeeping->debit = ($mt >= 0) ? $mt : 0;
 			$bookkeeping->credit = ($mt < 0) ? $mt : 0;
 			$bookkeeping->code_journal = $conf->global->ACCOUNTING_SELL_JOURNAL;
+			$bookkeeping->fk_user_author = $user->id;
 
 			$bookkeeping->create();
 		}
@@ -213,6 +214,7 @@ if ($action == 'writebookkeeping') {
 					$bookkeeping->debit = ($mt < 0) ? $mt : 0;
 					$bookkeeping->credit = ($mt >= 0) ? $mt : 0;
 					$bookkeeping->code_journal = $conf->global->ACCOUNTING_SELL_JOURNAL;
+					$bookkeeping->fk_user_author = $user->id;
 
 					$bookkeeping->create();
 				}
@@ -238,6 +240,7 @@ if ($action == 'writebookkeeping') {
 				$bookkeeping->debit = ($mt < 0) ? $mt : 0;
 				$bookkeeping->credit = ($mt >= 0) ? $mt : 0;
 				$bookkeeping->code_journal = $conf->global->ACCOUNTING_SELL_JOURNAL;
+				$bookkeeping->fk_user_author = $user->id;
 
 				$bookkeeping->create();
 			}
-- 
GitLab