Add debugging and manual table creation fallback
Debug Features: - Added comprehensive logging to SQL file loading process - Tries multiple SQL file paths to find the correct location - Logs success/failure for each path attempt - Detailed error logging for troubleshooting Fallback Mechanism: - Manual table creation if SQL file loading fails - Creates essential tables directly via SQL - Ensures module can activate even if SQL files aren't found - Creates tables with correct structure and constraints This should resolve the table creation issue and provide detailed logs for debugging!
This commit is contained in:
parent
ea07eb1fe6
commit
e58c615c8f
@ -472,10 +472,31 @@ class modDeclarationTVA extends DolibarrModules
|
|||||||
global $conf, $langs;
|
global $conf, $langs;
|
||||||
|
|
||||||
// Create tables of module at module activation
|
// Create tables of module at module activation
|
||||||
//$result = $this->_load_tables('/install/mysql/', 'declarationtva');
|
// Try different paths to find the SQL files
|
||||||
$result = $this->_load_tables('/custom/declarationtva/sql/');
|
$sql_paths = array(
|
||||||
|
'/custom/declarationtva/sql/',
|
||||||
|
'/declarationtva/sql/',
|
||||||
|
'/install/mysql/'
|
||||||
|
);
|
||||||
|
|
||||||
|
$result = -1;
|
||||||
|
foreach ($sql_paths as $path) {
|
||||||
|
dol_syslog("DeclarationTVA: Trying SQL path: " . $path, LOG_INFO);
|
||||||
|
$result = $this->_load_tables($path);
|
||||||
|
dol_syslog("DeclarationTVA: SQL loading result for $path: " . $result, LOG_INFO);
|
||||||
|
if ($result >= 0) {
|
||||||
|
dol_syslog("DeclarationTVA: SQL loading successful with path: " . $path, LOG_INFO);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ($result < 0) {
|
if ($result < 0) {
|
||||||
return -1; // Do not activate module if error 'not allowed' returned when loading module SQL queries (the _load_table run sql with run_sql with the error allowed parameter set to 'default')
|
dol_syslog("DeclarationTVA: All SQL loading attempts failed, trying manual table creation", LOG_WARNING);
|
||||||
|
$manual_result = $this->_create_tables_manually();
|
||||||
|
if ($manual_result < 0) {
|
||||||
|
dol_syslog("DeclarationTVA: Manual table creation also failed", LOG_ERR);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Run migration to fix account mappings table structure
|
// Run migration to fix account mappings table structure
|
||||||
@ -604,4 +625,58 @@ class modDeclarationTVA extends DolibarrModules
|
|||||||
dol_syslog("DeclarationTVA: Migration completed successfully", LOG_INFO);
|
dol_syslog("DeclarationTVA: Migration completed successfully", LOG_INFO);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Manually create tables if SQL file loading fails
|
||||||
|
*
|
||||||
|
* @return int 1 if OK, -1 if KO
|
||||||
|
*/
|
||||||
|
private function _create_tables_manually()
|
||||||
|
{
|
||||||
|
global $conf;
|
||||||
|
|
||||||
|
dol_syslog("DeclarationTVA: Creating tables manually", LOG_INFO);
|
||||||
|
|
||||||
|
// Create account mappings table
|
||||||
|
$sql = "CREATE TABLE IF NOT EXISTS `" . MAIN_DB_PREFIX . "declarationtva_account_mappings` (
|
||||||
|
`rowid` int(11) NOT NULL AUTO_INCREMENT,
|
||||||
|
`entity` int(11) NOT NULL DEFAULT 1,
|
||||||
|
`ca3_line` varchar(8) NOT NULL COMMENT 'A1, A2, A3, A4, A5, 08, 09, 9B, 17, 20, 21, 22, 25, 26, 28, 29',
|
||||||
|
`account_code` varchar(32) NOT NULL COMMENT 'PCG account code',
|
||||||
|
`account_label` varchar(255) DEFAULT NULL,
|
||||||
|
`vat_rate` decimal(5,2) DEFAULT NULL,
|
||||||
|
`is_active` tinyint(1) DEFAULT 1,
|
||||||
|
`created_date` datetime DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`rowid`),
|
||||||
|
UNIQUE KEY `uk_mapping_entity_line_account` (`entity`, `ca3_line`, `account_code`),
|
||||||
|
KEY `idx_ca3_line` (`ca3_line`),
|
||||||
|
KEY `idx_account_code` (`account_code`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci";
|
||||||
|
|
||||||
|
$result = $this->db->query($sql);
|
||||||
|
if (!$result) {
|
||||||
|
dol_syslog("DeclarationTVA: Failed to create account_mappings table: " . $this->db->lasterror(), LOG_ERR);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create config table
|
||||||
|
$sql = "CREATE TABLE IF NOT EXISTS `" . MAIN_DB_PREFIX . "declarationtva_config` (
|
||||||
|
`rowid` int(11) NOT NULL AUTO_INCREMENT,
|
||||||
|
`entity` int(11) NOT NULL DEFAULT 1,
|
||||||
|
`config_key` varchar(64) NOT NULL,
|
||||||
|
`config_value` text,
|
||||||
|
`created_date` datetime DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`rowid`),
|
||||||
|
UNIQUE KEY `uk_config_entity_key` (`entity`, `config_key`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci";
|
||||||
|
|
||||||
|
$result = $this->db->query($sql);
|
||||||
|
if (!$result) {
|
||||||
|
dol_syslog("DeclarationTVA: Failed to create config table: " . $this->db->lasterror(), LOG_ERR);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
dol_syslog("DeclarationTVA: Manual table creation completed successfully", LOG_INFO);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user