Ga naar inhoud
  • 0

Oplopend nummer per kalenderjaar


martindes

Vraag

Beste FM experts.

Is er een methode om ieder jaar automatisch een nieuw volgnummer te berekenen in combinatie met een kalenderjaar.

Bijvoorbeeld

Voor kalenderjaar 2017, 2017_00001, 2017_00002
Voor kalenderjaar 2018, 2018_00001, 2018_00002

Zodat je voor ieder jaar kunt zien in dat recordID hoeveel records je hebt en wat de oplopende nummers zijn.

Bij voorbaat dank voor de antwoorden.

Link naar reactie

4 antwoorden op deze vraag

Aanbevolen berichten

  • 0

Je kan werken met een calculatieveld, met daarin de combinatie van jaar (aanmaakdatum) en een gewoon volgnummer. Je kan deze baseren op een gewoon veld met volgwaarde, of gecalculeerd uit een self-joined tabel op basis van jaar ( max (volgnummer) + 1). 

Nadeel van al te veel gecalculeer bij aanmaak van volgnummers is het risico op duplicaten als er meerdere gebruikers zijn, - heb ik wel eens ondervonden.

Een andere (en snellere)  oplossing is gewoon de volgwaarde-functie gebruiken.

Voer de eerstvolgende waarde conform jouw gewenste format: 2017_00002, te verhogen met 1.

Maak vervolgens een scriptje dat checkt of er een jaarwisseling heeft plaatsgevonden, getriggered bij openen van het bestand, en dan de volgwaarde voor het nieuwe jaar op 1 zet.

Link naar reactie
  • 0

Vind ik een mooie oplossing, Marsau. Ik heb even een voorbeeldfiletje gemaakt.

Hier is het opstartscript:

Set Variable [ $volgendSerieelNummer ; Value: GetNextSerialValue ( Get ( FileName ) ; GetFieldName ( tabel::primary key ) ) ] 
Set Variable [ $jaar ; Value: GetAsNumber ( GetValue ( Substitute ( $volgendSerieelNummer ; "_" ; ¶ ) ; 1 ) ) ] 
If [ $jaar < Year ( Get ( CurrentDate ) ) ] 
	Show Custom Dialog [ "Jaarwisseling" ; "We zijn in een nieuw jaar beland. Wil je de nummering resetten naar " & Year ( Get ( CurrentDate )…" ] 
	If [ Get ( LastMessageChoice ) = 1 ] 
		Set Next Serial Value [ tabel::primary key ; Year ( Get ( CurrentDate ) ) & "_00001" ] 
	End If
End If

 

Jaarwisseling.fmp12

Link naar reactie
  • 0

Ik heb een globaal veld dat bij aanmaak van een nieuw record verhoogd wordt per 1.

Bij het begin van een kalenderjaar reset ik dit veld manueel (script geactiveerd door een button).  Het zoekt dan even op wat het nieuwe kalenderjaar is en zet de teller op 0.  Bijvoorbeeld 20180000.

Dit geeft me het voordeel om in de eerste week van een nieuw jaar toch nog de laatste facturen van het vorige jaar aan te maken en te verzenden.

In bijlage het script.  Je kan eventueel nog een custom dialogbox invoegen om je te verwittigen of je zeker wil resetten, zoals Peter hierboven aanhaald.

 

 

Screen Shot 2018-04-08 at 21.53.35.png

aangepast door idmix.be
Link naar reactie
  • 0
14 uur geleden zei idmix.be:

Ik heb een globaal veld dat bij aanmaak van een nieuw record verhoogd wordt per 1.

Bij het begin van een kalenderjaar reset ik dit veld manueel (script geactiveerd door een button).  Het zoekt dan even op wat het nieuwe kalenderjaar is en zet de teller op 0.  Bijvoorbeeld 20180000.

Dit geeft me het voordeel om in de eerste week van een nieuw jaar toch nog de laatste facturen van het vorige jaar aan te maken en te verzenden.

In bijlage het script.  Je kan eventueel nog een custom dialogbox invoegen om je te verwittigen of je zeker wil resetten, zoals Peter hierboven aanhaald.

 

 

Screen Shot 2018-04-08 at 21.53.35.png

Ik denk dat het gebruik van een globaal niet gaat werken in een multi-user of netwerk-setting. Om de simpele reden dat de inhoud wordt gewist of gereset naar een initiële waarde (opgeslagen in de stand-alone versie voordat het bestand werd gehost). Of mis ik iets?

Ik snap het voordeel van een niet geheel geautomatiseerde reset, zodat je nog wat facturen van het vorige jaar kan verwerken. Peter heeft hiermee in zijn scriptje rekening gehouden, zie ik. Je kan je wel afvragen of het boekhoudkundig zuiver is: ik bedoel het post-dateren van facturen. Maar dat terzijde.

Link naar reactie

Doe mee aan dit gesprek

Je kunt dit nu plaatsen en later registreren. Indien je reeds een account hebt, log dan nu in om het bericht te plaatsen met je account.

Gast
Beantwoord deze vraag...

×   Geplakt als verrijkte tekst.   Plak in plaats daarvan als platte tekst

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...