#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
This commit is contained in:
@@ -4,6 +4,11 @@
|
||||
* (pack_contafin.finalizeaza_modificare_nota -> pack_facturare.actualizeaza_vanzari), deci orice
|
||||
* ancorare pe cod moare tacut; ID_VANZARE ramane, dar nici el nu e cunoscut dinainte.
|
||||
*
|
||||
* *!* 06.09.2026
|
||||
* *!* marius.mutu
|
||||
* *!* Cazurile care aleg documente cu articole reale exclud notele cu un rand activ pe un cont
|
||||
* *!* care cere simbol analitic si nu il are; altfel verificare_note_contabile respinge salvarea.
|
||||
*
|
||||
* DescoperaCazTest(<nume caz>, <alias destinatie>) -> .T. daca a gasit un document, lasand in alias
|
||||
* un singur rand cu cod, an, luna, id_vanzare, tip, nlin (plus nract/serie_act/dataact/nract_fara
|
||||
* pentru cazul de coliziune). Pe .F. aliasul ramane cu 0 randuri.
|
||||
@@ -26,7 +31,7 @@
|
||||
FUNCTION DescoperaCazTest
|
||||
LPARAMETERS tcCaz, tcAlias
|
||||
|
||||
LOCAL lcAlias, lcNlin, lcPrim, lcJoinP, lcTriplete, lcJoinT, lcOrb, lcNractFara, lcSql, lnSucces
|
||||
LOCAL lcAlias, lcNlin, lcPrim, lcJoinP, lcTriplete, lcJoinT, lcOrb, lcNractFara, lcFiltruAnalitic, lcSql, lnSucces
|
||||
|
||||
lcAlias = IIF(Type('tcAlias') = 'C' AND !Empty(m.tcAlias), m.tcAlias, 'crscaz')
|
||||
|
||||
@@ -59,15 +64,21 @@ FUNCTION DescoperaCazTest
|
||||
[(select 1 from vanzari w where w.cod=y.cod and nvl(w.numar_act,-1)=nvl(y.nract,-1) ] + ;
|
||||
[and nvl(w.serie_act,' ')=nvl(y.serie_act,' ') and trunc(w.data_act)=trunc(y.dataact) and w.sters=0))]
|
||||
|
||||
*!* verificare_note_contabile respinge salvarea unei note cu cont ce cere analitic si nu il are
|
||||
lcFiltruAnalitic = [not exists (select 1 from vact_tot x where x.cod=p.cod and x.an=p.an and x.luna=p.luna ] + ;
|
||||
[and x.sters=0 and nvl(x.suma,0)<>0 and ( ] + ;
|
||||
[(x.ascd is null and exists (select 1 from vplcont_analitic pa where pa.cont=x.scd and pa.an=?gnAn and pa.inactiv=0)) ] + ;
|
||||
[or (x.ascc is null and exists (select 1 from vplcont_analitic pa where pa.cont=x.scc and pa.an=?gnAn and pa.inactiv=0)) ))]
|
||||
|
||||
DO CASE
|
||||
CASE Upper(Alltrim(m.tcCaz)) == 'FACTURA_ARTICOLE'
|
||||
lcSql = [select * from (select v.id_vanzare, p.cod, p.an, p.luna, v.tip, ] + m.lcNlin + [ nlin from ] + ;
|
||||
m.lcPrim + [ ] + m.lcJoinP + [ where v.tip = 1 and ] + m.lcNlin + [ > 0 ] + ;
|
||||
m.lcPrim + [ ] + m.lcJoinP + [ where v.tip = 1 and ] + m.lcNlin + [ > 0 and ] + m.lcFiltruAnalitic + [ ] + ;
|
||||
[order by v.id_vanzare desc) where rownum = 1]
|
||||
|
||||
CASE Upper(Alltrim(m.tcCaz)) == 'NEFACTURA_ARTICOLE'
|
||||
lcSql = [select * from (select v.id_vanzare, p.cod, p.an, p.luna, v.tip, ] + m.lcNlin + [ nlin from ] + ;
|
||||
m.lcPrim + [ ] + m.lcJoinP + [ where v.tip <> 1 and ] + m.lcNlin + [ > 0 ] + ;
|
||||
m.lcPrim + [ ] + m.lcJoinP + [ where v.tip <> 1 and ] + m.lcNlin + [ > 0 and ] + m.lcFiltruAnalitic + [ ] + ;
|
||||
[order by v.id_vanzare desc) where rownum = 1]
|
||||
|
||||
CASE Upper(Alltrim(m.tcCaz)) == 'FARA_RULAJE'
|
||||
@@ -75,11 +86,12 @@ FUNCTION DescoperaCazTest
|
||||
m.lcPrim + [ ] + m.lcJoinP + [ where ] + m.lcNlin + [ > 0 ] + ;
|
||||
[and not exists (select 1 from vrul_tot r where r.cod=p.cod and r.an=p.an and r.luna=p.luna and r.sters=0) ] + ;
|
||||
[and not exists (select 1 from vrul_obinv_tot r where r.cod=p.cod and r.an=p.an and r.luna=p.luna and r.sters=0) ] + ;
|
||||
[and ] + m.lcFiltruAnalitic + [ ] + ;
|
||||
[order by v.id_vanzare desc) where rownum = 1]
|
||||
|
||||
CASE Upper(Alltrim(m.tcCaz)) == 'PRIM_RAND_ORB'
|
||||
lcSql = [select * from (select v.id_vanzare, p.cod, p.an, p.luna, v.tip, ] + m.lcNlin + [ nlin from ] + ;
|
||||
m.lcTriplete + [ ] + m.lcJoinP + [ where ] + m.lcNlin + [ > 0 and ] + m.lcOrb + [ ] + ;
|
||||
m.lcTriplete + [ ] + m.lcJoinP + [ where ] + m.lcNlin + [ > 0 and ] + m.lcOrb + [ and ] + m.lcFiltruAnalitic + [ ] + ;
|
||||
[order by v.id_vanzare desc) where rownum = 1]
|
||||
|
||||
CASE Upper(Alltrim(m.tcCaz)) == 'COLIZIUNE_COD'
|
||||
@@ -91,6 +103,7 @@ FUNCTION DescoperaCazTest
|
||||
m.lcTriplete + [ ] + m.lcJoinP + [ where ] + m.lcNlin + [ > 0 and ] + m.lcOrb + [ ] + ;
|
||||
[and (select count(distinct v2.id_vanzare) from vanzari v2 where v2.cod=p.cod and v2.sters=0) >= 2 ] + ;
|
||||
[and ] + Strtran(m.lcNractFara, [<COL>], [nract]) + [ is not null ] + ;
|
||||
[and ] + m.lcFiltruAnalitic + [ ] + ;
|
||||
[order by v.id_vanzare desc) where rownum = 1]
|
||||
|
||||
CASE Upper(Alltrim(m.tcCaz)) == 'NOTA_FARA_VANZARI'
|
||||
|
||||
Reference in New Issue
Block a user