Search  
Friday, May 25, 2012 ..:: Forum ::.. Register  Login
 Forum Minimize
Pentru a putea posta mesaje trebuie să vă înregistraţi.
Notă: Mesajele cu conţinut jignitor sau ilegal (inclusiv cereri de soft piratat) nu sunt acceptate şi vor fi şterse imediat .

Pentru a primi raspunsuri rapide si corecte, scrieti in mesaj ce intentionati sa faceti, ce mesaj de eroare primiti, in ce context si in urma caror actiuni. De asemenea, mentionati versiunea de FoxPro in care lucrati!
Dacă nu specificați versiunea, se consideră VFP 9.0 SP2.

SearchForum Home
  Visual FoxPro  Cod, sintaxa si comenzi  Calcul stoc ini...
 Calcul stoc initial
 
 3/10/2011 8:00:26 AM
User is offlinebata01yu
55 posts


Calcul stoc initial
 (Romania)
Buna
Am un cursor cu urmatoarea structura

Um, intrari, iesiri, pu, prod_cod, data_doc si plus altele
ma intereseaza so obtin urmatorul cursor
um , stoc_ini, intrari, iesiri , stoc_f, pu, prod_cod la o anumita data
de ex :
stoc initial la data de 01.03.2011 sa fie sum(intrari-iesiri) pana la data 28.02.2011
intrari si iesiri sa fie cele incepand cu data de 01.03.2011
iar stoc final e clar
gruparea se va face pe prod_cod si pu
Multumesc anticipat
 3/10/2011 9:35:12 AM
User is offlineDaniel Buduru
2335 posts
1st




Re: Calcul stoc initial
 (N/A)
Cu ce versiune VFP lucrezi?

Daniel Buduru
 3/10/2011 9:46:13 AM
User is offlinebata01yu
55 posts


Re: Calcul stoc initial
 (Romania)
scuze
vfp 9

 3/10/2011 10:00:28 AM
User is offlineDaniel Buduru
2335 posts
1st




Re: Calcul stoc initial
 (N/A)
lddata_i=date(2011,3,1)
ldData_f=date(2011,3,31)

