WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Räkna ut pris (https://www.wn.se/forum/showthread.php?t=34352)

Davve 2009-01-09 15:08

Jag har en sida i ASP och där har jag priser på mina tjänster. Priserna varierar samtidigt som dollarn gör det, så jag skulle vilja i koden skriva pris i dollar och sedan hhämta kursen på något sätt så att på sidan visas rätt pris i SEK

ÄR det möjligt? Hur?

Ara 2009-01-09 16:07

Nu blir det lite konstigt här.

Om du räknar ut dina priser medför det att dom kommer att ändras hela tiden vilket inte är bra.

Tex vilket pris gäller? dollarpriset när du skriver fakturan? eller priset när utvecklingen börjar? eller priset kunden ser första gången på din sida?

Ett annat exempel är att du har en budget i dollar (tex 1000$) och räknar ut att det blir tex 8000SEK och köper tjäster/varor för dom, men sen när räknar ihop allt
så märker du att 8000SEK inte längre än 1000$ utan kanske 1200$.... Vilket att du håller budgeten i en valuta men inte i den andra.

Du ska ha ett pris i dollar och ett i SEK, annars kommer du få mycket problem.
Har du mycket kunder som betalar i dollar så skaffa ett dollarkonto på någon bank.

Valutor är inte helt lätt.

crazzy 2009-01-09 16:27

Annars om du vill köra som du gör nu kan du ju anropa google med queryn "XX dollars in SEK" och plocka ut resultatet med ett regexp.

Jonas 2009-01-09 16:28

Du kan hämta valutan här tex:

https://mobilbank.swedbank.se/banking/swedb...service=valutor

digiArt 2009-01-09 16:41

Davve, testa följande: http://www.webservicex.net/WCF/ServiceDeta...ils.aspx?SID=18

Undoredoo 2009-01-09 17:03

Citat:

Originally posted by crazzy@Jan 9 2009, 17:27
Annars om du vill köra som du gör nu kan du ju anropa google med queryn XX dollars in SEK och plocka ut resultatet med ett regexp.

Jag är troligen helt okunnig, men hur hämtar man in denna information till sitt eget script egentligen? Det måste vara en metod som gått mig helt förbi, men onekligen något som jag gärna tar del av. :)

Samma sak gäller Swedbank-kurserna.

Ara 2009-01-09 17:26

Lösa problemet är inget svårt, men man gör sig en björntjänst om man gör det.

Helix 2009-01-09 17:37

Ta digiArt förslag. Ha en liten databas som hämtar och uppdaterar kurser en gång om dagen. Sedan kan du plocka ut kursen därifrån under dagen. Jag gör det på samma sätt och har en del sidor som använder då samma databas. Bekvämt helt enkelt.

Davve 2009-01-09 17:46

Nu har jag kommit lite längre, all kod är klar som räknar ut priser. Jag includar en sida som visar dagens kurs i format 7.98

Sidan jag includar är en ASP sida. Finns det någon möjlighet att gratis hämta in dagens dollarkurs där? Annars måste jag in och ändra varje dag

Ara 2009-01-09 18:15

http://coinmill.com/ där kan du hämta.. men som jag sa, tänk på hur konstigt det kan bli.

digiArt 2009-01-09 18:37

Citat:

Originally posted by Davve@Jan 9 2009, 18:46
Nu har jag kommit lite längre, all kod är klar som räknar ut priser. Jag includar en sida som visar dagens kurs i format 7.98

Sidan jag includar är en ASP sida. Finns det någon möjlighet att gratis hämta in dagens dollarkurs där? Annars måste jag in och ändra varje dag

Mitt förslag kostar zip, nada, niente

Davve 2009-01-09 21:17

Tack för alla svar men jag hittar fortfarande inte något som hjälper mig.

Jag vill alltså att det med klartext genererar pris för en dollar i svenska kronor i format 7.68 på min sida. Hur lyckas man?

crazzy 2009-01-09 21:41

http://www.google.com/search?hl=xx-pirate&...K&btnG=Searrrch

Det borde inte vara så svårt att bara köra en file_get_contents() mot den urlen och sedan med hjälp av regexp plocka ut vad du vill ha?

Nicklas 2009-01-09 21:59

Läs här och kontakta Forex så får du ta del av deras valutakurser kostnadsfritt i Xml-format om du tecknar avtal med dem
http://www.forex.se/page.asp?sectionId=402

Jonas 2009-01-09 22:11

Nicklas: Är inte Forex kurser exkl. deras avgifter?

Har kollat emot Swedbank, Valuta.se, Forex, Google, mfl och alla har visat olika kurser.
Vilken skall man gå efter?

Nicklas 2009-01-09 22:20

Citat:

