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

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

.NET Developer / Vast contract / 4500 euro / Groei

Bedrijfsomschrijving Voor een kleine, informele werkgever in Beekbergen ben ik op zoek naar een .NET developer met minimaal 2 jaar werkervaring. De organisatie ontwikkelt zelfstandig software applicaties waarmee bedrijven hun interne processen zo efficiënt en veilig mogelijk kunnen inrichten. De organisatie bestaat op dit moment uit iets meer dan 10 personen en heeft de ambitie om verder te groeien, vandaar ook de vraag naar versterking binnen het development team. Het bedrijf zelf is wel onderdeel van een grotere corporate organisatie en dat betekent in dit scenario alleen maar voordelen. Zo is er een goed arbeidsvoorwaardelijk pakket (lees verder voor details),

Bekijk vacature »

OutSystems Developer

Bedrijfsomschrijving Deze organisatie is een toonaangevende speler in de vastgoedbranche en telt momenteel ruim 500 medewerkers. Met meer dan 150 applicaties staat er een complex applicatielandschap, bestaande uit standaard- en maatwerkapplicaties. De maatwerkapplicaties worden ontwikkeld door een inhouse development team. Het doel voor de komende periode is het verder vernieuwen en optimaliseren van het huidige applicatielandschap. Zo staat de organisatie aan de vooravond van de implementatie van een gloednieuw applicatiehuis, waar OutSystems een belangrijke rol in speelt. Binnen deze rol word je als OutSystems Developer verantwoordelijk voor de ontwikkeling van uiteenlopende applicaties met OutSystems. Om het nieuwe applicatiehuis te implementeren

Bekijk vacature »

Scala Developer Security

Bedrijfsomschrijving Voor een dynamische en snelgroeiende organisatie in Den Haag zijn wij op zoek naar een back-end developer met interesse in security vraagstukken. Deze organisatie richt zich op het ontwikkelen van een online platform waar persoons- en bedrijfsgevoelige informatie veilig kan worden uitgewisselt en opgeslagen. Binnen de organisatie voegt iedereen vanuit zijn eigen expertise iets toe en staat zelfsturing hoog in het vaandel. Zij werken via het domain driven design principe waarbij zij binnen het betreffende domein met alle disciplines sparren over de inrichting van het platform en het oplossen van problemen. Het platform wordt ontwikkeld in Scala binnen een

Bekijk vacature »

EPM Teamlead

A global consumer goods company seeks a EPM Team Lead to join its financial systems department. The client is growing rapidly and seeks a hands-on consolidation systems professional ideally with planning and budgeting knowledge. The successful candidate will lead a small team of application specialists and ensure the delivery of enhanced reporting and business insights to an international group of stakeholders. Key requirements: 2 to 5 years' experience with OneStream, in a technical function. Knowledge of a planning or forecasting tool, in a support or administration function. Experience in team leading, mentoring or coach will be beneficial. Analytical mindset, business

Bekijk vacature »

.NET backend developer, afwisselende projecten, ve

Voor een detacheerder in de regio Rotterdam zijn we op zoek naar een ervaren .NET developer. Het bedrijf bestaat uit circa 100 medewerkers waarvan 10 .NET developers. Dit zijn voornamelijk senior .NET developers. Omdat je via deze werkgever gedetacheerd wordt bij hun klanten, is werk afhankelijk van de opdracht waar je terechtkomt. Dit kan zijn bij een grote verzekeraar maar ook een bouwbedrijf of gemeente. Niet alleen betekent dit om de zoveel tijd (bijvoorbeeld 1 jaar) een nieuwe technische uitdaging maar ook een nieuwe omgeving waarin je terecht komt. Naast de afwisseling in je werk biedt dit bedrijf uitstekende opleidingsmogelijkheden.

Bekijk vacature »

Power BI Developer

De Power BI Developer die goed op deze aanvraag zou aansluiten is communicatief vaardig. Hij of zij vindt het leuk om een onervaren team te begeleiden en te coachen. Daarnaast wordt er van deze Developer verwacht dat hij/zij data kan ontsluiten. Projectdetails: Startdatum: Medio december Projectduur: 3 maanden, met optie tot verlenging Uren per week: 32-40 uur Locatie: remote Wat is jou profiel? Kennis van Power BI Kennis van AWS (DynamoDB/Lambda functions/API Gateway/S3) and/or Microsoft Azure Kennis van Databases and REST API's (JSON, XML) Ben je geïnteresseerd in deze rol of ken je iemand die mogelijk interesse heeft in dit

Bekijk vacature »

Ervaren developer (front-end/back-end)

Functie: Senior Developer Werklocatie: Zoetermeer Wij hebben met het door ons zelf ontwikkelde Financiële Advies software “Finix-Advies”, een vooraanstaande positie in de financiële branche. Echter hebben wij nu als doel onze visie om te zetten in software die consumenten, adviseurs en aanbieders ondersteunt. Vooral adviseurs, vermogens- beheerder als banken en verzekeraars maken gebruik van Finix om haar klanten snel en vakkundig te voorzien van (financieel) advies. Met behulp van Finix kunnen gebruikers op snelle, efficiënte en vakkundige wijze haar klanten helpen bij het geven van het juiste financiële advies en het realiseren van haar dromen. Bijvoorbeeld bij het adviseren van

Bekijk vacature »

Senior Application Developer C#

