Files
clawd/memory/kb/projects/roa2web-telegram-import/flux-contabil.md
Echo f184b2b179 feat(process_bon): script complet procesare bonuri fiscale
- OCR via roa2web API
- SQLite via API (payment_methods, tva_breakdown)
- Oracle: partener, TVA încasare (4426/4428), ID_FDOC=17
- ID_JTVA_COLOANA per cotă TVA
- TAXCODE (TVAI pentru firma TVA încasare)
- Suport multiple cote TVA în același bon
- Plată CARD: fără 401=5311 (se face la extras)
2026-02-03 16:50:48 +00:00

7.3 KiB

Flux Contabil - Import Bonuri Fiscale Achiziție

Actualizat: 2026-02-03


1. Formula Contabilă Generală

Bon fiscal achiziție (plătit cash)

┌─────────────────────────────────────────────────────────────┐
│  DEBIT           │  CREDIT         │  SUMA    │  DESCRIERE  │
├──────────────────┼─────────────────┼──────────┼─────────────┤
│  6xx (cheltuială)│  401 (furnizor) │  fără TVA│  Cheltuială │
│  4426 (TVA ded.) │  401 (furnizor) │  TVA     │  TVA deduct.│
│  401 (furnizor)  │  5311 (casa)    │  cu TVA  │  Plată cash │
└──────────────────┴─────────────────┴──────────┴─────────────┘

Bon fiscal cu TVA la încasare

┌─────────────────────────────────────────────────────────────┐
│  DEBIT           │  CREDIT         │  SUMA    │  DESCRIERE  │
├──────────────────┼─────────────────┼──────────┼─────────────┤
│  6xx (cheltuială)│  401 (furnizor) │  fără TVA│  Cheltuială │
│  4428 (TVA neex.)│  401 (furnizor) │  TVA     │  TVA neexig.│
│  401 (furnizor)  │  5311 (casa)    │  cu TVA  │  Plată cash │
│  4426 (TVA ded.) │  4428 (TVA neex)│  TVA     │  Exigibiliz.│
└──────────────────┴─────────────────┴──────────┴─────────────┘

2. Conturi Cheltuieli (6xx)

Cont Denumire Utilizare
6021 Cheltuieli cu materialele auxiliare Rechizite, materiale consumabile
6022 Cheltuieli privind combustibilii Benzină, motorină, GPL
6024 Cheltuieli privind piesele de schimb Piese auto, componente
6028 Cheltuieli privind alte materiale consumabile Diverse materiale
604 Cheltuieli privind materialele nestocate Materiale directe în consum
611 Cheltuieli cu întreținerea și reparațiile Service, reparații
612 Cheltuieli cu redevențele Licențe, abonamente
613 Cheltuieli cu primele de asigurare Asigurări
614 Cheltuieli cu studiile și cercetările Consultanță
622 Cheltuieli privind comisioanele Comisioane bancare
623 Cheltuieli de protocol, reclamă Protocol, publicitate
624 Cheltuieli cu transportul Transport bunuri/persoane
625 Cheltuieli cu deplasările Diurnă, cazare, transport
626 Cheltuieli poștale și telecomunicații Telefon, internet
627 Cheltuieli cu serviciile bancare Comisioane bancare
628 Alte cheltuieli cu serviciile Diverse servicii

3. Mapare Automată CUI → Cont

Benzinării

CUI Denumire Cont
RO1590082 OMV PETROM 6022
RO1025tried ROMPETROL 6022
RO14991381 MOL ROMANIA 6022
RO524186 LUKOIL 6022

Magazine Bricolaj

CUI Denumire Cont
RO10562600 DEDEMAN 6021/6028
RO6323780 HORNBACH 6021/6028
RO14688790 LEROY MERLIN 6021/6028

Supermarket-uri

CUI Denumire Cont
RO15tried MEGA IMAGE 6028
RO5765323 KAUFLAND 6028
RO3891449 CARREFOUR 6028
RO6334171 LIDL 6028

4. Exemplu Complet - Bon Benzină

Bon:

  • Furnizor: OMV PETROM (CUI: RO1590082)
  • Data: 2026-02-03
  • Număr bon: 12345
  • Total: 250.00 RON (210.08 + 39.92 TVA 19%)

4.1 Date extrase OCR

