I have a client who issues tickets in numerical sequence (it's a pawnshop). The sequence helps them balance things back at the end of the day (read that as check for stealing) when checking the various parcels received for the tickets issued (they keep a copy of the ticket issued to their customer and at the end of the day sort them sequentially and read the numbers off the tickets to ensure they match the parcels). They are now not wanting the number printed on the ticket as their competitors may be able to get an idea from the sequential numbers how much business they are doing (by getting a ticket early in the morning and then one ate in the afternoon).
So, they have asked me to come up with a solution and I must admit that I am coming up blank.
Any ideas?
Go binary! 10010110101 They are kicking ass today!
On Wed, Oct 10, 2018 at 2:26 PM Frank Cazabon frank.cazabon@gmail.com wrote:
I have a client who issues tickets in numerical sequence (it's a pawnshop). The sequence helps them balance things back at the end of the day (read that as check for stealing) when checking the various parcels received for the tickets issued (they keep a copy of the ticket issued to their customer and at the end of the day sort them sequentially and read the numbers off the tickets to ensure they match the parcels). They are now not wanting the number printed on the ticket as their competitors may be able to get an idea from the sequential numbers how much business they are doing (by getting a ticket early in the morning and then one ate in the afternoon).
So, they have asked me to come up with a solution and I must admit that I am coming up blank.
Any ideas?
--
Frank.
Frank Cazabon
[excessive quoting removed by server]
Or Hex?
What difference does it make if the competition knows how much business you're doing?
E
On Wed, Oct 10, 2018 at 2:33 PM Stephen Russell srussell705@gmail.com wrote:
Go binary! 10010110101 They are kicking ass today!
On Wed, Oct 10, 2018 at 2:26 PM Frank Cazabon frank.cazabon@gmail.com wrote:
I have a client who issues tickets in numerical sequence (it's a pawnshop). The sequence helps them balance things back at the end of the day (read that as check for stealing) when checking the various parcels received for the tickets issued (they keep a copy of the ticket issued to their customer and at the end of the day sort them sequentially and read the numbers off the tickets to ensure they match the parcels). They are now not wanting the number printed on the ticket as their competitors may be able to get an idea from the sequential numbers how much business they are doing (by getting a ticket early in the morning and then one ate in the afternoon).
So, they have asked me to come up with a solution and I must admit that I am coming up blank.
Any ideas?
--
Frank.
Frank Cazabon
[excessive quoting removed by server]
On 10/10/2018 03:41 PM, Eric Selje wrote:
What difference does it make if the competition knows how much business you're doing?
I really couldn't say. They seem to "spy" on their competitors this way and think their competitors also do it to them. I really don't understand their reasoning, but then again these are clients who wouldn't let me remotely connect to their systems until just a couple years ago.
Frank.
Frank Cazabon
ROFL.
John Weller 01380 723235 07976 393631
Go binary! 10010110101 They are kicking ass today!
But how will the staff be able to read the binary numbers off the ticket and know it's in sequence?
On 10 October 2018 15:33:10 GMT-04:00, Stephen Russell srussell705@gmail.com wrote:
Go binary! 10010110101 They are kicking ass today!
On Wed, Oct 10, 2018 at 2:26 PM Frank Cazabon frank.cazabon@gmail.com wrote:
I have a client who issues tickets in numerical sequence (it's a pawnshop). The sequence helps them balance things back at the end of
the
day (read that as check for stealing) when checking the various
parcels
received for the tickets issued (they keep a copy of the ticket
issued
to their customer and at the end of the day sort them sequentially
and
read the numbers off the tickets to ensure they match the parcels).
They
are now not wanting the number printed on the ticket as their competitors may be able to get an idea from the sequential numbers
how
much business they are doing (by getting a ticket early in the
morning
and then one ate in the afternoon).
So, they have asked me to come up with a solution and I must admit
that
I am coming up blank.
Any ideas?
--
Frank.
Frank Cazabon
[excessive quoting removed by server]
01 =1 10=2
Why not print a QR Barcode and stick the number in there instead?
On Wed, Oct 10, 2018 at 4:24 PM Frank Cazabon frank.cazabon@gmail.com wrote:
But how will the staff be able to read the binary numbers off the ticket and know it's in sequence?
On 10 October 2018 15:33:10 GMT-04:00, Stephen Russell < srussell705@gmail.com> wrote:
Go binary! 10010110101 They are kicking ass today!
On Wed, Oct 10, 2018 at 2:26 PM Frank Cazabon frank.cazabon@gmail.com wrote:
I have a client who issues tickets in numerical sequence (it's a pawnshop). The sequence helps them balance things back at the end of
the
day (read that as check for stealing) when checking the various
parcels
received for the tickets issued (they keep a copy of the ticket
issued
to their customer and at the end of the day sort them sequentially
and
read the numbers off the tickets to ensure they match the parcels).
They
are now not wanting the number printed on the ticket as their competitors may be able to get an idea from the sequential numbers
how
much business they are doing (by getting a ticket early in the
morning
and then one ate in the afternoon).
So, they have asked me to come up with a solution and I must admit
that
I am coming up blank.
Any ideas?
--
Frank.
Frank Cazabon
[excessive quoting removed by server]
They have a barcode on the ticket, but we also print the number. They (for whatever reason) found that using the barcode was too hard.
A QR code won't make it any easier. :(
Frank.
Frank Cazabon
On 10/10/2018 05:35 PM, Stephen Russell wrote:
01 =1 10=2
Why not print a QR Barcode and stick the number in there instead?
On Wed, Oct 10, 2018 at 4:24 PM Frank Cazabon frank.cazabon@gmail.com wrote:
But how will the staff be able to read the binary numbers off the ticket and know it's in sequence?
On 10 October 2018 15:33:10 GMT-04:00, Stephen Russell < srussell705@gmail.com> wrote:
Go binary! 10010110101 They are kicking ass today!
On Wed, Oct 10, 2018 at 2:26 PM Frank Cazabon frank.cazabon@gmail.com wrote:
I have a client who issues tickets in numerical sequence (it's a pawnshop). The sequence helps them balance things back at the end of
the
day (read that as check for stealing) when checking the various
parcels
received for the tickets issued (they keep a copy of the ticket
issued
to their customer and at the end of the day sort them sequentially
and
read the numbers off the tickets to ensure they match the parcels).
They
are now not wanting the number printed on the ticket as their competitors may be able to get an idea from the sequential numbers
how
much business they are doing (by getting a ticket early in the
morning
and then one ate in the afternoon).
So, they have asked me to come up with a solution and I must admit
that
I am coming up blank.
Any ideas?
--
Frank.
Frank Cazabon
[excessive quoting removed by server]
Keep a table with the primary key (a non-data-bearing auto-incremented integer) as the sequential number, to ensure things don't go missing out of sequence.
For each ticket, create a unique number that's not already in the table. Use the random functions to generate a mix of numbers and letters, and check to ensure that's not already in use. (You could use GUIDs, but they are too long for practical use, I suspect.)
At the end of the day, you can match a list of the random "ticket numbers" against your list in primary key order to ensure no tickets were "misplaced."
On Wed, Oct 10, 2018 at 3:25 PM Frank Cazabon frank.cazabon@gmail.com wrote:
I have a client who issues tickets in numerical sequence (it's a pawnshop). The sequence helps them balance things back at the end of the day (read that as check for stealing) when checking the various parcels received for the tickets issued (they keep a copy of the ticket issued to their customer and at the end of the day sort them sequentially and read the numbers off the tickets to ensure they match the parcels). They are now not wanting the number printed on the ticket as their competitors may be able to get an idea from the sequential numbers how much business they are doing (by getting a ticket early in the morning and then one ate in the afternoon).
So, they have asked me to come up with a solution and I must admit that I am coming up blank.
Any ideas?
--
Frank.
Frank Cazabon
[excessive quoting removed by server]
Multiply the number by 3.
Vassilis
On 10 Oct 2018, at 22:42, Ted Roche tedroche@gmail.com wrote:
Keep a table with the primary key (a non-data-bearing auto-incremented integer) as the sequential number, to ensure things don't go missing out of sequence.
For each ticket, create a unique number that's not already in the table. Use the random functions to generate a mix of numbers and letters, and check to ensure that's not already in use. (You could use GUIDs, but they are too long for practical use, I suspect.)
At the end of the day, you can match a list of the random "ticket numbers" against your list in primary key order to ensure no tickets were "misplaced."
On Wed, Oct 10, 2018 at 3:25 PM Frank Cazabon frank.cazabon@gmail.com wrote:
I have a client who issues tickets in numerical sequence (it's a pawnshop). The sequence helps them balance things back at the end of the day (read that as check for stealing) when checking the various parcels received for the tickets issued (they keep a copy of the ticket issued to their customer and at the end of the day sort them sequentially and read the numbers off the tickets to ensure they match the parcels). They are now not wanting the number printed on the ticket as their competitors may be able to get an idea from the sequential numbers how much business they are doing (by getting a ticket early in the morning and then one ate in the afternoon).
So, they have asked me to come up with a solution and I must admit that I am coming up blank.
Any ideas?
--
Frank.
Frank Cazabon
[excessive quoting removed by server]
That would still involve some thought on the users part (and they don't think at all).
Frank.
Frank Cazabon
On 10/10/2018 03:46 PM, Vassilis Aggelakos wrote:
Multiply the number by 3.
Vassilis
On 10 Oct 2018, at 22:42, Ted Roche tedroche@gmail.com wrote:
Keep a table with the primary key (a non-data-bearing auto-incremented integer) as the sequential number, to ensure things don't go missing out of sequence.
For each ticket, create a unique number that's not already in the table. Use the random functions to generate a mix of numbers and letters, and check to ensure that's not already in use. (You could use GUIDs, but they are too long for practical use, I suspect.)
At the end of the day, you can match a list of the random "ticket numbers" against your list in primary key order to ensure no tickets were "misplaced."
On Wed, Oct 10, 2018 at 3:25 PM Frank Cazabon frank.cazabon@gmail.com wrote:
I have a client who issues tickets in numerical sequence (it's a pawnshop). The sequence helps them balance things back at the end of the day (read that as check for stealing) when checking the various parcels received for the tickets issued (they keep a copy of the ticket issued to their customer and at the end of the day sort them sequentially and read the numbers off the tickets to ensure they match the parcels). They are now not wanting the number printed on the ticket as their competitors may be able to get an idea from the sequential numbers how much business they are doing (by getting a ticket early in the morning and then one ate in the afternoon).
So, they have asked me to come up with a solution and I must admit that I am coming up blank.
Any ideas?
--
Frank.
Frank Cazabon
[excessive quoting removed by server]
So effectively display one number on the ticket but when it comes to checking, run a report displaying the sequential numbers and the random/nonsense number?
On 10 October 2018 15:42:30 GMT-04:00, Ted Roche tedroche@gmail.com wrote:
Keep a table with the primary key (a non-data-bearing auto-incremented integer) as the sequential number, to ensure things don't go missing out of sequence.
For each ticket, create a unique number that's not already in the table. Use the random functions to generate a mix of numbers and letters, and check to ensure that's not already in use. (You could use GUIDs, but they are too long for practical use, I suspect.)
At the end of the day, you can match a list of the random "ticket numbers" against your list in primary key order to ensure no tickets were "misplaced."
On Wed, Oct 10, 2018 at 3:25 PM Frank Cazabon frank.cazabon@gmail.com wrote:
I have a client who issues tickets in numerical sequence (it's a pawnshop). The sequence helps them balance things back at the end of
the
day (read that as check for stealing) when checking the various
parcels
received for the tickets issued (they keep a copy of the ticket
issued
to their customer and at the end of the day sort them sequentially
and
read the numbers off the tickets to ensure they match the parcels).
They
are now not wanting the number printed on the ticket as their competitors may be able to get an idea from the sequential numbers
how
much business they are doing (by getting a ticket early in the
morning
and then one ate in the afternoon).
So, they have asked me to come up with a solution and I must admit
that
I am coming up blank.
Any ideas?
--
Frank.
Frank Cazabon
[excessive quoting removed by server]
One way is to come up with a 10 letter "word" with each letter representing a digit. You then convert the numeric sequence to alpha characters. And to avoid the pattern being too easily spotted, add one or more random characters to the final string. It's not the most robust encryption scheme in the world but it should obscure it enough. Here's a bit of VFP code to do this using the non-dictionary phrase MONKEYSHIP as the rebus. Pass it the number to encode and optionally .t. as the second parameter to append a single random character at the end.
************************************** * Program: MONKEYSHIP.PRG * Date: 05/07/2007 03:26 PM * VFP Version: Visual FoxPro 09.00.0000.7423 for Windows * Notes: **************************************
FUNCTION MonkeyShip(m.tnStringToEncode AS Number, m.tlRandom AS Boolean) LOCAL m.lcRetval AS Character m.lcStringToEncode=ALLTRIM(TRANSFORM(m.tnStringToEncode,[999999999999999])) LOCAL ARRAY laRebus[10,2] m.laRebus[1,1]=1 m.laRebus[1,2]=[M] m.laRebus[2,1]=2 m.laRebus[2,2]=[O] m.laRebus[3,1]=3 m.laRebus[3,2]=[N] m.laRebus[4,1]=4 m.laRebus[4,2]=[K] m.laRebus[5,1]=5 m.laRebus[5,2]=[E] m.laRebus[6,1]=6 m.laRebus[6,2]=[Y] m.laRebus[7,1]=7 m.laRebus[7,2]=[S] m.laRebus[8,1]=8 m.laRebus[8,2]=[H] m.laRebus[9,1]=9 m.laRebus[9,2]=[I] m.laRebus[10,1]=0 m.laRebus[10,2]=[P] m.lcRetval=[] m.lcChar=[] FOR m.x=1 TO LEN(ALLTRIM(m.lcStringToEncode)) m.lcChar=m.laRebus[ASCAN(m.laRebus,VAL(SUBSTR(m.lcStringToEncode,x,1)),1,-1,1,8),2] m.lcRetval=m.lcRetval+m.lcChar NEXT IF m.tlRandom LOCAL m.liCounter AS Integer PRIVATE m.pcRandomChar m.pcRandomChar=[ ] m.liCounter=1 *!* get a bunch of values to work with which will hopefully give at least one alpha not in monkeyship DO WHILE NOT ReturnRandom() m.liCounter=m.liCounter+1 IF m.liCounter=10 EXIT ENDIF ENDDO IF m.liCounter=10 && we went through loop 10 times and could not get a char back m.lcRetval=[Q]+m.lcRetval ELSE m.lcRetval=m.pcRandomChar+m.lcRetval ENDIF ENDIF RETURN m.lcRetval ENDFUNC
FUNCTION ReturnRandom LOCAL m.lcRandomSeed AS Character, m.lIsGood AS Boolean *!* get a bunch of values to work with which will hopefully give at least one alpha not in monkeyship m.lcRandomSeed=SYS(2015)+SYS(2015)+SYS(2015)+SYS(2015) m.lIsGood=.f. FOR m.y=LEN(m.lcRandomSeed) TO 2 STEP -1 && don't need to check first char in sys(2015) IF ISALPHA(SUBSTR(m.lcRandomSeed,y,1)) AND NOT UPPER(SUBSTR(m.lcRandomSeed,y,1))$[MONKEYSHIP] m.pcRandomChar=SUBSTR(m.lcRandomSeed,y,1) m.lIsGood=.t. EXIT ELSE m.lIsGood=.f. ENDIF NEXT RETURN m.lIsGood ENDFUNC
--
rk
-----Original Message----- From: ProfoxTech profoxtech-bounces@leafe.com On Behalf Of Frank Cazabon Sent: Wednesday, October 10, 2018 3:25 PM To: profoxtech@leafe.com Subject: Numbering Scheme
I have a client who issues tickets in numerical sequence (it's a pawnshop). The sequence helps them balance things back at the end of the day (read that as check for stealing) when checking the various parcels received for the tickets issued (they keep a copy of the ticket issued to their customer and at the end of the day sort them sequentially and read the numbers off the tickets to ensure they match the parcels). They are now not wanting the number printed on the ticket as their competitors may be able to get an idea from the sequential numbers how much business they are doing (by getting a ticket early in the morning and then one ate in the afternoon).
So, they have asked me to come up with a solution and I must admit that I am coming up blank.
Any ideas?
Thanks, Obscuring the number is not a problem, but I think they want to be able to read the number off the ticket at the end of the day in sequential order and I don't see how I can come up with a simple way to do this.
Frank.
Frank Cazabon
On 10/10/2018 03:48 PM, Richard Kaye wrote:
One way is to come up with a 10 letter "word" with each letter representing a digit. You then convert the numeric sequence to alpha characters. And to avoid the pattern being too easily spotted, add one or more random characters to the final string. It's not the most robust encryption scheme in the world but it should obscure it enough. Here's a bit of VFP code to do this using the non-dictionary phrase MONKEYSHIP as the rebus. Pass it the number to encode and optionally .t. as the second parameter to append a single random character at the end.
Program: MONKEYSHIP.PRGDate: 05/07/2007 03:26 PM- VFP Version: Visual FoxPro 09.00.0000.7423 for Windows
Notes:
FUNCTION MonkeyShip(m.tnStringToEncode AS Number, m.tlRandom AS Boolean) LOCAL m.lcRetval AS Character m.lcStringToEncode=ALLTRIM(TRANSFORM(m.tnStringToEncode,[999999999999999])) LOCAL ARRAY laRebus[10,2] m.laRebus[1,1]=1 m.laRebus[1,2]=[M] m.laRebus[2,1]=2 m.laRebus[2,2]=[O] m.laRebus[3,1]=3 m.laRebus[3,2]=[N] m.laRebus[4,1]=4 m.laRebus[4,2]=[K] m.laRebus[5,1]=5 m.laRebus[5,2]=[E] m.laRebus[6,1]=6 m.laRebus[6,2]=[Y] m.laRebus[7,1]=7 m.laRebus[7,2]=[S] m.laRebus[8,1]=8 m.laRebus[8,2]=[H] m.laRebus[9,1]=9 m.laRebus[9,2]=[I] m.laRebus[10,1]=0 m.laRebus[10,2]=[P] m.lcRetval=[] m.lcChar=[] FOR m.x=1 TO LEN(ALLTRIM(m.lcStringToEncode)) m.lcChar=m.laRebus[ASCAN(m.laRebus,VAL(SUBSTR(m.lcStringToEncode,x,1)),1,-1,1,8),2] m.lcRetval=m.lcRetval+m.lcChar NEXT IF m.tlRandom LOCAL m.liCounter AS Integer PRIVATE m.pcRandomChar m.pcRandomChar=[ ] m.liCounter=1 *!* get a bunch of values to work with which will hopefully give at least one alpha not in monkeyship DO WHILE NOT ReturnRandom() m.liCounter=m.liCounter+1 IF m.liCounter=10 EXIT ENDIF ENDDO IF m.liCounter=10 && we went through loop 10 times and could not get a char back m.lcRetval=[Q]+m.lcRetval ELSE m.lcRetval=m.pcRandomChar+m.lcRetval ENDIF ENDIF RETURN m.lcRetval ENDFUNC
FUNCTION ReturnRandom LOCAL m.lcRandomSeed AS Character, m.lIsGood AS Boolean *!* get a bunch of values to work with which will hopefully give at least one alpha not in monkeyship m.lcRandomSeed=SYS(2015)+SYS(2015)+SYS(2015)+SYS(2015) m.lIsGood=.f. FOR m.y=LEN(m.lcRandomSeed) TO 2 STEP -1 && don't need to check first char in sys(2015) IF ISALPHA(SUBSTR(m.lcRandomSeed,y,1)) AND NOT UPPER(SUBSTR(m.lcRandomSeed,y,1))$[MONKEYSHIP] m.pcRandomChar=SUBSTR(m.lcRandomSeed,y,1) m.lIsGood=.t. EXIT ELSE m.lIsGood=.f. ENDIF NEXT RETURN m.lIsGood ENDFUNC
--
rk
-----Original Message----- From: ProfoxTech profoxtech-bounces@leafe.com On Behalf Of Frank Cazabon Sent: Wednesday, October 10, 2018 3:25 PM To: profoxtech@leafe.com Subject: Numbering Scheme
I have a client who issues tickets in numerical sequence (it's a pawnshop). The sequence helps them balance things back at the end of the day (read that as check for stealing) when checking the various parcels received for the tickets issued (they keep a copy of the ticket issued to their customer and at the end of the day sort them sequentially and read the numbers off the tickets to ensure they match the parcels). They are now not wanting the number printed on the ticket as their competitors may be able to get an idea from the sequential numbers how much business they are doing (by getting a ticket early in the morning and then one ate in the afternoon).
So, they have asked me to come up with a solution and I must admit that I am coming up blank.
Any ideas?
Do you care more about competitors overestimating or underestimating the amount of business being done?
Try to put the real number between two 1 single digit other numbers. For example 3452 --> 3=dummy 45 = real sequence 2--> dummy.
No math needed, just this little trick!
Hope this helps.
On Thu, Oct 11, 2018 at 5:55 PM Alan Bourke alanpbourke@fastmail.fm wrote:
Do you care more about competitors overestimating or underestimating the amount of business being done?
-- Alan Bourke alanpbourke (at) fastmail (dot) fm
[excessive quoting removed by server]
On Oct 11, 2018, at 9:59 AM, Vassilis Aggelakos vassilag@gmail.com wrote:
Try to put the real number between two 1 single digit other numbers. For example 3452 --> 3=dummy 45 = real sequence 2--> dummy.
No math needed, just this little trick!
This is the best solution so far! You could use multiple extra digits on the left and right of the true number, and randomize them.
-- Ed Leafe
If you want it a bit more sophisticated, the last digit it could denote how many digits are dummy in the begining.
E.g: 45672 --> 45=dummy --> 67 real number and 2 dummy indicator.
On Thu, Oct 11, 2018 at 6:03 PM Ed Leafe ed@leafe.com wrote:
On Oct 11, 2018, at 9:59 AM, Vassilis Aggelakos vassilag@gmail.com wrote:
Try to put the real number between two 1 single digit other numbers. For example 3452 --> 3=dummy 45 = real sequence 2--> dummy.
No math needed, just this little trick!
This is the best solution so far! You could use multiple extra digits on the left and right of the true number, and randomize them.
-- Ed Leafe
[excessive quoting removed by server]
That may work!
Frank.
Frank Cazabon
On 11/10/2018 10:59 AM, Vassilis Aggelakos wrote:
Try to put the real number between two 1 single digit other numbers. For example 3452 --> 3=dummy 45 = real sequence 2--> dummy.
No math needed, just this little trick!
Hope this helps.
On Thu, Oct 11, 2018 at 5:55 PM Alan Bourke alanpbourke@fastmail.fm wrote:
Do you care more about competitors overestimating or underestimating the amount of business being done?
-- Alan Bourke alanpbourke (at) fastmail (dot) fm
[excessive quoting removed by server]
so to improve this solution : print the time and then add the sequential number as milliseconds such as : 172543.124 : the ticket has been printed at 17h25m43s and is the 124th ...
The Foxil
Le 11/10/2018 à 17:12, Frank Cazabon a écrit :
That may work!
Frank.
Frank Cazabon
On 11/10/2018 10:59 AM, Vassilis Aggelakos wrote:
Try to put the real number between two 1 single digit other numbers. For example 3452 --> 3=dummy 45 = real sequence 2--> dummy.
No math needed, just this little trick!
Hope this helps.
On Thu, Oct 11, 2018 at 5:55 PM Alan Bourke alanpbourke@fastmail.fm wrote:
Do you care more about competitors overestimating or underestimating the amount of business being done?
-- Alan Bourke alanpbourke (at) fastmail (dot) fm
[excessive quoting removed by server]
On Thu, Oct 11, 2018 at 10:54 AM Frank Cazabon frank.cazabon@gmail.com wrote:
Thanks, Obscuring the number is not a problem, but I think they want to be able to read the number off the ticket at the end of the day in sequential order and I don't see how I can come up with a simple way to do this.
Invisible Ink <g>
LOL!
Frank.
Frank Cazabon
On 11/10/2018 11:06 AM, Ted Roche wrote:
On Thu, Oct 11, 2018 at 10:54 AM Frank Cazabon frank.cazabon@gmail.com wrote:
Thanks, Obscuring the number is not a problem, but I think they want to be able to read the number off the ticket at the end of the day in sequential order and I don't see how I can come up with a simple way to do this.
Invisible Ink <g>
The people in the know memorize the rebus. But you mentioned nobody wants to think so...
--
rk
-----Original Message----- From: ProfoxTech profoxtech-bounces@leafe.com On Behalf Of Frank Cazabon Sent: Thursday, October 11, 2018 10:54 AM To: profoxtech@leafe.com Subject: Re: Numbering Scheme
Thanks, Obscuring the number is not a problem, but I think they want to be able to read the number off the ticket at the end of the day in sequential order and I don't see how I can come up with a simple way to do this.
Frank.
Frank Cazabon
On 10/10/2018 03:48 PM, Richard Kaye wrote:
One way is to come up with a 10 letter "word" with each letter representing a digit. You then convert the numeric sequence to alpha characters. And to avoid the pattern being too easily spotted, add one or more random characters to the final string. It's not the most robust encryption scheme in the world but it should obscure it enough. Here's a bit of VFP code to do this using the non-dictionary phrase MONKEYSHIP as the rebus. Pass it the number to encode and optionally .t. as the second parameter to append a single random character at the end.
Program: MONKEYSHIP.PRGDate: 05/07/2007 03:26 PM- VFP Version: Visual FoxPro 09.00.0000.7423 for Windows
Notes:
FUNCTION MonkeyShip(m.tnStringToEncode AS Number, m.tlRandom AS Boolean) LOCAL m.lcRetval AS Character m.lcStringToEncode=ALLTRIM(TRANSFORM(m.tnStringToEncode,[9999999999999 99])) LOCAL ARRAY laRebus[10,2] m.laRebus[1,1]=1 m.laRebus[1,2]=[M] m.laRebus[2,1]=2 m.laRebus[2,2]=[O] m.laRebus[3,1]=3 m.laRebus[3,2]=[N] m.laRebus[4,1]=4 m.laRebus[4,2]=[K] m.laRebus[5,1]=5 m.laRebus[5,2]=[E] m.laRebus[6,1]=6 m.laRebus[6,2]=[Y] m.laRebus[7,1]=7 m.laRebus[7,2]=[S] m.laRebus[8,1]=8 m.laRebus[8,2]=[H] m.laRebus[9,1]=9 m.laRebus[9,2]=[I] m.laRebus[10,1]=0 m.laRebus[10,2]=[P] m.lcRetval=[] m.lcChar=[] FOR m.x=1 TO LEN(ALLTRIM(m.lcStringToEncode)) m.lcChar=m.laRebus[ASCAN(m.laRebus,VAL(SUBSTR(m.lcStringToEncode,x,1)),1,-1,1,8),2] m.lcRetval=m.lcRetval+m.lcChar NEXT IF m.tlRandom LOCAL m.liCounter AS Integer PRIVATE m.pcRandomChar m.pcRandomChar=[ ] m.liCounter=1 *!* get a bunch of values to work with which will hopefully give at least one alpha not in monkeyship DO WHILE NOT ReturnRandom() m.liCounter=m.liCounter+1 IF m.liCounter=10 EXIT ENDIF ENDDO IF m.liCounter=10 && we went through loop 10 times and could not get a char back m.lcRetval=[Q]+m.lcRetval ELSE m.lcRetval=m.pcRandomChar+m.lcRetval ENDIF ENDIF RETURN m.lcRetval ENDFUNC
FUNCTION ReturnRandom LOCAL m.lcRandomSeed AS Character, m.lIsGood AS Boolean *!* get a bunch of values to work with which will hopefully give at least one alpha not in monkeyship m.lcRandomSeed=SYS(2015)+SYS(2015)+SYS(2015)+SYS(2015) m.lIsGood=.f. FOR m.y=LEN(m.lcRandomSeed) TO 2 STEP -1 && don't need to check first char in sys(2015) IF ISALPHA(SUBSTR(m.lcRandomSeed,y,1)) AND NOT UPPER(SUBSTR(m.lcRandomSeed,y,1))$[MONKEYSHIP] m.pcRandomChar=SUBSTR(m.lcRandomSeed,y,1) m.lIsGood=.t. EXIT ELSE m.lIsGood=.f. ENDIF NEXT RETURN m.lIsGood ENDFUNC
--
rk
-----Original Message----- From: ProfoxTech profoxtech-bounces@leafe.com On Behalf Of Frank Cazabon Sent: Wednesday, October 10, 2018 3:25 PM To: profoxtech@leafe.com Subject: Numbering Scheme
I have a client who issues tickets in numerical sequence (it's a pawnshop). The sequence helps them balance things back at the end of the day (read that as check for stealing) when checking the various parcels received for the tickets issued (they keep a copy of the ticket issued to their customer and at the end of the day sort them sequentially and read the numbers off the tickets to ensure they match the parcels). They are now not wanting the number printed on the ticket as their competitors may be able to get an idea from the sequential numbers how much business they are doing (by getting a ticket early in the morning and then one ate in the afternoon).
So, they have asked me to come up with a solution and I must admit that I am coming up blank.
Any ideas?
[excessive quoting removed by server]
Why not make a dashboard that has a Count for the Day on it. If you have really simple people this might work?
On Thu, Oct 11, 2018 at 9:54 AM Frank Cazabon frank.cazabon@gmail.com wrote:
Thanks, Obscuring the number is not a problem, but I think they want to be able to read the number off the ticket at the end of the day in sequential order and I don't see how I can come up with a simple way to do this.
Frank.
Frank Cazabon
On 10/10/2018 03:48 PM, Richard Kaye wrote:
One way is to come up with a 10 letter "word" with each letter
representing a digit. You then convert the numeric sequence to alpha characters. And to avoid the pattern being too easily spotted, add one or more random characters to the final string. It's not the most robust encryption scheme in the world but it should obscure it enough. Here's a bit of VFP code to do this using the non-dictionary phrase MONKEYSHIP as the rebus. Pass it the number to encode and optionally .t. as the second parameter to append a single random character at the end.
Program: MONKEYSHIP.PRGDate: 05/07/2007 03:26 PM- VFP Version: Visual FoxPro 09.00.0000.7423 for Windows
Notes:
FUNCTION MonkeyShip(m.tnStringToEncode AS Number, m.tlRandom AS Boolean) LOCAL m.lcRetval AS Character
m.lcStringToEncode=ALLTRIM(TRANSFORM(m.tnStringToEncode,[999999999999999]))
LOCAL ARRAY laRebus[10,2] m.laRebus[1,1]=1 m.laRebus[1,2]=[M] m.laRebus[2,1]=2 m.laRebus[2,2]=[O] m.laRebus[3,1]=3 m.laRebus[3,2]=[N] m.laRebus[4,1]=4 m.laRebus[4,2]=[K] m.laRebus[5,1]=5 m.laRebus[5,2]=[E] m.laRebus[6,1]=6 m.laRebus[6,2]=[Y] m.laRebus[7,1]=7 m.laRebus[7,2]=[S] m.laRebus[8,1]=8 m.laRebus[8,2]=[H] m.laRebus[9,1]=9 m.laRebus[9,2]=[I] m.laRebus[10,1]=0 m.laRebus[10,2]=[P] m.lcRetval=[] m.lcChar=[] FOR m.x=1 TO LEN(ALLTRIM(m.lcStringToEncode))
m.lcChar=m.laRebus[ASCAN(m.laRebus,VAL(SUBSTR(m.lcStringToEncode,x,1)),1,-1,1,8),2]
m.lcRetval=m.lcRetval+m.lcCharNEXT IF m.tlRandom LOCAL m.liCounter AS Integer PRIVATE m.pcRandomChar m.pcRandomChar=[ ] m.liCounter=1 *!* get a bunch of values to work with which will hopefully give at
least one alpha not in monkeyship
DO WHILE NOT ReturnRandom() m.liCounter=m.liCounter+1 IF m.liCounter=10 EXIT ENDIF ENDDO IF m.liCounter=10 && we went through loop 10 times and couldnot get a char back
m.lcRetval=[Q]+m.lcRetval ELSE m.lcRetval=m.pcRandomChar+m.lcRetval ENDIFENDIF RETURN m.lcRetval ENDFUNC
FUNCTION ReturnRandom LOCAL m.lcRandomSeed AS Character, m.lIsGood AS Boolean *!* get a bunch of values to work with which will hopefully give at
least one alpha not in monkeyship
m.lcRandomSeed=SYS(2015)+SYS(2015)+SYS(2015)+SYS(2015) m.lIsGood=.f. FOR m.y=LEN(m.lcRandomSeed) TO 2 STEP -1 && don't need to check
first char in sys(2015)
IF ISALPHA(SUBSTR(m.lcRandomSeed,y,1)) AND NOTUPPER(SUBSTR(m.lcRandomSeed,y,1))$[MONKEYSHIP]
m.pcRandomChar=SUBSTR(m.lcRandomSeed,y,1) m.lIsGood=.t. EXIT ELSE m.lIsGood=.f. ENDIFNEXT RETURN m.lIsGood ENDFUNC
--
rk
-----Original Message----- From: ProfoxTech profoxtech-bounces@leafe.com On Behalf Of Frank
Cazabon
Sent: Wednesday, October 10, 2018 3:25 PM To: profoxtech@leafe.com Subject: Numbering Scheme
I have a client who issues tickets in numerical sequence (it's a
pawnshop). The sequence helps them balance things back at the end of the day (read that as check for stealing) when checking the various parcels received for the tickets issued (they keep a copy of the ticket issued to their customer and at the end of the day sort them sequentially and read the numbers off the tickets to ensure they match the parcels). They are now not wanting the number printed on the ticket as their competitors may be able to get an idea from the sequential numbers how much business they are doing (by getting a ticket early in the morning and then one ate in the afternoon).
So, they have asked me to come up with a solution and I must admit that
I am coming up blank.
Any ideas?
[excessive quoting removed by server]
They have that already. This is a physical count process to avoid theft. They deal in lending money for gold and have to be paranoid.
On 11 October 2018 14:10:36 GMT-04:00, Stephen Russell srussell705@gmail.com wrote:
Why not make a dashboard that has a Count for the Day on it. If you have really simple people this might work?
On Thu, Oct 11, 2018 at 9:54 AM Frank Cazabon frank.cazabon@gmail.com wrote:
Thanks, Obscuring the number is not a problem, but I think they want
to
be able to read the number off the ticket at the end of the day in sequential order and I don't see how I can come up with a simple way
to
do this.
Frank.
Frank Cazabon
On 10/10/2018 03:48 PM, Richard Kaye wrote:
One way is to come up with a 10 letter "word" with each letter
representing a digit. You then convert the numeric sequence to alpha characters. And to avoid the pattern being too easily spotted, add
one or
more random characters to the final string. It's not the most robust encryption scheme in the world but it should obscure it enough.
Here's a
bit of VFP code to do this using the non-dictionary phrase MONKEYSHIP
as
the rebus. Pass it the number to encode and optionally .t. as the
second
parameter to append a single random character at the end.
Program: MONKEYSHIP.PRGDate: 05/07/2007 03:26 PM- VFP Version: Visual FoxPro 09.00.0000.7423 for Windows
Notes:
FUNCTION MonkeyShip(m.tnStringToEncode AS Number, m.tlRandom AS
Boolean)
LOCAL m.lcRetval AS Character
m.lcStringToEncode=ALLTRIM(TRANSFORM(m.tnStringToEncode,[999999999999999]))
LOCAL ARRAY laRebus[10,2] m.laRebus[1,1]=1 m.laRebus[1,2]=[M] m.laRebus[2,1]=2 m.laRebus[2,2]=[O] m.laRebus[3,1]=3 m.laRebus[3,2]=[N] m.laRebus[4,1]=4 m.laRebus[4,2]=[K] m.laRebus[5,1]=5 m.laRebus[5,2]=[E] m.laRebus[6,1]=6 m.laRebus[6,2]=[Y] m.laRebus[7,1]=7 m.laRebus[7,2]=[S] m.laRebus[8,1]=8 m.laRebus[8,2]=[H] m.laRebus[9,1]=9 m.laRebus[9,2]=[I] m.laRebus[10,1]=0 m.laRebus[10,2]=[P] m.lcRetval=[] m.lcChar=[] FOR m.x=1 TO LEN(ALLTRIM(m.lcStringToEncode))
m.lcChar=m.laRebus[ASCAN(m.laRebus,VAL(SUBSTR(m.lcStringToEncode,x,1)),1,-1,1,8),2]
m.lcRetval=m.lcRetval+m.lcCharNEXT IF m.tlRandom LOCAL m.liCounter AS Integer PRIVATE m.pcRandomChar m.pcRandomChar=[ ] m.liCounter=1 *!* get a bunch of values to work with which will hopefully give at
least one alpha not in monkeyship
DO WHILE NOT ReturnRandom() m.liCounter=m.liCounter+1 IF m.liCounter=10 EXIT ENDIF ENDDO IF m.liCounter=10 && we went through loop 10 times andcould
not get a char back
m.lcRetval=[Q]+m.lcRetval ELSE m.lcRetval=m.pcRandomChar+m.lcRetval ENDIFENDIF RETURN m.lcRetval ENDFUNC
FUNCTION ReturnRandom LOCAL m.lcRandomSeed AS Character, m.lIsGood AS Boolean *!* get a bunch of values to work with which will hopefully give at
least one alpha not in monkeyship
m.lcRandomSeed=SYS(2015)+SYS(2015)+SYS(2015)+SYS(2015) m.lIsGood=.f. FOR m.y=LEN(m.lcRandomSeed) TO 2 STEP -1 && don't need to
check
first char in sys(2015)
IF ISALPHA(SUBSTR(m.lcRandomSeed,y,1)) AND NOTUPPER(SUBSTR(m.lcRandomSeed,y,1))$[MONKEYSHIP]
m.pcRandomChar=SUBSTR(m.lcRandomSeed,y,1) m.lIsGood=.t. EXIT ELSE m.lIsGood=.f. ENDIFNEXT RETURN m.lIsGood ENDFUNC
--
rk
-----Original Message----- From: ProfoxTech profoxtech-bounces@leafe.com On Behalf Of Frank
Cazabon
Sent: Wednesday, October 10, 2018 3:25 PM To: profoxtech@leafe.com Subject: Numbering Scheme
I have a client who issues tickets in numerical sequence (it's a
pawnshop). The sequence helps them balance things back at the end of
the
day (read that as check for stealing) when checking the various
parcels
received for the tickets issued (they keep a copy of the ticket
issued to
their customer and at the end of the day sort them sequentially and
read
the numbers off the tickets to ensure they match the parcels). They
are now
not wanting the number printed on the ticket as their competitors may
be
able to get an idea from the sequential numbers how much business
they are
doing (by getting a ticket early in the morning and then one ate in
the
afternoon).
So, they have asked me to come up with a solution and I must admit
that
I am coming up blank.
Any ideas?
[excessive quoting removed by server]
How about converting to base 26 and printing alpha characters (A-Z)? This would allow easy sequencing and a simple program could convert an alpha string to a base 10 number when needed.- Joe
On Thu, Oct 11, 2018 at 2:39 PM Frank Cazabon frank.cazabon@gmail.com wrote:
They have that already. This is a physical count process to avoid theft. They deal in lending money for gold and have to be paranoid.
On 11 October 2018 14:10:36 GMT-04:00, Stephen Russell < srussell705@gmail.com> wrote:
Why not make a dashboard that has a Count for the Day on it. If you have really simple people this might work?
On Thu, Oct 11, 2018 at 9:54 AM Frank Cazabon frank.cazabon@gmail.com wrote:
Thanks, Obscuring the number is not a problem, but I think they want
to
be able to read the number off the ticket at the end of the day in sequential order and I don't see how I can come up with a simple way
to
do this.
Frank.
Frank Cazabon
On 10/10/2018 03:48 PM, Richard Kaye wrote:
One way is to come up with a 10 letter "word" with each letter
representing a digit. You then convert the numeric sequence to alpha characters. And to avoid the pattern being too easily spotted, add
one or
more random characters to the final string. It's not the most robust encryption scheme in the world but it should obscure it enough.
Here's a
bit of VFP code to do this using the non-dictionary phrase MONKEYSHIP
as
the rebus. Pass it the number to encode and optionally .t. as the
second
parameter to append a single random character at the end.
Program: MONKEYSHIP.PRGDate: 05/07/2007 03:26 PM- VFP Version: Visual FoxPro 09.00.0000.7423 for Windows
Notes:
FUNCTION MonkeyShip(m.tnStringToEncode AS Number, m.tlRandom AS
Boolean)
LOCAL m.lcRetval AS Character
m.lcStringToEncode=ALLTRIM(TRANSFORM(m.tnStringToEncode,[999999999999999]))
LOCAL ARRAY laRebus[10,2] m.laRebus[1,1]=1 m.laRebus[1,2]=[M] m.laRebus[2,1]=2 m.laRebus[2,2]=[O] m.laRebus[3,1]=3 m.laRebus[3,2]=[N] m.laRebus[4,1]=4 m.laRebus[4,2]=[K] m.laRebus[5,1]=5 m.laRebus[5,2]=[E] m.laRebus[6,1]=6 m.laRebus[6,2]=[Y] m.laRebus[7,1]=7 m.laRebus[7,2]=[S] m.laRebus[8,1]=8 m.laRebus[8,2]=[H] m.laRebus[9,1]=9 m.laRebus[9,2]=[I] m.laRebus[10,1]=0 m.laRebus[10,2]=[P] m.lcRetval=[] m.lcChar=[] FOR m.x=1 TO LEN(ALLTRIM(m.lcStringToEncode))
m.lcChar=m.laRebus[ASCAN(m.laRebus,VAL(SUBSTR(m.lcStringToEncode,x,1)),1,-1,1,8),2]
m.lcRetval=m.lcRetval+m.lcCharNEXT IF m.tlRandom LOCAL m.liCounter AS Integer PRIVATE m.pcRandomChar m.pcRandomChar=[ ] m.liCounter=1 *!* get a bunch of values to work with which will hopefully give at
least one alpha not in monkeyship
DO WHILE NOT ReturnRandom() m.liCounter=m.liCounter+1 IF m.liCounter=10 EXIT ENDIF ENDDO IF m.liCounter=10 && we went through loop 10 times andcould
not get a char back
m.lcRetval=[Q]+m.lcRetval ELSE m.lcRetval=m.pcRandomChar+m.lcRetval ENDIFENDIF RETURN m.lcRetval ENDFUNC
FUNCTION ReturnRandom LOCAL m.lcRandomSeed AS Character, m.lIsGood AS Boolean *!* get a bunch of values to work with which will hopefully give at
least one alpha not in monkeyship
m.lcRandomSeed=SYS(2015)+SYS(2015)+SYS(2015)+SYS(2015) m.lIsGood=.f. FOR m.y=LEN(m.lcRandomSeed) TO 2 STEP -1 && don't need to
check
first char in sys(2015)
IF ISALPHA(SUBSTR(m.lcRandomSeed,y,1)) AND NOTUPPER(SUBSTR(m.lcRandomSeed,y,1))$[MONKEYSHIP]
m.pcRandomChar=SUBSTR(m.lcRandomSeed,y,1) m.lIsGood=.t. EXIT ELSE m.lIsGood=.f. ENDIFNEXT RETURN m.lIsGood ENDFUNC
--
rk
-----Original Message----- From: ProfoxTech profoxtech-bounces@leafe.com On Behalf Of Frank
Cazabon
Sent: Wednesday, October 10, 2018 3:25 PM To: profoxtech@leafe.com Subject: Numbering Scheme
I have a client who issues tickets in numerical sequence (it's a
pawnshop). The sequence helps them balance things back at the end of
the
day (read that as check for stealing) when checking the various
parcels
received for the tickets issued (they keep a copy of the ticket
issued to
their customer and at the end of the day sort them sequentially and
read
the numbers off the tickets to ensure they match the parcels). They
are now
not wanting the number printed on the ticket as their competitors may
be
able to get an idea from the sequential numbers how much business
they are
doing (by getting a ticket early in the morning and then one ate in
the
afternoon).
So, they have asked me to come up with a solution and I must admit
that
I am coming up blank.
Any ideas?
[excessive quoting removed by server]
Thanks for the suggestion
Frank.
Frank Cazabon
On 11/10/2018 02:56 PM, Joe Yoder wrote:
How about converting to base 26 and printing alpha characters (A-Z)? This would allow easy sequencing and a simple program could convert an alpha string to a base 10 number when needed.- Joe
On Thu, Oct 11, 2018 at 2:39 PM Frank Cazabon frank.cazabon@gmail.com wrote:
They have that already. This is a physical count process to avoid theft. They deal in lending money for gold and have to be paranoid.
On 11 October 2018 14:10:36 GMT-04:00, Stephen Russell < srussell705@gmail.com> wrote:
Why not make a dashboard that has a Count for the Day on it. If you have really simple people this might work?
On Thu, Oct 11, 2018 at 9:54 AM Frank Cazabon frank.cazabon@gmail.com wrote:
Thanks, Obscuring the number is not a problem, but I think they want
to
be able to read the number off the ticket at the end of the day in sequential order and I don't see how I can come up with a simple way
to
do this.
Frank.
Frank Cazabon
On 10/10/2018 03:48 PM, Richard Kaye wrote:
One way is to come up with a 10 letter "word" with each letter
representing a digit. You then convert the numeric sequence to alpha characters. And to avoid the pattern being too easily spotted, add
one or
more random characters to the final string. It's not the most robust encryption scheme in the world but it should obscure it enough.
Here's a
bit of VFP code to do this using the non-dictionary phrase MONKEYSHIP
as
the rebus. Pass it the number to encode and optionally .t. as the
second
parameter to append a single random character at the end.
Program: MONKEYSHIP.PRGDate: 05/07/2007 03:26 PM- VFP Version: Visual FoxPro 09.00.0000.7423 for Windows
Notes:
FUNCTION MonkeyShip(m.tnStringToEncode AS Number, m.tlRandom AS
Boolean)
LOCAL m.lcRetval AS Character
m.lcStringToEncode=ALLTRIM(TRANSFORM(m.tnStringToEncode,[999999999999999]))
LOCAL ARRAY laRebus[10,2] m.laRebus[1,1]=1 m.laRebus[1,2]=[M] m.laRebus[2,1]=2 m.laRebus[2,2]=[O] m.laRebus[3,1]=3 m.laRebus[3,2]=[N] m.laRebus[4,1]=4 m.laRebus[4,2]=[K] m.laRebus[5,1]=5 m.laRebus[5,2]=[E] m.laRebus[6,1]=6 m.laRebus[6,2]=[Y] m.laRebus[7,1]=7 m.laRebus[7,2]=[S] m.laRebus[8,1]=8 m.laRebus[8,2]=[H] m.laRebus[9,1]=9 m.laRebus[9,2]=[I] m.laRebus[10,1]=0 m.laRebus[10,2]=[P] m.lcRetval=[] m.lcChar=[] FOR m.x=1 TO LEN(ALLTRIM(m.lcStringToEncode))
m.lcChar=m.laRebus[ASCAN(m.laRebus,VAL(SUBSTR(m.lcStringToEncode,x,1)),1,-1,1,8),2]
m.lcRetval=m.lcRetval+m.lcCharNEXT IF m.tlRandom LOCAL m.liCounter AS Integer PRIVATE m.pcRandomChar m.pcRandomChar=[ ] m.liCounter=1 *!* get a bunch of values to work with which will hopefully give at
least one alpha not in monkeyship
DO WHILE NOT ReturnRandom() m.liCounter=m.liCounter+1 IF m.liCounter=10 EXIT ENDIF ENDDO IF m.liCounter=10 && we went through loop 10 times andcould
not get a char back
m.lcRetval=[Q]+m.lcRetval ELSE m.lcRetval=m.pcRandomChar+m.lcRetval ENDIFENDIF RETURN m.lcRetval ENDFUNC
FUNCTION ReturnRandom LOCAL m.lcRandomSeed AS Character, m.lIsGood AS Boolean *!* get a bunch of values to work with which will hopefully give at
least one alpha not in monkeyship
m.lcRandomSeed=SYS(2015)+SYS(2015)+SYS(2015)+SYS(2015) m.lIsGood=.f. FOR m.y=LEN(m.lcRandomSeed) TO 2 STEP -1 && don't need to
check
first char in sys(2015)
IF ISALPHA(SUBSTR(m.lcRandomSeed,y,1)) AND NOTUPPER(SUBSTR(m.lcRandomSeed,y,1))$[MONKEYSHIP]
m.pcRandomChar=SUBSTR(m.lcRandomSeed,y,1) m.lIsGood=.t. EXIT ELSE m.lIsGood=.f. ENDIFNEXT RETURN m.lIsGood ENDFUNC
--
rk
-----Original Message----- From: ProfoxTech profoxtech-bounces@leafe.com On Behalf Of Frank
Cazabon
Sent: Wednesday, October 10, 2018 3:25 PM To: profoxtech@leafe.com Subject: Numbering Scheme
I have a client who issues tickets in numerical sequence (it's a
pawnshop). The sequence helps them balance things back at the end of
the
day (read that as check for stealing) when checking the various
parcels
received for the tickets issued (they keep a copy of the ticket
issued to
their customer and at the end of the day sort them sequentially and
read
the numbers off the tickets to ensure they match the parcels). They
are now
not wanting the number printed on the ticket as their competitors may
be
able to get an idea from the sequential numbers how much business
they are
doing (by getting a ticket early in the morning and then one ate in
the
afternoon).
So, they have asked me to come up with a solution and I must admit
that
I am coming up blank.
Any ideas?
[excessive quoting removed by server]
Easy for the staff to count, or difficult for the opposition to count. Pick one.
It doesn't have to be either or. I have put forward the various suggestions to the client and will let them decide how they want it done.
Thanks to everyone for their contribution.
Frank.
Frank Cazabon
On 12/10/2018 10:48 AM, Alan Bourke wrote:
Easy for the staff to count, or difficult for the opposition to count. Pick one.
Multiply the number by 3.
Vassilis
On 10 Oct 2018, at 22:25, Frank Cazabon frank.cazabon@gmail.com wrote:
I have a client who issues tickets in numerical sequence (it's a pawnshop). The sequence helps them balance things back at the end of the day (read that as check for stealing) when checking the various parcels received for the tickets issued (they keep a copy of the ticket issued to their customer and at the end of the day sort them sequentially and read the numbers off the tickets to ensure they match the parcels). They are now not wanting the number printed on the ticket as their competitors may be able to get an idea from the sequential numbers how much business they are doing (by getting a ticket early in the morning and then one ate in the afternoon).
So, they have asked me to come up with a solution and I must admit that I am coming up blank.
Any ideas?
--
Frank.
Frank Cazabon
[excessive quoting removed by server]
Do you have 1) a specific report for the customer ticket 2) can you can add a sequential number on to the above for the internal copy? 3) a parcel label that can have a ticket number and the sequential number on it?
It would mean the two people would need to come back and get the parcel, and see the label to try to figure out the numbers.
-----Original Message----- From: ProfoxTech [mailto:profoxtech-bounces@leafe.com] On Behalf Of Frank Cazabon Sent: Wednesday, October 10, 2018 3:25 PM To: profoxtech@leafe.com Subject: Numbering Scheme
I have a client who issues tickets in numerical sequence (it's a pawnshop). The sequence helps them balance things back at the end of the day (read that as check for stealing) when checking the various parcels received for the tickets issued (they keep a copy of the ticket issued to their customer and at the end of the day sort them sequentially and read the numbers off the tickets to ensure they match the parcels). They are now not wanting the number printed on the ticket as their competitors may be able to get an idea from the sequential numbers how much business they are doing (by getting a ticket early in the morning and then one ate in the afternoon).
So, they have asked me to come up with a solution and I must admit that I am coming up blank.
Any ideas?
This is for their end of day process and they want to be able to count the number of tickets and match the number of parcels and then be able to match them in sequential order. They also store the parcels in a vault in sequential order so that when the customer comes back for their parcel it's easy to find.
The tickets are printed on dot matrix printers using carbon copy paper.
The only way I can see this working is to have an internal sequential number and an external random one. At the end of the day they'll have to print out a report with the internal and external numbers so they can do their matching/double check. The parcel will have just the internal number on it. When the customer comes back they'll have to look up the parcel on the PC using the external number and then get the internal number to get the package from the vault.
Maybe they'll be happy with this.
Frank.
Frank Cazabon
On 10/10/2018 05:20 PM, Tracy Pearson wrote:
Do you have
- a specific report for the customer ticket
- can you can add a sequential number on to the above for the internal
copy? 3) a parcel label that can have a ticket number and the sequential number on it?
It would mean the two people would need to come back and get the parcel, and see the label to try to figure out the numbers.
-----Original Message----- From: ProfoxTech [mailto:profoxtech-bounces@leafe.com] On Behalf Of Frank Cazabon Sent: Wednesday, October 10, 2018 3:25 PM To: profoxtech@leafe.com Subject: Numbering Scheme
I have a client who issues tickets in numerical sequence (it's a pawnshop). The sequence helps them balance things back at the end of the day (read that as check for stealing) when checking the various parcels received for the tickets issued (they keep a copy of the ticket issued to their customer and at the end of the day sort them sequentially and read the numbers off the tickets to ensure they match the parcels). They are now not wanting the number printed on the ticket as their competitors may be able to get an idea from the sequential numbers how much business they are doing (by getting a ticket early in the morning and then one ate in the afternoon).
So, they have asked me to come up with a solution and I must admit that I am coming up blank.
Any ideas?
How about a simple character substitution routine like this:
Original # String: '0123456789' Substitution String : '2546890313'
Create a simple routine to take a number as a string, do a character by character substitution and return the "encoded" Ticket #
Ticket #: 12345 would be printed on the ticket as 54689 Ticket #: 12346 would be printed on the ticket as 54680
If the displayed digit string is randomly ordered none of the ticket numbers would make any sense if a morning ticket was compared to an afternoon ticket.
Then you could "decode" the ticket # when the user entered the ticket number to regenerate the original ticket number. This would also help prevent counterfeit tickets a bit as well, I would think.
This could even be expanded to include some alpha characters in the Ticket # if you wanted to add a prefix or suffix to the Ticket #.
Paul H. Tarver Email: paul@tpcqpc.com
-----Original Message----- From: ProfoxTech [mailto:profoxtech-bounces@leafe.com] On Behalf Of Frank Cazabon Sent: Wednesday, October 10, 2018 2:25 PM To: profoxtech@leafe.com Subject: Numbering Scheme
I have a client who issues tickets in numerical sequence (it's a pawnshop). The sequence helps them balance things back at the end of the day (read that as check for stealing) when checking the various parcels received for the tickets issued (they keep a copy of the ticket issued to their customer and at the end of the day sort them sequentially and read the numbers off the tickets to ensure they match the parcels). They are now not wanting the number printed on the ticket as their competitors may be able to get an idea from the sequential numbers how much business they are doing (by getting a ticket early in the morning and then one ate in the afternoon).
So, they have asked me to come up with a solution and I must admit that I am coming up blank.
Any ideas?
That's along the lines of what I think needs to be done but not sure if my client will be happy with it. Only way to find out is to ask.
Frank.
Frank Cazabon
On 10/10/2018 06:18 PM, Paul H. Tarver wrote:
How about a simple character substitution routine like this:
Original # String: '0123456789' Substitution String : '2546890313'
Create a simple routine to take a number as a string, do a character by character substitution and return the "encoded" Ticket #
Ticket #: 12345 would be printed on the ticket as 54689 Ticket #: 12346 would be printed on the ticket as 54680
If the displayed digit string is randomly ordered none of the ticket numbers would make any sense if a morning ticket was compared to an afternoon ticket.
Then you could "decode" the ticket # when the user entered the ticket number to regenerate the original ticket number. This would also help prevent counterfeit tickets a bit as well, I would think.
This could even be expanded to include some alpha characters in the Ticket # if you wanted to add a prefix or suffix to the Ticket #.
Paul H. Tarver Email: paul@tpcqpc.com
-----Original Message----- From: ProfoxTech [mailto:profoxtech-bounces@leafe.com] On Behalf Of Frank Cazabon Sent: Wednesday, October 10, 2018 2:25 PM To: profoxtech@leafe.com Subject: Numbering Scheme
I have a client who issues tickets in numerical sequence (it's a pawnshop). The sequence helps them balance things back at the end of the day (read that as check for stealing) when checking the various parcels received for the tickets issued (they keep a copy of the ticket issued to their customer and at the end of the day sort them sequentially and read the numbers off the tickets to ensure they match the parcels). They are now not wanting the number printed on the ticket as their competitors may be able to get an idea from the sequential numbers how much business they are doing (by getting a ticket early in the morning and then one ate in the afternoon).
So, they have asked me to come up with a solution and I must admit that I am coming up blank.
Any ideas?
Print the sequential number using a barcode font. If a customer has a barcode scanner, they can "see" the number, but they'd have to be looking pretty hard. Meanwhile, an $80 barcode scanner (USB connection) on the office computer would let them read the sequential number.
Mike Copeland
Frank Cazabon wrote:
I have a client who issues tickets in numerical sequence (it's a pawnshop). The sequence helps them balance things back at the end of the day (read that as check for stealing) when checking the various parcels received for the tickets issued (they keep a copy of the ticket issued to their customer and at the end of the day sort them sequentially and read the numbers off the tickets to ensure they match the parcels). They are now not wanting the number printed on the ticket as their competitors may be able to get an idea from the sequential numbers how much business they are doing (by getting a ticket early in the morning and then one ate in the afternoon).
So, they have asked me to come up with a solution and I must admit that I am coming up blank.
Any ideas?
On Wed, 10 Oct 2018 at 23:19, Mike mike@ggisoft.com wrote:
Print the sequential number using a barcode font. If a customer has a barcode scanner, they can "see" the number, but they'd have to be looking pretty hard.
Or they could just use their phone.
True, but they would need several invoices to compare...which means they're "looking" for a sequence and not just "noticing".
Mike
Paul Hill wrote:
On Wed, 10 Oct 2018 at 23:19, Mike mike@ggisoft.com wrote:
Print the sequential number using a barcode font. If a customer has a barcode scanner, they can "see" the number, but they'd have to be looking pretty hard.
Or they could just use their phone.
They actually have barcodes on the ticket but never use the scanners to actually read them, they just read the number (printed below the bar code).
Frank.
Frank Cazabon
On 10/10/2018 06:19 PM, Mike wrote:
Print the sequential number using a barcode font. If a customer has a barcode scanner, they can "see" the number, but they'd have to be looking pretty hard. Meanwhile, an $80 barcode scanner (USB connection) on the office computer would let them read the sequential number.
Mike Copeland
Frank Cazabon wrote:
I have a client who issues tickets in numerical sequence (it's a pawnshop). The sequence helps them balance things back at the end of the day (read that as check for stealing) when checking the various parcels received for the tickets issued (they keep a copy of the ticket issued to their customer and at the end of the day sort them sequentially and read the numbers off the tickets to ensure they match the parcels). They are now not wanting the number printed on the ticket as their competitors may be able to get an idea from the sequential numbers how much business they are doing (by getting a ticket early in the morning and then one ate in the afternoon).
So, they have asked me to come up with a solution and I must admit that I am coming up blank.
Any ideas?
[excessive quoting removed by server]
How about table with two columns in an Array:
- Column One is sequential by one - Column Two is generated by Random Number Generator with IF THEN - If Random Number Exists, reGenerate - Assign numbers to items from Column Two
Instead of an Array, create a Table to be used -- estimating length for next five to ten years
*Shai / שי **Charles Hart Enzer, MD(Ohio, USA), FAACAP* *Aliyah https://en.wikipedia.org/wiki/Aliyah: Cincinnati to Jerusalem http://www.gojerusalem.com/items/263/German-Colony/'s German Colony https://en.wikipedia.org/wiki/German_Colony,_Jerusalem May, 2017*
*Volunteer Associate Professor of PsychiatryUniversity of Cincinnati Medical CenterWebSite: **EnzerMD.com http://EnzerMD.com* *Publications* http://www.enzermd.com/CV.html#Publications
*If a problem has no solution, * *it may not be a problem, * *but a fact -- not to be solved, * *but to be coped with over time*
-- Shimon Peres, Ninth President of Israel
On Wed, Oct 10, 2018 at 12:25 PM Frank Cazabon frank.cazabon@gmail.com wrote:
I have a client who issues tickets in numerical sequence (it's a pawnshop). The sequence helps them balance things back at the end of the day (read that as check for stealing) when checking the various parcels received for the tickets issued (they keep a copy of the ticket issued to their customer and at the end of the day sort them sequentially and read the numbers off the tickets to ensure they match the parcels). They are now not wanting the number printed on the ticket as their competitors may be able to get an idea from the sequential numbers how much business they are doing (by getting a ticket early in the morning and then one ate in the afternoon).
So, they have asked me to come up with a solution and I must admit that I am coming up blank.
Any ideas?
--
Frank.
Frank Cazabon
[excessive quoting removed by server]
Thanks
Frank.
Frank Cazabon
On 10/10/2018 06:45 PM, Charles Hart Enzer, M.D. wrote:
How about table with two columns in an Array:
- Column One is sequential by one - Column Two is generated by Random Number Generator with IF THEN - If Random Number Exists, reGenerate - Assign numbers to items from Column TwoInstead of an Array, create a Table to be used -- estimating length for next five to ten years
*Shai / שי **Charles Hart Enzer, MD(Ohio, USA), FAACAP* *Aliyah https://en.wikipedia.org/wiki/Aliyah: Cincinnati to Jerusalem http://www.gojerusalem.com/items/263/German-Colony/'s German Colony https://en.wikipedia.org/wiki/German_Colony,_Jerusalem May, 2017*
*Volunteer Associate Professor of PsychiatryUniversity of Cincinnati Medical CenterWebSite: **EnzerMD.com http://EnzerMD.com* *Publications* http://www.enzermd.com/CV.html#Publications
*If a problem has no solution, * *it may not be a problem, * *but a fact -- not to be solved, * *but to be coped with over time*
-- Shimon Peres, Ninth President of Israel
On Wed, Oct 10, 2018 at 12:25 PM Frank Cazabon frank.cazabon@gmail.com wrote:
I have a client who issues tickets in numerical sequence (it's a pawnshop). The sequence helps them balance things back at the end of the day (read that as check for stealing) when checking the various parcels received for the tickets issued (they keep a copy of the ticket issued to their customer and at the end of the day sort them sequentially and read the numbers off the tickets to ensure they match the parcels). They are now not wanting the number printed on the ticket as their competitors may be able to get an idea from the sequential numbers how much business they are doing (by getting a ticket early in the morning and then one ate in the afternoon).
So, they have asked me to come up with a solution and I must admit that I am coming up blank.
Any ideas?
--
Frank.
Frank Cazabon
[excessive quoting removed by server]
What I would do: at a 3digt random prefix and a 2 digit random suffix to your seq number of fixed lengte. So you will end up with something like 45600198 67000261 45800377 Aso If you print the list like this you will see at one glance the seq number but your competetiors are not Abel to see that 68118555 Means you have 185 as seq number. I have worked succesfully for years with this system Koen
Op wo 10 okt. 2018 om 21:25 schreef Frank Cazabon frank.cazabon@gmail.com
I have a client who issues tickets in numerical sequence (it's a pawnshop). The sequence helps them balance things back at the end of the day (read that as check for stealing) when checking the various parcels received for the tickets issued (they keep a copy of the ticket issued to their customer and at the end of the day sort them sequentially and read the numbers off the tickets to ensure they match the parcels). They are now not wanting the number printed on the ticket as their competitors may be able to get an idea from the sequential numbers how much business they are doing (by getting a ticket early in the morning and then one ate in the afternoon).
So, they have asked me to come up with a solution and I must admit that I am coming up blank.
Any ideas?
--
Frank.
Frank Cazabon
[excessive quoting removed by server]