select a.um, a.prod_cod, a.pu, b.stoc_ini, c.intrari, c.iesiri, d.stoc_f ;
from cursor.a ;
left join (select prod_cod, pu, sum(intrari-iesiri) as stoc_ini from cursor where data_doc<lddata_i group by prod_cod, pu) b ;
on a.prod_cod=b.prod_cod and a.pu=b.pu ;
left join (select prod_cod, pu, sum(intrari) as intrari, sum(iesiri) as iesiri from cursor where data_doc>=ldData_i and data_doc<=ldData_f group by prod_cod, pu) c;
on a.prod_cod=c.prod_cod and a.pu=c.pu ;
left join (select prod_cod, pu, sum(intrari-sum(iesiri) from cursor where data_doc<=lddata_f group by prod_cod, pu) d
on a.prod_cod=d.prod_cod and a.pu=d.pu ;
into cursor stoc



Daniel Buduru
 3/10/2011 11:10:23 AM
User is offlinebata01yu
55 posts


Re: Calcul stoc initial
 (Romania)
Imi apar mai multe linii decat as fii avut nevoie
aici am selectul trimis  putin modificat dupa cerintele mele si voi atasa si tabela de unde ia datele
am impachetat dbf-ul

crs_listbox.zip 
 3/10/2011 11:10:58 AM
User is offlinebata01yu
55 posts


Re: Calcul stoc initial
 (Romania)
 bata01yu wrote
Imi apar mai multe linii decat as fii avut nevoie
aici am selectul trimis  putin modificat dupa cerintele mele si voi atasa si tabela de unde ia datele
am impachetat dbf-ul


am uitat selectul


select a.um, a.prod_cod, a.p_u, a.prod_id, a.gest_cod, a.cod_buget, a.sursa_cod, a.contul, b.stoc_ini, c.intrari, c.iesiri, d.stoc_f ;
from crs_listbox a;
LEFT join (select prod_cod,p_u, gest_cod, sursa_cod ,sum(intrari-iesiri) as stoc_ini from crs_listbox ;
where data_rec<thisform.filt_data1.data_s group by prod_cod, p_u, gest_cod, sursa_cod) b ;
on a.prod_cod=b.prod_cod and a.p_u=b.p_u AND a.gest_cod=b.gest_cod AND a.sursa_cod=b.sursa_cod ;
LEFT join (select prod_cod, p_u, gest_cod, sursa_cod, sum(intrari) as intrari, sum(iesiri) as iesiri from crs_listbox ;
where data_rec>=thisform.filt_data1.data_s and data_rec<=thisform.filt_data1.data_f group by prod_cod, p_u, gest_cod, sursa_cod) c;
on a.prod_cod=c.prod_cod and a.p_u=c.p_u AND a.gest_cod=c.gest_cod AND a.sursa_cod=c.sursa_cod ;
left join (select prod_cod, p_u, gest_cod,sursa_cod, sum(intrari)-sum(iesiri) as stoc_f from crs_listbox where data_rec<=thisform.filt_data1.data_f ;
group by prod_cod, p_u, gest_cod, sursa_cod) d;
on a.prod_cod=d.prod_cod and a.p_u=d.p_u AND a.sursa_cod=d.sursa_cod AND a.gest_cod=d.gest_cod ;
into cursor stoc
 3/10/2011 11:21:56 AM
User is offlinebata01yu
55 posts


Re: Calcul stoc initial
 (Romania)
lddata_i=date(2011,3,1)
ldData_f=date(2011,3,31)


select a.um, a.prod_cod, a.p_u, a.prod_id, a.gest_cod, a.cod_buget, a.sursa_cod, a.contul, b.stoc_ini, c.intrari, c.iesiri, d.stoc_f ;
from crs_listbox a;
LEFT join (select prod_cod,p_u, gest_cod, sursa_cod ,sum(intrari-iesiri) as stoc_ini from crs_listbox ;
where data_rec<lddata_i group by prod_cod, p_u, gest_cod, sursa_cod) b ;
on a.prod_cod=b.prod_cod and a.p_u=b.p_u AND a.gest_cod=b.gest_cod AND a.sursa_cod=b.sursa_cod ;
LEFT join (select prod_cod, p_u, gest_cod, sursa_cod, sum(intrari) as intrari, sum(iesiri) as iesiri from crs_listbox ;
where data_rec>=lddat_i and data_rec<=lddata_f group by prod_cod, p_u, gest_cod, sursa_cod) c;
on a.prod_cod=c.prod_cod and a.p_u=c.p_u AND a.gest_cod=c.gest_cod AND a.sursa_cod=c.sursa_cod ;
left join (select prod_cod, p_u, gest_cod,sursa_cod, sum(intrari)-sum(iesiri) as stoc_f from crs_listbox where data_rec<=lddata_f ;
group by prod_cod, p_u, gest_cod, sursa_cod) d;
on a.prod_cod=d.prod_cod and a.p_u=d.p_u AND a.sursa_cod=d.sursa_cod AND a.gest_cod=d.gest_cod ;
into cursor stoc READWRITE

am facut si modificari de data
scuze ptr ca va stresez
 3/10/2011 11:58:52 AM
User is offlinevaly.m
227 posts
4th


Re: Calcul stoc initial
 (N/A)
Nu mi se pare corect , din punctul meu de vedere, ca un stoc initial la o anumita data sa il creezi doar din intrari-iesiri. Un stoc initial la o anumita data se calculeaza ca stoc_initial+intrari-iesiri, unde intrari si iesiri sunt din perioada pana la data ceruta!
Exemplu:
Am un produs la care fac inventar pe 01.02.2011 si gasesc 5 bucati. In luna februarie am intrate 10 bucati si iesite 4 bucati. Din formula ta rezulta faptul ca stocul tau initial la 01.03.2011 va fi (10-4)=6 bucati. Wrong!! Este 5+10-4=11!

Valy Maties - Beginner programmer
 3/10/2011 12:20:58 PM
User is offlinebata01yu
55 posts


Re: Calcul stoc initial
 (Romania)
 valy.m wrote
Nu mi se pare corect , din punctul meu de vedere, ca un stoc initial la o anumita data sa il creezi doar din intrari-iesiri. Un stoc initial la o anumita data se calculeaza ca stoc_initial+intrari-iesiri, unde intrari si iesiri sunt din perioada pana la data ceruta!
Exemplu:
Am un produs la care fac inventar pe 01.02.2011 si gasesc 5 bucati. In luna februarie am intrate 10 bucati si iesite 4 bucati. Din formula ta rezulta faptul ca stocul tau initial la 01.03.2011 va fi (10-4)=6 bucati. Wrong!! Este 5+10-4=11!


si cand faci inventarul cele 5 bucati cum le obtii
din intrari - iesiri
sau ca plus de inventar

 3/10/2011 1:35:23 PM
User is offlineDaniel Buduru
2335 posts
1st




Re: Calcul stoc initial
 (N/A) Modified By Daniel Buduru  on 3/10/2011 3:52:54 PM)
