Files
comun/docs/tipuri_documente_facturare.md
Marius Mutu 8e022d332e #13: formular de facturare unificat - etapa curenta
Squash al branch-ului de lucru plan13-s2.

Clase: ofacturare (nucleul formularului unificat), ofacturare_comun,
ferestre_cere_date, ocomenzi, caut_ora (lista de preturi in combo-urile de
cautare), omodificari.

Programe: ofacturare impartit - ofacturare_antet, ofacturare_rutare_scriere si
ogrid_latimi sunt fisiere noi; oproceduri_facturare primeste discountul pe linie
si cota standard de TVA cand articolul nu are cota pe politica.

Documentatie: capcana SQLExec no_data_found, conventia de encoding, depanarea
testelor VFP si regulile de lucru - conflictele cu modificarile venite din alte
proiecte sunt rezolvate pastrand ambele parti.

Loguri de rulare a testelor scoase din versionare; testele raman.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PkyjGyrV2S7932om4kfSiK
2026-09-09 21:38:25 +03:00

8.4 KiB

Tipurile de document din facturare (VANZARI.TIP) si seturile de contare (ID_SET)

Referinta pentru toata suita ROA: PACK_FACTURARE e in COMUN, iar VANZARI.TIP e citit de view-urile FACT_VFACTURI / FACT_VFACTURI2, de gridul principal de listare si de retiparire.

Surse (nu presupuneri):

  • perechile (lnIdSet, tnTip) — comentariul din antetul PACK_FACTURARE (:80-125 in exportul all_source), singurul loc care le documenteaza impreuna;
  • eticheta afisata — CASE a.tip din coloana EXPLICATIE a celor doua view-uri, citit din sursa live de pe MARIUSM_AUTO (06.08.2026);
  • restul — cod, marcat ca atare.

ID_SET e setul de formule contabile (XSETS.ID_SET, ajunge in ACT.ID_SET), pus in variabila de pachet pack_facturare.nid_set din initializeaza_date_factura (:1864). Regula generala: setul "cu scadere din gestiune" e cel de baza + 10.

Facturi

ID_SET cu scadere TIP Document EXPLICATIE afisat
25000 25010 1 pe baza de lista de preturi POLITICA PRETURI
25001 25011 2 pe baza de contracte CONTRACT
25002 25012 3 pe baza de comenzi COMANDA
25003 25013 4 pe baza de avize FACT. DIN AVIZ
25004 25014 5 lista de preturi in valuta POLITICA PRETURI - INVOICE
25005 25015 6 contract in valuta CONTRACT - VALUTA
25006 — 7 credit note CREDIT NOTE
25007 25017 8 retur factura in lei RETUR FACTURA IN LEI
25008 25018 9 retur factura in valuta RETUR INVOICE
25009 25019 10 factura fiscala in valuta POLITICA PRETURI - FACTURA VALUTA
25042 25052 43 bon fiscal (ROARETAIL, colectate de la magazine) BONURI FISCALE MAGAZINE
25043 — 44 factura hotel HOTEL
25044 25054 45 factura restaurant RESTAURANT
25045 25055 46 nota de plata restaurant nicio ramura
25047 25057 48 factura marfa custodie cu descarcare K FACT. CUSTODIE CU DESCARCARE PE BAZA DE K
25048 25058 49 factura marfa custodie fara descarcare K FACT. CUSTODIE FARA DESCARCARE PE BAZA DE K
25051 25061 52 pe baza de contract, factura fiscala in valuta CONTRACT - FACTURA VALUTA
50100 25060 51 factura ROAACNPRO COMERCIAL-FACTURARE

Avize de expeditie

ID_SET cu scadere TIP Document EXPLICATIE afisat
25020 25030 21 catre clienti, din comanda AVIZ PE BAZA DE COMANDA
25021 25031 22 catre clienti, din lista de preturi AVIZ DIN POLITICA DE PRETURI
25022 25032 23 transfer catre subunitati, din lista TRANSFER
25023 25033 24 aviz de retur AVIZ DE RETUR
25024 25034 25 transfer catre subunitati, din comanda TRANSFER PE BAZA DE COMANDA
25025 25035 26 catre clienti, din contract AVIZ PE BAZA DE CONTRACT
25026 25036 27 transfer catre subunitati, pe baza de lucrare TRANSFER PE BAZA DE LUCRARE
25027 25037 28 catre clienti debitori, din comanda CLIENTI DEBITORI - COMANDA
25028 25038 29 catre clienti debitori, din lista CLIENTI DEBITORI - POLITICA PRETURI
25029 25039 30 transfer catre subunitati, pe baza de NIR AVIZ PE BAZA DE NIR
25040 25050 41 retur transfer catre subunitati, lista de pret RETUR TRANSFER
25041 25051 42 catre clienti custodie, din comanda CLIENTI IN CUSTODIE - COMANDA
25046 25056 47 catre clienti custodie, din comanda, pentru descarcare cu K CLIENTI IN CUSTODIE - COMANDA (K)
25049 25059 50 in lucru — retur de la clienti custodie nicio ramura

Tipuri negative

Nu apar in comentariul din pachet; luate din CASE-ul EXPLICATIE. Vin din alte produse sau din fluxuri valorice.

