"Odoo" import izvoda BBI banke - "Claude" opet spašava dan


Uvod

Odoo ima generički modul za importovanje bankovnih izvoda. Modul funkcioniše na taj način da se za svaku banku mogu mapirati značenja polja iz CSV ili Excel fajla.

BBI banka nema Excel ili CSV import, samo exporte u TXT i XML formatu koji nisu kompatibilni sa generičkim Odoo modulom.

Zaobilazno rješenje ovog problema je bilo “copy-paste” transakcija iz pregleda transakcija BBI web aplikacije.

Međutim, prije nekoliko dana, to rješenje više nije bilo iskoristivo, jer je BBI izmjenila format tog HTML pregleda.1

Claude, upomoć!

Animirani prikaz rješenja

Automatski proces transformacije BBI izvoda - od copy-paste teksta do Excel fajla spremnog za Odoo import

Rješenje: Python skripta u četiri iteracije

Claude-u sam zadao zadatak da mi pomogne u pripremi ovog fajla za import. U nekoliko iteracija došao sam do željenog rješenja.

Kompletan izvještaj sesije: GitHub Gist

Iteracija 1-2: Osnovna transformacija

Skripta je trebala obaviti nekoliko transformacija:

  1. Spajanje linija: Kombinovanje linija datuma sa odgovarajućim detaljima
  2. Uklanjanje naziva banke: Čuvanje samo broja računa
  3. Izuzeci: Dodavanje placeholder “0000000000000” za transakcije bez broja računa u liniji datuma
  4. Čuvanje TAB separatora: Održavanje TAB formata kroz cijelu obradu

Primjer transformacije:

Ulaz (3 linije):

31.10.25

BBI DD Sarajevo 1249253040684204000001 Naplata mjesečne naknade

Izlaz (1 linija):

31.10.25	0000000000000	1249253040684204000001	Naplata mjesečne...

Iteracija 3: CSV export

Dodavanje automatskog exporta u CSV format sa TAB separatorom.

Iteracija 4: Kompletan workflow - do Excel-a

Finalna verzija skripte automatizuje kompletan proces:

  1. Obrađuje TXT fajl
  2. Kreira CSV sa TAB separatorom
  3. Automatski konvertuje u XLSX (headless mode)
  4. Otvara rezultat u LibreOffice Calc

Tehnička implementacija konverzije

Skripta koristi dva pristupa za kreiranje Excel fajla:

1. openpyxl biblioteka (primarno):

from openpyxl import Workbook
from openpyxl.styles import numbers

wb = Workbook()
ws = wb.active

# Formatiranje kolona
for row in csv_reader:
    # Kolona A: Datumi (DD.MM.YY format)
    cell = ws.cell(row=row_num, column=1, value=date_value)
    cell.number_format = 'DD.MM.YY'

    # Kolona B: Brojevi računa (text format - čuva vodeće nule)
    cell = ws.cell(row=row_num, column=2, value=account_value)
    cell.number_format = '@'  # Text format

Prednosti:

  • Precizna kontrola formatiranja
  • Datumi se formatiraju kao DD.MM.YY
  • Brojevi računa kao tekst (čuva vodeće nule)

2. LibreOffice headless (fallback):

libreoffice --headless --convert-to xlsx \
    --infilter="CSV:9,34,UTF8" input.csv

Parametri:

  • 9 = TAB separator
  • 34 = Text delimiter (”)
  • UTF8 = Encoding

Način korištenja

Jednostavna komanda:

python bbi_create_xlsx_for_odoo_import.py bbi_0710.txt

Jedna komanda automatski proizvodi formatirani XLSX fajl spreman za Odoo import!

Alati koje koristimo

  • Claude Code - AI asistent za razvoj (Sonnet 4.5)
  • Python 3 - Programski jezik
  • openpyxl - Excel manipulacija
  • LibreOffice - Headless konverzija (fallback)
  • Odoo 16 - ERP platforma za koju pripremamo import

Zaključak

Ono što je moglo biti veliki problem brzo je riješeno uz pomoć Claude-a. Korisnička procedura je pojednostavljena:2

  1. Copy-paste iz BBI web aplikacije u TXT fajl
  2. Pokreni Python skriptu
  3. Import XLSX u Odoo

Status: ✅ Funkcionalnost implementirana i testirana.


Širi kontekst: AI alati i bring.out

Ovaj blog post je dio veće priče o tome kako su AI alati transformisali naš način razvoja softvera.

👉 Pročitajte cijelu priču: Kako smo postali najveći proizvođači software-a na Odoo open-source platformi u Bosni i Hercegovini

U tom postu možete saznati:

  • Kako smo otkrili AI alate preko slučajnog razgovora
  • Zašto je terminal pravo mjesto za AI kolaboraciju
  • Priča o “Džemi” - našem prvom AI agentu
  • Kako smo završili projekat 15 dana prije roka
  • Šta AI alati znače za našu poziciju na Odoo tržištu u BiH

Napomene

Ovaj sadržaj je napisao claude.ai 🤖 prema Ernadovim uputama.


Reference

Footnotes

  1. BBI banka je ubacila dodatni enter u jednu kolonu HTML pregleda transakcija

  2. Do sada smo nakon copy-paste operacije morali brisati suvišni podatak - Naziv primaoca