if ($tee == "ajaraportti" and isset($submit_nappi)) { if (include 'Spreadsheet/Excel/Writer.php') { //keksitään failille joku varmasti uniikki nimi: list($usec, $sec) = explode(' ', microtime()); mt_srand((double) $sec + (double) $usec * 100000); $excelnimi = md5(uniqid(mt_rand(), true)) . ".xls"; $workbook = new Spreadsheet_Excel_Writer('/tmp/' . $excelnimi); $workbook->setVersion(8); $worksheet = $workbook->addWorksheet('Raportti Valmistuksista'); $format_bold = $workbook->addFormat(); $format_bold->setBold(); $excelsarake = 0; $excelrivi = 0; } $lasku_join_ehto = ""; $valmistuksen_tila = search_array_key_for_value_recursive($valmistuksien_tilat, 'value', $valmistuksen_tila); $lasku_join_ehto .= $valmistuksen_tila[0]['query_where']; if (isset($valmistuslinja) and $valmistuslinja != '') { $lasku_join_ehto .= " AND lasku.kohde = '{$valmistuslinja}'"; } $query = "SELECT\n tuote.tuoteno,\n lasku.kohde valmistuslinja,\n tilausrivi.toimaika,\n tilausrivi.toimitettuaika,\n tilausrivi.kerattyaika,\n tilausrivi.nimitys,\n lasku.tila,\n lasku.alatila,\n tuote.try,\n tuote.osasto,\n left(lasku.kerayspvm, 10) kerayspvm,\n lasku.toimaika,\n lasku.tunnus valmistusnumero,\n ifnull(sum(tilausrivi.kpl), 0) valmistettu,\n ifnull(sum(tilausrivi.varattu), 0) valmistetaan\n FROM lasku\n JOIN tilausrivi ON (tilausrivi.yhtio = lasku.yhtio\n AND tilausrivi.otunnus = lasku.tunnus\n AND tilausrivi.tyyppi = 'W'\n AND tilausrivi.var != 'P')\n JOIN tuote ON (tuote.yhtio = lasku.yhtio\n AND tuote.tuoteno = tilausrivi.tuoteno)\n {$lisa_parametri}\n WHERE lasku.yhtio = '{$kukarow["yhtio"]}'\n AND lasku.tila = 'V'\n AND lasku.toimaika >= '{$pvmalku}'\n AND lasku.toimaika <= '{$pvmloppu}'\n {$lasku_join_ehto}\n {$lisa}\n GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13\n HAVING valmistettu != 0 OR valmistetaan != 0\n ORDER BY lasku.kohde, tilausrivi.tuoteno, lasku.alatila, lasku.tunnus"; $result = pupe_query($query); if (mysql_num_rows($result) > 0) { // Alustetaan array $yhteenveto_valmistettu = array(); $yhteenveto_valmistetaan = array(); if (isset($workbook)) { $worksheet->write($excelrivi, $excelsarake, t("tuoteno"), $format_bold); $excelsarake++; $worksheet->write($excelrivi, $excelsarake, t("Tuotteen nimi"), $format_bold); $excelsarake++;
/** * Tonkii arraysta key->value pairia ja jos löytyy nii palauttaa sen */ private function getParentArray($tree, $parent_cat_id) { //etsitään keytä "category_id" valuella isatunnus ja return sen lapset return search_array_key_for_value_recursive($tree, 'category_id', $parent_cat_id); }
if (in_array($toim, array('RIVISYOTTO', 'PIKATILAUS')) and !empty($v_toimipaikka) and $varasto['tyyppi'] != 'E') { if ($v_toimipaikka['tunnus'] == 0) { $_toimipaikka = $kukarow['toimipaikka']; $kukarow['toimipaikka'] = 0; } $toimipaikan_yhtiorow = hae_yhtion_parametrit($kukarow['yhtio'], $v_toimipaikka['tunnus']); $kukarow['toimipaikka'] = isset($_toimipaikka) ? $_toimipaikka : $kukarow['toimipaikka']; $_toimipaikan_kerayserat_mittatiedot = $toimipaikan_yhtiorow['kerayserat'] == 'K'; $toimipaikka_ja_varasto_ei_sama = $v_toimipaikka['tunnus'] != $laskurow['yhtio_toimipaikka']; $tarvii_lahdon = ($laskurow['eilahetetta'] == '' and $laskurow['sisainen'] == ''); $_toimitustapa = $laskurow['toimitustapa'] != ''; // jos varaston toimipaikka ei ole tilauksen toimipaikka, niin aina true. $tarvii_lahdon = $toimipaikka_ja_varasto_ei_sama ? TRUE : $tarvii_lahdon; if ($_toimipaikan_kerayserat_mittatiedot and $tarvii_lahdon and $_toimitustapa) { $toimitustavat = hae_kaikki_toimitustavat(); $toimitustapa = search_array_key_for_value_recursive($toimitustavat, 'selite', $laskurow['toimitustapa']); $toimitustapa = $toimitustapa[0]; if (!empty($toimitustapa['tunnus'])) { $query = "SELECT *\n FROM lahdot\n WHERE yhtio = '{$kukarow['yhtio']}'\n AND liitostunnus = {$toimitustapa['tunnus']}\n AND varasto = {$varasto['tunnus']}\n AND aktiivi = ''\n AND ((pvm > CURRENT_DATE)\n OR (pvm = CURRENT_DATE\n AND viimeinen_tilausaika > CURRENT_TIME))"; $lahdot_result = pupe_query($query); if (mysql_num_rows($lahdot_result) == 0) { echo "<font class='error'>" . t("VIRHE: Tilauksen toimitustavalla ei ole") . " {$varasto['nimitys']} " . t("varastossa lähtöjä") . "!</font><br><br>"; $tilausok++; } } } } unset($_toimipaikka); } } $tuotetyyppi = "";
function paivita_ennakko($params) { global $kukarow, $yhtiorow; $syotetyt_lisatiedot = $params['syotetyt_lisatiedot']; $valittu_tarjous_tunnus = $params['valittu_tarjous_tunnus']; $kappalemaarat = $params['kappalemaarat']; $toim = $params['toim']; // Siistiään parametrit tietokantaqueryjä varten $syotetyt_lisatiedot = pupesoft_cleanstring($syotetyt_lisatiedot); $valittu_tarjous_tunnus = pupesoft_cleanstring($valittu_tarjous_tunnus); // Haetaan kannasta tilausrivit $muokkaamaton_ennakko = hae_tarjous($valittu_tarjous_tunnus); foreach ($kappalemaarat as $key => $value) { // Kappalemäärä käyttöliittymästä, pilkut pisteiksi ja round 2 $value = round(str_replace(",", ".", pupesoft_cleanstring($value)), 2); // Etsitään tilausrivitunnuksen perusteella tuotteen kannassa oleva kappalemäärä $loytynyt_tilausrivi = search_array_key_for_value_recursive($muokkaamaton_ennakko['tilausrivit'], 'tunnus', $key); // Tarkistetaan löytyikö tilausrivi, jos ei löydy, ei tehdä mitään if (empty($loytynyt_tilausrivi[0])) { continue; } // Kappalemäärä kannasta $kplmaara = $loytynyt_tilausrivi[0]['kpl']; // jos Optio-rivi niin katsotaan onko syötetty arvo muutettu tyhjästä joksikin muuksi, jos ei niin toimenpiteitä riville ei vaadita if ($loytynyt_tilausrivi[0]['var'] == "O" and $value == '') { continue; } elseif ($kplmaara == $value and $loytynyt_tilausrivi[0]['var'] != "O") { continue; } // Tuoteperheen tapauksessa päivitetään/poistetaan kaikki tuoteperheen rivit, muuten vain ko. rivi if ($loytynyt_tilausrivi[0]['tunnus'] == $loytynyt_tilausrivi[0]['perheid_tunnus']) { $andy = "AND perheid = '{$loytynyt_tilausrivi[0]['tunnus']}'"; } else { $andy = "AND tunnus = '{$loytynyt_tilausrivi[0]['tunnus']}'"; } // Jos ollaan nollattu kappaleet, päivitetään rivi tilaan Optio if ($value == 0) { $query = "UPDATE tilausrivi\n SET var = 'O'\n WHERE yhtio = '{$kukarow['yhtio']}'\n AND otunnus = '{$valittu_tarjous_tunnus}'\n {$andy}"; pupe_query($query); } else { // Rivin poisto $query = "UPDATE tilausrivi\n SET tyyppi = 'D'\n WHERE yhtio = '{$kukarow['yhtio']}'\n AND otunnus = '{$valittu_tarjous_tunnus}'\n {$andy}"; pupe_query($query); $parametrit = array("lasku_tunnus" => $valittu_tarjous_tunnus, "tuoteno" => $loytynyt_tilausrivi[0]['tuoteno'], "kpl" => $value, "toim" => $toim, "syotettyhinta" => $loytynyt_tilausrivi[0]['hinta']); lisaa_ennakkorivi($parametrit); } } // Päivitetään käyttäjän lisäämät kommentit $query = "UPDATE lasku\n SET sisviesti1 = '{$syotetyt_lisatiedot}'\n WHERE yhtio = '{$kukarow['yhtio']}'\n AND tunnus = '{$valittu_tarjous_tunnus}'"; pupe_query($query); return true; }
/** * Luo edi tilauksen * * @param array $order Tilauksen tiedot ja tilauserivit * @return true/false */ static function create($order) { // require 'magento_salasanat.php' muuttujat global $magento_api_ht_edi, $ovt_tunnus, $pupesoft_tilaustyyppi; global $verkkokauppa_asiakasnro, $rahtikulu_tuoteno, $rahtikulu_nimitys, $verkkokauppa_erikoiskasittely; if (empty($magento_api_ht_edi) or empty($ovt_tunnus) or empty($pupesoft_tilaustyyppi)) { exit("Parametrejä puuttuu\n"); } if (empty($verkkokauppa_asiakasnro) or empty($rahtikulu_tuoteno) or empty($rahtikulu_nimitys)) { exit("Parametrejä puuttuu\n"); } //Tilauksella käytetyt lahjakortit ei saa vehentää myynti pupen puolella $giftcards = json_decode($order['webtex_giftcard']); if (!empty($giftcards)) { $giftcard_sum = 0; foreach ($giftcards as $giftcard_values) { foreach ($giftcard_values as $index => $value) { if (!stristr($index, 'classname')) { $giftcard_sum += $value; } } } $grand_total = $order['grand_total'] + $giftcard_sum; } else { $grand_total = $order['grand_total']; } // Miten storen nimi? //$storenimi = (isset($_COOKIE["store_name"])) ? $_COOKIE["store_name"] : ""; $storenimi = ''; //tilauksen otsikko //return $order->getUpdatedAt(); $edi_order = "*IS from:721111720-1 to:IKH,ORDERS*id:" . $order['increment_id'] . " version:AFP-1.0 *MS\n"; $edi_order .= "*MS " . $order['increment_id'] . "\n"; $edi_order .= "*RS OSTOTIL\n"; $edi_order .= "OSTOTIL.OT_NRO:" . $order['increment_id'] . "\n"; //Tarkistetaan onko tämän nimiselle verkkokaupalle asetettu erikoiskäsittelyjä if (isset($verkkokauppa_erikoiskasittely) and count($verkkokauppa_erikoiskasittely) > 0) { $edi_store = str_replace("\n", " ", $order['store_name']); foreach ($verkkokauppa_erikoiskasittely as $verkkokauppaparametrit) { // $verkkokauppaparametrit[0] - Verkkokaupan nimi // $verkkokauppaparametrit[1] - Editilaus_tilaustyyppi // $verkkokauppaparametrit[2] - Tilaustyyppilisa // $verkkokauppaparametrit[3] - Myyjanumero // $verkkokauppaparametrit[4] - Vaihtoehtoinen ovttunnus if (strpos($edi_store, $verkkokauppaparametrit[0]) !== false) { $vaihtoehtoinen_ovt = $verkkokauppaparametrit[4]; } } // Jos erikoiskäsittelyyn on määritelty eri yhtiö tälle kaupalle niin yliajetaan $ovt_tunnus if (isset($vaihtoehtoinen_ovt) and !empty($vaihtoehtoinen_ovt)) { $ovt_tunnus = $vaihtoehtoinen_ovt; } } //Yrityksen ovt_tunnus MUISTA MUUTTAA $edi_order .= "OSTOTIL.OT_TOIMITTAJANRO:" . $ovt_tunnus . "\n"; $edi_order .= "OSTOTIL.OT_TILAUSTYYPPI:{$pupesoft_tilaustyyppi}\n"; $edi_order .= "OSTOTIL.VERKKOKAUPPA:" . str_replace("\n", " ", $order['store_name']) . "\n"; $edi_order .= "OSTOTIL.OT_VERKKOKAUPPA_ASIAKASNRO:" . $order['customer_id'] . "\n"; $edi_order .= "OSTOTIL.OT_VERKKOKAUPPA_TILAUSVIITE:" . str_replace("\n", " ", $order['reference_number']) . "\n"; $edi_order .= "OSTOTIL.OT_VERKKOKAUPPA_TILAUSNUMERO:" . str_replace("\n", " ", $order['order_number']) . "\n"; $edi_order .= "OSTOTIL.OT_VERKKOKAUPPA_KOHDE:" . str_replace("\n", " ", $order['target']) . "\n"; $edi_order .= "OSTOTIL.OT_TILAUSAIKA:\n"; $edi_order .= "OSTOTIL.OT_KASITTELIJA:\n"; $edi_order .= "OSTOTIL.OT_TOIMITUSAIKA:\n"; $edi_order .= "OSTOTIL.OT_TOIMITUSTAPA:" . $order['shipping_description'] . "\n"; $edi_order .= "OSTOTIL.OT_TOIMITUSEHTO:\n"; //Onko tilaus maksettu = processing vai jälkvaatimus = pending_cashondelivery_asp $edi_order .= "OSTOTIL.OT_MAKSETTU:" . $order['status'] . "\n"; $edi_order .= "OSTOTIL.OT_MAKSUEHTO:" . strip_tags($order['payment']['method']) . "\n"; $edi_order .= "OSTOTIL.OT_VIITTEEMME:\n"; $edi_order .= "OSTOTIL.OT_VIITTEENNE:{$storenimi}\n"; $edi_order .= "OSTOTIL.OT_VEROMAARA:" . $order['tax_amount'] . "\n"; $edi_order .= "OSTOTIL.OT_SUMMA:" . $grand_total . "\n"; $edi_order .= "OSTOTIL.OT_VALUUTTAKOODI:" . $order['order_currency_code'] . "\n"; $edi_order .= "OSTOTIL.OT_KLAUSUULI1:\n"; $edi_order .= "OSTOTIL.OT_KLAUSUULI2:\n"; $edi_order .= "OSTOTIL.OT_KULJETUSOHJE:\n"; $edi_order .= "OSTOTIL.OT_LAHETYSTAPA:\n"; $edi_order .= "OSTOTIL.OT_VAHVISTUS_FAKSILLA:\n"; $edi_order .= "OSTOTIL.OT_FAKSI:\n"; $billingadress = str_replace("\n", ", ", $order['billing_address']['street']); $shippingadress = str_replace("\n", ", ", $order['shipping_address']['street']); //Asiakkaan ovt_tunnus MUISTA MUUTTAA $edi_order .= "OSTOTIL.OT_ASIAKASNRO:" . $verkkokauppa_asiakasnro . "\n"; // Yritystilauksissa vaihdetaan yrityksen ja tilaajan nimi toisin päin if (!empty($order['billing_address']['company'])) { $edi_order .= "OSTOTIL.OT_YRITYS:" . $order['billing_address']['lastname'] . " " . $order['billing_address']['firstname'] . "\n"; $edi_order .= "OSTOTIL.OT_YHTEYSHENKILO:" . $order['billing_address']['company'] . "\n"; } else { $edi_order .= "OSTOTIL.OT_YRITYS:" . $order['billing_address']['company'] . "\n"; $edi_order .= "OSTOTIL.OT_YHTEYSHENKILO:" . $order['billing_address']['lastname'] . " " . $order['billing_address']['firstname'] . "\n"; } $edi_order .= "OSTOTIL.OT_KATUOSOITE:" . $billingadress . "\n"; $edi_order .= "OSTOTIL.OT_POSTITOIMIPAIKKA:" . $order['billing_address']['city'] . "\n"; $edi_order .= "OSTOTIL.OT_POSTINRO:" . $order['billing_address']['postcode'] . "\n"; $edi_order .= "OSTOTIL.OT_YHTEYSHENKILONPUH:" . $order['billing_address']['telephone'] . "\n"; $edi_order .= "OSTOTIL.OT_YHTEYSHENKILONFAX:" . $order['billing_address']['fax'] . "\n"; $edi_order .= "OSTOTIL.OT_MYYNTI_YRITYS:\n"; $edi_order .= "OSTOTIL.OT_MYYNTI_KATUOSOITE:\n"; $edi_order .= "OSTOTIL.OT_MYYNTI_POSTITOIMIPAIKKA:\n"; $edi_order .= "OSTOTIL.OT_MYYNTI_POSTINRO:\n"; $edi_order .= "OSTOTIL.OT_MYYNTI_MAAKOODI:\n"; $edi_order .= "OSTOTIL.OT_MYYNTI_YHTEYSHENKILO:\n"; $edi_order .= "OSTOTIL.OT_MYYNTI_YHTEYSHENKILONPUH:\n"; $edi_order .= "OSTOTIL.OT_MYYNTI_YHTEYSHENKILONFAX:\n"; // Yritystilauksissa vaihdetaan yrityksen ja tilaajan nimi toisin päin if (!empty($order['shipping_address']['company'])) { $edi_order .= "OSTOTIL.OT_TOIMITUS_YRITYS:" . $order['shipping_address']['lastname'] . " " . $order['shipping_address']['firstname'] . "\n"; $edi_order .= "OSTOTIL.OT_TOIMITUS_NIMI:" . $order['shipping_address']['company'] . "\n"; } else { $edi_order .= "OSTOTIL.OT_TOIMITUS_YRITYS:" . $order['shipping_address']['company'] . "\n"; $edi_order .= "OSTOTIL.OT_TOIMITUS_NIMI:" . $order['shipping_address']['lastname'] . " " . $order['shipping_address']['firstname'] . "\n"; } $edi_order .= "OSTOTIL.OT_TOIMITUS_KATUOSOITE:" . $shippingadress . "\n"; $edi_order .= "OSTOTIL.OT_TOIMITUS_POSTITOIMIPAIKKA:" . $order['shipping_address']['city'] . "\n"; $edi_order .= "OSTOTIL.OT_TOIMITUS_POSTINRO:" . $order['shipping_address']['postcode'] . "\n"; $edi_order .= "OSTOTIL.OT_TOIMITUS_MAAKOODI:" . $order['shipping_address']['country_id'] . "\n"; $edi_order .= "OSTOTIL.OT_TOIMITUS_PUH:" . $order['shipping_address']['telephone'] . "\n"; $edi_order .= "OSTOTIL.OT_TOIMITUS_EMAIL:" . $order['customer_email'] . "\n"; $edi_order .= "*RE OSTOTIL\n"; $i = 1; foreach ($order['items'] as $item) { $product_id = $item['product_id']; if ($item['product_type'] != "configurable") { // Tuoteno $tuoteno = $item['sku']; if (substr($tuoteno, 0, 4) == "SKU_") { $tuoteno = substr($tuoteno, 4); } // Nimitys $nimitys = $item['name']; // Määrä $kpl = $item['qty_ordered'] * 1; // Hinta pitää hakea isältä $result = search_array_key_for_value_recursive($order['items'], "item_id", $item['parent_item_id']); // Löyty yks tai enemmän, otetaan eka? if (count($result) != 0) { $_item = $result[0]; } else { $_item = $item; } // Verollinen yksikköhinta $verollinen_hinta = $_item['original_price']; // Veroton yksikköhinta $veroton_hinta = $_item['price']; // Rivin alennusprosentti $alennusprosentti = $_item['discount_percent']; // Rivin alennusmäärä $alennusmaara = $_item['base_discount_amount']; // Jos alennusprosentti on 0, tarkistetaan vielä onko annettu euromääräistä alennusta if ($alennusprosentti == 0 and $alennusmaara > 0) { // Lasketaan alennusmäärä alennusprosentiksi $alennusprosentti = round($alennusmaara / $verollinen_hinta * 100, 6); } // Verokanta $alvprosentti = $_item['tax_percent']; // Verollinen rivihinta $rivihinta_verollinen = round($verollinen_hinta * $kpl * (1 - $alennusprosentti / 100), 6); // Veroton rivihinta $rivihinta_veroton = round($veroton_hinta * $kpl * (1 - $alennusprosentti / 100), 6); $edi_order .= "*RS OSTOTILRIV {$i}\n"; $edi_order .= "OSTOTILRIV.OTR_NRO:" . $order['increment_id'] . "\n"; $edi_order .= "OSTOTILRIV.OTR_RIVINRO:{$i}\n"; $edi_order .= "OSTOTILRIV.OTR_TOIMITTAJANRO:\n"; $edi_order .= "OSTOTILRIV.OTR_TUOTEKOODI:{$tuoteno}\n"; $edi_order .= "OSTOTILRIV.OTR_NIMI:{$nimitys}\n"; $edi_order .= "OSTOTILRIV.OTR_TILATTUMAARA:{$kpl}\n"; // Verottomat hinnat $edi_order .= "OSTOTILRIV.OTR_VEROKANTA:{$alvprosentti}\n"; $edi_order .= "OSTOTILRIV.OTR_RIVISUMMA:{$rivihinta_veroton}\n"; $edi_order .= "OSTOTILRIV.OTR_OSTOHINTA:{$veroton_hinta}\n"; $edi_order .= "OSTOTILRIV.OTR_ALENNUS:{$alennusprosentti}\n"; $edi_order .= "OSTOTILRIV.OTR_VIITE:\n"; $edi_order .= "OSTOTILRIV.OTR_OSATOIMITUSKIELTO:\n"; $edi_order .= "OSTOTILRIV.OTR_JALKITOIMITUSKIELTO:\n"; $edi_order .= "OSTOTILRIV.OTR_YKSIKKO:\n"; $edi_order .= "OSTOTILRIV.OTR_SALLITAANJT:0\n"; $edi_order .= "*RE OSTOTILRIV {$i}\n"; $i++; } } // // Rahtikulu, veroton $rahti_veroton = $order['shipping_amount']; if ($rahti_veroton != 0) { // Rahtikulu, verollinen $rahti = $order['shipping_amount'] + $order['shipping_tax_amount']; // Rahtin alviprossa $rahti_alvpros = round(($rahti / $rahti_veroton - 1) * 100); $edi_order .= "*RS OSTOTILRIV {$i}\n"; $edi_order .= "OSTOTILRIV.OTR_NRO:" . $order['increment_id'] . "\n"; $edi_order .= "OSTOTILRIV.OTR_RIVINRO:{$i}\n"; $edi_order .= "OSTOTILRIV.OTR_TOIMITTAJANRO:\n"; $edi_order .= "OSTOTILRIV.OTR_TUOTEKOODI:{$rahtikulu_tuoteno}\n"; $edi_order .= "OSTOTILRIV.OTR_NIMI:{$rahtikulu_nimitys}\n"; $edi_order .= "OSTOTILRIV.OTR_TILATTUMAARA:1\n"; $edi_order .= "OSTOTILRIV.OTR_RIVISUMMA:{$rahti_veroton}\n"; $edi_order .= "OSTOTILRIV.OTR_OSTOHINTA:{$rahti_veroton}\n"; $edi_order .= "OSTOTILRIV.OTR_ALENNUS:0\n"; $edi_order .= "OSTOTILRIV.OTR_VEROKANTA:{$rahti_alvpros}\n"; $edi_order .= "OSTOTILRIV.OTR_VIITE:\n"; $edi_order .= "OSTOTILRIV.OTR_OSATOIMITUSKIELTO:\n"; $edi_order .= "OSTOTILRIV.OTR_JALKITOIMITUSKIELTO:\n"; $edi_order .= "OSTOTILRIV.OTR_YKSIKKO:\n"; $edi_order .= "*RE OSTOTILRIV {$i}\n"; } $edi_order .= "*ME\n"; $edi_order .= "*IE"; if (!PUPE_UNICODE) { $edi_order = iconv("UTF-8", "ISO-8859-1//TRANSLIT", $edi_order); } $filename = $magento_api_ht_edi . "/magento-order-{$order['increment_id']}-" . date("Ymd") . "-" . md5(uniqid(rand(), true)) . ".txt"; file_put_contents($filename, $edi_order); return true; }
} if ($rappari != $edrappari) { unset($valitut); $tee = "JATKA"; } if (!isset($edrappari) or $rappari == "" and $edrappari != "") { $defaultit = "PÄÄLLE"; } $abcnimi = $ryhmanimet[$abcrajaus]; echo " <form method='post' autocomplete='off'>\n <input type='hidden' name='tee' value='RAPORTOI'>\n <input type='hidden' name='osasto' value='{$osasto}'>"; foreach ($tuoryh as $tuoteryhma) { echo "<input type='hidden' name='tuoryh[]' value='{$tuoteryhma}'>"; } echo "\n <input type='hidden' name='ytunnus' value='{$ytunnus}'>\n <input type='hidden' name='edrappari' value='{$rappari}'>\n <input type='hidden' name='toimittajaid' value='{$toimittajaid}'>\n <input type='hidden' name='asiakasid' value='{$asiakasid}'>\n <input type='hidden' name='tuotemerkki' value='{$tuotemerkki}'>\n <input type='hidden' name='asiakasno' value='{$asiakasno}'>\n <input type='hidden' name='asiakasosasto' value='{$asiakasosasto}'>\n <input type='hidden' name='abcrajaus' value='{$abcrajaus}'>\n <input type='hidden' name='abcrajaustapa' value='{$abcrajaustapa}'>\n <input type='hidden' name='KAIKKIJT' value='{$KAIKKIJT}'>\n\n <table>\n <tr><th>" . t("Osasto") . "</th><td colspan='3'>{$osasto} {$trow['selitetark']}</td></tr>\n <tr>\n <th>" . t("Tuoteryhmä") . "</th>\n <td colspan='3'>\n "; foreach ($tuoryh as $tuoteryhma) { $tuoteryhma_avainsana = search_array_key_for_value_recursive($srow, 'selite', $tuoteryhma); //search_array_key_for_value_recursive funktio tukee monen solun löytymistä haettavasta array:stä. //Tässä tapauksessa tiedämme, että srow array:stä löytyy kullakin selitteellä vain yksi solu niin voimme viitata $tuoteryhma_avainsana arrayn ensimmäiseen alkioon echo $tuoteryhma . ' ' . $tuoteryhma_avainsana[0]['selitetark'] . '<br/>'; } echo "\n </td>\n </tr>\n <tr><th>" . t("Toimittaja") . "</th><td colspan='3'>{$ytunnus} {$trow1['nimi']}</td></tr>\n <tr><th>" . t("Tuotemerkki") . "</th><td colspan='3'>{$tuotemerkki}</td></tr>\n <tr><th>" . t("ABC-rajaus") . "</th><td colspan='3'>{$abcnimi}</td></tr>\n <tr><th>" . t("Asiakasosasto") . "</th><td colspan='3'>{$asiakasosasto}</td></tr>\n <tr><th>" . t("Asiakas") . "</th><td colspan='3'>{$asiakasno} {$trow2['nimi']}</td></tr>\n <tr><th>" . t("JT") . "</th><td colspan='3'>{$KAIKKIJT}</td></tr>"; echo " <tr><td class='back'><br></td></tr>"; echo "<tr>"; echo "<td class='back'></td>"; echo "<th colspan='3'>", t("Alkupäivämäärä (pp-kk-vvvv)"), "</th>"; echo "<td class='back'></td>"; echo "<th colspan='3'>", t("Loppupäivämäärä (pp-kk-vvvv)"), "</th>"; echo "</tr>"; for ($i = 1; $i < 13; $i++) { echo "<tr>"; echo "<th>", t("Kuukausi"), " {$i}</th>";
// loopataan tuotteet läpi foreach ($valmistettavat_tuotteet as $tuoterivi) { // Jos yhteensänäkymä, kerätään vaan data ja continue if ($ehdotetut_valmistukset == 'valmistuslinjoittain') { $valmistukset_yhteensa[$tuoterivi['valmistuslinja']]['valmistusmaara'] += $tuoterivi["valmistussuositus"]; $valmistukset_yhteensa[$tuoterivi['valmistuslinja']]['yhteensa_kpl'] += $tuoterivi["valmistussuositus"]; $valmistukset_yhteensa[$tuoterivi['valmistuslinja']]['valmistusaika_sekunneissa'] += $tuoterivi['valmistusaika']; continue; } if ($tuoterivi['valmistuslinja'] != $EDlinja or $EDlinja === false) { $kumulatiivinen_valmistusaika = 0; $valmistuspaiva = 1; $kapasiteetti_varaus = 0; } // Haetaan valmistuslinjan tiedot (päiväkapasiteetti) $tuoterivin_valmistuslinja = search_array_key_for_value_recursive($valmistuslinjat, 'selite', $tuoterivi['valmistuslinja']); // Jos päiväkapasiteettiä ei ole syötetty, laitetaan 24h $paivakapasiteetti = $tuoterivin_valmistuslinja[0]['selitetark_2'] == 0 ? 86400 : $tuoterivin_valmistuslinja[0]['selitetark_2']; $valmistuksen_kokonaiskesto = $tuoterivi['valmistusaika']; // Lasketaan valmistuksien kumulatiivistä valmistusaikaa per linja $kumulatiivinen_valmistusaika += $valmistuksen_kokonaiskesto; // Lasketaan onko tällä päivällä vapaata aikaa $vapaa_paivakapasiteetti = $paivakapasiteetti - $kapasiteetti_varaus - $valmistuksen_kokonaiskesto; // Valmistus mahtuu tälle päivälle if ($vapaa_paivakapasiteetti >= 0) { $kapasiteetti_varaus += $valmistuksen_kokonaiskesto; } else { // Valmistus ei mahdu päivälle // Katsotaan varattu kapasiteetti päivissä, jotta tiedetään miltä päivältä tämä valmistus pitää aloittaa $kesto_paivissa = floor($kapasiteetti_varaus / $paivakapasiteetti); $kesto_paivissa = $kesto_paivissa == 0 ? 1 : $kesto_paivissa;
function hae_asiakasalet($request) { global $kukarow, $yhtiorow; $tuotenumerot = array_keys($request['tuotteet']); $tuote_where = "AND status NOT IN ('P','X')"; if (!empty($request['nayta_poistetut'])) { $tuote_where = ""; } $query = "SELECT *\n FROM tuote\n WHERE yhtio = '{$kukarow['yhtio']}'\n AND tuoteno IN ('" . implode("','", $tuotenumerot) . "')\n {$tuote_where}\n AND aleryhma != ''\n ORDER BY tuote.aleryhma ASC, tuote.nimitys ASC"; $result = pupe_query($query); $tuotteet = array(); $palautettavat_kentat = "hinta,netto,ale,hintaperuste"; while ($tuote = mysql_fetch_assoc($result)) { if (!empty($request['valittu_asiakas'])) { $laskurow = array(); //haetaan asiakkaan oma hinta $laskurow["ytunnus"] = $request['asiakas']["ytunnus"]; $laskurow["liitostunnus"] = $request['asiakas']["tunnus"]; $laskurow["vienti"] = $request['asiakas']["vienti"]; $laskurow["alv"] = $request['asiakas']["alv"]; $laskurow["valkoodi"] = $request['asiakas']["valkoodi"]; $laskurow["maa"] = $request['asiakas']["maa"]; $laskurow['toim_ovttunnus'] = $request['asiakas']["toim_ovttunnus"]; $laskurow['liitostunnus'] = $request['valittu_asiakas']; $alehinnat = alehinta($laskurow, $tuote, 1, '', '', '', $palautettavat_kentat, '', ''); } else { $alehinnat = alehinta(array(), $tuote, 1, '', '', '', $palautettavat_kentat, '', '', $request['valittu_asiakasryhma']); } $query = "SELECT *\n FROM tuotteen_toimittajat\n WHERE yhtio = '{$kukarow['yhtio']}'\n AND tuoteno = '{$tuote['tuoteno']}'\n ORDER BY jarjestys ASC\n LIMIT 1"; $tuotteen_toimittaja_result = pupe_query($query); $tuotteen_toimittaja_row = mysql_fetch_assoc($tuotteen_toimittaja_result); $alennettu_hinta = (1 - $alehinnat['ale']['ale1'] / 100) * $tuote['myyntihinta']; $alennusryhma = search_array_key_for_value_recursive($request['aleryhmat'], 'ryhma', $tuote['aleryhma']); if ($alennettu_hinta == 0) { $kateprosentti = number_format(0, 2); } else { $kateprosentti = number_format((1 - $tuote['kehahin'] / $alehinnat['hinta']) * 100, 2); } $status_array = array('A' => t('Aktiivi'), 'P' => t('Poistettu'), 'T' => t('Tilaustuote')); $tuote_temp = array('aleryhma' => $alennusryhma[0], 'tuoteno' => $tuote['tuoteno'], 'tuote_nimi' => $tuote['nimitys'], 'kappalemaara' => 1, 'yksikko' => $tuote['yksikko'], 'paivitys_pvm' => $tuote['muutospvm'], 'ostohinta' => number_format($tuotteen_toimittaja_row['ostohinta'], 2), 'kehahin' => number_format($tuote['kehahin'], 2), 'ovh_hinta' => number_format($tuote['myyntihinta'], 2), 'ryhman_ale' => number_format($alennettu_hinta, 2), 'hinnasto_hinta' => ($alehinnat['hintaperuste'] == 2 or $alehinnat['hintaperuste'] == 5) ? number_format($alehinnat['hinta'], 2) : '', 'status' => $status_array[$tuote['status']], 'ale_prosentti' => '', 'tarjous_hinta' => '', 'alennus_prosentti' => '', 'kate_prosentti' => $kateprosentti); $tuotteet[] = $tuote_temp; } return $tuotteet; }
function echo_valmistukset_joissa_raaka_aine_ei_riita($request) { global $kukarow, $yhtiorow; $tulostettu = false; echo "<table>"; foreach ($request['valmistukset'] as $valmistus) { foreach ($valmistus['tilausrivit'] as $tilausrivi) { if ($request['esitysmuoto'] == 'A') { echo "<thead>"; echo "<tr>"; echo "<th>" . t('Valmisteen tuoteno') . "</th>"; echo "<th>" . t('Valmisteen nimitys') . "</th>"; echo "<th>" . t('Valmistusnumero') . "</th>"; echo "<th>" . t('Valmistuslinja') . "</th>"; echo "<th>" . t('Valmistetaan kpl') . "</th>"; echo "<th>" . t('Valmistuksen tila') . "</th>"; echo "<th>" . t('Keräyspäivä') . "</th>"; echo "<th>" . t('Valmistuspäivä') . "</th>"; echo "</tr>"; echo "</thead>"; echo "<tbody>"; echo "<tr class='aktiivi'>"; echo "<td>"; echo $tilausrivi['tuoteno']; echo "</td>"; echo "<td>"; echo $tilausrivi['nimitys']; echo "</td>"; echo "<td>"; echo $tilausrivi['lasku_tunnus']; echo "</td>"; echo "<td>"; $valmistuslinja = search_array_key_for_value_recursive($request['valmistuslinjat'], 'selite', $tilausrivi['valmistuslinja']); $valmistuslinja = $valmistuslinja[0]; if (empty($valmistuslinja)) { echo t('Ei valmistuslinjaa'); } else { echo $valmistuslinja['selitetark']; } echo "</td>"; echo "<td>"; echo $tilausrivi['valmistettava_kpl']; echo "</td>"; echo "<td>"; $laskutyyppi = $tilausrivi['tila']; $alatila = $tilausrivi['alatila']; require 'inc/laskutyyppi.inc'; echo $laskutyyppi . ' ' . $alatila; echo "</td>"; echo "<td>"; echo date('d.m.Y', strtotime($tilausrivi['kerayspvm'])); echo "</td>"; echo "<td>"; echo date('d.m.Y', strtotime($tilausrivi['toimaika'])); echo "</td>"; echo "</tr>"; echo "<tr>"; echo "<td colspan='8'>"; echo " "; echo "</td>"; echo "</tr>"; echo "</tbody>"; } if (!$tulostettu and $request['esitysmuoto'] == 'B') { echo "<thead>"; echo "<tr>"; echo "<th>" . t('Raaka-aineen tuoteno') . "</th>"; echo "<th>" . t('Raaka-aineen nimitys') . "</th>"; echo "<th>" . t('Valmistusnumero') . "</th>"; echo "<th>" . t('Saldo') . "</th>"; echo "<th>" . t('Hyllyssä') . "</th>"; echo "<th>" . t('Myytävissä') . "</th>"; echo "<th>" . t('Tilattu') . "</th>"; echo "<th>" . t('Toimittaja') . "</th>"; echo "</tr>"; echo "</thead>"; $tulostettu = true; } echo "<tbody>"; foreach ($tilausrivi['raaka_aineet'] as $raaka_aine) { echo "<tr class='aktiivi'>"; echo "<td>"; echo $raaka_aine['tuoteno']; echo "</td>"; echo "<td>"; echo $raaka_aine['nimitys']; echo "</td>"; echo "<td>"; echo $raaka_aine['lasku_tunnus']; echo "</td>"; echo "<td>"; echo $raaka_aine['saldo']; echo "</td>"; echo "<td>"; echo $raaka_aine['hyllyssa']; echo "</td>"; echo "<td>"; echo $raaka_aine['myytavissa']; echo "</td>"; echo "<td>"; echo $raaka_aine['tilattu']; echo "</td>"; echo "<td>"; echo $raaka_aine['toimittaja']; echo "</td>"; echo "</tr>"; } if ($request['esitysmuoto'] == 'A') { echo "<tr>"; echo "<td class='back' colspan='8'>"; echo " "; echo "</td>"; echo "</tr>"; echo "<tr>"; echo "<td class='back' colspan='8'>"; echo " "; echo "</td>"; echo "</tr>"; } echo "</tbody>"; } } echo "</table>"; }
if (!empty($request['tallenna_exceliin'])) { $excel_filepath = generoi_custom_excel_tiedosto($request); echo_tallennus_formi($excel_filepath, t('Saldovahvistus')); } echo_saldovahvistukset($request); } elseif ($request['tee'] == 'NAYTATILAUS' or $request['tee'] == 'tulosta_saldovahvistus_pdf') { //requestissa tulee tietyn ytunnuksen lasku_tunnuksia. Tällöin $laskut arrayssa on vain yksi solu $laskut = hae_myyntilaskuja_joilla_avoin_saldo($request, true); //Jos saldovahvistus_rivi löytyy jo valittujen rivien joukosta, niin haetaan riville tallennetut viesti ja päivämäärä sessiosta $lasku_tunnukset_temp = implode('', $laskut['lasku_tunnukset']); if (array_key_exists($lasku_tunnukset_temp, $_SESSION['valitut_laskut'])) { $laskut['saldovahvistus_viesti'] = search_array_key_for_value_recursive($request['saldovahvistus_viestit'], 'selite', $_SESSION['valitut_laskut'][$lasku_tunnukset_temp]['saldovahvistus_viesti']); $laskut['saldovahvistus_viesti'] = $laskut['saldovahvistus_viesti'][0]; $laskut['laskun_avoin_paiva'] = $_SESSION['valitut_laskut'][$lasku_tunnukset_temp]['laskun_avoin_paiva']; } else { $laskut['saldovahvistus_viesti'] = search_array_key_for_value_recursive($request['saldovahvistus_viestit'], 'selite', $request['saldovahvistus_viesti']); $laskut['saldovahvistus_viesti'] = $laskut['saldovahvistus_viesti'][0]; $laskut['laskun_avoin_paiva'] = $request['paiva']; } if ($request['ryhmittely_tyyppi'] == 'ytunnus') { $boss = true; } else { $boss = false; } $laskut['tiliotepvm'] = "{$request['vv']}-{$request['kk']}-{$request['pp']}"; //Valittu saldovahvistusviesti $pdf_filepath = hae_saldovahvistus_pdf($laskut, $boss); if ($request['tee'] == 'NAYTATILAUS') { echo file_get_contents($pdf_filepath); } elseif ($request['tee'] == 'tulosta_saldovahvistus_pdf') { $kirjoitin_komento = hae_kayttajan_kirjoitin();
function parsi_paivat(&$request) { if (!empty($request['valittu_tilikausi'])) { $tilikausi_temp = search_array_key_for_value_recursive($request['tilikaudet'], 'tunnus', $request['valittu_tilikausi']); //funktion on tarkoitus palauttaa ainoastaan yksi tilikausi, siksi voimme viitata indeksillä $request['alku_aika'] = $tilikausi_temp[0]['tilikausi_alku']; $request['loppu_aika'] = $tilikausi_temp[0]['tilikausi_loppu']; } else { $request['alku_aika'] = $request['vva'] . '-' . $request['kka'] . '-' . $request['ppa']; $request['loppu_aika'] = date('Y-m-d', strtotime($request['vvl'] . '-' . $request['kkl'] . '-' . $request['ppl'] . ' + 1 day')); } }