{"id":2686,"date":"2012-11-23T22:33:45","date_gmt":"2012-11-24T06:33:45","guid":{"rendered":"http:\/\/www.digitalaccesspass.com\/doc\/?p=2686"},"modified":"2014-03-01T22:33:20","modified_gmt":"2014-03-02T06:33:20","slug":"product-cancellationexpiration-options","status":"publish","type":"post","link":"http:\/\/digitalaccesspass.com\/doc\/product-cancellationexpiration-options\/","title":{"rendered":"Product Cancellation\/Expiration Options"},"content":{"rendered":"<div>\n<p style=\"padding-left: 30px;\">In DAP 4.4, we have added a new feature to the hourly dap cron where once every day (it&#8217;s hardcoded to run ONCE between 10:00 PM &#8211; 11:00 PM PDT) the cron will look for users whose access expired that day.<\/p>\n<p style=\"padding-left: 30px;\">You can configure the<strong> Cancellation Options<\/strong> in <strong>DAP Products<\/strong> <strong>page<\/strong> -&gt; <strong>Cancellation &amp; Expiration tab.<\/strong><\/p>\n<p style=\"padding-left: 30px;\">\n<p style=\"padding-left: 30px;\">Then based on these settings, the DAP Hourly Cron will check if the current time is between 10:00 &#8211; 11:00 pm PDT (Server time), and if yes, it will take a look at each product, pick up the &#8216;Expiration Action&#8217; setting for that product, then get a list of <strong>ALL users<\/strong> whose access to that product has <strong>expired<\/strong> and apply the &#8216;<strong>Expiration Action<\/strong>&#8216; to that <strong>user-&gt;product <\/strong>record in DAP <strong>users -&gt; manage page.<\/strong><\/p>\n<p style=\"padding-left: 30px;\">The reason the dap cron checks the current time and runs the &#8216;expiration job&#8217; only once a day is because running it too often will burden your server\/resources as this job needs to pick up all products and then apply the cancellation rule to all users whose access has expired.<\/p>\n<p style=\"padding-left: 30px;\">The main thing is to make sure it only runs once.. does not matter if that&#8217;s between 10 &#8211; 11 or 11 &#8211; 12 etc. We just picked the time to be between 10 &#8211; 11 PM (server time).<\/p>\n<div>\n<div id=\"post_message_2399\">\n<blockquote><p><strong>1) No Action<\/strong><br \/>\nUser&#8217;s access will auto-expire at the end of current recurring cycle. <strong>If the user re-signs, they will start from where they left off instead of starting over at day 1.<\/strong><br \/>\nInfact this is how all older versions of dap already work.<\/p>\n<p>If a user cancelled access to a subscription product before and say that the same user now wants to start back after a couple of months break.<br \/>\nIf you have selected NO ACTION as this product&#8217;s expiration setting (in dap products page -&gt; cancellation &amp; expiration tab),<br \/>\nthen when the user re-signs, they will start their dripping from where they left off and will not start fresh again from day 1.<\/p><\/blockquote>\n<blockquote><p>Say a user&#8217;s access start date is 10\/01\/2012 and access end date is 10\/30\/2012, when the cron runs on 10\/31\/2012<br \/>\nand finds the user&#8217;s access has expired, it wont do anything.<\/p><\/blockquote>\n<blockquote><p>If the same user resigns on 11\/30\/2012, their access start date will be what it was before (10\/01\/2012) but their new access end date will be 10\/31\/2012 + 30 days (instead of 11\/30\/2012+30 days). User&#8217;s access to product will remain expired. You will have to set post-expiry access to &#8220;Y&#8221; in dap setup-&gt;config page for access to paid for content.<\/p><\/blockquote>\n<blockquote><p>See this for more details: http:\/\/www.digitalaccesspass.com\/forums\/threads\/741-Subscription-Cancellation<\/p><\/blockquote>\n<blockquote><p><strong>2) Remove From Product<\/strong><\/p>\n<p>If selected, dap will automatically find users whose access to this product has expired and remove user&#8217;s access to product completely for those users.<br \/>\nYou will need this setting to prevent access for expired users. <strong>User will completely lose access to product.<\/strong><br \/>\nIf the user signs up again, they will start over like a new member.<\/p>\n<p><strong>3) Set end date to previous day.<\/strong><\/p>\n<p><strong>Automatically move the expired user&#8217;s access start and end day<\/strong> (set the access end date to the previous date).<br \/>\nWhen the cron wakes up and runs this job once daily, it will keep moving the user&#8217;s access start \/ end date<br \/>\nforward in such a way that user&#8217;s access will remain expired but the access end date will not be stuck somewhere in past,<br \/>\nit would be always set to the previous date (from current date).<\/p>\n<p>Say a user&#8217;s access start date is 10\/01\/2012 and access end date is 10\/30\/2012, when the cron runs on 10\/31\/2012<br \/>\nand finds the user&#8217;s access has expired, it will set the access end date to previous date.. so first time when<br \/>\nthe cron runs after the user&#8217;s access expires, nothing will happen, access end date will remain 10\/30,<br \/>\nbut when cron runs on 11\/1, it will now move the access end date to previous date so the new access start date will be 10\/02\/2012<br \/>\nbut end date will be 10\/31\/2012 (the access start \/ end block is moved forward).<\/p>\n<p>So if the cancelled user re-signs, the user&#8217;s access will not remain expired as their access will be extended from the access end date<br \/>\nto a date in future and the dripping will continue from where they left off.\u00a0 You would probably want to use this setting if you are on DAP 4.4.<\/p><\/blockquote>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>In DAP 4.4, we have added a new feature to the hourly dap cron where once every day (it&#8217;s hardcoded to run ONCE between 10:00 PM &#8211; 11:00 PM PDT) the cron will look for users whose access expired that day. You can configure the Cancellation Options in DAP Products page -&gt; Cancellation &amp; Expiration [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[20],"tags":[],"_links":{"self":[{"href":"http:\/\/digitalaccesspass.com\/doc\/wp-json\/wp\/v2\/posts\/2686"}],"collection":[{"href":"http:\/\/digitalaccesspass.com\/doc\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/digitalaccesspass.com\/doc\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/digitalaccesspass.com\/doc\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"http:\/\/digitalaccesspass.com\/doc\/wp-json\/wp\/v2\/comments?post=2686"}],"version-history":[{"count":19,"href":"http:\/\/digitalaccesspass.com\/doc\/wp-json\/wp\/v2\/posts\/2686\/revisions"}],"predecessor-version":[{"id":4190,"href":"http:\/\/digitalaccesspass.com\/doc\/wp-json\/wp\/v2\/posts\/2686\/revisions\/4190"}],"wp:attachment":[{"href":"http:\/\/digitalaccesspass.com\/doc\/wp-json\/wp\/v2\/media?parent=2686"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/digitalaccesspass.com\/doc\/wp-json\/wp\/v2\/categories?post=2686"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/digitalaccesspass.com\/doc\/wp-json\/wp\/v2\/tags?post=2686"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}