De ce nu pregătiți un lăutăr un jsbin ?

person Hassnain    schedule 14.05.2015    source sursă
comment

OK, am întârziat puțin la petrecere, dar există câteva răspunsuri interesante aici și m-am gândit că ar trebui să adaug opinia mea.

Pentru a răspunde la întrebarea: ar trebui să stocați valorile ca sume pozitive și să semnalați ca debit sau credit?

Răspunsul scurt: nu trebuie să adăugați steag, deoarece orice sistem aplică automat steag-ul „debit” sau „credit” atunci când salvați numărul în forma corectă semnată. Este semnul „-”. Ar trebui să stocați valorile într-una dintre cele două coloane, debit sau credit, în schimb? Cu siguranta nu ! De ce să salvați un câmp gol la fiecare tranzacție din sistem? O singură coloană cu valoarea semnată corectă este mult mai ușor de gestionat.

Răspunsul mai lung la titlul întrebării: Contabilitate și proiectare baze de date, stocarea sumei de debit și credit.

Este perfect simplu și robust, atâta timp cât înțelegeți ținerea contabilă în partidă dublă. Când înregistrați un jurnal în registrul nominal, oferiți utilizatorului un câmp de debit și un câmp de credit pentru fiecare rând din jurnal. În aplicația dvs. permiteți doar unuia dintre câmpuri să aibă o valoare (pe linie) și trebuie să fie o valoare pozitivă, fără semn. Când scrieți tranzacția, dacă aveți un debit, o scrieți așa cum este. Dacă aveți o valoare în câmpul de credit, o inversați și o scrieți ca număr negativ. Baza de date vede doar o singură valoare cu semn într-o singură coloană, pe linie (înregistrare). După cum orice contabil vă va spune, o înregistrare în jurnal trebuie să se echilibreze, astfel încât înregistrările din baza de date pentru liniile de tranzacție din jurnal să se adauge până la zero. Codul aplicației trebuie să asigure că un jurnal trebuie să fie echilibrat.

Acum luați în considerare o factură de achiziție pe care utilizatorul o adaugă în sistem. Să presupunem că avem această factură (puțin probabilă) pentru Compania Widget:

500 GBP pentru bară de oțel

100 GBP pentru o cutie de plicuri

£10000 pentru un strung

taxa de achiziție de 2120 GBP

Factură totală de 12720 GBP

Aplicația scrie o singură înregistrare în tabelul de documente. Are linkuri unu-la-mai multe către tabelul de tranzacții. Pentru factura pe trei rânduri, aplicația scrie 5 rânduri de tranzacție.

500 GBP asociate costului vânzărilor, un cont contabil general de cont. Sold debitor = cheltuială când se află în cont

100 GBP conectat la Stationery, un cont contabil general. Sold debitor = cheltuială când se află în cont

10.000 GBP legate de Machinery, un cont contabil general al bilanțului. Sold debitor = activ când se află în bs.

2120 GBP conectat la Input Tax Reclaimable, un cont bs gl. Sold debitor = activ, ni se datorează bani de către fiscal

-12720 GBP conectat la Creditors Control, un cont bs gl. Sold credit = răspundere, datorăm acest lucru furnizorului

valoare totală de 0,00 GBP a 5 înregistrări scrise în tabelul de tranzacții.

Acum luați în considerare o factură de vânzare pe care utilizatorul o adaugă:

250 GBP pentru widget-uri premium

250 GBP pentru widget-uri standard

100 GBP taxă de vânzare

Factură totală de 600 GBP

Din nou, o singură înregistrare este scrisă în tabelul de documente. Pentru factura pe două rânduri sunt scrise 4 rânduri de tranzacție. Deoarece aceasta este o factură de vânzare, aplicația trebuie să inverseze valorile din culise. Liniile de factură de vânzări sunt credite contabile, dar utilizatorul nu se așteaptă să fie nevoit să le adauge ca valori negative.

250 GBP - conectat la Premium Widget Sales, un cont p&l gl. Sold credit = venit/profit când se află în contul de profit

250 GBP - conectat la vânzările de widgeturi standard, un cont p&l gl. Sold credit = venit/profit când se află în contul de profit

100 GBP - conectat la Output Tax Payable, un cont bs gl. Sold credit = pasiv atunci când se află în BS. Îi datorăm acești bani fiscalului.

