u
This commit is contained in:
@@ -578,6 +578,23 @@ class ManifestFormLine extends PureComponent {
|
||||
? Math.round((ekNetto * (1 + Number(ekTaxRate) / 100) + Number.EPSILON) * 100) / 100
|
||||
: null;
|
||||
|
||||
const marge =
|
||||
vkNetto > 0 && ekNetto != null
|
||||
? ((vkNetto - ekNetto) / vkNetto) * 100
|
||||
: vkBrutto > 0 && ekBrutto != null
|
||||
? ((vkBrutto - ekBrutto) / vkBrutto) * 100
|
||||
: null;
|
||||
|
||||
const rebate = parseNum(this.props.line?.rebate) ?? 0;
|
||||
const effectiveNet =
|
||||
vkNetto != null && Number.isFinite(vkNetto)
|
||||
? vkNetto * (1 - rebate / 100)
|
||||
: null;
|
||||
const effectiveMarge =
|
||||
effectiveNet != null && effectiveNet > 0 && ekNetto != null
|
||||
? ((effectiveNet - ekNetto) / effectiveNet) * 100
|
||||
: null;
|
||||
|
||||
const hasPriceInfo =
|
||||
vkNetto != null || vkBrutto != null || ekNetto != null || ekBrutto != null || kind === 'quote' || kind === 'order';
|
||||
|
||||
@@ -697,6 +714,26 @@ class ManifestFormLine extends PureComponent {
|
||||
whiteSpace: 'nowrap',
|
||||
}}
|
||||
>
|
||||
{/* Marge */}
|
||||
<Tooltip
|
||||
title={
|
||||
marge != null
|
||||
? `Marge: ${marge.toFixed(1).replace('.', ',')}% (EK Netto ${formatPrice(ekNetto)} → VK Netto ${formatPrice(vkNetto)})${rebate > 0 && effectiveMarge != null ? ` · Nach ${rebate}% Rabatt: ${effectiveMarge.toFixed(1).replace('.', ',')}%` : ''}`
|
||||
: 'Kein EK- oder VK-Preis hinterlegt'
|
||||
}
|
||||
>
|
||||
<Typography
|
||||
variant="caption"
|
||||
fontWeight={600}
|
||||
sx={{
|
||||
color: marge != null ? (marge < 0 ? 'error.main' : 'text.secondary') : 'text.disabled',
|
||||
fontSize: '0.72rem',
|
||||
}}
|
||||
>
|
||||
Marge: {marge != null ? `${Math.floor(marge)}%` : '—'}
|
||||
</Typography>
|
||||
</Tooltip>
|
||||
|
||||
{/* EK Netto */}
|
||||
<Tooltip
|
||||
title={
|
||||
@@ -867,6 +904,13 @@ class ManifestFormLine extends PureComponent {
|
||||
: null)
|
||||
: null;
|
||||
|
||||
const priceNetNum = Number(priceNet);
|
||||
const vkNettoNum = Number(vkNetto);
|
||||
const margeDelivery =
|
||||
vkNettoNum > 0 && priceNet != null && Number.isFinite(priceNetNum)
|
||||
? ((vkNettoNum - priceNetNum) / vkNettoNum) * 100
|
||||
: null;
|
||||
|
||||
return (
|
||||
<Box
|
||||
sx={{
|
||||
@@ -1007,6 +1051,24 @@ class ManifestFormLine extends PureComponent {
|
||||
whiteSpace: 'nowrap',
|
||||
}}
|
||||
>
|
||||
{/* Marge */}
|
||||
{margeDelivery != null && (
|
||||
<Tooltip
|
||||
title={`Marge: ${margeDelivery.toFixed(1).replace('.', ',')}% (EK Netto ${formatPrice(priceNet)} → VK Netto ${formatPrice(vkNetto)})`}
|
||||
>
|
||||
<Typography
|
||||
variant="caption"
|
||||
fontWeight={600}
|
||||
sx={{
|
||||
color: margeDelivery < 0 ? 'error.main' : 'text.secondary',
|
||||
fontSize: '0.72rem',
|
||||
}}
|
||||
>
|
||||
Marge: {Math.floor(margeDelivery)}%
|
||||
</Typography>
|
||||
</Tooltip>
|
||||
)}
|
||||
|
||||
{priceNet != null && (
|
||||
<Typography
|
||||
variant="caption"
|
||||
|
||||
Reference in New Issue
Block a user