Originally posted by Jonas@Jan 9 2009, 22:11
Nicklas: Är inte Forex kurser exkl. deras avgifter?
Har kollat emot Swedbank, Valuta.se, Forex, Google, mfl och alla har visat olika kurser.
Vilken skall man gå efter?

Bra fråga och jag har inget bra svar på den.
Ska man erbjuda kurser i en tjänst så ska man nog försöka använda den bank som man växlar hos.

Ara 2009-01-09 22:38

Citat:

Originally posted by Davve@Jan 9 2009, 22:17
Tack för alla svar men jag hittar fortfarande inte något som hjälper mig.

Jag vill alltså att det med klartext genererar pris för en dollar i svenska kronor i format 7.68 på min sida. Hur lyckas man?

Kolla på länken jag posta.

Så hämtar dollarkursen (men scriptet) , sen spara du det i en variabel och tar det gånger ditt timpris och tittut....
Du har ditt timpris i dollar som uppdateras live på din sida.

easy as apple pie

Conny Westh 2009-01-10 02:20

Det kan ju vara klokt att försöka använda samma valutakälla som du sen kommer att använda för växling av valutan. Jag menar att du använder samma bank som klla för själva växelkursen där du sen växlar in pengarna till svenska kronor, annar skommer växelkurserna inte att stäma alls med vad du själv får betalt av banken, vilket gör att du kan komma att drabbas av onödigt höga valutakostnader.

phonic 2009-04-14 22:18

Färdigt skript:


Kod:

<?php
 
/*
* File: CurrencyConverter.php
* Author: Simon Jarvis
* Copyright: 2005 Simon Jarvis
* Date: 10/12/05
* Link: http://www.white-hat-web-design.co.uk/articles/php-currency-conversion.php
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details:
* http://www.gnu.org/licenses/gpl.html
*
*/
 
class CurrencyConverter {
 
  var $xml_file = "http://www.ecb.int/stats/eurofxref/e...aily.xml";
  var $mysql_host, $mysql_user, $mysql_pass, $mysql_db, $mysql_table;
  var $exchange_rates = array();
 
  //Load Currency Rates
  function CurrencyConverter($host,$user,$pass,$db,$tb) {
  $this->mysql_host = $host;
  $this->mysql_user = $user;
  $this->mysql_pass = $pass;
  $this->mysql_db = $db;
  $this->mysql_table = $tb;
 
  $this->checkLastUpdated();
 
  $conn = mysql_connect($this->mysql_host,$this->mysql_user,$this->mysql_pass);
 
  $rs = mysql_select_db($this->mysql_db,$conn);
 
  $sql = "SELECT * FROM ".$this->mysql_table;
 
  $rs = mysql_query($sql,$conn);
 
  while($row = mysql_fetch_array($rs)) {
    $this->exchange_rates[$row['currency']] = $row['rate'];   
  }
  }
 
  /* Perform the actual conversion, defaults to £1.00 GBP to USD */
  function convert($amount=1,$from="GBP",$to="USD",$decimals=2) {
  return(number_format(($amount/$this->exchange_rates[$from])*$this->exchange_rates[$to],$decimals));
  }
 
  /* Check to see how long since the data was last updated */
  function checkLastUpdated() {
  $conn = mysql_connect($this->mysql_host,$this->mysql_user,$this->mysql_pass);
 
  $rs = mysql_select_db($this->mysql_db,$conn);
 
  $sql = "SHOW TABLE STATUS FROM ".$this->mysql_db." LIKE '".$this->mysql_table."'";
 
  $rs = mysql_query($sql,$conn);
 
  if(mysql_num_rows($rs) == 0 ) {
    $this->createTable();
  } else {
    $row = mysql_fetch_array($rs);
    if(time() > (strtotime($row["Update_time"])+(12*60*60)) ) {
      $this->downloadExchangeRates();   
    }
  }
  }
 
