Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> KwotaSlownie.pl - Zamiana kwoty na postać słowną, Oficjalna strona biblioteki służącej do zamiany kwoty na postać słowną
Reptile ReX
post
Post #1





Grupa: Zarejestrowani
Postów: 119
Pomógł: 0
Dołączył: 19.01.2008

Ostrzeżenie: (0%)
-----


Biblioteka Kwota Słownie
Kwota słownie jest projektem wciąż rozwijanej biblioteki napisanej w języku PHP 5 służącej do konwertowania kwoty z postaci liczbowej na postać słowną, uwzględniając poprawność językową oraz prawidłową odmianę w języku polskim.

Biblioteka dzięki swojej uniwersalności sama dostosowuje się pod użytkowników, użytkownik może sam zdecydować jaką walutę chcę wyświetlać, oraz w jakim formacie prezentować kwotę zdawkową czyli np. grosze ? czy w postaci słownej tak jak kwota podstawowa, czy być może jako liczba w postaci: 10/100, 20/100 itd.

Jeżeli szukasz rozwiązania dla swojej firmy lub jesteś programistą, który poszukuję rozwiązania, które pozwoli na wyświetlanie na fakturach kwoty słownej, to dobrze trafiłeś, nie czekaj ani chwili dłużej.

Do pobrania oraz więcej informacji na:
http://www.kwotaslownie.pl

Ten post edytował Daiquiri 15.08.2012, 18:28:38
Powód edycji: [Daiquiri]: Nie przesadzajmy z rozmiarem czcionki
Go to the top of the page
+Quote Post
jwest
post
Post #2





Grupa: Zarejestrowani
Postów: 27
Pomógł: 1
Dołączył: 12.08.2008
Skąd: Toruń

Ostrzeżenie: (0%)
-----


Uważam, że jest to nieźle napisany skrypt, ale myślę, że trochę przeceniasz jego właściwości wink.gif Wrzuć go na github-a i zunifikuj działanie najlepiej również dla różnych języków. A jeżeli faktycznie chcesz zrobić coś innego, to może zamknij źródła (czego nie jestem zwolennikiem!) i zrób webservice np. w SOAP, JSON i udostępnij programistom sam interfejs wejścia/wyjścia.


--------------------
portfolio: JWest.pl
microCMS: MicroCMS.jwest.pl
Go to the top of the page
+Quote Post
vokiel
post
Post #3





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

Ostrzeżenie: (0%)
-----


Bardzo w porządku, czytelnie, schludnie, ok. Pewnie poza pochwałami chcesz też usłyszeć co można by poprawić. Chociaż, może nie chcesz, ale i tak napiszę ;-)

  1. Switch-case zamiast rozbudowanych bloków if-elseif
  2. Wersja chyba nie powinna być możliwa do edycji?
  3. Phpdoc - nagłówkiem każdej metody jest: 'Metoda nazwa();', co nie dość, że jest niepotrzebne to jeszcze przy tym trochę utrudnia. Po pierwsze, komentarz jest do danej metody - czyli jej nazwę już znamy, po drugie pierwsza linia podpowiedzi, która jest najważniejsza zawiera nazwę metody, która przy pisaniu kodu nie jest nam potrzebna. Często też IDE przy zwinięciu bloku komentarza pokazują pierwszy jego wiersz, wtedy tutaj mamy 2 razy to samo.
  4. Rozdzielanie bloków komentarzem //-------, aż tak to zwiększa czytelność?
  5. Niepotrzebne zwracanie 'return true;' w miejscach gdzie nie ma to kompletnie znaczenia. Także w przypadkach, gdzie metoda nie ma możliwości zwrócenia innego wyniku (false lub wartości).


--------------------
Go to the top of the page
+Quote Post
Pawel_W
post
Post #4





Grupa: Zarejestrowani
Postów: 1 675
Pomógł: 286
Dołączył: 15.06.2009
Skąd: Wieliczka

Ostrzeżenie: (0%)
-----


niektóre fragmenty można by było krócej napisać, np.
  1. $iPrice = number_format($iPrice, 2, '.', '');
  2. if($iPrice >= 1000000000000 || $iPrice <= -1000000000000){
  3. return '';
  4. }
  5. if($iPrice < 0){
  6. $this->aOutput[] = 'minus';
  7. $iPrice = $iPrice*-1;
  8. $iPrice = number_format($iPrice, 2, '.', '');
  9. }

zamienić na
  1. if($iPrice < 0){
  2. $this->aOutput[] = 'minus';
  3. $iPrice = $iPrice*-1;
  4. }
  5. $iPrice = number_format($iPrice, 2, '.', '');
  6. if($iPrice >= 1000000000000){
  7. return '';
  8. }

