- docs/propuneri_achizitie_import.md: modificarile propuse (cu cod) pentru sesizarea achizitie import (explicatie TVA prin cautare, valute/cursuri per document, conturi 2xx la articole, negestionabile fara RULAJE) - docs/flux-achizitie-import.md: notita durabila cu lantul fluxului - docs/CLAUDE.md: modul de lucru (propuneri pentru VFP IDE, export Oracle) - .gitignore: docs/local/ (credentiale neversionate) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
3.8 KiB
3.8 KiB
Flux: Achiziție din import (NIR import)
Lanțul complet (descoperit la sesizarea „achiziție import", 07.2026):
- Intrare:
Clase\gestiuni.vcx(gestiuni.vc2:2045-2171) → meniu „Achizitie din import / Achizitie interna" →DO achizitie_import WITH <id_set>, llIntern IN ointroduceri.prg. Id-uri de set: 208/209 = import, 220/221 = intern (perechi pe tip de operație). achizitie_import(COMUN\programe\ointroduceri.prg:1435-1617):- antetul facturii =
poAct(SCATTER dinactactan, structura dinpmenu.prg:281-307, tabelulACT) — o singură perecheid_valuta+curspe act; - liniile de notă = cursorul
introdc(din viewvnote_contabilefiltrat peid_set), fiecare rând moșteneșteid_valuta/curs/dataact/tva_incasaredinpoAct; rândurile merg în perechi impar = linia de bază, par = linia de TVA; - cursorul
jtva_coloane2(explicații TVA, cu rând 0 gol) — sursa dropdown-ului de explicație; - deschide forma
import_nota(COMUN\clase\ointroduceri.vcx). Atenție:import_nota_originaldin același .vcx NU e instanțiat nicăieri — e copie de rezervă.
- antetul facturii =
- Modelul de documente: un NIR de import = factura principală de achiziție (marfă și/sau
imobilizări; valuta/cursul ei =
poAct.id_valuta/poAct.Curs, referința de conversie) + opțional factura de transport (poate fi altă valută/curs) + opțional factura de taxe vamale + DVI (declarația vamală, cu TVA-urile fiecărei facturi, plătite în lei). Toate devin linii înintrodc, apartenența la document fiind per rând:nract/serie_act/id_fact(rândurile au șiid_valuta/cursproprii, dar istoric codul folosește doarpoAct.Curs). import_nota(nota contabilă a facturii): grila peintrodc; transport/alte taxe se introduc ca linii de notă suplimentare cu flagurilein_valuta(suma e în valută) șiparticipa_valuta(linia intră în valoarea de intrare a mărfii).do_executacalculează procentele de repartizare (stocate înexplicatia4/explicatia5);inainte_de_do_terminsumează bazele (lei/valută, liniile în lei se împart lapoAct.Curs) și lanseazăimport_nircuprocent_lei/procent_val/ncurs.import_nir(grila de articole):do_adauga→viz_catalog_articole()(oproceduri_articole.prg:62, câmpulin_stoc= „Gestionabil") filtrat pe conturilescddin notă; prețul de intrare per articol = preț valută ×procent_val, apoi ×ncurs×procent_lei(transportul „umflă" procentele peste 100). Diferența reziduală devine linia „DIFERENTE".do_modiparam= preluare articole din XLS (creează articole noi prinpack_preturi.adauga_articol, cont implicit 371).- Salvare:
oscrie_in_fisiere→ tabelele temporareACT_TEMP/RUL_TEMP→ pachetul OraclePACK_CONTAFIN(SCRIE_IN_ACT,SCRIE_IN_RUL,SCRIE_IN_STOC, …).SCRIE_IN_RULinserează înRULexact conținutulRUL_TEMP(nu derivă din ACT) — orice filtrare de rulaje se face în clientul VFP. Sursa pachetului:COMUN\docs\PACK_CONTAFIN.pck(veziCOMUN\docs\oracle_export.md). - Explicație TVA: dropdown istoric
Grid1.cExplicatieTva.Combo1(RowSourcejtva_coloane2); modelul alternativ cu formular de căutare =frm_modific2024.do_modifica_explicatie_tva(omodificari.vcx) →caut_explicatie_tva()(ocautare.prg:1934, viewvjtva_coloane, întoarce DOARid_jtva_coloana, denumire, cota_tva). Capcane: înintrodc.ptvase ține cota brută (21), pe când în registru jurnalproc_tva= (cota+100)/100; comutarea 4427/401 pe linia de TVA se face prin SEEK în cursorulcJtvaCol4427.
Căutarea generică: cauta_alfa() (COMUN\programe\cauta_alfa.prg) → forma cauta_alfa_form_plus.