diff --git a/.gitignore b/.gitignore
index 213384ef5..617169f6f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -29,5 +29,5 @@ yarn-error.log*
*.sln
# Cypress directories and files
-/tests/cypress/videos
-/tests/cypress/screenshots
\ No newline at end of file
+/test/cypress/videos
+/test/cypress/screenshots
diff --git a/src/components/CrudModel.vue b/src/components/CrudModel.vue
index 940b72ff0..58b4146bf 100644
--- a/src/components/CrudModel.vue
+++ b/src/components/CrudModel.vue
@@ -1,6 +1,6 @@
diff --git a/src/components/ui/VnPaginate.vue b/src/components/ui/VnPaginate.vue
index 0111366f5..655f37059 100644
--- a/src/components/ui/VnPaginate.vue
+++ b/src/components/ui/VnPaginate.vue
@@ -78,6 +78,10 @@ const props = defineProps({
type: String,
default: '',
},
+ keyData: {
+ type: String,
+ default: undefined,
+ },
});
const emit = defineEmits(['onFetch', 'onPaginate', 'onChange']);
@@ -255,7 +259,7 @@ defineExpose({
:disable="disableInfiniteScroll || !store.hasMoreData"
v-bind="$attrs"
>
-
+
diff --git a/src/composables/useArrayData.js b/src/composables/useArrayData.js
index d7838d58e..3268939de 100644
--- a/src/composables/useArrayData.js
+++ b/src/composables/useArrayData.js
@@ -170,10 +170,9 @@ export function useArrayData(key, userOptions) {
async function addOrder(field, direction = 'ASC') {
const newOrder = field + ' ' + direction;
- let order = store.order || [];
- if (typeof order == 'string') order = [order];
+ const order = toArray(store.order);
- let index = order.findIndex((o) => o.split(' ')[0] === field);
+ let index = getOrderIndex(order, field);
if (index > -1) {
order[index] = newOrder;
} else {
@@ -190,16 +189,24 @@ export function useArrayData(key, userOptions) {
}
async function deleteOrder(field) {
- let order = store.order ?? [];
- if (typeof order == 'string') order = [order];
-
- const index = order.findIndex((o) => o.split(' ')[0] === field);
+ const order = toArray(store.order);
+ const index = getOrderIndex(order, field);
if (index > -1) order.splice(index, 1);
store.order = order;
fetch({});
}
+ function getOrderIndex(order, field) {
+ return order.findIndex((o) => o.split(' ')[0] === field);
+ }
+
+ function toArray(str = []) {
+ if (!str) return [];
+ if (Array.isArray(str)) return str;
+ if (typeof str === 'string') return str.split(',').map((item) => item.trim());
+ }
+
function sanitizerParams(params, exprBuilder) {
for (const param in params) {
if (params[param] === '' || params[param] === null) {
@@ -290,8 +297,7 @@ export function useArrayData(key, userOptions) {
Object.assign(params, store.userParams);
if (params.filter) params.filter.skip = store.skip;
- if (store?.order && typeof store?.order == 'string') store.order = [store.order];
- if (store.order?.length) params.filter.order = [...store.order];
+ if (store.order) params.filter.order = toArray(store.order);
else delete params.filter.order;
return { filter, params, limit: filter.limit };
diff --git a/src/css/app.scss b/src/css/app.scss
index 69aa7c6bd..7296b079f 100644
--- a/src/css/app.scss
+++ b/src/css/app.scss
@@ -312,11 +312,11 @@ input::-webkit-inner-spin-button {
}
.q-item > .q-item__section:has(.q-checkbox) {
- max-width: min-content;
+ max-width: fit-content;
}
.row > .column:has(.q-checkbox) {
- max-width: min-content;
+ max-width: fit-content;
}
.q-field__inner {
.q-field__control {
diff --git a/src/i18n/locale/en.yml b/src/i18n/locale/en.yml
index 1e22a07d4..8e458df97 100644
--- a/src/i18n/locale/en.yml
+++ b/src/i18n/locale/en.yml
@@ -1,10 +1,11 @@
globals:
lang:
es: Spanish
- en: English
- quantity: Quantity
+ en: English
language: Language
+ quantity: Quantity
entity: Entity
+ preview: Preview
user: User
details: Details
collapseMenu: Collapse lateral menu
@@ -36,7 +37,6 @@ globals:
confirm: Confirm
assign: Assign
back: Back
- downloadPdf: Download PDF
yes: 'Yes'
no: 'No'
noChanges: No changes to save
@@ -60,6 +60,7 @@ globals:
downloadCSVSuccess: CSV downloaded successfully
reference: Reference
agency: Agency
+ entry: Entry
warehouseOut: Warehouse Out
warehouseIn: Warehouse In
landed: Landed
@@ -68,11 +69,11 @@ globals:
amount: Amount
packages: Packages
download: Download
+ downloadPdf: Download PDF
selectRows: 'Select all { numberRows } row(s)'
allRows: 'All { numberRows } row(s)'
markAll: Mark all
requiredField: Required field
- valueCantBeEmpty: Value cannot be empty
class: clase
type: Type
reason: reason
@@ -82,6 +83,9 @@ globals:
warehouse: Warehouse
company: Company
fieldRequired: Field required
+ valueCantBeEmpty: Value cannot be empty
+ Value can't be blank: Value cannot be blank
+ Value can't be null: Value cannot be null
allowedFilesText: 'Allowed file types: { allowedContentTypes }'
smsSent: SMS sent
confirmDeletion: Confirm deletion
@@ -131,6 +135,26 @@ globals:
medium: Medium
big: Big
email: Email
+ supplier: Supplier
+ ticketList: Ticket List
+ created: Created
+ worker: Worker
+ now: Now
+ name: Name
+ new: New
+ comment: Comment
+ observations: Observations
+ goToModuleIndex: Go to module index
+ createInvoiceIn: Create invoice in
+ myAccount: My account
+ noOne: No one
+ maxTemperature: Max
+ minTemperature: Min
+ changePass: Change password
+ deleteConfirmTitle: Delete selected elements
+ changeState: Change state
+ raid: 'Raid {daysInForward} days'
+ isVies: Vies
pageTitles:
logIn: Login
addressEdit: Update address
@@ -152,13 +176,14 @@ globals:
subRoles: Subroles
inheritedRoles: Inherited Roles
customers: Customers
+ customerCreate: New customer
+ createCustomer: Create customer
+ createOrder: New order
list: List
webPayments: Web Payments
extendedList: Extended list
notifications: Notifications
defaulter: Defaulter
- customerCreate: New customer
- createOrder: New order
fiscalData: Fiscal data
billingData: Billing data
consignees: Consignees
@@ -194,27 +219,28 @@ globals:
claims: Claims
claimCreate: New claim
lines: Lines
- photos: Photos
development: Development
+ photos: Photos
action: Action
invoiceOuts: Invoice out
negativeBases: Negative Bases
globalInvoicing: Global invoicing
invoiceOutCreate: Create invoice out
+ order: Orders
+ orderList: List
+ orderCreate: New order
+ catalog: Catalog
+ volume: Volume
shelving: Shelving
shelvingList: Shelving List
shelvingCreate: New shelving
invoiceIns: Invoices In
invoiceInCreate: Create invoice in
vat: VAT
+ labeler: Labeler
dueDay: Due day
intrastat: Intrastat
corrective: Corrective
- order: Orders
- orderList: List
- orderCreate: New order
- catalog: Catalog
- volume: Volume
workers: Workers
workerCreate: New worker
department: Department
@@ -227,10 +253,10 @@ globals:
wagonsList: Wagons List
wagonCreate: Create wagon
wagonEdit: Edit wagon
+ wagonCounter: Trolley counter
typesList: Types List
typeCreate: Create type
typeEdit: Edit type
- wagonCounter: Trolley counter
roadmap: Roadmap
stops: Stops
routes: Routes
@@ -239,21 +265,16 @@ globals:
routeCreate: New route
RouteRoadmap: Roadmaps
RouteRoadmapCreate: Create roadmap
+ RouteExtendedList: Router
autonomous: Autonomous
suppliers: Suppliers
supplier: Supplier
- expedition: Expedition
- services: Service
- components: Components
- pictures: Pictures
- packages: Packages
- tracking: Tracking
- labeler: Labeler
supplierCreate: New supplier
accounts: Accounts
addresses: Addresses
agencyTerm: Agency agreement
travel: Travels
+ create: Create
extraCommunity: Extra community
travelCreate: New travel
history: Log
@@ -261,14 +282,13 @@ globals:
items: Items
diary: Diary
tags: Tags
- create: Create
- buyRequest: Buy requests
fixedPrice: Fixed prices
+ buyRequest: Buy requests
wasteBreakdown: Waste breakdown
itemCreate: New item
- barcode: Barcodes
tax: Tax
botanical: Botanical
+ barcode: Barcodes
itemTypeCreate: New item type
family: Item Type
lastEntries: Last entries
@@ -284,13 +304,20 @@ globals:
formation: Formation
locations: Locations
warehouses: Warehouses
- saleTracking: Sale tracking
roles: Roles
connections: Connections
acls: ACLs
mailForwarding: Mail forwarding
mailAlias: Mail alias
privileges: Privileges
+ observation: Notes
+ expedition: Expedition
+ saleTracking: Sale tracking
+ services: Service
+ tracking: Tracking
+ components: Components
+ pictures: Pictures
+ packages: Packages
ldap: LDAP
samba: Samba
twoFactor: Two factor
@@ -301,27 +328,12 @@ globals:
serial: Serial
medical: Mutual
pit: IRPF
- RouteExtendedList: Router
wasteRecalc: Waste recaclulate
operator: Operator
parking: Parking
- supplier: Supplier
- created: Created
- worker: Worker
- now: Now
- name: Name
- new: New
- comment: Comment
- observations: Observations
- goToModuleIndex: Go to module index
unsavedPopup:
title: Unsaved changes will be lost
subtitle: Are you sure exit without saving?
- createInvoiceIn: Create invoice in
- myAccount: My account
- noOne: No one
- maxTemperature: Max
- minTemperature: Min
params:
clientFk: Client id
salesPersonFk: Sales person
@@ -339,19 +351,13 @@ globals:
supplierFk: Supplier
supplierRef: Supplier ref
serial: Serial
- amount: Importe
+ amount: Amount
awbCode: AWB
correctedFk: Rectified
correctingFk: Rectificative
daysOnward: Days onward
countryFk: Country
companyFk: Company
- changePass: Change password
- setPass: Set password
- deleteConfirmTitle: Delete selected elements
- changeState: Change state
- raid: 'Raid {daysInForward} days'
- isVies: Vies
errors:
statusUnauthorized: Access denied
statusInternalServerError: An internal server error has ocurred
@@ -491,21 +497,6 @@ invoiceOut:
comercial: Comercial
errors:
downloadCsvFailed: CSV download failed
-shelving:
- list:
- parking: Parking
- priority: Priority
- newShelving: New Shelving
- summary:
- recyclable: Recyclable
-parking:
- pickingOrder: Picking order
- sector: Sector
- row: Row
- column: Column
- searchBar:
- info: You can search by parking code
- label: Search parking...
department:
chat: Chat
bossDepartment: Boss Department
@@ -697,6 +688,9 @@ supplier:
consumption:
entry: Entry
travel:
+ search: Search travel
+ searchInfo: You can search by travel id or name
+ id: Id
travelList:
tableVisibleColumns:
ref: Reference
@@ -727,62 +721,6 @@ travel:
destination: Destination
thermograph: Thermograph
travelFileDescription: 'Travel id { travelId }'
-item:
- descriptor:
- buyer: Buyer
- color: Color
- category: Category
- available: Available
- warehouseText: 'Calculated on the warehouse of { warehouseName }'
- itemDiary: Item diary
- list:
- id: Identifier
- stems: Stems
- category: Category
- typeName: Type
- isActive: Active
- userName: Buyer
- weightByPiece: Weight/Piece
- stemMultiplier: Multiplier
- fixedPrice:
- itemFk: Item ID
- groupingPrice: Grouping price
- packingPrice: Packing price
- hasMinPrice: Has min price
- minPrice: Min price
- started: Started
- ended: Ended
- create:
- priority: Priority
- buyRequest:
- requester: Requester
- requested: Requested
- attender: Atender
- achieved: Achieved
- concept: Concept
- summary:
- otherData: Other data
- tax: Tax
- botanical: Botanical
- barcode: Barcode
- completeName: Complete name
- family: Familiy
- stems: Stems
- multiplier: Multiplier
- buyer: Buyer
- doPhoto: Do photo
- intrastatCode: Intrastat code
- ref: Reference
- relevance: Relevance
- weight: Weight (gram)/stem
- units: Units/box
- expense: Expense
- generic: Generic
- recycledPlastic: Recycled plastic
- nonRecycledPlastic: Non recycled plastic
- minSalesQuantity: Min sales quantity
- genus: Genus
- specie: Specie
components:
topbar: {}
itemsFilterPanel:
diff --git a/src/i18n/locale/es.yml b/src/i18n/locale/es.yml
index 0d308bd84..f59821f28 100644
--- a/src/i18n/locale/es.yml
+++ b/src/i18n/locale/es.yml
@@ -5,6 +5,7 @@ globals:
language: Idioma
quantity: Cantidad
entity: Entidad
+ preview: Vista previa
user: Usuario
details: Detalles
collapseMenu: Contraer menú lateral
@@ -54,11 +55,12 @@ globals:
today: Hoy
yesterday: Ayer
dateFormat: es-ES
- noSelectedRows: No tienes ninguna línea seleccionada
microsip: Abrir en MicroSIP
+ noSelectedRows: No tienes ninguna línea seleccionada
downloadCSVSuccess: Descarga de CSV exitosa
reference: Referencia
agency: Agencia
+ entry: Entrada
warehouseOut: Alm. salida
warehouseIn: Alm. entrada
landed: F. entrega
@@ -133,6 +135,26 @@ globals:
medium: Mediano/a
big: Grande
email: Correo
+ supplier: Proveedor
+ ticketList: Listado de tickets
+ created: Fecha creación
+ worker: Trabajador
+ now: Ahora
+ name: Nombre
+ new: Nuevo
+ comment: Comentario
+ observations: Observaciones
+ goToModuleIndex: Ir al índice del módulo
+ createInvoiceIn: Crear factura recibida
+ myAccount: Mi cuenta
+ noOne: Nadie
+ maxTemperature: Máx
+ minTemperature: Mín
+ changePass: Cambiar contraseña
+ deleteConfirmTitle: Eliminar los elementos seleccionados
+ changeState: Cambiar estado
+ raid: 'Redada {daysInForward} días'
+ isVies: Vies
pageTitles:
logIn: Inicio de sesión
addressEdit: Modificar consignatario
@@ -155,17 +177,17 @@ globals:
inheritedRoles: Roles heredados
customers: Clientes
customerCreate: Nuevo cliente
+ createCustomer: Crear cliente
createOrder: Nuevo pedido
list: Listado
webPayments: Pagos Web
extendedList: Listado extendido
notifications: Notificaciones
defaulter: Morosos
- createCustomer: Crear cliente
fiscalData: Datos fiscales
billingData: Forma de pago
consignees: Consignatarios
- 'address-create': Nuevo consignatario
+ address-create: Nuevo consignatario
notes: Notas
credits: Créditos
greuges: Greuges
@@ -231,10 +253,10 @@ globals:
wagonsList: Listado vagones
wagonCreate: Crear tipo
wagonEdit: Editar tipo
+ wagonCounter: Contador de carros
typesList: Listado tipos
typeCreate: Crear tipo
typeEdit: Editar tipo
- wagonCounter: Contador de carros
roadmap: Troncales
stops: Paradas
routes: Rutas
@@ -243,8 +265,8 @@ globals:
routeCreate: Nueva ruta
RouteRoadmap: Troncales
RouteRoadmapCreate: Crear troncal
- autonomous: Autónomos
RouteExtendedList: Enrutador
+ autonomous: Autónomos
suppliers: Proveedores
supplier: Proveedor
supplierCreate: Nuevo proveedor
@@ -309,23 +331,9 @@ globals:
wasteRecalc: Recalcular mermas
operator: Operario
parking: Parking
- supplier: Proveedor
- created: Fecha creación
- worker: Trabajador
- now: Ahora
- name: Nombre
- new: Nuevo
- comment: Comentario
- observations: Observaciones
- goToModuleIndex: Ir al índice del módulo
unsavedPopup:
title: Los cambios que no haya guardado se perderán
subtitle: ¿Seguro que quiere salir sin guardar?
- createInvoiceIn: Crear factura recibida
- myAccount: Mi cuenta
- noOne: Nadie
- maxTemperature: Máx
- minTemperature: Mín
params:
clientFk: Id cliente
salesPersonFk: Comercial
@@ -348,12 +356,6 @@ globals:
packing: ITP
countryFk: País
companyFk: Empresa
- changePass: Cambiar contraseña
- setPass: Establecer contraseña
- deleteConfirmTitle: Eliminar los elementos seleccionados
- changeState: Cambiar estado
- raid: 'Redada {daysInForward} días'
- isVies: Vies
errors:
statusUnauthorized: Acceso denegado
statusInternalServerError: Ha ocurrido un error interno del servidor
@@ -448,11 +450,15 @@ ticket:
attender: Consignatario
create:
address: Dirección
-invoiceOut:
- card:
- issued: Fecha emisión
- customerCard: Ficha del cliente
- ticketList: Listado de tickets
+order:
+ field:
+ salesPersonFk: Comercial
+ form:
+ clientFk: Cliente
+ addressFk: Dirección
+ agencyModeFk: Agencia
+ list:
+ newOrder: Nuevo Pedido
summary:
issued: Fecha
dued: Fecha límite
@@ -463,47 +469,6 @@ invoiceOut:
fee: Cuota
tickets: Tickets
totalWithVat: Importe
- globalInvoices:
- errors:
- chooseValidClient: Selecciona un cliente válido
- chooseValidCompany: Selecciona una empresa válida
- chooseValidPrinter: Selecciona una impresora válida
- chooseValidSerialType: Selecciona una tipo de serie válida
- fillDates: La fecha de la factura y la fecha máxima deben estar completas
- invoiceDateLessThanMaxDate: La fecha de la factura no puede ser menor que la fecha máxima
- invoiceWithFutureDate: Existe una factura con una fecha futura
- noTicketsToInvoice: No existen tickets para facturar
- criticalInvoiceError: Error crítico en la facturación proceso detenido
- invalidSerialTypeForAll: El tipo de serie debe ser global cuando se facturan todos los clientes
- table:
- addressId: Id dirección
- streetAddress: Dirección fiscal
- statusCard:
- percentageText: '{getPercentage}% {getAddressNumber} de {getNAddresses}'
- pdfsNumberText: '{nPdfs} de {totalPdfs} PDFs'
- negativeBases:
- clientId: Id cliente
- base: Base
- active: Activo
- hasToInvoice: Facturar
- verifiedData: Datos comprobados
- comercial: Comercial
- errors:
- downloadCsvFailed: Error al descargar CSV
-shelving:
- list:
- parking: Parking
- priority: Prioridad
- newShelving: Nuevo Carro
- summary:
- recyclable: Reciclable
-parking:
- pickingOrder: Orden de recogida
- row: Fila
- column: Columna
- searchBar:
- info: Puedes buscar por código de parking
- label: Buscar parking...
department:
chat: Chat
bossDepartment: Jefe de departamento
@@ -693,6 +658,9 @@ supplier:
consumption:
entry: Entrada
travel:
+ search: Buscar envío
+ searchInfo: Buscar envío por id o nombre
+ id: Id
travelList:
tableVisibleColumns:
ref: Referencia
@@ -723,62 +691,6 @@ travel:
destination: Destino
thermograph: Termógrafo
travelFileDescription: 'Id envío { travelId }'
-item:
- descriptor:
- buyer: Comprador
- color: Color
- category: Categoría
- available: Disponible
- warehouseText: 'Calculado sobre el almacén de { warehouseName }'
- itemDiary: Registro de compra-venta
- list:
- id: Identificador
- stems: Tallos
- category: Reino
- typeName: Tipo
- isActive: Activo
- weightByPiece: Peso (gramos)/tallo
- userName: Comprador
- stemMultiplier: Multiplicador
- fixedPrice:
- itemFk: ID Artículo
- groupingPrice: Precio grouping
- packingPrice: Precio packing
- hasMinPrice: Tiene precio mínimo
- minPrice: Precio min
- started: Inicio
- ended: Fin
- create:
- priority: Prioridad
- summary:
- otherData: Otros datos
- tax: IVA
- botanical: Botánico
- barcode: Código de barras
- completeName: Nombre completo
- family: Familia
- stems: Tallos
- multiplier: Multiplicador
- buyer: Comprador
- doPhoto: Hacer foto
- intrastatCode: Código intrastat
- ref: Referencia
- relevance: Relevancia
- weight: Peso (gramos)/tallo
- units: Unidades/caja
- expense: Gasto
- generic: Genérico
- recycledPlastic: Plástico reciclado
- nonRecycledPlastic: Plástico no reciclado
- minSalesQuantity: Cantidad mínima de venta
- genus: Genus
- specie: Specie
- buyRequest:
- requester: Solicitante
- requested: Solicitado
- attender: Comprador
- achieved: Conseguido
- concept: Concepto
components:
topbar: {}
itemsFilterPanel:
diff --git a/src/pages/Customer/Card/CustomerConsumption.vue b/src/pages/Customer/Card/CustomerConsumption.vue
index 640e37ed3..f0d8dea47 100644
--- a/src/pages/Customer/Card/CustomerConsumption.vue
+++ b/src/pages/Customer/Card/CustomerConsumption.vue
@@ -152,7 +152,8 @@ const updateDateParams = (value, params) => {
v-if="campaignList"
data-key="CustomerConsumption"
url="Clients/consumption"
- :order="['itemTypeFk', 'itemName', 'itemSize', 'description']"
+ :order="['itemTypeFk', 'itemName', 'itemSize', 'description']"
+ :filter="{ where: { clientFk: route.params.id } }"
:columns="columns"
search-url="consumption"
:user-params="userParams"
diff --git a/src/pages/Customer/Card/CustomerDescriptor.vue b/src/pages/Customer/Card/CustomerDescriptor.vue
index cb49109d0..4a064843a 100644
--- a/src/pages/Customer/Card/CustomerDescriptor.vue
+++ b/src/pages/Customer/Card/CustomerDescriptor.vue
@@ -187,14 +187,18 @@ const debtWarning = computed(() => {
- {{ t('Go to user') }}
+ {{ t('globals.pageTitles.createOrder') }}
{
};
const clientFk = {
ticket: 'clientId',
- order: 'clientFk',
};
const key = clientFk[type];
if (!key) return;
@@ -70,11 +69,6 @@ const openCreateForm = (type) => {
{{ t('globals.pageTitles.createTicket') }}
-
-
- {{ t('globals.pageTitles.createOrder') }}
-
-
{{ t('Send SMS') }}
diff --git a/src/pages/Customer/Card/CustomerUnpaid.vue b/src/pages/Customer/Card/CustomerUnpaid.vue
index 18b12c60c..f76e35821 100644
--- a/src/pages/Customer/Card/CustomerUnpaid.vue
+++ b/src/pages/Customer/Card/CustomerUnpaid.vue
@@ -50,7 +50,8 @@ const filterClientFindOne = {
>
-
+
diff --git a/src/pages/Customer/CustomerList.vue b/src/pages/Customer/CustomerList.vue
index f6458fd64..f345fcda3 100644
--- a/src/pages/Customer/CustomerList.vue
+++ b/src/pages/Customer/CustomerList.vue
@@ -408,7 +408,7 @@ function handleLocation(data, location) {
order: ['id DESC'],
}"
>
-
+
diff --git a/src/pages/Customer/Defaulter/CustomerDefaulter.vue b/src/pages/Customer/Defaulter/CustomerDefaulter.vue
index 7b9cb67f7..eca2ad596 100644
--- a/src/pages/Customer/Defaulter/CustomerDefaulter.vue
+++ b/src/pages/Customer/Defaulter/CustomerDefaulter.vue
@@ -11,14 +11,14 @@ import VnInput from 'src/components/common/VnInput.vue';
import CustomerDefaulterAddObservation from './CustomerDefaulterAddObservation.vue';
import DepartmentDescriptorProxy from 'src/pages/Department/Card/DepartmentDescriptorProxy.vue';
import VnTable from 'src/components/VnTable/VnTable.vue';
+import { useArrayData } from 'src/composables/useArrayData';
const { t } = useI18n();
const quasar = useQuasar();
const dataRef = ref(null);
-const balanceDueTotal = ref(0);
const selected = ref([]);
-
+const arrayData = useArrayData('CustomerDefaulter');
const columns = computed(() => [
{
align: 'left',
@@ -165,26 +165,37 @@ const viewAddObservation = (rowsSelected) => {
});
};
-const onFetch = async (data) => {
- balanceDueTotal.value = data.reduce((acc, { amount = 0 }) => acc + amount, 0);
-};
-
function exprBuilder(param, value) {
switch (param) {
- case 'clientFk':
- return { [`d.${param}`]: value };
- case 'creditInsurance':
- case 'amount':
- case 'workerFk':
- case 'departmentFk':
- case 'countryFk':
- case 'payMethod':
case 'salesPersonFk':
+ case 'creditInsurance':
+ case 'countryFk':
+ return { [`c.${param}`]: value };
+ case 'payMethod':
+ return { [`c.payMethodFk`]: value };
+ case 'workerFk':
+ return { [`co.${param}`]: value };
+ case 'departmentFk':
+ return { [`wd.${param}`]: value };
+ case 'amount':
+ case 'clientFk':
return { [`d.${param}`]: value };
case 'created':
return { 'd.created': { between: dateRange(value) } };
case 'defaulterSinced':
return { 'd.defaulterSinced': { between: dateRange(value) } };
+ case 'isWorker': {
+ if (value == undefined) return;
+ const search = value ? 'worker' : { neq: 'worker' };
+ return { 'c.businessTypeFk': search };
+ }
+ case 'hasRecovery': {
+ if (value == undefined) return;
+ const search = value ? null : { neq: null };
+ return { 'r.finished': search };
+ }
+ case 'observation':
+ return { 'co.text': { like: `%${value}%` } };
}
}
@@ -192,7 +203,7 @@ function exprBuilder(param, value) {
-
+
diff --git a/src/pages/Customer/components/CustomerSamplesCreate.vue b/src/pages/Customer/components/CustomerSamplesCreate.vue
index 665e136e4..754693672 100644
--- a/src/pages/Customer/components/CustomerSamplesCreate.vue
+++ b/src/pages/Customer/components/CustomerSamplesCreate.vue
@@ -214,7 +214,7 @@ const toCustomerSamples = () => {
diff --git a/src/pages/Entry/EntryList.vue b/src/pages/Entry/EntryList.vue
index 641042156..3172c6d0e 100644
--- a/src/pages/Entry/EntryList.vue
+++ b/src/pages/Entry/EntryList.vue
@@ -205,7 +205,7 @@ const columns = computed(() => [
userFilter: entryFilter,
}"
>
-
+
@@ -231,7 +231,7 @@ const columns = computed(() => [
>
{{
t(
- 'entry.list.tableVisibleColumns.isExcludedFromAvailable'
+ 'entry.list.tableVisibleColumns.isExcludedFromAvailable',
)
}}
diff --git a/src/pages/InvoiceOut/Card/InvoiceOutCard.vue b/src/pages/InvoiceOut/Card/InvoiceOutCard.vue
index 17b4216da..93e3fe042 100644
--- a/src/pages/InvoiceOut/Card/InvoiceOutCard.vue
+++ b/src/pages/InvoiceOut/Card/InvoiceOutCard.vue
@@ -1,19 +1,11 @@
-
diff --git a/src/pages/InvoiceOut/InvoiceOutList.vue b/src/pages/InvoiceOut/InvoiceOutList.vue
index 09873642d..b121bc6ea 100644
--- a/src/pages/InvoiceOut/InvoiceOutList.vue
+++ b/src/pages/InvoiceOut/InvoiceOutList.vue
@@ -3,7 +3,6 @@ import { ref, computed, watchEffect } from 'vue';
import { useI18n } from 'vue-i18n';
import VnSelect from 'src/components/common/VnSelect.vue';
import VnInputDate from 'src/components/common/VnInputDate.vue';
-import VnSearchbar from 'src/components/ui/VnSearchbar.vue';
import VnSubToolbar from 'src/components/ui/VnSubToolbar.vue';
import { useSummaryDialog } from 'src/composables/useSummaryDialog';
import { usePrintService } from 'src/composables/usePrintService';
@@ -12,12 +11,12 @@ import InvoiceOutSummary from './Card/InvoiceOutSummary.vue';
import { toCurrency, toDate } from 'src/filters/index';
import { QBtn } from 'quasar';
import axios from 'axios';
-import RightMenu from 'src/components/common/RightMenu.vue';
import InvoiceOutFilter from './InvoiceOutFilter.vue';
import VnRow from 'src/components/ui/VnRow.vue';
import VnRadio from 'src/components/common/VnRadio.vue';
import VnInput from 'src/components/common/VnInput.vue';
import CustomerDescriptorProxy from '../Customer/Card/CustomerDescriptorProxy.vue';
+import VnSection from 'src/components/common/VnSection.vue';
const { t } = useI18n();
const { viewSummary } = useSummaryDialog();
@@ -30,9 +29,11 @@ const MODEL = 'InvoiceOuts';
const { openReport } = usePrintService();
const addressOptions = ref([]);
const selectedOption = ref('ticket');
+const dataKey = 'InvoiceOutList';
+
async function fetchClientAddress(id) {
const { data } = await axios.get(
- `Clients/${id}/addresses?filter[order]=isActive DESC`
+ `Clients/${id}/addresses?filter[order]=isActive DESC`,
);
addressOptions.value = data;
}
@@ -180,223 +181,239 @@ watchEffect(selectedRows);
-
-
-
-
-
-
-
-
-
- {{ t('downloadPdf') }}
-
-
-
-
-
-
- {{ row.clientSocialName }}
-
-
+
+
-
-
-
-
-
-
+
+
+
+
+ {{ t('globals.downloadPdf') }}
+
+
+
+
+
+
+ {{ row.clientSocialName }}
+
+
+
+
+
+
+
+
+
-
+
-
-
-
+
+
+
+
+
+
+ #{{ scope.opt?.id }} -
+ {{ scope.opt?.name }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{
+ `${
+ !scope.opt
+ ?.isActive
+ ? t(
+ 'inactive',
+ )
+ : ''
+ } `
+ }}
+ {{
+ scope.opt?.nickname
+ }}
+
+ ,
+ {{
+ scope.opt?.street
+ }},
+ {{ scope.opt?.city }},
+ {{
+ scope.opt
+ ?.province
+ ?.name
+ }}
+ -
+ {{
+ scope.opt
+ ?.agencyMode
+ ?.name
+ }}
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
- #{{ scope.opt?.id }} -
- {{ scope.opt?.name }}
-
-
-
-
-
-
-
-
+
+
+
-
-
-
-
- {{
- `${
- !scope.opt?.isActive
- ? t('inactive')
- : ''
- } `
- }}
- {{
- scope.opt?.nickname
- }}
-
- , {{ scope.opt?.street }},
- {{ scope.opt?.city }},
- {{
- scope.opt?.province?.name
- }}
- -
- {{
- scope.opt?.agencyMode
- ?.name
- }}
-
-
-
-
-
-
-
+ class="q-my-none q-mr-md"
+ />
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+ {{ scope.opt?.code }} -
+ {{ scope.opt?.description }}
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
- {{ scope.opt?.code }} -
- {{ scope.opt?.description }}
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
+