From 2af12d130990fcdce5d7fde30d93f48d7ed66471 Mon Sep 17 00:00:00 2001 From: Florian Dagner Date: Thu, 25 Jan 2024 16:05:15 +0100 Subject: [PATCH] einkauf --- belege.html | 13 +- buchen.html | 98 +++++++------ bwl.html | 13 +- index.html | 14 +- js/einkauf.js | 317 +++++++++++++++++++++++++++++++++++++++++ js/geschaeftsfaelle.js | 167 ---------------------- media/pic/oer.svg | 17 +++ zufall.html | 9 +- 8 files changed, 415 insertions(+), 233 deletions(-) create mode 100644 js/einkauf.js delete mode 100644 js/geschaeftsfaelle.js create mode 100644 media/pic/oer.svg diff --git a/belege.html b/belege.html index 20d66af..daf2c17 100644 --- a/belege.html +++ b/belege.html @@ -242,13 +242,12 @@

Vorlage

diff --git a/buchen.html b/buchen.html index b1bbdba..fe8d9b8 100644 --- a/buchen.html +++ b/buchen.html @@ -22,7 +22,7 @@

Buchführung

- + @@ -199,46 +199,65 @@

Vorkontierung

-
-

Geschäftsfälle

-
- Anleitung -
- -
-

+
+

Einkauf

+

Sie können hier zufällige Geschäftsfälle generieren. Passen Sie ggf. Beträge und Bezeichnungen an Ihr Modellunternehmen an.

- -

Einkauf

- -

Verkauf

- -

- +
+
+ +
+
-
-
-
+
+
+ + + + +

+ +

Inventar

@@ -615,7 +634,7 @@

Tools

- + @@ -630,13 +649,12 @@

Tools

- - Soweit nicht anders gekennzeichnet unterliegen alle per Button exportierbaren Inhalte der Lizenz CC0 1.0 Deed. - Der Quellcode sowie Möglichkeiten zur Mitwirkung sind über das Repository auf Github zu erreichen.
- fdagner · BwR-Helfer -
+ + Soweit nicht anders gekennzeichnet unterliegen alle per Button exportierbaren Inhalte der Lizenz CC0 1.0 Deed. + Der Quellcode sowie Möglichkeiten zur Mitwirkung sind über das Repository auf Github zu erreichen.
+ fdagner · BwR

+ +

diff --git a/bwl.html b/bwl.html index 84ba1b9..2a439da 100644 --- a/bwl.html +++ b/bwl.html @@ -220,13 +220,12 @@

Produklebenszyklus

- - Soweit nicht anders gekennzeichnet unterliegen alle per Button exportierbaren Inhalte der Lizenz CC0 1.0 Deed - Der Quellcode sowie Möglichkeiten zur Mitwirkung sind über das Repository auf Github zu erreichen.
- fdagner · BwR -
+ + Soweit nicht anders gekennzeichnet unterliegen alle per Button exportierbaren Inhalte der Lizenz CC0 1.0 Deed. + Der Quellcode sowie Möglichkeiten zur Mitwirkung sind über das Repository auf Github zu erreichen.
+ fdagner · BwR

+ +

diff --git a/index.html b/index.html index 3dea992..ea171b1 100644 --- a/index.html +++ b/index.html @@ -11,7 +11,7 @@

BwR

- Hier erhalten Sie Unterstützung bei der Erstellung und dem Export von fachspezifischen Darstellungen für das Fach Betriebswirtschaftslehre/Rechnungswesen an der Realschule in Bayern. + Hier erhalten Sie Unterstützung bei der Erstellung und dem Export von fachspezifischen Darstellungen für das Fach BwR an der Realschule in Bayern. Der Schwerpunkt liegt auf dem Export nach PNG, Office, HTML und für die Weiterverarbeitung in Moodle/mebis. Die verwendeten Konten entsprechen dem aktuellen Kontenplan der Realschule in Bayern. @@ -22,17 +22,15 @@

BwR

