Files
roagest/docs/flux-achizitie-import.md

4.6 KiB
Raw Blame History

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 din actactan, structura din pmenu.prg:281-307, tabelul ACT) — o singură pereche id_valuta + curs pe act;
    • liniile de notă = cursorul introdc (din view vnote_contabile filtrat pe id_set), fiecare rând moștenește id_valuta/curs/dataact/tva_incasare din poAct; 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_original din același .vcx NU e instanțiat nicăieri — e copie de rezervă.
  • 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 în introdc, apartenența la document fiind per rând: nract/serie_act/id_fact (rândurile au și id_valuta/ curs proprii, dar istoric codul folosește doar poAct.Curs).
  • import_nota (nota contabilă a facturii): grila pe introdc; transport/alte taxe se introduc ca linii de notă suplimentare cu flagurile in_valuta (suma e în valută) și participa_valuta (linia intră în valoarea de intrare a mărfii). do_executa calculează procentele de repartizare (stocate în explicatia4/explicatia5); inainte_de_do_termin sumează bazele (lei/valută, liniile în lei se împart la poAct.Curs) și lansează import_nir cu procent_lei/procent_val/ncurs.
  • import_nir (grila de articole): do_adaugaviz_catalog_articole() (oproceduri_articole.prg:62, câmpul in_stoc = „Gestionabil") filtrat pe conturile scd din 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 prin pack_preturi.adauga_articol, cont implicit 371).
  • Salvare: oscrie_in_fisiere → tabelele temporare ACT_TEMP/RUL_TEMP → pachetul Oracle PACK_CONTAFIN (SCRIE_IN_ACT, SCRIE_IN_RUL, SCRIE_IN_STOC, …). SCRIE_IN_RUL inserează în RUL exact conținutul RUL_TEMP (nu derivă din ACT) — orice filtrare de rulaje se face în clientul VFP. Sursa pachetului: COMUN\docs\PACK_CONTAFIN.pck (vezi COMUN\docs\oracle_export.md).
  • Articole negestionabile (nom_articole.in_stoc = 0): modelul canonic e în clasa nir (NIR-ul obișnuit, același ointroduceri.vcx), mecanism din 2009 — articolul intră normal în grilă și participă la calcule, iar în inainte_de_do_termin, chiar înainte de scriere, se face Delete From rul_temp Where in_stoc = 0 (valoarea rămâne doar pe nota contabilă, nu ajunge în RUL/STOC). Din v2.11.6 import_nir e aliniat la același model, cu un cursor temporar (crsNegest) care readaugă rândurile șterse în grilă dacă oscrie_in_fisiere eșuează. Cursorul rul_temp are coloana in_stoc pentru că e creat din view-ul vrul (where 1=2); la do_adauga coloana se umple prin GATHER NAME loArt din cursorul catalogului, la do_modiparam (XLS) explicit din selectul pe nom_articole.
  • Explicație TVA: dropdown istoric Grid1.cExplicatieTva.Combo1 (RowSource jtva_coloane2); modelul alternativ cu formular de căutare = frm_modific2024.do_modifica_explicatie_tva (omodificari.vcx) → caut_explicatie_tva() (ocautare.prg:1934, view vjtva_coloane, întoarce DOAR id_jtva_coloana, denumire, cota_tva). Capcane: în introdc.ptva se ține cota brută (21), pe când în registru jurnal proc_tva = (cota+100)/100; comutarea 4427/401 pe linia de TVA se face prin SEEK în cursorul cJtvaCol4427.

Căutarea generică: cauta_alfa() (COMUN\programe\cauta_alfa.prg) → forma cauta_alfa_form_plus.