MFRPG: Rente betalen via `before insert` trigger...

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

.NET Developer Azure

Dit ga je doen Het ontwerpen en bouwen van diverse applicaties (C#, ASP.NET, MVC); Het ontwikkelen van Webservices (WCF); Het meewerken aan de transitie naar Azure; Het samenwerken met collega's binnen een Scrumteam en meedenken over de User Stories; Het bouwen van unittesten; Meedenken over nieuwe tooling, ontwikkelingen en technologieën in de markt. Hier ga je werken Je komt te werken bij een organisatie die verantwoordelijk is voor de ontwikkeling van verschillende portalen. Deze portalen worden gebruikt door diverse partijen en jouw taak is om ervoor te zorgen dat deze optimaal functioneren. Je wordt onderdeel van een Scrumteam en werkt

Bekijk vacature »

Senior PHP Developer

As a Senior PHP Developer at Coolblue, you ensure that our webshops work as optimal as possible and you choach other colleagues on the hard and soft skills. How do I become a Senior PHP Developer at Coolblue? As a PHP Developer you work together with other development teams to make our webshop work as optimal as possible and to make our customers happy. Although you are a PHP Developer, you are not averse to a little TypeScript or other technologies that might be used. Would you also like to become a PHP Developer at Coolblue? Read below if the

Bekijk vacature »

Software Developer C# / ASP .Net

Functie omschrijving Ben jij een software ontwikkelaar die bekend is met termen ASP .NET, C# en SQL? Lees dan snel verder! Voor een bedrijf binnen de agrarische sector zijn wij namelijk op zoek naar een zelfstandige, enthousiaste en proactieve Software Developer die open staat voor een afwisselende functie met veel uitdaging. Binnen deze organisatie ben jij als Software Developer samen met één andere collega verantwoordelijk voor de ontwikkeling en modificatie van het support en controle programma dat binnen dit bedrijf gebruikt wordt. Hierbij draag jij bij aan de vertaling van klantwensen naar effectieve softwareoplossingen. Daarnaast ben je verantwoordelijk voor: Schatten

Bekijk vacature »

Als Front-end developer bijdragen aan het onderwij

Functie Als front-end developer om je terecht in een team van goede en ervaren developers, en ga je werken aan de software die door miljoenen mensen gebruikt wordt. Je bent in staat om designs effectief te vertalen naar werkende feautures en hebt oog voor een goede UX van het product. Je staat voor clean code en goede documentatie. Je ziet toegevoegde waarde in het beoordelen van het werk van collega’s om zo samen te streven naar hoge kwaliteit software en code. Je dagelijkse werk bestaat uit het werken aan componenten in de Storybook. Het verbeteren en refactoren van de huidige

Bekijk vacature »

Junior Back end developer PHP, Symfony

Functie Wij hebben onlangs onze eerste collega’s aangenomen, waardoor ons development team momenteel uit 4 personen bestaat. We bouwen onze software op basis van een PHP-framework (wat op zichzelf een Symfony framework is). Qua ontwikkeling focussen wij ons op 3 focus velden; – API-ontwikkeling/ Component Creatie – Implementatie – Framework ontwikkeling; het toevoegen van nieuwe functionaliteit of interne microservices Onze senior software engineer focust zich momenteel op de laatste twee punten, maar wij komen handen te kort op het eerste veld. Daarom zijn wij op zoek naar een enthousiaste junior software engineer die graag de kneepjes van het vak wil

Bekijk vacature »

Integratie Developer / Architect

Dit ga je doen Als Integratie Developer / Architect binnen deze organisatie krijg je echt de kans om impact te maken. De organisatie is groeiende maar houdt een corporate cultuur buiten de deur. Heb je een goede business case: zorg voor goede argumentatie en ga ervoor! Geen stroperig beslissingsproces dat jouw ideeën in de weg staat! Enkele van jouw taken: Je ontwerpt en ontwikkelt nieuwe integraties met behulp van interne tools (Boomi) of externe partners; Je vertaalt functionele specificaties naar technische oplossingen; Je denkt mee over strategische ontwikkelingen op het gebied van applicatie integratie; Je voert regie op leveranciers en

Bekijk vacature »

Senior Java Developer

Als Senior Java Developer bij Sogeti ben je onderdeel van onze toonaangevende community die bestaat uit ruim 100 gepassioneerde Java professionals. In teamverband lever je mooie prestaties. Daarmee draag je aan bij de meerwaarde die wij leveren aan onze top-opdrachtgevers. Geen werkdag is hetzelfde! Je bent voortdurend bezig met het oplossen van allerlei complexe vraagstukken binnen bedrijfs kritische systemen voor onze klanten in regio Noordoost zoals DUO, ING, CJIB en Tendernet. Natuurlijk krijg jij de mogelijkheid je verder te certificeren in dit vakgebied. We organiseren regelmatig technische Meetups en doen veel aan kennisdeling. Sogetisten hebben plezier in hun werk en

Bekijk vacature »

C# Ontwikkelaar

Functieomschrijving Voor een software ontwikkelaar in de omgeving van Vught zijn we op zoek naar een gemotiveerde C# ontwikkelaar. Deel jij hun passie voor development en dan vooral in C#.NET? Dan kan dit wel eens jouw droombaan zijn! Jouw werkzaamheden zullen er ongeveer als volgt uit gaan zien Door de wensen van de klant goed te begrijpen ga jij aan de slag dit om te zetten naar passende oplossingen en werk je deze uit tot een sterk eindproduct. Je gaat je bezighouden met de ontwikkeling van webapplicaties en websites, dit doe je door middel van ASP.NET, MVC Frameworks en C#.

Bekijk vacature »

IoT Developer

Ben jij innovatief, heb jij passie voor energie en ben je data gedreven? Bouw dan mee aan IoT binnen Bredenoord. Samen met een gedreven team werk jij aan mooie technische en innovatieve oplossingen. Wat houdt de functie van IoT Developer in? Binnen Bredenoord zijn wij momenteel volop in ontwikkeling met ons IoT platform. Als uitbreiding van ons team zijn wij op zoek naar een IoT Developer. Je zal in projectverband meehelpen met het implementeren van IoT vraagstukken binnen Bredenoord. Als IoT Developer op onze R&D-afdeling word je verantwoordelijk voor het verder inrichten en beheren van ons nieuwe IoT platform. Dat

Bekijk vacature »

Creatieve Front-end developer gezocht!

Functie Het front-end team bestaat momenteel uit 4 collega’s en is hard aan het groeien! Samen leveren jullie een essentiële bijdrage aan de applicaties die ze voor hun klanten realiseren. Je werkt in het front-end team samen met de back-end teams en product owners om te zorgen dat de applicaties een fijne gebruikerservaring opleveren. Jouw expertise zorgt ervoor dat de juiste keuzes gemaakt worden qua techniek en ontwerp, van back-end tot aan gebruiker. In samenspraak met je team bepalen jullie de beste keuze voor techniek. Ook is er altijd ruimte om nieuwe technieken te ontdekken. Eisen • Je hebt gedegen

Bekijk vacature »

Medior/senior Front-end developer

Functie Onder begeleiding van 3 accountmanagers waarvan er 1 binnen jouw expertise je aanspreekpunt zal zijn ga je aan de slag bij diverse opdrachtgevers. Hij of zij helpt je bij het vinden van een passende en uitdagende opdracht. Hierin houden ze uiteraard rekening met jouw situatie, ervaring en (technische) ambities. De opdrachten duren gemiddeld één tot 2 jaar. Hierdoor kun je je ook echt vastbijten in een project en als consultant impact maken. Naast de opdracht ben je regelmatig met je collega’s van de IT-afdeling om bijvoorbeeld onderlinge kennis te delen, of nieuwe trends te bespreken. Ook worden er regelmatig

Bekijk vacature »

Front-end developer (Medior/Senior)

Functie Het front-end team bestaat momenteel uit 4 collega’s en is hard aan het groeien! Samen leveren jullie een essentiële bijdrage aan de applicaties die ze voor hun klanten realiseren. Je werkt in het front-end team samen met de back-end teams en product owners om te zorgen dat de applicaties een fijne gebruikerservaring opleveren. Jouw expertise zorgt ervoor dat de juiste keuzes gemaakt worden qua techniek en ontwerp, van back-end tot aan gebruiker. In samenspraak met je team bepalen jullie de beste keuze voor techniek. Ook is er altijd ruimte om nieuwe technieken te ontdekken. Eisen • Je hebt gedegen

Bekijk vacature »

Front-end Developer

Gezellige team, passie en een groene toekomst! Lees hier de vacature van Front-end Developer bij All in Power! All in power heeft zich tot doel gesteld écht bij te dragen aan de energietransitie. Dit doen wij door de markt voor energie volledig op zijn kop te zetten. Producenten van schone (wind- of zonne-)energie verkopen via ons platform hun energie rechtstreeks aan gebruikers. Of dit nu huishoudens, bedrijven of bijvoorbeeld laadpalen zijn ons platform maakt het uitwisselen van energie mogelijk. Zo maken we de business case van onze klanten veel sterker en loont het om (meer) te investeren in vergroening voor

Bekijk vacature »

Fullstack developer - medior

Functie omschrijving Ben jij toe aan een nieuwe uitdaging en zou jij graag bij een platte maar informele organisatie willen werken? Voor een mooi softwarebedrijf in omgeving Ridderkerk zijn wij op zoek naar versterking voor op de afdeling Software Development! Als Fullstack developer wordt je bij dit bedrijf onderdeel van de volledige ontwikkeling van requirement tot oplevering! Werkzaamheden Jouw focus ligt op de front end en alles wat daarbij komt kijken. Je gaat ontwerpen, ontwikkelen, testen en valideren. Je zult voornamelijk werken met React.js en Typescript. Maar ook Javascript, HTML en CSS komen aanbod. Daarnaast zal je ook regelmatig met

Bekijk vacature »

PHP Back-end Developer

Vacature details Vakgebied: Software/IT Opleiding: Starter Werklocatie: Nijmegen Vacature ID: 13633 Introductie OUr client develop websites, webshops, and digital environments that are used by many visitors daily. They are seeking an experienced PHP-Developer Back-end to join the team. If you're looking for a position where you can tackle challenging, innovative, and multidisciplinary ICT projects and make a difference, this vacancy might be for you! Functieomschrijving As a PHP developer, you'll develop websites and digital environments used by many visitors daily. You'll work as a back-end developer and want to continuously develop in this field. You can work independently and efficiently,

Bekijk vacature »
Roger Keulen

Roger Keulen

26/04/2011 14:19:34
Quote Anchor link
Hallo,

Ik ben bezig met het maken van een financiele morpg. Ik noem het maar een MFRPG...

In dit spel zijn er natuurlijk banken, die via een rekening type & vestiging, bank rekeningen kunnen uitgeven. Zo'n bank rekening kan een 'SPAAR' rekening zijn waar op een bepaalde moment (per jaar of per maand) rente betaald moet worden.

Nu heb ik het volgende bedacht:

De rekening tabel waar de gegevens PER REKENING in staan, krijgt een BEFORE UPDATE trigger. Dus steeds als deze REKENING aangepast wordt, wordt er een script uitgevoerd. In dit script bereken ik dan hoeveel rente iemand moet ontvangen en sla dit op in een speciaal veld: "rknRENTESALDO". Aan het einde van de maand of jaar worden deze waardes in de rknRENTESALDO overgeboekt naar het rknSALDO veld, via een PROCEDURE (Betaal rente).

Voorbeeld:
Op 5 januarie om 12:00 opent een persoon een bepaalde rekening met 5% rente en stort hier 100,- euro op.
Op 10 Januarie om 12:00, stort deze persoon 900,- euro.
Op 20 Januarie om 12:00, neemt deze persoon 200,- euro van zijn rekening op.

Nu is de vraag: hoeveel rente ontvangt deze persoon op 1-2-2011 om 12:00?

Bij mijn script wordt het dan zo gedaan:
- Eerst een INSERT.... Voor het aanmaken van de rekening...
Het veld rknSALDODATUM van het type TIMESTAMP wordt op CURRENT_TIMESTAMP (Default waarde) gezet. Dus tot deze datum is de rente dan berekend.


- Update 1:
Op 10 januarie om 12:00 wordt een UPDATE gedaan van het saldo van 100,- naar 1000,-

Nu gaan we de rente berekenen over de periode rknSALDODATUM (5 Januarie) en NU (CURRENT_TIMESTAMP = 10 Januarie). De periode is dan gewoon: CURRENT_TIMESTAMP - rknSALDODATUM. Nu moeten we dit getal gaan omrekenen naar "PER JAAR", dit omdat de rente altijd wordt aangegeven per jaar in dit spel. Ook al betalen we het elke maand uit !. Dus de rente die deze persoon ontvangt is dan de rente over het bedrag x De periode in jaren.

De ontvangen rente doen we niet meteen bij het rknSALDO optellen maar eerst optellen bij de rknRENTESALDO. Op het moment dat de bank de rente gaat uitkeren, wordt voor elke rekening de rente opnieuw berekend tot nu en van deze bank de rknRENTESALDO opgeteld bij de rknSALDO en de rknRENTESALDO wordt dan weer gewist.


Hierdoor heb ik dan een spaar rekening gemaakt waarvan de rente redelijk klopt. Behalve als men heel veel transacties kort achter elkaar doet kan men afrond fouten krijgen. Het berekenen van de periode in tijd wordt op 100ste van een seconde bepaald en de rknRENTESALDO tot op 6 cijfers achter de komma, zodat de afrond fouten gering zijn.



Zijn er ook nog andere oplossingen mogelijk die een juiste rente kunnen berekenen op steeds wijzigende rekeningen?

Oja: Met het overboeken ga ik dit ook oplossen volledig in de database. Dit omdat het betalings verkeer het meest gebruikte logica is in het spel. En omdat het een MASSIVE ONLINE game is wil ik het zo gemakkelijk mogelijk maken voor de server.

Het overboeken ga ik procedure maken die je 3 parameters mee geeft.
Bedrag, RekeningVan, RekeningNaar en die geeft een 1 voor "OK" en 0 of kleiner voor "0=Mislukt (Onbekende fout)" of andere error code. Het overboeken werkt dan met een database transactie.

Verder wil ik het zo maken dat je deze functie/procedure ook op een view toegepast kunnen worden. Zodat men ook grote 'batches' van betalings opdrachten op een bepaalde datum kan laten uitvoeren.


Iemand nog een ander idee ?

Groetjes: Roger Keulen.

Ps: M'n MySQL Workbench 5.2 CE valt steeds uit. (Ben ik de enige die dit probleem heeft?)

Toevoeging op 26/04/2011 19:31:51:

Mooi we hebben hem werkend:

DELIMITER $$

USE `MFRPG`$$

CREATE TRIGGER before_rekeningen_update
BEFORE UPDATE ON rkn_REKENINGEN
FOR EACH ROW BEGIN
SET @Verschil = CURRENT_TIMESTAMP - OLD.rknRENTEDATUM;
if @Verschil > 0 and OLD.rknISACTIEF then
SET NEW.rknRENTESALDO = OLD.rknRENTESALDO + ((OLD.rknSALDO * (OLD.rknRENTE / 100)) / (345600 * @Verschil));
SET NEW.rknRENTEDATUM = CURRENT_TIMESTAMP; -- Reset Datumtijd...
END IF;
END$$

rknRENTEDATUM = Timestamp met default waarde: CURRENT_TIMESTAMP
En 345600 is er omdat in het spel 4 dagen 1 jaar is. Het is een financiele morpg en die van mij werkt met kwartalen.


Ga nu de RENTE UITBETAAL functionaliteit maken.
En deze wil ik kunnen aanroepen per: Rekening, RekeningType, Vestiging en Bank.
Dus een view die deze data toont...
En ik maak voor elke groepering een PROCEDURE die de SQL WHERE maakt en deze doorgeeft aan de echte UITBETAAL RENTE PROCEDURE... En dat hoeft nog niet met transacties...

Het volgende daarna: Betalings verkeer.... Dus wie idieen heeft....
 
PHP hulp

PHP hulp

15/11/2024 07:03:54
 
Roger Keulen

Roger Keulen

28/04/2011 22:28:59
Quote Anchor link
Heb hem gewijzigd...

Steeds als het rknSALDO wijzigd, dus UPDATE wordt getriggerd, zal er rente worden berekend. Dit wordt opgeslagen in rknRENTESALDO.

Op het moment dat ik een UPDATE SET rknRENTESALDO = 0 doe, betaal ik de rente uit.
Door rknRENTESALDO + de rente tot nu op te tellen bij het saldo.

Ik ga hem nu nog zo aanpassen dat hij ook met terugwerkende kracht werkt.

Dus het script moet runnen op 01-01-2012 12:00:00
en hij runt 2 seconde later omdat er nog een procedure liep.
Dan wil ik toch de berekening om 12:00:00 als tijd neemt.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
-- Trigger DDL Statements
DELIMITER $$

USE `MFRPG`$$

-- Uitbetalen en optellen van de rente...

CREATE TRIGGER before_rekeningen_update
BEFORE UPDATE ON rkn_REKENINGEN
FOR EACH ROW BEGIN
   -- Aantal Seconde geleden laatste RUN
  SET @Verschil = CURRENT_TIMESTAMP - OLD.rknRENTEDATUM;

  -- Wanneer RENTE OVERHEVELEN ....
  -- Verschil groter dan seconde + Rekening Actief...
  if NEW.rknHEEFTRENTE and @Verschil > 0 and OLD.rknISACTIEF then
    SET @Rente = ((OLD.rknSALDO * (OLD.rknRENTE / 100)) / (345600 * @Verschil));    
  
    -- Zetten we de RENTESALDO op 0 dan betalen we de rente uit.
    if NEW.rknRENTESALDO = 0 then
      -- Uitbetalen rente...
      SET NEW.rknSALDO = OLD.rknSALDO + OLD.rknRENTESALDO + @Rente;
    ELSE
      -- Cumalatief optellen van de rente...
      SET NEW.rknRENTESALDO = OLD.rknRENTESALDO + @Rente;
    end if;
    
    -- Reset Datumtijd...
    SET NEW.rknRENTEDATUM = CURRENT_TIMESTAMP;
  END IF;
END$$



Verder probeer ik m'n layout te maken van het rechten gedeelte voor de web-sites die bij het ontwikkelen van de test simulator en het spel horen.
Gewijzigd op 28/04/2011 22:36:53 door Roger Keulen
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.