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

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Cloud Dev Engineer

Cloud Dev Engineer Functiebeschrijving: Be part of something exciting! Do you want to be at the forefront of the continuously changing world of ICT? Can you, with your knowledge and experience, realize innovative and reliable Cloud environments? You will be in a fast paced environment working with the newest and latest technology with multiple clients and technologies. Numerous opportunities are available to increase your skills and progress your career. Your day-to-day activities As a Cloud Dev Engineer you will help our customers to modernize their existing applications and to migrate and connect them to the private or public Cloud (Azure

Bekijk vacature »

.NET developer / C# / Azure

Bedrijfsomschrijving Je komt als .NET Developer te werken bij een vooraanstaande softwareontwikkelorganisatie in de verzekeringswereld. De primaire ontwikkeltaal is C#, maar ook maken ze gebruik van ASP.NET (Core), MVC en TypeScript. Daarnaast worden de stappen gezet om dit jaar naar Azure te migreren. Het belangrijkste product is een webservice (WCF) dat optimale en veilige communicatie mogelijk maakt tussen aanbieders, zorgverleners en gebruikers. Deze service maakt het mogelijk dat er per maand gemiddeld meer dan 250 miljoen berichten door hun systeem gaan met 800 berichten per piek seconde. Door de automatisering in de zorgsector is deze organisatie in de afgelopen jaren

Bekijk vacature »

Senior C#.Net Developer - Logistieke (zeevaart) se

Voor een hechte, informele en jonge club gespecialiseerd in Transport Management Systemen voor de vracht en havensector zijn wij op zoek naar een Senior .Net C# Developer. Een goede, sociale communicator die samenwerking en passie voor het vak key vindt. En die durft te sparren, dromen en pionieren! Deze organisatie van 150 man (waarvan 9 IT-toppers) zorgen er al 30 jaar voor dat internationale transport tot in de details kunnen worden berekend, ingepland en gemanaged, bijvoorbeeld in de Rotterdamse haven. Hierdoor worden kosten, materialen, arbeid, ontwerpen en oplevering perfect en just-in-time op elkaar afgestemd. Ze zijn marktleider én pionier in

Bekijk vacature »

Developer / Java / Cloud

Bedrijfsomschrijving Voor een organisatie in regio Eindhoven zijn wij op zoek naar een Software Developer met goede kennis van Java. Het gaat om een software bedrijf dat te omschrijven is als informeel en open. De mensen die er werken zijn enthousiast, willen graag goede kwaliteit neerzetten, nieuwe technieken worden omarmt en alles is zo ingericht dat nieuwe tools/technieken gemakkelijk geïntegreerd kunnen worden. De organisatie is erg technisch georiënteerd, men gaat echt voor software development en heeft passie voor het vak. Er wordt geïnvesteerd in medewerkers door bijvoorbeeld opleidingen, cursussen en echt tijd voor onderzoek en innoveren. Je krijgt al snel

Bekijk vacature »

Full-stack .NET developer gezocht, Goeree-Overflak

Ben je een .NET software developer en op zoek naar een professionele werkomgeving binnen een wat groter innovatief en ambitieus bedrijf? Waar sprake is van een uitgebreid applicatielandschap met elke dag nieuwe uitdagingen, waar alles mogelijk is, binnen een goede collegiale sfeer? Lees dan verder! Voor een bedrijf in Goeree-Overflakke zijn we momenteel op zoek naar een ervaren software developer. De IT afdeling bestaat uit circa 60 mensen waarvan zo'n 15 developers. Voor de recente architectuur wordt gebruikt gemaakt van de nieuwste technieken waaronder .NET Core, Docker en Angular. Echter bestaat het applicatielandschap uit een groot aantal verschillende applicaties waarbij

Bekijk vacature »

Frontend developer voor een prachtige sector

Bedrijfsomschrijving Deze jonge en informele organisatie laat zich graag omschrijven als een websitebouwer die de grenzen opzoekt. Met een ambitieus en gedreven groep van web enthousiastelingen worden hier niet alleen goed werkende sites maar ook mooi ogende sites ontwikkeld voor een steeds groter wordende klantenkring. De cultuur hier is zeer ontspannen. De gemiddelde leeftijd ligt midden twintig en de communicatie is open. Passie voor het web is een absolute must om je hier thuis te voelen. Ze zijn per direct op zoek naar een Front-end Developer die de lopende webshops en andere e-commerce uitingen naar zijn hand zet. Functieomschrijving We

Bekijk vacature »

Ervaren .NET C# ontwikkelaar, inhouse, complex maa

Ben je als ervaren ontwikkelaar op zoek naar een analytische omgeving? Waar hoogopgeleiden en ervaren collega’s jouw kennis naar een hoger niveau kunnen tillen? Waar je met een leuk team samen aan innovatieve producten werkt? Dan zou de deze organisatie wel eens goed bij je kunnen passen. Voor een organisatie in Delft zoeken we momenteel een ervaren .NET C# ontwikkelaar. De organisatie richt zich op innovatieve en complexe maatwerk systemen met een maatschappelijke raakvlak. Hierbij moet je (afhankelijk van je niveau) mee kunnen denken met functionele en architectonische vraagstukken. De projecten kunnen uiteenlopend zijn en het is maar net wat

Bekijk vacature »

Medior PHP Developer

Als PHP Developer bij Coolblue zorg je ervoor dat onze webshops bizar snel en superstrak zijn. Hoe word ik Medior PHP Developer bij Coolblue? Als Medior PHP Developer werk je met andere development teams samen om onze webshop zo optimaal mogelijk te laten werken en onze klanten blij te maken. Hoewel je een PHP Developer bent, ben je niet vies van een beetje C# of Javascript. ‘’Ook Medior PHP Developer worden bij Coolblue? Else de Boer legt je uit hoe je dat doet.” Dit vind je leuk om te doen PHP code schrijven, maar kan je weg ook vinden in

Bekijk vacature »

Medior Front-end Developer

As a medior Front-End Developer at Coolblue you improve the user-friendliness of our webshop for millions of customers. How do I become a Medior Front-end Developer at Coolblue? As a Medior Front-end Developer you work on the user-friendliness of our webshop for millions of customers. You enjoy working with the UX designer to pick up stories. You get energy from coming up with creative solutions and are happy to present this within the team. You are also proud of your work and welcome all feedback. "Want to become a Medior Front-end Developer at Coolblue? Else de Boer explains how to

Bekijk vacature »

IT-traineeship junior software developer

Zoek jij een stevige uitdaging en de mogelijkheid om veel nieuwe dingen te leren in een dynamisch vakgebied? Doe mee aan ons IT Professional Program en ontwikkel jezelf tot software engineer! Je begint met een opleidingstraject van ongeveer 4 maanden. Hierin ga je aan de slag met verschillende technieken die je op conceptueel niveau leert te overzien en interpreteren. Onderwerpen die aan bod komen zijn o.a. programmeren (Java/C#/Python), Object Oriëntatie, Databases, Webservices & webtechnologieën, Domain Driven Design en Continuous Integration/Continuous Delivery. Sommige van deze onderdelen sluit je af met een examen en bijbehorende certificering. Het opleidingstraject zelf sluit je af

Bekijk vacature »

Ervaren .NET developer gezocht, api development, .

Ben je een ervaren .NET developer en op zoek naar baan waarbij je je ook meer kunt gaan richten op architectuur? Binnen een leuke, sociale en betrokken werkomgeving? Met technieken als .NET Core en Azure? Dan zou deze baan wellicht iets voor jou kunnen zijn. Voor een organisatie in Rotterdam zijn we op zoek naar eens ervaren .NET ontwikkelaar. De organisatie bevindt zich in de financiële branche en is een van de grotere spelers in hun vakgebied. De organisatie bestaat uit circa 600 medewerkers en heeft verschillende vestigingen in Nederland. Het hoofdkantoor zit in Rotterdam en daar is ook de

Bekijk vacature »

Java Developer / Overheid / Complexiteit

Bedrijfsomschrijving Binnen de organisatie zijn meer dan 10.000 medewerkers dagelijks werkzaam op meer dan 30 verschillende locaties. In deze dynamische omgeving is geen dag hetzelfde. Dit komt door de snelheid waarmee veranderingen plaatsvinden. Dagelijks hebben jouw werkzaamheden direct invloed op het transport van mensen, goederen en personeel. Als Java Developer kom je terecht in een hecht team van op de locatie in Assen. Hier zal jij verantwoordelijk worden voor alles wat met Java en de daarbij behorende bedrijfskritische applicaties te maken heeft. De applicatie regelt en registreert alle dagelijkse bezigheden van deze organisatie. Op locatie heb jij dus direct inzicht

Bekijk vacature »

Video algorithm software engineer and developer (F

Task: -Implementing and improving video signal processing algorithms for mobile, PC, and TV apps -Cooperating and interacting with a team of specialists and developers. Able to give guidance / input on further quality and implementation optimizations -Video processing skills: further tune our HDR system implementation to work optimally in broadcast and OTT infrastructures -Personal skills: Ability to interact with prospective customers, answer their questions -Problem-solving skills: Solve performance issues on the spot when required due to tests and trials -Propose and analyze future ways to optimize the video processing implementation and implement them -Interaction with the commercial team to define

Bekijk vacature »

Mobile App Developer

Ons Mobile ontwikkelteam zoekt een fanatieke Mobile App Developer. Ben jij creatief en heb je passie voor het ontwikkelen van apps? Dan zijn wij op zoek naar jou! Jouw baan ChipSoft heeft al diverse apps uitgebracht en het aantal gebruikers hiervan neemt snel toe. De apps doen het erg goed bij de zorginstellingen. Je kunt hierbij denken aan apps verpleegkundigen, thuiszorgmedewerkers, de logistieke dienst en - natuurlijk - de artsen zelf. Door jouw hands-on mentaliteit, eigenwijsheid en technisch inzicht kun je nauwkeurig herbruikbare software schrijven. Die software sluit naadloos aan op onze ‘back end’ (HiX, onze ICT-totaaloplossing voor de zorg).

Bekijk vacature »

Developer - 12build

Wil jij jouw vindingrijke expertise inzetten voor revolutionaire innovaties in de cloud? Vind je de (internationale) bouwsector interessant en tenminste 5 jaar werkervaring? Ben je ambitieus en wil je je analyserende skills laten gelden in een professionele development-team? Dan is 12Build op zoek naar jou! Functie omschrijving In ons development team zijn we steeds bezig om ons eigen Saas platform uit te breiden en te verbeteren. Wij werken onder andere met: PHP Laravel Microservices TypeScript, JavaScript Vue.js (Nuxt.js) Docker API Gateway, OpenApi AWS Services (Fargate, SNS, SQS, S3) MySQL, ElasticSearch Bitbucket Pipelines Terrafrom Jira, Confluence, Slack Functievereisten In het kort

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

28/01/2021 00:22:52
 
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.