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

230 lines
7.3 KiB
Markdown

# 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
```json
{
"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
```sql
-- 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
```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*