#6 editare factura emisa: runda 6 - nomenclatoare, zecimale, aspect grid, meniu
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
This commit is contained in:
@@ -12,19 +12,22 @@
|
||||
* Ce verifica dupa fiecare editare (VerificaDupaEditare): nota veche (vact_tot, cod dinainte) are
|
||||
* STERS=1, nota noua (cod nou) exista si e activa cu acelasi id_fact, VANZARI.id_fact ramane
|
||||
* neschimbat, VANZARI/VANZARI_DETALII raman sincronizate (numar de linii active si totalurile
|
||||
* denormalizate identice cu inainte de editare, fara_tva+tva=cu_tva), rulajele sunt refacute
|
||||
* (Reccount(trul)>0 pe nota noua) si totalurile de control ACT/RUL (ActualizeazaVerdictActRul,
|
||||
* denormalizate identice cu inainte de editare, fara_tva+tva=cu_tva), rulajele nu se pierd la
|
||||
* editare (Reccount(trul) pe nota noua ramane cel putin cat era inainte - un document care nu misca
|
||||
* stocul, cum e factura emisa din aviz, n-are rulaje deloc si nici nu capata) si totalurile de
|
||||
* control ACT/RUL (ActualizeazaVerdictActRul,
|
||||
* omodificari.vc2) raman concordante fata de inainte de editare - CalculeazaTotaluriS4b instantiaza
|
||||
* frm_modific2024 exact ca test_verdict_act_rul.prg, fara UI. Suplimentar: gcMockUltimMesaj
|
||||
* (mock_amessagebox.prg) trebuie sa ramana gol dupa lantul de scriere - dovada ca verifica_stoc
|
||||
* (oscrie_in_fisiere.prg:92-106, apelata doar cand tnScrie_Sterge=2 And !tlModificare) nu s-a
|
||||
* declansat, pentru ca ambele lanturi trec tlModificare=.T. la OSCRIE_IN_FISIERE.
|
||||
*
|
||||
* Matricea completa (4 documente, cate unul din fiecare tip de sursa) e definita in gaMatriceS8, dar
|
||||
* NUMAI id_vanzare=1048 e activ in gaCazuriActive - celelalte trei se consuma ireversibil (cod se
|
||||
* realoca, note vechi raman sterse) si se ruleaza separat, dupa ce felia asta trece. Cazurile
|
||||
* neactive sunt doar loghate, fara niciun acces la Oracle. Codul e parametrizat pe id_vanzare -
|
||||
* activarea unui caz nou inseamna doar adaugarea lui in gaCazuriActive.
|
||||
* Matricea completa (4 documente, cate unul din fiecare tip de sursa) e definita in gaMatriceS8, iar
|
||||
* gaCazuriActive alege ce se ruleaza: fiecare document se consuma ireversibil (cod se realoca, note
|
||||
* vechi raman sterse), deci se activeaza cate unul pe rand, iar implicit lista e goala ca o rulare
|
||||
* accidentala sa nu consume nimic. Cazurile neactive sunt doar loghate, fara niciun acces la Oracle.
|
||||
* Codul e parametrizat pe id_vanzare - activarea unui caz nou inseamna doar adaugarea lui in
|
||||
* gaCazuriActive. Logul se rescrie la fiecare rulare, deci contine doar ultima felie activata.
|
||||
*
|
||||
* Documentele de test se editeaza exclusiv prin fluxul aplicatiei (OSCRIE_IN_FISIERE,
|
||||
* finalizeaza_modificare_nota, ScrieArticoleFacturaEditate) - interogarile SQL sunt doar de citire.
|
||||
@@ -247,7 +250,7 @@ ENDPROC
|
||||
*-- stare VANZARI dupa, nota veche/noua din vact_tot, totalurile de control S4b dupa editare
|
||||
PROCEDURE VerificaDupaEditare
|
||||
LPARAMETERS tnIdVanzare, tcEtapa, tnCodInainte, tnIdFactInainte, tnTotFtvaInainte, tnTotTvaInainte, ;
|
||||
tnTotCtvaInainte, tnNrActiveInainte, tnActBaseline, tnRulBaseline, tnAn, tnLuna, tcLog
|
||||
tnTotCtvaInainte, tnNrActiveInainte, tnActBaseline, tnRulBaseline, tnNrRulBaseline, tnAn, tnLuna, tcLog
|
||||
|
||||
LOCAL lcSql, lnQ, lnCodDupa, lnIdFactDupa, lnStersDupa, lnTotFtvaDupa, lnTotTvaDupa, lnTotCtvaDupa, lnNrActiveDupa
|
||||
LOCAL lnStersNotaVeche, lnStersNotaNoua, lnIdFactNotaNoua
|
||||
@@ -305,7 +308,10 @@ PROCEDURE VerificaDupaEditare
|
||||
*-- rulajele refacute + totalurile de control S4b concordante fata de dinainte de editare
|
||||
DO CalculeazaTotaluriS4b WITH lnCodDupa, tnAn, tnLuna, tcEtapa + ' [dupa]', tcLog
|
||||
DO asserteaza WITH tcEtapa + ': totalurile de control S4b calculabile pe nota noua', glS4bOk, TRANSFORM(glS4bOk)
|
||||
DO asserteaza WITH tcEtapa + ': rulajele au fost refacute pe nota noua (Reccount(trul)>0)', gnS4bRulReccount > 0, TRANSFORM(gnS4bRulReccount)
|
||||
*-- RUL retine doar miscari pe cont de stoc: un document care nu atinge stocul (factura emisa din
|
||||
*-- aviz - marfa a iesit deja la aviz) n-are rulaje nici inainte, nici dupa. Se cere doar sa nu se piarda.
|
||||
DO asserteaza WITH tcEtapa + ': rulajele nu s-au pierdut la editare (Reccount(trul) pe nota noua)', ;
|
||||
gnS4bRulReccount >= tnNrRulBaseline, TRANSFORM(tnNrRulBaseline) + ' -> ' + TRANSFORM(gnS4bRulReccount)
|
||||
DO asserteaza WITH tcEtapa + ': Total ACT ramane concordant fata de inainte de editare (fara modificari de linii)', ;
|
||||
ABS(gnS4bAct - tnActBaseline) < 0.01, TRANSFORM(tnActBaseline) + ' -> ' + TRANSFORM(gnS4bAct)
|
||||
DO asserteaza WITH tcEtapa + ': Total RUL ramane concordant fata de inainte de editare (fara modificari de linii)', ;
|
||||
@@ -323,7 +329,7 @@ PROCEDURE EditeazaDinRoafacturare
|
||||
PRIVATE pnAn, pnLuna, lnCod, lnIdFact
|
||||
LOCAL lcEtapa, lcSql, lnQ, lnSters, llEProforma, lnIdSet, lnIdFactD, lnSucces, llBlocatReferinte
|
||||
LOCAL lnCodInainte, lnIdFactInainte, lnTotFtvaInainte, lnTotTvaInainte, lnTotCtvaInainte, lnNrActiveInainte
|
||||
LOCAL lnActBaseline, lnRulBaseline, llS4bBaselineOk, llGasitRand
|
||||
LOCAL lnActBaseline, lnRulBaseline, lnNrRulBaseline, llS4bBaselineOk, llGasitRand
|
||||
|
||||
lcEtapa = tcSursa + ' / intrare ROAFACTURARE (do_editare_factura)'
|
||||
STRTOFILE(CHR(13) + CHR(10) + '========== ' + lcEtapa + ', id_vanzare=' + TRANSFORM(tnIdVanzare) + ' ==========' + CHR(13) + CHR(10), tcLog, 1)
|
||||
@@ -379,6 +385,7 @@ PROCEDURE EditeazaDinRoafacturare
|
||||
DO CalculeazaTotaluriS4b WITH lnCod, pnAn, pnLuna, lcEtapa + ' [inainte]', tcLog
|
||||
lnActBaseline = gnS4bAct
|
||||
lnRulBaseline = gnS4bRul
|
||||
lnNrRulBaseline = MAX(gnS4bRulReccount, 0)
|
||||
llS4bBaselineOk = glS4bOk
|
||||
DO asserteaza WITH lcEtapa + ': totalurile de control S4b (ACT/RUL) calculabile inainte de editare', llS4bBaselineOk, TRANSFORM(llS4bBaselineOk)
|
||||
|
||||
@@ -510,7 +517,7 @@ PROCEDURE EditeazaDinRoafacturare
|
||||
|
||||
*-- 7) verificarile de dupa commit, comune ambelor puncte de intrare
|
||||
DO VerificaDupaEditare WITH tnIdVanzare, lcEtapa, lnCodInainte, lnIdFactInainte, lnTotFtvaInainte, lnTotTvaInainte, ;
|
||||
lnTotCtvaInainte, lnNrActiveInainte, lnActBaseline, lnRulBaseline, pnAn, pnLuna, tcLog
|
||||
lnTotCtvaInainte, lnNrActiveInainte, lnActBaseline, lnRulBaseline, lnNrRulBaseline, pnAn, pnLuna, tcLog
|
||||
ENDPROC
|
||||
|
||||
|
||||
@@ -523,7 +530,7 @@ PROCEDURE EditeazaDinRegistruJurnal
|
||||
PRIVATE pnAn, pnLuna, lnCod, lnIdFact, lnIdfactd, lnIdSet, pdDataOra
|
||||
LOCAL lcEtapa, lcSql, lnQ, lnSters, llSters, llGestInvantar, llRul, lnSucces, llBlocExecutat, llGasitTvanz
|
||||
LOCAL lnCodInainte, lnIdFactInainte, lnTotFtvaInainte, lnTotTvaInainte, lnTotCtvaInainte, lnNrActiveInainte
|
||||
LOCAL lnActBaseline, lnRulBaseline, llS4bBaselineOk
|
||||
LOCAL lnActBaseline, lnRulBaseline, lnNrRulBaseline, llS4bBaselineOk
|
||||
llBlocExecutat = .F.
|
||||
|
||||
lcEtapa = tcSursa + ' / intrare registru jurnal ROACONT (afisjurcom.do_modifica)'
|
||||
@@ -597,6 +604,7 @@ PROCEDURE EditeazaDinRegistruJurnal
|
||||
DO CalculeazaTotaluriS4b WITH lnCod, pnAn, pnLuna, lcEtapa + ' [inainte]', tcLog
|
||||
lnActBaseline = gnS4bAct
|
||||
lnRulBaseline = gnS4bRul
|
||||
lnNrRulBaseline = MAX(gnS4bRulReccount, 0)
|
||||
llS4bBaselineOk = glS4bOk
|
||||
DO asserteaza WITH lcEtapa + ': totalurile de control S4b (ACT/RUL) calculabile inainte de editare', llS4bBaselineOk, TRANSFORM(llS4bBaselineOk)
|
||||
|
||||
@@ -742,7 +750,7 @@ PROCEDURE EditeazaDinRegistruJurnal
|
||||
|
||||
*-- 8) verificarile de dupa commit, comune ambelor puncte de intrare
|
||||
DO VerificaDupaEditare WITH tnIdVanzare, lcEtapa, lnCodInainte, lnIdFactInainte, lnTotFtvaInainte, lnTotTvaInainte, ;
|
||||
lnTotCtvaInainte, lnNrActiveInainte, lnActBaseline, lnRulBaseline, pnAn, pnLuna, tcLog
|
||||
lnTotCtvaInainte, lnNrActiveInainte, lnActBaseline, lnRulBaseline, lnNrRulBaseline, pnAn, pnLuna, tcLog
|
||||
ENDPROC
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user