{
  "partner_name": "OMV PETROM MARKETING SRL",
  "cui": "RO1590082",
  "receipt_date": "2026-02-03",
  "receipt_number": "12345",
  "amount": 250.00,
  "tva_entries": [
    {"code": "A", "percent": 19, "amount": 39.92}
  ],
  "tva_total": 39.92,
  "payment_methods": [{"method": "NUMERAR", "amount": 250.00}]
}

4.2 Note Contabile Generate

-- LINIA 1: Cheltuială combustibil
INSERT INTO ACT_TEMP (
    LUNA, AN, COD, DATAIREG, DATAACT, NRACT,
    EXPLICATIA,
    SCD, SCC, SUMA,
    ID_PARTC, ID_FDOC
) VALUES (
    2, 2026, :cod, SYSDATE, TO_DATE('2026-02-03', 'YYYY-MM-DD'), 12345,
    'Combustibil OMV bon 12345',
    '6022', '401', 210.08,
    :id_part_omv, :id_fdoc_bon
);

-- LINIA 2: TVA deductibil
INSERT INTO ACT_TEMP (
    LUNA, AN, COD, DATAIREG, DATAACT, NRACT,
    EXPLICATIA,
    SCD, SCC, SUMA, PROC_TVA,
    ID_PARTC, ID_FDOC
) VALUES (
    2, 2026, :cod, SYSDATE, TO_DATE('2026-02-03', 'YYYY-MM-DD'), 12345,
    'TVA combustibil OMV bon 12345',
    '4426', '401', 39.92, 1.19,
    :id_part_omv, :id_fdoc_bon
);

-- LINIA 3: Plată din casă
INSERT INTO ACT_TEMP (
    LUNA, AN, COD, DATAIREG, DATAACT, NRACT,
    EXPLICATIA,
    SCD, SCC, SUMA,
    ID_PARTD, ID_FDOC
) VALUES (
    2, 2026, :cod, SYSDATE, TO_DATE('2026-02-03', 'YYYY-MM-DD'), 12345,
    'Plata bon OMV 12345',
    '401', '5311', 250.00,
    :id_part_omv, :id_fdoc_bon
);

4.3 Flux Complet Python

import oracledb

def import_bon_achizitie(extraction_data, conn):
    cursor = conn.cursor()
    
    # 1. Găsește sau creează partenerul
    id_part = find_or_create_partner(cursor, extraction_data['cui'], extraction_data['partner_name'])
    
    # 2. Determină contul de cheltuială
    cont_cheltuiala = get_cont_by_cui(extraction_data['cui'])  # ex: '6022'
    
    # 3. Calculează sumele
    total_cu_tva = extraction_data['amount']
    tva = extraction_data['tva_total']
    total_fara_tva = total_cu_tva - tva
    
    # 4. Inițializare
    cursor.callproc('MARIUSM_AUTO.PACK_CONTAFIN.INITIALIZEAZA_SCRIERE_ACT_RUL', [
        id_util,      # ID utilizator
        datetime.now(),
        an,
        luna,
        0,            # suprascriere_cod
        0,            # suprascriere_anluna  
        0,            # scrie_sterge (0=scrie)
        id_sucursala
    ])
    
    # 5. INSERT în ACT_TEMP (cele 3 linii)
    # ... INSERT-uri ca mai sus ...
    
    # 6. Finalizare
    mesaj = cursor.var(oracledb.STRING)
    cursor.callproc('MARIUSM_AUTO.PACK_CONTAFIN.FINALIZEAZA_SCRIERE_ACT_RUL', [
        id_util,
        cod,
        0,            # scrie_sterge
        0,            # modificare_nota
        0,            # scrie_cump_vanz
        mesaj
    ])
    
    conn.commit()
    return mesaj.getvalue()

5. Cote TVA România

Cotă Procent PROC_TVA Aplicare
Standard 19% 1.19 Majoritatea bunurilor/serviciilor
Redus 1 9% 1.09 Alimente, medicamente, cărți
Redus 2 5% 1.05 Locuințe sociale
Zero 0% 1.00 Export, anumite servicii

6. Validări Necesare

  1. CUI valid - verificare checksum
  2. Data bon - nu în viitor, nu mai veche de 1 an
  3. Sumă - pozitivă, format corect
  4. TVA - să corespundă cu cotele legale
  5. Balanță - SUMA(debit) = SUMA(credit)

Flux documentat de Echo • 2026-02-03