Version 1.2: Fix PDF-Upload und Dateiname-Fallback
- Fix: transnoentitiesaliases() → transnoentities() (Kompatibilität mit Dolibarr 22) - Neu: Fallback-Parser extrahiert Auszugsnummer/Jahr aus Dateinamen wenn pdfinfo/pdftotext nicht verfügbar Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
1fc10d3781
commit
31daf7ec94
3 changed files with 26 additions and 3 deletions
|
|
@ -621,6 +621,29 @@ class BankImportStatement extends CommonObject
|
|||
$result['statement_year'] = $result['pdf_year'];
|
||||
}
|
||||
|
||||
// Fallback: extract data from filename if PDF tools returned nothing
|
||||
// Supports patterns like: 13438147_2025_Nr.001_Kontoauszug_vom_2025.07.01_timestamp.pdf
|
||||
if (empty($result['statement_number']) && empty($result['iban'])) {
|
||||
$basename = basename($filepath);
|
||||
if (preg_match('/(\d+)_(\d{4})_Nr\.?(\d+)/', $basename, $fm)) {
|
||||
$result['account_number'] = ltrim($fm[1], '0');
|
||||
$result['pdf_number'] = (string) intval($fm[3]);
|
||||
$result['pdf_year'] = (int) $fm[2];
|
||||
$result['statement_number'] = $result['pdf_number'];
|
||||
$result['statement_year'] = $result['pdf_year'];
|
||||
}
|
||||
if (preg_match('/vom[_\s](\d{4})\.(\d{2})\.(\d{2})/', $basename, $dm)) {
|
||||
$stmtDate = DateTime::createFromFormat('Y-m-d', $dm[1].'-'.$dm[2].'-'.$dm[3]);
|
||||
if ($stmtDate) {
|
||||
$result['statement_date'] = $stmtDate->setTime(0, 0, 0)->getTimestamp();
|
||||
if (empty($result['statement_number'])) {
|
||||
$result['statement_number'] = (string) intval($dm[2]);
|
||||
$result['statement_year'] = (int) $dm[1];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Validate: at least statement number or IBAN must be present
|
||||
if (empty($result['statement_number']) && empty($result['iban'])) {
|
||||
return false;
|
||||
|
|
|
|||
|
|
@ -76,7 +76,7 @@ class modBankImport extends DolibarrModules
|
|||
$this->editor_squarred_logo = ''; // Must be image filename into the module/img directory followed with @modulename. Example: 'myimage.png@bankimport'
|
||||
|
||||
// Possible values for version are: 'development', 'experimental', 'dolibarr', 'dolibarr_deprecated', 'experimental_deprecated' or a version string like 'x.y.z'
|
||||
$this->version = '1.1';
|
||||
$this->version = '1.2';
|
||||
// Url to the file with your last numberversion of this module
|
||||
//$this->url_last_version = 'http://www.example.com/versionmodule.txt';
|
||||
|
||||
|
|
|
|||
|
|
@ -167,12 +167,12 @@ if ($action == 'upload' && !empty($_FILES['pdffile'])) {
|
|||
|
||||
// Validate required fields
|
||||
if (empty($statementNumber)) {
|
||||
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesaliases("StatementNumber")).': '.$fileNames[$fi], null, 'errors');
|
||||
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("StatementNumber")).': '.$fileNames[$fi], null, 'errors');
|
||||
$errorCount++;
|
||||
continue;
|
||||
}
|
||||
if (empty($statementYear)) {
|
||||
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesaliases("Year")).': '.$fileNames[$fi], null, 'errors');
|
||||
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("Year")).': '.$fileNames[$fi], null, 'errors');
|
||||
$errorCount++;
|
||||
continue;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue