Merge branch 'dev' of https://git.verdnatura.es/salix into dev
This commit is contained in:
commit
4c45db1c16
|
@ -0,0 +1 @@
|
||||||
|
export * from './src';
|
|
@ -0,0 +1,37 @@
|
||||||
|
{
|
||||||
|
"module": "claim",
|
||||||
|
"name": "Claims",
|
||||||
|
"icon": "icon-claims",
|
||||||
|
"validations": true,
|
||||||
|
"routes": [
|
||||||
|
{
|
||||||
|
"url": "/claim",
|
||||||
|
"state": "claim",
|
||||||
|
"abstract": true,
|
||||||
|
"component": "ui-view",
|
||||||
|
"description": "Claims"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "/index?q",
|
||||||
|
"state": "claim.index",
|
||||||
|
"component": "vn-claim-index",
|
||||||
|
"description": "Listado",
|
||||||
|
"acl": ["developer"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "/:id",
|
||||||
|
"state": "claim.card",
|
||||||
|
"abstract": true,
|
||||||
|
"component": "vn-claim-card"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "/summary",
|
||||||
|
"state": "claim.card.summary",
|
||||||
|
"component": "vn-claim-summary",
|
||||||
|
"description": "Summary",
|
||||||
|
"params": {
|
||||||
|
"claim": "$ctrl.claim"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,7 @@
|
||||||
|
export * from './module';
|
||||||
|
|
||||||
|
import './index/';
|
||||||
|
/*
|
||||||
|
import './card';
|
||||||
|
import './descriptor';
|
||||||
|
import './summary'; */
|
|
@ -0,0 +1,59 @@
|
||||||
|
<vn-crud-model
|
||||||
|
vn-id="model"
|
||||||
|
url="/claim/api/Claims"
|
||||||
|
filter="::$ctrl.filter"
|
||||||
|
limit="20"
|
||||||
|
data="claims"
|
||||||
|
auto-load="false">
|
||||||
|
</vn-crud-model>
|
||||||
|
<div margin-medium>
|
||||||
|
<div class="vn-list">
|
||||||
|
<vn-card pad-medium-h>
|
||||||
|
<vn-searchbar
|
||||||
|
panel="vn-ticket-search-panel"
|
||||||
|
model="model"
|
||||||
|
expr-builder="$ctrl.exprBuilder(param, value)">
|
||||||
|
</vn-searchbar>
|
||||||
|
</vn-card>
|
||||||
|
</div>
|
||||||
|
<vn-card margin-medium-v pad-medium>
|
||||||
|
<vn-table model="model">
|
||||||
|
<vn-thead>
|
||||||
|
<vn-tr>
|
||||||
|
<vn-th field="id" number>Id</vn-th>
|
||||||
|
<vn-th field="clientFk" number>Client Id</vn-th>
|
||||||
|
<vn-th field="clientFk">Client</vn-th>
|
||||||
|
<vn-th field="created">Created</vn-th>
|
||||||
|
<vn-th field="workerFk">Worker</vn-th>
|
||||||
|
<vn-th field="observation">Observation</vn-th>
|
||||||
|
<vn-th field="claimResponsibleFk">Responsible</vn-th>
|
||||||
|
<vn-th field="claimStateFk">State</vn-th>
|
||||||
|
<vn-th></vn-th>
|
||||||
|
</vn-tr>
|
||||||
|
</vn-thead>
|
||||||
|
<vn-tbody>
|
||||||
|
<vn-tr ng-repeat="claim in claims">
|
||||||
|
<vn-td number>{{::claim.id}}</vn-td>
|
||||||
|
<vn-td number>{{::claim.client.id}}</vn-td>
|
||||||
|
<vn-td>{{::claim.client.name}}</vn-td>
|
||||||
|
<vn-td>{{::claim.created | date:'dd/MM/yyyy'}}</vn-td>
|
||||||
|
<vn-td>{{::claim.worker.firstName}} {{::claim.worker.name}}</vn-td>
|
||||||
|
<vn-td>{{::claim.observation}}</vn-td>
|
||||||
|
<vn-td>{{::claim.claimResponsible.description}}</vn-td>
|
||||||
|
<vn-td>{{::claim.claimState.description}}</vn-td>
|
||||||
|
<vn-td>
|
||||||
|
<vn-icon-button
|
||||||
|
ng-click="$ctrl.preview($event, ticket)"
|
||||||
|
vn-tooltip="Preview"
|
||||||
|
icon="desktop_windows">
|
||||||
|
</vn-icon-button>
|
||||||
|
</vn-td>
|
||||||
|
</vn-tr>
|
||||||
|
</vn-tbody>
|
||||||
|
</vn-table>
|
||||||
|
</vn-card>
|
||||||
|
<vn-pagination
|
||||||
|
model="model"
|
||||||
|
scroll-selector="ui-view">
|
||||||
|
</vn-pagination>
|
||||||
|
</div>
|
|
@ -0,0 +1,45 @@
|
||||||
|
import ngModule from '../module';
|
||||||
|
|
||||||
|
export default class Controller {
|
||||||
|
constructor($scope) {
|
||||||
|
this.$ = $scope;
|
||||||
|
this.ticketSelected = null;
|
||||||
|
|
||||||
|
this.filter = {
|
||||||
|
include: [
|
||||||
|
{
|
||||||
|
relation: 'client',
|
||||||
|
scope: {
|
||||||
|
fields: ['name']
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
relation: 'worker',
|
||||||
|
scope: {
|
||||||
|
fields: ['firstName', 'name']
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
relation: 'claimResponsible',
|
||||||
|
scope: {
|
||||||
|
fields: ['description']
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
relation: 'claimState',
|
||||||
|
scope: {
|
||||||
|
fields: ['description']
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
order: 'claimStateFk ASC, created DESC'
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Controller.$inject = ['$scope'];
|
||||||
|
|
||||||
|
ngModule.component('vnClaimIndex', {
|
||||||
|
template: require('./index.html'),
|
||||||
|
controller: Controller
|
||||||
|
});
|
|
@ -0,0 +1,9 @@
|
||||||
|
#Ordenar alfabeticamente
|
||||||
|
Client Id: Id cliente
|
||||||
|
Observation: Observación
|
||||||
|
Responsible: Responsable
|
||||||
|
|
||||||
|
#sections
|
||||||
|
Claims: Reclamaciones
|
||||||
|
List: Listado
|
||||||
|
Summary: Vista previa
|
|
@ -0,0 +1,5 @@
|
||||||
|
import {ng} from 'vendor';
|
||||||
|
import 'core';
|
||||||
|
|
||||||
|
const ngModule = ng.module('claim', ['vnCore']);
|
||||||
|
export default ngModule;
|
|
@ -8,3 +8,4 @@ salix: []
|
||||||
#route: []
|
#route: []
|
||||||
ticket: [item, client]
|
ticket: [item, client]
|
||||||
order: [item, ticket]
|
order: [item, ticket]
|
||||||
|
claim: [item, client]
|
||||||
|
|
|
@ -9,14 +9,14 @@
|
||||||
"state": "order",
|
"state": "order",
|
||||||
"abstract": true,
|
"abstract": true,
|
||||||
"component": "ui-view",
|
"component": "ui-view",
|
||||||
"description": "Orders",
|
"description": "Orders"
|
||||||
"acl": ["developer"]
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"url": "/index?q",
|
"url": "/index?q",
|
||||||
"state": "order.index",
|
"state": "order.index",
|
||||||
"component": "vn-order-index",
|
"component": "vn-order-index",
|
||||||
"description": "List"
|
"description": "List",
|
||||||
|
"acl": ["developer"]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"url": "/:id",
|
"url": "/:id",
|
||||||
|
|
|
@ -5,9 +5,10 @@ Client Frozen: Cliente congelado
|
||||||
Client has debt: Cliente con riesgo
|
Client has debt: Cliente con riesgo
|
||||||
Client inactive: Cliente inactivo
|
Client inactive: Cliente inactivo
|
||||||
Client not checked: Cliente no comprobado
|
Client not checked: Cliente no comprobado
|
||||||
Clients: Clientes
|
|
||||||
credit: Crédito
|
credit: Crédito
|
||||||
creditInsurance: Crédito Asegurado
|
creditInsurance: Crédito Asegurado
|
||||||
|
Clients: Clientes
|
||||||
|
Claims: Reclamaciones
|
||||||
Data saved!: ¡Datos guardados!
|
Data saved!: ¡Datos guardados!
|
||||||
Home: Inicio
|
Home: Inicio
|
||||||
Items: Artículos
|
Items: Artículos
|
||||||
|
@ -16,13 +17,13 @@ Logout: Cerrar sesión
|
||||||
Modules access : Acceso a módulos
|
Modules access : Acceso a módulos
|
||||||
Notifications: Notificaciones
|
Notifications: Notificaciones
|
||||||
name: Nombre
|
name: Nombre
|
||||||
Orders: Pedidos
|
|
||||||
phone: Teléfono
|
phone: Teléfono
|
||||||
Preview: Vista previa
|
Preview: Vista previa
|
||||||
Production : Producción
|
|
||||||
Profile: Perfil
|
Profile: Perfil
|
||||||
|
Production : Producción
|
||||||
Push on applications menu: Para abrir un módulo pulsa en el menú de aplicaciones
|
Push on applications menu: Para abrir un módulo pulsa en el menú de aplicaciones
|
||||||
Return to module index: Volver a la página principal del módulo
|
Return to module index: Volver a la página principal del módulo
|
||||||
Routes: Rutas
|
Routes: Rutas
|
||||||
What is new: Novedades de la versión
|
What is new: Novedades de la versión
|
||||||
Web Account inactive: Sin acceso Web
|
Web Account inactive: Sin acceso Web
|
||||||
|
Orders: Pedidos
|
|
@ -12,5 +12,7 @@ export default {
|
||||||
ticket:
|
ticket:
|
||||||
cb => require.ensure([], () => cb(require('ticket'))),
|
cb => require.ensure([], () => cb(require('ticket'))),
|
||||||
order:
|
order:
|
||||||
cb => require.ensure([], () => cb(require('order')))
|
cb => require.ensure([], () => cb(require('order'))),
|
||||||
|
claim:
|
||||||
|
cb => require.ensure([], () => cb(require('claim')))
|
||||||
};
|
};
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
const app = require(`${servicesDir}/client/server/server`);
|
||||||
|
|
||||||
|
describe('loopback model Account', () => {
|
||||||
|
it('should return true if the user has the given role', async() => {
|
||||||
|
let result = await app.models.Account.hasRole(1, 'employee');
|
||||||
|
|
||||||
|
expect(result).toBeTruthy();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should return false if the user doesnt have the given role', async() => {
|
||||||
|
let result = await app.models.Account.hasRole(1, 'administrator');
|
||||||
|
|
||||||
|
expect(result).toBeFalsy();
|
||||||
|
});
|
||||||
|
});
|
|
@ -0,0 +1,38 @@
|
||||||
|
const app = require(`${servicesDir}/ticket/server/server`);
|
||||||
|
|
||||||
|
describe('ticket model TicketTracking', () => {
|
||||||
|
let ticketTrackingId;
|
||||||
|
|
||||||
|
afterAll(async() => {
|
||||||
|
await app.models.TicketPackaging.destroyById(ticketTrackingId);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should save a ticketTraing as the quantity is greater than 0', async() => {
|
||||||
|
let result = await app.models.TicketPackaging.create({ticketFk: 1, quantity: 1, packagingFk: 1});
|
||||||
|
|
||||||
|
expect(result).toBeTruthy();
|
||||||
|
ticketTrackingId = result.id;
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should return an error as the quantity is 0', async() => {
|
||||||
|
let error;
|
||||||
|
try {
|
||||||
|
await app.models.TicketPackaging.create({ticketFk: 1, quantity: 0, packagingFk: 1});
|
||||||
|
} catch (e) {
|
||||||
|
error = e;
|
||||||
|
}
|
||||||
|
|
||||||
|
expect(error.message).toContain('Enter an integer different to zero');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should return an error as the quantity isnt a number', async() => {
|
||||||
|
let error;
|
||||||
|
try {
|
||||||
|
await app.models.TicketPackaging.create({ticketFk: 1, quantity: 'random string', packagingFk: 1});
|
||||||
|
} catch (e) {
|
||||||
|
error = e;
|
||||||
|
}
|
||||||
|
|
||||||
|
expect(error.message).toContain('Enter an integer different to zero');
|
||||||
|
});
|
||||||
|
});
|
|
@ -0,0 +1,24 @@
|
||||||
|
const app = require(`${servicesDir}/ticket/server/server`);
|
||||||
|
|
||||||
|
describe('ticket model TicketTracking', () => {
|
||||||
|
let ticketTrackingId;
|
||||||
|
|
||||||
|
afterAll(async() => {
|
||||||
|
await app.models.TicketTracking.destroyById(ticketTrackingId);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should store the worker id into the instance', async() => {
|
||||||
|
let originalTrackings = await app.models.TicketTracking.find({where: {ticketFk: 1}});
|
||||||
|
|
||||||
|
expect(originalTrackings.length).toEqual(1);
|
||||||
|
|
||||||
|
await app.models.TicketTracking.create({ticketFk: 1, stateFk: 20});
|
||||||
|
let result = await app.models.TicketTracking.find({where: {ticketFk: 1}});
|
||||||
|
|
||||||
|
let workerFk = result[1].workerFk;
|
||||||
|
ticketTrackingId = result[1].id;
|
||||||
|
|
||||||
|
expect(result.length).toEqual(2);
|
||||||
|
expect(workerFk).toEqual(1);
|
||||||
|
});
|
||||||
|
});
|
|
@ -6,9 +6,9 @@ module.exports = function(Self) {
|
||||||
Self.observe('before save', async function(ctx) {
|
Self.observe('before save', async function(ctx) {
|
||||||
let models = Self.app.models;
|
let models = Self.app.models;
|
||||||
let token = ctx.options.accessToken;
|
let token = ctx.options.accessToken;
|
||||||
let userId = token && token.userId;
|
let currentUserId = token && token.userId;
|
||||||
|
|
||||||
let user = await models.Worker.findOne({where: {userFk: userId}});
|
let worker = await models.Worker.findOne({where: {userFk: currentUserId}});
|
||||||
ctx.instance.workerFk = user.id;
|
ctx.instance.workerFk = worker.id;
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
const fs = require('fs-extra');
|
||||||
process.on('warning', warning => {
|
process.on('warning', warning => {
|
||||||
console.log(warning.name);
|
console.log(warning.name);
|
||||||
console.log(warning.message);
|
console.log(warning.message);
|
||||||
|
@ -18,15 +19,25 @@ let environment = require('gulp-env');
|
||||||
|
|
||||||
environment(".env.json");
|
environment(".env.json");
|
||||||
|
|
||||||
|
let serviceList = fs.readdirSync(servicesDir);
|
||||||
|
let serviceSpecs = [
|
||||||
|
'auth/server/**/*[sS]pec.js'
|
||||||
|
];
|
||||||
|
const exclude = ['auth', 'salix'];
|
||||||
|
|
||||||
|
for (let service of serviceList) {
|
||||||
|
try {
|
||||||
|
let serviceDir = fs.readdirSync(`${servicesDir}/${service}`);
|
||||||
|
for (let file of serviceDir) {
|
||||||
|
if (file === 'server' && exclude.indexOf(service) == -1)
|
||||||
|
serviceSpecs.push(`${service}/common/**/*[sS]pec.js`);
|
||||||
|
}
|
||||||
|
} catch (e) {}
|
||||||
|
}
|
||||||
|
|
||||||
jasmine.loadConfig({
|
jasmine.loadConfig({
|
||||||
spec_dir: 'services',
|
spec_dir: 'services',
|
||||||
spec_files: [
|
spec_files: serviceSpecs,
|
||||||
'auth/server/**/*[sS]pec.js',
|
|
||||||
'client/common/**/*[sS]pec.js',
|
|
||||||
'item/common/**/*[sS]pec.js',
|
|
||||||
'ticket/common/**/*[sS]pec.js',
|
|
||||||
'loopback/common/**/*[sS]pec.js'
|
|
||||||
],
|
|
||||||
helpers: [
|
helpers: [
|
||||||
'/services/utils/jasmineHelpers.js'
|
'/services/utils/jasmineHelpers.js'
|
||||||
]
|
]
|
||||||
|
|
Loading…
Reference in New Issue