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

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Junior of medior .NET C# (web) ontwikkelaar, inhou

Ben je een junior of medior .NET C# ontwikkelaar en op zoek naar een nieuwe baan in Rotterdam? Een inhouse baan waar je werkt aan maatwerkapplicaties, direct contact hebt met klanten en samenwerkt met een leuk team van ontwikkelaars? Een baan waar je plezier haalt door de beste oplossing voor de klant te vinden? Wellicht dat deze organisatie dan iets voor jou is. Voor een software bedrijf in Rotterdam zijn we op zoek naar een .NET C# ontwikkelaar. Het bedrijf bestaat al meer dan 20 jaar en richt zich op het ontwikkelen van unieke software op maat (web, apps, desktop

Bekijk vacature »

Datawarehouse ontwikkelaar / ETL ontwikkelaar

Bedrijfsomschrijving Onze klant is een semi overheidsinstelling. Ze zijn bezig met het bouwen van een nieuwe BI omgeving. Ze hebben onderzocht hoe het datalandschap en de informatievoorziening geprofessionaliseerd kan worden. Als DWH Ontwikkelaar kun jij hier een belangrijk rol in gaan spelen over hoe je het verder gaat uitvoeren. Het is een informele organisatie met een goede werksfeer. De mensen die er werken zijn ambitieus en werken met de nieuwste technieken. Ben jij toe aan een nieuwe uitdaging als datawarehouse ontwikkelaar waar jij kunt meebouwen aan een nieuwe omgeving? Dan is deze functie je op het lijf geschreven. Functieomschrijving Datawarehouse

Bekijk vacature »

.NET developer

Heb jij een afgeronde Hbo-opleiding, bij voorkeur in richting van informatica? En heb jij kennis van het .NET framework? Dan heb je wellicht interesse in de positie van: .NET software developer in Hollandscheveld Optioneel 100% vanuit huis Over de positie: Als .NET developer ben jij verantwoordelijk voor het omzetten van onze eigen web portal en die van afnemers. Jouw taken omvatten, maar zijn niet gelimiteerd tot: het omzetten van PHP en ASP.NET naar .NET Core; het aanpassen en uitbreiden van onze web app (.NET Core) qua opzet en functionaliteit; onze desktop versie van Micromix (VB.NET) ondersteunen en verder te ontwikkelen;

Bekijk vacature »

Fullstack ontwikkelaar

Bedrijfsomschrijving Bij het accepteren van dit aanbod kom je terecht binnen een veelzijdige organisatie waar een goede sfeer hangt. Zij zijn gewend dagelijks met elkaar te lunchen en ruimte is voor een potje Mario. Als Fullstack ontwikkelaar ga je je op projectbasis bezighouden met het ontwikkelen van content voor diverse opdrachtgevers. De projecten waar je aan gaat werken zullen verschillende qua omvang. Hierbij kan je rekening houden met een gemiddelde doorlooptijd van een half jaar, waarbij er meerdere projecten naast elkaar kunnen lopen. De nadruk zal liggen op ontwikkeling aan de front-end, maar ook op het gebied van ontwikkeling aan

Bekijk vacature »

Back-end Developer SpringBoot APIs

Bedrijfsomschrijving For our client in Rotterdam, we are looking for an experienced back-end developer. Within the Banking domain, you get to work in one of the scrum teams. Your activities are very diverse, but everything comes down to providing a complete customer experience for customers. As a DevOps team, you support other IT teams in the grid, providing them with the integration of applications, deployments, and automation. As a coach and mentor in your team, you ensure that your own and the development of your teammates is part of the sprint planning, so that the team as a whole can

Bekijk vacature »

.NET developer

Heb jij een afgeronde Hbo-opleiding, bij voorkeur in richting van informatica? En heb jij kennis van het .NET framework? Dan heb je wellicht interesse in de positie van: .NET software developer in Hollandscheveld Optioneel 100% vanuit huis Over de positie: Als .NET developer ben jij verantwoordelijk voor het omzetten van onze eigen web portal en die van afnemers. Jouw taken omvatten, maar zijn niet gelimiteerd tot: het omzetten van PHP en ASP.NET naar .NET Core; het aanpassen en uitbreiden van onze web app (.NET Core) qua opzet en functionaliteit; onze desktop versie van Micromix (VB.NET) ondersteunen en verder te ontwikkelen;

Bekijk vacature »

Full Stack Java Developer

We hebben een veelbelovende vacature voor een betrokken Full Stack Java Developer die graag binnen een hecht en professioneel development team werkt. Tegelijkertijd schuw je het niet om binnen afzienbare tijd zelfstandig code live te brengen. Je ontwikkelt mee aan Wise, waarover we meer uitleggen verderop in deze tekst. Met een baan binnen het internationale OCLC draag je bij onze de missie in de ondersteuning van bibliotheken en het toegankelijk houden van informatie….wereldwijd! Binnen deze internationale context werk je in één van de vier development teams, waarbij je je richt op de Benelux. Er wordt nauw samengewerkt andere development teams

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 »

