NIR cu cheltuieli - repartizare doar pe anumite randuri

Gestiunea şi contabilitatea activităţii comerciale, financiare şi a stocurilor

Moderator: HAMOR

Post Reply
gyongyver.balazs
Posts: 17
Joined: 18 Jan 2012, 10:22

NIR cu cheltuieli - repartizare doar pe anumite randuri

Post by gyongyver.balazs »

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?
mozes.illyes
Posts: 130
Joined: 08 Dec 2011, 11:11

Re: NIR cu cheltuieli - repartizare doar pe anumite randuri

Post by mozes.illyes »

În #INCEPUT se face un calcul prealabil, pentru a afla suma pentru care nu se repartizează cheltuieli:

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))   
Nu fragmentaţi linia !


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))
În secţiunea #RIND se pune un #DACA, prin care se evită repartizarea cheltuielilor pe liniile pentru care nu este necesar acest lucru

Code: Select all

    #DACA ! (xR_CodM="Y-AVANS")
        # xR_PuChelt  := ROUND(xR_PuCmp*xR_1,2)
        ...
-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ă
imre.bodosi
Site Admin
Posts: 456
Joined: 08 Dec 2011, 10:49

Re: NIR cu cheltuieli - repartizare doar pe anumite randuri

Post by imre.bodosi »

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
imre.bodosi
Site Admin
Posts: 456
Joined: 08 Dec 2011, 10:49

Re: variante NIRIC cu rand avans si cheltuieli

Post by imre.bodosi »

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.
Attachments
niric.zip
NIRIC validare, contare, exemplu
(2.29 KiB) Downloaded 554 times
imre.bodosi
Site Admin
Posts: 456
Joined: 08 Dec 2011, 10:49

Re: NIRIC - tip doc complet

Post by imre.bodosi »

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.
Attachments
tdoc_niric.zip
tdoc NIRIC.dbf, .dbt
(2.85 KiB) Downloaded 566 times
imre.bodosi
Site Admin
Posts: 456
Joined: 08 Dec 2011, 10:49

Re: NIRIC - rand cheltuieli

Post by imre.bodosi »

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
imre.bodosi
Site Admin
Posts: 456
Joined: 08 Dec 2011, 10:49

Re: NIR cu cheltuieli - repartizare doar pe anumite randuri

Post by imre.bodosi »

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.
Attachments
niric2.zip
Exemple NIRIC
(1.22 KiB) Downloaded 538 times
arpad.mezei
Posts: 109
Joined: 08 Dec 2011, 10:06

Re: NIR cu cheltuieli - corectie formula repartizare cheltui

Post by arpad.mezei »

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:

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))
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:

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))
Deci testul: xR_Tot==0
trebuie modicat in:
ROUND(xR_Tot-xR_1-xR_2-xR_TotTva,2)=0
Post Reply