abrj Skrevet 20. november 2010 Del Skrevet 20. november 2010 Jeg sliter litt med en php-kode. En database har to tabeller; ordre_total og ordre_detalj Tabellen ordre_total har følgende felter; ordrenr og ordre_dato Tabellen ordre_detalj har følgende felter; ordre_nr, ordre_mvasats, ordre_linje_eks, ordre_linje_ink PHP-koden skal finne alle ordrene fra en gitt dato i ordre_total og summere disse på en enkelt linje basert på ordre_mvasats fra ordre_detalj. Resultatet skal da i all enkelhet bli noe sånn, avhengig av hvilke mvasatser som er brukt i ordren; mvasats-eks-ink 25%-100-125 14%-100-114 8%-100-108 0%-100-100 Er bare 25% brukt, skal bare linjen med 25% vises osv. Er flere satser brukt vises de respektive satsene. Den koden jeg har nå looper seg bare gjennom for hver enkelt ordrenummer, men jeg vil gjerne samle alle i en bolk. Det er sikkert bare jeg som er litt trøtt i trynet her. Legger uansett med koden under <br> <table width="359" border="0" cellspacing="0" cellpadding="0"> <tr class="bunnlinje"> <td width="80" class="font10"><strong>MVA-Sats</strong></td> <td width="80" class="font10"><strong>Grunnlag</strong></td> <td width="80" class="font10"><strong>MVA-Beløp</strong></td> <td width="119" class="font10"><strong>Sum ink. mva</strong></td> </tr> <?php { $query=" SELECT * FROM ordre_total WHERE ordre_dato = '$oppgjordato'"; $result=mysql_query($query); $num=mysql_numrows($result); $ix=0; while ($ix < $num) { $ordrenummermvasats = mysql_result($result,$ix,"ordrenr"); ?> <?php $queryg="SELECT DISTINCT ordre_mvasats FROM ordre_detalj WHERE ordre_nr='$ordrenummermvasats' ORDER BY 0+ordre_mvasats ASC"; $resultg=mysql_query($queryg); $numg=mysql_num_rows($resultg); $g=0; while ($g < $numg) { $mvaprosent=mysql_result($resultg,$g,"ordre_mvasats"); { if ( $mvaprosent == "Ikke MVA" ) { $prosenttegn = " "; } elseif ( $mvaprosent == "Ikke" ) { $prosenttegn = " "; } else { $prosenttegn = "%"; } } ?> <?php $queryh = "SELECT ordre_mvasats, ordre_nr, SUM(ordre_linje_eks), SUM(ordre_linje_ink)FROM ordre_detalj WHERE ordre_mvasats='$mvaprosent' AND ordre_nr='$ordrenummermvasats' ORDER BY 0+ordre_mvasats ASC"; $resulth = mysql_query($queryh) or die(mysql_error()); // Print out result while($row = mysql_fetch_array($resulth)){ $grunnlag = $row['SUM(ordre_linje_eks)']; $linjesumink = $row['SUM(ordre_linje_ink)']; $linjemvaut = $linjesumink-$grunnlag; } ?> <tr> <td width="80" class="font10"><?php echo $mvaprosent; ?><?php echo $prosenttegn; ?></td> <td width="80" class="font10"><?php echo $grunnlag; ?></td> <td width="80" class="font10"><?php echo $linjemvaut; ?></td> <td width="119" class="font10"><?php echo $linjesumink; ?></td> </tr> <?php ++$g; } ?> <?php ++$ix; } } ?> </table> Lenke til kommentar
BlueEAGLE Skrevet 21. november 2010 Del Skrevet 21. november 2010 Jeg tror du vil ha beløpet uten moms og mva-satsen pr. ordrelinje. Da er det en enkel operasjon å finne beløpet med moms. Hvis mva-satsen er angitt som heltall 8, 12 og 24 SQL-spørringen vil da være noe i nærheten av "SELECT belop, mva, belop*(mva/100) as mva_belop belop*(1+mva/100) as sum_inc_mva FROM invoice_lines GROUP BY mva WHERE ordre_nr = $ordre" Håper dette hjelper deg nærmere. Du vil nok gjerne ha SUM() inni der noen steder også, men det finner du ut. Lenke til kommentar
abrj Skrevet 21. november 2010 Forfatter Del Skrevet 21. november 2010 Det var ikke det jeg mente BlueEAGLE. Jeg vil ikke ha for hver ordrelinje, jeg vil at alle ordrene skal summeres sammen. Først må ordrenumrene finnes i den ene tabellen, for så å ta summene tilhørende disse ordrenumrene i den andre tabellen og summere disse. Lenke til kommentar
BlueEAGLE Skrevet 21. november 2010 Del Skrevet 21. november 2010 Med et par SUM() i den spørringen så skal du være veldig nær. "SELECT sum(belop), mva, sum(belop*(mva/100)) as mva_belop sum(belop*(1+mva/100)) as sum_inc_mva FROM invoice_lines GROUP BY mva WHERE ordre_nr = $ordre" eller noe i den duren. Da vil du få det du ønsker gruppert pr. mva-sats Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå