Search  
Wednesday, May 23, 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  Visual FoxPro in general  Probleme concep...
 Probleme conceptuale
 
 4/10/2006 8:50:49 AM
User is offlineAlin Berce
371 posts
3rd




Probleme conceptuale
 (Romania)
Salutare,
Deoarece am inceput sa fac un program de contabilitate... asa mai slabut, proiect de licenta pentru sotia mea... as dori sa va intreb cate ceva, ca poate voi v-ati lovit de probleme din astea si imi dati ceva sugesti.

1. Am facut un form de intrari (facturi si avize). Am doua tabele: intrari cu pk nr_intrare si intrari_detalii. Dupa ce introduc o linie in detalii cand sunt pe ultima coloana din grid apelez thisform.calcul_sume() iar in calcul sume am ceva de genul:
Select sum(valoare) as valoare, sum(tva) as tva,sum(total) as total
from intrari_detalii
where nr_intrare=thisform.txtnr_Intrare.value
into cursor valori.
thisform.txtval.value=valori.valoare
thisform.txttva.value=valori.tva
thisform.txttotal.value=valori.valoare

Ok. Totalul mi-l face. Daca adaug o intrare noua e ok, merge bine. Daca dau modific-modific ceva-Salvez si apoi ii dau adaugare pentrui a adauga o intrare noua in grid raman valorile de la vechea intrare. De ce? Ar trebui sa fie gol. Inainte sa am calcul_sume mergea bine. Am facut eu ceva gresit? Poate fi deoarece folosesc un cursor pentru calcule?

2. Problema cea mai mare de care m-am lovit mi s-a parul generarea notelor contabile. In gridul de detalii am un combo la coloana cont. In momentul in care imi aleg un cont si dau enter se genereaza notele contabile. Problema e ca daca modific contul imi genereaza iar notele contabile... Deci ar trebui daca modific contul sa imi stearga din nota ce a fost inainte si sa imi regenereze valorile noi. Notele contabile se gasesc in tabela note care are structura:
id_nota,data,explicatie,cont_debitor,cont_creditor,suma
Voi cum ati rezolvat problema asta conceptual?

Na', cam asta e,vorba multa saracia omului :) Sunt deschis oricaror sugestii din partea voastra. Un inceput de saptamana bun.

VFP, C#, SQL Server 2005/2008
"Proud to be a ProFox member".
 4/10/2006 9:19:16 AM
User is offlineclody
66 posts
www.friendsoftware.ro




Re: Probleme conceptuale
 (Romania)
.
As putea sa-ti impartasesc opinia mea la punctul 2 - generarea de note contabile.
O prima sugestie este ca aceasta generare de note legate de documentul in lucru sa se realizeze intr-un singur moment ..atunci cand documentul este validat si inregistrat la apasarea unui buton cu aceasta functie (de ex. Salvare sau Inregistrare).
Iar in momentul acestei operatiuni, eu recomand ca initial sa stearga toate notele contabile aferente acestui document dupa care sa le regenereze.
In nici un caz nu prea vad ca fiecare linie din document sa genereze o noua linie in tabela de note, ci sa se realizeze o insumare pe tipuri de  articole contabile.
De ex daca ai o intrare de materie prima cu 120 de pozittii de detaliu, nu prea e normal sa costruiesti 120 ( x2 ca se  pune si TVA-ul) = 240 linii in tabela de note.
Deci eu unul as face o insumare.

Iar ca sa pastrezi legatura de consistenta si de cauzalitate, in tabela de note sa mai ai un camp numit "numar_intrare" si prin care sa se referentieze numarul documentului care l-a generat. (asa se realiza si stergerea lor in momentul inregistrarii  si in plus ai intotdeauna o legatura intre document si nota contabila generata)

Cu stima,

Claudiu Farcas
 4/10/2006 9:30:48 AM
User is offlineanonymous
0 posts


Re: Probleme conceptuale
 (N/A)
