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
|
? Math.round((ekNetto * (1 + Number(ekTaxRate) / 100) + Number.EPSILON) * 100) / 100
|
||||||
: null;
|
: 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 =
|
const hasPriceInfo =
|
||||||
vkNetto != null || vkBrutto != null || ekNetto != null || ekBrutto != null || kind === 'quote' || kind === 'order';
|
vkNetto != null || vkBrutto != null || ekNetto != null || ekBrutto != null || kind === 'quote' || kind === 'order';
|
||||||
|
|
||||||
@@ -697,6 +714,26 @@ class ManifestFormLine extends PureComponent {
|
|||||||
whiteSpace: 'nowrap',
|
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 */}
|
{/* EK Netto */}
|
||||||
<Tooltip
|
<Tooltip
|
||||||
title={
|
title={
|
||||||
@@ -867,6 +904,13 @@ class ManifestFormLine extends PureComponent {
|
|||||||
: null)
|
: null)
|
||||||
: 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 (
|
return (
|
||||||
<Box
|
<Box
|
||||||
sx={{
|
sx={{
|
||||||
@@ -1007,6 +1051,24 @@ class ManifestFormLine extends PureComponent {
|
|||||||
whiteSpace: 'nowrap',
|
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 && (
|
{priceNet != null && (
|
||||||
<Typography
|
<Typography
|
||||||
variant="caption"
|
variant="caption"
|
||||||
|
|||||||
Reference in New Issue
Block a user