Witam,
od jakiegos czasu nie moge sobie poradzic z pewna rzecza. Na papierze to jest sprawa banalna do obliczenia ale napisac to tak by program rozwazal rozne ewentualnosci to nie jest taka prosta sprawa mimo ze operuje na liczbach od 0-10 i dzialniach dodawanie i odejmowanie.
Wszystko jest banalne jak sobie rozrysowywuej algorytm ale jak zaczynam pisac to dochodze do momentu ze juz sie gubie a skutek jest taki ze zle mi sie wykonuja te obliczenia.
Prosze o pomoc.
Sprawa jest taka:
mam tabele z fakturami ktore sklep wystawia klientom nazywa sie ona 1_faktura_szczegol
i mam tabele z magazynem gdzie zapisywane sa przyjecia towaru nazywa sie ona magazyn
mam zrobic tak zeby po wybraniu ktoregos z przyjec wyswietlily mi sie wszystkie sprzedaze ktore przynaleza do tego przyjecia.
tzn.
w magazynie mam np
dokument | nr_dokumentu | idksiazka | ilosc przyjetych
wz 0004 1353 2
wz 0004 543 6
wz 5444 7895 3
a w fakturach mam
nr_faktury | id ksiazka | sprzedano
238 1353 5
3433 1353 1
544 543 3
455 543 3
35345 7895 1
555 7895 1
i teraz ma mi sie wyswietlic tak
dla dokumentu 0004
idksiazka | przyjeto | sprzedano | nr_faktury | data
1353 - -3 06 czerwca
1353 2 2 01 czerwca
543 6 3 20 maja
543 6 3 15 maja
czyli ma brac nr dokumentu patrzec idksiazki i wyszukac wszystkie z takim id z tabeli faktur i wtedy ma przyporzadkowac liczbe sprzedanych ksiazek z faktury do danej dostawy.
Z tym ze, dostawy moze nie byc a ksiazki moga byc sprzedane, dostawa moze nie wystarczyc na sprzedane ksiazki, poza tym jedna faktura sprzeedazyu moze obejmowac 2 lub wiecej dostaw jednoczesnie. Np gdy ktos by kupil 30 ksiazek a dostaw bylo kilka w takich ilosciach 10, 15, 2,3 tyo wtedy wszystkie te dostawy obejmuja tylko jedna spzedaz
Wymyslilam wiec dodatkowa tabele ktora przy sprzedazy i przy dostawie bedzie sie na biezaco uzupelniac. Jednak wykonanie wlasnie takich petli gdy zostaje reszta , gdy przyjecie nie wystarcza na sprzedaz, badz sprzedaz obejmuje kilka dostaw calkowicie wybija mnie w momencie gdy petle nalezy wykonac od nowa.
Moze na to jest jakis sposob??
Nie wiem ale prosze o pomoc.
wklejam tu moje ostatnie wypociny, a wersji bylo mnostwo. To tez nie =dziala jak nalezy ale od czegos trzeba zaczac zeby przeanalizowac problem.
Niech sie ktos nade mna zlituje i mi pomoze :)
////zapisanie do tabeli przyjeto-sprzedano
$query = "select * from 1_faktura_szczegol where nr_zamowienia='".$_GET['zamowienie']."' "; echo $query;
$result = mysql_query($query);
while($row = mysql_fetch_array($result)) //wyswietlamy wszystkie sprzedane ksiazki
{
$sprzedano_teraz = $row['ilosc'];
$idksiazka = $row['idksiazka'];
$id_sprzedazy = $row['nr_zamowienia'];
echo $idksiazka ;
$query1 = "select * from magazyn_przyjeto_sprzedano where idksiazka='".$idksiazka."' order by id DESC "; echo $query1 ;
$result1 = mysql_query($query1);
$rows = mysql_num_rows($result1);
if($rows>0)
{
$row1 = mysql_fetch_array($result1);
//dane ostatniego dopisanego rekordu do magazyn_przyjeto_sprzedano
$id_dostawy1 = $row1['id_dostawy'];
$przyjeto1 = $row1['przyjeto'];
$sprzedano1 = $row1['sprzedano'];
$id_sprzedazy1 = $row1['id_sprzedazy'];
$id_dostawy_ostatni = $row1['id_dostawy'];
//tu petla po tablicy z przyjeciami
$query3 = "select * from magazyn where idksiazka='".$idksiazka."' order by data ASC"; echo $query3 ;
$result3 = mysql_query($query3);
$rows = mysql_num_rows($result1);
while($row3 = mysql_fetch_array($result3))
{
echo $row3['idmagazyn'].'<br />';
echo $id_dostawy_ostatni.'<br />';
if($row3['idmagazyn'] >= $id_dostawy_ostatni )
{
while($reszta != '')
{
if($reszta != '')
{
$sprzedano_teraz = $reszta;
$id_dostawy1 = $row3['idmagazyn'];
$przyjeto1 = $row3['ile_przyjete'];
$id_sprzedazy1 = $row['nr_zamowienia'];
}
$sprzedano = $sprzedano1+$sprzedano_teraz;
if( $rows == 1)
{
$query22 = "insert into magazyn_przyjeto_sprzedano values ('', '".$idksiazka."', '".$id_dostawy1."', '".$przyjeto1."', '".$sprzedano."', '".$id_sprzedazy1."', '".$data."')"; echo $query22.'-----1<br />';
$result22 = mysql_query($query22);
$reszta = '';
}
elseif($sprzedano > $przyjeto1)
{
$sprzedano = $przyjeto1;
$reszta = $przyjeto1 - $sprzedano;
$query22 = "insert into magazyn_przyjeto_sprzedano values ('', '".$idksiazka."', '".$id_dostawy1."', '".$przyjeto1."', '".$sprzedano."', '".$id_sprzedazy1."', '".$data."')"; echo $query22.'-----2<br />';
$result22 = mysql_query($query22);
}
elseif($sprzedano <= $przyjeto1)
{
$query22 = "insert into magazyn_przyjeto_sprzedano values ('', '".$idksiazka."', '".$id_dostawy1."', '".$przyjeto1."', '".$sprzedano."', '".$id_sprzedazy1."', '".$data."')"; echo $query22.'-----4<br />';
$result22 = mysql_query($query22);
$reszta = '';
}
}
}
$rows--;
}
}
else
{
$query3 = "select * from magazyn where idksiazka='".$idksiazka."' order by data DESC"; echo $query3 ;
$result3 = mysql_query($query3);
$row3 = mysql_fetch_array($result3);
$przyjeto1 = $row3['ile_przyjete'];
$id_dostawy1 = $row3['idmagazyn'];
$id_sprzedazy1= $row['nr_zamowienia'];
if($przyjeto1 == '') { $przyjeto1 = 0; }
$sprzedano = $sprzedano_teraz;
$query22 = "insert into magazyn_przyjeto_sprzedano values ('', '".$idksiazka."', '".$id_dostawy1."', '".$przyjeto1."', '".$sprzedano."', '".$id_sprzedazy1."', '".$data."')"; echo $query22.'------3<br />';
$result22 = mysql_query($query22);
}
}