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

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Full Stack Developer / .NET @ Zwolle

2021-03-25 iSense Full Stack Developer / .NET Ben je een gedreven .NET Developer, ontwikkel je graag in C# of VB.NET en wil je graag inspraak hebben in het gehele ontwikkeltraject, waarbij je veel verantwoordelijkheden krijgt? Werk je graag bij een informele organisatie die een hoge kwaliteit nastreeft? Reageer dan nu! ISPE49358 Organisatie Deze organisatie is gesitueerd in de omgeving van Zwolle en is actief binnen de financiële dienstverlening voor klanten. Ze is actief op twee locaties, één in de Randstad en één in het Noordoosten van het land. Voor de locatie in de regio Zwolle, waar ongeveer 35 collega's werken,

Bekijk vacature »

embedded software developer

Bedrijfsomschrijving Ga jij graag de uitdaging aan om te zorgen dat klanten steeds duurzamer kunnen produceren voor steeds meer mensen? Dan wil jij aan de slag bij deze organisatie. Onze klant werkt aan verschillende mooie projecten door heel Nederland. De functie voor embedded energie. Het betreft een beurs genoteerde speler actief in de technische en industriële automatisering. De activiteiten bestaan uit het uitvoeren van projecten op detachering en consultancy basis. De organisatie hecht waarde aan betrokkenheid en het werkgenot van het personeel. In de markt staan ze bekend als een gerenommeerde, technisch voorop lopende partij waar balans tussen werk en

Bekijk vacature »

Senior Applicatieontwikkelaar

UPS zoekt een Senior Applicatieontwikkelaar *Thuiswerken is mogelijk voor deze functie Ben jij een gedreven applicatieontwikkelaar met minimaal drie jaar werkervaring? En wil je een uitdagende baan met impact én jezelf breed ontwikkelen? Bij UPS bouw je mee aan complexe systemen die wereldwijd worden gebruikt en krijg je alle ruimte om nóg beter te worden in je vak. Dit ga je doen In een dynamisch scrumteam werk je aan de hand van processen en technologieën zoals CI/CD en DevOps aan het behalen van jullie doelen. Je bent betrokken bij alle facetten van applicatieontwikkeling: van ontwerpen en bouwen tot testen en

Bekijk vacature »

Systeembeheerder

Waar staat Megekko voor? Megekko is er voor iedereen die precies weet wat hij of zij zoekt. En ja, we zijn een beetje eigenzinnig. Bij Megekko koop je omdat je weet wat je nodig hebt, precies weet wat je belangrijk vindt en zelf weet hoe je alles aansluit en installeert. We bieden een scherpe prijs, snelle levering en een website met uitgebreide specificaties en filteropties. We behoren inmiddels tot de 3 grootste IT-webwinkels van Nederland, maar we willen meer. Natuurlijk is er naast jouw werkzaamheden ook tijd voor ontspanning of een geintje. Wij zullen ervoor zorgen dat we je de

Bekijk vacature »

Unieke PHP Laravel kans in een heel nieuw team!

Bedrijfsomschrijving Dit bedrijf is een grote speler in Nederland wat betreft duurzaamheid en ook binnen Europa timmeren ze stevig aan de weg. Het is een mooie organisatie die een ongekende groei heeft doorgemaakt in de afgelopen jaren. Ze hebben een geavanceerde online portal die intensief in gebruik is. Recent is besloten dit helemaal in eigen beheer te nemen en alle nieuwe PHP ontwikkelingen zelf te gaan doen. Hierdoor ontstaat er een unieke kans voor ervaren PHP ontwikkelaars. Je kunt namelijk instromen in een heel nieuw team en samen met je nieuwe teamgenoten de toekomstige PHP applicaties voor het bedrijf gaan

Bekijk vacature »

Software Developer Geospatial Technology

Would you like to be part of an innovative, inspiring and international environment? Are you excited to work in a Geo-ICT, Asset Management, Energy, Water & Telecom industry and do you have strong programming skills? The job as Experienced GIS Software Developer offers the challenge you are looking for! Software Developer Geospatial Technology 32-40 hours per week Your Job As Experienced GIS Consultant you will work in an international team on projects at leading customers in the Netherlands. You will deal with design solutions in which emerging technologies play an important role. Along with your colleagues and customers you will

Bekijk vacature »

Senior PHP Developer

Kom je met ons samenwerken in ons mooi kantoor hartje centrum Breda? Wat ga je doen als developer bij JobBoost.io? Als software developer kom je bij JobBoost.io terecht in een hecht en gespecialiseerd team waar we elke werkdag streven naar een beter systeem. We hebben al grote resultaten behaald met onze kennis, ervaring en tooling die inspeelt op de behoefte van werkgevers die hun vacature advertenties optimaal willen adverteren. Dat doen we voor grote partijen zoals Arcadis, Kruidvat, PostNL en Takeaway. We zoeken een ervaren developer met ervaring die met onze Koen (CTO) kan opschalen in development capaciteit en het

Bekijk vacature »

Dynamics CRM / Developer @ Utrecht

2020-12-17 iSense Dynamics CRM / Developer Ken jij alle kneepjes van Dynamics CRM of ben je sinds kort begonnen met Dynamics CRM en wil jij doorgroeien tot de Dynamics CRM goeroe van de lage landen? Lees dan snel verder! ISBI46874 Organisatie Als onderdeel van een grote IT-dienstverlener is deze organisatie ontstaan en is nu gegroeid tot organisatie van bijna 30 man groot. Iedereen binnen deze organisatie houdt zich bezig met het ontwikkelen, beheren, onderhouden van bedrijfskritische applicaties. In tegenstelling tot de moederorganisatie, werken de medewerkers bij deze organisatie gemiddeld drie dagen in de week gewoon op het eigen kantoor in

