Untitled
unknown
plain_text
a year ago
3.7 kB
7
Indexable
const setOfferVariant = ({
calc,
from,
to,
index,
setValue,
currentData,
}: {
from: string | Date;
to: string | Date;
calc: ReturnType<typeof formulas.filterPriceList>;
index: number;
setValue: UseFormSetValue<Slice>;
currentData: Slice['energyConsumptionPointsElectricity'][number];
}) => {
const filteredPriceList = Array.isArray(calc) ? calc : null;
if (!filteredPriceList) return;
// TODO: czy code czy inny klucz
const priceListName =
filteredPriceList?.[index]?.selectedPriceList?.code ?? '';
const product = filteredPriceList?.[index]?.selectedProduct ?? null;
if (product === null) {
setValue(
`energyConsumptionPointsElectricity.${index}.values`,
Array.from(
{
length:
Math.abs(
new Date(to).getFullYear() - new Date(from).getFullYear()
) + 1,
},
(_, i) => {
return {
year: new Date(from).getFullYear() + i,
sellingPrice: 0,
priceListNumber: '',
priceFromPriceList: 0,
marginMass: 0,
tradingFee: 0,
repurchasePrice: 0,
purchasePriceFromInstallation: 0,
gpPrice: 0,
minMargin: 0,
maxMargin: 0,
isPriceListAvailable: false,
};
}
)
);
}
if (from && to && product) {
setValue(
`energyConsumptionPointsElectricity.${index}.values`,
Array.from(
{
length:
Math.abs(
new Date(to).getFullYear() - new Date(from).getFullYear()
) + 1,
},
(_, i) => {
const periods = product?.periods ?? [];
let period;
if (periods) {
const startYear = dateFns.getYear(new Date(from));
const endYear = dateFns.getYear(new Date(to));
const isSameYear = startYear === endYear;
const currentYear = new Date(from).getFullYear() + i;
if (!isSameYear) {
period = periods.find(
(p) =>
currentYear >= new Date(p.start_date).getFullYear() &&
currentYear <= new Date(p.end_date).getFullYear() &&
new Date(p.start_date).getFullYear() !==
new Date(p.end_date).getFullYear()
);
if (!period) {
period = periods.find(
(p) =>
new Date(p.start_date).getFullYear() === currentYear &&
new Date(p.end_date).getFullYear() === currentYear
);
}
} else {
period = periods.find(
(p) =>
new Date(p.start_date).getFullYear() === currentYear &&
new Date(p.end_date).getFullYear() === currentYear
);
}
}
return {
year: new Date(from).getFullYear() + i,
sellingPrice: currentData?.values?.[i]?.sellingPrice ?? 0,
priceListNumber: priceListName,
priceFromPriceList: period?.price ?? 0,
marginMass: 0,
tradingFee: period?.trade_fee ?? 0,
repurchasePrice: period?.repurchase ?? 0,
purchasePriceFromInstallation: 0,
gpPrice: period?.price_gp ?? 0,
minMargin: period?.min_margin ?? 0,
maxMargin: period?.max_margin ?? 0,
isPriceListAvailable: !period ? false : true,
};
}
)
);
}
};Editor is loading...
Leave a Comment