TIP EXPLICATIE afisat Observatii
-1 MATERII PRIME SI MATERIALE
-2 PRODUSE
-3 MARFURI LA PRET DE ACHIZITIE
-4 MARFURI LA PRET DE VANZARE
-6 RETUR TRANSFER DIN GESTIUNE VALORICA ROAGEST; ID_SET 236/240/241/242
-7 AVIZ DE RETUR - VALORIC
-8 FACTURA DE RETUR - VALORICA
-9 PROTOCOL CU TVA - AVIZ EXPEDITIE
-10 SPONSORIZARE - AVIZ EXPEDITIE
-11 MARFURI LA PRET DE ACHIZITIE *
-12 DEVIZE AUTO ROAAUTO, factureaza_deviz din oproceduri_devize.prg
-13 RETUR MARFA IN CUSTODIE

Seturile de tipuri folosite in cod (unde conteaza incadrarea)

Set Unde Ce face
{3, 21, 28, 42, 47} initializeaza_date_factura (:1888-1894) populeaza pack_facturare.nid_comanda din clistaid
+ {27} scrie_avize_lucrare:5859 suprascrie nid_comanda prin cursor pe COMENZI legat de ID_LUCRARE
{3, 21, 27, 28, 42, 46} ALTELE in ambele view-uri afiseaza comanda (nr_comanda/data)
{4, 24, 8, 9} ALTELE in ambele view-uri afiseaza avizul
{23, 25, 27, 30, 41, -6} CLIENT in ambele view-uri afiseaza gestiunea, nu partenerul
{23, 25, 27, 30, 41} si -6 scrie_in_vanzari (disc :13530-13540) lnIdGestiune explicit, nu min() din detalii

Capcane confirmate

  1. 46 vs 47 in ALTELE. Lista din view contine 46 (nota de plata restaurant, document care n-are comanda) si nu contine 47 (aviz custodie din comanda, care are). Pachetul populeaza nid_comanda pentru 47, nu pentru 46. CASE-ul EXPLICATIE din acelasi view are ramura pentru 47 si nu are pentru 46 — deci cele doua CASE-uri din acelasi view se contrazic pe aceste doua cifre. Decizia lui Marius (06.08.2026): se adauga 47, 46 ramane asa cum a fost scris.
  2. Efect vizibil pe 46, azi: ramura fiind luata fara ca documentul sa aiba comanda, f.nr_comanda || '/' || to_char(f.data_comanda, ...) da un / singur in coloana "Altele", nu gol. Nu s-a observat pe date pentru ca niciun client verificat nu foloseste modulul de restaurant (0 documente tip=46 si pe MARIUSM_AUTO, si pe VENDING).
  3. ID_SET 25051 apare de doua ori in comentariul din pachet: ca set "cu scadere" pentru tip=42 si ca set de baza pentru tip=52. Coliziune in documentatie, neverificata pe XSETS — de lamurit inainte de a te baza pe ea.
  4. tip=51: comentariul spune "factura ROAACNPRO", eticheta afisata e COMERCIAL-FACTURARE. Acelasi lucru, doua denumiri; eticheta din view e cea confirmata de constantele VFP curente (ofacturare_comun.vc2:3654,3657).
  5. tip=50 e marcat "in lucru" in comentariu si n-are ramura de eticheta — de tratat ca neterminat, nu ca tip valid.
  6. Comentariul nu e cod. E singura documentare a perechilor (ID_SET, TIP), dar poate fi ramas in urma. Inainte de a te baza pe o linie din el pentru o modificare, confirm-o pe cod (initializeaza_date_factura, CASE-urile din view-uri) sau pe XSETS.

Domeniul regenerabil (planul #13)

Planul #13 introduce editarea articolelor unui document deja emis prin stergere + reemitere (acelasi numar de document, rand nou in VANZARI). Domeniul acestui mecanism nu acopera tot VANZARI.TIP:

  • In afara domeniului, prin decizie explicita a lui Marius (confirmat de inventarul de FK din S11): documentele legate de REST_NOTE_PLATA (modul restaurant, TIP 46) si de IPS_VOYAGES_VANZARI (facturarea voiajelor din ROAACNPRO, TIP 51). Pentru ele ramane calea veche de editare pe loc (#6); intrarea in formularul nou le refuza explicit, nu doar le ignora.
  • Declarate explicit neacoperite (recomandare "nu acum"): tipurile 48/49 (custodie) - incarcarea unui document existent in formularul nou nu e implementata pentru ele. Tinta unica pentru editare ramane frm_facturare_articole2 (formularul nou) - frm_facturare_articole (formularul vechi) nu mai primeste cod nou.
  • Datorie deschisa, nu excludere: documentele CONTRACT cu linii de rata (VANZARI_DETALII.ID_RATA <> 0) esueaza la reemitere cu eroarea Oracle Too many columns. - 19 din cele 21 de documente CONTRACT vii sunt in acest perimetru. Cauza-radacina nu e dovedita; nu exista azi o reparatie.

Restul tipurilor din tabelele de mai sus sunt in domeniul regenerabil, verificat pe cele patru familii de scriere (AVIZ, COMANDA, CONTRACT, ELSE).

Legaturi

  • scripturi-migrare-db.md — sursa de referinta pentru DDL e MARIUSM_AUTO, nu o schema de client.
  • conventie_null_vfp.md — TIP_INCASARE si celelalte coloane 0 vs NULL din view-uri.