diff --git a/src/containers/NewContractMember/pages/NewContractMemberSummary.jsx b/src/containers/NewContractMember/pages/NewContractMemberSummary.jsx index f5e14da2..f7b4da63 100644 --- a/src/containers/NewContractMember/pages/NewContractMemberSummary.jsx +++ b/src/containers/NewContractMember/pages/NewContractMemberSummary.jsx @@ -9,7 +9,9 @@ import Button from '@mui/material/Button' import { useTheme } from '@mui/material/styles' import Typography from '@mui/material/Typography' +import Stack from '@mui/material/Stack' import Grid from '@mui/material/Grid' +import Box from '@mui/material/Box' import Divider from '@mui/material/Divider' import FormControlLabel from '@mui/material/FormControlLabel' @@ -53,6 +55,9 @@ const NewContractMemberSummary = (props) => { const [loading, setLoading] = useState(false) const [prices, setPrices] = useState({}) + + const [estimatedMonthlykWh, setEstimatedMonthlykWh] = useState(null) + const [estimatedMonthlyTotalEur, setEstimatedMonthlyTotalEur] = useState(null) const [openGeneralTermsDialog, setOpenGeneralTermsDialog] = useState(false) const [showReviewLinks, setShowReviewLinks] = useState(false) @@ -403,6 +408,9 @@ const NewContractMemberSummary = (props) => { ) const cityId = values?.supply_point_address?.city?.id || null + const powers = powerFields.map( + (power) => String(Math.round(Number(power) * THOUSANDS_CONVERSION_FACTOR)) + ) getPrices({ tariff: @@ -410,11 +418,18 @@ const NewContractMemberSummary = (props) => { max_power: maxPower, vat: values.new_member?.nif ? values.new_member.nif : values.member.nif, cnae: values.supply_point.cnae, - city_id: cityId + city_id: cityId, + powers: powers, + pricelist_type: isTariffIndexed ? 'index' : 'periods' }) .then((response) => { const tariffPrices = response?.data['current'] + const estimatedMonthlykWh = response?.data['estimated_monthly_kwh'] + const estimatedMonthlyTotalEur = response?.data['estimated_monthly_total_eur'] + setPrices(tariffPrices) + setEstimatedMonthlykWh(estimatedMonthlykWh) + setEstimatedMonthlyTotalEur(estimatedMonthlyTotalEur) setLoading(false) }) .catch((error) => { @@ -424,9 +439,11 @@ const NewContractMemberSummary = (props) => { }, [ values.contract.power, values.contract.power_type, - values.new_member.nif, + values.new_member?.nif, + values.member?.nif, values.supply_point.cnae, - values?.supply_point_address?.city?.id + values?.supply_point_address?.city?.id, + isTariffIndexed ]) const handleCheckboxChange = async (event, fieldName) => { @@ -500,21 +517,48 @@ const NewContractMemberSummary = (props) => { )} + {estimatedMonthlykWh && ( + <> + + + + + + + {t('SIMULATION_PRICES_TITLE')} + + + + + + )} - - {t('SUMMARY_OTHER_CONCEPTS_TITLE')} - - - - + + + {t('SUMMARY_OTHER_CONCEPTS_TITLE')} + + + + diff --git a/src/i18n/locale-ca.json b/src/i18n/locale-ca.json index 2d903d20..25a1ddd1 100644 --- a/src/i18n/locale-ca.json +++ b/src/i18n/locale-ca.json @@ -860,5 +860,7 @@ "PRICES_ERROR_MISSING_DATA": "No hi ha dades disponibles per a aquesta data. Disculpa les molèsties!", "API_ERROR_FETCHING_DATA": "Malauradament, no podem mostrar ara la previsió de preus, a causa d’una incidència. Esperem que es pugui resoldre de seguida i poder mostrar-la al més aviat possible. Disculpa les molèsties!", "15YEARS_CAMPAIGN": "Celebrem 15 anys!", - "15YEARS_DESCRIPTION": "De 100 a 0 €: contracta la llum sense associar-te" + "15YEARS_DESCRIPTION": "De 100 a 0 €: contracta la llum sense associar-te", + "SIMULATION_PRICES_TITLE": "Preu estimat", + "SIMULATION_PRICES_BODY": "El consum mensual mitjà d'un contracte amb la teva potència és de {{ estimated_monthly_kwh }} kWh. Tenint en compte la tarifa escollida, el preu mitjà del mes passat i els impostos vigents, el cost estimat seria de {{ estimated_monthly_total_eur }} €. Aquest import és una estimació orientativa de la teva facturació mensual i pot variar segons la compensació d'excedents, perfils de consum i altres variables. No reflecteix l'import real final de la teva factura a Som Energia. Per a una comparativa més ajustada al teu consum final, escriu a hola@somenergia.coop i t'ajudarem encantades." } diff --git a/src/i18n/locale-es.json b/src/i18n/locale-es.json index 395b3ec7..0cc5b09a 100644 --- a/src/i18n/locale-es.json +++ b/src/i18n/locale-es.json @@ -860,5 +860,7 @@ "PRICES_ERROR_MISSING_DATA": "No hay datos disponibles para esta fecha. ¡Disculpa las molestias!", "API_ERROR_FETCHING_DATA": "Lamentablemente, no podemos mostrar ahora la previsión de precios, a causa de una incidencia. Esperamos que se pueda resolver en seguida y poder mostrarla lo más pronto posible. ¡Disculpa las molestias!", "15YEARS_CAMPAIGN": "¡Celebramos 15 años!", - "15YEARS_DESCRIPTION": "De 100 a 0 €: contrata la luz sin asociarte" + "15YEARS_DESCRIPTION": "De 100 a 0 €: contrata la luz sin asociarte", + "SIMULATION_PRICES_TITLE": "Precio estimado", + "SIMULATION_PRICES_BODY": "El consumo mensual medio de un contrato con tu potencia es de {{ estimated_monthly_kwh }} kWh. Teniendo en cuenta la tarifa escogida, el precio medio del mes pasado y los impuestos vigentes, el coste estimado sería de {{ estimated_monthly_total_eur }} €. Este importe es una estimación orientativa de tu facturación mensual y puede variar según la compensación de excedentes, perfiles de consumo y otras variables. No refleja el importe real final de tu factura a Som Energia. Para una comparativa más ajustada a tu consumo final, escribe a hola@somenergia.coop y te ayudaremos encantadas." } diff --git a/src/i18n/locale-eu.json b/src/i18n/locale-eu.json index bd04ef1e..62175338 100644 --- a/src/i18n/locale-eu.json +++ b/src/i18n/locale-eu.json @@ -859,5 +859,7 @@ "PRICES_ERROR_MISSING_DATA": "Ez dago egun honetako daturik. Barkatu eragozpenak!", "API_ERROR_FETCHING_DATA": "Tamalez, intzidentzia bat dela eta, une honetan ezin dugu erakutsi prezio-iragarpena. Espero dugu berehala konpontzea eta iragarpena lehenbailehen erakutsi ahal izatea. Barkatu eragozpenak!", "15YEARS_CAMPAIGN": "15 urte ospatzen ditugu!", - "15YEARS_DESCRIPTION": "100 ordez 0 €: kontratatu argia bazkidetu gabe" + "15YEARS_DESCRIPTION": "100 ordez 0 €: kontratatu argia bazkidetu gabe", + "SIMULATION_PRICES_TITLE": "", + "SIMULATION_PRICES_BODY": "" } diff --git a/src/i18n/locale-gl.json b/src/i18n/locale-gl.json index 31ae816e..8859bdc2 100644 --- a/src/i18n/locale-gl.json +++ b/src/i18n/locale-gl.json @@ -858,5 +858,7 @@ "PRICES_ERROR_MISSING_DATA": "Non hai datos dispoñibles para esta data. Desculpa as molestias!", "API_ERROR_FETCHING_DATA": "Lamentablemente, nestes intres non che podemos amosar a previsión de prezos debido a unha incidencia. Agardamos resolvelo axiña e poder amosala o antes posible. Desculpa as molestias!", "15YEARS_CAMPAIGN": "Celebramos 15 anos!", - "15YEARS_DESCRIPTION": "De 100 a 0 €: contrata a luz sen te asociares" + "15YEARS_DESCRIPTION": "De 100 a 0 €: contrata a luz sen te asociares", + "SIMULATION_PRICES_TITLE": "", + "SIMULATION_PRICES_BODY": "" } diff --git a/src/services/api.js b/src/services/api.js index 554185d1..3c8f7687 100644 --- a/src/services/api.js +++ b/src/services/api.js @@ -227,23 +227,35 @@ export const getPrices = async ({ max_power, vat = VAT, cnae = CNAE, - city_id + city_id, + powers, + pricelist_type, }) => { + + const params = new URLSearchParams() + + params.append('tariff', tariff) + params.append('max_power', max_power) + params.append('vat', vat) + params.append('cnae', cnae) + params.append('city_id', city_id) + + powers?.forEach((power) => { + params.append('powers', power) + }) + + if (pricelist_type) { + params.append('pricelist_type', pricelist_type) + } + return axios({ method: 'GET', url: `${WEBFORMS_API_URL}/data/prices`, - params: { - tariff, - max_power, - vat, - cnae, - city_id - } - }).then((response) => { - return response?.data - }) + params, + }).then((response) => response?.data) } + export const newContract = async (data) => { return axios({ method: 'POST',