Software Developer C#

Organization Within business line Applications, software groups address the area of complex machine control software. You will be end-to-end responsible for realization of software in C# . This is done using a scrum/Agile way of working. As a Software Developer you will act as fast learning software professional, and contribute to software realization using a disciplined agile/scrum based way of working. You apply software engineering practices such as requirements engineering (user story definition), object oriented analysis and design, implementation in C#, testing, and integration. You are eager to pick up knowledge on semiconductor fab automation and throughput models. What are

Bekijk vacature »

Support specialist Servicedesk

Vind jij het leuk om meldingen klantgericht én kwalitatief goed op te lossen? Wil jij jouw specialistische kennis en ervaring op het gebied van IT én klantomgevingen optimaal inzetten én verder uitbreiden? Ga dan bij NEH aan de slag als Service & Support specialist! Als Service & Support specialist zal je zoveel mogelijk zelfstandig incidenten en serviceverzoeken afhandelen, waarbij je prioriteit bepaalt aan de hand van impact en urgentie. Waar mogelijk bied je eindgebruikers structurele oplossingen. Wanneer dit niet mogelijk is, dan bied je een workaround en zet je acties uit voor een definitieve, kwalitatieve oplossing. Natuurlijk houd je de

Bekijk vacature »

IAM developer

Functieomschrijving IAM, voor jou hoeven we dat niet te vertalen toch? Want jij weet exact waar wij het over hebben bij het benoemen van Identity Access Management. Ben je toe aan een informele, mensgerichte omgeving met vrijheid, ondernemerschap, creativiteit en focus op innovatie? Dat zijn wij! En laten wij nou op zoek zijn naar jou, een IAM developer die ons team helpt Randstad naar een veilige toekomst te helpen. Als IAM developer bij ons ben jij samen met de overige teamleden aanspreekpunt binnen de organisatie ten behoeve van functionele en technische vragen omtrent Identity & Access Management. Samen met andere

Bekijk vacature »

Angular Developer

Bedrijfsomschrijving De organisatie is een grote speler in de financiële branche met ongeveer 4500 medewerkers waarvan 450 IT-medewerkers. De organisatie staat continue in beweging en wil zich altijd blijven vernieuwen. Een belangrijk aspect voor deze organisatie is dat de klant altijd centraal staat. Binnen de afdeling waar je komt te werken wordt gezocht naar een ervaren Angular Developer. De afdeling bestaat uit twee scrum teams waarbij er altijd vanuit een DevOps manier wordt gewerkt, "You build it, you run it". De afdeling is verantwoordelijk voor het verder ontwikkelen van de webapplicatie en het beheer daarvan. Daarnaast is het team is

Bekijk vacature »

Software Developer

Functieomschrijving Neem jij graag de verantwoordelijkheid op je? Zie jij complexiteit als een uitdaging en schrikt een applicatie waarmee dagelijks meer dan 100.000 medewerkers worden gepland je niet af? Dan ben je bij onze opdrachtgever aan het juiste adres! Wil jij als ervaren Developer bijdragen aan een applicatie die meer dan 1000 winkels in de retail dagelijks in staat stelt om hun winkel aan te sturen? Of wil je werken aan de app die door meer dan 80.000 werkende jongeren wordt gebruikt om hun rooster in te plannen? Dat kan bij onze opdrachtgever! Ben je toe aan de tweede stap

Bekijk vacature »

Office 365 / Azure Migratie Engineer

Office 365 / Azure Migratie Engineer in Amsterdam Welkomstbonus van € 5.000,- Bij T2 zorgen we goed voor elkaar en doen wij leuke dingen met leuke mensen. We zorgen voor uitdagende opdrachten zodat jij jezelf onbeperkt kan blijven ontwikkelen. Ben jij een ervaren Azure Engineer en wil je het beste uit jezelf halen? Dan ben je van harte welkom bij T2 en ontvang je onze welkomstbonus ter waarde van € 5.000,-. Wat mag je nog meer verwachten? Als je met ons de uitdaging aangaat dan bieden we je het volgende: • Dienstverband voor onbepaalde tijd • Salaris tussen de €

Bekijk vacature »

Developer Powershell

Bedrijfsomschrijving Je komt als Developer Powershell te werken in de omgeving Deventer/Apeldoorn bij een nationaal opererende organisatie. Ze blijven constant in beweging en zijn altijd bezig om de laatste innovaties door te voeren. De organisatie werkt met grote hoeveelheden data, zij richten zich zowel op de B2B als B2C markten en zijn pionier binnen hun gebied van expertise. De applicaties draaiende op het platform verwerken per maand aanvragen voor meer dan 6 miljoen gebruikers en jij mag een rol gaan spelen in de complexe technieken en infrastructuur dat schuilt rondom deze applicaties! Je komt in een team waarbij de helft

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

07/03/2021 22:11:29
 
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.