Psst.. new poll here.
Psst.. new forums here.
Microsoft is blocking us again (TY IP Reputation!) so just use oauth login instead. :)
Paste
Pasted as PHP by ddas2 ( 17 years ago )
<?php
include ('naglowek.php');
?>
<html>
<head>
</head>
<body>
<script type="text/javascript"><!--
function zat(formularz){
formularz.submit();
}//--></script>
<?php
$item_action = $_GET['action'];
$item_id = $_GET['id'];
$am_step = $_POST['am2'];
// Wyszukuje przedmiot w bazie i na tej podstawie zostaje wybrana opcja
echo 'Został wybrany następujący środek trwały : <br />';
$zapytanie = "SELECT DISTINCT * from pomoc AS t1, srodki as t2, amortyzacja as t3 where t1.id = ".$item_id." and t2.id =".$item_id." and t3.id =".$item_id;
$wynik = mysql_query($zapytanie) or die ('błąd: ' . mysql_error());
//$rekord = mysql_fetch_assoc($wynik);
echo('<table border="1" cellpadding="2" cellspacing="1">
<tr>
<th>Nazwa</th>
<th>Numer Inwentarzowy</th>
<th>Data zakupu</th>
<th>Dowod zakupu</th>
<th>KRST</th>
<th>Cena zakupu</th>
<th>Umorzono</th>
<th>Metoda</th>
</tr>');
while($rekord = mysql_fetch_assoc($wynik))
{
switch($rekord['id_amor'])
{
case '1':
$metoda_tabela = "Jednorazowa";
break;
case '2':
$metoda_tabela = "Liniowa";
break;
case '3':
$metoda_tabela = "Degresywna";
break;
default:
$metoda_tabela = "Brak";
}
$rekordd = $rekord; // Zapisanie rodzaju amortyzacji do zmiennej nim tablica zostanie wyczyszczona
echo "<tr style="background-color: #eaeaea;">";
echo "<td>" . $rekord['nazwa'] . "</td><td>" . $rekord['ninw'] . "</td><td>" . $rekord['dataz'] . "</td><td>" . $rekord['dowodz'] . "</td><td>" . $rekord['kst'] . "</td><td>" . $rekord['cenaz'] ."</td><td>"."<font color=#FF0000>". $rekord['um'] ."</td><td>". $metoda_tabela ."</td>"; }
echo "</tr>
";
echo ('</table>');
if(!$am_step)
{
$am_step = $rekordd[id_amor];
}
//switch($rekordd[id_amor])
switch($am_step)
{
// Przypadek "0" - Wystepuje wtedy gdy nie została okreslona metoda amortyzacji dlatego skrypt generuje formularz do wypełnienia potrzebnych danych i wybrania konkretnej metody.
case '0':
echo "<br />";
if(!$_GET['id_amor'])
{
echo ('<form action="" method="GET">
<input type="hidden" name="id" value="'.$item_id.'"/>
<select name="id_amor" type="button" selected="selected">
<option value="1" onclick="zat(this.form);return false;">Jednorazowa</option>
<option value="2" onclick="zat(this.form);return false;">Liniowa</option>
<option value="3" onclick="zat(this.form);return false;">Degresywna</option>
</select>
</form>');
}
//Teraz zaleznie od rodzialu wybranej opcji beda generowane odpowiednie pola.
switch($_GET['id_amor'])
{
//Jednorazowa
case '1':
echo "Środek trwał zostanie umorzony o następująca kwotę: 3 500 zł <br />";
echo ('<form action="" method=post><table border=0>
<input type="hidden" name="method" value="'.$_GET['id_amor'].'"/>
<input type="hidden" name="am2" value="yes"/>
<input type="hidden" name="id" value="'.$item_id.'"/>
<tr><td colspan="2"><input type="submit" value="OK" ></td></tr>
</table></form>');
break;
//Liniowa -
// Cena zakupu/Cena nabycia - Wp
// Wpisywanie reczne - ew wbudowane
// Wybor czy jest to miesieczna/kwartalna/roczna
//
case '2':
echo "Wybrano Metode Liniowa - dokonaj konfiguracji <br /><br />";
echo ('<form action="" method=post><table border=0>
<input type="hidden" name="method" value="'.$_GET['id_amor'].'"/>
<input type="hidden" name="am2" value="yes"/>
<input type="hidden" name="id" value="'.$item_id.'"/>
<tr>
<td>Stopa</td>
<td align="center"><input type="text" name="stawka" size="10"></td>
</tr>
<tr>
<td>Okres</td>
<td align="center"><select name="czesto">
<option value="12">Miesiecznie</option>
<option value="4">Kwartalnie</option>
<option value="1">Rocznie</option>
</select></td></tr>
</select>
<tr><td colspan="2"><input type="submit" value="OK" ></td></tr>
</table></form>');
break;
//Degresywna
// Wp
// stawka reczna
// wsp.degresji
case '3':
echo "Wybrano Metode Degresywna - dokonaj konfiguracji <br /><br />";
echo ('<form action="" method=post><table border=0>
<input type="hidden" name="method" value="'.$_GET['id_amor'].'"/>
<input type="hidden" name="id" value="'.$item_id.'"/>
<input type="hidden" name="am2" value="yes"/>
<tr>
<td>Stopa</td>
<td align="center"><input type="text" name="stawka" size="10"></td>
</tr>
<tr>
<td>Wspolczynnik degresji</td>
<td align="center"><input type="text" name="wspd" size="10"></td>
</tr>
<tr>
<td>Okres</td>
<td align="center"><select name="czesto">
<option value="12">Miesiecznie</option>
<option value="4">Kwartalnie</option>
<option value="1">Rocznie</option>
</select></td></tr>
</select>
<tr><td colspan="2"><input type="submit" value="OK" ></td></tr>
</table></form>');
break;
}
break;
case 'yes':
$pmetoda=$_POST['method']; // Jednorazowa/Liniowa/Degresywna
$przedmiot=$_POST['id']; // numer przedmiotu
$czesto=$_POST['czesto']; // Jak czesto beda robione odpisy amortyzacyjne
$stawka=$_POST['stawka']; // stawka amortyzacyjna
$wspd=$_POST['wspd']; // wsp Degresji
echo 'Oto Wynik amortyzacji: <br />';
$stawka = $stawka/100; // Dzielimy przez 100 aby uzyskac procent
unset($_SESSION['tab']);
//Funkcja do pokazywania amortyzacji
if($pmetoda == 1)
{
echo "Jednorazowa";
$result = wyliczam($stawka, $wspd, $rekordd['cenaz'], $czesto, 0, 1);
}
else
$result = wyliczam($stawka, $wspd, $rekordd['cenaz'], $czesto);
// Jezeli niema wspolczynika degresji to zapisywany jest do talicy jako 0;
if(!isset($wspd))
{
$wspd = 0;
}
$tablica_amortyzacji = array("metoda" => $pmetoda,"przedmiot" => $przedmiot,"czesto" => $czesto, "stopa" => $stawka, "wspd" => $wspd, "um" => ($result[0]), "wp" => $rekordd['cenaz'], "datar" => strtotime("now"), "datan" => strtotime("-1 year"));
echo ('<form action="" method=post><table border=0>
<input type="hidden" name="method" value="'.$_GET['id_amor'].'"/>
<input type="hidden" name="id" value="'.$item_id.'"/>
<input type="hidden" name="am2" value="yes2"/>
<tr><td colspan="2"><input type="submit" value="OK" ></td></tr>
</table></form>');
//Wpisywanie do tablicy sesji.
if(!isset($_SESSION['tab'])) // 2
{
$_SESSION['tab'] = $tablica_amortyzacji;
}
break;
case 'yes2':
echo 'Wynik potwierdzony! - wpisywanie do bazy danych <br />';
$tab = $_SESSION['tab'];
if (!get_magic_quotes_gpc())
{
$tab['metoda'] = addslashes($tab['metoda']);
$tab['przedmiot'] = addslashes($tab['przedmiot']);
$tab['czesto'] = addslashes($tab['czesto']);
$tab['stopa'] = addslashes($tab['stopa']);
$tab['wspd'] = addslashes($tab['wspd']);
$tab['um'] = addslashes($tab['um']);
$tab['wp'] = addslashes($tab['wp']);
$tab['datar'] = addslashes($tab['datar']);
$tab['datan'] = addslashes($tab['datan']);
}
$zapytanie = "UPDATE amortyzacja set id_amor='$tab[metoda]', stopa='$tab[stopa]', wspd='$tab[wspd]', czesto='$tab[czesto]', um='$tab[um]' where amortyzacja.id = '$tab[przedmiot]'";
$wynik = mysql_query($zapytanie);
if ($wynik)
echo "<p>Dodano wpisow: " . mysql_affected_rows($polaczenie) . "</p>";
else
echo "Błąd: " . mysql_error() . "<p />
";
$zapytanie = "UPDATE pomoc set id_amor='$tab[metoda]', datar='$tab[datar]', datan='$tab[datan]' where pomoc.id = '$tab[przedmiot]'";
$wynik = mysql_query($zapytanie);
if ($wynik)
echo "<p>Dane zostały poprawne zapisane.</p>";
else
echo "Błąd: " . mysql_error() . "<p />
";
break;
// Teraz kiedy juz wyniki został zapisane czas na poprawne wyswietlanie danych.
case '1': // Dla Metody Jednorazowej
break;
case '2': // Dla Metody Liniowej
automatyczna($item_id);
break;
case '3': // Dla Metody Degresywnej
automatyczna($item_id);
break;
default:
echo 'Brak potrzebnych danych do pelnego wyswietlenia strony.';
}
//Funkcja liczenia amortyzacji
//Factor1 - stopa amortyzacji
//Factor2 - wspolczynik degresji
//cenapo - cena poczatkowa srodka trwalego
//factor3 - jak czesto ma byc amortyzowany w skali roku
//factor4 - Jesli poraz drugi amortyzujemy ...
//factor5 - w zaleznie od miejsca wywolania funkcji - rozne zastosowania
function wyliczam($factor1, $factor2, $cenapo, $factor3,$factor4 = 0, $factor5 = 0)
{
$mod = 0; // Modyfikator metody amortyzacji
if($factor5 == 1 )
{
if($cenapo >= 3500)
{
$suma = 3500;
}
elseif($cenapo < 3500)
{
$suma = $cenapo;
}
$res = array($suma,$mod);
echo "Tutaj";
return $res;
}
echo('<form action="" method=post><table border=1 cellpading="3">
<tr>
<td bgcolor = "#CCCCCC" align=center>Miesiac</td>
<td bgcolor = "#CCCCCC" align=center>Kwota</td>
<td bgcolor = "#CCCCCC" align=center>Suma</td>
</tr>');
// Element Degresji
if($factor4 != 0 and $factor2 != 0)
{
//Liczymy pierw wyniki normalna metoda liniowa a potem degresywna i porownujemy
$wzor2 = ($cenapo * $factor1)/$factor3;
$wzor3 = $factor2 * (($cenapo-$factor4) * $factor1)/$factor3;
//Jezeli Degresja jest mniejsza niz liniowa to przechodzimy na liniowa
if($wzor3 <= $wzor2)
{
$factor2 = 0;
$mod = 1;
}
else
{
//Zmniejszamy wartosc poczatkowa o wartosc dotychczas umorzona poniewaz degresja wciaz wychodzi lepiej niz liniowa.
$cenapo = $cenapo - $factor4;
}
}
// A teraz funkcja amortyzujaca.
for($i = 1; $i <= $factor3; $i += 1)
{
if(isset($factor2) and $factor2 != 0)
{
// Funkcja Degresji
$wzor = $factor2 * ($cenapo * $factor1)/$factor3;
$last_one = $factor2 * ($cenapo * $factor1);
}
else
{
// Funckja liniowa
$wzor = ($cenapo * $factor1)/$factor3;
$last_one = ($cenapo * $factor1);
}
$zaokr=round($wzor, 2); // Zaokraglanie wynikow do dwoch miejsc.
echo "<tr>
<td aling='right'>$i</td>
";
$factor = $last_one-($zaokr*($factor3-1));
if($i == ($factor3))
{
echo "<td aling='right'>$factor</td>
";
$suma = $zaokr*($i-1)+$factor;
echo "<td aling='right'>$suma</td>
";
}
else
{
echo "<td aling='right'>$zaokr</td>
";
$suma = $zaokr*$i;
echo "<td aling='right'>$suma</td>
";
}
}
echo ('</table>');
$res = array($suma,$mod);
return $res;
}
// Funkcja czytania zamortyzowanych srodków trwałych i ich ponownej amortyzacji jesli zachodzi taka koniecznosc
function automatyczna($obiekt)
{
$zapytanie = "SELECT * from pomoc AS t1, amortyzacja as t2 where t1.id = ".$obiekt." and t2.id =".$obiekt;
$wynik = mysql_query($zapytanie) or die ('błąd: ' . mysql_error());
$rekord = mysql_fetch_assoc($wynik);
if($rekord['um'] >= $rekord['wp'])
{
// Jezeli juz nie ma co umarzac.
Echo "<h2>Środek trwały został umorzony w całości.</h2>";
echo "Tabela przedstawia przebieg ostatniej amortyzacji:";
wyliczam($rekord['stopa'],$rekord['wspd'],$rekord['wp'],$rekord['czesto']);
//Jezeli srodek został umorzony w calosci zmieniamy wartosc w tabeli srodki kolumne end na 1 przez co podczas wyszukiwania srodek zawsze bedzie wygladal na umorzony.
$zapytanie = "UPDATE pomoc set end='1' where pomoc.id = '$obiekt'";
$wynik = mysql_query($zapytanie) or die ('błąd: ' . mysql_error());
exit;
}
if($rekord['datar'] >= $rekord['datan'] )
{
echo "<br />";
$amortyzacja = wyliczam($rekord['stopa'],$rekord['wspd'],$rekord['wp'],$rekord['czesto'], $rekord['um']);
$aftermethod = $rekord['id_amor']; // Oryginalny wyznacznik metody
if($amortyzacja[1] != 0)
{
echo "<br /> Metoda amortyzacji zostala zmieniona z degresywnej na liniowa.";
$aftermethod = 2;
}
$umorzenie = $rekord['um']+$amortyzacja[0];
$zapytanie = "UPDATE amortyzacja set id_amor=".$aftermethod.", um=".$umorzenie." where amortyzacja.id = '$obiekt'";
$wynik = mysql_query($zapytanie) or die ('błąd: ' . mysql_error());
$datefuture = strtotime("-1 year");
$datenow = strtotime("now");
$zapytanie = "UPDATE pomoc set id_amor='$aftermethod', datar='$datenow', datan='$datefuture' where pomoc.id = '$obiekt'";
$wynik = mysql_query($zapytanie);
if ($wynik)
echo "<p>Dane zostały poprawne zapisane!.</p>";
else
echo "Błąd: " . mysql_error() . "<p />
";
}
else
{
echo "<br /> Ostatnia amortyzacja odbyła sie w dniu : ".date("Y-m-d",$rekord['datar']);
wyliczam($rekord['stopa'],$rekord['wspd'],$rekord['wp'],$rekord['czesto']);
echo "Nastepna amortyzacja przypisania na : ".date("Y-m-d",$rekord['datan']);
}
return;
}
?>
Revise this Paste
Parent: 5210
Children: 5212