database.js 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. const NOTICE_EAN13 = "Номер, указанный ПОД штрих-кодом, НЕ номер карты. 13 цифр.";
  2. function formatEan13(v) {
  3. if(v === "") return "";
  4. return v[0] + " " +
  5. (v.substring(1).match(/.{1,6}/g) || []).join(" ");
  6. }
  7. function format3(v) {
  8. if(v === "") return "";
  9. return v.match(/.{1,3}/g).join(" ");
  10. }
  11. function format4(v) {
  12. if(v === "") return "";
  13. return v.match(/.{1,4}/g).join(" ");
  14. }
  15. function validateEAN13(v) {
  16. return v.length === 13;
  17. }
  18. export const CardTypes = {
  19. "5ka": {
  20. format: "EAN13",
  21. keyboard: "123",
  22. info: `${NOTICE_EAN13} Из приложения не подойдёт.`,
  23. displayFormat: formatEan13,
  24. inputValidate: validateEAN13
  25. },
  26. "auchan": {
  27. format: "EAN13",
  28. keyboard: "123",
  29. displayFormat: formatEan13,
  30. inputValidate: validateEAN13
  31. },
  32. "lenta": {
  33. format: "CODE128",
  34. keyboard: "123",
  35. displayFormat: format3
  36. },
  37. "metro": {
  38. format: "INT2OF5",
  39. keyboard: "123",
  40. displayFormat: format3,
  41. info: "Введите номер, указанный под штрих-кодом. 22 цифры",
  42. inputValidate: (v) => v.length === 22
  43. },
  44. "perekrestok": {
  45. format: "EAN13",
  46. keyboard: "123",
  47. info: NOTICE_EAN13,
  48. inputValidate: validateEAN13,
  49. displayFormat: formatEan13
  50. },
  51. "magnit": {
  52. format: "QR",
  53. keyboard: "123",
  54. displayFormat: format4,
  55. codePostProcessing: (v) => {
  56. return `E${v}`;
  57. },
  58. inputValidate: (v) => v.length == 16
  59. },
  60. "sportmaster": {
  61. format: "EAN13",
  62. keyboard: "123",
  63. displayFormat: formatEan13,
  64. inputValidate: validateEAN13
  65. },
  66. "okay": {
  67. format: "EAN13",
  68. keyboard: "123",
  69. inputValidate: validateEAN13,
  70. displayFormat: (v) => {
  71. if(v.length == 0) return "";
  72. return [
  73. v.substring(0,2),
  74. v.substring(2,4),
  75. ...(v.substring(4).match(/.{1,3}/g) || "")
  76. ].join(" ");
  77. }
  78. },
  79. "citilink": {
  80. format: "CODE39",
  81. keyboard: "123",
  82. displayFormat: format3
  83. },
  84. "fixprice": {
  85. format: "EAN13",
  86. keyboard: "123",
  87. info: "Только первые 9 цифр с физической карты. Либо 13 под штрих-кодом",
  88. displayFormat: format3,
  89. inputValidate: (v) => v.length == 9,
  90. codePostProcessing: (v) => {
  91. return "2041" + v;
  92. }
  93. },
  94. "detmir": {
  95. format: "CODE128",
  96. keyboard: "123",
  97. displayFormat: format4
  98. },
  99. "ostin": {
  100. format: "EAN13",
  101. keyboard: "123",
  102. info: NOTICE_EAN13,
  103. inputValidate: validateEAN13,
  104. displayFormat: formatEan13
  105. },
  106. "covid": {
  107. format: "QR",
  108. keyboard: ["EN", "123"],
  109. info: "Отсканируйте ваш QR-код чем-нибудь, посмотрите ссылку. Наберите весь текст после \"status/\" и до \"?\".",
  110. codePostProcessing: (v) => {
  111. return `https://www.gosuslugi.ru/covid-cert/status/${v}?lang=ru`;
  112. }
  113. },
  114. "vernij": {
  115. format: "EAN13",
  116. keyboard: "123",
  117. inputValidate: validateEAN13,
  118. displayFormat: formatEan13
  119. },
  120. "selgros": {
  121. format: "CODE128",
  122. keyboard: "123",
  123. inputValidate: validateEAN13,
  124. displayFormat: format3,
  125. codePostProcessing: (v) => `20${v}0`
  126. },
  127. "agrokomplex": {
  128. format: "EAN13",
  129. keyboard: "123",
  130. inputValidate: validateEAN13,
  131. displayFormat: formatEan13
  132. },
  133. "farmlend": {
  134. format: "CODE128",
  135. keyboard: "123",
  136. codePostProcessing: (v) => {
  137. return `FLEND2012Y${v}`;
  138. }
  139. },
  140. "edelweis": {
  141. format: "EAN13",
  142. keyboard: "123",
  143. inputValidate: validateEAN13,
  144. displayFormat: formatEan13
  145. },
  146. "april": {
  147. format: "EAN13",
  148. keyboard: "123",
  149. info: "Код под штрих-кодом на пластиковой карте. Из приложеиния скорее всего работать не будет. 13 цифр",
  150. inputValidate: validateEAN13,
  151. displayFormat: formatEan13
  152. },
  153. "karusel": {
  154. format: "EAN13",
  155. keyboard: "123",
  156. info: NOTICE_EAN13,
  157. inputValidate: validateEAN13,
  158. displayFormat: formatEan13
  159. },
  160. "maksimdom": {
  161. format: "CODE39",
  162. keyboard: "123",
  163. info: "7 цифр, указанные под штрих-кодом. Буквы DK в начале писать не нужно",
  164. codePostProcessing: (v) => {
  165. return `DK${v}`;
  166. }
  167. },
  168. "euroopt": {
  169. format: "CODE128",
  170. keyboard: "123"
  171. },
  172. "spar": {
  173. format: "QR",
  174. keyboard: "123",
  175. displayFormat: format4
  176. },
  177. };