Example #1
0
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;
         }
     }