sync SVN r18194

This commit is contained in:
2026-09-22 14:04:45 +03:00
parent 54749e7331
commit 4e1c962dad
3 changed files with 65 additions and 33 deletions

View File

@@ -12067,18 +12067,31 @@ DEFINE CLASS frm_import_efactura AS _frmbase OF "_frm_base.vcx"
ENDPROC
PROCEDURE actualizeazacontoare
LOCAL loCoada, loContor
Thisform.LockScreen = .T.
LOCAL loCoada, loContor, lcFiltruVechi, lnRecnoVechi
SELECT crsFacturi
*!* filtrul se scoate doar cat se numara si se pune inapoi ca atare: o bifa nu schimba apartenenta la filtru, deci nu e nevoie de reconstruirea lui
lcFiltruVechi = Filter()
lnRecnoVechi = Recno('crsFacturi')
SET FILTER TO
loCoada = Createobject('CoadaContabilizareEF')
loContor = loCoada.ContorBifate('crsFacturi')
Thisform.AplicaFiltruDeCompletat()
SELECT crsFacturi
If !Empty(m.lcFiltruVechi)
SET FILTER TO &lcFiltruVechi
Endif
Try
Go m.lnRecnoVechi
Catch
Go Top
Endtry
This.lblContorBifate.Caption = Alltrim(Str(loContor.nGata)) + ' din ' + Alltrim(Str(loContor.nTotal)) + ' gata de import - ' + Alltrim(Str(loContor.nBifate)) + ' bifate - ' + Alltrim(Transform(loContor.nSuma, '999,999,999.99')) + ' lei' + IIF(loContor.nIndividual > 0, ' - ' + Alltrim(Str(loContor.nIndividual)) + ' se importa doar individual', '')
This.chkDeCompletat.Caption = ALLTRIM(IIF(EMPTY(NVL(This.chkDeCompletat.Tag,'')), This.chkDeCompletat.Caption, This.chkDeCompletat.Tag)) + IIF((loContor.nTotal - loContor.nGata) > 0, ' (' + ALLTRIM(STR(loContor.nTotal - loContor.nGata)) + ')', '')
This.chkCuGestiune.Caption = ALLTRIM(IIF(EMPTY(NVL(This.chkCuGestiune.Tag,'')), This.chkCuGestiune.Caption, This.chkCuGestiune.Tag)) + IIF(loContor.nGestiune > 0, ' (' + ALLTRIM(STR(loContor.nGestiune)) + ')', '')
This.Cmd_executa1.Caption = Iif(loContor.nImport > 1, '\<Import ' + Alltrim(Str(loContor.nImport)) + ' bifate', '\<Import factura')
This.Cmd_BifeazaTot1.Caption = Iif(loContor.nBifate > 0, '\<Deselecteaza toate', '\<Selecteaza toate')
This.Cmd_Anulare1.Caption = '\<Anuleaza ' + Alltrim(Str(loContor.nAnulare)) + ' documente'
Thisform.LockScreen = .F.
ENDPROC
PROCEDURE actualizeazalipsurilista
@@ -12829,7 +12842,7 @@ DEFINE CLASS frm_import_efactura AS _frmbase OF "_frm_base.vcx"
ENDPROC
PROCEDURE do_bifeazatot
* bifeaza toate facturile eligibile vizibile; daca exista deja bifate, le debifeaza pe toate
* bifeaza toate facturile eligibile vizibile si cele deja importate; daca exista deja bifate, le debifeaza pe toate
LOCAL lcSelect, lnRecno, llDebifeaza
lcSelect = SELECT()
SELECT crsFacturi
@@ -12840,7 +12853,7 @@ DEFINE CLASS frm_import_efactura AS _frmbase OF "_frm_base.vcx"
IF m.llDebifeaza
REPLACE ales WITH 0
ELSE
IF NVL(eligibil_lot, 1) = 1
IF NVL(eligibil_lot, 1) = 1 OR NVL(id_fact, 0) <> 0
REPLACE ales WITH 1
ENDIF
ENDIF
@@ -15300,6 +15313,7 @@ DEFINE CLASS frm_import_efactura AS _frmbase OF "_frm_base.vcx"
LPARAMETERS nColIndex
If Inlist(This.RowColChange, 1, 3)
Thisform.LockScreen = .T.
Local lnIdVechi, lnRecnoNou
lnIdVechi = 0
If Used('crsDetaliiFacturi')
@@ -15324,12 +15338,18 @@ DEFINE CLASS frm_import_efactura AS _frmbase OF "_frm_base.vcx"
Thisform.CompleteazaFactura() && cap factura
Thisform.actualizeaza_grid2()
Thisform.CompleteazaDetaliiFactura() && detalii factura
Thisform.LockScreen = .F.
Endif
ENDPROC
PROCEDURE grdFacturi.cAles._checkbox1.InteractiveChange
IF Used('crsFacturi') And !Eof('crsFacturi')
*!* bifa e permisa doar pe randuri eligibile sau deja importate (anulare in lot)
IF This.Value = 1 And Nvl(crsFacturi.eligibil_lot,1) = 0 And Nvl(crsFacturi.id_fact,0) = 0
This.Value = 0
RETURN
ENDIF
REPLACE ales WITH IIF(This.Value=1,1,0) IN crsFacturi
ENDIF
Thisform.ActualizeazaContoare()
@@ -15340,35 +15360,6 @@ DEFINE CLASS frm_import_efactura AS _frmbase OF "_frm_base.vcx"
This.ToolTipText = IIF(EMPTY(NVL(crsFacturi.motiv_lot,'')), '', ALLTRIM(crsFacturi.motiv_lot))
ENDPROC
PROCEDURE grdFacturi.cAles._checkbox1.When
RETURN (NVL(crsFacturi.eligibil_lot,1) # 0)
ENDPROC
PROCEDURE grdFacturi.MouseMove
Lparameters nButton, nShift, nXCoord, nYCoord
Local lnWhere, lnRelRow, lnRelCol, lnRecnoSalvat, lnDelta, lcTip
This.GridHitTest(m.nXCoord, m.nYCoord, @lnWhere, @lnRelRow, @lnRelCol)
lcTip = ''
If m.lnWhere = 3 And Used('crsFacturi')
lnRecnoSalvat = Recno('crsFacturi')
lnDelta = m.lnRelRow - This.ActiveRow
Try
Select crsFacturi
Skip m.lnDelta
If !Bof() And !Eof()
lcTip = Alltrim(Nvl(motiv_lot,''))
Endif
Catch
Endtry
Try
Go m.lnRecnoSalvat In crsFacturi
Catch
Endtry
Endif
This.ToolTipText = m.lcTip
ENDPROC
PROCEDURE Lb_titlu_alb_b121.RightClick
This.Parent.chkTest.Visible = .T.
ENDPROC

View File

@@ -46,6 +46,7 @@ atingi zona X, citeste fisierul Y"). Restul se deschid doar la declansator.
| `sold-neexigibil-reportat-jc2007-jv2007.md` | interogari pe sold TVA neexigibil |
| `view-uri-efactura.md` | view-urile `ANAF_VEFACTURA_*` si potrivirea eFacturilor cu registrul de TVA |
| `machete-note-xrequest-explicatii.md` | schimbi ce campuri cere o operatie la introducere (`XREQUEST`/`XITEMS`/`XNOTE`); explicatie, explicatia4, explicatia5 |
| `incasari-plati-valuta-diferita.md` | incasare/plata in alta valuta decat a facturii (seturile 10600-10603); ce se pune la valute si cursuri |
| `email-thunderbird.md` | citirea mailurilor de pe conturile romfast |
`onboarding\` — proceduri rulate o singura data per proiect (inrolare in fluxul git-text,

View File

@@ -0,0 +1,40 @@
# Incasare/plata intr-o valuta diferita de cea a facturii
Cazul: factura emisa in EUR, clientul vireaza GBP. Meniu: Trezorerie > "3. Banca in valuta" >
Incasari > "Incasari clienti valuta diferita 411" (`Meniuri\banca3.mn2:53`) -> `lans(10600)`.
Seturile 10600-10603 acopera banca valuta/lei x incasare/plata (`COMUN\programe\pmenu.prg:11-15`).
Macheta nu e o forma fixa: e generata din Oracle (`XREQUEST`/`XITEMS`) prin `actbaza2007`
(`COMUN\clase\baza.vc2:3352`) - vezi `machete-note-xrequest-explicatii.md`.
## Ce se completeaza (leul e pivot: ambele cursuri sunt fata de RON)
| Camp `poAct` | Ce e | In exemplu |
|---|---|---|
| `id_valuta` / `nume_val` | valuta **facturii** | EUR |
| `id_valuta2` / `nume_val2` | valuta in care se **incaseaza efectiv** | GBP |
| `suma_3` | cursul valutei facturii | curs EUR/RON al zilei |
| `suma_22` | suma incasata, in valuta de incasare | suma din extras, in GBP |
| `suma_32` | cursul valutei de incasare | curs GBP/RON al zilei |
| `suma_22a` | **calculat**: suma convertita in valuta facturii | echivalent EUR |
`suma_2` (itemul 11) e superseded: daca setul contine itemul 81 (`suma_22`), itemul 11 nu mai
apare si `poAct.suma_2` nu exista. Initializarile: `COMUN\programe\pmenu.prg:376-387`.
## Invariante
- Lista de facturi e filtrata `i.id_valuta IN (poAct.id_valuta, poAct.id_valuta2)`
(`COMUN\clase\baza.vc2:10552`), deci **primul camp trebuie sa fie valuta facturii**, altfel
factura nu apare.
- Soldul afisat in formularul de alegere e **mereu in valuta facturii** (coloanele `*VAL*` din
`vireg_parteneri`, `baza.vc2:10593`). Nu se converteste vizual in valuta incasata - nu se
compara cu suma din extras.
- Conversia trece prin lei: `suma_22 = (suma_2 * suma_3) / suma_32`
(`COMUN\clase\baza.vc2:10855-10862`, `Case '.SUMA_32'$M`). Ce nu acopera `suma_22a` din soldul
facturii ramane sold sau iese ca diferenta de curs - soldul nu se "ajusteaza", raportul
cursurilor decide.
## Nelamurit
Textul exact al etichetelor vazute de utilizator e in `XITEMS.LABEL_ITEM` (Oracle), nu in codul
VFP; semantica de mai sus e din cod. Daca macheta nu cere un curs pentru valuta facturii,
verifica itemii setului 10600 in `XREQUEST`.