Bosanska lokalizacija "Odoo", nove opcije za fiskalne funkcije "FPRINT" (entitet FBiH)
Video
Uvod
U okviru bosanske lokalizacije za “Odoo” open-source platformu, implementirali smo dvije nove opcije za FPrint fiskalni drajver (entitet FBiH). Ove opcije rješavaju praktične probleme koji se javljaju u svakodnevnom radu sa fiskalnim uređajima.
Opcija 1: Identifikacija fiskalnog uređaja (signed_by)
Problem
U okruženjima sa više fiskalnih uređaja (npr. centrala HQ, prodajno mjesto POS1, prodajno mjesto POS2) potrebno je:
- Identificirati koji fiskalni uređaj je izdao račun
- Spriječiti storniranje na pogrešnom uređaju
- Omogućiti upit identiteta uređaja putem API-ja
Rješenje
Nova konfiguraciona opcija signed_by omogućava imenovanje svakog EDI server instance/fiskalnog uređaja.
Konfiguracija
application:
driver:
fprint:
pin: '5555'
api_key: dev_api_key_fprint_12345678901234567890
signed_by: HQ # Identifikator uređaja: HQ, POS1, POS2, itd.
Primjeri konfiguracije
| Uređaj | signed_by | Opis |
|---|---|---|
| Centrala | HQ | Glavna kancelarija |
| POS1 | POS1 | Prodajno mjesto 1 |
| POS2 | POS2 | Prodajno mjesto 2 |
Novi API endpoint
# Upit identiteta uređaja
curl -X GET "http://localhost:8100/5555/signed_by" \
-H "Authorization: Bearer <api_key>"
# Odgovor:
# {"signed_by": "HQ", "driver_name": "fprint"}
Validacija na klijentskoj strani
Odoo klijentski modul može koristiti ovu informaciju za validaciju prije storniranja:
def validate_refund_device(original_invoice, edi_server):
response = edi_server.get("/signed_by")
current_device = response["signed_by"]
original_device = original_invoice.signedBy
if current_device != original_device:
raise UserError(
f"Fiskalni račun izdat na drugom fiskalnom uređaju: {original_device}! STOP!"
)
Opcija 2: Automatski polog pazara za storno račune (refund_auto_polog)
Problem
FPrint fiskalni printeri zahtijevaju dovoljan iznos gotovine u kasi za obradu storno transakcija. Kada se izdaje storno, printer mora imati gotovinu za vraćanje kupcu. Problem je što gotovina možda nije u ladici.
Rješenje
Automatski workflow za storno račune:
- Polog pazara: Prije obrade storna, automatski se šalje komanda za polog gotovine u iznosu storna
- Forsiranje gotovinskog plaćanja: Storno se šalje sa tipom plaćanja
Cashbez obzira na originalni tip plaćanja
Konfiguracija
application:
driver:
fprint:
pin: '5555'
api_key: dev_api_key_fprint_12345678901234567890
refund_auto_polog: true # default: true
Workflow
Zahtjev klijenta (Storno -15 KM, kartica)
│
▼
┌─────────────────────────────────────────┐
│ 1. Izračunaj apsolutni iznos storna │
│ iznos = abs(-15) = 15 KM │
└─────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────┐
│ 2. Pošalji Polog Pazara komandu │
│ iznos: 15 KM │
└─────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────┐
│ 3. Override tip plaćanja na Cash │
│ original: Card → forsirano: Cash │
└─────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────┐
│ 4. Pošalji Storno račun │
│ iznos: -15 KM │
│ tip_placanja: Cash │
└─────────────────────────────────────────┘
│
▼
Odgovor klijentu
Transparentnost za klijenta
Nema promjena na API nivou. Ponašanje je transparentno za klijente:
- Klijent šalje storno račun sa bilo kojim tipom plaćanja
- Server interno obrađuje polog pazara i override tipa plaćanja
- Odgovor se vraća kao normalno
Logovanje
INFO: Refund auto_polog: sending polog for 15.00 KM
INFO: Refund auto_polog: polog successful
INFO: Refund auto_polog: forcing Cash payment type
Zaključak
Obje nove opcije poboljšavaju rad sa FPrint fiskalnim uređajima u FBiH entitetu:
| Opcija | Default | Namjena |
|---|---|---|
signed_by | HQ | Identifikacija uređaja u multi-device okruženju |
refund_auto_polog | true | Automatski polog za bezbrižno storniranje |
Implementacija je kompatibilna unazad - postojeći klijenti ne zahtijevaju promjene.
Napomena
Članak je izgenerisao Claude, Ernad pregledao.