Mi-am dat seama mai tarziu ca am uitat un select distinct in cod, dar nu mai eram la calculator.
Uita aici selectul corect:

lddata_i=date(2011,3,1)
ldData_f=date(2011,3,31)


select a.um, a.prod_cod, a.p_u, a.prod_id, a.gest_cod, a.cod_buget, a.sursa_cod, a.contul, ;
CAST(NVL(b.stoc_ini,0) as numeric (10,2)) as stoc_ini, ;
CAST(NVL(c.intrari,0) as numeric (10,2)) as intrari, ;
CAST(NVL(c.iesiri,0) as numeric(10,2)) as iesiri, ;
CAST(NVL(d.stoc_f,0) as numeric(10,2)) as stoc_f ;
from (Select distinct
um, prod_cod, p_u, prod_id, gest_cod, cod_buget, sursa_cod, contul from crs_listbox) a;
LEFT join (select prod_cod,p_u, gest_cod, sursa_cod ,sum(intrari-iesiri) as stoc_ini from crs_listbox ;
where data_rec<lddata_i group by prod_cod, p_u, gest_cod, sursa_cod) b ;
on a.prod_cod=b.prod_cod and a.p_u=b.p_u AND a.gest_cod=b.gest_cod AND a.sursa_cod=b.sursa_cod ;
LEFT join (select prod_cod, p_u, gest_cod, sursa_cod, sum(intrari) as intrari, sum(iesiri) as iesiri from crs_listbox ;
where data_rec>=lddata_i and data_rec<=lddata_f group by prod_cod, p_u, gest_cod, sursa_cod) c;
on a.prod_cod=c.prod_cod and a.p_u=c.p_u AND a.gest_cod=c.gest_cod AND a.sursa_cod=c.sursa_cod ;
left join (select prod_cod, p_u, gest_cod,sursa_cod, sum(intrari)-sum(iesiri) as stoc_f from crs_listbox where data_rec<=lddata_f ;
group by prod_cod, p_u, gest_cod, sursa_cod) d;
on a.prod_cod=d.prod_cod and a.p_u=d.p_u AND a.sursa_cod=d.sursa_cod AND a.gest_cod=d.gest_cod ;
into cursor stoc READWRITE


Edit
Am pus in cod functia NVL, care inlocuieste valorile null (acolo unde nu a fost stoc initial, sau nu are rulaj) cu 0.

Later edit
E nevoie si de precizarea formatului campului, altfel VFP pune formatul dupa prima valoare intalnita ...

Daniel Buduru
 3/10/2011 1:40:46 PM
