Question on code for issuing a receipt number

PHP programming forum. Ask questions or help people concerning PHP code. Don't understand a function? Need help implementing a class? Don't understand a class? Here is where to ask. Remember to do your homework!

Moderator: General Moderators

Post Reply
ggrant3
Forum Newbie
Posts: 10
Joined: Wed Jan 16, 2008 10:37 am

Question on code for issuing a receipt number

Post by ggrant3 »

I currently have some php code that I am using for issuing a 12 digit receipt number which inserts the current year as the first bock of numbers.

Code: Select all

// get the contents of the text file
  $receipt = file_get_contents('receipt.txt');
  // break it into an array of parts
  $parts = explode('-', $receipt);
 
  if ($parts[0] != date('Y')) {
    $parts[0] = date('Y');
    $parts[1] = '0000';
    $parts[2] = '0000';
  }
 
  if ($parts[2] <= 9998) {
    $parts[2]++;
    $parts[2] = sprintf('%04d', $parts[2]);
  }
 
  else {
    $parts[2] = '0001';
    $parts[1]++;
    $parts[1] = sprintf('%04d', $parts[1]);
  }
 
   // rebuild the number and reassign to $receipt
  $receipt = implode('-', $parts);
  $file = fopen('receipt.txt', 'w');
  fwrite($file, $receipt);
  fclose($file);
But I would like to change it to a smaller receipt number and I do not need the year to be incorporated in the number anymore.

I would like the number to be displayed like this: 000-0000

I am aware that I need to change the actual number in my "receipt.txt" folder to the seven digit layout, but I can't figure out how to modify the code to work properly and increase the receipt number by 1 each time an order is placed.

Can anyone help me out with this?
User avatar
califdon
Jack of Zircons
Posts: 4484
Joined: Thu Nov 09, 2006 8:30 pm
Location: California, USA

Re: Question on code for issuing a receipt number

Post by califdon »

There's no difference in how you increment the number. Just omit the date part and change the array index numbers and the number of digits for the first part:

Code: Select all

// get the contents of the text file
  $receipt = file_get_contents('receipt.txt');
  // break it into an array of parts
  $parts = explode('-', $receipt);
 
  if ($parts[1] <= 9998) {
    $parts[1]++;
    $parts[1] = sprintf('%04d', $parts[1]);
  } else {
    $parts[1] = '0001';
    $parts[0]++;
    $parts[0] = sprintf('%03d', $parts[0]);
  }
 
   // rebuild the number and reassign to $receipt
  $receipt = implode('-', $parts);
  $file = fopen('receipt.txt', 'w');
  fwrite($file, $receipt);
  fclose($file);
This means that most of the time you will be incrementing the second part of your new number, and when it reaches something like 123-9999, the next assignment will be 124-0001. I believe that's what you said you want.
Post Reply