smile.gif
Go to the top of the page
+Quote Post
darko
post
Post #5





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Zakładając, że skrypt poprawnie konwertuje wszystkie liczby (nie testowałem) to kilka kwestii można byłoby poprawić:
- settery (setCasualMode i setCurrency) mogłyby / powinny działać na zasadzie chaining'u (set coś_tam return $this)
- rozumiem, że stosujesz hermetyzację, ale metod prywatnych nie można nadpisać, lepiej byłoby ustawić im modyfikator dostępu na protected
- dopracuj stosowanie się do reguł phpDoc (krócej i po angielsku, bardziej konkretnie zamiast pełnego wypracowania przed każdą metodą)
- nie mieszaj nazw zmiennych angielskich z polskimi, najlepiej używać tylko angielskiego
- jest taka niepisana zasada, że nazwy pól prywatnych zaczynają się od znaku podkreślenia
- rozumiem, że Twój algorytm pracuje na liczbach z zakresu od -1000000000000 do 1000000000000 - nic nie wspominasz o tym ograniczeniu w komentarzu do metody, pewnie info znajdę w dokumentacji
I na koniec muszę pochwalić, podkreślam, że nie testowałem poprawności konwersji, że ktoś wreszcie uporządkował i napisał fajne narzędzie. Myślę, że przyda się.


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
!*!
post
Post #6





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

Ostrzeżenie: (0%)
-----


Cytat(na wejściu)
2.000 lub 2,000


Cytat(wynik)
Podana kwota, wyrażona słownie to: dwa złote zero groszy


coś chyba nie tak.

Cytat
Podana przez Ciebie opcja/wartość jest nieprawidłowa, lub wartość wykracza poza maksimum !


Ten post edytował !*! 16.08.2012, 07:24:09


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
Posio
post
Post #7





Grupa: Zarejestrowani
Postów: 417
Pomógł: 44
Dołączył: 23.06.2011

Ostrzeżenie: (0%)
-----


Przetestowane, bardzo mi pomogło. Jeśli chodzi o ogólną ocenę to po prostu CHODZI DOBRZE smile.gif
Go to the top of the page
+Quote Post
reptilerex
post
Post #8





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 25.03.2011

Ostrzeżenie: (10%)
X----


@!*!

Odpowiedź:
Kwota: 2,000
To dwa złote z trzema miejscami po przecinku.
Kwotę należy podać w normalnej notacji czyli przykładowo: 2000.00.

W programowaniu operujemy na takich formatach liczb, a nie z liczbą z number_format z thousand separatorem.
Te drugie uzywamy do prezentacji wink.gif


Co do zmian to w nastepnej wersji dodam:
* Method chaining
* Zmienię modyfikatory dostępu metod prywatnych na protected.
* Dodam "_" w nazwach właściwości prywatnych

Dzięki za te podpowiedzi.
A co do switchów to kiedyś przeczytałem (http://www.phpbench.com), że konstrukcja if / elseif jest "mikro minimalnie" szybsza niż switch / case, dlatego jej używam częściej, taki mój celowy zabieg wink.gif

Co do moich komentarzy to po prostu tak piszę i raczej się nie oduczę.
Wolę mieć też dłuższy komentarz, bo z mojego doświadczenia wiem, że bardzo łatwo można zapomnieć jak funkcjonuje dany mechanizm
Komenatrze pomagają mi się w tym odnaleźć i nie zamierzam zmieniać ich stylu pisania, aczkolwiek dzieki za rady smile.gif

Ten post edytował reptilerex 17.08.2012, 14:29:33
Go to the top of the page
+Quote Post
darko
post
Post #9





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Cytat(reptilerex @ 17.08.2012, 15:05:44 ) *
@!*!

Odpowiedź:
Kwota: 2,000
To dwa złote z trzema miejscami po przecinku.
Kwotę należy podać w normalnej notacji czyli przykładowo: 2000.00.

W programowaniu operujemy na takich formatach liczb, a nie z liczbą z number_format z thousand separatorem.
Te drugie uzywamy do prezentacji wink.gif

~Reptile ReX - jest Was dwóch czy po prostu masz multikonto i wpadłeś? snitch.gif


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
reptilerex
post
Post #10





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 25.03.2011

Ostrzeżenie: (10%)
X----


"Jest mnie jeden".

Kiedyś był (nie wiem czy jest nadal) quiz na php.pl
Chciałem go rozwiązać ponownie, aby zobaczyć jakie są inne pytania i zarejestrowałem wtedy drugie konto.
I teraz mi się ciągle mylą, jeżeli konieczne jest posiadanie tylko jednego to chciałbym zachować to pierwsze "Reptile ReX" ;D

Ten post edytował reptilerex 17.08.2012, 14:35:16
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 09:07