{"id":421,"date":"2016-04-14T14:35:49","date_gmt":"2016-04-14T12:35:49","guid":{"rendered":"https:\/\/moijari.com\/?p=421"},"modified":"2016-12-29T22:07:40","modified_gmt":"2016-12-29T20:07:40","slug":"prosessit-jatkoa-2-2","status":"publish","type":"post","link":"https:\/\/moijari.com\/?p=421","title":{"rendered":"Prosessit jatkoa 2"},"content":{"rendered":"<p>Kaikki oikeudet tietenkin pid\u00e4tet\u00e4\u00e4n. Viimeinen versio ohjelmasta l\u00f6ytyy seuraavasta linkist\u00e4: <a href=\"https:\/\/moijari.com:5002\">moijari.com:5002<\/a><\/p>\n<p>Edellisest\u00e4 terttu postista on kulunut jo sen verran paljon aikaa (tuo aiempi satunnaislukugeneraattori+=opinn\u00e4yte) ett\u00e4 nyt tuli tarve jatkaa. T\u00e4ss\u00e4 postissa ei aiemmasta poiketen ole mukana koodia, t\u00e4m\u00e4 on enemm\u00e4nkin pohdiskelua tai jaarittelua\u00a0(25000 sivuhakua muuten). Olen aiemmin kirjoittanut vierasavainten k\u00e4sittelyn sy\u00f6tt\u00f6lomaketta varten (<a href=\"https:\/\/moijari.com\/?p=260\">https:\/\/moijari.com\/?p=260<\/a>)(<a href=\"https:\/\/moijari.com\/?p=209\">https:\/\/moijari.com\/?p=209<\/a>). Seuraavaksi ohjelmassa on save nappulan tarvitsema prosessien hallinta. N\u00e4m\u00e4 ovat oikeastaan saman toiminnon toistoa. T\u00e4ll\u00e4 hetkell\u00e4 ajatuksena on, ett\u00e4 &#8220;vierasavaink\u00e4sittelyn&#8221; lis\u00e4ksi tarvitaan ainakin:<\/p>\n<p>-ehtolause (esimerkiksi tilaus-toimitus tietovirrassa toimitusp\u00e4iv\u00e4&lt;=kuluvap\u00e4iv\u00e4 (toimitetaan vasta toimitusp\u00e4iv\u00e4n\u00e4), ja toimitus-laskutus tietovirrassa toimitettu==&#8221;1&#8243; (laskutetaan vasta toimituksen j\u00e4lkeen), varastosaldon laskennassa vapaasaldo&gt;tilattum\u00e4\u00e4r\u00e4) (sallitaan tilaus vain kun varastossa tilattu m\u00e4\u00e4r\u00e4 tuotteita)<br \/>\n-perusavainten t\u00e4ytt\u00e4minen (kun luodaan tilaus, tai\u00a0 automaattisesti uusi toimitus tai lasku).<br \/>\n-laskutoimitus (tilauksen summa=rivin summa, varastosaldo=varastosaldo+m\u00e4\u00e4r\u00e4, jne)<br \/>\n-summaus (tilauksen laskutettu m\u00e4\u00e4r\u00e4, kun tilauksessa on useampia laskuja)<br \/>\n-sijoitus (toimitettu=&#8221;1&#8243;, laskutettu=&#8221;1&#8243; jne.)<\/p>\n<p>Seuraavassa tilaus-sovelluksen m\u00e4\u00e4rittelyt:<\/p>\n<pre>('tilausnumero', 'tilauksen asiakasnumero', 'tilauksen asiakkaan nimi', 'tilausp\u00e4iv\u00e4', 'tilauksen summa')\r\n('tilausnumero', 'tilausrivin numero', 'tilauksen tuotenumero', \r\n 'tilauksen tuotteen nimi', 'tilauksen tuotteen hinta', 'tilattu m\u00e4\u00e4r\u00e4', 'rivin summa'<\/pre>\n<p>Ja seuraavassa tilauksen vierasavaimen p\u00e4\u00e4ss\u00e4 olevat tiedot asiakas ja tuote-sovellukset:<\/p>\n<pre>('asiakasnumero', 'asiakkaan nimi', 'asiakkaan osoite', 'asiakkaan postinumero',\r\n 'asiakkaan postitmp')\r\n('tuotenumero', 'tuotteen nimi', 'tuotteen hinta')<\/pre>\n<p>Ja seuraavassa noiden v\u00e4liset suhteet:<\/p>\n<pre>('sovellus'=\"tilaus\", 'fromsovellus'=\"asiakas\", 'tosovellus'=\"tilaus\")\r\n('sovellus'=\"tilaus\", 'fromsovellus'=\"tuote\", 'tosovellus'=\"tilaus\")<\/pre>\n<p>Eli kun t\u00e4ytet\u00e4\u00e4n tilaus tietueita, samanlaiset sarakkeet haetaan asiakas sovelluksesta. Tilauksen otsakkeessa on kent\u00e4t tilauksen asiakasnumero ja tilauksen asiakkaan nimi, joita vastaavat kent\u00e4t ovat asiakasnumero ja asiakkaan nimi. Tilauksen riveill\u00e4 taas on tilauksen tuotteen numero, tilauksen tuotteen nimi ja tilauksen tuotteen hinta. Jos tilaustietueille on m\u00e4\u00e4ritelty yksil\u00f6iv\u00e4 tieto jommasta kummasta, loput kent\u00e4t t\u00e4ytet\u00e4\u00e4n automaattisesti. Mik\u00e4 tahansa tilauksella oleva asiakkaan (tai tuotteen) tieto voidaan t\u00e4ytt\u00e4\u00e4, jos se on yksil\u00f6iv\u00e4, muut kent\u00e4t t\u00e4ytet\u00e4\u00e4n automaattisesti. Jos esimerkiksi t\u00e4ytet\u00e4\u00e4n asiakkaalle numero 1000, nimi haetaan automaattisesti, jos tuo asiakas numero 1000 on olemassa(l\u00e4hde tietovirta). Jos tilauksen tuotteen hintaan t\u00e4ytet\u00e4\u00e4n 10\u20ac, tuotteen muut tiedot haetaan tuotteelta, jonka hinta on ainoana tuotteena 10\u20ac.<\/p>\n<p>Seuraavassa laajennetaan t\u00e4t\u00e4 koko tilaus-toimitus-laskutus tietovirtaan:<\/p>\n<pre>('tilausnumero', 'tilauksen asiakasnumero', 'tilauksen asiakkaan nimi', 'tilausp\u00e4iv\u00e4',\r\n 'tilauksen summa')\r\n('tilausnumero', 'tilausrivin numero', 'tilauksen tuotenumero',\r\n 'tilauksen tuotteen nimi', 'tilauksen tuotteen hinta', 'tilattu m\u00e4\u00e4r\u00e4',\r\n 'tilauksen toimitettu m\u00e4\u00e4r\u00e4', 'tilauksen laskutettu m\u00e4\u00e4r\u00e4', 'tilausrivin summa')\r\n('toimitusnumero', 'toimituksen asiakasnumero', 'toimituksen asiakkaan nimi',\r\n 'toimituksen tilausp\u00e4iv\u00e4', 'toimitusp\u00e4iv\u00e4', 'toimituksen summa')\r\n('toimitusnumero', 'toimitusrivin numero', 'toimituksen tuotenumero',\r\n 'toimituksen tuotteen nimi', 'toimituksen tuotteen hinta', 'toimituksen tilattu m\u00e4\u00e4r\u00e4', 'toimitettu m\u00e4\u00e4r\u00e4', 'rivin summa')\r\n('laskunumero', 'laskun asiakasnumero', 'laskun asiakkaan nimi', 'laskun p\u00e4iv\u00e4',\r\n 'tilausp\u00e4iv\u00e4', 'toimitusp\u00e4iv\u00e4', 'er\u00e4p\u00e4iv\u00e4', 'laskun summa')\r\n('laskunumero', 'laskurivin numero', 'tuotenumero', 'tuotteen nimi', 'tuotteen hinta', \r\n 'laskurivin tilattu m\u00e4\u00e4r\u00e4', 'laskurivin toimitettu m\u00e4\u00e4r\u00e4', 'laskutettu m\u00e4\u00e4r\u00e4', 'rivin summa')\r\n('asiakasnumero', 'asiakkaan nimi', 'asiakkaan osoite', 'asiakkaan postinumero',\r\n 'asiakkaan postitmp')\r\n('tuotenumero', 'tuotteen nimi', 'tuotteen hinta', 'tuotteen varastosaldo')<\/pre>\n<p>Huomaathan ett\u00e4 t\u00e4ss\u00e4 ei ole esimerkiksi osoitteita, ne lis\u00e4t\u00e4\u00e4n tarvittaessa. Ajatus on l\u00f6yt\u00e4\u00e4 tekniset toiminnot, joilla ne saadaan toimimaan. Seuraavassa tietovirtam\u00e4\u00e4ritykset koko prosessista:<\/p>\n<pre>('sovellus'=\"tilaus\", 'fromsovellus'=\"asiakas\", 'tosovellus'=\"tilaus\")\r\n('sovellus'=\"tilaus\", 'fromsovellus'=\"tuote\", 'tosovellus'=\"tilaus\")\r\n('sovellus'=\"tilaus\", 'fromsovellus'=\"tilaus\", 'tosovellus'=\"toimitus\")\r\n('sovellus'=\"toimitus\", 'fromsovellus'=\"toimitus\", 'tosovellus'=\"laskutus\")<\/pre>\n<p>Lis\u00e4sin edelliseen tilaussovellukseen kent\u00e4t &#8217;tilauksen toimitettu m\u00e4\u00e4r\u00e4&#8217; ja &#8217;tilauksen laskutettu m\u00e4\u00e4r\u00e4&#8217; havainnollistaakseni prosessin kulkua takaisinp\u00e4in. Ensimm\u00e4isess\u00e4 tilausriville saadaan tieto, kuinka paljon tilausrivi\u00e4 on toimitettu, ja se kopioituu yksiselitteisesti toimituksen toimitettu m\u00e4\u00e4r\u00e4 kent\u00e4st\u00e4. Jos tilausrivi\u00e4 on toimitettu useammassa toimituksessa, sen pit\u00e4isi olla tietysti summa n\u00e4ist\u00e4 riveist\u00e4.<\/p>\n<p>Laskussa on taas &#8216;laskun tilattu m\u00e4\u00e4r\u00e4&#8217; kentt\u00e4, joka tulee yksiselitteisesti tilauksesta. Kentt\u00e4 toimii esimerkkin\u00e4, jossa kentt\u00e4 ei tule prosessin edellisest\u00e4 vaiheesta vaan hypp\u00e4\u00e4 taaksep\u00e4in. Ilmeinen vaihtoehto olisi lis\u00e4t\u00e4:<\/p>\n<pre>('sovellus'=\"laskutus\", 'fromsovellus'=\"tilaus\", 'tosovellus'=\"laskutus\")<\/pre>\n<p>mutta t\u00e4ss\u00e4 on muitakin kentti\u00e4 (asiakkaan tiedot, tuotetiedot), jotka kopioituisivat. T\u00e4ss\u00e4 taas laskulla voi jossakin tapauksessa olla useampia tilauksia, jolloin laskun tilattu m\u00e4\u00e4r\u00e4 kentt\u00e4\u00e4n tulisi niiden summa. Hmmmm.<\/p>\n<p>Samoin lis\u00e4sin tuotetietoihin &#8216;tuotteen vapaasaldo&#8217;-kent\u00e4n. Se havainnollistaa ulkopuolista kentt\u00e4\u00e4, jota ei talleteta k\u00e4sitelt\u00e4v\u00e4\u00e4n sovellukseen, mutta sill\u00e4 kuitenkin tehd\u00e4\u00e4n k\u00e4sittely\u00e4 tai laskentaa ja se talletetaan sovelluksen ulkopuolelle. T\u00e4ss\u00e4 oletetetaan ett\u00e4 meill\u00e4 on vain yksi varasto ja toimitukset l\u00e4htev\u00e4t samana p\u00e4iv\u00e4n\u00e4 (vapaasaldo tietysti vaihtelee toimitusp\u00e4iv\u00e4st\u00e4(-ajasta) johtuen), oikeasti &#8216;vapaasaldo&#8217; olisi esimerkiksi (&#8216;varasto&#8217;, &#8216;varastopaikka&#8217;, &#8216;tuotenumero&#8217;, &#8216;toimitusp\u00e4iv\u00e4&#8217;, &#8216;vapaasaldo&#8217;) tai vastaavalla tietueella. Edellisist\u00e4 &#8216;varasto&#8217; olisi valinnaisena tietona tilauksessa tai asiakkaalle m\u00e4\u00e4ritelt\u00e4isiin l\u00e4hin varasto, tai se voitaisiin p\u00e4\u00e4tell\u00e4 yksiselitteisesti toimituksessa.<\/p>\n<p>Laskussa on my\u00f6s &#8216;laskun toimitettu m\u00e4\u00e4r\u00e4&#8217; joka tulee yksiselitteisesti toimituksesta\/toimituksista.<\/p>\n<p>Jos j\u00e4rjestelm\u00e4ss\u00e4 olisi asiakaskohtainen hinta, esimerkiksi (&#8216;tuotenumero&#8217;, &#8216;asiakasnumero&#8217;, &#8216;tuotteen hinta&#8217;), vierasavainhaku palauttaisi kaksi tietuetta, tuotekohtaisen tuotteen hinnan ja asiakaskohtaisen hinnan (jos molemmat olisivat sy\u00f6tettyn\u00e4). Yksinkertaisessa versiossa tilauksen tekij\u00e4 valitsisi useammasta vaihtoehdosta, se toimisi my\u00f6s muissa valinnoissa (jos esimerkiksi toimittajan valinta tilauksella palauttaisi kaksi toimittajaa). Hmmm.<\/p>\n<p>T\u00e4ss\u00e4 on versio tilauksesta, ja toimituksesta jossa varasto on tilauksen riveill\u00e4 ja toimituksessa toimituksen otsakkeella. T\u00e4ss\u00e4 tapauksessa jos tilatut tavarat tulevat varastoista 1 ja 2 tilaus jakaantuu kahdeksi toimitukseksi (esimerkiksi tuotevarastolle ja tarvikevarastolle).<\/p>\n<pre>('tilausnumero', 'tilauksen asiakasnumero', 'tilauksen asiakkaan nimi', 'tilausp\u00e4iv\u00e4',\r\n 'tilauksen summa')\r\n('tilausnumero', 'tilausrivin numero', 'tilauksen tuotenumero',\r\n 'tilauksen tuotteen nimi', 'tilauksen tuotteen hinta', 'tilattu m\u00e4\u00e4r\u00e4',\r\n 'varasto', 'tilauksen toimitettu m\u00e4\u00e4r\u00e4', 'tilauksen laskutettu m\u00e4\u00e4r\u00e4', 'tilausrivin summa')\r\n('toimitusnumero', 'toimittava varasto', 'toimituksen asiakasnumero', 'toimituksen asiakkaan nimi',\r\n 'toimituksen tilausp\u00e4iv\u00e4', 'toimitusp\u00e4iv\u00e4', 'toimituksen summa')\r\n('toimitusnumero', 'toimitusrivin numero', 'toimituksen tuotenumero',\r\n 'toimituksen tuotteen nimi', 'toimituksen tuotteen hinta', 'toimituksen tilattu m\u00e4\u00e4r\u00e4',\r\n 'toimitettu m\u00e4\u00e4r\u00e4', 'rivin summa')\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Kaikki oikeudet tietenkin pid\u00e4tet\u00e4\u00e4n. Viimeinen versio ohjelmasta l\u00f6ytyy seuraavasta linkist\u00e4: moijari.com:5002 Edellisest\u00e4 terttu postista on kulunut jo sen verran paljon aikaa (tuo aiempi satunnaislukugeneraattori+=opinn\u00e4yte) ett\u00e4 nyt tuli tarve jatkaa. T\u00e4ss\u00e4 postissa ei aiemmasta poiketen ole mukana koodia, t\u00e4m\u00e4 on enemm\u00e4nkin pohdiskelua tai jaarittelua\u00a0(25000 sivuhakua muuten). Olen aiemmin kirjoittanut vierasavainten k\u00e4sittelyn sy\u00f6tt\u00f6lomaketta varten (https:\/\/moijari.com\/?p=260)(https:\/\/moijari.com\/?p=209). Seuraavaksi ohjelmassa&hellip; <a class=\"more-link\" href=\"https:\/\/moijari.com\/?p=421\">Continue reading <span class=\"screen-reader-text\">Prosessit jatkoa 2<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[5],"tags":[],"_links":{"self":[{"href":"https:\/\/moijari.com\/index.php?rest_route=\/wp\/v2\/posts\/421"}],"collection":[{"href":"https:\/\/moijari.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/moijari.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/moijari.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/moijari.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=421"}],"version-history":[{"count":24,"href":"https:\/\/moijari.com\/index.php?rest_route=\/wp\/v2\/posts\/421\/revisions"}],"predecessor-version":[{"id":446,"href":"https:\/\/moijari.com\/index.php?rest_route=\/wp\/v2\/posts\/421\/revisions\/446"}],"wp:attachment":[{"href":"https:\/\/moijari.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=421"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/moijari.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=421"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/moijari.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=421"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}