There are always several ways to do things in FileMaker. Assuming that your subscriptions are in a related table and the relationship sorts the subscriptions table by Subscription Date ascending, you could then create an unstored calculation field (call it LastSub) that uses the Last function to return the person's last (most recent) subscription date. Then define another calculation like: If ( Get ( CurrentDate ) ≥ LastSub - 30 ; "Renew" ; "" )
Then define a script that Finds all records in the parent table with "Renew" followed by the Send Mail step to send them some message (provided the subscribers all have email addresses).
This can be done by relationship without any find or sort.
In any table you can create a field calculation which is "Get ( CurrentDate ) - 30" and you can create a relationship to the subs table where this field< Sub due date. From there you can go to related records print to pdf & email etc.
All of this can get very complex. I have a system which manages multiple publications with varying issue intervals and I do this with separate issue tables. Similarly I have years table (or at least category field) for annual member renewal for other systems. It is important in a system where members can lapse for a year to allow this kind of flexibility so that your running record of subscription is meaniful.
There is no one way to do this... you must take all YOUR variables into account and choose the best method which can be adapated over time.
I use a
subscription_start_date and subscription_end_date the user likes to be able to review, multiple publications, variable per magazine editions per year, variable subscription durations.I create SubscribedEdition (line item) records for every subscription
A renewed subscription is a new subscription record, publication_id, subscriber_id, start end, issue count.. I also use a Subscrber table a join table to persons and companies, and a subscriber status; tracks multiple current subscriptions per subscriber etc.
days to lapse = If( subn_active_status_code = 1 ; subscription_end_date - Get ( CurrentDate ) ; 0)
so a search layout can be used to show lapsing or lapsed, filtred for active/inactive, with an appropriately filetered portal
batch mails can then be set. Could be automtated.
Intergating a person status is a wararnted inclusion; are they current, yes/no, and why if not.
his can avoid sending material to those no longer of this world, which relatives often take real exception to. Only as good as the data input of course.
I would concider first wether to have this programmed in the solution itself though customer get's prompted to do renewal, OR in your password administrations database though reminding customers would be yours duty.
I choosed to have this on the clients side though a message with a counter appears. Kind of:
"Yours user license ends in 30 days!" ("… ends in 29 days", and so on …)