File size: 3,812 Bytes
0ea5048 | 1 2 3 4 5 6 | <!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Invoice Number Sequence — PHP Composer Package (gap-free, year reset, PDO store, audit report)</title><style>body{max-width:820px;margin:40px auto;padding:0 18px;font-family:system-ui,sans-serif;line-height:1.6}pre{background:#f6f4ef;padding:16px;border-radius:10px;overflow:auto}code{background:#f6f4ef;padding:2px 5px;border-radius:4px}</style><script data-grow-initializer="">!(function(){window.growMe||((window.growMe=function(e){window.growMe._.push(e);}),(window.growMe._=[]));var e=document.createElement("script");(e.type="text/javascript"),(e.src="https://faves.grow.me/main.js"),(e.defer=!0),e.setAttribute("data-grow-faves-site-id","U2l0ZTphZjljMzgyMC0yMmU5LTRhYjgtYTIxNS03OTRhMGY1N2ExYzM=");var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t);})();</script>
<!--yj-canon-s101--><link rel="canonical" href="https://getreadystack.com/tools/composer-package-invoice-number-sequence-php"></head><body><h1>Invoice Number Sequence — PHP Composer Package (gap-free, year reset, PDO store, audit report)</h1><p>Gap-free document numbering for PHP 8.1+: invoice, credit-note and order numbers with year/quarter/month/day reset, atomic counter stores (in-memory, JSON file, PDO with row locking), takeover of an existing number range, and a gap-and-duplicate audit report. No runtime dependencies.</p><h2>Install</h2><pre>composer require numberkit/document-sequence-pro</pre><h2>Files</h2><ul><li><code>src/Clock.php</code></li><li><code>src/SystemClock.php</code></li><li><code>src/FrozenClock.php</code></li><li><code>src/Reset.php</code></li><li><code>src/Pattern.php</code></li><li><code>src/IssuedNumber.php</code></li><li><code>src/ParsedNumber.php</code></li><li><code>src/CounterStore.php</code></li><li><code>src/SequenceGenerator.php</code></li><li><code>src/Store/InMemoryCounterStore.php</code></li><li><code>src/Store/JsonFileCounterStore.php</code></li><li><code>src/Store/PdoCounterStore.php</code></li></ul>
<section data-yj-cta="paid" style="margin:3rem auto;max-width:46rem;padding:1.5rem 1.25rem;border:1px solid #d8dee9;border-radius:12px;background:#fbfcfe;font:16px/1.6 system-ui,-apple-system,Segoe UI,sans-serif"><h2 style="margin:0 0 .5rem;font-size:1.25rem">Get the complete version <span class="yj-price">$60</span></h2><p style="margin:.25rem 0 1rem;color:#41505f">This page is the working piece. The full pack has everything below.</p><a href="https://getreadystack.com/free?p=composer-package-invoice-number-sequence-php&lang=en" rel="nofollow" style="display:inline-block;padding:.7rem 1.3rem;border-radius:8px;background:#1b64f2;color:#fff;text-decoration:none;font-weight:600">Send it to me</a></section>
<!--yj-share-s101--><div style="margin:28px 0 8px;text-align:center"><button id="yjcp" type="button" style="font:inherit;padding:10px 18px;border:1px solid #8884;border-radius:10px;background:transparent;cursor:pointer">Copy link</button></div><script>(function(){var b=document.getElementById("yjcp");if(!b)return;var t=b.textContent;b.addEventListener("click",function(){var u=location.href.split("#")[0];function d(){b.textContent="Link copied";setTimeout(function(){b.textContent=t;},1800);}if(navigator.clipboard&&navigator.clipboard.writeText){navigator.clipboard.writeText(u).then(d,function(){prompt("",u);});}else{prompt("",u);}});})();</script>
<script data-yj="yj-view-beacon">(function(){try{var p=location.pathname;var k='yjv:'+p;if(sessionStorage.getItem(k))return;sessionStorage.setItem(k,'1');fetch('/api/ev',{method:'POST',keepalive:true,headers:{'Content-Type':'application/json'},body:JSON.stringify({path:p,lang:"en"})}).catch(function(){});}catch(e){}})();</script>
</body></html> |