def reprize(self, vara_id, vkpv, kogus, summa, valuuta): # ümbrhindlus dr = 0 v = Vara.objects.get(id=vara_id) ts = Varatehing.objects.all().filter(vara=v, tyyp='H', vaartuspaev=vkpv, valuuta=valuuta) chk = 0 for t in ts: if kogus == float(t.kogus) and summa==float(t.summa): chk += 1 if chk == 0: vts = Varatehing.objects.all().filter(vara=v, vaartuspaev__lte=vkpv).order_by('vaartuspaev','-tyyp','-kogus') l_vt = '' for vt in vts: l_vt = vt e_sum = summa if valuuta != 'EUR': c = Currency() e_sum = c.convert(vkpv, valuuta, 'EUR', summa) if l_vt != '': if kogus != float(l_vt.yldkogus): print '>>> Error: Not the same amount!', v return 0 yk = l_vt.yldkogus sh = l_vt.soetushind th = Decimal(e_sum) rs = th - sh dr = rs - l_vt.reserv else: print '>>> Error: Nothing to reprize!', v return 0 Varatehing.objects.create(vara=v, tyyp='H', tehingupaev=vkpv, vaartuspaev=vkpv, kogus=kogus, summa=summa, valuuta=valuuta, eur_summa=e_sum, yldkogus=yk, soetushind=sh, turuhind=th, reserv=rs) return dr
def buy(self, vara_id, tkpv, vkpv, kogus, summa, valuuta): # ost v = Vara.objects.get(id=vara_id) ts = Varatehing.objects.all().filter(vara=v, tyyp='O', vaartuspaev=vkpv, valuuta=valuuta) chk = 0 for t in ts: if kogus == float(t.kogus) and summa==float(t.summa): chk += 1 if chk == 0: vts = Varatehing.objects.all().filter(vara=v, vaartuspaev__lte=vkpv).order_by('vaartuspaev','-tyyp','-kogus') l_vt = '' for vt in vts: l_vt = vt e_sum = summa if valuuta != 'EUR': c = Currency() e_sum = c.convert(vkpv, valuuta, 'EUR', summa) yk = Decimal(kogus) sh = Decimal(e_sum) th = Decimal(e_sum) rs = Decimal(0) if l_vt != '': yk = yk + l_vt.yldkogus sh = sh + l_vt.soetushind if e_sum != 0: th = Decimal(e_sum) * yk / Decimal(kogus) else: th = sh rs = th - sh Varatehing.objects.create(vara=v, tyyp='O', tehingupaev=tkpv, vaartuspaev=vkpv, kogus=kogus, summa=summa, valuuta=valuuta, eur_summa=e_sum, yldkogus=yk, soetushind=sh, turuhind=th, reserv=rs) return 0
def test_remote_service(self): """ Invoke web page with currency rates and calculate value """ c = Currency() v = round(c.convert(date(2012,4,10), 'EUR', 'USD', 2.0),2) self.assertEqual(v, 2.62)
def sell(self, vara_id, tkpv, vkpv, kogus, summa, valuuta): # müük dr = 0 v = Vara.objects.get(id=vara_id) ts = Varatehing.objects.all().filter(vara=v, tyyp='M', vaartuspaev=vkpv, valuuta=valuuta) chk = 0 for t in ts: if abs(kogus) == float(t.kogus) and summa==float(t.summa): chk += 1 if chk == 0: vts = Varatehing.objects.all().filter(vara=v, vaartuspaev__lte=vkpv).order_by('vaartuspaev','-tyyp','-kogus') l_vt = '' for vt in vts: l_vt = vt e_sum = summa if valuuta != 'EUR': c = Currency() e_sum = c.convert(vkpv, valuuta, 'EUR', summa) yk = 0 sh = 0 th = 0 rs = 0 if l_vt != '': if float(l_vt.yldkogus) - abs(kogus) < 0 and abs(float(l_vt.yldkogus) - abs(kogus)) > 0.000001: print '>>> Error: Trying to sell more than we have!', abs(float(l_vt.yldkogus) - abs(kogus)), v return 0 yk = l_vt.yldkogus - Decimal(abs(kogus)) if float(yk) < 0: yk = Decimal(0) sh = l_vt.soetushind * Decimal(yk) / l_vt.yldkogus th = Decimal(e_sum) * yk / Decimal(abs(kogus)) rs = th - sh dr = rs - l_vt.reserv else: print '>>> Error: Trying to sell, but we have not any!', v return 0 Varatehing.objects.create(vara=v, tyyp='M', tehingupaev=tkpv, vaartuspaev=vkpv, kogus=abs(kogus), summa=summa, valuuta=valuuta, eur_summa=e_sum, yldkogus=yk, soetushind=sh, turuhind=th, reserv=rs) return dr
def nok2eur(amount, when): c = Currency() return round(c.convert(when, 'NOK', 'EUR', amount),2)
def gbp2eur(amount, when): c = Currency() return round(c.convert(when, 'GBP', 'EUR', amount),2)
def eur2usd(amount, when): c = Currency() return round(c.convert(when, 'EUR', 'USD', amount),2)