function laskeveroja($taso, $tulos) { global $yhtiorow, $kukarow, $startmonth, $endmonth, $oletus_verokanta; if ($tulos == $oletus_verokanta or $tulos == 'veronmaara' or $tulos == 'summa') { $maalisa = ''; $_309lisa = ''; $vainveroton = ''; $tuotetyyppilisa = ''; $cleantaso = $taso; if ($taso == 'fi307') { $maalisa = "JOIN lasku ON lasku.yhtio = tiliointi.yhtio and lasku.tunnus = tiliointi.ltunnus and if(lasku.toim_maa!='', lasku.toim_maa, if(lasku.maa != '', lasku.maa, '{$yhtiorow['maa']}')) in ('FI', '')"; } if ($taso == 'fi309') { $query = "SELECT group_concat(DISTINCT concat('\\'',koodi,'\\'')) maat FROM maat WHERE eu = ''"; $result = pupe_query($query); $maarow = mysql_fetch_assoc($result); // Kaikki ei-EU-maat plus FI ja tyhjä $maalisa = "JOIN lasku ON lasku.yhtio=tiliointi.yhtio and lasku.tunnus=tiliointi.ltunnus and if(lasku.toim_maa!='', lasku.toim_maa, if(lasku.maa != '', lasku.maa, '{$yhtiorow['maa']}')) in ('','FI', {$maarow['maat']})"; $_309lisa = " or alv_taso like '%fi300%' "; $vainveroton = " and tiliointi.vero = 0 "; } if ($taso == 'fi312') { $tuotetyyppilisa = " AND tuote.tuotetyyppi = 'K' "; $taso = 'fi311'; $cleantaso = 'fi312'; $kolmikantakauppa = "AND lasku.kolmikantakauppa = ''"; } elseif ($taso == 'fi311') { $tuotetyyppilisa = " AND tuote.tuotetyyppi != 'K' "; $taso = 'fi311'; $cleantaso = 'fi311'; $kolmikantakauppa = "AND lasku.kolmikantakauppa = ''"; } else { $kolmikantakauppa = ""; } if ($taso == 'fi313') { $taso = 'fi305'; $cleantaso = 'fi313'; } elseif ($taso == 'fi314') { $taso = 'fi306'; $cleantaso = 'fi314'; } elseif ($taso == 'fi318') { $taso = 'fi320'; $cleantaso = 'fi318'; } $query = "SELECT ifnull(group_concat(if(alv_taso like '%fi300%', concat(\"'\",tilino,\"'\"), NULL)), '') tilit300,\n ifnull(group_concat(if(alv_taso not like '%fi300%', concat(\"'\",tilino,\"'\"), NULL)), '') tilitMUU\n FROM tili\n WHERE yhtio = '{$kukarow['yhtio']}'\n and (alv_taso like '%{$taso}%' {$_309lisa})"; $tilires = pupe_query($query); $tilirow = mysql_fetch_assoc($tilires); $vero = 0.0; if ($tilirow['tilit300'] != '' or $tilirow['tilitMUU'] != '') { $tilinolisa = ""; if ($tilirow["tilit300"] != "") { $tilinolisa .= "(tiliointi.tilino in ({$tilirow['tilit300']}) {$vainveroton})"; } if ($tilirow["tilit300"] != "" and $tilirow["tilitMUU"] != "") { $tilinolisa .= " or "; } if ($tilirow["tilitMUU"] != "") { $tilinolisa .= " tiliointi.tilino in ({$tilirow['tilitMUU']})"; } if ($tuotetyyppilisa != '') { $query = "SELECT lasku.tunnus, lasku.arvo laskuarvo, round(sum(tilausrivi.rivihinta),2) summa\n FROM lasku USE INDEX (yhtio_tila_tapvm)\n JOIN tilausrivi USE INDEX (uusiotunnus_index) ON (tilausrivi.yhtio = lasku.yhtio and tilausrivi.uusiotunnus = lasku.tunnus)\n JOIN tuote USE INDEX (tuoteno_index) ON (tuote.yhtio = tilausrivi.yhtio and tuote.tuoteno = tilausrivi.tuoteno and tuote.tuoteno != '{$yhtiorow['ennakkomaksu_tuotenumero']}' {$tuotetyyppilisa})\n WHERE lasku.yhtio = '{$kukarow['yhtio']}'\n and lasku.tila = 'U'\n and lasku.tapvm >= '{$startmonth}'\n and lasku.tapvm <= '{$endmonth}'\n and lasku.vienti = 'E'\n {$kolmikantakauppa}\n GROUP BY 1,2"; } else { $query = "SELECT sum(round(tiliointi.summa * if('{$tulos}'='{$oletus_verokanta}', {$oletus_verokanta}, vero) / 100, 2)) veronmaara,\n sum(tiliointi.summa) summa,\n count(*) kpl\n FROM tiliointi\n {$maalisa}\n WHERE tiliointi.yhtio = '{$kukarow['yhtio']}'\n AND tiliointi.korjattu = ''\n AND ({$tilinolisa})\n AND tiliointi.tapvm >= '{$startmonth}'\n AND tiliointi.tapvm <= '{$endmonth}'"; } $verores = pupe_query($query); while ($verorow = mysql_fetch_assoc($verores)) { if ($tulos == $oletus_verokanta) { $tulos = 'veronmaara'; } $vero += $verorow[$tulos]; } } if ($cleantaso == "fi305" or $cleantaso == "fi306" or $cleantaso == "fi320") { // Vähennetään kassa-alennuksien laskennaliset verot Tavara/Palveluaostot muista EU-maista list($kakerroinlisa, $ttres) = alvilmo_kassa_ale_erittely($startmonth, $endmonth, "", "", $cleantaso, $oletus_verokanta); if (is_resource($ttres)) { while ($trow = mysql_fetch_assoc($ttres)) { $vero += $trow['verot']; } } } if ($cleantaso == "fi313" or $cleantaso == "fi314") { // Vähennetään kassa-alennukset Tavara/Palveluaostot muista EU-maista list($kakerroinlisa, $ttres) = alvilmo_kassa_ale_erittely($startmonth, $endmonth, "", "", $cleantaso, 0); if (is_resource($ttres)) { while ($trow = mysql_fetch_assoc($ttres)) { $vero += $trow['bruttosumma']; } } } if ($cleantaso == 'fi312' or $cleantaso == 'fi311') { // Vähennetään kassa-alennukset Tavaran/palveluiden myynnistä muihin EU-maihin list($kakerroinlisa, $ttres) = alvilmo_kassa_ale_erittely($startmonth, $endmonth, $maalisa, $vainveroton, $cleantaso, 0); if (is_resource($ttres)) { while ($trow = mysql_fetch_assoc($ttres)) { $vero += round($kakerroinlisa * $trow['bruttosumma'], 2); } } } } else { $vero = 0; } return sprintf('%.2f', $vero); }
$bruttosumma = round($kakerroinlisa * $trow['bruttosumma'], 2); if ($bruttosumma != 0) { $array_key = "Palvelu" . $trow["ytunnus"] . $trow["maa"]; $yhteenvetoilmoitus_array[$array_key]["koodi"] = "Palvelu"; $yhteenvetoilmoitus_array[$array_key]["ytunnus"] = $trow["ytunnus"]; $yhteenvetoilmoitus_array[$array_key]["maa"] = $trow["maa"]; $yhteenvetoilmoitus_array[$array_key]["asiakkaan_maa"] = ""; $yhteenvetoilmoitus_array[$array_key]["nimi"] = $trow["laskunimi"]; $yhteenvetoilmoitus_array[$array_key]["summa"] += $bruttosumma; $yhteenvetoilmoitus_array[$array_key]["laskuja"] += 1; $yhteenvetoilmoitus_array[$array_key]["kale"] += 1; } } } // Kolmikantamyynnin käteisalennukset list($kakerroinlisa, $ttres) = alvilmo_kassa_ale_erittely($alkupvm, $loppupvm, "", "", "kolmikanta", 0, TRUE); if (is_resource($ttres)) { while ($trow = mysql_fetch_assoc($ttres)) { $bruttosumma = round($kakerroinlisa * $trow['bruttosumma'], 2); if ($bruttosumma != 0) { $array_key = "Kolmikanta" . $trow["ytunnus"] . $trow["maa"]; $yhteenvetoilmoitus_array[$array_key]["koodi"] = "Kolmikanta"; $yhteenvetoilmoitus_array[$array_key]["ytunnus"] = $trow["ytunnus"]; $yhteenvetoilmoitus_array[$array_key]["maa"] = $trow["maa"]; $yhteenvetoilmoitus_array[$array_key]["asiakkaan_maa"] = ""; $yhteenvetoilmoitus_array[$array_key]["nimi"] = $trow["laskunimi"]; $yhteenvetoilmoitus_array[$array_key]["summa"] += $bruttosumma; $yhteenvetoilmoitus_array[$array_key]["laskuja"] += 1; $yhteenvetoilmoitus_array[$array_key]["kale"] += 1; } }