Międzynarodowy Bank Pollinu: wersja demonstracyjna 🤑
: 18 lis 2022, 1:25
Ciekawość mnie zżera, jak zamieniacie kwotę przelewu na słowną wartość?
Różne rzeczy człowiek widział, więc ciekawi mnie to. :D
Hic habitat felicitas
https://forum.leocja.org/
Znalazłem paskudnego gotowca w Internecie, do którego dodałem swoją cegiełkę z rodzajami gramatycznymi:Sheldon Anszlus Lovelace pisze: ↑18 lis 2022, 1:25Ciekawość mnie zżera, jak zamieniacie kwotę przelewu na słowną wartość?
Kod: Zaznacz cały
function policz($l,$t1,$t2,$t3,$rodzaj) {
$j = array("", "jeden ", "dwa ", "trzy ", "cztery ", "pięć ", "sześć ",
"siedem ", "osiem ", "dziewięć ", "dziesięć ", "jedenaście ",
"dwanaście ", "trzynaście ", "czternaście ", "piętnaście ",
"szesnaście ", "siedemnaście ", "osiemnaście ", "dziewiętnaście ");
$j2 = array("", "jedna ", "dwie ", "trzy ", "cztery ", "pięć ", "sześć ",
"siedem ", "osiem ", "dziewięć ", "dziesięć ", "jedenaście ",
"dwanaście ", "trzynaście ", "czternaście ", "piętnaście ",
"szesnaście ", "siedemnaście ", "osiemnaście ", "dziewiętnaście ");
$j3 = array("", "jedno ", "dwa ", "trzy ", "cztery ", "pięć ", "sześć ",
"siedem ", "osiem ", "dziewięć ", "dziesięć ", "jedenaście ",
"dwanaście ", "trzynaście ", "czternaście ", "piętnaście ",
"szesnaście ", "siedemnaście ", "osiemnaście ", "dziewiętnaście ");
if($rodzaj == 2) { $j = $j2; }
if($rodzaj == 3) { $j = $j3; }
$d = array("", "", "dwadzieścia ", "trzydzieści ", "czterdzieści ",
"pięćdziesiąt ", "sześćdziesiąt ", "siedemdziesiąt ",
"osiemdziesiąt ", "dziewięćdziesiąt ");
$s = array("","sto ", "dwieście ", "trzysta ", "czterysta ", "pięćset ",
"sześćset ", "siedemset ", "osiemset ", "dziewięćset ");
$txt = $s[0+substr($l,0,1)];
if (substr($l,1,2)<20) $txt .= $j[0+substr($l,1,2)];
else $txt .= $d[0+substr($l, 1,1)].$j[0+substr($l, 2,1)];
if ($l==1) $txt .= "$t1 "; else {
if ((substr($l,2,1)==2 or substr($l,2,1)==3 or substr($l,2,1)==4)
and (substr($l,1,2)>20 or substr($l,1,2)<10))
$txt .= "$t2 "; else $txt .= "$t3 ";
}
return $txt;
}
function slownie($liczba, $waluta_slownie) {
$waluta_slownie = json_decode($waluta_slownie, true);
if($waluta_slownie[6] == 2) $rodzaj_podstawy = 2;
if($waluta_slownie[6] == 3) $rodzaj_podstawy = 3;
if($waluta_slownie[7] == 2) $rodzaj_czesci = 2;
if($waluta_slownie[7] == 3) $rodzaj_czesci = 3;
$liczba = str_replace(",", ".", $liczba);
$liczba = number_format($liczba, 2, ",", "");
$kwota=explode(",", $liczba);
$kwotazl=sprintf("%012d",$kwota[0]);
$kwotagr=sprintf("%03d",$kwota[1]);
if ($kwotazl>999999999) $txt .= policz(substr($kwotazl, 0,3),"miliard","miliardy","miliardów",$rodzaj_podstawy);
if ($kwotazl>999999) $txt .= policz(substr($kwotazl, 3,3),"milion","miliony","milionów",$rodzaj_podstawy);
if ($kwotazl>999) $txt .= policz(substr($kwotazl, 6,3),"tysiąc","tysiące","tysięcy",$rodzaj_podstawy);
if ($kwotazl>0) $txt .= policz(substr($kwotazl, 9,3),$waluta_slownie[0],$waluta_slownie[1],$waluta_slownie[2],$rodzaj_podstawy);
if ($kwotazl==0) $txt="zero ".$waluta_slownie[2];
$txt .= " i ";
if($kwotagr!=='000')
{
$txt .= policz($kwotagr,$waluta_slownie[3],$waluta_slownie[4],$waluta_slownie[5],$rodzaj_czesci);
}
if ($kwotagr==0) $txt .= "zero ".$waluta_slownie[5];
return $txt;
}Kod: Zaznacz cały
["korona","korony","koron","rubel","ruble","rubli",2,1]
["lir","liry","lirów","centesimo","centesimy","centesimów",1,3]
W momencie, w którym trzeba byłoby umieścić dwa zapisy słowne, okazał się to niefortunny pomysł. 😜
Tak naprawdę liczyłem, że może jakoś numberFormatera ogrnales, żeby odmieniał polskie na jedna/jedenHelwetyk Romański pisze: ↑18 lis 2022, 9:24Znalazłem paskudnego gotowca w Internecie, do którego dodałem swoją cegiełkę z rodzajami gramatycznymi:Sheldon Anszlus Lovelace pisze: ↑18 lis 2022, 1:25Ciekawość mnie zżera, jak zamieniacie kwotę przelewu na słowną wartość?
Przykładowy JSON:Kod: Zaznacz cały
function policz($l,$t1,$t2,$t3,$rodzaj) { $j = array("", "jeden ", "dwa ", "trzy ", "cztery ", "pięć ", "sześć ", "siedem ", "osiem ", "dziewięć ", "dziesięć ", "jedenaście ", "dwanaście ", "trzynaście ", "czternaście ", "piętnaście ", "szesnaście ", "siedemnaście ", "osiemnaście ", "dziewiętnaście "); $j2 = array("", "jedna ", "dwie ", "trzy ", "cztery ", "pięć ", "sześć ", "siedem ", "osiem ", "dziewięć ", "dziesięć ", "jedenaście ", "dwanaście ", "trzynaście ", "czternaście ", "piętnaście ", "szesnaście ", "siedemnaście ", "osiemnaście ", "dziewiętnaście "); $j3 = array("", "jedno ", "dwa ", "trzy ", "cztery ", "pięć ", "sześć ", "siedem ", "osiem ", "dziewięć ", "dziesięć ", "jedenaście ", "dwanaście ", "trzynaście ", "czternaście ", "piętnaście ", "szesnaście ", "siedemnaście ", "osiemnaście ", "dziewiętnaście "); if($rodzaj == 2) { $j = $j2; } if($rodzaj == 3) { $j = $j3; } $d = array("", "", "dwadzieścia ", "trzydzieści ", "czterdzieści ", "pięćdziesiąt ", "sześćdziesiąt ", "siedemdziesiąt ", "osiemdziesiąt ", "dziewięćdziesiąt "); $s = array("","sto ", "dwieście ", "trzysta ", "czterysta ", "pięćset ", "sześćset ", "siedemset ", "osiemset ", "dziewięćset "); $txt = $s[0+substr($l,0,1)]; if (substr($l,1,2)<20) $txt .= $j[0+substr($l,1,2)]; else $txt .= $d[0+substr($l, 1,1)].$j[0+substr($l, 2,1)]; if ($l==1) $txt .= "$t1 "; else { if ((substr($l,2,1)==2 or substr($l,2,1)==3 or substr($l,2,1)==4) and (substr($l,1,2)>20 or substr($l,1,2)<10)) $txt .= "$t2 "; else $txt .= "$t3 "; } return $txt; } function slownie($liczba, $waluta_slownie) { $waluta_slownie = json_decode($waluta_slownie, true); if($waluta_slownie[6] == 2) $rodzaj_podstawy = 2; if($waluta_slownie[6] == 3) $rodzaj_podstawy = 3; if($waluta_slownie[7] == 2) $rodzaj_czesci = 2; if($waluta_slownie[7] == 3) $rodzaj_czesci = 3; $liczba = str_replace(",", ".", $liczba); $liczba = number_format($liczba, 2, ",", ""); $kwota=explode(",", $liczba); $kwotazl=sprintf("%012d",$kwota[0]); $kwotagr=sprintf("%03d",$kwota[1]); if ($kwotazl>999999999) $txt .= policz(substr($kwotazl, 0,3),"miliard","miliardy","miliardów",$rodzaj_podstawy); if ($kwotazl>999999) $txt .= policz(substr($kwotazl, 3,3),"milion","miliony","milionów",$rodzaj_podstawy); if ($kwotazl>999) $txt .= policz(substr($kwotazl, 6,3),"tysiąc","tysiące","tysięcy",$rodzaj_podstawy); if ($kwotazl>0) $txt .= policz(substr($kwotazl, 9,3),$waluta_slownie[0],$waluta_slownie[1],$waluta_slownie[2],$rodzaj_podstawy); if ($kwotazl==0) $txt="zero ".$waluta_slownie[2]; $txt .= " i "; if($kwotagr!=='000') { $txt .= policz($kwotagr,$waluta_slownie[3],$waluta_slownie[4],$waluta_slownie[5],$rodzaj_czesci); } if ($kwotagr==0) $txt .= "zero ".$waluta_slownie[5]; return $txt; }
Korzystając z okazji, dziękuję uprzejmie. Jak się okazuje, w MBP można było otrzymać przelew wartości 0,00 ♇, trzeba się było tylko postarać. 🤣Kod: Zaznacz cały
["korona","korony","koron","rubel","ruble","rubli",2,1] ["lir","liry","lirów","centesimo","centesimy","centesimów",1,3]
W momencie, w którym trzeba byłoby umieścić dwa zapisy słowne, okazał się to niefortunny pomysł. 😜
Kod: Zaznacz cały
$numberFormater = new NumberFormatter("pl", NumberFormatter::SPELLOUT);
echo $numberFormater->format(10204738571);
Takie eleganckie rozwiązanie byłoby dobre, gdyby nie nazwy walut. Do deklinacji mam, co prawda, osobną funkcję w innych systemach, jeszcze autorstwa Jaśnie Oświeconego diuka Kwaziego:Sheldon Anszlus Lovelace pisze: ↑18 lis 2022, 10:34Tak naprawdę liczyłem, że może jakoś numberFormatera ogrnales, żeby odmieniał polskie na jedna/jedenKod: Zaznacz cały
$numberFormater = new NumberFormatter("pl", NumberFormatter::SPELLOUT); echo $numberFormater->format(10204738571);
Kod: Zaznacz cały
function Declension($number, $one, $two_four, $five_or_more)
{
if ($number == 1) return $one;
$jedn = $number%10;
$dzies = $number%100 - $jedn;
if ($dzies != 10 && $jedn > 1 && $jedn < 5) return $two_four;
return $five_or_more;
}Najzupełniej. Przy czym — państwo powinno zapewnić możliwość wymiany środków z Systemu Skarbowego/Banku Książęcego na środki w MBP oraz środków z MBP na środki w Systemie Skarbowym/Banku Książęcym.Samuel Radziwiłł pisze: ↑18 lis 2022, 18:44Mam nadzieję, że piszę we właściwym wątku. Dyskusja o przystąpieniu RON do MBP utknęła bez podjęcia konkretnej decyzji. Z owej dyskusji wynikło, że chcemy pozostawić naszą forumową formę bankowości, ale wejść do MBP, by mieć możliwości takie jak np. wypłaty nagród za Turniej Rycerski czy inne podobne ewenty. Czy jest tak może być?
Mocno trzymam kciuki za pomyślne dołączenie RON do MBP. 🤞🏻Samuel Radziwiłł pisze: ↑18 lis 2022, 21:15Teraz tylko czekać na jakikolwiek odzew, bo po cichu liczę, że posiadając majątek w RON, będę mógł go wykorzystać np. w MAW lub innej mikronacji.
Bo to jest MAWrtwa, a co najmniej nieRMAWa (he, he) mikronacja.Helwetyk Romański pisze: ↑19 lis 2022, 12:39Jeżeli jednak chodzi o MAW, temat się zupełnie nie przyjął, więc…