600 GBP conectat la Debtors Control, un cont bs gl. Sold debitor = activ, acest lucru ne este dator de client.

valoare totală de 0,00 GBP a 4 înregistrări scrise în tabelul de tranzacții.

Este perfect ok să adaugi linii negative la factura de vânzare dacă vrei să dai credit pentru ceva returnat. Ele sunt inversate cu toate celelalte rânduri înainte de a scrie tranzacțiile. Mai de obicei, ați emite o notă de credit, care ar avea liniile scrise ca debite la veniturile din vânzări, reducând valoarea vânzărilor în cont.

Dacă sistemul efectuează controlul stocurilor, cantitățile sunt scrise în liniile de tranzacție și sunt legate de tabelul Produs.

Înregistrările bancare îi prinde adesea pe deținătorii care nu sunt contabili. Se spune că am pus bani în banca noastră, așa că am creditat contul. Gândiți-vă la bancă ca la o persoană externă afacerii. Când predați banii pentru păstrare în siguranță, el/ea devine debitor și trebuie să vă predea banii înapoi la cerere. Deci, încasările în bancă sunt înregistrate ca debite, iar plățile sunt înregistrate ca credite. Când primim plata de la client, scriem două rânduri de tranzacție:

600 GBP conectat la un cont bancar, un cont bs gl. Sold debitor = crește valoarea activului, avem mai mulți bani.

600 GBP - conectat la Debtors Control, un cont bs gl. Sold credit = reduce valoarea activului, ni se datorează mai puțini bani.

0,00 GBP valoare totală a 2 înregistrări scrise în tabelul de tranzacții.

Dacă urmați acest lucru, veți vedea că Debtors Control are 600 de lire sterline înscrise atunci când este ridicată factura de vânzare și 600 de lire sterline înscrise în el când este primită plata. Sold net = 0,00 GBP, ceea ce datorează acum clientul nostru.

Deci, cu designul, relațiile și indexurile potrivite, toată raportarea se face din combinația de documente și tranzacții.

Si asta e. De fiecare dată când însumați tabelul de tranzacții, acesta ar trebui să returneze întotdeauna zero. Nu este nevoie să mențineți două coloane. Aplicația trebuie să facă două lucruri, trebuie să fie codificată astfel încât să aplice semnarea corectă diferitelor tipuri de tranzacții și trebuie să prezinte tranzacția într-una din două coloane, în funcție de faptul că este >0 sau ‹0. Astfel, puteți avea soldul de verificare, registrele clienților și furnizorilor, conturile bancare și de numerar și registrul general, toate frumos formatate în coloane de debit și credit.

Construirea unui sistem în care ambele părți ale intrării duble sunt înregistrate într-o singură tranzacție este atrăgătoare. Dacă o singură tranzacție eșuează, aceasta nu dezechilibrează conturile. Ai mai avea o singură coloană pentru valoare, semnată. Veți înregistra două chei străine gl pentru fiecare tranzacție, una pentru valoarea a ceea ce ați înregistrat, care ar putea fi o valoare pozitivă sau negativă pentru a reprezenta debit sau credit și o altă cheie străină gl pentru a înregistra contul pe care îl înregistrați. valoare opusă („intrare dublă”) la. De asemenea, ar putea fi necesar să înregistrați gl fk și pentru două conturi de control fiscal, unul pentru contul de control al taxei de ieșire și unul pentru contul de control al impozitului pe intrare. Prin urmare, s-ar putea să vă conectați linia de tranzacție la patru conturi gl în loc de doar unul (plus linkurile pentru tabelele client, furnizor și produse care se aplică ambelor metode). Conturile de control ar avea un volum foarte mare de tranzacții legate de acestea. O factură de 10 rânduri ar avea 10 tranzacții legate de ea în loc de doar una pe document. Ar trebui să calculați elementul fiscal pentru fiecare linie de factură în mod individual, nu ca total pentru document (puteți face acest lucru oricum). În cele din urmă, ar trebui să aveți un aranjament special pentru un document de înregistrare în jurnal, care ar putea include 10 linii ca debite, toate compensate cu o singură linie ca credit, astfel încât abordarea cu o singură tranzacție nu funcționează aici.

  -  person Yurets    schedule 14.05.2015