#6321 - Negative ticket #158

Open
jsegarra wants to merge 220 commits from 6321_negative_tickets into dev
6 changed files with 96 additions and 66 deletions
Showing only changes of commit 08f73acc3e - Show all commits

View File

@ -9,10 +9,10 @@ const props = defineProps({
}); });
const valueClass = computed(() => const valueClass = computed(() =>
props.value === 0 ? 'neutral' : props.value > 0 ? 'positive' : 'negative' props.value === 0 ? 'neutral' : props.value > 0 ? 'positive' : 'negative',
); );
const iconName = computed(() => const iconName = computed(() =>
props.value === 0 ? 'equal' : props.value > 0 ? 'arrow_upward' : 'arrow_downward' props.value === 0 ? 'equal' : props.value > 0 ? 'arrow_upward' : 'arrow_downward',
); );
const formattedValue = computed(() => props.value); const formattedValue = computed(() => props.value);
</script> </script>

View File

@ -190,7 +190,7 @@ const isSelectionAvailable = (itemProposal) => {
return byQuantity; return byQuantity;
}; };
jsegarra marked this conversation as resolved
Review

30 ?

30 ?
Review

Lo habia reemplazado arroba y faltaba esta

Lo habia reemplazado arroba y faltaba esta
const isDisabled = (row) => !isSelectionAvailable(row.value); const isDisabled = (row) => !isSelectionAvailable(row);
</script> </script>
<template> <template>
<VnTable <VnTable
@ -230,13 +230,16 @@ const isDisabled = (row) => !isSelectionAvailable(row.value);
color="primary" color="primary"
flat flat
dense dense
:disable="isDisabled(row)"
@click="change(row)"
:class="{ :class="{
'fill-icon': isSelected(row), 'fill-icon': isSelected(row),
}" }"
@click="change(row)"
:disable="!isSelectionAvailable(row)"
> >
<QTooltip> {{ isDisabled ? t('Disabled') : t('Enabled') }} </QTooltip> <QTooltip v-if="!isSelected(row)">
{{ t('Select to replace') }}</QTooltip
>
<QTooltip v-else> {{ t('Selected to replace') }}</QTooltip>
</QBtn> </QBtn>
<div <div
class="middle compatibility" class="middle compatibility"
@ -283,6 +286,7 @@ const isDisabled = (row) => !isSelectionAvailable(row.value);
</template> </template>
<template #column-price2="{ row }"> <template #column-price2="{ row }">
<div class="flex column items-center content-center"> <div class="flex column items-center content-center">
* {{ sales[0] }} **{{ row.price2 }}*
<VnStockValueDisplay :value="sales[0].price - row.price2" /> <VnStockValueDisplay :value="sales[0].price - row.price2" />
<span :class="[conditionalValuePrice(row.price2)]">{{ <span :class="[conditionalValuePrice(row.price2)]">{{
toCurrency(row.price2) toCurrency(row.price2)

View File

@ -7,6 +7,7 @@ import TicketTransferForm from './TicketTransferForm.vue';
import { toDateFormat } from 'src/filters/date.js'; import { toDateFormat } from 'src/filters/date.js';
import VnInputDate from 'src/components/common/VnInputDate.vue'; import VnInputDate from 'src/components/common/VnInputDate.vue';
import transferSales from './components/transferSales';
const $props = defineProps({ const $props = defineProps({
mana: { mana: {
@ -22,7 +23,7 @@ const $props = defineProps({
default: () => {}, default: () => {},
}, },
ticket: { ticket: {
type: Object, type: [Array, Object],
default: () => {}, default: () => {},
}, },
split: { split: {
@ -92,16 +93,25 @@ const handleRowClick = (row) => {
transferFormRef.value.transferSales(ticketId); transferFormRef.value.transferSales(ticketId);
} }
}; };
const split = () => {
const tickets = Array.isArray($props.ticket) ? $props.ticket : [$props.ticket];
tickets.forEach(transferSales);
};
</script> </script>
<template> <template>
<QPopupProxy ref="popupProxyRef" data-cy="ticketTransferPopup"> <QPopupProxy ref="popupProxyRef" data-cy="ticketTransferPopup">
<div class="flex row items-center q-ma-lg" v-if="$props.split"> <div class="flex row items-center q-ma-lg" v-if="$props.split">
<QBtn class="q-mr-sm" color="primary" label="Split"></QBtn> <QBtn class="q-mr-sm" color="primary" label="Split" @click="split"></QBtn>
<VnInputDate :label="$t('New date')" v-model="splitDate"></VnInputDate> <VnInputDate :label="$t('New date')" v-model="splitDate"></VnInputDate>
</div> </div>
<QSeparator class="q-my-lg" color="primary" /> <QSeparator class="q-my-lg" color="primary" />
<QCard class="full-width q-px-md" style="display: flex; width: 80vw"> <QCard
v-if="!$props.split"
class="full-width q-px-md"
style="display: flex; width: 80vw"
>
{{ ticket }}- {{ transfer }}
<QTable <QTable
:rows="transfer.sales" :rows="transfer.sales"
:columns="transferLinesColumns" :columns="transferLinesColumns"

View File

@ -0,0 +1,10 @@
export default async function ({ ticketId, sales }) {
const params = {
ticketId,
sales,
};
const { data } = await axios.post(`tickets/${ticketId}/transferSales`, params);
return data;
}

View File

@ -138,16 +138,17 @@ const filterTable = { stateFk: 0, warehouseFk: useState().getUser().value.wareho
data-cy="transferLines" data-cy="transferLines"
color="primary" color="primary"
icon="vn:splitline" icon="vn:splitline"
:disable="selectedRows.length < 1" :disable="!(selectedRows.length === 1)"
> >
<QTooltip>{{ t('ticketSale.transferLines') }} </QTooltip> <QTooltip>{{ t('ticketSale.transferLines') }} </QTooltip>
<TicketTransfer <TicketTransfer
ref="transferFormRef" ref="transferFormRef"
split="true" split="true"
class="full-width" class="full-width"
:ticket="selectedRows"
:transfer="{ :transfer="{
sales: selectedRows, sales: selectedRows,
lastActiveTickets: selectedRows.map((row) => row.ticketFk), lastActiveTickets: selectedRows.map((row) => row.id),
}" }"
></TicketTransfer> ></TicketTransfer>
</QBtn> </QBtn>

View File

@ -258,8 +258,8 @@ function onBuysFetched(data) {
<template #column-status="{ row }"> <template #column-status="{ row }">
<QTd style="width: 150px"> <QTd style="width: 150px">
<div class="icon-container">
<QIcon <QIcon
v-if="row.isBasket"
name="vn:basket" name="vn:basket"
color="primary" color="primary"
class="cursor-pointer" class="cursor-pointer"
@ -268,7 +268,6 @@ function onBuysFetched(data) {
<QTooltip>{{ t('negative.detail.isBasket') }}</QTooltip> <QTooltip>{{ t('negative.detail.isBasket') }}</QTooltip>
</QIcon> </QIcon>
<QIcon <QIcon
v-if="row.hasToIgnore"
name="star" name="star"
color="primary" color="primary"
class="cursor-pointer fill-icon" class="cursor-pointer fill-icon"
@ -277,7 +276,6 @@ function onBuysFetched(data) {
<QTooltip>{{ t('negative.detail.hasToIgnore') }}</QTooltip> <QTooltip>{{ t('negative.detail.hasToIgnore') }}</QTooltip>
</QIcon> </QIcon>
<QIcon <QIcon
v-if="row.hasSubstitution"
name="change_circle" name="change_circle"
color="primary" color="primary"
class="cursor-pointer" class="cursor-pointer"
@ -287,7 +285,6 @@ function onBuysFetched(data) {
t('negative.detail.hasSubstitution') t('negative.detail.hasSubstitution')
}}</QTooltip> </QIcon }}</QTooltip> </QIcon
><QIcon ><QIcon
v-if="row.isRookie"
name="vn:Person" name="vn:Person"
size="xs" size="xs"
color="primary" color="primary"
@ -296,7 +293,6 @@ function onBuysFetched(data) {
<QTooltip>{{ t('negative.detail.isRookie') }}</QTooltip> <QTooltip>{{ t('negative.detail.isRookie') }}</QTooltip>
</QIcon> </QIcon>
<QIcon <QIcon
v-if="row.peticionCompra"
name="vn:buyrequest" name="vn:buyrequest"
size="xs" size="xs"
color="primary" color="primary"
@ -305,14 +301,14 @@ function onBuysFetched(data) {
<QTooltip>{{ t('negative.detail.peticionCompra') }}</QTooltip> <QTooltip>{{ t('negative.detail.peticionCompra') }}</QTooltip>
</QIcon> </QIcon>
<QIcon <QIcon
v-if="row.turno"
name="vn:calendar" name="vn:calendar"
size="xs" size="xs"
color="primary" color="primary"
class="cursor-pointer" class="cursor-pointer"
> >
<QTooltip>{{ t('negative.detail.turno') }}</QTooltip> <QTooltip>{{ t('negative.detail.turno') }}</QTooltip>
</QIcon></QTd </QIcon>
</div></QTd
> >
</template> </template>
@ -351,6 +347,15 @@ function onBuysFetched(data) {
</VnTable> </VnTable>
</template> </template>
<style lang="scss" scoped> <style lang="scss" scoped>
.icon-container {
display: grid;
grid-template-columns: repeat(3, 0.2fr);
row-gap: 5px; /* Ajusta el espacio entre los iconos según sea necesario */
}
.icon-container > * {
width: 100%;
height: auto;
}
.list-enter-active, .list-enter-active,
.list-leave-active { .list-leave-active {
transition: all 1s ease; transition: all 1s ease;