Salvarea unei singure tranzactii in doua tabele (ex. intrari si note contabile) va ridica imediat probleme de consistenta in BD. Ma refer la faptul ca se poate intimpla sa nu mai corespunda datele dintr-o tabela cu cele din cea de a doua tabela.
De aceea eu as merge pe sistemul cu o singura inregistrare, care sa contina si dateleaferente intrarii (produs, cantitate, pret) darsi cele aferente contarii.
 4/10/2006 9:43:05 AM
User is offlineDorin Vasilescu
1366 posts
1st




Re: Probleme conceptuale
 (Romania)
SELECT nu foloseste datele din buffer. In VFP 9 poti folosi SELECT ... WITH (buffering = .t.) ... pentru aceasta.
PEntru versiuni anterioare as recomanda SUM ... TO ... dupa ce s-a salvat inregistrarea curenta. Dupa obtinerea totalurilor se da GOTO pentru restaurarea pointerului de inregistrare

 4/10/2006 11:15:56 AM
User is offlineclody
66 posts
www.friendsoftware.ro




Re: Probleme conceptuale
 (Romania)
 camsambora wrote
Salvarea unei singure tranzactii in doua tabele (ex. intrari si note contabile) va ridica imediat probleme de consistenta in BD. Ma refer la faptul ca se poate intimpla sa nu mai corespunda datele dintr-o tabela cu cele din cea de a doua tabela.
De aceea eu as merge pe sistemul cu o singura inregistrare, care sa contina si dateleaferente intrarii (produs, cantitate, pret) darsi cele aferente contarii.


.
Cu siguranta nu as proceda asa.
As incalca principiile normalizarii Si as pierde si din performanta. Consistenta este asigurata de legatura intre cele doua tabele prin intermediul cheilor "numar_document".
Datele trebuiesc grupate pe functionalitate.
Obisnuiesc sa consum la masa felul unul inaintea felului doi si apoi daca mai incape si un desert, si nicidecum toate mancarurile in aceeasi farfurie [EMO]bigsmile.gif[/EMO]

Cu stima,

Claudiu Farcas
 4/10/2006 11:57:35 AM
User is offlineanonymous
0 posts


Re: Probleme conceptuale
 (N/A)
Din punct de vedere teoretic, este foarte corect ceea ce spui. Practica insa m-a invatat altceva.

Si am sa dau si un exemplu. Cind dau 'Salvez' pe un aviz cu un singur produs, ma duc si fac adaugarea in tabela cu Intrari, dupa care trebuie sa generez cele doua note contabile (intrarea si TVA). Daca in acest moment imi pica conexiunea cu BD (se mai intimpla), avizul meu este "in aer".
Adica pepartea de stocuri vad intrarea, dar ea nu va aparea in notele contabile.

La situatii de genul acesta ma refeream.
 4/10/2006 11:58:19 AM
User is offlineDoru
160 posts
www.aquila.ro
5th




Re: Probleme conceptuale
 (N/A)

Poate ati vrut sa ziceti salvarea in aceeasi tranzactie a doua seturi de informatii diferite (factura si nota) nu este corect de facut.
Salvarea in doua tabele intr-o tranzactie este corecta, altfel nici nu concep salvarea unei facturi de exemplu - date generale factura si pozitii factura = 2 tabele.

Cit despre note contabile eu le generez la cerere dintr-un fornular separat, operatie care se executa cind doreste utilizatorul si poate fi cel putin odata pe luna sau de cite ori are nevoie.; nu generez impreuna cu salvarea facturii.; bineinteles se fac sumari - in cazul meu pe zile si jurnal - si se sterg notele deja generate, daca exista, si se inlocuiesc cu unele generate nou.


Cristian Tenea
Aquila
 4/10/2006 12:57:07 PM
User is offlineanonymous
0 posts


Re: Probleme conceptuale
 (N/A)
