🚀 Socket Launch Week Day 5:Introducing Repository Access Permissions and Custom Roles.Learn more
Sign In

esr-code-line

Package Overview
Dependencies
Maintainers
1
Versions
4
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

esr-code-line - npm Package Compare versions

Comparing version
0.9.0
to
1.0.0
+9
-2
dist/index.d.ts
export declare function checkDigit(code: string): number;
export declare const attachCheckDigit: (code: string) => string;
export declare const pad: (s: string, n: number) => string;
export declare function pad(s: string, n: number): string;
export declare function toSubscriberNumber(customerNumber: string): string;
export declare function codeLine(slipType: "01" | "04" | "11" | "14" | "21" | "23" | "31" | "33", amountFrancsOrEuros: string, amountRappenOrCents: string, referenceNumber: string, customerNumber: string): string;
export interface SlipRequirements {
readonly slipType: "01" | "04" | "11" | "14" | "21" | "23" | "31" | "33";
readonly amountFrancsOrEuros: string;
readonly amountRappenOrCents: string;
readonly referenceNumber: string;
readonly customerNumber: string;
}
export declare function codeLine(req: SlipRequirements): string;
+15
-12

@@ -26,5 +26,8 @@ "use strict";

exports.attachCheckDigit = attachCheckDigit;
var pad = function (s, n) {
return (s.length < n ? "0".repeat(n - s.length) : "") + s;
};
function pad(s, n) {
var zeros = "";
for (var i = 0; i < n - s.length; i++)
zeros += "0";
return zeros + s;
}
exports.pad = pad;

@@ -37,16 +40,16 @@ function toSubscriberNumber(customerNumber) {

var isrCode = split[0], serialNumber = split[1], checkDigit = split[2];
return isrCode + exports.pad(serialNumber, 6) + checkDigit;
return isrCode + pad(serialNumber, 6) + checkDigit;
}
exports.toSubscriberNumber = toSubscriberNumber;
function codeLine(slipType, amountFrancsOrEuros, amountRappenOrCents, referenceNumber, customerNumber) {
var paddedAmountFrancsOrEuros = exports.pad(amountFrancsOrEuros, 8);
var checkDigit1 = checkDigit(slipType + paddedAmountFrancsOrEuros + amountRappenOrCents);
var referenceNumberWithoutWhiteSpace = referenceNumber.replace(/\s/g, "");
var subscriberNumber = toSubscriberNumber(customerNumber);
return (slipType +
function codeLine(req) {
var paddedAmountFrancsOrEuros = pad(req.amountFrancsOrEuros.toString(), 8);
var checkDigit1 = checkDigit(req.slipType + paddedAmountFrancsOrEuros + req.amountRappenOrCents);
var referenceNumberNoSpaces = req.referenceNumber.replace(/\s/g, "");
var subscriberNumber = toSubscriberNumber(req.customerNumber);
return (req.slipType +
paddedAmountFrancsOrEuros +
amountRappenOrCents +
req.amountRappenOrCents +
checkDigit1 +
AUXILIARY_CHARACTER_1 +
referenceNumberWithoutWhiteSpace +
referenceNumberNoSpaces +
AUXILIARY_CHARACTER_2 +

@@ -53,0 +56,0 @@ " " +

{
"name": "esr-code-line",
"version": "0.9.0",
"version": "1.0.0",
"description": "A code line generator for orange payment slips used in Switzerland",

@@ -18,2 +18,4 @@ "main": "dist/index.js",

"payment",
"inpayment",
"payment-slip",
"switzerland",

@@ -20,0 +22,0 @@ "swiss",

@@ -47,9 +47,9 @@ # Code Line Generator for Orange Payment Slips used in Switzerland

const code = codeLine(
"01",
"3949",
"75",
"12 00000 00000 23447 89432 16899",
"01-162-8"
);
const code = codeLine({
slipType: "01",
amountFrancsOrEuros: "3949",
amountRappenOrCents: "75",
referenceNumber: "12 00000 00000 23447 89432 16899",
customerNumber: "01-162-8",
});
```

@@ -56,0 +56,0 @@

@@ -54,9 +54,9 @@ import {

// Values taken from ISR Manual p. 25
const result = codeLine(
"01",
"3949",
"75",
"12 00000 00000 23447 89432 16899",
"01-162-8"
);
const result = codeLine({
slipType: "01",
amountFrancsOrEuros: "3949",
amountRappenOrCents: "75",
referenceNumber: "12 00000 00000 23447 89432 16899",
customerNumber: "01-162-8",
});

@@ -68,10 +68,10 @@ // check digit of slip type and amount is 3

test("Assembles code in the correct order.", () => {
const result = codeLine(
"01",
"3949",
"75",
"12 00000 00000 23447 89432 16899",
"01-162-8"
);
const result = codeLine({
slipType: "01",
amountFrancsOrEuros: "3949",
amountRappenOrCents: "75",
referenceNumber: "12 00000 00000 23447 89432 16899",
customerNumber: "01-162-8",
});
expect(result).toBe("0100003949753>120000000000234478943216899+ 010001628>");
});

@@ -25,4 +25,7 @@ const CHECK_DIGIT_TABLE = [0, 9, 4, 6, 8, 2, 7, 1, 3, 5];

export const pad = (s: string, n: number): string =>
(s.length < n ? "0".repeat(n - s.length) : "") + s;
export function pad(s: string, n: number): string {
let zeros = "";
for (let i = 0; i < n - s.length; i++) zeros += "0";
return zeros + s;
}

@@ -40,26 +43,28 @@ export function toSubscriberNumber(customerNumber: string): string {

export function codeLine(
slipType: "01" | "04" | "11" | "14" | "21" | "23" | "31" | "33",
amountFrancsOrEuros: string,
amountRappenOrCents: string,
referenceNumber: string,
customerNumber: string
): string {
const paddedAmountFrancsOrEuros = pad(amountFrancsOrEuros, 8);
export interface SlipRequirements {
readonly slipType: "01" | "04" | "11" | "14" | "21" | "23" | "31" | "33";
readonly amountFrancsOrEuros: string;
readonly amountRappenOrCents: string;
readonly referenceNumber: string;
readonly customerNumber: string;
}
export function codeLine(req: SlipRequirements): string {
const paddedAmountFrancsOrEuros = pad(req.amountFrancsOrEuros.toString(), 8);
const checkDigit1 = checkDigit(
slipType + paddedAmountFrancsOrEuros + amountRappenOrCents
req.slipType + paddedAmountFrancsOrEuros + req.amountRappenOrCents
);
const referenceNumberWithoutWhiteSpace = referenceNumber.replace(/\s/g, "");
const referenceNumberNoSpaces = req.referenceNumber.replace(/\s/g, "");
const subscriberNumber = toSubscriberNumber(customerNumber);
const subscriberNumber = toSubscriberNumber(req.customerNumber);
return (
slipType +
req.slipType +
paddedAmountFrancsOrEuros +
amountRappenOrCents +
req.amountRappenOrCents +
checkDigit1 +
AUXILIARY_CHARACTER_1 +
referenceNumberWithoutWhiteSpace +
referenceNumberNoSpaces +
AUXILIARY_CHARACTER_2 +

@@ -66,0 +71,0 @@ " " +