User is offlineMarian Dobre
399 posts
3rd


Re: Calcul stoc initial Pe tine te intereseaza notiunea de stoc curent la un anumit moment dat. Peri
 (N/A)
Pe tine te intereseaza notiunea de stoc curent la un anumit moment dat. Perioada de raportare a stocului curent se face de obicei din doua puncte de vedere:
1. la finele unei luni calendaristice (de la 1 la 31/30/28/29 zile)
2. la cerere (executia unui inventar). Si in acest caz data de inceput poate sa fie 1 ale lunii sau x ale lunii cand ultimul inventar s-a efectuat in luna curenta la data de x.
Pentru ambele situatii trebuie sa fie definite notiunile de stoc initial (chiar daca este 0), intrarile si iesirile. Formula de calcul a stocului curent este batuta in cuie. In cazul unui inventar constati ca (fata de exemplul de mai sus 5+10-4=11) tu ai sa zicem stocul de 8. Cum faci sa-ti corectezi stocul scriptic de 11 cu stocul faptic de 8. In mod practic se abordeaza urmatoarea procedura. Se deschide o operatie de inventariere (pe gestiunea respectiva). In perioada de inventariere nu se va mai putea efectua intrari si nici iesiri. Se corecteaza stocul din 11 in 8 prin introducerea unei corectii de stoc cu -3 produse. Se face validarea inventarului si se listeaza noul stoc faptic.In acest moment se executa inchiderea inventarului. Acum stocul tau curent va deveni 8 si se deblocheaza modul de culegere a intrarilor si iesirilor pe gestiunea de inventariere. Operatia de corectie stoc poate fi privita ori ca o intrare in stoc (in acest caz intrarea va fi de -3) ori ca o iesire (evident acum iesirea va fi de 3). Alegerea modolui de corectie a stocului este o chestiune de alegere a porogramatorului (eventual la cererea clientului sau).
In concluzie ai:
- Stoc initial
   - miscari de tip intrare
   - miscari de tip iesire.
Acum problema ta este sa-ti creezi un nou tip de miscare (corectie de stoc).

Orice putere omeneasca este un compus de rabdare si de timp. Balzac
 3/10/2011 2:09:01 PM
User is offlineDaniel Buduru
2335 posts
1st




Re: Calcul stoc initial
 (N/A)
 valy.m wrote
Nu mi se pare corect , din punctul meu de vedere, ca un stoc initial la o anumita data sa il creezi doar din intrari-iesiri. Un stoc initial la o anumita data se calculeaza ca stoc_initial+intrari-iesiri, unde intrari si iesiri sunt din perioada pana la data ceruta!
Exemplu:
Am un produs la care fac inventar pe 01.02.2011 si gasesc 5 bucati. In luna februarie am intrate 10 bucati si iesite 4 bucati. Din formula ta rezulta faptul ca stocul tau initial la 01.03.2011 va fi (10-4)=6 bucati. Wrong!! Este 5+10-4=11!


Daca te uiti in cod, stocul initial este suma intrari-iesiri pana in ziua precedenta perioadei.
Daca stocul initial la deschiderea gestiunii este inregistrat ca o intrare (ceea ce este corect, stocul, prin definitie este diferenta dintre intrari si  iesiri) orice insumarea a miscarilor va produce un stoc valid.
Daca aplicatia cu care lucrezi tu tine separat stocul initial la inceputul perioadei, si separat miscarile (intrari - iesiri), in calculul stocului trebuie luata si tabela de stocuri, nu numai cea de miscari. Nu este insa cazul aici.



Daniel Buduru
 3/14/2011 8:11:34 AM
User is offlinebata01yu
55 posts


Re: Calcul stoc initial
 (Romania)
Da este ok mersii mult

  Visual FoxPro  Cod, sintaxa si comenzi  Calcul stoc ini...

Search  Forum Home         

 Google Ads Minimize

    

Copyright 2002-2010 Profox   Terms Of Use  Privacy Statement