3430-ticket_step-two ticket without negatives #823
|
@ -92,59 +92,53 @@ describe('Ticket Edit basic data path', () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
it(`should split ticket without negatives`, async() => {
|
it(`should split ticket without negatives`, async() => {
|
||||||
const tomorrow = new Date();
|
const newAgency = 'Silla247';
|
||||||
tomorrow.setDate(tomorrow.getDate() + 1);
|
const newDate = new Date();
|
||||||
|
newDate.setDate(newDate.getDate() + 1);
|
||||||
|
|
||||||
await page.accessToSearchResult('14');
|
await page.accessToSearchResult('14');
|
||||||
await page.accessToSection('ticket.card.basicData.stepOne');
|
await page.accessToSection('ticket.card.basicData.stepOne');
|
||||||
|
|
||||||
const originalDate = await page
|
await page.autocompleteSearch(selectors.ticketBasicData.agency, newAgency);
|
||||||
.waitToGetProperty(selectors.ticketDescriptor.descriptorDeliveryDate, 'innerText');
|
await page.pickDate(selectors.ticketBasicData.shipped, newDate);
|
||||||
const originalAgency = await page
|
|
||||||
.waitToGetProperty(selectors.ticketDescriptor.descriptorDeliveryAgency, 'innerText');
|
|
||||||
|
|
||||||
await page.autocompleteSearch(selectors.ticketBasicData.agency, 'Silla247');
|
|
||||||
await page.pickDate(selectors.ticketBasicData.shipped, tomorrow);
|
|
||||||
|
|
||||||
await page.waitToClick(selectors.ticketBasicData.nextStepButton);
|
await page.waitToClick(selectors.ticketBasicData.nextStepButton);
|
||||||
|
|
||||||
await page.waitToClick(selectors.ticketBasicData.withoutNegatives);
|
await page.waitToClick(selectors.ticketBasicData.withoutNegatives);
|
||||||
await page.waitToClick(selectors.ticketBasicData.finalizeButton);
|
await page.waitToClick(selectors.ticketBasicData.finalizeButton);
|
||||||
|
|
||||||
const resultDate = await page
|
await page.waitForState('ticket.card.summary');
|
||||||
.waitToGetProperty(selectors.ticketDescriptor.descriptorDeliveryDate, 'innerText');
|
|
||||||
const resultAgency = await page
|
|
||||||
.waitToGetProperty(selectors.ticketDescriptor.descriptorDeliveryAgency, 'innerText');
|
|
||||||
|
|
||||||
expect(resultDate).toEqual(originalDate);
|
const newTicketAgency = await page
|
||||||
expect(resultAgency).toEqual(originalAgency);
|
.waitToGetProperty(selectors.ticketDescriptor.descriptorDeliveryAgency, 'innerText');
|
||||||
|
const newTicketDate = await page
|
||||||
|
.waitToGetProperty(selectors.ticketDescriptor.descriptorDeliveryDate, 'innerText');
|
||||||
|
|
||||||
|
expect(newAgency).toEqual(newTicketAgency);
|
||||||
|
expect(newTicketDate).toContain(newDate.getDate());
|
||||||
});
|
});
|
||||||
|
|
||||||
it(`should new ticket have one line from splited ticket`, async() => {
|
it(`should new ticket have sale of old ticket`, async() => {
|
||||||
const tomorrow = new Date();
|
|
||||||
tomorrow.setDate(tomorrow.getDate() + 1);
|
|
||||||
|
|
||||||
const expectedDay = tomorrow.getDate();
|
|
||||||
const expectedMonth = tomorrow.getMonth() + 1;
|
|
||||||
const expectedYear = tomorrow.getFullYear();
|
|
||||||
|
|
||||||
await page.loginAndModule('employee', 'ticket');
|
|
||||||
await page.accessToSearchResult('29');
|
|
||||||
await page.accessToSection('ticket.card.sale');
|
await page.accessToSection('ticket.card.sale');
|
||||||
|
await page.waitForState('ticket.card.sale');
|
||||||
|
|
||||||
const item = await page.waitToGetProperty(selectors.ticketSales.firstSaleId, 'innerText');
|
const item = await page.waitToGetProperty(selectors.ticketSales.firstSaleId, 'innerText');
|
||||||
const agency = await page
|
|
||||||
.waitToGetProperty(selectors.ticketDescriptor.descriptorDeliveryAgency, 'innerText');
|
|
||||||
let date = await page
|
|
||||||
.waitToGetProperty(selectors.ticketDescriptor.descriptorDeliveryDate, 'innerText');
|
|
||||||
|
|
||||||
date = date.split(' ');
|
|
||||||
date = date[0].split('/');
|
|
||||||
|
|
||||||
expect(item).toEqual('4');
|
expect(item).toEqual('4');
|
||||||
expect(agency).toEqual('Silla247');
|
});
|
||||||
expect(parseInt(date[0])).toEqual(expectedDay);
|
|
||||||
expect(parseInt(date[1])).toEqual(expectedMonth);
|
it(`should old ticket have old date and agency`, async() => {
|
||||||
expect(parseInt(date[2])).toEqual(expectedYear);
|
const oldDate = new Date();
|
||||||
|
const oldAgency = 'Super-Man delivery';
|
||||||
|
|
||||||
|
await page.accessToSearchResult('14');
|
||||||
|
|
||||||
|
const oldTicketAgency = await page
|
||||||
|
.waitToGetProperty(selectors.ticketDescriptor.descriptorDeliveryAgency, 'innerText');
|
||||||
|
const oldTicketDate = await page
|
||||||
|
.waitToGetProperty(selectors.ticketDescriptor.descriptorDeliveryDate, 'innerText');
|
||||||
|
|
||||||
|
expect(oldTicketAgency).toEqual(oldAgency);
|
||||||
|
expect(oldTicketDate).toContain(oldDate.getDate());
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,30 +1,201 @@
|
||||||
{
|
{
|
||||||
"Name cannot be blank": "Name cannot be blank",
|
"Phone format is invalid": "El formato del teléfono no es correcto",
|
||||||
"Swift / BIC cannot be empty": "Swift / BIC cannot be empty",
|
"You are not allowed to change the credit": "No tienes privilegios para modificar el crédito",
|
||||||
"Street cannot be empty": "Street cannot be empty",
|
"Unable to mark the equivalence surcharge": "No se puede marcar el recargo de equivalencia",
|
||||||
"City cannot be empty": "City cannot be empty",
|
"The default consignee can not be unchecked": "No se puede desmarcar el consignatario predeterminado",
|
||||||
"Invalid email": "Invalid email",
|
"Unable to default a disabled consignee": "No se puede poner predeterminado un consignatario desactivado",
|
||||||
"Phone cannot be blank": "Phone cannot be blank",
|
"Can't be blank": "No puede estar en blanco",
|
||||||
|
"Invalid TIN": "NIF/CIF invalido",
|
||||||
|
"TIN must be unique": "El NIF/CIF debe ser único",
|
||||||
|
"A client with that Web User name already exists": "Ya existe un cliente con ese Usuario Web",
|
||||||
|
"Is invalid": "Is invalid",
|
||||||
|
"Quantity cannot be zero": "La cantidad no puede ser cero",
|
||||||
|
"Enter an integer different to zero": "Introduce un entero distinto de cero",
|
||||||
|
"Package cannot be blank": "El embalaje no puede estar en blanco",
|
||||||
|
"The company name must be unique": "La razón social debe ser única",
|
||||||
|
"Invalid email": "Correo electrónico inválido",
|
||||||
|
"The IBAN does not have the correct format": "El IBAN no tiene el formato correcto",
|
||||||
|
"That payment method requires an IBAN": "El método de pago seleccionado requiere un IBAN",
|
||||||
|
"That payment method requires a BIC": "El método de pago seleccionado requiere un BIC",
|
||||||
|
"State cannot be blank": "El estado no puede estar en blanco",
|
||||||
|
"Worker cannot be blank": "El trabajador no puede estar en blanco",
|
||||||
|
"Cannot change the payment method if no salesperson": "No se puede cambiar la forma de pago si no hay comercial asignado",
|
||||||
|
"can't be blank": "El campo no puede estar vacío",
|
||||||
|
"Observation type must be unique": "El tipo de observación no puede repetirse",
|
||||||
"The credit must be an integer greater than or equal to zero": "The credit must be an integer greater than or equal to zero",
|
"The credit must be an integer greater than or equal to zero": "The credit must be an integer greater than or equal to zero",
|
||||||
"The grade must be an integer greater than or equal to zero": "The grade must be an integer greater than or equal to zero",
|
"The grade must be similar to the last one": "El grade debe ser similar al último",
|
||||||
"Description should have maximum of 45 characters": "Description should have maximum of 45 characters",
|
"Only manager can change the credit": "Solo el gerente puede cambiar el credito de este cliente",
|
||||||
"Amount cannot be zero": "Amount cannot be zero",
|
"Name cannot be blank": "El nombre no puede estar en blanco",
|
||||||
"Period cannot be blank": "Period cannot be blank",
|
"Phone cannot be blank": "El teléfono no puede estar en blanco",
|
||||||
"Sample type cannot be blank": "Sample type cannot be blank",
|
"Period cannot be blank": "El periodo no puede estar en blanco",
|
||||||
"Cannot be blank": "Cannot be blank",
|
"Choose a company": "Selecciona una empresa",
|
||||||
"The social name cannot be empty": "The social name cannot be empty",
|
"Se debe rellenar el campo de texto": "Se debe rellenar el campo de texto",
|
||||||
"The nif cannot be empty": "The nif cannot be empty",
|
"Description should have maximum of 45 characters": "La descripción debe tener maximo 45 caracteres",
|
||||||
"Concept cannot be blank": "Concept cannot be blank",
|
"Cannot be blank": "El campo no puede estar en blanco",
|
||||||
"Enter an integer different to zero": "Enter an integer different to zero",
|
"The grade must be an integer greater than or equal to zero": "El grade debe ser un entero mayor o igual a cero",
|
||||||
"Package cannot be blank": "Package cannot be blank",
|
"Sample type cannot be blank": "El tipo de plantilla no puede quedar en blanco",
|
||||||
"State cannot be blank": "State cannot be blank",
|
"Description cannot be blank": "Se debe rellenar el campo de texto",
|
||||||
"Worker cannot be blank": "Worker cannot be blank",
|
"The new quantity should be smaller than the old one": "La nueva cantidad debe de ser menor que la anterior",
|
||||||
"Agency cannot be blank": "Agency cannot be blank",
|
"The value should not be greater than 100%": "El valor no debe de ser mayor de 100%",
|
||||||
|
"The value should be a number": "El valor debe ser un numero",
|
||||||
|
"This order is not editable": "Esta orden no se puede modificar",
|
||||||
|
"You can't create an order for a frozen client": "No puedes crear una orden para un cliente congelado",
|
||||||
|
"You can't create an order for a client that has a debt": "No puedes crear una orden para un cliente con deuda",
|
||||||
|
"is not a valid date": "No es una fecha valida",
|
||||||
|
"Barcode must be unique": "El código de barras debe ser único",
|
||||||
|
"The warehouse can't be repeated": "El almacén no puede repetirse",
|
||||||
|
"The tag can't be repeated": "El tag no puede repetirse",
|
||||||
|
"The observation type can't be repeated": "El tipo de observación no puede repetirse",
|
||||||
|
"A claim with that sale already exists": "Ya existe una reclamación para esta línea",
|
||||||
|
"You don't have enough privileges to change that field": "No tienes permisos para cambiar ese campo",
|
||||||
|
"Warehouse cannot be blank": "El almacén no puede quedar en blanco",
|
||||||
|
"Agency cannot be blank": "La agencia no puede quedar en blanco",
|
||||||
|
"You can't make changes on a client with verified data": "No puedes hacer cambios en un cliente con datos comprobados",
|
||||||
|
"This address doesn't exist": "Este consignatario no existe",
|
||||||
|
"You must delete the claim id %d first": "Antes debes borrar la reclamación %d",
|
||||||
|
"You don't have enough privileges": "No tienes suficientes permisos",
|
||||||
|
"Cannot check Equalization Tax in this NIF/CIF": "No se puede marcar RE en este NIF/CIF",
|
||||||
|
"You can't make changes on the basic data of an confirmed order or with rows": "No puedes cambiar los datos basicos de una orden con artículos",
|
||||||
|
"INVALID_USER_NAME": "El nombre de usuario solo debe contener letras minúsculas o, a partir del segundo carácter, números o subguiones, no esta permitido el uso de la letra ñ",
|
||||||
|
"You can't create a ticket for a frozen client": "No puedes crear un ticket para un cliente congelado",
|
||||||
|
"You can't create a ticket for a inactive client": "No puedes crear un ticket para un cliente inactivo",
|
||||||
|
"Tag value cannot be blank": "El valor del tag no puede quedar en blanco",
|
||||||
|
"ORDER_EMPTY": "Cesta vacía",
|
||||||
|
"You don't have enough privileges to do that": "No tienes permisos para cambiar esto",
|
||||||
|
"NO SE PUEDE DESACTIVAR EL CONSIGNAT": "NO SE PUEDE DESACTIVAR EL CONSIGNAT",
|
||||||
|
"Error. El NIF/CIF está repetido": "Error. El NIF/CIF está repetido",
|
||||||
|
"Street cannot be empty": "Dirección no puede estar en blanco",
|
||||||
|
"City cannot be empty": "Cuidad no puede estar en blanco",
|
||||||
|
"Code cannot be blank": "Código no puede estar en blanco",
|
||||||
|
"You cannot remove this department": "No puedes eliminar este departamento",
|
||||||
|
"The extension must be unique": "La extensión debe ser unica",
|
||||||
|
"The secret can't be blank": "La contraseña no puede estar en blanco",
|
||||||
|
"We weren't able to send this SMS": "No hemos podido enviar el SMS",
|
||||||
|
"This client can't be invoiced": "Este cliente no puede ser facturado",
|
||||||
|
"This ticket can't be invoiced": "Este ticket no puede ser facturado",
|
||||||
|
"You cannot add or modify services to an invoiced ticket": "No puedes añadir o modificar servicios a un ticket facturado",
|
||||||
|
"This ticket can not be modified": "Este ticket no puede ser modificado",
|
||||||
|
"The introduced hour already exists": "Esta hora ya ha sido introducida",
|
||||||
|
"INFINITE_LOOP": "Existe una dependencia entre dos Jefes",
|
||||||
|
"The sales of the current ticket can't be modified": "Las lineas de este ticket no pueden ser modificadas",
|
||||||
|
"The sales of the receiver ticket can't be modified": "Las lineas del ticket al que envias no pueden ser modificadas",
|
||||||
|
"NO_AGENCY_AVAILABLE": "No hay una zona de reparto disponible con estos parámetros",
|
||||||
|
"ERROR_PAST_SHIPMENT": "No puedes seleccionar una fecha de envío en pasado",
|
||||||
|
"The current ticket can't be modified": "El ticket actual no puede ser modificado",
|
||||||
|
"The current claim can't be modified": "La reclamación actual no puede ser modificada",
|
||||||
|
"The sales of this ticket can't be modified": "Las lineas de este ticket no pueden ser modificadas",
|
||||||
|
"Sale(s) blocked, contact production": "Linea(s) bloqueada(s), contacte con produccion",
|
||||||
|
"Please select at least one sale": "Por favor selecciona al menos una linea",
|
||||||
|
"All sales must belong to the same ticket": "Todas las lineas deben pertenecer al mismo ticket",
|
||||||
|
"NO_ZONE_FOR_THIS_PARAMETERS": "Para este día no hay ninguna zona configurada",
|
||||||
|
"This item doesn't exists": "El artículo no existe",
|
||||||
|
"NOT_ZONE_WITH_THIS_PARAMETERS": "Para este día no hay ninguna zona configurada",
|
||||||
|
"Extension format is invalid": "El formato de la extensión es inválido",
|
||||||
|
"Invalid parameters to create a new ticket": "Parámetros inválidos para crear un nuevo ticket",
|
||||||
|
"This item is not available": "Este artículo no está disponible",
|
||||||
|
"This postcode already exists": "Este código postal ya existe",
|
||||||
|
"Concept cannot be blank": "El concepto no puede quedar en blanco",
|
||||||
|
"File doesn't exists": "El archivo no existe",
|
||||||
|
"You don't have privileges to change the zone or for these parameters there are more than one shipping options, talk to agencies": "No tienes permisos para cambiar la zona o para esos parámetros hay más de una opción de envío, hable con las agencias",
|
||||||
|
"This ticket is already on weekly tickets": "Este ticket ya está en tickets programados",
|
||||||
|
"Ticket id cannot be blank": "El id de ticket no puede quedar en blanco",
|
||||||
|
"Weekday cannot be blank": "El día de la semana no puede quedar en blanco",
|
||||||
|
"You can't delete a confirmed order": "No puedes borrar un pedido confirmado",
|
||||||
|
"Can't create stowaway for this ticket": "No se puede crear un polizon para este ticket",
|
||||||
|
"The social name has an invalid format": "El nombre fiscal tiene un formato incorrecto",
|
||||||
|
"Invalid quantity": "Cantidad invalida",
|
||||||
|
"This postal code is not valid": "This postal code is not valid",
|
||||||
|
"is invalid": "is invalid",
|
||||||
|
"The postcode doesn't exist. Please enter a correct one": "El código postal no existe. Por favor, introduce uno correcto",
|
||||||
|
"The department name can't be repeated": "El nombre del departamento no puede repetirse",
|
||||||
|
"This phone already exists": "Este teléfono ya existe",
|
||||||
|
"You cannot move a parent to its own sons": "No puedes mover un elemento padre a uno de sus hijos",
|
||||||
|
"You can't create a claim for a removed ticket": "No puedes crear una reclamación para un ticket eliminado",
|
||||||
|
"You cannot delete a ticket that part of it is being prepared": "No puedes eliminar un ticket en el que una parte que está siendo preparada",
|
||||||
|
"You must delete all the buy requests first": "Debes eliminar todas las peticiones de compra primero",
|
||||||
|
"You should specify a date": "Debes especificar una fecha",
|
||||||
|
"You should specify at least a start or end date": "Debes especificar al menos una fecha de inicio o de fín",
|
||||||
|
"Start date should be lower than end date": "La fecha de inicio debe ser menor que la fecha de fín",
|
||||||
|
"You should mark at least one week day": "Debes marcar al menos un día de la semana",
|
||||||
|
"Swift / BIC can't be empty": "Swift / BIC no puede estar vacío",
|
||||||
|
"Customs agent is required for a non UEE member": "El agente de aduanas es requerido para los clientes extracomunitarios",
|
||||||
|
"Incoterms is required for a non UEE member": "El incoterms es requerido para los clientes extracomunitarios",
|
||||||
|
"Deleted sales from ticket": "He eliminado las siguientes lineas del ticket [{{ticketId}}]({{{ticketUrl}}}): {{{deletions}}}",
|
||||||
|
"Added sale to ticket": "He añadido la siguiente linea al ticket [{{ticketId}}]({{{ticketUrl}}}): {{{addition}}}",
|
||||||
|
"Changed sale discount": "He cambiado el descuento de las siguientes lineas al ticket [{{ticketId}}]({{{ticketUrl}}}): {{{changes}}}",
|
||||||
|
"Created claim": "He creado la reclamación [{{claimId}}]({{{claimUrl}}}) de las siguientes lineas del ticket [{{ticketId}}]({{{ticketUrl}}}): {{{changes}}}",
|
||||||
|
"Changed sale price": "He cambiado el precio de [{{itemId}} {{concept}}]({{{itemUrl}}}) ({{quantity}}) de {{oldPrice}}€ ➔ *{{newPrice}}€* del ticket [{{ticketId}}]({{{ticketUrl}}})",
|
||||||
|
"Changed sale quantity": "He cambiado la cantidad de [{{itemId}} {{concept}}]({{{itemUrl}}}) de {{oldQuantity}} ➔ *{{newQuantity}}* del ticket [{{ticketId}}]({{{ticketUrl}}})",
|
||||||
|
"State": "Estado",
|
||||||
|
"regular": "normal",
|
||||||
|
"reserved": "reservado",
|
||||||
|
"Changed sale reserved state": "He cambiado el estado reservado de las siguientes lineas al ticket [{{ticketId}}]({{{ticketUrl}}}): {{{changes}}}",
|
||||||
|
"Bought units from buy request": "Se ha comprado {{quantity}} unidades de [{{itemId}} {{concept}}]({{{urlItem}}}) para el ticket id [{{ticketId}}]({{{url}}})",
|
||||||
|
"Deny buy request": "Se ha rechazado la petición de compra para el ticket id [{{ticketId}}]({{{url}}}). Motivo: {{observation}}",
|
||||||
|
"MESSAGE_INSURANCE_CHANGE": "He cambiado el crédito asegurado del cliente [{{clientName}} ({{clientId}})]({{{url}}}) a *{{credit}} €*",
|
||||||
|
"Changed client paymethod": "He cambiado la forma de pago del cliente [{{clientName}} ({{clientId}})]({{{url}}})",
|
||||||
|
"Sent units from ticket": "Envio *{{quantity}}* unidades de [{{concept}} ({{itemId}})]({{{itemUrl}}}) a *\"{{nickname}}\"* provenientes del ticket id [{{ticketId}}]({{{ticketUrl}}})",
|
||||||
|
"Claim will be picked": "Se recogerá el género de la reclamación [({{claimId}})]({{{claimUrl}}}) del cliente *{{clientName}}*",
|
||||||
|
"Claim state has changed to incomplete": "Se ha cambiado el estado de la reclamación [({{claimId}})]({{{claimUrl}}}) del cliente *{{clientName}}* a *incompleta*",
|
||||||
|
"This ticket is not an stowaway anymore": "El ticket id [{{ticketId}}]({{{ticketUrl}}}) ha dejado de ser un polizón",
|
||||||
|
"Client checked as validated despite of duplication": "Cliente comprobado a pesar de que existe el cliente id {{clientId}}",
|
||||||
|
"ORDER_ROW_UNAVAILABLE": "No hay disponibilidad de este producto",
|
||||||
|
"Distance must be lesser than 1000": "La distancia debe ser inferior a 1000",
|
||||||
|
"This ticket is deleted": "Este ticket está eliminado",
|
||||||
|
"Unable to clone this travel": "No ha sido posible clonar este travel",
|
||||||
|
"This thermograph id already exists": "La id del termógrafo ya existe",
|
||||||
|
"Choose a date range or days forward": "Selecciona un rango de fechas o días en adelante",
|
||||||
|
"ORDER_ALREADY_CONFIRMED": "ORDER_ALREADY_CONFIRMED",
|
||||||
|
"Invalid password": "Invalid password",
|
||||||
|
"Password does not meet requirements": "Password does not meet requirements",
|
||||||
|
"Role already assigned": "Role already assigned",
|
||||||
|
"Invalid role name": "Invalid role name",
|
||||||
|
"Role name must be written in camelCase": "Role name must be written in camelCase",
|
||||||
|
"Email already exists": "Email already exists",
|
||||||
|
"User already exists": "User already exists",
|
||||||
|
"Absence change notification on the labour calendar": "Notificacion de cambio de ausencia en el calendario laboral",
|
||||||
|
"Created absence": "El empleado <strong>{{author}}</strong> ha añadido una ausencia de tipo '{{absenceType}}' a <a href='{{{workerUrl}}}'><strong>{{employee}}</strong></a> para el día {{dated}}.",
|
||||||
|
"Deleted absence": "El empleado <strong>{{author}}</strong> ha eliminado una ausencia de tipo '{{absenceType}}' a <a href='{{{workerUrl}}}'><strong>{{employee}}</strong></a> del día {{dated}}.",
|
||||||
|
"I have deleted the ticket id": "He eliminado el ticket id [{{id}}]({{{url}}})",
|
||||||
|
"I have restored the ticket id": "He restaurado el ticket id [{{id}}]({{{url}}})",
|
||||||
|
"You can only restore a ticket within the first hour after deletion": "Únicamente puedes restaurar el ticket dentro de la primera hora después de su eliminación",
|
||||||
|
"Changed this data from the ticket": "He cambiado estos datos del ticket [{{ticketId}}]({{{ticketUrl}}}): {{{changes}}}",
|
||||||
|
"agencyModeFk": "Agencia",
|
||||||
|
"clientFk": "Cliente",
|
||||||
|
"zoneFk": "Zona",
|
||||||
|
"warehouseFk": "Almacén",
|
||||||
|
"shipped": "F. envío",
|
||||||
|
"landed": "F. entrega",
|
||||||
|
"addressFk": "Consignatario",
|
||||||
|
"companyFk": "Empresa",
|
||||||
|
"The social name cannot be empty": "La razón social no puede quedar en blanco",
|
||||||
|
"The nif cannot be empty": "El NIF no puede quedar en blanco",
|
||||||
|
"You need to fill sage information before you check verified data": "Debes rellenar la información de sage antes de marcar datos comprobados",
|
||||||
|
"ASSIGN_ZONE_FIRST": "Asigna una zona primero",
|
||||||
|
"Amount cannot be zero": "El importe no puede ser cero",
|
||||||
|
"Company has to be official": "Empresa inválida",
|
||||||
|
"You can not select this payment method without a registered bankery account": "No se puede utilizar este método de pago si no has registrado una cuenta bancaria",
|
||||||
|
"Action not allowed on the test environment": "Esta acción no está permitida en el entorno de pruebas",
|
||||||
|
"The selected ticket is not suitable for this route": "El ticket seleccionado no es apto para esta ruta",
|
||||||
|
"Sorts whole route": "Reordena ruta entera",
|
||||||
|
"New ticket request has been created with price": "Se ha creado una nueva petición de compra '{{description}}' para el día *{{shipped}}*, con una cantidad de *{{quantity}}* y un precio de *{{price}} €*",
|
||||||
|
"New ticket request has been created": "Se ha creado una nueva petición de compra '{{description}}' para el día *{{shipped}}*, con una cantidad de *{{quantity}}*",
|
||||||
|
"Swift / BIC cannot be empty": "Swift / BIC no puede estar vacío",
|
||||||
|
"This BIC already exist.": "Este BIC ya existe.",
|
||||||
|
"That item doesn't exists": "Ese artículo no existe",
|
||||||
|
"There's a new urgent ticket:": "Hay un nuevo ticket urgente:",
|
||||||
|
"Invalid account": "Cuenta inválida",
|
||||||
|
"Compensation account is empty": "La cuenta para compensar está vacia",
|
||||||
|
"This genus already exist": "Este genus ya existe",
|
||||||
|
"This specie already exist": "Esta especie ya existe",
|
||||||
|
"Client assignment has changed": "He cambiado el comercial ~*\"<{{previousWorkerName}}>\"*~ por *\"<{{currentWorkerName}}>\"* del cliente [{{clientName}} ({{clientId}})]({{{url}}})",
|
||||||
|
"None": "Ninguno",
|
||||||
|
"The contract was not active during the selected date": "El contrato no estaba activo durante la fecha seleccionada",
|
||||||
|
"Cannot add more than one '1/2 day vacation'": "No puedes añadir más de un 'Vacaciones 1/2 dia'",
|
||||||
|
"This document already exists on this ticket": "Este documento ya existe en el ticket",
|
||||||
|
"Some of the selected tickets are not billable": "Algunos de los tickets seleccionados no son facturables",
|
||||||
|
"You can't invoice tickets from multiple clients": "No puedes facturar tickets de multiples clientes",
|
||||||
"nickname": "nickname",
|
"nickname": "nickname",
|
||||||
"shipped": "shipped",
|
|
||||||
"landed": "landed",
|
|
||||||
"isWithoutNegatives": "isWithoutNegatives",
|
|
||||||
"Changed this data from the ticket": "Changed this data from the ticket",
|
|
||||||
"INACTIVE_PROVIDER": "Proveedor inactivo",
|
"INACTIVE_PROVIDER": "Proveedor inactivo",
|
||||||
"This client is not invoiceable": "Este cliente no es facturable",
|
"This client is not invoiceable": "Este cliente no es facturable",
|
||||||
"serial non editable": "Esta serie no permite asignar la referencia",
|
"serial non editable": "Esta serie no permite asignar la referencia",
|
||||||
|
@ -47,5 +218,6 @@
|
||||||
"The worker has a marked absence that day": "El trabajador tiene marcada una ausencia ese día",
|
"The worker has a marked absence that day": "El trabajador tiene marcada una ausencia ese día",
|
||||||
"You can not modify is pay method checked": "No se puede modificar el campo método de pago validado",
|
"You can not modify is pay method checked": "No se puede modificar el campo método de pago validado",
|
||||||
"Can't transfer claimed sales": "No puedes transferir lineas reclamadas",
|
"Can't transfer claimed sales": "No puedes transferir lineas reclamadas",
|
||||||
"You don't have privileges to create pay back": "No tienes permisos para crear un abono"
|
"You don't have privileges to create pay back": "No tienes permisos para crear un abono",
|
||||||
|
"isWithoutNegatives": "isWithoutNegatives"
|
||||||
}
|
}
|
|
@ -175,7 +175,7 @@ module.exports = Self => {
|
||||||
// Force to unroute ticket
|
// Force to unroute ticket
|
||||||
const hasToBeUnrouted = true;
|
const hasToBeUnrouted = true;
|
||||||
const query = 'CALL vn.ticket_componentMakeUpdate(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)';
|
const query = 'CALL vn.ticket_componentMakeUpdate(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)';
|
||||||
const res = await Self.rawSql(query, [
|
let res = await Self.rawSql(query, [
|
||||||
args.id,
|
args.id,
|
||||||
args.clientFk,
|
args.clientFk,
|
||||||
args.nickname,
|
args.nickname,
|
||||||
|
@ -248,6 +248,7 @@ module.exports = Self => {
|
||||||
await models.Chat.sendCheckingPresence(ctx, salesPersonId, message);
|
await models.Chat.sendCheckingPresence(ctx, salesPersonId, message);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
res.id = args.id;
|
||||||
if (tx) await tx.commit();
|
if (tx) await tx.commit();
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
|
|
|
@ -111,6 +111,12 @@ module.exports = Self => {
|
||||||
};
|
};
|
||||||
|
|
||||||
// Get items movable
|
// Get items movable
|
||||||
|
const ticketOrigin = await models.Ticket.findById(args.id, null, myOptions);
|
||||||
|
const differenceShipped = ticketOrigin.shipped.getTime() != args.shipped.getTime();
|
||||||
|
const differenceWarehouse = ticketOrigin.warehouseFk != args.warehouseId;
|
||||||
|
|
||||||
|
salesObj.haveDifferences = differenceShipped || differenceWarehouse;
|
||||||
|
|
||||||
let query = `CALL ticket_getMovable(?,?,?)`;
|
let query = `CALL ticket_getMovable(?,?,?)`;
|
||||||
let params = [args.id, args.shipped, args.warehouseId];
|
let params = [args.id, args.shipped, args.warehouseId];
|
||||||
const [salesMovable] = await Self.rawSql(query, params, myOptions);
|
const [salesMovable] = await Self.rawSql(query, params, myOptions);
|
||||||
|
|
|
@ -15,6 +15,7 @@ describe('sale priceDifference()', () => {
|
||||||
ctx.args = {
|
ctx.args = {
|
||||||
id: 16,
|
id: 16,
|
||||||
landed: tomorrow,
|
landed: tomorrow,
|
||||||
|
shipped: tomorrow,
|
||||||
addressId: 126,
|
addressId: 126,
|
||||||
agencyModeId: 7,
|
agencyModeId: 7,
|
||||||
zoneId: 3,
|
zoneId: 3,
|
||||||
|
@ -45,6 +46,7 @@ describe('sale priceDifference()', () => {
|
||||||
ctx.args = {
|
ctx.args = {
|
||||||
id: 1,
|
id: 1,
|
||||||
landed: new Date(),
|
landed: new Date(),
|
||||||
|
shipped: new Date(),
|
||||||
addressId: 121,
|
addressId: 121,
|
||||||
zoneId: 3,
|
zoneId: 3,
|
||||||
warehouseId: 1
|
warehouseId: 1
|
||||||
|
@ -72,6 +74,7 @@ describe('sale priceDifference()', () => {
|
||||||
const ctx = {req: {accessToken: {userId: 1106}}};
|
const ctx = {req: {accessToken: {userId: 1106}}};
|
||||||
ctx.args = {
|
ctx.args = {
|
||||||
id: 11,
|
id: 11,
|
||||||
|
shipped: tomorrow,
|
||||||
landed: tomorrow,
|
landed: tomorrow,
|
||||||
addressId: 122,
|
addressId: 122,
|
||||||
agencyModeId: 7,
|
agencyModeId: 7,
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
<vn-tr>
|
<vn-tr>
|
||||||
<vn-th number>Item</vn-th>
|
<vn-th number>Item</vn-th>
|
||||||
<vn-th class="align-center">Description</vn-th>
|
<vn-th class="align-center">Description</vn-th>
|
||||||
<vn-th number>Movable</vn-th>
|
<vn-th ng-if="$ctrl.ticket.sale.haveDifferences" number>Movable</vn-th>
|
||||||
<vn-th number>Quantity</vn-th>
|
<vn-th number>Quantity</vn-th>
|
||||||
<vn-th number>Price (PPU)</vn-th>
|
<vn-th number>Price (PPU)</vn-th>
|
||||||
<vn-th number>New (PPU)</vn-th>
|
<vn-th number>New (PPU)</vn-th>
|
||||||
|
@ -32,7 +32,7 @@
|
||||||
tabindex="-1">
|
tabindex="-1">
|
||||||
</vn-fetched-tags>
|
</vn-fetched-tags>
|
||||||
</vn-td>
|
</vn-td>
|
||||||
<vn-td number>
|
<vn-td ng-if="$ctrl.ticket.sale.haveDifferences" number>
|
||||||
<span
|
<span
|
||||||
class="chip"
|
class="chip"
|
||||||
ng-class="{'alert': sale.quantity>sale.movable}">
|
ng-class="{'alert': sale.quantity>sale.movable}">
|
||||||
|
|
|
@ -67,6 +67,7 @@ class Controller extends Component {
|
||||||
ticketHaveNegatives() {
|
ticketHaveNegatives() {
|
||||||
let haveNegatives = false;
|
let haveNegatives = false;
|
||||||
let haveNotNegatives = false;
|
let haveNotNegatives = false;
|
||||||
|
const haveDifferences = this.ticket.sale.haveDifferences;
|
||||||
|
|
||||||
this.ticket.sale.items.forEach(item => {
|
this.ticket.sale.items.forEach(item => {
|
||||||
if (item.quantity > item.movable)
|
if (item.quantity > item.movable)
|
||||||
|
@ -76,7 +77,7 @@ class Controller extends Component {
|
||||||
});
|
});
|
||||||
|
|
||||||
this.ticket.withoutNegatives = false;
|
this.ticket.withoutNegatives = false;
|
||||||
this.haveNegatives = (haveNegatives && haveNotNegatives);
|
this.haveNegatives = (haveNegatives && haveNotNegatives && haveDifferences);
|
||||||
}
|
}
|
||||||
|
|
||||||
onSubmit() {
|
onSubmit() {
|
||||||
|
@ -102,13 +103,16 @@ class Controller extends Component {
|
||||||
isWithoutNegatives: this.ticket.withoutNegatives
|
isWithoutNegatives: this.ticket.withoutNegatives
|
||||||
};
|
};
|
||||||
|
|
||||||
this.$http.post(query, params).then(res => {
|
this.$http.post(query, params)
|
||||||
this.vnApp.showMessage(
|
.then(res => {
|
||||||
this.$t(`The ticket has been unrouted`)
|
this.ticketToMove = res.data.id;
|
||||||
);
|
this.vnApp.showMessage(
|
||||||
this.card.reload();
|
this.$t(`The ticket has been unrouted`)
|
||||||
this.$state.go('ticket.card.summary', {id: this.$params.id});
|
);
|
||||||
});
|
})
|
||||||
|
.finally(() => {
|
||||||
|
this.$state.go('ticket.card.summary', {id: this.ticketToMove});
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -66,7 +66,7 @@ describe('Ticket', () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('ticketHaveNegatives()', () => {
|
describe('ticketHaveNegatives()', () => {
|
||||||
it('should show if ticket have any negative and any not negative', () => {
|
it('should show if ticket have any negative, have differences, but not all sale are negative', () => {
|
||||||
controller.ticket = {
|
controller.ticket = {
|
||||||
sale: {
|
sale: {
|
||||||
items: [
|
items: [
|
||||||
|
@ -80,7 +80,8 @@ describe('Ticket', () => {
|
||||||
quantity: 1,
|
quantity: 1,
|
||||||
movable: 5
|
movable: 5
|
||||||
}
|
}
|
||||||
]
|
],
|
||||||
|
haveDifferences: true
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -88,6 +89,78 @@ describe('Ticket', () => {
|
||||||
|
|
||||||
expect(controller.haveNegatives).toEqual(true);
|
expect(controller.haveNegatives).toEqual(true);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should not show if ticket not have any negative', () => {
|
||||||
|
controller.ticket = {
|
||||||
|
sale: {
|
||||||
|
items: [
|
||||||
|
{
|
||||||
|
item: 1,
|
||||||
|
quantity: 2,
|
||||||
|
movable: 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
item: 2,
|
||||||
|
quantity: 2,
|
||||||
|
movable: 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
haveDifferences: true
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
controller.ticketHaveNegatives();
|
||||||
|
|
||||||
|
expect(controller.haveNegatives).toEqual(false);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should not show if all sale are negative', () => {
|
||||||
|
controller.ticket = {
|
||||||
|
sale: {
|
||||||
|
items: [
|
||||||
|
{
|
||||||
|
item: 1,
|
||||||
|
quantity: 2,
|
||||||
|
movable: 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
item: 2,
|
||||||
|
quantity: 2,
|
||||||
|
movable: 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
haveDifferences: true
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
controller.ticketHaveNegatives();
|
||||||
|
|
||||||
|
expect(controller.haveNegatives).toEqual(false);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should not show if ticket not have differences', () => {
|
||||||
|
controller.ticket = {
|
||||||
|
sale: {
|
||||||
|
items: [
|
||||||
|
{
|
||||||
|
item: 1,
|
||||||
|
quantity: 2,
|
||||||
|
movable: 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
item: 2,
|
||||||
|
quantity: 1,
|
||||||
|
movable: 2
|
||||||
|
}
|
||||||
|
],
|
||||||
|
haveDifferences: false
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
controller.ticketHaveNegatives();
|
||||||
|
|
||||||
|
expect(controller.haveNegatives).toEqual(false);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue