|
|
@@ -75,6 +75,45 @@
|
|
|
return raw ? JSON.parse(raw) : null;
|
|
|
}
|
|
|
|
|
|
+ function pickNonEmptyString(source = {}, keys = []) {
|
|
|
+ if (!source || typeof source !== 'object') return '';
|
|
|
+ for (const key of keys) {
|
|
|
+ const value = source?.[key];
|
|
|
+ if (typeof value === 'string') {
|
|
|
+ const trimmed = value.trim();
|
|
|
+ if (trimmed) return trimmed;
|
|
|
+ } else if (value !== null && value !== undefined) {
|
|
|
+ return String(value);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return '';
|
|
|
+ }
|
|
|
+
|
|
|
+ function resolveCityValue(source = {}) {
|
|
|
+ return pickNonEmptyString(source, ['cityName', 'cityname', 'CITYNAME', 'token_city', 'tokenCity', 'city', 'CITY']);
|
|
|
+ }
|
|
|
+
|
|
|
+ function resolveMeasureUnitValue(source = {}) {
|
|
|
+ return pickNonEmptyString(source, [
|
|
|
+ 'measureUnitName',
|
|
|
+ 'measure_unit_name',
|
|
|
+ 'measureunitname',
|
|
|
+ 'MEASUREUNITNAME',
|
|
|
+ 'measureUnit',
|
|
|
+ 'measureunit',
|
|
|
+ 'unit',
|
|
|
+ 'UNIT'
|
|
|
+ ]);
|
|
|
+ }
|
|
|
+
|
|
|
+ function resolveCityData(order = {}) {
|
|
|
+ return resolveCityValue(order) || resolveCityValue(order?.raw ?? {});
|
|
|
+ }
|
|
|
+
|
|
|
+ function resolveMeasureUnitData(order = {}) {
|
|
|
+ return resolveMeasureUnitValue(order) || resolveMeasureUnitValue(order?.raw ?? {});
|
|
|
+ }
|
|
|
+
|
|
|
function formatOrderDetailKey(key = '') {
|
|
|
return key
|
|
|
.replace(/_/g, ' ')
|
|
|
@@ -98,10 +137,14 @@
|
|
|
|
|
|
function openOrderDetailModal(order = {}) {
|
|
|
if (!order) return;
|
|
|
+ const resolvedCity = resolveCityData(order);
|
|
|
+ const resolvedMeasureUnit = resolveMeasureUnitData(order);
|
|
|
orderDetailSelected = {
|
|
|
valor: order?.valor ?? order?.raw?.token_commodities_value ?? null,
|
|
|
quantidade: order?.quantidade ?? order?.raw?.orderbook_amount ?? null,
|
|
|
- city: order?.city ?? order?.raw?.token_city ?? '',
|
|
|
+ city: resolvedCity,
|
|
|
+ cityName: resolvedCity,
|
|
|
+ measureUnitName: resolvedMeasureUnit,
|
|
|
orderbookId: order?.orderbookId ?? order?.orderbook_id ?? order?.raw?.orderbook_id ?? null,
|
|
|
tokenExternalId: order?.tokenExternalId ?? order?.token_external_id ?? order?.raw?.token_external_id ?? '',
|
|
|
raw: order?.raw ?? order
|
|
|
@@ -130,11 +173,15 @@
|
|
|
const totalValue = Number(item?.token_commodities_value ?? item?.valor ?? 0);
|
|
|
const quantidade = Number(item?.orderbook_amount ?? item?.token_commodities_amount ?? item?.quantidade ?? 0);
|
|
|
const valorPorSaca = quantidade ? totalValue / quantidade : totalValue;
|
|
|
+ const resolvedCity = resolveCityValue(item);
|
|
|
+ const resolvedMeasureUnit = resolveMeasureUnitValue(item);
|
|
|
return {
|
|
|
valor: Number.isFinite(valorPorSaca) ? valorPorSaca : 0,
|
|
|
quantidade: Number.isFinite(quantidade) ? quantidade : 0,
|
|
|
total: Number.isFinite(totalValue) ? totalValue : 0,
|
|
|
- city: item?.token_city ?? item?.city ?? '',
|
|
|
+ city: resolvedCity,
|
|
|
+ cityName: resolvedCity,
|
|
|
+ measureUnitName: resolvedMeasureUnit,
|
|
|
orderbookId: item?.orderbook_id ?? item?.orderbookId ?? null,
|
|
|
tokenExternalId: item?.token_external_id ?? item?.tokenExternalId ?? '',
|
|
|
raw: item
|
|
|
@@ -434,6 +481,8 @@
|
|
|
valor: orderPaymentSelectedOrder.valor ?? null,
|
|
|
quantidade: orderPaymentSelectedOrder.quantidade ?? null,
|
|
|
city: orderPaymentSelectedOrder.city ?? '',
|
|
|
+ cityName: orderPaymentSelectedOrder.cityName ?? orderPaymentSelectedOrder.city ?? '',
|
|
|
+ measureUnitName: orderPaymentSelectedOrder.measureUnitName ?? '',
|
|
|
orderbookId: orderPaymentSelectedOrder.orderbookId ?? null,
|
|
|
tokenExternalId: orderPaymentSelectedOrder.tokenExternalId ?? ''
|
|
|
}
|
|
|
@@ -687,10 +736,14 @@
|
|
|
orderPaymentLoadingVisible = true;
|
|
|
orderPaymentError = '';
|
|
|
orderPaymentStatusMessage = 'Preparando QR Code...';
|
|
|
+ const resolvedCity = resolveCityData(order);
|
|
|
+ const resolvedMeasureUnit = resolveMeasureUnitData(order);
|
|
|
orderPaymentSelectedOrder = {
|
|
|
valor: order?.valor ?? order?.raw?.token_commodities_value ?? null,
|
|
|
quantidade: order?.quantidade ?? order?.raw?.orderbook_amount ?? null,
|
|
|
- city: order?.city ?? order?.raw?.token_city ?? '',
|
|
|
+ city: resolvedCity,
|
|
|
+ cityName: resolvedCity,
|
|
|
+ measureUnitName: resolvedMeasureUnit,
|
|
|
orderbookId,
|
|
|
tokenExternalId: order?.tokenExternalId ?? order?.token_external_id ?? order?.raw?.token_external_id ?? ''
|
|
|
};
|
|
|
@@ -1108,11 +1161,16 @@ $: displayPendingSells = pendingSells.map((o) => ({
|
|
|
</div>
|
|
|
<div class="flex justify-between">
|
|
|
<span>Quantidade</span>
|
|
|
- <span>{formatQty(orderDetailSelected.quantidade)}</span>
|
|
|
+ <span>
|
|
|
+ {formatQty(orderDetailSelected.quantidade)}
|
|
|
+ {#if orderDetailSelected.measureUnitName}
|
|
|
+ <span class="ml-1 text-xs text-gray-500 dark:text-gray-400">{orderDetailSelected.measureUnitName}</span>
|
|
|
+ {/if}
|
|
|
+ </span>
|
|
|
</div>
|
|
|
<div class="flex justify-between text-xs text-gray-500 dark:text-gray-400">
|
|
|
<span>Cidade</span>
|
|
|
- <span>{orderDetailSelected.city || 'Não informado'}</span>
|
|
|
+ <span>{orderDetailSelected.cityName || 'Não informado'}</span>
|
|
|
</div>
|
|
|
</div>
|
|
|
|