Specificatie minima cu datele de care depinde facturarea ROA, pentru caietul de sarcini al modernizarii RoRIS. Include: - DOCUMENTATIE_DATE_FACTURARE_RORIS.md/.docx (livrabil) - dictionar_date_facturare.csv (anexa tehnica) - PACK_ACN_IMPORT.pck (sursa analizata) - CLAUDE.md (context) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
12 KiB
Date necesare pentru facturare — modernizare RORIS (specificație minimă)
Beneficiar: ACN — facturare tranzit/ecluzare barje și nave, cheiaj Sistem sursă (actual): RORIS — bază de date SQL Server Sistem care consumă datele: ROA (aplicația de facturare) — bază de date Oracle Scop: stabilirea datelor minime pe care noul RORIS trebuie să le pună la dispoziția facturării. Autor: ROMFAST SRL — dezvoltatorul ERP-ului ROA și al programului de facturare. Data: 24.06.2026
1. Principiu de integrare (mod actual, de păstrat)
Facturarea ROA (Oracle) preia astăzi datele din RORIS (SQL Server) prin vederi/tabele expuse de
RORIS, citite de Oracle printr-un database link (gateway heterogen Oracle → SQL Server,
RORISSQL). Importul este o simplă copiere (merge) din aceste surse în tabelele Oracle ale ROA,
fără API sau servicii web. Vederile/tabelele relevante poartă prefixul ips_* (date) și
ips_v* (vederi de calcul).
Cerința de bază a modernizării: noul RORIS trebuie să expună în continuare, pe partea sa de SQL Server, aceleași vederi/tabele, cu aceleași denumiri de coloane și aceeași semnificație, accesibile prin database link din Oracle, astfel încât importul actual să funcționeze neschimbat sau cu adaptări minime.
De prevăzut în buget: dacă noul RORIS este construit pe altă platformă sau cu altă structură de date (alte tabele/coloane, alt model), modernizarea trebuie să includă un strat de compatibilitate pe partea RORIS (vederi SQL Server / tabele intermediare / replicare) care să reproducă structura de mai jos și să rămână accesibil prin database link Oracle. Nu se dorește rescrierea importului pe API/REST — aceasta ar însemna refacerea integrală a mecanismului de facturare și costuri suplimentare nejustificate.
2. Entitățile necesare facturării (12)
| # | Sursă RORIS | Conținut | Folosită la |
|---|---|---|---|
| 1 | IPS_CONTACTS |
Firme (transportatori, plătitori) | Client/plătitor pe factură |
| 2 | IPS_COUNTRIES |
Țări | Atribut navă/voiaj/marfă |
| 3 | IPS_RISGOODS |
Mărfuri (NSTR, IMO, periculos) | Încadrare tarifară pe marfă |
| 4 | IPS_VESSELS |
Nave/barje (tonaj, putere, LBD, tip) | Cantitate facturată tranzit/cheiaj |
| 5 | IPS_RIS_VES_TYPES |
Tipuri de navă | Încadrare tarifară pe tip/grupă |
| 6 | IPS_ROUTE_POINTS |
Puncte de rută (km/porturi/dane) | Rută, distanță, dană |
| 7 | IPS_VOYAGES |
Voiaje/convoaie (avizare, declarație) | Antet tranzit; perioadă facturare |
| 8 | IPS_VOYAGE_MEMBERS |
Membri convoi (navă + traseu + distanță) | Linia de bază a tranzitului |
| 9 | IPS_CARGOES |
Marfă pe membru convoi (cantitate, UM) | Cantitate și încadrare marfă |
| 10 | IPS_VOYAGE_LOCK |
Ecluzări (ecluză, cameră, durată) | Repartiția valorii pe ecluze |
| 11 | IPS_BERTHINGS |
Acostări/staționări la dană | Baza facturării cheiajului |
| 12 | Nomenclatoare de config (în ROA) | Grupă tip navă, grupă marfă, UM, dane — pe baza ID-urilor RORIS | Selecția tarifului (vezi 2.1 și cap. 4) |
Detaliul complet pe câmpuri (toate coloanele, tip, obligativitate) se află în anexa
dictionar_date_facturare.csv. Mai jos sunt doar câmpurile esențiale pentru facturare.
2.1. Nomenclatoare folosite la facturare (listă completă)
Nomenclatoarele sunt listele de clasificare/referință de care depinde facturarea (în special selecția tarifelor — vezi cap. 4). Toate trebuie furnizate de noul sistem, cu ID-uri stabile.
Coloana „Mod de populare" arată dacă nomenclatorul este importat din RORIS (copiat într-o tabelă ROA), creat și întreținut în ROA (nu există în RORIS; configurarea lui — grupări, tarife, echivalențe — se bazează pe ID-urile din RORIS) sau generat în ROA din date importate.
| Nomenclator | Conținut | Rol la facturare | Mod de populare |
|---|---|---|---|
IPS_CONTACTS |
Firme (transportatori, plătitori, armatori) | Client/plătitor pe factură | Importat din RORIS |
IPS_COUNTRIES |
Țări | Pavilion navă, țară marfă/voiaj | Importat din RORIS |
IPS_RISGOODS |
Mărfuri (cu NSTR, clasă IMO, indicator periculos) | Încadrare tarifară pe marfă | Importat din RORIS |
IPS_GOODS_GROUPS |
Grupe de marfă | Încadrare tarifară pe grupă de marfă | Creat în ROA (config pe baza ID-urilor RORIS — nu există în RORIS) |
IPS_RIS_VES_TYPES |
Tipuri de navă | Atribut navă; bază pentru grupa de tip navă | Importat din RORIS |
IPS_GRUP_TIP_NAVE |
Grupe de tip navă | Încadrare tarifară (tariful se definește pe grupă) | Creat în ROA (config pe baza ID-urilor RORIS — nu există în RORIS) |
IPS_ARAMIS_TIP_NAVE |
Tipuri de navă — clasificare ARAMIS | Clasificarea navei la cheiaj | Creat în ROA (config pe baza ID-urilor RORIS — nu există în RORIS) |
IPS_ROUTE_POINTS |
Puncte de rută (km, porturi, dane) | Definirea rutei, distanței și danei | Importat din RORIS |
IPS_ROUTES |
Rute (pereche punct plecare–sosire + distanță) | Încadrare tarifară pe rută | Generat în ROA din date RORIS (din voyage_members + route_points) |
IPS_VAS_UM |
Unități de măsură ale tarifelor (TC, TRN, LBD, CP, ZI) | Selecția unității de măsură a tarifului | Creat în ROA (config pe baza ID-urilor RORIS — nu există în RORIS) |
IPS_VAS_ECHIVALENT |
Echivalențe între unitățile de măsură | Conversii de UM la calcul | Creat în ROA (config pe baza ID-urilor RORIS — nu există în RORIS) |
IPS_DANE |
Dane | Identificarea danei la cheiaj | Creat în ROA (config pe baza ID-urilor RORIS — nu există în RORIS) |
Observații:
IPS_CONTACTS,IPS_COUNTRIES,IPS_RISGOODS,IPS_RIS_VES_TYPESșiIPS_ROUTE_POINTSapar și în tabelul entităților (1-6) — sunt în același timp date de tranzacție și nomenclatoare. Acestea trebuie furnizate de noul sistem, cu ID-uri stabile.- Nomenclatoarele marcate „Creat în ROA" NU există în RORIS și nu trebuie furnizate de noul sistem. Ele sunt configurate manual în ROA (de exemplu: gruparea tipurilor de navă în grupe tarifare, gruparea mărfurilor, echivalențele de unități de măsură, danele) și referă prin ID entitățile din RORIS (tip navă, marfă, punct de rută). La fel,
IPS_ROUTESeste construit în ROA din datele importate.- Consecință critică: deoarece aceste configurări din ROA sunt legate de ID-urile din RORIS, dacă noul sistem schimbă ID-urile entităților de bază (tip navă, marfă, punct de rută, navă, firmă), toate grupările și tarifele configurate în ROA se desincronizează și trebuie refăcute manual. De aceea stabilitatea ID-urilor din RORIS este esențială (vezi cap. 4).
- Tarifele propriu-zise (
IPS_TARIFE_TRANZITși similare) sunt tot în ROA și referă prin ID nomenclatoarele de mai sus (vezi cap. 4, pct. 5).
3. Câmpuri esențiale per entitate
„ID" = identificator unic; toate ID-urile sunt text (uzual ≤36 caractere). Câmpurile marcate sunt cele fără de care facturarea nu funcționează. Restul câmpurilor — în CSV.
Firme (IPS_CONTACTS): id, name.
Mărfuri (IPS_RISGOODS): id, name, dangerous (periculos → coeficient).
Nave (IPS_VESSELS): id, name, gross_tonn (capacitate), trn (tonaj registru net), lbd,
horsepower, vtp_id (tip navă).
Tipuri navă (IPS_RIS_VES_TYPES): id, name.
Puncte rută (IPS_ROUTE_POINTS): id, name.
Voiaje (IPS_VOYAGES): id, data avizării, data declarației, convoy_name, declaration,
ctt_id (firmă), origin, destination.
Membri convoi (IPS_VOYAGE_MEMBERS): id, vye_id (voiaj), vsl_id (navă),
rstart_id/rfin_id (plecare/sosire), distance, distance_cdmn (distanța pe canalul principal).
Marfă (IPS_CARGOES): id, vms_id (membru), risgds_id (marfă), quantity, unit.
Ecluzări (IPS_VOYAGE_LOCK): id, vye_id, fk_voyage_member (membru), chamber_nr,
chamber_name, lock_name, date. (vezi cap. 4 — denumiri și camere obligatorii)
Acostări (IPS_BERTHINGS): id, ves_id (navă), arrival_time, departure_time,
tip (1=port, 2=dană așteptare, 9=altele), rpt_id (dană).
4. Impact asupra facturării
Tariful unei tranzitări se alege în ROA după ID-urile din RORIS, nu după denumiri — în funcție de combinația grupă de tip navă + grupă/tip de marfă + rută + capacitate. Gruparea (tip navă → grupă, marfă → grupă) și tarifele se configurează în ROA; din RORIS se folosesc doar ID-urile de tip navă, marfă și punct de rută, plus atributele de calcul ale navei (capacitate, cuplat/necuplat, distanțe pe canale).
Următoarele modificări ale noului sistem afectează direct facturarea. Pentru fiecare, dacă nu se respectă regula, va fi nevoie de un adaptor la nivelul importului/calculului ROA, care trebuie prevăzut ca efort și buget.
| # | Risc / modificare | Efect asupra facturării | Cerință / adaptor necesar |
|---|---|---|---|
| 1 | ID-uri schimbate la migrare (voiaje, nave, mărfuri, puncte rută, firme) | Se rup legăturile cu tarifele/contractele și relistarea facturilor istorice | ID-uri păstrate identic, sau tabel de echivalență ID_vechi↔ID_nou pentru remapare |
| 2 | Denumiri ecluze modificate | Repartiția valorii pe ecluze devine 0; valoarea trece greșit pe „senal" | lock_name trebuie să conțină AGIGEA / CERNAVODA / OVIDIU / NAVODARI |
| 3 | Coduri cameră ecluză modificate | Aceeași problemă ca mai sus, pe cameră | chamber_name exact: SAS1 / SAS2 (canal principal), C1 / C2 (canal Năvodari) |
| 4 | Camera ecluzei necompletată | Ecluzarea nu se poate factura corect (caz deja problematic azi) | Completarea camerei obligatorie la fiecare ecluzare |
| 5 | ID-uri de bază RORIS schimbate (tip navă, marfă, punct de rută) | Grupările și tarifele configurate în ROA (pe baza acestor ID-uri) nu se mai potrivesc → tranzitul nu se facturează | ID-uri RORIS stabile, ca să rămână valide configurările din ROA (gruparea tip→grupă/marfă→grupă se întreține în ROA) |
| 6 | Structură/denumiri coloane diferite în vederi | Importul actual din vederi nu mai rulează | Păstrarea acelorași vederi și denumiri de coloane (cap. 1) |
| 7 | Date fără oră (avizare/declarație, sosire/plecare) | Perioada de facturare și durata la cheiaj sunt greșite | Livrare ca dată + oră completă |
| 8 | Unități de măsură marfă/navă inconsistente | Cantitățile facturate se denaturează | UM stabile și consecvente în timp |
Notă privind responsabilitatea: ERP-ul ROA și programul de facturare sunt dezvoltate și întreținute de ROMFAST SRL. Adaptările de pe partea de import/calcul ROA pot fi realizate de ROMFAST, dar numai dacă noul sistem respectă regulile de mai sus. Orice abatere (în special ID-uri instabile, denumiri de ecluze/camere schimbate, sau lipsa vederilor) transferă efort suplimentar și risc asupra facturării și trebuie evitată sau, după caz, prevăzută explicit în buget.
Anexă tehnică: dictionar_date_facturare.csv — lista completă a câmpurilor pe fiecare entitate.