#7553 modified TicketExpedition & changes in ticket section #571

Merged
jon merged 79 commits from 7553_FixTicketExpedition into dev 2024-09-25 05:51:16 +00:00
14 changed files with 157 additions and 77 deletions
Showing only changes of commit 44d98865fe - Show all commits

View File

@ -63,7 +63,7 @@ globals:
shipped: F. envío
totalEntries: Ent. totales
amount: Importe
packages: Bultos
packages: Embalajes
download: Descargar
downloadPdf: Descargar PDF
selectRows: 'Seleccionar las { numberRows } filas(s)'
@ -265,7 +265,7 @@ globals:
tracking: Estados
components: Componentes
pictures: Fotos
packages: Bultos
packages: Embalajes
ldap: LDAP
samba: Samba
twoFactor: Doble factor
@ -484,7 +484,7 @@ ticket:
tracking: Estados
components: Componentes
pictures: Fotos
packages: Bultos
packages: Embalajes
list:
nickname: Alias
state: Estado

View File

@ -20,7 +20,6 @@ const { viewSummary } = useSummaryDialog();
const tableRef = ref();
const agencyList = ref([]);
const addressesList = ref([]);
const clientId = ref();
const columns = computed(() => [
{
@ -191,6 +190,7 @@ const getDateColor = (date) => {
formInitialData: {
active: true,
addressId: null,
clientFk: null,
},
}"
:user-params="{ showEmpty: false }"
@ -221,7 +221,7 @@ const getDateColor = (date) => {
<VnSelect
url="Clients"
:include="{ relation: 'addresses' }"
v-model="clientId"
v-model="data.clientFk"
:label="t('module.customer')"
@update:model-value="(id) => fetchClientAddress(id, data)"
/>

View File

@ -12,6 +12,7 @@ import VnInputTime from 'components/common/VnInputTime.vue';
import axios from 'axios';
import useNotify from 'src/composables/useNotify.js';
import { useValidator } from 'src/composables/useValidator';
import { toTimeFormat } from 'filters/date.js';
const $props = defineProps({
@ -23,7 +24,7 @@ const $props = defineProps({
});
const emit = defineEmits(['updateForm']);
const { validate } = useValidator();
const { notify } = useNotify();
const router = useRouter();
const { t } = useI18n();
@ -306,6 +307,7 @@ onMounted(() => onFormModelInit());
hide-selected
map-options
:required="true"
:rules="validate('basicData.client')"
>
<template #option="scope">
<QItem v-bind="scope.itemProps">
@ -326,6 +328,7 @@ onMounted(() => onFormModelInit());
hide-selected
map-options
:required="true"
:rules="validate('basicData.warehouse')"
/>
</VnRow>
<VnRow>
@ -338,6 +341,7 @@ onMounted(() => onFormModelInit());
hide-selected
map-options
:required="true"
:rules="validate('basicData.address')"
>
<template #option="scope">
<QItem v-bind="scope.itemProps">
@ -385,6 +389,7 @@ onMounted(() => onFormModelInit());
:label="t('basicData.alias')"
v-model="formData.nickname"
:required="true"
:rules="validate('basicData.alias')"
/>
</VnRow>
<VnRow class="row q-gutter-md q-mb-md no-wrap">
@ -397,6 +402,7 @@ onMounted(() => onFormModelInit());
hide-selected
map-options
:required="true"
:rules="validate('basicData.company')"
/>
<VnSelect
:label="t('basicData.agency')"
@ -407,6 +413,7 @@ onMounted(() => onFormModelInit());
hide-selected
map-options
@focus="agencyFetchRef.fetch()"
:rules="validate('basicData.agency')"
/>
<VnSelect
:label="t('basicData.zone')"
@ -421,6 +428,7 @@ onMounted(() => onFormModelInit());
map-options
:required="true"
@focus="zonesFetchRef.fetch()"
:rules="validate('basicData.zone')"
>
<template #option="scope">
<QItem v-bind="scope.itemProps">
@ -440,16 +448,19 @@ onMounted(() => onFormModelInit());
:label="t('basicData.shipped')"
v-model="formData.shipped"
:required="true"
:rules="validate('basicData.shipped')"
/>
<VnInputTime
:label="t('basicData.shippedHour')"
v-model="formData.shipped"
:required="true"
:rules="validate('basicData.shippedHour')"
/>
<VnInputDate
:label="t('basicData.landed')"
v-model="formData.landed"
:required="true"
:rules="validate('basicData.landed')"
/>
</VnRow>
</QForm>

View File

@ -221,7 +221,12 @@ function ticketFilter(ticket) {
size="md"
icon="vn:basketadd"
color="primary"
:to="{ name: 'OrderList' }"
:to="{
name: 'OrderList',
query: {
createForm: JSON.stringify({}),
jon marked this conversation as resolved Outdated

👀 {} en vez de clientFk: entity.clientFk

👀 {} en vez de clientFk: entity.clientFk
},
}"
>
<QTooltip>{{ t('ticket.card.newOrder') }}</QTooltip>
</QBtn>

View File

@ -100,10 +100,14 @@ const actions = {
jon marked this conversation as resolved Outdated

Para el evento remove, la seguynda notificacion deberia tener un tipo y no lo tiene, por tanto sale en gris y si tienes el tema oscuro...

Para el evento remove, la seguynda notificacion deberia tener un tipo y no lo tiene, por tanto sale en gris y si tienes el tema oscuro...
function openDeliveryNote(type = 'deliveryNote', documentType = 'pdf') {
const path = `Tickets/${ticket.value.id}/delivery-note-${documentType}`;
openReport(path, {
recipientId: ticket.value.clientFk,
type: type,
});
openReport(
path,
{
recipientId: ticket.value.clientFk,
type: type,
},
'_blank'
);
}
function sendDeliveryNoteConfirmation(type = 'deliveryNote', documentType = 'pdf') {

View File

@ -685,7 +685,9 @@ watch(
<template #column-itemFk="{ row }">
<VnSelect
v-if="row.isNew"
url="Items"
url="Items/WithName"
:fields="['id', 'name']"
:sort-by="['id DESC']"
:options="items"
option-label="name"
option-value="id"

View File

@ -104,7 +104,21 @@ const columns = computed(() => [
sortable: true,
align: 'left',
},
{
label: '',
name: 'actions',
align: 'left',
columnFilter: null,
},
]);
async function deleteService(row) {
const serviceId = row.id;
jon marked this conversation as resolved
Review

Mmm..si le doy al mas, pero luego le doy al delete no tengo id.
Salta error porque ejecuta peticion de axios cuando deberia eliminar de la tabla, no?

Mmm..si le doy al mas, pero luego le doy al delete no tengo id. Salta error porque ejecuta peticion de axios cuando deberia eliminar de la tabla, no?
const { data } = await axios.delete(`TicketServices/${serviceId}`);
if (data) notify('Service deleted successfully', 'positive');
ticketServiceCrudRef.value.reload();
}
</script>
<template>
@ -123,6 +137,8 @@ const columns = computed(() => [
:data-required="crudModelRequiredData"
auto-load
v-model:selected="selected"
:order="['description ASC']"
:default-remove="false"
>
<template #moreBeforeActions>
<QBtn
@ -180,6 +196,21 @@ const columns = computed(() => [
/>
</QTd>
</template>
<template #body-cell-actions="{ row }">
<QTd auto-width>
<QIcon
color="primary"
name="delete"
class="cursor-pointer"
size="sm"
@click.stop="deleteService(row)"
>
<QTooltip class="text-no-wrap">
{{ t('globals.delete') }}
</QTooltip>
</QIcon>
</QTd>
</template>
</QTable>
</template>
</CrudModel>
@ -187,3 +218,4 @@ const columns = computed(() => [
<QBtn fab color="primary" icon="add" @click="ticketServiceCrudRef.insert()" />
</QPageSticky>
</template>
ñ

View File

@ -260,15 +260,6 @@ function toTicketUrl(section) {
</VnLv>
<VnLv
:label="t('ticket.summary.consignee')"
:value="
entity.client.salesPersonUser.nickname +
' #' +
entity.client.salesPersonUser.id
"
>
</VnLv>
<VnLv
:label="t('ticket.summary.consigneeAddress')"
:value="formattedAddress()"
/>
</QCard>

View File

@ -59,6 +59,7 @@ const arrayData = useArrayData('AdvanceTickets', {
exprBuilder: exprBuilder,
limit: 0,
});
console.log('arrayData: ', arrayData);
const { store } = arrayData;
const tickets = computed(() =>
(store.data || []).map((ticket, index) => ({ ...ticket, index: index }))
@ -461,6 +462,7 @@ onMounted(async () => {
tomorrow.setDate(tomorrow.getDate() + 1);
userParams.dateFuture = tomorrow;
userParams.dateToAdvance = today;
userParams.scopeDays = 1;
userParams.warehouseFk = user.value.warehouseFk;
const filter = { limit: 0 };
await arrayData.addFilter({ filter, userParams });
@ -550,6 +552,7 @@ onMounted(async () => {
style="max-width: 99%"
>
<template #header="props">
{{ userParams.scopeDays }}
<QTr :props="props">
<QTh
class="horizontal-separator text-uppercase color-vn-label"

View File

@ -9,6 +9,7 @@ import VnInputDate from 'src/components/common/VnInputDate.vue';
import axios from 'axios';
import { onMounted } from 'vue';
import VnInputNumber from 'src/components/common/VnInputNumber.vue';
const { t } = useI18n();
const props = defineProps({
@ -116,6 +117,15 @@ onMounted(async () => await getItemPackingTypes());
</VnSelect>
</QItemSection>
</QItem>
<QItem>
<QItemSection>
<VnInputNumber
v-model="params.scopeDays"
:label="t('Days onward')"
is-outlined
/>
</QItemSection>
</QItem>
<QItem>
<QItemSection>
<QCheckbox

View File

@ -5,7 +5,7 @@ import { useRoute } from 'vue-router';
import { useStateStore } from 'stores/useStateStore';
import { useI18n } from 'vue-i18n';
import { useQuasar } from 'quasar';
import { toDate, toCurrency } from 'src/filters/index';
import { toDate, toCurrency, dashIfEmpty } from 'src/filters/index';
import useNotify from 'src/composables/useNotify';
import TicketSummary from './Card/TicketSummary.vue';
import VnSearchbar from 'src/components/ui/VnSearchbar.vue';
@ -21,6 +21,7 @@ import FetchData from 'src/components/FetchData.vue';
import CustomerDescriptorProxy from '../Customer/Card/CustomerDescriptorProxy.vue';
import ZoneDescriptorProxy from '../Zone/Card/ZoneDescriptorProxy.vue';
import { toTimeFormat } from 'src/filters/date';
import InvoiceOutDescriptorProxy from '../InvoiceOut/Card/InvoiceOutDescriptorProxy.vue';
const route = useRoute();
const { t } = useI18n();
@ -150,6 +151,11 @@ const columns = computed(() => [
},
columnClass: 'expand',
},
{
align: 'left',
name: 'refFk',
label: t('ticketList.ref'),
},
{
align: 'left',
name: 'zoneFk',
@ -477,59 +483,66 @@ function setReference(data) {
}"
>
<template #column-statusIcons="{ row }">
<QIcon
v-if="row.isTaxDataChecked === 0"
color="primary"
name="vn:no036"
size="xs"
>
<QTooltip>
{{ t('No verified data') }}
</QTooltip>
</QIcon>
<QIcon v-if="row.hasTicketRequest" color="primary" name="vn:claims" size="xs">
<QTooltip>
{{ t('Purchase request') }}
</QTooltip>
</QIcon>
<QIcon
v-if="row.itemShortage"
color="primary"
name="vn:unavailable"
size="xs"
>
<QTooltip>
{{ t('Not visible') }}
</QTooltip>
</QIcon>
<QIcon v-if="row.isFreezed" color="primary" name="vn:frozen" size="xs">
<QTooltip>
{{ t('Client frozen') }}
</QTooltip>
</QIcon>
<QIcon v-if="row.risk" color="primary" name="vn:risk" size="xs">
<QTooltip> {{ t('Risk') }}: {{ row.risk }} </QTooltip>
</QIcon>
<QIcon
v-if="row.hasComponentLack"
color="primary"
name="vn:components"
size="xs"
>
<QTooltip>
{{ t('Component lack') }}
</QTooltip>
</QIcon>
<QIcon
v-if="row.hasRounding"
color="primary"
name="vn:sync_problem"
size="xs"
>
<QTooltip>
{{ t('Rounding') }}
</QTooltip>
</QIcon>
<div class="q-gutter-x-xs">
<QIcon
v-if="row.isTaxDataChecked === 0"
color="primary"
name="vn:no036"
size="xs"
>
<QTooltip>
{{ t('No verified data') }}
</QTooltip>
</QIcon>
<QIcon
v-if="row.hasTicketRequest"
color="primary"
name="vn:buyrequest"
size="xs"
>
<QTooltip>
{{ t('Purchase request') }}
</QTooltip>
</QIcon>
<QIcon
v-if="row.itemShortage"
color="primary"
name="vn:unavailable"
size="xs"
>
<QTooltip>
{{ t('Not visible') }}
</QTooltip>
</QIcon>
<QIcon v-if="row.isFreezed" color="primary" name="vn:frozen" size="xs">
<QTooltip>
{{ t('Client frozen') }}
</QTooltip>
</QIcon>
<QIcon v-if="row.risk" color="primary" name="vn:risk" size="xs">
<QTooltip> {{ t('Risk') }}: {{ row.risk }} </QTooltip>
</QIcon>
<QIcon
v-if="row.hasComponentLack"
color="primary"
name="vn:components"
size="xs"
>
<QTooltip>
{{ t('Component lack') }}
</QTooltip>
</QIcon>
<QIcon
v-if="row.hasRounding"
color="primary"
name="sync_problem"
size="xs"
>
<QTooltip>
{{ t('Rounding') }}
</QTooltip>
</QIcon>
</div>
</template>
<template #column-salesPersonFk="{ row }">
<span class="link" @click.stop>
@ -566,9 +579,15 @@ function setReference(data) {
{{ row.state }}
</span>
</template>
<template #column-refFk="{ row }">
<span class="link" @click.stop>
{{ dashIfEmpty(row.refFk) }}
<InvoiceOutDescriptorProxy :id="row.invoiceOutId" />
</span>
</template>
<template #column-zoneFk="{ row }">
<span class="link" @click.stop>
{{ row.zoneName }}
{{ dashIfEmpty(row.zoneName) }}
<ZoneDescriptorProxy :id="row.zoneFk" />
</span>
</template>
@ -586,6 +605,7 @@ function setReference(data) {
<VnRow>
<VnSelect
url="Clients"
:fields="['id', 'name']"
:label="t('ticketList.client')"
v-model="data.clientId"
jon marked this conversation as resolved
Review

añadir order:id

añadir order:id
:options="clientsOptions"

View File

@ -270,3 +270,4 @@ ticketList:
closure: Closure
toLines: Go to lines
addressNickname: Address nickname
ref: Reference

View File

@ -273,3 +273,4 @@ ticketList:
closure: Cierre
toLines: Ir a lineas
addressNickname: Alias consignatario
ref: Referencia

View File

@ -198,7 +198,7 @@ export default {
name: 'TicketPackage',
meta: {
title: 'packages',
icon: 'vn:bin',
icon: 'vn:bucket',
},
component: () => import('src/pages/Ticket/Card/TicketPackage.vue'),
},