Generarea notelor contabile doar separat, la cererea utilizatorului, este o solutie comoda, careia insa eu ii gasesc citeva dezavantaje:
- daca BD este foarte mare (o firma cu citeva zeci de mii de tranzactii lunar) acest proces va dura destul de mult
- utilizatorii au "bunul" obicei de a mai uita sa dea unele optiuni si atunci va avea in liste date perimate
- in cazul lucrului on-line intervin probleme la generarea formulelor pentru documentele in curs de editare
 4/10/2006 1:03:55 PM
User is offlineclody
66 posts
www.friendsoftware.ro




Re: Probleme conceptuale
 (Romania)
 camsambora wrote
Generarea notelor contabile doar separat, la cererea utilizatorului, este o solutie comoda, careia insa eu ii gasesc citeva dezavantaje:
- daca BD este foarte mare (o firma cu citeva zeci de mii de tranzactii lunar) acest proces va dura destul de mult
- utilizatorii au "bunul" obicei de a mai uita sa dea unele optiuni si atunci va avea in liste date perimate
- in cazul lucrului on-line intervin probleme la generarea formulelor pentru documentele in curs de editare


inregistrarea sub o singura tranzactie e de la sine inteles.
Dar intradevar .. generarea notelor in regim batch este foarte obisnuita.. chiar si pentru sisteme ERP mai mari.. deci este o solutie cat se poate de viabila (luand in considerare experienta altora)
E adevarat ca poate dura mai multisor.. dar daca se ruleaza aces task zilnic sau regulat si sa se genereze numai noutatile sau modificarile acest detriment nu mai exista.
Utilizatorul poate fi avertizat cu privire la "actualitatea datelor" si de necesitatea reactualizarii.
Lucru online- tranzactii tranzactii tranzactii ..:)

Cu stima,

Claudiu Farcas
 4/11/2006 12:14:49 PM
User is offlineAlin Berce
371 posts
3rd




Re: Probleme conceptuale
 (Romania)
"Iar ca sa pastrezi legatura de consistenta si de cauzalitate, in tabela de note sa mai ai un camp numit "numar_intrare" si prin care sa se referentieze numarul documentului care l-a generat. (asa se realiza si stergerea lor in momentul inregistrarii si in plus ai intotdeauna o legatura intre document si nota contabila generata)"

Da, asa o sa fac, eu initial aveam in intrari un camp cu id_nota... insa totusi e mai bine sa fac direct legatura cu numarul de document. Cat despre generarea notelor contabile cred ca o sa o fac cand salvez documentul. Inca nu m-am gandit cum sa fac. Sa incerc ceva de genul:
Select intrari_detalii
scan
generez note
insumez daca e cazul
endscan
?

De-a lungul dezvoltatii acestei mici aplicatii probabil ca ma voi lovi de ceva probleme, asa ca v-as ruga sa mai imi oferiti parerile voastre cand va mai fi nevoie. Inca nu am rezolvat prima problema isa o sa mai sap sa vad. Am uitat sa spun ca folosesc VFP9 cu tabele locale.
O zi buna tuturor

VFP, C#, SQL Server 2005/2008
"Proud to be a ProFox member".
 4/12/2006 7:24:16 AM
User is offlineGrigore Dolghin
3590 posts
www.class-software.eu
1st






Re: Probleme conceptuale
 (Romania)

 Alin B. wrote
"Iar ca sa pastrezi legatura de consistenta si de cauzalitate, in tabela de note sa mai ai un camp numit "numar_intrare" si prin care sa se referentieze numarul documentului care l-a generat. (asa se realiza si stergerea lor in momentul inregistrarii si in plus ai intotdeauna o legatura intre document si nota contabila generata)"

Da, asa o sa fac, eu initial aveam in intrari un camp cu id_nota... insa totusi e mai bine sa fac direct legatura cu numarul de document. Cat despre generarea notelor contabile cred ca o sa o fac cand salvez documentul. Inca nu m-am gandit cum sa fac. Sa incerc ceva de genul:

