Merge branch 'dev' into 7543-StandarizeDescriptors
gitea/salix-front/pipeline/pr-dev This commit looks good
Details
gitea/salix-front/pipeline/pr-dev This commit looks good
Details
This commit is contained in:
commit
6bf2a8c2f6
|
@ -60,7 +60,7 @@ const emit = defineEmits(['refresh', 'clear', 'search', 'init', 'remove']);
|
||||||
const arrayData = useArrayData($props.dataKey, {
|
const arrayData = useArrayData($props.dataKey, {
|
||||||
exprBuilder: $props.exprBuilder,
|
exprBuilder: $props.exprBuilder,
|
||||||
searchUrl: $props.searchUrl,
|
searchUrl: $props.searchUrl,
|
||||||
navigate: {},
|
navigate: $props.redirect ? {} : null,
|
||||||
});
|
});
|
||||||
const route = useRoute();
|
const route = useRoute();
|
||||||
const store = arrayData.store;
|
const store = arrayData.store;
|
||||||
|
|
|
@ -78,6 +78,7 @@ async function insert() {
|
||||||
ref="vnPaginateRef"
|
ref="vnPaginateRef"
|
||||||
class="show"
|
class="show"
|
||||||
v-bind="$attrs"
|
v-bind="$attrs"
|
||||||
|
search-url="notes"
|
||||||
>
|
>
|
||||||
<template #body="{ rows }">
|
<template #body="{ rows }">
|
||||||
<TransitionGroup name="list" tag="div" class="column items-center full-width">
|
<TransitionGroup name="list" tag="div" class="column items-center full-width">
|
||||||
|
|
|
@ -73,7 +73,6 @@ export function useArrayData(key = useRoute().meta.moduleName, userOptions) {
|
||||||
const filter = {
|
const filter = {
|
||||||
order: store.order,
|
order: store.order,
|
||||||
limit: store.limit,
|
limit: store.limit,
|
||||||
skip: store.skip,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
let exprFilter;
|
let exprFilter;
|
||||||
|
@ -88,7 +87,7 @@ export function useArrayData(key = useRoute().meta.moduleName, userOptions) {
|
||||||
}
|
}
|
||||||
|
|
||||||
Object.assign(filter, store.userFilter, exprFilter);
|
Object.assign(filter, store.userFilter, exprFilter);
|
||||||
Object.assign(store.filter, filter);
|
Object.assign(store.filter, { ...filter, skip: store.skip });
|
||||||
const params = {
|
const params = {
|
||||||
filter: JSON.stringify(store.filter),
|
filter: JSON.stringify(store.filter),
|
||||||
};
|
};
|
||||||
|
|
|
@ -850,6 +850,7 @@ worker:
|
||||||
calendar: Calendar
|
calendar: Calendar
|
||||||
timeControl: Time control
|
timeControl: Time control
|
||||||
locker: Locker
|
locker: Locker
|
||||||
|
balance: Balance
|
||||||
formation: Formation
|
formation: Formation
|
||||||
list:
|
list:
|
||||||
name: Name
|
name: Name
|
||||||
|
@ -931,6 +932,13 @@ worker:
|
||||||
remark: Bonficado
|
remark: Bonficado
|
||||||
hasDiploma: Diploma
|
hasDiploma: Diploma
|
||||||
imageNotFound: Image not found
|
imageNotFound: Image not found
|
||||||
|
balance:
|
||||||
|
tableVisibleColumns:
|
||||||
|
paymentDate: Date
|
||||||
|
incomeType: Type
|
||||||
|
debit: Debt
|
||||||
|
credit: Have
|
||||||
|
concept: Concept
|
||||||
wagon:
|
wagon:
|
||||||
pageTitles:
|
pageTitles:
|
||||||
wagons: Wagons
|
wagons: Wagons
|
||||||
|
|
|
@ -846,6 +846,7 @@ worker:
|
||||||
calendar: Calendario
|
calendar: Calendario
|
||||||
timeControl: Control de horario
|
timeControl: Control de horario
|
||||||
locker: Taquilla
|
locker: Taquilla
|
||||||
|
balance: Balance
|
||||||
formation: Formación
|
formation: Formación
|
||||||
list:
|
list:
|
||||||
name: Nombre
|
name: Nombre
|
||||||
|
@ -918,6 +919,13 @@ worker:
|
||||||
remark: Bonficado
|
remark: Bonficado
|
||||||
hasDiploma: Diploma
|
hasDiploma: Diploma
|
||||||
imageNotFound: No se ha encontrado la imagen
|
imageNotFound: No se ha encontrado la imagen
|
||||||
|
balance:
|
||||||
|
tableVisibleColumns:
|
||||||
|
paymentDate: Fecha
|
||||||
|
incomeType: Tipo
|
||||||
|
debit: Debe
|
||||||
|
credit: Haber
|
||||||
|
concept: Concepto
|
||||||
wagon:
|
wagon:
|
||||||
pageTitles:
|
pageTitles:
|
||||||
wagons: Vagones
|
wagons: Vagones
|
||||||
|
|
|
@ -119,7 +119,7 @@ const departments = ref();
|
||||||
emit-value
|
emit-value
|
||||||
hide-selected
|
hide-selected
|
||||||
map-options
|
map-options
|
||||||
option-label="country"
|
option-label="name"
|
||||||
option-value="id"
|
option-value="id"
|
||||||
outlined
|
outlined
|
||||||
rounded
|
rounded
|
||||||
|
|
|
@ -219,6 +219,7 @@ const useLang = (values) => {
|
||||||
:expr-builder="exprBuilder"
|
:expr-builder="exprBuilder"
|
||||||
:custom-tags="['tagGroups']"
|
:custom-tags="['tagGroups']"
|
||||||
@remove="clearFilter"
|
@remove="clearFilter"
|
||||||
|
:redirect="false"
|
||||||
>
|
>
|
||||||
<template #tags="{ tag, formatFn }">
|
<template #tags="{ tag, formatFn }">
|
||||||
<strong v-if="tag.label === 'categoryFk'">
|
<strong v-if="tag.label === 'categoryFk'">
|
||||||
|
|
|
@ -104,10 +104,14 @@ const totalEntryPrice = (rows) => {
|
||||||
for (const row of rows) {
|
for (const row of rows) {
|
||||||
let total = 0;
|
let total = 0;
|
||||||
let quantity = 0;
|
let quantity = 0;
|
||||||
|
|
||||||
|
if (row.buys) {
|
||||||
for (const buy of row.buys) {
|
for (const buy of row.buys) {
|
||||||
total = total + buy.total;
|
total = total + buy.total;
|
||||||
quantity = quantity + buy.quantity;
|
quantity = quantity + buy.quantity;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
row.total = total;
|
row.total = total;
|
||||||
row.quantity = quantity;
|
row.quantity = quantity;
|
||||||
totalPrice = totalPrice + total;
|
totalPrice = totalPrice + total;
|
||||||
|
|
|
@ -50,7 +50,7 @@ const itemCategoriesOptions = ref([]);
|
||||||
@on-fetch="(data) => (itemCategoriesOptions = data)"
|
@on-fetch="(data) => (itemCategoriesOptions = data)"
|
||||||
auto-load
|
auto-load
|
||||||
/>
|
/>
|
||||||
<VnFilterPanel :data-key="props.dataKey" :search-button="true">
|
<VnFilterPanel :data-key="props.dataKey" :search-button="true" :redirect="false">
|
||||||
<template #tags="{ tag, formatFn }">
|
<template #tags="{ tag, formatFn }">
|
||||||
<div class="q-gutter-x-xs">
|
<div class="q-gutter-x-xs">
|
||||||
<strong>{{ t(`params.${tag.label}`) }}: </strong>
|
<strong>{{ t(`params.${tag.label}`) }}: </strong>
|
||||||
|
|
|
@ -0,0 +1,91 @@
|
||||||
|
<script setup>
|
||||||
|
import { ref, computed } from 'vue';
|
||||||
|
import { useI18n } from 'vue-i18n';
|
||||||
|
import { useRoute } from 'vue-router';
|
||||||
|
import VnTable from 'components/VnTable/VnTable.vue';
|
||||||
|
const tableRef = ref();
|
||||||
|
const { t } = useI18n();
|
||||||
|
const route = useRoute();
|
||||||
|
const entityId = computed(() => route.params.id);
|
||||||
|
|
||||||
|
const columns = computed(() => [
|
||||||
|
{
|
||||||
|
align: 'left',
|
||||||
|
name: 'paymentDate',
|
||||||
|
label: t('worker.balance.tableVisibleColumns.paymentDate'),
|
||||||
|
create: true,
|
||||||
|
component: 'date',
|
||||||
|
field: 'paymentDate',
|
||||||
|
cardVisible: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
align: 'left',
|
||||||
|
name: 'incomeTypeFk',
|
||||||
|
label: t('worker.balance.tableVisibleColumns.incomeType'),
|
||||||
|
create: true,
|
||||||
|
component: 'select',
|
||||||
|
attrs: {
|
||||||
|
url: 'payrollComponents',
|
||||||
|
fields: ['id', 'name'],
|
||||||
|
},
|
||||||
|
cardVisible: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
align: 'left',
|
||||||
|
name: 'debit',
|
||||||
|
label: t('worker.balance.tableVisibleColumns.debit'),
|
||||||
|
create: true,
|
||||||
|
component: 'input',
|
||||||
|
field: 'debit',
|
||||||
|
cardVisible: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
align: 'left',
|
||||||
|
name: 'credit',
|
||||||
|
label: t('worker.balance.tableVisibleColumns.credit'),
|
||||||
|
create: true,
|
||||||
|
component: 'input',
|
||||||
|
field: 'credit',
|
||||||
|
cardVisible: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
align: 'left',
|
||||||
|
name: 'concept',
|
||||||
|
label: t('worker.balance.tableVisibleColumns.concept'),
|
||||||
|
create: true,
|
||||||
|
component: 'input',
|
||||||
|
field: 'concept',
|
||||||
|
cardVisible: true,
|
||||||
|
},
|
||||||
|
]);
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<VnTable
|
||||||
|
ref="tableRef"
|
||||||
|
data-key="WorkerBalance"
|
||||||
|
:url="`Workers/${entityId}/incomes`"
|
||||||
|
:url-create="`Workers/${entityId}/incomes`"
|
||||||
|
save-url="WorkerIncomes/crud"
|
||||||
|
:create="{
|
||||||
|
urlCreate: 'workerIncomes',
|
||||||
|
title: t('Create workerBalance'),
|
||||||
|
onDataSaved: () => tableRef.reload(),
|
||||||
|
formInitialData: {
|
||||||
|
workerFk: entityId,
|
||||||
|
},
|
||||||
|
}"
|
||||||
|
order="paymentDate DESC"
|
||||||
|
:columns="columns"
|
||||||
|
default-mode="table"
|
||||||
|
auto-load
|
||||||
|
:right-search="false"
|
||||||
|
:is-editable="true"
|
||||||
|
:use-model="true"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<i18n>
|
||||||
|
es:
|
||||||
|
Create workerBalance: Crear balance
|
||||||
|
</i18n>
|
|
@ -35,6 +35,7 @@ const columns = computed(() => [
|
||||||
url: 'TrainingCourseTypes',
|
url: 'TrainingCourseTypes',
|
||||||
fields: ['id', 'name'],
|
fields: ['id', 'name'],
|
||||||
},
|
},
|
||||||
|
cardVisible: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
align: 'left',
|
align: 'left',
|
||||||
|
@ -52,6 +53,7 @@ const columns = computed(() => [
|
||||||
component: 'date',
|
component: 'date',
|
||||||
field: 'ended',
|
field: 'ended',
|
||||||
create: true,
|
create: true,
|
||||||
|
cardVisible: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
align: 'left',
|
align: 'left',
|
||||||
|
@ -63,6 +65,7 @@ const columns = computed(() => [
|
||||||
url: 'TrainingCenters',
|
url: 'TrainingCenters',
|
||||||
fields: ['id', 'name'],
|
fields: ['id', 'name'],
|
||||||
},
|
},
|
||||||
|
cardVisible: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
align: 'left',
|
align: 'left',
|
||||||
|
@ -78,6 +81,7 @@ const columns = computed(() => [
|
||||||
component: 'input',
|
component: 'input',
|
||||||
field: 'amount',
|
field: 'amount',
|
||||||
create: true,
|
create: true,
|
||||||
|
cardVisible: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
align: 'left',
|
align: 'left',
|
||||||
|
|
|
@ -274,7 +274,7 @@ export default {
|
||||||
name: 'CustomerBalance',
|
name: 'CustomerBalance',
|
||||||
meta: {
|
meta: {
|
||||||
title: 'balance',
|
title: 'balance',
|
||||||
icon: 'vn:invoice',
|
icon: 'balance',
|
||||||
},
|
},
|
||||||
component: () =>
|
component: () =>
|
||||||
import('src/pages/Customer/Card/CustomerBalance.vue'),
|
import('src/pages/Customer/Card/CustomerBalance.vue'),
|
||||||
|
|
|
@ -23,6 +23,7 @@ export default {
|
||||||
'WorkerDms',
|
'WorkerDms',
|
||||||
'WorkerTimeControl',
|
'WorkerTimeControl',
|
||||||
'WorkerLocker',
|
'WorkerLocker',
|
||||||
|
'WorkerBalance',
|
||||||
'WorkerFormation',
|
'WorkerFormation',
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
@ -177,6 +178,15 @@ export default {
|
||||||
},
|
},
|
||||||
component: () => import('src/pages/Worker/Card/WorkerLocker.vue'),
|
component: () => import('src/pages/Worker/Card/WorkerLocker.vue'),
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: 'WorkerBalance',
|
||||||
|
path: 'balance',
|
||||||
|
meta: {
|
||||||
|
title: 'balance',
|
||||||
|
icon: 'balance',
|
||||||
|
},
|
||||||
|
component: () => import('src/pages/Worker/Card/WorkerBalance.vue'),
|
||||||
|
},
|
||||||
{
|
{
|
||||||
name: 'WorkerFormation',
|
name: 'WorkerFormation',
|
||||||
path: 'formation',
|
path: 'formation',
|
||||||
|
|
|
@ -6,15 +6,14 @@ describe('InvoiceInCorrective', () => {
|
||||||
const saveDialog = '.q-card > .q-card__actions > .q-btn--standard ';
|
const saveDialog = '.q-card > .q-card__actions > .q-btn--standard ';
|
||||||
|
|
||||||
it('should create a correcting invoice', () => {
|
it('should create a correcting invoice', () => {
|
||||||
|
cy.viewport(1280, 720);
|
||||||
cy.login('developer');
|
cy.login('developer');
|
||||||
cy.visit(`/#/invoice-in/1/summary?limit=10`);
|
cy.visit(`/#/invoice-in/1/summary?limit=10`);
|
||||||
|
|
||||||
cy.openLeftMenu();
|
|
||||||
cy.openActionsDescriptor();
|
cy.openActionsDescriptor();
|
||||||
|
|
||||||
cy.get(createRectificative).click();
|
cy.get(createRectificative).click();
|
||||||
cy.get(saveDialog).click();
|
cy.get(saveDialog).click();
|
||||||
cy.openLeftMenu();
|
|
||||||
cy.get(rectificativeSection).click();
|
cy.get(rectificativeSection).click();
|
||||||
cy.get('tbody > tr:visible').should('have.length', 1);
|
cy.get('tbody > tr:visible').should('have.length', 1);
|
||||||
});
|
});
|
||||||
|
|
|
@ -5,18 +5,15 @@ describe('InvoiceInDescriptor', () => {
|
||||||
'.q-card:nth-child(3) .vn-label-value:nth-child(5) > .value > span';
|
'.q-card:nth-child(3) .vn-label-value:nth-child(5) > .value > span';
|
||||||
|
|
||||||
it('should booking and unbooking the invoice properly', () => {
|
it('should booking and unbooking the invoice properly', () => {
|
||||||
|
cy.viewport(1280, 720);
|
||||||
cy.login('developer');
|
cy.login('developer');
|
||||||
cy.visit(`/#/invoice-in/1/summary?limit=10`);
|
cy.visit('/#/invoice-in/1/summary');
|
||||||
|
|
||||||
cy.openLeftMenu();
|
|
||||||
cy.openActionsDescriptor();
|
cy.openActionsDescriptor();
|
||||||
cy.get(firstDescritorOpt).click();
|
cy.get(firstDescritorOpt).click();
|
||||||
cy.get(dialogBtns).eq(1).click();
|
cy.get(dialogBtns).eq(1).click();
|
||||||
cy.get('.fullscreen').first().click();
|
|
||||||
cy.get(isBookedField).should('have.attr', 'title', 'true');
|
cy.get(isBookedField).should('have.attr', 'title', 'true');
|
||||||
|
|
||||||
cy.openLeftMenu();
|
|
||||||
cy.openActionsDescriptor();
|
|
||||||
cy.get(firstDescritorOpt).click();
|
cy.get(firstDescritorOpt).click();
|
||||||
cy.get(dialogBtns).eq(1).click();
|
cy.get(dialogBtns).eq(1).click();
|
||||||
cy.get(isBookedField).should('have.attr', 'title', 'false');
|
cy.get(isBookedField).should('have.attr', 'title', 'false');
|
||||||
|
|
Loading…
Reference in New Issue