'DESCRIPTION: X: Include: Fremdwährungsroutinen
'USEDBY: ALWAYS

'dim fw_einheiten as double
'dim fw_berechnung as string

'**********************************************************************************************
sub fw_open
  opentable( "xfwtgkrs")
  opentable( "xfw")
end sub

'**********************************************************************************************
sub fw_close
  closetable( "xfwtgkrs")
  closetable( "xfw")
end sub

'**********************************************************************************************
function fw_getkurs( fw_isocode as string, ankaufkurs as long, datum as long, tageskurse_ab as long) as double
dim hilfkurs as double

  hilfkurs = 0.0

  if datum <> 0 then
    if tageskurse_ab = 0 then
      if findkey( "xfwtgkrs", "fw_isocode", FW_ISOCODE, "DATUM", datum) = 1 then
        if ankaufkurs = 1 then
          hilfkurs = &xfwtgkrs.ankauf
        else
          hilfkurs = &xfwtgkrs.verkauf
        end if
      end if
    end if
    if tageskurse_ab = 1 then
      setrangestart( "xfwtgkrs", "fw_isocode", FW_ISOCODE, "DATUM", 0) 
      setrangeend( "xfwtgkrs", "fw_isocode", FW_ISOCODE, "DATUM", datum)
      gotolast( "xfwtgkrs")
      if (eof( "xfwtgkrs") = 0) or (bof( "xfwtgkrs") = 0) then
        if ankaufkurs = 1 then
          hilfkurs = &xfwtgkrs.ankauf
        else
          hilfkurs = &xfwtgkrs.verkauf
        end if
      end if
    end if
  end if

  if findkey( "xfw", "fw_isocode", FW_ISOCODE) = 1 then
     fw_einheiten = &xfw.fw_eht
     if ankaufkurs = 1 then
       if hilfkurs <> 0 then
         fw_getkurs = hilfkurs
       else
         fw_getkurs = &xfw.ankauf
       end if
     end if
     if ankaufkurs <> 1 then
       if hilfkurs <> 0 then
         fw_getkurs = hilfkurs
       else
         fw_getkurs = &xfw.verkauf
       end if
     end if
  end if
end function

'**********************************************************************************************
function fw_getfwbetrag(betrag as double, fw_kurs as double, fw_eht as double) as double
  if fw_berechnung = "R" then
    if (fw_eht = 0) or (betrag = 0) then
      fw_getfwbetrag = 0.0
    else 
      fw_getfwbetrag = betrag * fw_kurs / fw_eht
    end if
    exit function
  end if
  if (fw_kurs * fw_eht = 0) or (betrag = 0) then
    fw_getfwbetrag = 0.0
  else
    fw_getfwbetrag = betrag / fw_kurs * fw_eht
  end if
end function

'**********************************************************************************************
function fw_getfwbetrag_b(betrag as double, fw_kurs as double, fw_eht as double) as double
  if fw_berechnung = "R" then
    if fw_eht = 0 then
      fw_getfwbetrag_b = betrag 
    else 
      fw_getfwbetrag_b = betrag * fw_kurs / fw_eht
    end if
    exit function
  end if
  if fw_kurs * fw_eht = 0 then
    fw_getfwbetrag_b = betrag
  else
    fw_getfwbetrag_b = betrag / fw_kurs * fw_eht
  end if
end function

'**********************************************************************************************
function fw_getbetrag(betrag as double, fw_kurs as double, fw_eht as double) as double
  if fw_berechnung = "R" then
    if (fw_kurs * fw_eht = 0) or (betrag = 0) then
      fw_getbetrag = 0.0
    else
      fw_getbetrag = betrag / fw_kurs * fw_eht
    end if
    exit function
  end if
  if (fw_eht = 0) or (betrag = 0) then
    fw_getbetrag = 0.0
  else 
    fw_getbetrag = betrag * fw_kurs / fw_eht
  end if
end function

'**********************************************************************************************
function fw_getbetrag_b(betrag as double, fw_kurs as double, fw_eht as double) as double
  if fw_berechnung = "R" then
    if fw_kurs * fw_eht = 0 then
      fw_getbetrag_b = betrag
    else
      fw_getbetrag_b = betrag / fw_kurs * fw_eht
    end if
    exit function
  end if
  if fw_eht = 0 then
    fw_getbetrag_b = betrag 
  else 
    fw_getbetrag_b = betrag * fw_kurs / fw_eht
  end if
end function


'**********************************************************************************************
function fw_get(betrag as double, fw_kurs as double, fw_eht as double, fw_isocode as string, Fw_isostm as string, FW_isostm2 as string) as string
'Gibt bei Euro den Betrag in ATS zurück, ansonsten wird immer auf Euro umgerechnet
dim hilf as double
dim hilf1 as double

  hilf = 0.0
  hilf1 = 0.0
  fw_get = ""
' Rechung ist in Stammwährung erfaßt.
  if (fw_isocode = Fw_isostm) or (fw_isocode = "") then
'   Ausser Kraft gesetzt, da eine Umrechung auf ATS nicht mehr notwendig ist
    exit function
    hilf = fw_getkurs( FW_isostm2, 0, 0, 0)    
    fw_get =  FW_isostm2 + "  " + num$(fw_getfwbetrag(betrag, hilf, fw_einheiten), 20, 2)
    exit function
  end if
' Rechung ist in 2. Stammwährung erfaßt.
  if fw_isocode = FW_isostm2 then
    fw_get = Fw_isostm + "  " + num$( fw_getbetrag( betrag, fw_kurs, fw_eht), 20, 2)
    exit function
  end if
' Rechung ist in irgendeiner Fremdwährung erfaßt und die Stammwährung ist EURO.
  if (fw_isocode <> Fw_isostm) and (fw_berechnung = "R") then
    fw_get = FW_isostm + "  " + num$(fw_getbetrag( betrag, fw_kurs, fw_eht), 20, 2)
    exit function
  end if
' Rechung ist in irgendeiner Fremdwährung erfaßt. 
  if fw_isocode <> Fw_isostm then
    hilf = fw_getbetrag( betrag, fw_kurs, fw_eht)
    hilf1 = fw_getkurs( FW_isostm2, 0, 0, 0)   
    fw_get = FW_isostm2 + "  " + num$(fw_getfwbetrag( hilf, hilf1, fw_einheiten), 20, 2)
  end if
end function


'**********************************************************************************************
function fw_berechnekurs(Stammwaehrungsbetrag as double, Fremdwaehrungsbetrag as double, fw_eht as double) as double
  if (Stammwaehrungsbetrag = 0) or (Fremdwaehrungsbetrag = 0) or (fw_eht = 0) then
    fw_berechnekurs = 0.0
    exit function
  end if  
  if fw_berechnung = "R" then
    fw_berechnekurs = Fremdwaehrungsbetrag / Stammwaehrungsbetrag * fw_eht
    exit function
  end if
  fw_berechnekurs = Stammwaehrungsbetrag / Fremdwaehrungsbetrag * fw_eht
end function


'**********************************************************************************************
function fw_getberechnung as string
  opentable("XSTMDAT", "stammdaten2")
  fw_getberechnung = &Stammdaten2.fw_berech
  closetable("stammdaten2")
end function