- - - - + diff --git a/js/einkauf.js b/js/einkauf.js new file mode 100644 index 0000000..80a3ad1 --- /dev/null +++ b/js/einkauf.js @@ -0,0 +1,317 @@ +const inputWerkstoffe = document.getElementById('inputWerkstoffe'); +const inputSachanlagen = document.getElementById('inputSachanlagen'); + +// Funktion zum Generieren einer zufälligen Zahl +function generateRandomAnzahl() { + const randomNumber = getRandomIntegerWithSteps(2, 10, 1); + return randomNumber; +} + +// Paare von Elementen und den entsprechenden kontenWerkstoffe +const kontenWerkstoffe = { + "Rohstoffe": "6000 AWR", + "Fremdbauteile": "6010 AWF", + "Hilfsstoffe": "6020 AWH", + "Betriebsstoffe": "6030 AWB" + // ... füge weitere Paare hinzu, wenn nötig +}; + +const kontenWerkstoffe_2 = { + "von Rohstoffen": "6000 AWR", + "von Fremdbauteilen": "6010 AWF", + "von Hilfsstoffen": "6020 AWH", + "von Betriebsstoffen": "6030 AWB" + // ... füge weitere Paare hinzu, wenn nötig +}; + +const kontenSachanlagen = { + + "einen Computer": "0700 MA", + "einen PC": "0860 BM", + "einen Laptop": "0860 BM", + "eine Fertigungsmaschine": "0700 MA", + "Büromöbel": "0870 BGA", + "einen Gabelstapler": "0840 FP", + "einen Kommissionierroboter": "0700 MA", + "eine Prüf- und Inspektionsanlage": "0700 MA", + "einen Büro-3D-Drucker": "0860 BM", + "einen gebrauchten Kleintransporter": "0840 FP", + [`${generateRandomAnzahl()} Büroregalen`]: "0870 BGA", + "einen Aktenschrank": "0870 BGA", + [`${generateRandomAnzahl()} Netzwerkserver`]: "0860 BM", + [`${generateRandomAnzahl()} Kopierer`]: "0860 BM", + "eine Maschine": "0700 MA", + "eine Produktionsmaschine": "0700 MA", + "eine Fertigungsanlage": "0700 MA", +}; + +const kontenSachanlagen_2 = { + + "eines Computers": "0700 MA", + "eines PC": "0860 BM", + "eines Laptops": "0860 BM", + "einer Fertigungsmaschine": "0700 MA", + "von Büromöbeln": "0870 BGA", + "eines Gabelstaplers": "0840 FP", + "eines Kommissionierroboters": "0700 MA", + "einer Prüf- und Inspektionsanlage": "0700 MA", + "eines Büro-3D-Druckers": "0860 BM", + "eines gebrauchten Kleintransporters": "0840 FP", + [`von ${generateRandomAnzahl()} Büroregalen`]: "0870 BGA", + "eines Aktenschranks": "0870 BGA", + [`von ${generateRandomAnzahl()} Netzwerkservern`]: "0860 BM", + [`von ${generateRandomAnzahl()} Kopierern`]: "0860 BM", + "einer Maschine": "0700 MA", + "einer Produktionsmaschine": "0700 MA", + "einer Fertigungsanlage": "0700 MA", +}; + +let kontenZahlung; +function inputChangeCategory() +{ +if (inputWerkstoffe.checked) { + kontenZahlung = { + "in bar": "2880 KA", + "per Barzahlung": "2880 KA", + "per Banküberweisung": "2800 BK", + "gegen Rechnung": "4400 VE", + "nebst Erhalt einer Eingangsrechnung": "4400 VE", + "auf Rechnung": "4400 VE", + "auf Ziel": "4400 VE", + } +} else if (inputSachanlagen.checked) { + kontenZahlung = { + "per Banküberweisung": "2800 BK", + "gegen Rechnung": "4400 VE", + "nebst Erhalt einer Eingangsrechnung": "4400 VE", + "auf Rechnung": "4400 VE", + "auf Ziel": "4400 VE", + } +} +} + + + +// Funktion zur Generierung einer Zufallsganzzahl zwischen 100 und 5000 (gerundet auf hunderte Stellen) +function generateRandomNettoWert() { + if (inputWerkstoffe.checked) { + return Math.round(Math.random() * 49 + 2) * 100; // 2 to 50 times 100 (to round to the nearest hundred) + } else if (inputSachanlagen.checked) { + return Math.round(Math.random() * 99 + 20) * 100; // 10 to 300 times 100 (to round to the nearest hundred) + } + // Fallback-Wert, falls keine Checkbox ausgewählt ist + return 0; +} + + +function getRandomIntegerWithSteps(min, max, step) { + const range = (max - min) / step; + return Math.floor(Math.random() * range) * step + min; +} + +function getRandomRabatt() { + return getRandomIntegerWithSteps(5, 20, 5); +} + +function formatCurrency(value) { + return value.toLocaleString('de-DE', { style: 'currency', currency: 'EUR' }); +} +function erstelleZufallssatz() { + inputChangeCategory(); + const array_Rabatt = getRandomRabatt(); +// Arrays mit verschiedenen Teilen des Satzes +const array_Subjekt = ['Wir kaufen ', 'Wir beziehen ', 'Unsere Firma kauft ', 'Wir erwerben ', 'Wir haben bezogen: ', 'Wir haben gekauft: ']; +const array_Subjekt_2 = ['Kauf ', 'Einkauf ', 'Erwerb ', 'Beschaffung ', 'Bezug ']; +const array_Werkstoffe = Object.keys(kontenWerkstoffe); +const array_Werkstoffe_2 = Object.keys(kontenWerkstoffe_2); +const array_Sachanlagen = Object.keys(kontenSachanlagen); +const array_Sachanlagen_2 = Object.keys(kontenSachanlagen_2); +const array_Formulierung_Wert = ['mit einem Aufwand in Höhe von', 'im Wert von', 'mit', 'mit einem Wert in Höhe von', 'mit einem Betrag in Höhe von', 'mit einem finanziellen Einsatz von', 'im Umfang von']; +const array_Zahlung = Object.keys(kontenZahlung); +const array_Formulierung_Rabatt = [`, abzüglich ${array_Rabatt} % Rabatt`]; +const array_Formulierung_Rabatt_2 = [ + `. Ausgehandelt wurde zusätzlich ${array_Rabatt} % Treuerabatt`, + `. ${array_Rabatt} % Sonderrabatt können abgezogen werden`, + `. ${array_Rabatt} % Rabatt können abgezogen werden`, + `. Wir erhalten ${array_Rabatt} % Kundenrabatt`, + `. Wir erhalten ${array_Rabatt} % Rabatt`, +]; + +// Funktion zum Erstellen eines zufälligen Satzes + + // Zufällige Auswahl der Elemente und der alternativen Arrays + const selectedarray_Subjekt = Math.random() < 0.5 ? array_Subjekt : array_Subjekt_2; + const selectedarray_Werkstoffe = selectedarray_Subjekt === array_Subjekt_2 ? array_Werkstoffe_2 : array_Werkstoffe; + const selectedarray_Sachanlagen = selectedarray_Subjekt === array_Subjekt_2 ? array_Sachanlagen_2 : array_Sachanlagen; + + // Zufällige Auswahl der Elemente aus den ausgewählten Arrays + const zufaelligesSubjekt = selectedarray_Subjekt[Math.floor(Math.random() * selectedarray_Subjekt.length)]; + const zufaelligesWerkstoff = selectedarray_Werkstoffe[Math.floor(Math.random() * selectedarray_Werkstoffe.length)]; + const zufaelligesSachanlagen = selectedarray_Sachanlagen[Math.floor(Math.random() * selectedarray_Sachanlagen.length)]; + const zufaelligesFormulierung_Wert = array_Formulierung_Wert[Math.floor(Math.random() * array_Formulierung_Wert.length)]; + const antwortWerkstoff = kontenWerkstoffe[zufaelligesWerkstoff] || kontenWerkstoffe_2[zufaelligesWerkstoff]; + const antwortSachanlagen = kontenSachanlagen[zufaelligesSachanlagen] || kontenSachanlagen_2[zufaelligesSachanlagen]; + const nettoOderBrutto = Math.random() < 0.5 ? 'Netto' : 'Brutto'; + const Wert = generateRandomNettoWert(); + const nettoWert = formatCurrency(Wert); + const bruttoWert = formatCurrency(Math.round(Wert * 0.19 + Wert)); + let zufaelligesNettowert; + if (inputWerkstoffe.checked) { + zufaelligesNettowert = nettoOderBrutto === 'Netto' ? `Listenpreis ${nettoWert} netto` : `brutto ${bruttoWert}`; + } else { + zufaelligesNettowert = nettoOderBrutto === 'Netto' ? `${nettoWert} netto` : `brutto ${bruttoWert}`; + } + + const zufaelligesZahlung = array_Zahlung[Math.floor(Math.random() * array_Zahlung.length)]; + const antwortZahlung = kontenZahlung[zufaelligesZahlung] + + let zufaelligesRabatt; + let zufaelligesFormulierung_Rabatt; + let zufaelligesFormulierung_Rabatt_2; + let berechnung_nettoWert; + const mitRabatt = document.getElementById('mitRabatt'); + if (mitRabatt.checked) { + zufaelligesRabatt = array_Rabatt; + zufaelligesFormulierung_Rabatt = array_Formulierung_Rabatt[Math.floor(Math.random() * array_Formulierung_Rabatt.length)]; + zufaelligesFormulierung_Rabatt_2 = array_Formulierung_Rabatt_2[Math.floor(Math.random() * array_Formulierung_Rabatt_2.length)]; + berechnung_nettoWert = parseFloat(nettoWert.replace(/[^\d,-]/g, '')) * (100 - parseFloat(zufaelligesRabatt)) / 100; + } else { + zufaelligesRabatt = ""; + zufaelligesFormulierung_Rabatt = ""; + zufaelligesFormulierung_Rabatt_2 = ""; + berechnung_nettoWert = parseFloat(nettoWert.replace(/[^\d,-]/g, '')); + } + + let antwort_nettoWert = formatCurrency(berechnung_nettoWert); + let berechnung_USTWert = berechnung_nettoWert * 0.19; + let USTWert = formatCurrency(berechnung_USTWert); + let berechnung_bruttoWert = berechnung_nettoWert + (berechnung_USTWert); + let antwort_bruttoWert = formatCurrency(berechnung_bruttoWert); + + // Zusammenfügen der ausgewählten Elemente zu einem Satz + const randomValue = Math.random(); + let zufaelligerSatz; + + if (inputWerkstoffe.checked) { + if (randomValue < 0.33) { + zufaelligerSatz = `${zufaelligesSubjekt} ${zufaelligesWerkstoff} ${zufaelligesZahlung} ${zufaelligesFormulierung_Wert} ${zufaelligesNettowert} ${zufaelligesFormulierung_Rabatt}.`; + } else if (randomValue < 0.66) { + zufaelligerSatz = `${zufaelligesSubjekt} ${zufaelligesWerkstoff} ${zufaelligesFormulierung_Wert} ${zufaelligesNettowert} ${zufaelligesZahlung} ${zufaelligesFormulierung_Rabatt_2}.`; + } else { + zufaelligerSatz = `${zufaelligesSubjekt} ${zufaelligesWerkstoff} ${zufaelligesZahlung} ${zufaelligesFormulierung_Wert} ${zufaelligesNettowert} ${zufaelligesFormulierung_Rabatt_2}.`; + } const antwort_1 = `${antwortWerkstoff}`; + const wert_1 = `${antwort_nettoWert}`; + const antwort_2 = `${antwortZahlung}`; + const wert_2 = `${antwort_bruttoWert}`; + + return [zufaelligerSatz, antwort_1, wert_1, USTWert, antwort_2, wert_2]; + } else if (inputSachanlagen.checked) { + if (randomValue < 0.33) { + zufaelligerSatz = `${zufaelligesSubjekt} ${zufaelligesSachanlagen} ${zufaelligesZahlung} ${zufaelligesFormulierung_Wert} ${zufaelligesNettowert} ${zufaelligesFormulierung_Rabatt}.`; + } else if (randomValue < 0.66) { + zufaelligerSatz = `${zufaelligesSubjekt} ${zufaelligesSachanlagen} ${zufaelligesFormulierung_Wert} ${zufaelligesNettowert} ${zufaelligesZahlung} ${zufaelligesFormulierung_Rabatt_2}.`; + } else { + zufaelligerSatz = `${zufaelligesSubjekt} ${zufaelligesSachanlagen} ${zufaelligesZahlung} ${zufaelligesFormulierung_Wert} ${zufaelligesNettowert} ${zufaelligesFormulierung_Rabatt_2}.`; + } const antwort_1 = `${antwortSachanlagen}`; + const wert_1 = `${antwort_nettoWert}`; + const antwort_2 = `${antwortZahlung}`; + const wert_2 = `${antwort_bruttoWert}`; + + return [zufaelligerSatz, antwort_1, wert_1, USTWert, antwort_2, wert_2]; + } + +} + + +function zeigeZufaelligenSatz() { + const anzahlDropdown = document.getElementById('anzahlDropdown'); + const anzahl = parseInt(anzahlDropdown.value); + + let satzOutput = '

