Rechnungsbeträge deutsch formatieren
This commit is contained in:
@@ -447,7 +447,10 @@ async function getCloseData(server:FastifyInstance,item: any, tenant: any, units
|
|||||||
// Formatiert Zahlen zu deutscher Währung
|
// Formatiert Zahlen zu deutscher Währung
|
||||||
function renderCurrency(value: any, currency = "€") {
|
function renderCurrency(value: any, currency = "€") {
|
||||||
if (value === undefined || value === null) return "0,00 " + currency;
|
if (value === undefined || value === null) return "0,00 " + currency;
|
||||||
return Number(value).toFixed(2).replace(".", ",") + " " + currency;
|
return Number(value).toLocaleString("de-DE", {
|
||||||
|
minimumFractionDigits: 2,
|
||||||
|
maximumFractionDigits: 2
|
||||||
|
}) + " " + currency;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Berechnet den Zeilenpreis (Menge * Preis * Rabatt)
|
// Berechnet den Zeilenpreis (Menge * Preis * Rabatt)
|
||||||
|
|||||||
@@ -25,6 +25,10 @@ const getCoordinatesForPDFLib = (x:number ,y:number, page:any) => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const getRightAlignedX = (rightEdgeMm: number, text: string, size: number, font: any, page: any) => {
|
||||||
|
return getCoordinatesForPDFLib(rightEdgeMm, 0, page).x - font.widthOfTextAtSize(text, size)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
const getBackgroundSourceBuffer = async (server:FastifyInstance, path:string) => {
|
const getBackgroundSourceBuffer = async (server:FastifyInstance, path:string) => {
|
||||||
|
|
||||||
@@ -372,8 +376,10 @@ export const createInvoicePDF = async (server:FastifyInstance, returnMode, invoi
|
|||||||
font: fontBold
|
font: fontBold
|
||||||
})
|
})
|
||||||
|
|
||||||
pages[pageCounter - 1].drawText("Einheitspreis", {
|
const unitPriceHeader = "Einheitspreis"
|
||||||
...getCoordinatesForPDFLib(150, 137, page1),
|
pages[pageCounter - 1].drawText(unitPriceHeader, {
|
||||||
|
y: getCoordinatesForPDFLib(150, 137, page1).y,
|
||||||
|
x: getRightAlignedX(177, unitPriceHeader, 12, fontBold, page1),
|
||||||
size: 12,
|
size: 12,
|
||||||
color: rgb(0, 0, 0),
|
color: rgb(0, 0, 0),
|
||||||
lineHeight: 12,
|
lineHeight: 12,
|
||||||
@@ -508,7 +514,8 @@ export const createInvoicePDF = async (server:FastifyInstance, returnMode, invoi
|
|||||||
maxWidth: 240
|
maxWidth: 240
|
||||||
})
|
})
|
||||||
pages[pageCounter - 1].drawText(row.price, {
|
pages[pageCounter - 1].drawText(row.price, {
|
||||||
...getCoordinatesForPDFLib(150, rowHeight, page1),
|
y: getCoordinatesForPDFLib(150, rowHeight, page1).y,
|
||||||
|
x: getRightAlignedX(177, row.price, 10, font, page1),
|
||||||
size: 10,
|
size: 10,
|
||||||
color: rgb(0, 0, 0),
|
color: rgb(0, 0, 0),
|
||||||
lineHeight: 10,
|
lineHeight: 10,
|
||||||
@@ -689,8 +696,10 @@ export const createInvoicePDF = async (server:FastifyInstance, returnMode, invoi
|
|||||||
font: fontBold
|
font: fontBold
|
||||||
})
|
})
|
||||||
|
|
||||||
page.drawText("Einheitspreis", {
|
const unitPriceHeader = "Einheitspreis"
|
||||||
...getCoordinatesForPDFLib(150, 22, page1),
|
page.drawText(unitPriceHeader, {
|
||||||
|
y: getCoordinatesForPDFLib(150, 22, page1).y,
|
||||||
|
x: getRightAlignedX(177, unitPriceHeader, 12, fontBold, page1),
|
||||||
size: 12,
|
size: 12,
|
||||||
color: rgb(0, 0, 0),
|
color: rgb(0, 0, 0),
|
||||||
lineHeight: 12,
|
lineHeight: 12,
|
||||||
|
|||||||
@@ -1,6 +1,11 @@
|
|||||||
|
|
||||||
export const renderAsCurrency = (value: string | number,currencyString = "€") => {
|
export const renderAsCurrency = (value: string | number,currencyString = "€") => {
|
||||||
return `${Number(value).toFixed(2).replace(".",",")} ${currencyString}`
|
const formattedValue = Number(value).toLocaleString("de-DE", {
|
||||||
|
minimumFractionDigits: 2,
|
||||||
|
maximumFractionDigits: 2
|
||||||
|
})
|
||||||
|
|
||||||
|
return `${formattedValue} ${currencyString}`
|
||||||
}
|
}
|
||||||
|
|
||||||
export const splitStringBySpace = (input:string,maxSplitLength:number,removeLinebreaks = false) => {
|
export const splitStringBySpace = (input:string,maxSplitLength:number,removeLinebreaks = false) => {
|
||||||
@@ -48,4 +53,4 @@ export const splitStringBySpace = (input:string,maxSplitLength:number,removeLine
|
|||||||
})
|
})
|
||||||
|
|
||||||
return returnSplitStrings
|
return returnSplitStrings
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1409,11 +1409,11 @@ const getDocumentData = async () => {
|
|||||||
|
|
||||||
return {
|
return {
|
||||||
...row,
|
...row,
|
||||||
rowAmount: `${getRowAmount(row)} €`,
|
rowAmount: renderCurrency(Number(row.quantity) * Number(row.price) * (1 - Number(row.discountPercent) / 100)),
|
||||||
quantity: String(row.quantity).replace(".", ","),
|
quantity: String(row.quantity).replace(".", ","),
|
||||||
unit: unit.short,
|
unit: unit.short,
|
||||||
pos: String(row.pos),
|
pos: String(row.pos),
|
||||||
price: `${String(row.price.toFixed(2)).replace(".", ",")} €`,
|
price: renderCurrency(row.price),
|
||||||
discountText: `(Rabatt: ${row.discountPercent} %)`
|
discountText: `(Rabatt: ${row.discountPercent} %)`
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user