- 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)
230 lines
7.3 KiB
Markdown
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*
|