Bekijk vacature »

junior systeem beheerder

Vacature iRvN:junior systeem beheerder. Organisatie en context ICT Rijk van Nijmegen is een regionaal samenwerkingsverband voor het beheer, ontwikkeling en exploitatie van een gestandaardiseerde, geconsolideerde en gecentraliseerde ICT-infrastructuur van gemeenten binnen Rijk van Nijmegen. De focus van de medewerkers zit op de gebruiker. Dat kan een gebruiker zijn met een probleem, maar liever zijn we de problemen voor en richten we ons op het servicen van ontwikkelingen en wensen bij de aangesloten gemeenten en op de inrichting van een adequaat functionerende werkomgeving voor hun medewerkers. De kernwaarden van de iRvN zijn: partner- en klantgericht. Ons devies is: Het eindresultaat moet

Bekijk vacature »

.NET Software Developer – Smart Logistics

Heb jij ervaring met applicatie ontwikkeling, testen en onderhoud van business-kritische .NET applicaties? En wil je graag met de nieuwste technologieën werken binnen een DevOps scrumteam? Wat ga je doen? “Use digital to move smarter De unit Smart Logistics binnen de Transport & Logistics sector van CGI ontwerpt, bouwt en onderhoudt veelal missie-kritische applicaties voor onze klanten uit de transport en logistieke sector. Zonder deze sector worden onze pakketjes niet op tijd afgeleverd, rijden de treinen niet meer van a naar b en varen schepen niet veilig de haven binnen. Om deze transport en logistieke ketens te monitoren en sturen,

Bekijk vacature »

Senior Azure Developer / Java @ Amsterdam

2020-11-08 iSense Senior Azure Developer Java Are you an ambitious Cloud Developer, with proven experience in Java and creating APIs? Do you have experience working with Azure frameworks? And are you passionate about enabling your team members to deliver the best possible results? If your answers are yes, then don't hesitate to apply! Please note: You need to already be living in the Netherlands for this position! ISDI47772 Organisatie You will work in Amsterdam for a big financial company. This organization is an international financial service provider and is operating on the basis of cooperative principles. The culture of the

Bekijk vacature »

Fullstack .NET Developer @ Utrecht

2021-06-07 iSense Fullstack .NET Developer Ben jij een ervaren Fullstack Developer en vind je het leuk om in zowel de back-end als de front-end bezig te zijn? Ben je bovendien graag betrokken bij alle aspecten van softwareonwikkeling en haal je energie uit het werken met moderne tools als .NET Core, Azure, Angular en Typescript? Dan is de rol bij deze internationale marktleider iets voor jou! ISHU46952 Organisatie Over de hele wereld worden er per uur meer dan 50.000 producten per machine geproduceerd door de organisatie waar jij aan de slag gaat. Samen met ruim 300 collega's ben jij mede- verantwoordelijk

Bekijk vacature »

Full Stack Java Developer Graduate Program - Exper

Via Experis Academy krijg je een unieke kans om de in de branche gewilde expertise op te doen die jou tot een gewilde Full Stack Java Developer met een frontend-specialisatie maken. Het programma duurt 21 maanden en eindigt met een vaste baan bij een van onze vele, boeiende klanten, of je blijft bij ons (Experis) werken. Ons programma tot Java Developer Experis Academy start met een op maat gemaakte cursus die drie maanden duurt. Gedurende deze maanden komen theorie, praktijk en Java-certificeringen aan bod. Hierbij is het onderwijsprogramma gebaseerd op de principes als versnelde training en flipped classroom. De volgende

Bekijk vacature »

back-end developer

Ben jij die innovatieve back-end developer die mee wil denken over en werken aan onze technische uitdagingen? Zet jij je in om medische applicaties te ontwikkelen die donatie en transplantatie van organen en weefsel mogelijk maken? Wat ga je doen Als backend developer bij de Nederlandse Transplantatie Stichting (NTS) werk je binnen een afdeling met gedreven programmeurs aan innovatieve oplossingen voor de technische uitdagingen die er liggen. De eindgebruikers waarvoor jij programmeert zijn onder andere artsen, promovendi, postdocs en onderzoekers in de ziekenhuizen en onderzoekers en medewerkers binnen de NTS. kortom, je bent een belangrijke spil in het hele donatieproces!

Bekijk vacature »

Full Stack Java Developer - Infrastructure

Ben jij een ontwikkelaar die wil bijdragen aan de energietransitie? Lees dan verder! Wat ga je doen? Als Full Stack Java Ontwikkelaar draag je verantwoordelijkheid voor het gehele proces van het omzetten van wensen, problemen of vragen naar concrete oplossingen. Integratie, testen, vastleggen van kennis en beslissingen, problem management en automation zijn onderdeel van je takenpakket in SAFE of DevOps gestuurde omgevingen. Als ontwikkelaar krijg je alle mogelijkheden om je technisch verder te ontwikkelen en samen te werken met gedreven collega's. Wat breng je mee? Je hebt gedurende 1 tot 2 jaar een basis opgebouwd in applicatie ontwikkeling met .Net

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

21/06/2021 12:29:33
 
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.