Senior Application Developer C# Eindhoven As a developer at UPS you work on delivering functionality for highly complex IT systems. You collaborate in agile teams and participate in emerging technologies and processes like CI/CD and DevOps to ensure that we meet our objectives effectively and efficiently. Your primary role is to perform full system life cycle activities, e.g. analysis, technical requirements, design, coding, testing and the implementation of software. Working in our Europe development center in Eindhoven means working in an international team with onsite people as well as team members located in other parts of the world. You’ll be

Bekijk vacature »

Full stack C# .NET web developer, inhouse project

Ben je een C# .NET developer met circa 0 tot 2 jaar ervaring en op zoek naar een nieuwe baan als web developer in Rotterdam? Bij een organisatie waarbij je inhouse kan werken maar wel de afwisseling hebt van telkens nieuwe projecten voor externe klanten? En het liefste een organisatie waar je de zekerheid en mogelijkheden hebt die horen bij een groot bedrijf maar waarbij je tevens de informaliteit en vrijheid hebt van een kleine club? Daarbij natuurlijk een goed salaris, uitstekende pensioenregeling, onkostenvergoeding, de nieuwste versie van de Iphone of Samsung, plus laptop. En de mogelijkheid voor een leaseauto

Bekijk vacature »

ServiceNow developer

In our dynamic and digitalized world, a lot of companies switch to the ServiceNow platform for managing, not only their IT services but also their HR, customer, project or financial services. Accenture is a Global Elite partner of ServiceNow and is realizing transformational implementation projects at its clients in all possible domains and industries. Due to our significant growth we are looking for candidates to strengthen our highly diverse team. Your job As a ServiceNow Developer, you will build and automate workflows in ServiceNow and help our clients with implementation of new services and functionality in the platform. You will

Bekijk vacature »

Senior C# Developer

You'll build modern applications for Coolblue back’s office. We have a lot of friends, and they crave well-structured data and user-friendly, task-focused applications. How do I become Senior C# Developer at Coolblue? You regularly participate in brainstorm sessions about user experience, data, and task flow with the UX Designer, Product Owner, and Data Scientists in your team. Besides that you will create disconnected, highly congruent, and testable code that can easily be maintained and is future-proof. Want to become Senior C# Developer at Coolblue? Funda will explain how to do that. You enjoy doing this Working with various types of

Bekijk vacature »

Junior Python Developer Data Scientist

Bedrijfsomschrijving Onze klant biedt financiële dienstverlening aan organisaties binnen de non-profit sector. Hierbij kun je denken aan overheden en instellingen met een maatschappelijk belang. In vergelijking met andere financiële dienstverleners staan zij er bijzonder goed voor. De organisatie heeft een open cultuur met vrij korte lijnen. Daarnaast zijn duurzaamheid en betrouwbaarheid termen die de organisatie kenmerken. Ter uitbreiding van één van de IT teams zijn zij op zoek naar een Python Ontwikkelaar met interesse voor Data Science. Grote hoeveelheden data zijn kenmerkend voor het applicatie landschap, waarbij aan de finance kant hier complexe data, formules en wiskundige berekeningen komen kijken.

Bekijk vacature »

Software Ontwikkelaar

Software Ontwikkelaar Heb jij altijd al willen weten hoe het achter de schermen werkt bij 112? Wij zijn op zoek naar een Software Ontwikkelaar die zich wil verdiepen in onze geografische informatiesystemen voor meldkamers en vervoer. Kom jij ons team versterken? Wat ga je doen als Software Ontwikkelaar bij CityGIS? Jij bent medeverantwoordelijk voor het ontwerpen en ontwikkelen van geografische coördinatie- en informatiesystemen. Je bedenkt nieuwe functionaliteiten, waarmee CityGIS zich kan blijven onderscheiden in de markt. Je denkt actief mee over de invulling van projecten en doet suggesties voor bestaande en nieuwe functionaliteiten. We werken voor klanten waar elke seconde

Bekijk vacature »

Gedreven Java programmeur met interesse in securit

Bedrijfsomschrijving Voor een gerenomeerd bedrijf dat zich al jaren bezig houdt met intensieve security binnen de communicatiesector ben ik opzoek naar een Java Developer. Omdat dit bedrijf erg aan het groeien is kunnen ze versterking op elk gebied gebruiken, de mate van werkervaring is dus niet heel erg belangrijk. Ben je dus een starter, medior of senior Java Developer? Dan is dit een mogelijk interessante rol voor jou. Men werkt hier aan in Java ontwikkelde (veiligheid)oplossingen op het gebied van netwerken en beveiliging van voice en video. Grote hoeveelheden data spelen een rol. Bij deze organisatie werken op dit moment

Bekijk vacature »

Java Developer binnen een innovatieve organisatie

Bedrijfsomschrijving Voor een internationaal bedrijf dat actief is rondom high-end beveiliging van telecomnetwerken ben ik opzoek naar een Java Developer. Het aantal jaren werkervaring maakt niet te veel uit, aangezien ze op alle levels wel versterking kunnen gebruiken. Ben je dus een starter, medior of senior Java Developer? Dan is dit een mogelijk interessante rol voor jou. Men werkt hier aan in Java ontwikkelde (veiligheid)oplossingen op het gebied van netwerken en beveiliging van voice en video. Grote hoeveelheden data spelen een rol. De organisatie kent zo`n 55FTE en de cultuur valt te omschrijven als gedreven, prestatiegericht en open. Naast de

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

02/12/2020 17:10:37
 
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.