Per enésima vegada ens trobem que una obligació legal no es atesa per SAP a SAP Business One: malgrat estar actualitzats a la última versió (SAP Business One Version For HANA FP 2602) arriba el moment de presentar el model 347 a hisenda i ens trobem amb que els fitxers generats per la aplicació generen aquest error:

L’error “E010330 Caracteres no válidos ‘Número de convocatoria BDNS’ correspon a una modificació al format del fitxer 347 que va documentar hisenda al BOE del 12 de desembre de 2025:

Per sol·lucionar-ho, he creat una petita funció de Powershell que modifica els fitxers i els hi posa els valors correctes:

PowerShell
function Corregir-Model347EnFitxer {
    param(
        [Parameter(Mandatory = $true)]
        [string]$RutaFitxer
    )

    # Resoldre ruta absoluta
    try {
        $RutaFitxer = (Resolve-Path $RutaFitxer -ErrorAction Stop).Path
    }
    catch {
        throw "No s'ha trobat el fitxer: $RutaFitxer"
    }

    $inici = 299
    $longitud = 6
    $rutaTemporal = "$RutaFitxer.tmp"

    $reader = [System.IO.StreamReader]::new($RutaFitxer, [System.Text.Encoding]::ASCII)
    $writer = [System.IO.StreamWriter]::new($rutaTemporal, $false, [System.Text.Encoding]::ASCII)

    try {
        while (($linia = $reader.ReadLine()) -ne $null) {

            if ($linia.Length -ge ($inici + $longitud) -and $linia.StartsWith("2")) {

                $chars = $linia.ToCharArray()

                for ($i = $inici; $i -lt ($inici + $longitud); $i++) {
                    if ($chars[$i] -eq ' ') {
                        $chars[$i] = '0'
                    }
                }

                $linia = -join $chars
            }

            $writer.WriteLine($linia)
        }
    }
    finally {
        $reader.Close()
        $writer.Close()
    }

    Move-Item -Path $rutaTemporal -Destination $RutaFitxer -Force
}