diff --git a/src/i18n/locale/en.yml b/src/i18n/locale/en.yml index fbab06966..59cd1170a 100644 --- a/src/i18n/locale/en.yml +++ b/src/i18n/locale/en.yml @@ -444,10 +444,14 @@ ticket: sms: Sms notes: Notes sale: Sale + volume: Volume + observation: Notes ticketAdvance: Advance tickets futureTickets: Future tickets purchaseRequest: Purchase request weeklyTickets: Weekly tickets + services: Service + tracking: Tracking list: nickname: Nickname state: State diff --git a/src/i18n/locale/es.yml b/src/i18n/locale/es.yml index fec78d5e6..e35e3d41c 100644 --- a/src/i18n/locale/es.yml +++ b/src/i18n/locale/es.yml @@ -443,10 +443,14 @@ ticket: sms: Sms notes: Notas sale: Lineas del pedido + volume: Volumen + observation: Notas ticketAdvance: Adelantar tickets futureTickets: Tickets a futuro purchaseRequest: Petición de compra weeklyTickets: Tickets programados + services: Servicios + tracking: Estados list: nickname: Alias state: Estado diff --git a/src/pages/Ticket/Card/TicketCreateServiceType.vue b/src/pages/Ticket/Card/TicketCreateServiceType.vue new file mode 100644 index 000000000..d392ec206 --- /dev/null +++ b/src/pages/Ticket/Card/TicketCreateServiceType.vue @@ -0,0 +1,49 @@ + + + + + + + + + + + + + +es: + New service type: Nuevo tipo de servicio + diff --git a/src/pages/Ticket/Card/TicketCreateTracking.vue b/src/pages/Ticket/Card/TicketCreateTracking.vue new file mode 100644 index 000000000..399663571 --- /dev/null +++ b/src/pages/Ticket/Card/TicketCreateTracking.vue @@ -0,0 +1,86 @@ + + + (statesOptions = data)" + /> + (workersOptions = data)" + /> + emit('onRequestCreated')" + > + + + + + + + + + {{ opt.name }} + + + {{ opt.nickname }}, {{ opt.code }} + + + + + + + + + + + es: + Create tracking: Crear estado + diff --git a/src/pages/Ticket/Card/TicketDescriptor.vue b/src/pages/Ticket/Card/TicketDescriptor.vue index dfbcfc106..5fb312b28 100644 --- a/src/pages/Ticket/Card/TicketDescriptor.vue +++ b/src/pages/Ticket/Card/TicketDescriptor.vue @@ -71,7 +71,7 @@ const filter = { const data = ref(useCardDescription()); const setData = (entity) => - (data.value = useCardDescription(entity.client.name, entity.id)); + (data.value = useCardDescription(entity.client?.name, entity.id)); @@ -92,7 +92,7 @@ const setData = (entity) => {{ entity.clientFk }} - + @@ -109,8 +109,8 @@ const setData = (entity) => diff --git a/src/pages/Ticket/Card/TicketNotes.vue b/src/pages/Ticket/Card/TicketNotes.vue new file mode 100644 index 000000000..cfc0c2431 --- /dev/null +++ b/src/pages/Ticket/Card/TicketNotes.vue @@ -0,0 +1,106 @@ + + + + (observationTypes = data)" + auto-load + url="ObservationTypes" + /> + + + + + + + + + + {{ t('ticketNotes.removeNote') }} + + + + + + + {{ t('ticketNotes.addNote') }} + + + + + + + + diff --git a/src/pages/Ticket/Card/TicketService.vue b/src/pages/Ticket/Card/TicketService.vue new file mode 100644 index 000000000..4cc8207ef --- /dev/null +++ b/src/pages/Ticket/Card/TicketService.vue @@ -0,0 +1,190 @@ + + + + (ticketServiceOptions = data)" + auto-load + url="TicketServiceTypes" + /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/pages/Ticket/Card/TicketTracking.vue b/src/pages/Ticket/Card/TicketTracking.vue new file mode 100644 index 000000000..2ddb278fa --- /dev/null +++ b/src/pages/Ticket/Card/TicketTracking.vue @@ -0,0 +1,121 @@ + + + + + + + + + + + {{ row.user?.name }} + + + + + + + + + + + + + + {{ t('tracking.addState') }} + + + + diff --git a/src/pages/Ticket/Card/TicketVolume.vue b/src/pages/Ticket/Card/TicketVolume.vue new file mode 100644 index 000000000..93da31e53 --- /dev/null +++ b/src/pages/Ticket/Card/TicketVolume.vue @@ -0,0 +1,153 @@ + + + + applyVolumes(data)" + auto-load + /> + + + + + + {{ t('volume.type') }}: + {{ dashIfEmpty(packingType.description) }} + + + + {{ t('volume.volume') }}: {{ packingType.volume }} + + + + + + + + + {{ row.itemFk }} + + + + + + + + {{ row.item.name }} + {{ row.item.subName }} + + + + + + diff --git a/src/pages/Ticket/locale/en.yml b/src/pages/Ticket/locale/en.yml index 2c648e7f2..39aed4af7 100644 --- a/src/pages/Ticket/locale/en.yml +++ b/src/pages/Ticket/locale/en.yml @@ -1,3 +1,19 @@ +card: + search: Search tickets + searchInfo: You can search by ticket id or alias +volume: + item: Item + description: Description + packingType: Packing Type + quantity: Quantity + volumeQuantity: m³ per quantity + type: Type + volume: Volume +ticketNotes: + observationType: Observation type + description: Description + removeNote: Remove note + addNote: Add note ticketSale: id: Id visible: Visible @@ -113,9 +129,6 @@ basicData: negativesConfirmMessage: Negatives are going to be generated, are you sure you want to advance all the lines? chooseAnOption: Choose an option unroutedTicket: The ticket has been unrouted -card: - search: Search tickets - searchInfo: You can search by ticket id or alias purchaseRequest: id: Id description: Description @@ -136,3 +149,18 @@ weeklyTickets: salesperson: Salesperson search: Search weekly tickets searchInfo: Search weekly tickets by id or client id +service: + pay: Pay + description: Description + quantity: Quantity + price: Price + removeService: Remove service + newService: New service type + addService: Add service + quantityInfo: To create services with negative amounts mark the service on the source ticket and press the pay button. + createRefundSuccess: 'The following refund ticket have been created: { ticketId }' +tracking: + state: State + worker: Worker + created: Created + addState: Add state diff --git a/src/pages/Ticket/locale/es.yml b/src/pages/Ticket/locale/es.yml index 3ce4c0545..d5b50efc5 100644 --- a/src/pages/Ticket/locale/es.yml +++ b/src/pages/Ticket/locale/es.yml @@ -1,6 +1,34 @@ +service: + pay: Abonar + description: Descripción + quantity: Cantidad + price: Precio + removeService: Quitar servicio + newService: Nuevo tipo de servicio + addService: Añadir servicio + quantityInfo: Para crear sevicios con cantidades negativas marcar servicio en el ticket origen y apretar el boton abonar. + createRefundSuccess: 'Se ha creado siguiente ticket de abono: { ticketId }' +tracking: + state: Estado + worker: Trabajador + created: Fecha creación + addState: Añadir estado card: search: Buscar tickets searchInfo: Buscar tickets por identificador o alias +volume: + item: Artículo + description: Descripción + packingType: Encajado + quantity: Cantidad + volumeQuantity: m³ por cantidad + type: Tipo + volume: Volumen +ticketNotes: + observationType: Tipo de observación + description: Descripción + removeNote: Quitar nota + addNote: Añadir nota purchaseRequest: Id: Id description: Descripción @@ -112,8 +140,6 @@ futureTickets: moveTicketSuccess: Tickets movidos correctamente searchInfo: Buscar tickets por fecha futureTicket: Tickets a futuro -Search ticket: Buscar tickets -You can search by ticket id or alias: Puedes buscar por id o alias del ticket ticketSale: id: Id visible: Visible @@ -138,3 +164,5 @@ ticketSale: shipped: F. Envío agency: Agencia address: Consignatario +Search ticket: Buscar tickets +You can search by ticket id or alias: Puedes buscar por id o alias del ticket diff --git a/src/router/modules/ticket.js b/src/router/modules/ticket.js index 81ca405ee..1e635470b 100644 --- a/src/router/modules/ticket.js +++ b/src/router/modules/ticket.js @@ -19,6 +19,10 @@ export default { 'TicketSale', 'TicketLog', 'TicketPurchaseRequest', + 'TicketService', + 'TicketTracking', + 'TicketVolume', + 'TicketNotes', ], }, children: [ @@ -29,8 +33,8 @@ export default { redirect: { name: 'TicketList' }, children: [ { - name: 'TicketList', path: 'list', + name: 'TicketList', meta: { title: 'list', icon: 'view_list', @@ -38,8 +42,8 @@ export default { component: () => import('src/pages/Ticket/TicketList.vue'), }, { - name: 'TicketCreate', path: 'create', + name: 'TicketCreate', meta: { title: 'createTicket', icon: 'vn:ticketAdd', @@ -48,8 +52,8 @@ export default { component: () => import('src/pages/Ticket/TicketCreate.vue'), }, { - name: 'TicketWeekly', path: 'weekly', + name: 'TicketWeekly', meta: { title: 'weeklyTickets', icon: 'access_time', @@ -57,8 +61,8 @@ export default { component: () => import('src/pages/Ticket/TicketWeekly.vue'), }, { - name: 'TicketFuture', path: 'future', + name: 'TicketFuture', meta: { title: 'futureTickets', icon: 'keyboard_double_arrow_right', @@ -66,8 +70,8 @@ export default { component: () => import('src/pages/Ticket/TicketFuture.vue'), }, { - name: 'TicketAdvance', path: 'advance', + name: 'TicketAdvance', meta: { title: 'ticketAdvance', icon: 'keyboard_double_arrow_left', @@ -83,8 +87,8 @@ export default { redirect: { name: 'TicketSummary' }, children: [ { - name: 'TicketSummary', path: 'summary', + name: 'TicketSummary', meta: { title: 'summary', icon: 'launch', @@ -92,8 +96,8 @@ export default { component: () => import('src/pages/Ticket/Card/TicketSummary.vue'), }, { - name: 'TicketBasicData', path: 'basic-data', + name: 'TicketBasicData', meta: { title: 'basicData', icon: 'vn:settings', @@ -102,8 +106,8 @@ export default { import('src/pages/Ticket/Card/BasicData/TicketBasicDataView.vue'), }, { - name: 'TicketSale', path: 'sale', + name: 'TicketSale', meta: { title: 'sale', icon: 'vn:lines', @@ -120,6 +124,15 @@ export default { component: () => import('src/pages/Ticket/Card/TicketPurchaseRequest.vue'), }, + { + path: 'tracking', + name: 'TicketTracking', + meta: { + title: 'tracking', + icon: 'vn:eye', + }, + component: () => import('src/pages/Ticket/Card/TicketTracking.vue'), + }, { path: 'log', name: 'TicketLog', @@ -147,6 +160,34 @@ export default { }, component: () => import('src/pages/Ticket/Card/TicketSms.vue'), }, + + { + path: 'service', + name: 'TicketService', + meta: { + title: 'services', + icon: 'vn:services', + }, + component: () => import('src/pages/Ticket/Card/TicketService.vue'), + }, + { + path: 'volume', + name: 'TicketVolume', + meta: { + title: 'volume', + icon: 'vn:volume', + }, + component: () => import('src/pages/Ticket/Card/TicketVolume.vue'), + }, + { + path: 'observation', + name: 'TicketNotes', + meta: { + title: 'notes', + icon: 'vn:notes', + }, + component: () => import('src/pages/Ticket/Card/TicketNotes.vue'), + }, ], }, ],