Nu. Categoric nu. Relatiile intr-o baza de date se fac pe cheile primare si pe cheile externe, NU PE DATELE INTRODUSE DE USER. Ce faci daca numarul de document nu e unic? HA?


Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 4/12/2006 8:19:43 AM
User is offlineclody
66 posts
www.friendsoftware.ro




Re: Probleme conceptuale
 (Romania)
 Grigore Dolghin wrote

 Alin B. wrote
"Iar ca sa pastrezi legatura de consistenta si de cauzalitate, in tabela de note sa mai ai un camp numit "numar_intrare" si prin care sa se referentieze numarul documentului care l-a generat. (asa se realiza si stergerea lor in momentul inregistrarii si in plus ai intotdeauna o legatura intre document si nota contabila generata)"

Da, asa o sa fac, eu initial aveam in intrari un camp cu id_nota... insa totusi e mai bine sa fac direct legatura cu numarul de document. Cat despre generarea notelor contabile cred ca o sa o fac cand salvez documentul. Inca nu m-am gandit cum sa fac. Sa incerc ceva de genul:

Nu. Categoric nu. Relatiile intr-o baza de date se fac pe cheile primare si pe cheile externe, NU PE DATELE INTRODUSE DE USER. Ce faci daca numarul de document nu e unic? HA?



Categoric .. "numar_intrare"  se afla in ghilimele de rigoare chiar de la inceput .. acolo trebuie sa fie ID-ul documentului [EMO]wink.gif[/EMO]

Claudiu Farcas
 4/12/2006 8:37:33 AM
User is offlineAlin Berce
371 posts
3rd




Re: Probleme conceptuale
 (Romania)
Da!, Corect, asa am vrut si eu sa zic insa nu m-am exprimat bine. Nr_intrare sa fie ID-ul si nu numarul documentului. Categoric vor apare duplicate de numar document
Anyway, ieri tot 'bumbacind' pe generarea notelor contabile cu scan endscan si alte minuni (din care nici una nu mi-a iesit bine) eu am cam ajuns la urmatoarea solutie:
Ce-ar fi daca la partea de detalii a formului (intrari_detalii) as avea la grid ca record source un view parametrizat actualizabil? Parametrul sa fie numarul de document, astfel tot timpul in view as avea liniile aferente intrarii curente si nu ar mai trebui sa pun filtre sau selecturi pentru a aduce linile necesare generarii notelor contabile. Cum vi se pare ideea? Inca nu am inceput sa o pun in practica asa ca daca gresesc ar fi bine sa imi zica cineva pana nu e prea tarziu :) Ok, cat despre calcularea tva si valoarea totala m-am gandit sa nu o calculez in form ci sa pun niste trigere care sa o fac a ele. Merge asa? N-ar fi mai simplu si mai elegant?

O zi buna tuturor. Va multumesc tuturor pentru raspunsuri. Impreuna cu voi am o sansa sa duc la bun sfarsit acest proiect.

VFP, C#, SQL Server 2005/2008
"Proud to be a ProFox member".
 4/14/2006 1:52:53 PM
User is offlineAlin Berce
371 posts
3rd




Re: Probleme conceptuale
 (Romania)
Am realizat o metoda de calculare a tva, valoare si total pentru intrari_detalii in felul urmator: am in Edit Stored Procedures la baza de date o procedura in care am ceva de genul:
procedure calc_valori
replace intrari_detalii.tva cu ....
replace intrari_detalii.valoare...
replace intrari_detalii.total=intrari_detalii.tva+intrari_Detalii.valoare
return .t.
endproc

Si la campurile cantitate,tva,valoare din view am pus la Receord validation la Rule: calc_valori()
Si daca adaug o linie manual imi face calculele. Am procedat corect? Sau mai tarziu o sa am batai de cap daca merg pe calea asta?

VFP, C#, SQL Server 2005/2008
"Proud to be a ProFox member".
  Visual FoxPro  Visual FoxPro in general  Probleme concep...

Search  Forum Home         

 Google Ads Minimize

    

Copyright 2002-2010 Profox   Terms Of Use  Privacy Statement