Cum se rezolva, daca cheltuiala inscrisa in header-ul receptiei se repartizeaza doar pe anumite randuri ale receptiei?
De ex.: cheltuiala de transport se repartizeaza pe stocurile intrate, dar nu si pe avans?
NIR cu cheltuieli - repartizare doar pe anumite randuri
Moderator: HAMOR
-
- Posts: 17
- Joined: 18 Jan 2012, 10:22
-
- Posts: 130
- Joined: 08 Dec 2011, 11:11
Re: NIR cu cheltuieli - repartizare doar pe anumite randuri
În #INCEPUT se face un calcul prealabil, pentru a afla suma pentru care nu se repartizează cheltuieli:
Nu fragmentaţi linia !
La calculul coeficientului pentru repartizarea a cheltuielilor se ţine cont de această sumă.
În secţiunea #RIND se pune un #DACA, prin care se evită repartizarea cheltuielilor pe liniile pentru care nu este necesar acest lucru
-după DBEVAL() am mai făcut repoziţionarea pointerului în lotm, ca pe durata executării secţiunii #INCEPUT să fie poziţionat pe lotul selectat de program.
Nu este neapărat necesar, oricum înainte de #RIND programul impune primul lot de intrare.
Atenţie, am folosit variabila xR_7, verificaţi, să nu fie utilizat şi pentru altceva.
-DBEVAL() parcurge doar loturile de intrare de pe recepţie, deci nu ar trebui să apară probleme de viteză,
-h_MB() este necesar doar pentru varianta Blinker, dar poate fi păstrat şi în varianta Windows,
-eu am presupus criteriul de selecţie pentru Y-AVANS dar se pot implementa şi alte reguli, de exemplu în funcţie de grupă
Code: Select all
# xR_1 := 0, xR_7 := lotm->(RECNO()), lotm->(DBSEEK(tran->NRTRAN))
# lotm->(DBEVAL(h_MB("{|| xR_1:=xR_1+ROUND(lotm->PACH*lotm->STOCI,2)}"),h_MB("{|| lotm->CODMAT='Y-AVANS'}"),h_MB("{||lotm->NRTRAN=tran->NRTRAN}")))
# lotm->(DBGOTO(xR_7))
La calculul coeficientului pentru repartizarea a cheltuielilor se ţine cont de această sumă.
Code: Select all
# xR_1 := IF (xR_Tot==0,0,(xR_TotChelt-xR_TotTvaChelt)/(xR_Tot-xR_1-xR_TotTva))
Code: Select all
#DACA ! (xR_CodM="Y-AVANS")
# xR_PuChelt := ROUND(xR_PuCmp*xR_1,2)
...
Nu este neapărat necesar, oricum înainte de #RIND programul impune primul lot de intrare.
Atenţie, am folosit variabila xR_7, verificaţi, să nu fie utilizat şi pentru altceva.
-DBEVAL() parcurge doar loturile de intrare de pe recepţie, deci nu ar trebui să apară probleme de viteză,
-h_MB() este necesar doar pentru varianta Blinker, dar poate fi păstrat şi în varianta Windows,
-eu am presupus criteriul de selecţie pentru Y-AVANS dar se pot implementa şi alte reguli, de exemplu în funcţie de grupă
-
- Site Admin
- Posts: 456
- Joined: 08 Dec 2011, 10:49
Re: NIR cu cheltuieli - repartizare doar pe anumite randuri
Este o solutie generala, ca de la dezvoltator: valabil in blinker/win, loturile se parcurg in ordinea indexului 4 (ordinea in care se parcurg si in #RIND), viteza este optima etc.
Este adaptabila si la loturile de iesire, mai mult si la formulele de model, de contare,
ori de cate ori se impune parcurgerea prealabila a loturilor unui document, pentru a culege anumite informatii,
inainte de intra "oficial"in sectiunea #RIND.
Pentru a putea aplica si in alta parte, sa traducem ce inseamna:
lotm->(DBSEEK(tran->NRTRAN))
sare la primul lot de intrare al documentului
# lotm->(DBEVAL(h_MB("{|| xR_1:=xR_1+ROUND(lotm->PACH*lotm->STOCI,2)}"),h_MB("{|| lotm->CODMAT='Y-AVANS'}"),h_MB("{||lotm->NRTRAN=tran->NRTRAN}")))
- cu DBEVAL se parcurge fisierul lotm
- DBEVAL are 3 parametri, cele 3 coduri de bloc, parametri functiei h_MB(...)
prima: ce se executa ? se cumuleaza in X_1 valoarea PACH*STOCI
a doua: pentru care loturi ? pentru care codul este Y-AVANS
a treia: pana cand ? pana cand NRTRAN din lot=NRTRAN din document
Recapitulam:
se parcurge lotm incepand cu primul lot al documentului si
se cumuleaza in X_1 valoarea PACH*STOCI
din loturile pentru care codul este Y-AVANS
pana cand NRTRAN din lot=NRTRAN din document
Este adaptabila si la loturile de iesire, mai mult si la formulele de model, de contare,
ori de cate ori se impune parcurgerea prealabila a loturilor unui document, pentru a culege anumite informatii,
inainte de intra "oficial"in sectiunea #RIND.
Pentru a putea aplica si in alta parte, sa traducem ce inseamna:
lotm->(DBSEEK(tran->NRTRAN))
sare la primul lot de intrare al documentului
# lotm->(DBEVAL(h_MB("{|| xR_1:=xR_1+ROUND(lotm->PACH*lotm->STOCI,2)}"),h_MB("{|| lotm->CODMAT='Y-AVANS'}"),h_MB("{||lotm->NRTRAN=tran->NRTRAN}")))
- cu DBEVAL se parcurge fisierul lotm
- DBEVAL are 3 parametri, cele 3 coduri de bloc, parametri functiei h_MB(...)
prima: ce se executa ? se cumuleaza in X_1 valoarea PACH*STOCI
a doua: pentru care loturi ? pentru care codul este Y-AVANS
a treia: pana cand ? pana cand NRTRAN din lot=NRTRAN din document
Recapitulam:
se parcurge lotm incepand cu primul lot al documentului si
se cumuleaza in X_1 valoarea PACH*STOCI
din loturile pentru care codul este Y-AVANS
pana cand NRTRAN din lot=NRTRAN din document
-
- Site Admin
- Posts: 456
- Joined: 08 Dec 2011, 10:49
Re: variante NIRIC cu rand avans si cheltuieli
NIRIC poate sa aiba mai multe variante:
- poate sa contina decontare de avans platit
- cheltuiala poate sa fie:
1. pe factura distincta care se poate receptiona in aceelasi NIR
(au acelasi OpTVA, ambele sunt in lei ....)
2. pe factura distincta care nu se poate receptiona in aceelasi NIR
(nu au acelasi OpTVA, factura de transport este in valuta ....)
3. pe aceeasi factura
O solutie NIRIC cu exemple vezi anexat.
- poate sa contina decontare de avans platit
- cheltuiala poate sa fie:
1. pe factura distincta care se poate receptiona in aceelasi NIR
(au acelasi OpTVA, ambele sunt in lei ....)
2. pe factura distincta care nu se poate receptiona in aceelasi NIR
(nu au acelasi OpTVA, factura de transport este in valuta ....)
3. pe aceeasi factura
O solutie NIRIC cu exemple vezi anexat.
- Attachments
-
- niric.zip
- NIRIC validare, contare, exemplu
- (2.29 KiB) Downloaded 554 times
-
- Site Admin
- Posts: 456
- Joined: 08 Dec 2011, 10:49
Re: NIRIC - tip doc complet
Tip doc complet NIRIC.
Contine variantele de mai sus,
si in plus am actualizat si formularul:
coloane de latime mai mare, cantitate cu 3 zecimale, formular mai compact.
Contine variantele de mai sus,
si in plus am actualizat si formularul:
coloane de latime mai mare, cantitate cu 3 zecimale, formular mai compact.
- Attachments
-
- tdoc_niric.zip
- tdoc NIRIC.dbf, .dbt
- (2.85 KiB) Downloaded 565 times
-
- Site Admin
- Posts: 456
- Joined: 08 Dec 2011, 10:49
Re: NIRIC - rand cheltuieli
Pentru randul de cheltuieli se definesc:
Nomenclator: C-cheltuieli de transport marfuri, Grupa: Marfa,
Functii de conturi: Gest:C, Grupa: Marfa, Tip: C, Cont intrare: 378.1, Cont dif: 6588.5
Nomenclator: C-cheltuieli de transport materiale diverse, Grupa: GC1,
Functii de conturi: Gest:C, Grupa: GC1, Tip: C, Cont intrare: 308, Cont dif: 6588.5
Nomenclator: C-cheltuieli de transport marfuri, Grupa: Marfa,
Functii de conturi: Gest:C, Grupa: Marfa, Tip: C, Cont intrare: 378.1, Cont dif: 6588.5
Nomenclator: C-cheltuieli de transport materiale diverse, Grupa: GC1,
Functii de conturi: Gest:C, Grupa: GC1, Tip: C, Cont intrare: 308, Cont dif: 6588.5
-
- Site Admin
- Posts: 456
- Joined: 08 Dec 2011, 10:49
Re: NIR cu cheltuieli - repartizare doar pe anumite randuri
Exemple cu receptii cu cheltuieli
cantitati receptionate mari cu diferente de repartizare mai mari si
cantitati transformate in UM mai mari cu diferente mai mici.
Vezi exemplele anexate.
cantitati receptionate mari cu diferente de repartizare mai mari si
cantitati transformate in UM mai mari cu diferente mai mici.
Vezi exemplele anexate.
- Attachments
-
- niric2.zip
- Exemple NIRIC
- (1.22 KiB) Downloaded 538 times
-
- Posts: 109
- Joined: 08 Dec 2011, 10:06
Re: NIR cu cheltuieli - corectie formula repartizare cheltui
NIRIC - Corectie formula de repartizare cheltuieli
In formulele de validare a documentului NIRIC, atasat acestui subiect (topic), exista o formula de repartizare cheltuieli la 1 leu cumparat:
Formula trebuie imbunatatita sa functioneze si in cazul cind factura are suma totala = 0, pentru ca are si un rind de decontare avans acordat.
In acest caz xR_Tot=0 si am aveatotusi cheltuieli de repartizat.
Formula corecta este:
Deci testul: xR_Tot==0
trebuie modicat in:
ROUND(xR_Tot-xR_1-xR_2-xR_TotTva,2)=0
In formulele de validare a documentului NIRIC, atasat acestui subiect (topic), exista o formula de repartizare cheltuieli la 1 leu cumparat:
Code: Select all
// cheltuieli la 1 leu cumparat
# xR_1 := IF (xR_Tot==0,0,(xR_TotChelt-xR_TotTvaChelt+xR_1)/(xR_Tot-xR_1-xR_2-xR_TotTva))
In acest caz xR_Tot=0 si am aveatotusi cheltuieli de repartizat.
Formula corecta este:
Code: Select all
// cheltuieli la 1 leu cumparat
# xR_1 := IF (ROUND(xR_Tot-xR_1-xR_2-xR_TotTva,2)=0,0,(xR_TotChelt-xR_TotTvaChelt+xR_1)/(xR_Tot-xR_1-xR_2-xR_TotTva))
trebuie modicat in:
ROUND(xR_Tot-xR_1-xR_2-xR_TotTva,2)=0