@kreiseck/kasseneck-api 0.25.0 → 0.27.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +56 -0
- package/dist/cjs/kasse/drucker.d.ts +1 -1
- package/dist/cjs/printing/escpos.d.ts +30 -1
- package/dist/cjs/printing/escpos.js +60 -4
- package/dist/cjs/react/index.js +6 -0
- package/dist/cjs/receipt/blatt.d.ts +5 -3
- package/dist/cjs/receipt/blatt.js +11 -10
- package/dist/cjs/receipt/epos.d.ts +2 -2
- package/dist/cjs/receipt/epos.js +8 -0
- package/dist/cjs/receipt/index.d.ts +3 -1
- package/dist/cjs/receipt/index.js +6 -2
- package/dist/cjs/receipt/layout-escpos.d.ts +1 -1
- package/dist/cjs/receipt/layout-escpos.js +4 -0
- package/dist/cjs/receipt/marke-daten.d.ts +14 -0
- package/dist/cjs/receipt/marke-daten.js +18 -0
- package/dist/cjs/receipt/marke.d.ts +20 -0
- package/dist/cjs/receipt/marke.js +46 -0
- package/dist/cjs/rechnung/index.d.ts +1 -1
- package/dist/cjs/rechnung/index.js +2 -1
- package/dist/cjs/rechnung/typen.d.ts +18 -2
- package/dist/cjs/rechnung/vertrag.d.ts +23 -1
- package/dist/cjs/rechnung/vertrag.js +30 -5
- package/dist/esm/kasse/drucker.d.ts +1 -1
- package/dist/esm/printing/escpos.d.ts +30 -1
- package/dist/esm/printing/escpos.js +59 -4
- package/dist/esm/react/index.js +7 -1
- package/dist/esm/receipt/blatt.d.ts +5 -3
- package/dist/esm/receipt/blatt.js +10 -9
- package/dist/esm/receipt/epos.d.ts +2 -2
- package/dist/esm/receipt/epos.js +8 -0
- package/dist/esm/receipt/index.d.ts +3 -1
- package/dist/esm/receipt/index.js +3 -1
- package/dist/esm/receipt/layout-escpos.d.ts +1 -1
- package/dist/esm/receipt/layout-escpos.js +4 -0
- package/dist/esm/receipt/marke-daten.d.ts +14 -0
- package/dist/esm/receipt/marke-daten.js +15 -0
- package/dist/esm/receipt/marke.d.ts +20 -0
- package/dist/esm/receipt/marke.js +42 -0
- package/dist/esm/rechnung/index.d.ts +1 -1
- package/dist/esm/rechnung/index.js +1 -1
- package/dist/esm/rechnung/typen.d.ts +18 -2
- package/dist/esm/rechnung/vertrag.d.ts +23 -1
- package/dist/esm/rechnung/vertrag.js +29 -4
- package/fixtures/erwartet/karte-eigener.blatt32.json +3 -4
- package/fixtures/erwartet/karte-eigener.blatt48.json +3 -4
- package/fixtures/erwartet/karte-gptom-ios.blatt32.json +3 -4
- package/fixtures/erwartet/karte-gptom-ios.blatt48.json +3 -4
- package/fixtures/erwartet/karte-gptom.blatt32.json +3 -4
- package/fixtures/erwartet/karte-gptom.blatt48.json +3 -4
- package/fixtures/erwartet/karte-hobex-cloud.blatt32.json +3 -4
- package/fixtures/erwartet/karte-hobex-cloud.blatt48.json +3 -4
- package/fixtures/erwartet/karte-hobex-hps.blatt32.json +3 -4
- package/fixtures/erwartet/karte-hobex-hps.blatt48.json +3 -4
- package/fixtures/erwartet/karte-mypos.blatt32.json +3 -4
- package/fixtures/erwartet/karte-mypos.blatt48.json +3 -4
- package/fixtures/erwartet/karte-stripe-eps.blatt32.json +3 -4
- package/fixtures/erwartet/karte-stripe-eps.blatt48.json +3 -4
- package/fixtures/erwartet/karte-stripe.blatt32.json +3 -4
- package/fixtures/erwartet/karte-stripe.blatt48.json +3 -4
- package/fixtures/erwartet/karte-sumup.blatt32.json +3 -4
- package/fixtures/erwartet/karte-sumup.blatt48.json +3 -4
- package/fixtures/erwartet/langer-artikelname.blatt32.json +3 -4
- package/fixtures/erwartet/langer-artikelname.blatt48.json +3 -4
- package/fixtures/erwartet/null-ausfall.blatt32.json +3 -4
- package/fixtures/erwartet/null-ausfall.blatt48.json +3 -4
- package/fixtures/erwartet/null-jahr.blatt32.json +3 -4
- package/fixtures/erwartet/null-jahr.blatt48.json +3 -4
- package/fixtures/erwartet/null-monat.blatt32.json +3 -4
- package/fixtures/erwartet/null-monat.blatt48.json +3 -4
- package/fixtures/erwartet/null-pruef.blatt32.json +3 -4
- package/fixtures/erwartet/null-pruef.blatt48.json +3 -4
- package/fixtures/erwartet/null-schluss.blatt32.json +3 -4
- package/fixtures/erwartet/null-schluss.blatt48.json +3 -4
- package/fixtures/erwartet/null-start.blatt32.json +3 -4
- package/fixtures/erwartet/null-start.blatt48.json +3 -4
- package/fixtures/erwartet/rabatt-chef-trinkgeld.blatt32.json +3 -4
- package/fixtures/erwartet/rabatt-chef-trinkgeld.blatt48.json +3 -4
- package/fixtures/erwartet/rabatt-einfach.blatt32.json +3 -4
- package/fixtures/erwartet/rabatt-einfach.blatt48.json +3 -4
- package/fixtures/erwartet/rabatt-trinkgeld.blatt32.json +3 -4
- package/fixtures/erwartet/rabatt-trinkgeld.blatt48.json +3 -4
- package/fixtures/erwartet/rabatt-wertgutschein.blatt32.json +3 -4
- package/fixtures/erwartet/rabatt-wertgutschein.blatt48.json +3 -4
- package/fixtures/erwartet/rabattzeilen.blatt32.json +3 -4
- package/fixtures/erwartet/rabattzeilen.blatt48.json +3 -4
- package/fixtures/erwartet/signaturausfall-verkauf.blatt32.json +3 -4
- package/fixtures/erwartet/signaturausfall-verkauf.blatt48.json +3 -4
- package/fixtures/erwartet/storno-rabatt.blatt32.json +3 -4
- package/fixtures/erwartet/storno-rabatt.blatt48.json +3 -4
- package/fixtures/erwartet/storno-teil.blatt32.json +3 -4
- package/fixtures/erwartet/storno-teil.blatt48.json +3 -4
- package/fixtures/erwartet/storno-voll.blatt32.json +3 -4
- package/fixtures/erwartet/storno-voll.blatt48.json +3 -4
- package/fixtures/erwartet/testkasse-verkauf.blatt32.json +3 -4
- package/fixtures/erwartet/testkasse-verkauf.blatt48.json +3 -4
- package/fixtures/erwartet/testsignatur-verkauf.blatt32.json +3 -4
- package/fixtures/erwartet/testsignatur-verkauf.blatt48.json +3 -4
- package/fixtures/erwartet/training.blatt32.json +3 -4
- package/fixtures/erwartet/training.blatt48.json +3 -4
- package/fixtures/erwartet/verkauf-bar.blatt32.json +3 -4
- package/fixtures/erwartet/verkauf-bar.blatt48.json +3 -4
- package/fixtures/erwartet/verkauf-karte.blatt32.json +3 -4
- package/fixtures/erwartet/verkauf-karte.blatt48.json +3 -4
- package/fixtures/erwartet/verkauf-kleinunternehmer.blatt32.json +3 -4
- package/fixtures/erwartet/verkauf-kleinunternehmer.blatt48.json +3 -4
- package/fixtures/hobex-hps-codes.json +1 -1
- package/fixtures/kasse-texte.json +1 -1
- package/fixtures/manifest.json +62 -62
- package/fixtures/oberflaeche.json +1 -1
- package/fixtures/rechnung-api-beispiele/issue-fehler-preis-beide.json +26 -0
- package/fixtures/rechnung-api-beispiele/issue-fehler-preis-fehlt.json +24 -0
- package/fixtures/rechnung-api-beispiele/issue-mikropreis.json +27 -0
- package/fixtures/rechnung-api.schema.json +37 -5
- package/fixtures/rechnung-texte.json +1 -1
- package/package.json +2 -1
|
@@ -18,4 +18,4 @@ export type { Brand, CancelInvoiceRequest, CancelResult, CreditNoteRequest, Cred
|
|
|
18
18
|
export { RECHNUNG_TEXTE, rechnungText, type RechnungTextSchluessel } from './texte.js';
|
|
19
19
|
export { rechnungSummen, STEUERFREIE_FAELLE, type SummenPosition } from './summen.js';
|
|
20
20
|
export { anteiligerPreis, BETRAG_GRENZE_CENTS, positionAusEuro, preisText, RechenFehler, rechnungRechnen, rund, satzSchluessel, satzText, type RechenErgebnis, type RechenFehlerCode, type RechenOptionen, type RechenPosition, type SatzSumme, type Umwandlung, type UmwandlungsGrund, type ZeilenBetrag, } from './rechnen.js';
|
|
21
|
-
export { RECHNUNG_VERTRAG_VERSION, RECHNUNG_AUFRUFE, INVOICE_ERROR_CODES, CREDIT_NOTE_REASONS, TAX_SCHEMES, PRICE_MODES, VAT_RATES, CUSTOMER_TYPES, INVOICE_LIST_STATUS, DOC_TYPES, EINVOICE_FORMATS, INVOICE_LANGUAGES, INVOICE_PAYMENT_METHODS, ITEM_KINDS, REVERSE_CHARGE_REASONS, INVOICE_NOTICE_CODES, INVOICE_UNITS, RECHNUNG_EINHEITEN_CODES, INVOICE_SETUP_REQUIREMENTS, KUNDE_FELDER, POSITION_FELDER, RECHNUNG_ANFRAGEN, RECHNUNG_GENAU_EINS, RECHNUNG_MINDESTENS_EINS, type RechnungAufruf, type InvoiceErrorCode, type CreditNoteReason, type TaxScheme, type PriceMode, type VatRatePercent, type CustomerType, type InvoiceListStatus, type DocType, type EInvoiceFormat, type InvoiceLanguage, type InvoicePaymentMethod, type ItemKind, type ReverseChargeReason, type InvoiceNoticeCode, type InvoiceUnit, type InvoiceSetupRequirement, type Format, type Feld, } from './vertrag.js';
|
|
21
|
+
export { RECHNUNG_VERTRAG_VERSION, RECHNUNG_AUFRUFE, INVOICE_ERROR_CODES, CREDIT_NOTE_REASONS, TAX_SCHEMES, PRICE_MODES, VAT_RATES, CUSTOMER_TYPES, INVOICE_LIST_STATUS, DOC_TYPES, EINVOICE_FORMATS, INVOICE_LANGUAGES, INVOICE_PAYMENT_METHODS, ITEM_KINDS, REVERSE_CHARGE_REASONS, INVOICE_NOTICE_CODES, INVOICE_UNITS, RECHNUNG_EINHEITEN_CODES, INVOICE_SETUP_REQUIREMENTS, KUNDE_FELDER, POSITION_FELDER, POSITION_PREIS_GENAU_EINS, RECHNUNG_ANFRAGEN, RECHNUNG_GENAU_EINS, RECHNUNG_MINDESTENS_EINS, type RechnungAufruf, type InvoiceErrorCode, type CreditNoteReason, type TaxScheme, type PriceMode, type VatRatePercent, type CustomerType, type InvoiceListStatus, type DocType, type EInvoiceFormat, type InvoiceLanguage, type InvoicePaymentMethod, type ItemKind, type ReverseChargeReason, type InvoiceNoticeCode, type InvoiceUnit, type InvoiceSetupRequirement, type Format, type Feld, } from './vertrag.js';
|
|
@@ -17,4 +17,4 @@ export { cancelInvoice, createCreditNote, createCustomer, getCustomer, getInvoic
|
|
|
17
17
|
export { RECHNUNG_TEXTE, rechnungText } from './texte.js';
|
|
18
18
|
export { rechnungSummen, STEUERFREIE_FAELLE } from './summen.js';
|
|
19
19
|
export { anteiligerPreis, BETRAG_GRENZE_CENTS, positionAusEuro, preisText, RechenFehler, rechnungRechnen, rund, satzSchluessel, satzText, } from './rechnen.js';
|
|
20
|
-
export { RECHNUNG_VERTRAG_VERSION, RECHNUNG_AUFRUFE, INVOICE_ERROR_CODES, CREDIT_NOTE_REASONS, TAX_SCHEMES, PRICE_MODES, VAT_RATES, CUSTOMER_TYPES, INVOICE_LIST_STATUS, DOC_TYPES, EINVOICE_FORMATS, INVOICE_LANGUAGES, INVOICE_PAYMENT_METHODS, ITEM_KINDS, REVERSE_CHARGE_REASONS, INVOICE_NOTICE_CODES, INVOICE_UNITS, RECHNUNG_EINHEITEN_CODES, INVOICE_SETUP_REQUIREMENTS, KUNDE_FELDER, POSITION_FELDER, RECHNUNG_ANFRAGEN, RECHNUNG_GENAU_EINS, RECHNUNG_MINDESTENS_EINS, } from './vertrag.js';
|
|
20
|
+
export { RECHNUNG_VERTRAG_VERSION, RECHNUNG_AUFRUFE, INVOICE_ERROR_CODES, CREDIT_NOTE_REASONS, TAX_SCHEMES, PRICE_MODES, VAT_RATES, CUSTOMER_TYPES, INVOICE_LIST_STATUS, DOC_TYPES, EINVOICE_FORMATS, INVOICE_LANGUAGES, INVOICE_PAYMENT_METHODS, ITEM_KINDS, REVERSE_CHARGE_REASONS, INVOICE_NOTICE_CODES, INVOICE_UNITS, RECHNUNG_EINHEITEN_CODES, INVOICE_SETUP_REQUIREMENTS, KUNDE_FELDER, POSITION_FELDER, POSITION_PREIS_GENAU_EINS, RECHNUNG_ANFRAGEN, RECHNUNG_GENAU_EINS, RECHNUNG_MINDESTENS_EINS, } from './vertrag.js';
|
|
@@ -73,8 +73,16 @@ export interface InvoiceItemInput {
|
|
|
73
73
|
unit?: InvoiceUnit;
|
|
74
74
|
/** Ware oder Leistung; ohne Angabe `goods`. Entscheidet ueber den Steuerfall. */
|
|
75
75
|
kind?: ItemKind;
|
|
76
|
-
/**
|
|
77
|
-
|
|
76
|
+
/**
|
|
77
|
+
* Einzelpreis in ganzen Cent, im `priceMode` der Rechnung (netto oder
|
|
78
|
+
* brutto). Genau eines von `unitPriceCents` und `unitPriceMicros`.
|
|
79
|
+
*/
|
|
80
|
+
unitPriceCents?: number;
|
|
81
|
+
/**
|
|
82
|
+
* Einzelpreis in Mikro-Euro (10⁻⁶ €), fuer Preise unterhalb eines Cents.
|
|
83
|
+
* Genau eines von `unitPriceCents` und `unitPriceMicros`.
|
|
84
|
+
*/
|
|
85
|
+
unitPriceMicros?: number;
|
|
78
86
|
vatRate: VatRatePercent;
|
|
79
87
|
/** Zeilenrabatt in Prozent, hoechstens zwei Nachkommastellen. */
|
|
80
88
|
discountPct?: number;
|
|
@@ -246,7 +254,15 @@ export interface InvoiceItem {
|
|
|
246
254
|
unit: string;
|
|
247
255
|
/** Ware oder Leistung — Altbestand ohne Angabe zaehlt als `goods`. */
|
|
248
256
|
kind: ItemKind;
|
|
257
|
+
/**
|
|
258
|
+
* Einzelpreis in ganzen Cent — eine ANZEIGEHILFE: kaufmaennisch aus
|
|
259
|
+
* `unitPriceMicros` gerundet, und damit 0, sobald der Preis unter einem
|
|
260
|
+
* halben Cent liegt. Verbindlich sind `unitPriceMicros` und die Betraege je
|
|
261
|
+
* Position (§ 9.3).
|
|
262
|
+
*/
|
|
249
263
|
unitPriceCents: number;
|
|
264
|
+
/** Einzelpreis in Mikro-Euro (10⁻⁶ €) — der verbindliche Preis. */
|
|
265
|
+
unitPriceMicros?: number;
|
|
250
266
|
vatRate: number;
|
|
251
267
|
discountPct: number;
|
|
252
268
|
}
|
|
@@ -204,6 +204,17 @@ export type Feld = {
|
|
|
204
204
|
typ: 'object';
|
|
205
205
|
pflicht: boolean;
|
|
206
206
|
felder: Readonly<Record<string, Feld>>;
|
|
207
|
+
/**
|
|
208
|
+
* Feldgruppen, von denen GENAU EINE gesetzt sein muss (§ 9.1). Jede Gruppe
|
|
209
|
+
* ist eine Liste von Feldnamen; im JSON Schema wird daraus
|
|
210
|
+
* `oneOf: [{ required: [...] }, ...]`.
|
|
211
|
+
*
|
|
212
|
+
* Gebraucht fuer den Preis einer Position: `unitPriceCents` ODER
|
|
213
|
+
* `unitPriceMicros`, nie beides und nie keines. Als zwei Pflichtfelder
|
|
214
|
+
* liesse sich das nicht ausdruecken, und als zwei optionale waere eine
|
|
215
|
+
* Position ohne Preis gueltig.
|
|
216
|
+
*/
|
|
217
|
+
genauEins?: readonly (readonly string[])[];
|
|
207
218
|
} | {
|
|
208
219
|
typ: 'list';
|
|
209
220
|
pflicht: boolean;
|
|
@@ -219,8 +230,19 @@ export type Feld = {
|
|
|
219
230
|
};
|
|
220
231
|
/** Kunde, wie das Fremdsystem ihn schickt. `vatId` ist die UID-Nummer. */
|
|
221
232
|
export declare const KUNDE_FELDER: Readonly<Record<string, Feld>>;
|
|
222
|
-
/**
|
|
233
|
+
/**
|
|
234
|
+
* Eine Rechnungs- oder Gutschriftsposition.
|
|
235
|
+
*
|
|
236
|
+
* Der Preis steht in ganzen Cent (`unitPriceCents`) ODER in Mikro-Euro
|
|
237
|
+
* (`unitPriceMicros`, 10⁻⁶ €) — genau eines von beiden (§ 9.1). Der Mikropreis
|
|
238
|
+
* loest denselben Bereich feiner auf: 10¹² Mikro-Euro sind dieselben
|
|
239
|
+
* 10.000.000,00 €, die 10⁸ Cent ausdruecken. Er ist noetig fuer Preise
|
|
240
|
+
* unterhalb eines Cents (Verbrauchsabrechnung, Stueckpreise im Zehntelcent),
|
|
241
|
+
* die bisher gerundet eingereicht werden mussten.
|
|
242
|
+
*/
|
|
223
243
|
export declare const POSITION_FELDER: Readonly<Record<string, Feld>>;
|
|
244
|
+
/** Genau einer der beiden Preise je Position (§ 9.1). */
|
|
245
|
+
export declare const POSITION_PREIS_GENAU_EINS: readonly (readonly string[])[];
|
|
224
246
|
/**
|
|
225
247
|
* Eine Zahlung zu einer Rechnung. Ohne `amountCents` gilt der volle
|
|
226
248
|
* Bruttobetrag, ohne `paidAt` der heutige Wiener Tag. `reference` ist die
|
|
@@ -332,20 +332,45 @@ export const KUNDE_FELDER = Object.freeze({
|
|
|
332
332
|
});
|
|
333
333
|
/** Beim Aendern ist jedes Kundenfeld optional. */
|
|
334
334
|
const KUNDE_PATCH = Object.freeze(Object.fromEntries(Object.entries(KUNDE_FELDER).map(([name, feld]) => [name, { ...feld, pflicht: false }])));
|
|
335
|
-
/**
|
|
335
|
+
/**
|
|
336
|
+
* Eine Rechnungs- oder Gutschriftsposition.
|
|
337
|
+
*
|
|
338
|
+
* Der Preis steht in ganzen Cent (`unitPriceCents`) ODER in Mikro-Euro
|
|
339
|
+
* (`unitPriceMicros`, 10⁻⁶ €) — genau eines von beiden (§ 9.1). Der Mikropreis
|
|
340
|
+
* loest denselben Bereich feiner auf: 10¹² Mikro-Euro sind dieselben
|
|
341
|
+
* 10.000.000,00 €, die 10⁸ Cent ausdruecken. Er ist noetig fuer Preise
|
|
342
|
+
* unterhalb eines Cents (Verbrauchsabrechnung, Stueckpreise im Zehntelcent),
|
|
343
|
+
* die bisher gerundet eingereicht werden mussten.
|
|
344
|
+
*/
|
|
336
345
|
export const POSITION_FELDER = Object.freeze({
|
|
337
346
|
description: text(300, true),
|
|
338
347
|
subtitle: text(1000),
|
|
339
|
-
quantity: { typ: 'number', pflicht: true, min: 0, exklusivMin: true, max:
|
|
348
|
+
quantity: { typ: 'number', pflicht: true, min: 0, exklusivMin: true, max: 1_000_000_000, nachkomma: 3 },
|
|
340
349
|
/** Einheit aus `INVOICE_UNITS`; ohne Angabe `piece`. */
|
|
341
350
|
unit: { typ: 'enum', pflicht: false, werte: INVOICE_UNITS },
|
|
342
351
|
/** Ware oder Leistung; ohne Angabe `goods`. Entscheidet ueber den Steuerfall. */
|
|
343
352
|
kind: { typ: 'enum', pflicht: false, werte: ITEM_KINDS },
|
|
344
|
-
|
|
353
|
+
/** Einzelpreis in ganzen Cent. Alternative zu `unitPriceMicros`. */
|
|
354
|
+
unitPriceCents: { typ: 'integer', pflicht: false, min: 0, max: 100_000_000 },
|
|
355
|
+
/** Einzelpreis in Mikro-Euro (10⁻⁶ €). Alternative zu `unitPriceCents`. */
|
|
356
|
+
unitPriceMicros: { typ: 'integer', pflicht: false, min: 0, max: 1_000_000_000_000 },
|
|
345
357
|
vatRate: { typ: 'enum', pflicht: true, werte: VAT_RATES },
|
|
346
358
|
discountPct: { typ: 'number', pflicht: false, min: 0, max: 100, nachkomma: 2 },
|
|
347
359
|
});
|
|
348
|
-
|
|
360
|
+
/** Genau einer der beiden Preise je Position (§ 9.1). */
|
|
361
|
+
export const POSITION_PREIS_GENAU_EINS = Object.freeze([
|
|
362
|
+
Object.freeze(['unitPriceCents']),
|
|
363
|
+
Object.freeze(['unitPriceMicros']),
|
|
364
|
+
]);
|
|
365
|
+
const positionen = {
|
|
366
|
+
typ: 'list',
|
|
367
|
+
pflicht: true,
|
|
368
|
+
min: 1,
|
|
369
|
+
max: 500,
|
|
370
|
+
eintrag: {
|
|
371
|
+
typ: 'object', pflicht: true, felder: POSITION_FELDER, genauEins: POSITION_PREIS_GENAU_EINS,
|
|
372
|
+
},
|
|
373
|
+
};
|
|
349
374
|
/**
|
|
350
375
|
* Eine Zahlung zu einer Rechnung. Ohne `amountCents` gilt der volle
|
|
351
376
|
* Bruttobetrag, ohne `paidAt` der heutige Wiener Tag. `reference` ist die
|