  /* Download xml file, extract exchange rates and store values in database */
  function downloadExchangeRates() {
  $currency_domain = substr($this->xml_file,0,strpos($this->xml_file,"/"));
  $currency_file = substr($this->xml_file,strpos($this->xml_file,"/"));
  $fp = @fsockopen($currency_domain, 80, $errno, $errstr, 10);
  if($fp) {
    $out = "GET ".$currency_file." HTTP/1.1\r\n";
    $out .= "Host: ".$currency_domain."\r\n";
    $out .= "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8) Gecko/20051111 Firefox/1.5\r\n";
    $out .= "Connection: Close\r\n\r\n";
    fwrite($fp, $out);
    while (!feof($fp)) {
      $buffer .= fgets($fp, 128);
    }
    fclose($fp);
 
    $pattern = "{<Cube\s*currency='(\w*)'\s*rate='([\d\.]*)'/>}is";
    preg_match_all($pattern,$buffer,$xml_rates);
    array_shift($xml_rates);
 
    for($i=0;$i<count($xml_rates[0]);$i++) {
      $exchange_rate[$xml_rates[0][$i]] = $xml_rates[1][$i];
    }
 
    $conn = mysql_connect($this->mysql_host,$this->mysql_user,$this->mysql_pass);
 
    $rs = mysql_select_db($this->mysql_db,$conn);
     
    foreach($exchange_rate as $currency=>$rate) {
      if((is_numeric($rate)) && ($rate != 0)) {
        $sql = "SELECT * FROM ".$this->mysql_table." WHERE currency='".$currency."'";
        $rs = mysql_query($sql,$conn) or die(mysql_error());
        if(mysql_num_rows($rs) > 0) {
        $sql = "UPDATE ".$this->mysql_table." SET rate=".$rate." WHERE currency='".$currency."'";
        } else {
        $sql = "INSERT INTO ".$this->mysql_table." VALUES('".$currency."',".$rate.")";
        }
        $rs = mysql_query($sql,$conn) or die(mysql_error());
      }
    } 
  }
  }
 
  /* Create the currency exchange table */
  function createTable() {
  $conn = mysql_connect($this->mysql_host,$this->mysql_user,$this->mysql_pass);
 
  $rs = mysql_select_db($this->mysql_db,$conn);
 
  $sql = "CREATE TABLE ".$this->mysql_table." ( currency char(3) NOT NULL default '', rate float NOT NULL default '0', PRIMARY KEY(currency) ) ENGINE=MyISAM";
 
  $rs = mysql_query($sql,$conn) or die(mysql_error());
 
  $sql = "INSERT INTO ".$this->mysql_table." VALUES('EUR',1)";
 
  $rs = mysql_query($sql,$conn) or die(mysql_error());
 
  $this->downloadExchangeRates(); 
  }
 
}
 
?>




Kod:

<?php
  include('test.php');
  $x = new CurrencyConverter('localhost','user','pass','databas','your_table_name');


?>


1GBP = <? echo $x->convert(1,'GBP','USD'); ?> USD<br>

1SEK = <?  echo $x->convert(1,'SEK','USD'); ?> USD<br>

1USD = <?  echo $x->convert(1,'USD','SEK'); ?> SEK<br>


dotvoid 2009-04-15 11:40

Bokföringsmässigt, som Conny Westh påpekar ovan, ska man väl egentligen hämta valutakurser från den bank som räknar om valutan. Dvs den bank som står för växlingen till en viss valuta. Annars kanske beräkningen av valutavinst och valutaförlust blir galen. Vet inte om skatteverket har något att säga om det. Om man använder ett valutakonto ska man ändå för bokföringens skull räkna om valutan till månadsgenomsnittet en gång i månaden.

Om man bara vill räkna om priser (utan att börja dra upp faktiska valutavinster/förluster vilket man ju dock måste redovisa senare) är väl ändå det rimligaste att man går till den mest tillförlitliga källan, dvs Sveriges Riksbank. Där kan du få fram månadsgenomsnittet, dagskurser mot olika valutor samt även historik bakåt. http://www.riksbank.se/templates/Page.aspx?id=15867. Jobbar man med Euro som företagsvaluta är nog det bästa att basera sina omräkningspriser på valutakurserna som publiceras av ECB.

Valutaomräknaren i Google och den från webservicex.net är inte tillförlitliga och kan i vissa fall skilja avsevärt mot verkliga valutakurser. Det är bra och stabila verktyg för att kolla ungefärliga kurser eller publicera ungefärlig kursinformation - de är absolut inte tillförlitliga nog för en seriös företagare för valutaberäkningar.

martine 2009-04-15 16:19

Citat:

Originally posted by Jonas@Jan 9 2009, 23:11
Har kollat emot Swedbank, Valuta.se, Forex, Google, mfl och alla har visat olika kurser.
Vilken skall man gå efter?

Det finns ju ingen exakt kurs att gå efter eftersom valutorna säljs och köps varje sekund på börser, banker och växlingskontor. Mindre aktörer följer större aktörer som har större utrymme att förhandla en kurs. Ta någon slags medelsumma - eller ännu bättre kontrollera vad du som privatperson brukar/skulle få om du gör ett köp. Växlingskontor och banker har alltid något sämre valutakurs än den optimala för att göra lite vinst på det hela.

Viktigt om det förekommer i en webbshop är att göra klart att priserna alltid grundas på exempelvis SEK och faktureringen kommer ske i SEK alternativt faktureras i annan valuta i förhållande till den rådande valutakursen men utgångspunkt från SEK. Det gällande priset är alltså priset i SEK och inget annat - detta måste också kunderna upplysas om. (Förutsatt att det är så du har det, med bokföring i SEK.)


Alla tider är GMT +2. Klockan är nu 19:03.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson