diff --git a/core/class/declarationtva.class.php b/core/class/declarationtva.class.php index d848de6..6e22836 100644 --- a/core/class/declarationtva.class.php +++ b/core/class/declarationtva.class.php @@ -1228,45 +1228,64 @@ class DeclarationTVA foreach ($entries as $entry) { error_log("DEBUG: Creating accounting entry for account: " . $entry['account_code'] . ", debit: " . $entry['debit'] . ", credit: " . $entry['credit']); - // Create new instance for each entry - $bookkeeping = new Bookkeeping($this->db); - - // Prepare amounts and determine debit/credit + // Prepare amounts $debit_amount = !empty($entry['debit']) ? (float)$entry['debit'] : 0; $credit_amount = !empty($entry['credit']) ? (float)$entry['credit'] : 0; - // Determine the amount and direction + // Create debit entry if amount > 0 if ($debit_amount > 0) { - $amount = $debit_amount; - $sens = 'D'; // Debit - } else { - $amount = $credit_amount; - $sens = 'C'; // Credit + $debit = new Bookkeeping($this->db); + $debit->doc_date = $declaration->end_date; + $debit->doc_ref = $declaration->declaration_name; + $debit->code_journal = 'OD'; + $debit->numero_compte = $entry['account_code']; + $debit->label_compte = $entry['account_label']; + $debit->montant = $debit_amount; + $debit->sens = 'D'; + $debit->fk_doc = $declaration->rowid; + $debit->fk_docdet = 0; + $debit->societe_type = 1; + $debit->fk_user_author = $user->id; + $debit->code_tiers = ''; + $debit->piece_num = ''; + $debit->import_key = ''; + $debit->entity = $this->entity; + + $result = $debit->create($user); + error_log("DEBUG: Debit entry create result: " . ($result ? "SUCCESS" : "FAILED - " . $debit->error)); + + if (!$result) { + $this->error = 'Failed to create debit entry: ' . $debit->error; + return false; + } } - // Set all required fields for Bookkeeping class - $bookkeeping->doc_date = $declaration->end_date; - $bookkeeping->doc_ref = $declaration->declaration_name; - $bookkeeping->code_journal = 'OD'; // OD journal for VAT declarations - $bookkeeping->numero_compte = $entry['account_code']; - $bookkeeping->label_compte = $entry['account_label']; - $bookkeeping->montant = $amount; - $bookkeeping->sens = $sens; - $bookkeeping->fk_doc = $declaration->rowid; - $bookkeeping->fk_docdet = 0; - $bookkeeping->societe_type = 1; - $bookkeeping->fk_user_author = $user->id; - $bookkeeping->code_tiers = ''; - $bookkeeping->piece_num = ''; - $bookkeeping->import_key = ''; - $bookkeeping->entity = $this->entity; - - $result = $bookkeeping->create($user); - error_log("DEBUG: Bookkeeping create result: " . ($result ? "SUCCESS" : "FAILED - " . $bookkeeping->error)); - - if (!$result) { - $this->error = 'Failed to create accounting entry: ' . $bookkeeping->error; - return false; + // Create credit entry if amount > 0 + if ($credit_amount > 0) { + $credit = new Bookkeeping($this->db); + $credit->doc_date = $declaration->end_date; + $credit->doc_ref = $declaration->declaration_name; + $credit->code_journal = 'OD'; + $credit->numero_compte = $entry['account_code']; + $credit->label_compte = $entry['account_label']; + $credit->montant = $credit_amount; + $credit->sens = 'C'; + $credit->fk_doc = $declaration->rowid; + $credit->fk_docdet = 0; + $credit->societe_type = 1; + $credit->fk_user_author = $user->id; + $credit->code_tiers = ''; + $credit->piece_num = ''; + $credit->import_key = ''; + $credit->entity = $this->entity; + + $result = $credit->create($user); + error_log("DEBUG: Credit entry create result: " . ($result ? "SUCCESS" : "FAILED - " . $credit->error)); + + if (!$result) { + $this->error = 'Failed to create credit entry: ' . $credit->error; + return false; + } } }