Borderoul tine per factura ce mai are de completat si daca are articole de gestiune
(camp gest, coloana si filtru), coada contabilizeaza in serie facturile bifate si
incheie cu un rezumat, iar contul de furnizor/client se alege din planul de conturi.
Cheia normalizata de articol, rezolvarea automata a partenerului si anularea in bloc
intra tot aici. Pozitia in lista se pastreaza peste reaplicarea filtrului.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Aroafxp4z8bmM5oVECZRXY
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
- validare.prg: cele 7 campuri de perioada (inregistrare TVA, TVA la incasare,
inactivare/reactivare) duse din raspunsul ANAF pana in cVerificareCod
- validare.prg: AnafDecodeResponseText - raspunsul HTTP se citeste din responseBody
prin ADODB.Stream cu Charset utf-8, cu cadere inapoi pe comportamentul vechi;
repara diacriticele pierdute la marshalling-ul COM al lui responseText
- oproceduri_comune.prg: perioadele in mesajul de detalii; fix id_part N(16), data D
in crsXMLParteneriVerificare (Insert Into esua tacit, lista ramanea goala)
- overificari.vc2: 7 coloane noi in grid, dublu-click pe Denumire/Cod fiscal deschide
fisa partenerului, captionuri corectate in "inregistrare TVA"
- oparteneri / ofacturare_comun / onomenclatoare: id_part in SELECT-urile care
alimenteaza verificarea
- teste headless noi: utile/Teste/test_todo21_perioade_anaf.prg, utile/Teste/todo21/
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GztNyTRxjHqBg5kyNMmcy1
Continut adus prin svn update din alta copie de lucru, identic cu 04a7d05 de
pe origin/main. Doua gauri prin care o baza blocata putea sa nu alerteze:
tablespace fara autoextend (maxbytes = 0 il scotea din verificare, acum
plafonul e GREATEST(maxbytes, bytes)) si disc plin sub datafile
autoextensibil (sectiunea DISC are prag propriu si ruleaza mereu, prima).
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013gYCNE26G1G7UoGu2ju7aS
Pagina Articole din frm_modific2024:
- DblClick pe cele cinci coloane cu nomenclator (articol, gestiune, taxcode,
valuta, explicatie TVA). Explicatia TVA are ControlSource expresie, deci
tastarea nu putea declansa niciodata InteractiveChange; DblClick se sprijina
pe pccontrol si acopera uniform toate cele cinci.
- Pret si Pret cu TVA folosesc gnPPretV (precizie pret vanzare) in loc de
gnPPret (precizie achizitie). Coloana de pret achizitie ramane pe gnPPret.
- Culori dupa conventia de pe pagina Rulaje: verde pe coloanele care se
editeaza prin dialog, alb pe cele care se tasteaza direct.
- Serie, lot si explicatie devin editabile in celula. Garda .When ramane si
blocheaza in continuare liniile din seturi si facturile din e-Factura.
frm_facturi: textul optiunii de editare factura din meniul contextual devine
"Editare factura (note, rulaje, articole)".
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013gYCNE26G1G7UoGu2ju7aS
Paisprezece rapoarte care nu erau ale ROAFACTURARE traiau in docs\cercetare\ al
acelui proiect: valuta si curs in ofacturare, TVA calculat vs salvat plus
denormalizarea VANZARI, inventarul consumatorilor VANZARI din toata suita ROA,
integrarile de contracte/politici/nomenclator (#10, #11, #12), watchdog-ul VFP
de testare, proiectarea Oracle a scrierii din S5 si view-ul VVANZARI_ARTICOLE.
Motivul mutarii, nu doar al pastrarii: planurile #10, #11 si #12 sunt amanate,
iar indexul lor spune explicit ca se reiau din aceste rapoarte - deci sunt punct
de plecare, nu istoric. Iar tinta lor e COMUN plus ROAPRETURI/ROACONTRACTE.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SN8snvkk94KuhWwoXUUey3
flux-modificare-stergere-nota-jurnal.md descria doar nota contabila. Documentul
capata ramura de facturi: cele doua puncte de intrare cu garzile lor, pasul nou
din tranzactia manuala, contractul ScrieArticoleFacturaEditate, recalculul din
Oracle si comportamentul gridului de articole.
Doua lucruri contraintuitive, scrise explicit: ID_FACT nu se schimba la reeditare
(COD se realiniaza), deci tot ce se leaga prin id_fact supravietuieste; si garda
de referinte lipseste intentionat pe editarea generica de note din Registrul
Jurnal - protejeaza incasarile la operatia care sterge efectiv factura.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SN8snvkk94KuhWwoXUUey3
La salvarea unei facturi deja emise, modificarile facute liniilor de articole
se scriu acum real in VANZARI_DETALII, in aceeasi tranzactie cu restul salvarii,
si totalurile documentului se recalculeaza din liniile efectiv salvate.
- ofacturare_editare.prg: helper nou ScrieArticoleFacturaEditate. Idiomul e
"marcheaza tot sters, invie ce ramane", nu delta, pentru ca
actualizeaza_vanzari face UPDATE ... SET STERS = 0 pe tot documentul, fara
garda; o scriere delta ar lasa liniile sterse sa reinvie la fiecare salvare.
Cursor gol = no-op, ca o eroare la incarcare sa nu goleasca factura.
- comun.vc2, ofacturare_comun.vc2: agatarea apelului dupa
finalizeaza_modificare_nota si inainte de inchiderea tranzactiei, in ambele
puncte de intrare.
- omodificari.vc2: coloana Pret achizitie in grid, editabila doar pe liniile
noi; liniile de set devin needitabile, cu marcaj; cinci validari la salvare.
- teste: cinci suite noi (validari, grid UI, scriere reala, discount/valuta,
rollback, al doilea punct de intrare) si asteptari actualizate in
test_page3_articole.
- docs: oracle_export.md - exportul all_source cere linesize 32767, altfel
rupe liniile lungi prin mijlocul identificatorilor; scripturi-migrare-db.md -
UpdateVersiune adauga singur extensia .sql.
Cere scripturile ff_2026_08_09_01 (PACK_FACTURARE) si ff_2026_08_09_02
(VVANZARI_ARTICOLE).
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SN8snvkk94KuhWwoXUUey3
frm_modific2024, pgfArticole.PAGE3 - editare in memorie, fara scriere in Oracle
(aceea ramane S5).
- sub-blocul A: cantitate/pret/pret_cu_tva editabile inline, marcaj lmodificat
pe linie, coloana valoare pe linie
- sub-blocul B: stergere logica de linii (sters/DynamicForeColor gri) si adaugare
de linii prin frm_articol_factura, cu alegerea articolului prin caut_articol()
- sub-blocul C: bara de totaluri sub grid (total linii convertit RON la cursul
documentului, discount de antet editabil, total net), ascunsa pe
transfer/custodie; verdict de corelatie ACT/RUL informativ, cu 3 stari
- suma ACT: sold net debit-credit, cont pe tip de document (4111 / 418 / 461,
iar pe rate/contract 4111, 411 sau 461)
- suma RUL: doar ID_TIP_RULAJ = 0, adica miscarile reale; perechile
ID_TIP_RULAJ = 3 sunt virtuale (tin locul procesului verbal de schimbare de
pret) si nu intra in suma. Corectie cu liniile nestocate, marcata "ajustat"
- adaugarea de linii pe document in valuta: dialogul primeste tip_valuta si
cursul documentului de pe tvanz, deci pretul se introduce direct in valuta;
ofacturare.vc2 ramane neatins
- cei 5 apelanti frm_modific2024 (afisjurcom, anaf_efactura, cele doua .sc2 de
import) pregatesc cursorul de articole inainte de Createobject, gardat pe
SET PROCEDURE - registrul jurnal din ROACONT/ROAGEST ramane neschimbat
Teste headless pe MARIUSM_AUTO, suite care isi descopera singure documentele:
test_page3_articole 14/2 (cele 2 = artefact de grid nematerializat headless,
acoperit pe ecran), test_incarca_vanzare_din_nota 5/0,
test_adauga_linie_articol 20/0, test_adauga_linie_valuta 16/0,
test_ui_sterge_linie 8/0, test_verdict_act_rul 26/0.
docs/todos.txt: punctele 13 si 20, scrise de Marius.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SN8snvkk94KuhWwoXUUey3
ofacturare_editare.prg (nou): helpere comune - garda eFactura, cursoarele
notei si ale rulajelor, randul de vanzare corespunzator notei si liniile de
articole citite din view-ul VVANZARI_ARTICOLE.
omodificari.vc2 (frm_modific2024): pagina noua de articole ale facturii,
deocamdata doar afisare. Apare numai cand ofacturare_editare.prg e
inregistrat si documentul are rand in VANZARI; in ROACONT si ROAGEST, unde
fisierul nu e incarcat, pagina lipseste si registrul jurnal ramane neatins.
Randul de vanzare al notei se cauta pe toate tripletele distincte (nract,
serie_act, dataact) din nota, pentru ca primul rand poate fi o incasare.
ofacturare_comun.vc2 (frm_facturi): do_editare_factura si butonul aferent,
dupa modelul lui do_sterge, cu garzile de luna inchisa, luna curenta,
document sters, referinte si eFactura.
docs: comentariile se scriu strict necesar, si in cod si in scripturile de
migrare - fara referinte la planuri, stories, decizii sau erori, istoricul
doar in antetul fisierului. Plus regula zero (predarea contextului),
capcanele de la testarea headless si completari pe fluxul text -> binar.
utile/Teste: suita de regresie pentru editarea facturii si harness-ul
watchdog (nu sunt in SVN, unde utile/Teste e ignorat). .gitignore ignora si
capturile PNG si watchdog_out/, ramase din rulari.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SN8snvkk94KuhWwoXUUey3
Marcate DONE: 2, 3, 4, 5, 8, 9. Punctul 13 precizeaza formularul unificat
frm_facturare_articole2. Noi: 16 (focus si renumerotare act la revenirea din formularul
de curs valutar) si 17 (eroare ORA neprietenoasa cand id_venchelt e null la finalizarea
facturii).
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SN8snvkk94KuhWwoXUUey3
ofacturare.vc2:
- frm_articol_factura: bifa "Pret cu TVA inclus" (preturi_cu_tva) editabila in dialogul
per-articol; activa doar pe tipurile unde pretul e editabil.
- frm_facturare_articole: buton de modificare deasupra listei + dublu-clic pe linie, ambele
redeschid dialogul pe linia curenta (do_modifica); Renunta lasa randul neschimbat.
- Plafonul de cantitate la modificare se recalculeaza din stocul disponibil (reversul
decrementarii din do_adauga_articol), nu ramane la cantitatea aflata deja pe linie.
- Articolele gestionabile: modificarea redeschide tabelul cu gestiuni, pozitionat pe gestiunea
liniei; do_alege_stoc primeste tnIdTempExclus, ca linia sa nu se scada pe ea insasi din stoc.
Multi-selectia actualizeaza linia si adauga restul ca linii noi.
- frm_articol_gest_factura: bifa era desenata sub grd_gestiuni; forma inaltata si bifa mutata sub grid.
ofacturare_comun.vc2: scos un SET STEP ON ramas in cod.
docs/testare-ui-vfp.md: sectiune noua despre conducerea dialogurilor modale Show(1) din teste
(Timer pe _SCREEN, detectie prin _SCREEN.Forms, inchidere prin do_termin/do_renunt) si capcanele
platite pe parcurs.
Testat headless: Nivel 1 dialog 14 asertii, Nivel 2 factura in compunere 7, Nivel 2 retur 4,
Nivel 3 ramura gestionabila 13 - toate PASS, zero FAIL.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SN8snvkk94KuhWwoXUUey3
Niciun ';' la capat de linie intr-un comentariu '--' din interiorul unei instructiuni
(SQL*Plus termina instructiunea acolo, chiar daca ';'-ul e in comentariu). Fiecare
script se incheie cu exec pack_migrare.UpdateVersiune('<nume_script>'); urmat de
commit; (UpdateVersiune e DML, fara commit explicit VERSIUNE minte despre ce s-a aplicat).
- borderou si import eFactura: bifele de cautare arata numarul de documente in eticheta, inca
de la deschiderea ferestrei. Numararea se face local din cursorul deja adus cand nicio bifa
nu e bifata (cursorul e chiar setul de baza) si prin interogare doar cand o bifa e bifata,
ca sa nu apara interogari inutile. Latimile bifelor au fost marite: erau croite exact pe
textul original, iar " (N)" era taiat de marginea controlului.
- verificare cod fiscal: starea partenerului include "TVA la incasare", cu perioada in detalii;
sursa e ANAF live sau cache-ul ISTORIC_CODURI_FISCALE (ocautare.prg, validare.prg).
- modificare nota: lista de explicatii TVA se filtreaza dupa cota TVA a liniei curente
(omodificari.vc2, caut_explicatie_tva din oproceduri_comune.prg).
- istoric coduri fiscale: coloane nefolosite ascunse, adaugate cele venite de la ANAF
(TVA la incasare, split TVA, inactiv si perioadele aferente) - overificari.vc2.
- docs/scripturi-migrare-db.md: regulile de rulare manuala pe schema tinta si un pachet per script.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01D8Ham1HJ8BB2v9nbtWgdZq
Jobul DIAGSPATIU_ZILNIC (SVN r17969) si mecanismele generale desprinse din investigatie:
cheile SERVER_INFO si GetSchemaParola, rularea ca SYS/OS prin UpdateSQLPLUS/ExecuteScriptOS,
de ce EmailLog nu se reutilizeaza, ordinea de aplicare a scripturilor sys_.
Capcane noi: parola SYS nu e generica la toti clientii, iar rolurile nu se aplica in pachete cu
drepturi de definitor - de aici granturile directe din sys_2026_08_03_05.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014sNn6dmAimtyXkDU4frJrh
Fisierul era per proiect; acum e in COMUN, partajat de toate aplicatiile ROA.
Ramane neversionat in git (docs/local/ adaugat in .gitignore-ul COMUN), exista
doar in SVN. Parola SYS e generica, nu difera de la server la server.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014sNn6dmAimtyXkDU4frJrh