Aufgaben

'; // Start der nummerierten Liste + satzOutput += '
    '; // Start der nummerierten Liste + let antwortOutput = `

    Lösung:

    `; + antwortOutput += '
      '; // Start der nummerierten Liste für Antworten + + for (let i = 1; i <= anzahl; i++) { + const [zufaelligerSatz, antwort_1, wert_1, USTWert, antwort_2, wert_2] = erstelleZufallssatz(); + const formattedSatz = zufaelligerSatz.replace(/\s+/g, ' ').replace(/\s(?=[.,;:!])/g, ''); + + // Generierte Sätze hinzufügen + satzOutput += `
    1. ${formattedSatz}
    2. `; + + // Generierte Antworten hinzufügen + antwortOutput += `
    3. `; + antwortOutput += ``; + antwortOutput += ``; + antwortOutput += ``; + antwortOutput += ``; + antwortOutput += ``; + antwortOutput += ``; + antwortOutput += ``; + antwortOutput += ``; + + antwortOutput += ``; + antwortOutput += ``; + antwortOutput += ``; + antwortOutput += ``; + antwortOutput += ``; + antwortOutput += ``; + antwortOutput += ``; + antwortOutput += ``; + antwortOutput += `
      ${antwort_1} ${wert_1}
      2600 VORST${USTWert}an${antwort_2}${wert_2}
      `; + antwortOutput += `
    4. `; + } + + satzOutput += '
    '; // Ende der nummerierten Liste für Sätze + antwortOutput += '
'; // Ende der nummerierten Liste für Antworten + + // Sätze und Antworten auf der Seite anzeigen + document.getElementById('einkaufContainer').innerHTML = satzOutput + antwortOutput; +} + + +function einkaufHerunterladen() { + const einkaufHTML = document.getElementById('einkaufContainer').innerHTML; + const blob = new Blob([einkaufHTML], { type: 'text/html' }); + const a = document.createElement('a'); + a.href = URL.createObjectURL(blob); + a.download = 'einkauf.html'; + document.body.appendChild(a); + a.click(); + document.body.removeChild(a); +} + +function einkaufKopiereInZwischenablage() { + const einkaufHTML = document.getElementById('einkaufContainer').innerHTML; + navigator.clipboard.writeText(einkaufHTML) + .then(() => alert('Code wurde in die Zwischenablage kopiert')) + .catch(err => console.error('Fehler beim Kopieren in die Zwischenablage:', err)); +} + +function einkaufHerunterladenAlsPNG() { + const einkaufContainer = document.getElementById('einkaufContainer'); + + html2canvas(einkaufContainer).then(canvas => { + const dataURL = canvas.toDataURL('image/png'); + const a = document.createElement('a'); + a.href = dataURL; + a.download = 'einkauf.png'; + document.body.appendChild(a); + a.click(); + document.body.removeChild(a); + }); +} + +let clipboardeinkauf = new ClipboardJS('#officeButtoneinkauf'); + +clipboardeinkauf.on('success', function (e) { + console.log("Die Tabelle wurde in die Zwischenablage kopiert."); + alert("Die Tabelle wurde in die Zwischenablage kopiert."); +}); + +clipboardeinkauf.on('error', function (e) { + console.error("Fehler beim Kopieren der Tabelle: ", e.action); + alert("Fehler beim Kopieren der Tabelle."); +}); + + diff --git a/js/geschaeftsfaelle.js b/js/geschaeftsfaelle.js deleted file mode 100644 index 2182fd6..0000000 --- a/js/geschaeftsfaelle.js +++ /dev/null @@ -1,167 +0,0 @@ -function getRandomInteger(min, max) { - // Math.floor rundet die Zahl ab, um eine Ganzzahl zu erhalten - return Math.floor(Math.random() * (max - min + 1)) + min; -} - -function getRandomIntegerWithSteps(min, max, step) { - const range = (max - min) / step; - return Math.floor(Math.random() * range) * step + min; -} - - -const partsOfSpeech = { - einkauf: ['Wir kaufen ', 'Wir beziehen ', 'Unsere Firma kauft ', 'Wir erwerben ', 'Wir haben bezogen: ', 'Wir haben gekauft: '], - einkauf_alt2: ['Kauf von ', 'Einkauf von ', 'Erwerb von ', 'Beschaffung von ', 'Bezug von '], - einkauf_alt: ['Wir bezahlen bar: ', 'Barzahlung: ', 'Wir erhalten eine Eingangsrechnung für ', 'Es geht eine Rechnung ein über ', 'Wir haben auf Rechnung gekauft: ', 'Wir bekommen eine Rechnung für ', 'Es wird uns eine Rechnung gestellt über ', 'Unsere Firma erhält eine Rechnung über ', 'Eine Rechnung wird an uns gesandt über '], - werkstoffe: ['Rohstoffe', 'Hilfsstoffe', 'Betriebsstoffe', 'Fremdbauteile'], - werkstoffe_alt: ['Rohstoffen', 'Hilfsstoffen', 'Betriebsstoffen', 'Fremdbauteilen'], - sachanlagen: ['einen Computer', 'einen PC', 'einen Laptop', 'eine Fertigungsmaschine', 'Büromöbel', 'einen Gabelstapler', 'einen Kommissionierroboter', 'eine Prüf- und Inspektionsanlage', 'einen 3D-Drucker', 'einen gebrauchten Kleintransporter', `${getRandomInteger(2, 10)} Büroregale`, 'einen Aktenschrank', `${getRandomInteger(2, 10)} Netzwerkserver`, `${getRandomInteger(2, 10)} Kopierer`, 'eine Maschine', 'eine Produktionsmaschine', ' eine Fertigungsanlage '], - wert: [' mit Kosten in Höhe von ', ' im Wert von ', ' mit ', ' mit einem Wert in Höhe von ', ' mit einem Betrag in Höhe von ', ' mit einem finanziellen Einsatz von ', ' im Umfang von '], - zahlung: ['in bar', 'per Barzahlung', 'auf Rechnung', 'auf Ziel', 'per Banküberweisung', 'gegen Rechnung', 'nebst Erhalt einer Eingangsrechnung'], - abzglRabatt: [`, abzüglich ${getRandomIntegerWithSteps(5, 20, 5)} % Treuerabatt`, `, abzüglich ${getRandomIntegerWithSteps(5, 20, 5)} % Sonderrabatt`, `. ${getRandomIntegerWithSteps(5, 20, 5)} % Rabatt können abgezogen werden`, `. Wir erhalten ${getRandomIntegerWithSteps(5, 20, 5)} % Kundenrabatt`, `. Wir erhalten ${getRandomIntegerWithSteps(5, 20, 5)} % Rabatt`,], - begleichung: [ - 'Wir begleichen die Rechnung aus dem Geschäftsfall Satz per Banküberweisung.', - 'Der Rechnungsbetrag aus dem Satz. Geschäftsfall wird per Banküberweisung beglichen.', - 'Wir bezahlen die Rechnung aus Geschäftfall Satz in bar.' - ], - - generateNetAmount: (min, max) => { - const amount = Math.floor(Math.random() * (max - min + 1)) + min; - return Math.floor(amount / 100) * 100; // Runde auf ganze Hunderter - }, - generateGrossAmount: netAmount => { - const taxRate = 0.19; // Beispiel: 19% Mehrwertsteuer - const grossAmount = netAmount * (1 + taxRate); - return grossAmount.toLocaleString('de-DE', { style: 'currency', currency: 'EUR' }) // Formatierung mit Tausenderpunkt und zwei Dezimalstellen - }, -}; - -function generateText() { - const getRandomElement = array => array[Math.floor(Math.random() * array.length)]; - const selectedCategory = document.querySelector('input[name="category"]:checked').value; - - const sentencesWithRechnung = []; - const generatedListItems = []; - const rabattCheckbox = document.getElementById('rabattCheckbox'); - const isRabattActive = rabattCheckbox.checked; - - for (let i = 1; i <= 10; i++) { - const useEinkaufAlt = (selectedCategory === 'sachanlagen' || selectedCategory === 'werkstoffe') && Math.random() < 0.5; - const useEinkaufAlt2 = selectedCategory === 'werkstoffe' && Math.random() < 0.5; - - let einkaufArray; - - if (useEinkaufAlt2) { - einkaufArray = partsOfSpeech.einkauf_alt2; - } else if (useEinkaufAlt) { - einkaufArray = partsOfSpeech.einkauf_alt; - } else { - einkaufArray = partsOfSpeech.einkauf; - } - - const einkauf = getRandomElement(einkaufArray); - const wert = getRandomElement(partsOfSpeech.wert); - - const zahlung = (useEinkaufAlt || useEinkaufAlt2) ? '' : getRandomElement(partsOfSpeech.zahlung); - - let selectedPartOfSpeech; - let numbersInSentence; - - if (selectedCategory === 'werkstoffe') { - selectedPartOfSpeech = getRandomElement(partsOfSpeech[useEinkaufAlt2 ? 'werkstoffe_alt' : 'werkstoffe']); - } else if (selectedCategory === 'sachanlagen') { - const selectedSentence = getRandomElement(partsOfSpeech.sachanlagen); - - // Extrahiere alle Ganzzahlen aus dem Satz - numbersInSentence = selectedSentence.match(/\b\d+\b/g); - - // Überprüfe, ob eine Zahl zwischen 2 und 10 im Satz vorhanden ist - const hasNumberInRange = numbersInSentence && numbersInSentence.some(number => { - const num = parseInt(number, 10); - return num >= 2 && num <= 10; - }); - - // Füge "je" vor ${amountText} ein, wenn eine Zahl zwischen 2 und 10 vorhanden ist - selectedPartOfSpeech = hasNumberInRange ? `${selectedSentence}` : selectedSentence; - } - - let amount; - let isNetAmount; - let netAmountText; - - if (selectedCategory === 'werkstoffe') { - amount = partsOfSpeech.generateNetAmount(100, 5000); - isNetAmount = Math.random() < 0.5; - netAmountText = `Listenpreis ${amount.toLocaleString('de-DE', { style: 'currency', currency: 'EUR' })} netto`; - } else if (selectedCategory === 'sachanlagen') { - amount = partsOfSpeech.generateNetAmount(1002, 10000); - isNetAmount = Math.random() < 0.5; - netAmountText = `${amount.toLocaleString('de-DE', { style: 'currency', currency: 'EUR' })} netto`; - } - - - const grossAmount = partsOfSpeech.generateGrossAmount(amount); - const grossAmountText = `${grossAmount} brutto`; - const amountText = isNetAmount ? netAmountText : grossAmountText; - let zahlungAlt2 = ''; - let hasNumberInRange = false; // Hier deklarieren - - if (useEinkaufAlt2) { - zahlungAlt2 = ' ' + getRandomElement(partsOfSpeech.zahlung); - } - - const generatedSentence = `${einkauf}${selectedPartOfSpeech}${zahlungAlt2}`; - - if (selectedCategory === 'sachanlagen') { - // Überprüfe, ob eine Zahl zwischen 2 und 10 im Satz vorhanden ist - hasNumberInRange = numbersInSentence && numbersInSentence.some(number => { - const num = parseInt(number, 10); - return num >= 2 && num <= 10; - }); - } - - const amountDescription = hasNumberInRange ? `${wert}je ${amountText}` : `${wert}${amountText}`; - const paymentDescription = `${zahlung ? ' ' + zahlung : ''}`; - - const sentenceOrder = Math.random() < 0.5 ? `${amountDescription}${paymentDescription}` : `${paymentDescription}${amountDescription}`; - let finalSentence = `${generatedSentence} ${sentenceOrder}`; - - if (isRabattActive) { - const rabattText = getRandomElement(partsOfSpeech.abzglRabatt); - finalSentence += `${rabattText}`; - } - - finalSentence += '.'; - generatedListItems.push(`
  • ${finalSentence}
  • `); - - if (finalSentence.includes('Rechnung')) { - sentencesWithRechnung.push({ index: i, sentence: finalSentence }); - } - } - - if (sentencesWithRechnung.length > 0) { - - const begleichungListItems = sentencesWithRechnung.map(({ index }) => { - const begleichungSentence = getRandomElement(partsOfSpeech.begleichung).replace('Satz', index); - return `
  • ${begleichungSentence}
  • `; - }); - - generatedListItems.push('', '

    Ergänzende Geschäftsfälle:

      ', ...begleichungListItems); - } - - function cleanUpGeneratedText(text) { - // Remove leading and trailing spaces - const trimmedText = text.trim(); - - // Remove multiple spaces between words - const cleanedText = trimmedText.replace(/\s+/g, ' '); - - // Remove spaces before punctuation marks - const finalText = cleanedText.replace(/\s*([.,;:!?])/g, '$1'); - - return finalText; - } - - const outputList = `
        ${generatedListItems.join('')}
      `; - document.getElementById('output').innerHTML = outputList; -} diff --git a/media/pic/oer.svg b/media/pic/oer.svg new file mode 100644 index 0000000..c53c66f --- /dev/null +++ b/media/pic/oer.svg @@ -0,0 +1,17 @@ + + +image/svg+xml + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zufall.html b/zufall.html index 37eeddc..23bcac7 100644 --- a/zufall.html +++ b/zufall.html @@ -44,7 +44,7 @@

      Zufälliger Satz Generator

      // Funktion zum Generieren einer zufälligen Zahl function generateRandomAnzahl() { const randomNumber = getRandomIntegerWithSteps(2, 10, 1); - return `${randomNumber} Büroregale`; + return randomNumber; } // Paare von Elementen und den entsprechenden kontenWerkstoffe @@ -52,7 +52,7 @@

      Zufälliger Satz Generator

      "Rohstoffe": "6000 AWR", "Fremdbauteile": "6010 AWF", "Hilfsstoffe": "6020 AWH", - "Betriebsstoffe": "6030 AWB" + "Betriebsstoffe": "6030 AWB" // ... füge weitere Paare hinzu, wenn nötig }; @@ -135,7 +135,7 @@

      Zufälliger Satz Generator

      if (inputWerkstoffe.checked) { return Math.round(Math.random() * 49 + 2) * 100; // 2 to 50 times 100 (to round to the nearest hundred) } else if (inputSachanlagen.checked) { - return Math.round(Math.random() * 290 + 10) * 100; // 10 to 300 times 100 (to round to the nearest hundred) + return Math.round(Math.random() * 99 + 20) * 100; // 10 to 300 times 100 (to round to the nearest hundred) } // Fallback-Wert, falls keine Checkbox ausgewählt ist return 0; @@ -184,7 +184,7 @@

      Zufälliger Satz Generator

      const zufaelligesSachanlagen = selectedarray_Sachanlagen[Math.floor(Math.random() * selectedarray_Sachanlagen.length)]; const zufaelligesFormulierung_Wert = array_Formulierung_Wert[Math.floor(Math.random() * array_Formulierung_Wert.length)]; const antwortWerkstoff = kontenWerkstoffe[zufaelligesWerkstoff] || kontenWerkstoffe_2[zufaelligesWerkstoff]; - const antwortSachanlagen = kontenSachanlagen[zufaelligesSachanlagen] || kontenSachanlagen_2[zufaelligesSachanlagen] + const antwortSachanlagen = kontenSachanlagen[zufaelligesSachanlagen] || kontenSachanlagen_2[zufaelligesSachanlagen]; const nettoOderBrutto = Math.random() < 0.5 ? 'Netto' : 'Brutto'; const Wert = generateRandomNettoWert(); const nettoWert = formatCurrency(Wert); @@ -195,6 +195,7 @@

      Zufälliger Satz Generator

      } else { zufaelligesNettowert = nettoOderBrutto === 'Netto' ? `${nettoWert} netto` : `brutto ${bruttoWert}`; } + const zufaelligesZahlung = array_Zahlung[Math.floor(Math.random() * array_Zahlung.length)]; const antwortZahlung = kontenZahlung[zufaelligesZahlung]