Merge branch 'dev' of https://git.verdnatura.es/salix into dev

This commit is contained in:
Juan 2018-03-01 11:36:48 +01:00
commit 3d4ff56888
12 changed files with 284 additions and 45 deletions

View File

@ -15,19 +15,25 @@
vn-focus vn-focus
label="Social name" label="Social name"
field="$ctrl.client.socialName" field="$ctrl.client.socialName"
vn-acl="administrative"> vn-acl="administrative, salesPerson"
acl-conditional-to-salesPerson="{{!$ctrl.client.isTaxDataChecked}}"
>
</vn-textfield> </vn-textfield>
<vn-textfield <vn-textfield
vn-one vn-one
label="Tax number" label="Tax number"
field="$ctrl.client.fi" field="$ctrl.client.fi"
vn-acl="administrative"> vn-acl="administrative, salesPerson"
acl-conditional-to-salesPerson="{{!$ctrl.client.isTaxDataChecked}}"
>
</vn-textfield> </vn-textfield>
<vn-check <vn-check
vn-one vn-one
label="Is equalizated" label="Is equalizated"
field="$ctrl.client.isEqualizated" field="$ctrl.client.isEqualizated"
vn-acl="administrative"> vn-acl="administrative, salesPerson"
acl-conditional-to-salesPerson="{{!$ctrl.client.isTaxDataChecked}}"
>
</vn-check> </vn-check>
</vn-horizontal> </vn-horizontal>
<vn-horizontal> <vn-horizontal>
@ -35,13 +41,17 @@
vn-two vn-two
label="Street" label="Street"
field="$ctrl.client.street" field="$ctrl.client.street"
vn-acl="administrative"> vn-acl="administrative, salesPerson"
acl-conditional-to-salesPerson="{{!$ctrl.client.isTaxDataChecked}}"
>
</vn-textfield> </vn-textfield>
<vn-textfield <vn-textfield
vn-one vn-one
label="City" label="City"
field="$ctrl.client.city" field="$ctrl.client.city"
vn-acl="administrative"> vn-acl="administrative, salesPerson"
acl-conditional-to-salesPerson="{{!$ctrl.client.isTaxDataChecked}}"
>
</vn-textfield> </vn-textfield>
</vn-horizontal> </vn-horizontal>
<vn-horizontal> <vn-horizontal>
@ -49,7 +59,9 @@
vn-one vn-one
label="Postcode" label="Postcode"
field="$ctrl.client.postcode" field="$ctrl.client.postcode"
vn-acl="administrative"> vn-acl="administrative, salesPerson"
acl-conditional-to-salesPerson="{{!$ctrl.client.isTaxDataChecked}}"
>
</vn-textfield> </vn-textfield>
<vn-autocomplete <vn-autocomplete
vn-one vn-one
@ -59,7 +71,9 @@
show-field="name" show-field="name"
value-field="id" value-field="id"
label="Province" label="Province"
vn-acl="administrative"> vn-acl="administrative, salesPerson"
acl-conditional-to-salesPerson="{{!$ctrl.client.isTaxDataChecked}}"
>
</vn-autocomplete> </vn-autocomplete>
<vn-autocomplete <vn-autocomplete
vn-one vn-one
@ -69,7 +83,9 @@
show-field="country" show-field="country"
value-field="id" value-field="id"
label="Country" label="Country"
vn-acl="administrative"> vn-acl="administrative, salesPerson"
acl-conditional-to-salesPerson="{{!$ctrl.client.isTaxDataChecked}}"
>
</vn-autocomplete> </vn-autocomplete>
</vn-horizontal> </vn-horizontal>
<vn-horizontal margin-small-bottom> <vn-horizontal margin-small-bottom>
@ -77,21 +93,26 @@
<vn-check <vn-check
label="Active" label="Active"
field="$ctrl.client.isActive" field="$ctrl.client.isActive"
vn-acl="administrative"> vn-acl="administrative, salesPerson"
acl-conditional-to-salesPerson="{{!$ctrl.client.isTaxDataChecked}}"
>
</vn-check> </vn-check>
</vn-one> </vn-one>
<vn-one> <vn-one>
<vn-check <vn-check
label="Invoice by address" label="Invoice by address"
field="$ctrl.client.hasToInvoiceByAddress" field="$ctrl.client.hasToInvoiceByAddress"
vn-acl="administrative"> vn-acl="administrative, salesPerson"
acl-conditional-to-salesPerson="{{!$ctrl.client.isTaxDataChecked}}"
>
</vn-check> </vn-check>
</vn-one> </vn-one>
<vn-one> <vn-one>
<vn-check <vn-check
label="Verified data" label="Verified data"
field="$ctrl.client.isTaxDataChecked" field="$ctrl.client.isTaxDataChecked"
vn-acl="administrative"> vn-acl="administrative"
>
</vn-check> </vn-check>
</vn-one> </vn-one>
</vn-horizontal> </vn-horizontal>
@ -100,28 +121,34 @@
<vn-check <vn-check
label="Has to invoice" label="Has to invoice"
field="$ctrl.client.hasToInvoice" field="$ctrl.client.hasToInvoice"
vn-acl="administrative"> vn-acl="administrative, salesPerson"
acl-conditional-to-salesPerson="{{!$ctrl.client.isTaxDataChecked}}"
>
</vn-check> </vn-check>
</vn-one> </vn-one>
<vn-one> <vn-one>
<vn-check <vn-check
label="Invoice by mail" label="Invoice by mail"
field="$ctrl.client.isToBeMailed" field="$ctrl.client.isToBeMailed"
vn-acl="administrative"> vn-acl="administrative, salesPerson"
acl-conditional-to-salesPerson="{{!$ctrl.client.isTaxDataChecked}}"
>
</vn-check> </vn-check>
</vn-one> </vn-one>
<vn-one> <vn-one>
<vn-check <vn-check
label="Vies" label="Vies"
field="$ctrl.client.isVies" field="$ctrl.client.isVies"
vn-acl="administrative"> vn-acl="administrative, salesPerson"
acl-conditional-to-salesPerson="{{!$ctrl.client.isTaxDataChecked}}"
>
</vn-check> </vn-check>
</vn-one> </vn-one>
</vn-horizontal> </vn-horizontal>
</vn-vertical> </vn-vertical>
</vn-card> </vn-card>
<vn-button-bar> <vn-button-bar>
<vn-submit label="Save" vn-acl="administrative"></vn-submit> <vn-submit label="Save" vn-acl="administrative, salesPerson" acl-conditional-to-salesPerson="{{!$ctrl.client.isTaxDataChecked}}"></vn-submit>
</vn-button-bar> </vn-button-bar>
</form> </form>
<vn-confirm <vn-confirm

View File

@ -20,6 +20,11 @@ export default class ClientFiscalData {
} }
} }
buyerHaspermissions() {
if (!this.client) return true;
return !this.client.isTaxDataChecked;
}
submit() { submit() {
return this.$.watcher.submit().then( return this.$.watcher.submit().then(
() => this.checkEtChanges()); () => this.checkEtChanges());

View File

@ -1,6 +1,8 @@
import ngModule from '../module'; import ngModule from '../module';
function vnAcl(aclService, $timeout) { function vnAcl(aclService, $timeout) {
let acls = [];
function getMaterialType(className) { function getMaterialType(className) {
let type = ''; let type = '';
if (className) { if (className) {
@ -20,32 +22,78 @@ function vnAcl(aclService, $timeout) {
} }
} }
} }
function getDynamicConditions($attrs) {
let atributes = $attrs.$attr;
let conditions = {};
Object.keys(atributes).forEach(atribute => {
if (atribute.startsWith('aclConditionalTo')) {
let role = atributes[atribute].split('-').slice(-1)[0];
conditions[atribute] = {
role: role
};
}
});
return conditions;
}
function permissionElement($element, action) {
if (!aclService.aclPermission(acls)) {
if (action === 'disabled') {
let input = $element[0];
let selector = 'input, textarea, button, submit';
if (!input.matches(selector))
input = input.querySelector(selector);
if (input) {
$timeout(() => {
input.setAttribute("disabled", "true");
updateMaterial(input);
});
$element[0].querySelectorAll('i, vn-drop-down').forEach(element => {
element.parentNode.removeChild(element);
});
}
} else {
$element.remove();
}
}
}
function updateAcls(role, toAdd) {
let position = acls.indexOf(role);
if (!toAdd && position > -1) {
acls.splice(position, 1);
} // todo: add acl and enabled element if previusly was disabled
}
return { return {
restrict: 'A', restrict: 'A',
priority: -1, priority: -1,
link: function($scope, $element, $attrs) { link: function($scope, $element, $attrs) {
let acls = $attrs.vnAcl.split(','); acls = $attrs.vnAcl.split(',').map(element => element.trim().toLowerCase());
let action = $attrs.vnAclAction || 'disabled'; let action = $attrs.vnAclAction || 'disabled';
if (!aclService.aclPermission(acls)) { let conditions = getDynamicConditions($attrs);
if (action === 'disabled') { permissionElement($element, action);
let input = $element[0];
let selector = 'input, textarea, button, submit';
if (!input.matches(selector)) if (Object.keys(conditions).length) {
input = input.querySelector(selector); let watchConditions = $scope.$watch(() => {
Object.keys(conditions).forEach(attrName => {
let hasPermission = $scope.$eval($attrs[attrName]);
if (!hasPermission) {
updateAcls(conditions[attrName].role, hasPermission);
permissionElement($element, action);
delete conditions[attrName];
}
});
if (input) { if (Object.keys(conditions).length === 0) {
$timeout(() => { // unWacth
input.setAttribute("disabled", "true"); watchConditions();
updateMaterial(input);
});
$element[0].querySelectorAll('i, vn-drop-down').forEach(element => {
element.parentNode.removeChild(element);
});
} }
} else { });
$element.remove();
}
} }
} }
}; };

View File

@ -5,7 +5,14 @@ ngModule.constant('aclConstant', acl);
aclService.$inject = ['aclConstant']; aclService.$inject = ['aclConstant'];
function aclService(aclConstant) { function aclService(aclConstant) {
this.roles = aclConstant.roles || undefined; if (aclConstant.roles) {
this.roles = {};
Object.keys(aclConstant.roles).forEach(role => {
this.roles[role.toLowerCase()] = aclConstant.roles[role];
});
} else {
this.roles = undefined;
}
this.routeHasPermission = function(route) { this.routeHasPermission = function(route) {
let hasPermission; let hasPermission;
@ -23,7 +30,8 @@ function aclService(aclConstant) {
let hasPermission = false; let hasPermission = false;
let total = aclCollection.length; let total = aclCollection.length;
for (let i = 0; i < total; i++) { for (let i = 0; i < total; i++) {
if (this.roles[aclCollection[i]]) { let role = aclCollection[i].trim().toLowerCase();
if (this.roles[role]) {
hasPermission = true; hasPermission = true;
break; break;
} }

View File

@ -245,7 +245,7 @@ export default {
}, },
itemSummary: { itemSummary: {
basicData: `${components.vnItemSummary} > vn-horizontal:nth-child(1) > vn-one:nth-child(2) > vn-vertical > p:nth-child(2)`, basicData: `${components.vnItemSummary} > vn-horizontal:nth-child(1) > vn-one:nth-child(2) > vn-vertical > p:nth-child(2)`,
tags: `${components.vnItemSummary} > vn-horizontal:nth-child(1) > vn-one:nth-child(3) > vn-vertical > p:nth-child(2)`, tags: `${components.vnItemSummary} > vn-horizontal:nth-child(1) > vn-one:nth-child(3) > vn-vertical > p`,
niche: `${components.vnItemSummary} > vn-horizontal:nth-child(2) > vn-one:nth-child(1) > vn-vertical > p:nth-child(2)`, niche: `${components.vnItemSummary} > vn-horizontal:nth-child(2) > vn-one:nth-child(1) > vn-vertical > p:nth-child(2)`,
botanical: `${components.vnItemSummary} > vn-horizontal:nth-child(2) > vn-one:nth-child(2) > vn-vertical > p`, botanical: `${components.vnItemSummary} > vn-horizontal:nth-child(2) > vn-one:nth-child(2) > vn-vertical > p`,
barcode: `${components.vnItemSummary} > vn-horizontal:nth-child(2) > vn-one:nth-child(3) > vn-vertical > p` barcode: `${components.vnItemSummary} > vn-horizontal:nth-child(2) > vn-one:nth-child(3) > vn-vertical > p`

View File

@ -51,6 +51,7 @@ describe('Item summary path', () => {
it(`should check the item summary preview shows fields from tags`, () => { it(`should check the item summary preview shows fields from tags`, () => {
return nightmare return nightmare
.wait(200)
.getInnerText(selectors.itemSummary.tags) .getInnerText(selectors.itemSummary.tags)
.then(result => { .then(result => {
expect(result).toContain('Color: Yellow'); expect(result).toContain('Color: Yellow');

View File

@ -85,13 +85,14 @@ describe('Item', () => {
}); });
describe('clone path', () => { describe('clone path', () => {
it('should access to the items index by clicking the items button', () => { it('should return to the items index by clicking the return to items button', () => {
return nightmare return nightmare
.click(selectors.itemBasicData.goToItemIndexButton) .click(selectors.itemBasicData.goToItemIndexButton)
.wait(selectors.itemsIndex.createItemButton) .wait(selectors.itemsIndex.createItemButton)
.waitForURL('#!/item/list')
.parsedUrl() .parsedUrl()
.then(url => { .then(url => {
expect(url.hash).toEqual('#!/item/list'); expect(url.hash).toContain('#!/item/list');
}); });
}); });

View File

@ -0,0 +1,55 @@
{
"name": "InvoiceOut",
"base": "VnModel",
"options": {
"mysql": {
"table": "invoiceOut"
}
},
"properties": {
"id": {
"id": true,
"type": "Number",
"description": "Identifier"
},
"ref": {
"id": true,
"type": "String",
"required": true
},
"serial": {
"type": "String"
},
"issued": {
"type": "date"
},
"amount": {
"type": "Number"
},
"created": {
"type": "date"
},
"dued": {
"type": "date"
},
"booked": {
"type": "date"
},
"pdf": {
"type": "Number"
}
},
"relations": {
"client": {
"type": "belongsTo",
"model": "Client",
"foreignKey": "clientFk"
},
"company": {
"type": "belongsTo",
"model": "Company",
"foreignKey": "companyFk",
"required": true
}
}
}

View File

@ -25,5 +25,11 @@
}, },
"ObservationType": { "ObservationType": {
"dataSource": "vn" "dataSource": "vn"
},
"Recovery": {
"dataSource": "vn"
},
"InvoiceOut": {
"dataSource": "vn"
} }
} }

View File

@ -1,4 +1,4 @@
USE `account`; USE `account`;
-- MySQL dump 10.13 Distrib 5.7.17, for Win64 (x86_64) -- MySQL dump 10.13 Distrib 5.7.17, for Win64 (x86_64)
-- --
-- Host: db.verdnatura.es Database: account -- Host: db.verdnatura.es Database: account
@ -22,7 +22,7 @@ USE `account`;
LOCK TABLES `role` WRITE; LOCK TABLES `role` WRITE;
/*!40000 ALTER TABLE `role` DISABLE KEYS */; /*!40000 ALTER TABLE `role` DISABLE KEYS */;
INSERT INTO `role` VALUES (0,'root','Rol con todos los privilegios',0,'2017-05-19 07:04:58','2017-05-19 07:04:58'),(1,'employee','Empleado básico',1,'2017-05-19 07:04:58','2017-11-29 10:06:31'),(2,'customer','Privilegios básicos de un cliente',1,'2017-05-19 07:04:58','2017-05-19 07:04:58'),(3,'agency','Consultar tablas de predicciones de bultos',1,'2017-05-19 07:04:58','2017-05-19 07:04:58'),(5,'administrative','Tareas relacionadas con la contabilidad',1,'2017-05-19 07:04:58','2017-05-19 07:04:58'),(6,'guest','Privilegios para usuarios sin cuenta',1,'2017-05-19 07:04:58','2017-05-19 07:04:58'),(9,'developer','Desarrolladores del sistema',1,'2017-05-19 07:04:58','2017-05-19 07:04:58'),(11,'account','Privilegios relacionados con el login',0,'2017-05-19 07:04:58','2017-09-20 17:06:35'),(13,'teamBoss','Jefe de departamento',1,'2017-05-19 07:04:58','2017-05-19 07:04:58'),(15,'logistic','Departamento de compras, responsables de la logistica',1,'2017-05-19 07:04:58','2018-02-12 10:50:10'),(16,'logisticBoss','Jefe del departamento de logística',1,'2017-05-19 07:04:58','2017-05-19 07:04:58'),(17,'adminBoss','Jefe del departamento de administración',1,'2017-05-19 07:04:58','2017-05-19 07:04:58'),(18,'salesPerson','Departamento de ventas',1,'2017-05-19 07:04:58','2017-05-19 07:04:58'),(19,'salesBoss','Jefe del departamento de ventas',1,'2017-05-19 07:04:58','2017-08-16 12:38:27'),(20,'manager','Departamento de gerencia',1,'2017-06-01 14:57:02','2017-06-01 14:57:51'),(21,'salesAssistant','Jefe auxiliar de ventas',1,'2017-08-16 12:40:52','2017-08-16 12:40:52'),(22,'teamManager','Jefe de departamento con privilegios de auxiliar de venta.',1,'2017-09-07 09:08:12','2017-09-07 09:08:12'),(30,'financialBoss','Director finaciero',1,'2017-09-21 11:05:36','2017-09-21 11:05:36'),(31,'freelancer','Trabajadores por cuenta ajena',1,'2017-10-10 12:57:26','2017-10-10 12:59:27'),(32,'ett','Trabajadores de empresa temporal',1,'2017-10-10 12:58:58','2017-10-10 12:59:20'),(33,'invoicing','Personal con acceso a facturación',0,'2018-01-29 16:43:34','2018-01-29 16:43:34'),(34,'agencyBoss','Jefe/a del departamento de agencias',1,'2018-01-29 16:44:39','2018-02-23 07:58:53'),(35,'buyer','Departamento de compras',1,'2018-02-12 10:35:42','2018-02-12 10:35:42'),(36,'replenisher','Trabajadores de camara',0,'2018-02-16 14:07:10','2018-02-23 13:30:32'),(37,'hr','Gestor/a de recursos humanos',1,'2018-02-22 17:34:53','2018-02-22 17:34:53'),(38,'hrBoss','Jefe/a de recursos humanos',1,'2018-02-22 17:35:09','2018-02-22 17:35:09'),(39,'adminAssistant','Jefe auxiliar administrativo',1,'2018-02-23 10:37:36','2018-02-23 10:38:41'),(40,'handmade','Departamento de confección',1,'2018-02-23 11:14:53','2018-02-23 11:39:12'),(41,'handmadeBoss','Jefe de departamento de confección',1,'2018-02-23 11:15:09','2018-02-23 11:39:26'),(42,'artificial','Departamento de artificial',1,'2018-02-23 11:39:59','2018-02-23 11:39:59'),(43,'artificialBoss','Jefe del departamento de artificial',1,'2018-02-23 11:40:16','2018-02-23 11:40:16'),(44,'accessory','Departamento de complementos',1,'2018-02-23 11:41:12','2018-02-23 11:41:12'),(45,'accessoryBoss','Jefe del departamento de complementos',1,'2018-02-23 11:41:23','2018-02-23 11:41:23'),(47,'cooler','Empleados de cámara',1,'2018-02-23 13:08:18','2018-02-23 13:08:18'),(48,'coolerBoss','Jefe del departamento de cámara',1,'2018-02-23 13:12:01','2018-02-23 13:12:01'); INSERT INTO `role` VALUES (0,'root','Rol con todos los privilegios',0,'2017-05-19 07:04:58','2017-05-19 07:04:58'),(1,'employee','Empleado básico',1,'2017-05-19 07:04:58','2017-11-29 10:06:31'),(2,'customer','Privilegios básicos de un cliente',1,'2017-05-19 07:04:58','2017-05-19 07:04:58'),(3,'agency','Consultar tablas de predicciones de bultos',1,'2017-05-19 07:04:58','2017-05-19 07:04:58'),(5,'administrative','Tareas relacionadas con la contabilidad',1,'2017-05-19 07:04:58','2017-05-19 07:04:58'),(6,'guest','Privilegios para usuarios sin cuenta',1,'2017-05-19 07:04:58','2017-05-19 07:04:58'),(9,'developer','Desarrolladores del sistema',1,'2017-05-19 07:04:58','2017-05-19 07:04:58'),(11,'account','Privilegios relacionados con el login',0,'2017-05-19 07:04:58','2017-09-20 17:06:35'),(13,'teamBoss','Jefe de departamento',1,'2017-05-19 07:04:58','2017-05-19 07:04:58'),(15,'logistic','Departamento de compras, responsables de la logistica',1,'2017-05-19 07:04:58','2018-02-12 10:50:10'),(16,'logisticBoss','Jefe del departamento de logística',1,'2017-05-19 07:04:58','2017-05-19 07:04:58'),(17,'adminBoss','Jefe del departamento de administración',1,'2017-05-19 07:04:58','2017-05-19 07:04:58'),(18,'salesPerson','Departamento de ventas',1,'2017-05-19 07:04:58','2017-05-19 07:04:58'),(19,'salesBoss','Jefe del departamento de ventas',1,'2017-05-19 07:04:58','2017-08-16 12:38:27'),(20,'manager','Departamento de gerencia',1,'2017-06-01 14:57:02','2017-06-01 14:57:51'),(21,'salesAssistant','Jefe auxiliar de ventas',1,'2017-08-16 12:40:52','2017-08-16 12:40:52'),(22,'teamManager','Jefe de departamento con privilegios de auxiliar de venta.',1,'2017-09-07 09:08:12','2017-09-07 09:08:12'),(30,'financialBoss','Director finaciero',1,'2017-09-21 11:05:36','2017-09-21 11:05:36'),(31,'freelancer','Trabajadores por cuenta ajena',1,'2017-10-10 12:57:26','2017-10-10 12:59:27'),(32,'ett','Trabajadores de empresa temporal',1,'2017-10-10 12:58:58','2017-10-10 12:59:20'),(33,'invoicing','Personal con acceso a facturación',0,'2018-01-29 16:43:34','2018-01-29 16:43:34'),(34,'agencyBoss','Jefe/a del departamento de agencias',1,'2018-01-29 16:44:39','2018-02-23 07:58:53'),(35,'buyer','Departamento de compras',1,'2018-02-12 10:35:42','2018-02-12 10:35:42'),(36,'replenisher','Trabajadores de camara',0,'2018-02-16 14:07:10','2018-02-23 13:30:32'),(37,'hr','Gestor/a de recursos humanos',1,'2018-02-22 17:34:53','2018-02-22 17:34:53'),(38,'hrBoss','Jefe/a de recursos humanos',1,'2018-02-22 17:35:09','2018-02-22 17:35:09'),(39,'adminAssistant','Jefe auxiliar administrativo',1,'2018-02-23 10:37:36','2018-02-23 10:38:41'),(40,'handmade','Departamento de confección',1,'2018-02-23 11:14:53','2018-02-23 11:39:12'),(41,'handmadeBoss','Jefe de departamento de confección',1,'2018-02-23 11:15:09','2018-02-23 11:39:26'),(42,'artificial','Departamento de artificial',1,'2018-02-23 11:39:59','2018-02-23 11:39:59'),(43,'artificialBoss','Jefe del departamento de artificial',1,'2018-02-23 11:40:16','2018-02-23 11:40:16'),(44,'accessory','Departamento de complementos',1,'2018-02-23 11:41:12','2018-02-23 11:41:12'),(45,'accessoryBoss','Jefe del departamento de complementos',1,'2018-02-23 11:41:23','2018-02-23 11:41:23'),(47,'cooler','Empleados de cámara',1,'2018-02-23 13:08:18','2018-02-23 13:08:18'),(48,'coolerBoss','Jefe del departamento de cámara',1,'2018-02-23 13:12:01','2018-02-23 13:12:01'),(49,'production','Empleado de producción',1,'2018-02-26 15:28:23','2018-02-26 15:28:23'),(50,'productionBoss','Jefe de producción',1,'2018-02-26 15:34:12','2018-02-26 15:34:12');
/*!40000 ALTER TABLE `role` ENABLE KEYS */; /*!40000 ALTER TABLE `role` ENABLE KEYS */;
UNLOCK TABLES; UNLOCK TABLES;
@ -32,7 +32,7 @@ UNLOCK TABLES;
LOCK TABLES `roleRole` WRITE; LOCK TABLES `roleRole` WRITE;
/*!40000 ALTER TABLE `roleRole` DISABLE KEYS */; /*!40000 ALTER TABLE `roleRole` DISABLE KEYS */;
INSERT INTO `roleRole` VALUES (0,0),(0,1),(0,2),(0,3),(0,5),(0,6),(0,9),(0,11),(0,13),(0,15),(0,16),(0,17),(0,18),(0,19),(0,20),(0,21),(0,22),(0,30),(0,31),(0,32),(0,33),(0,34),(0,35),(0,36),(0,37),(0,38),(0,39),(0,40),(0,41),(0,42),(0,43),(0,44),(0,45),(0,47),(0,48),(1,1),(1,2),(1,3),(1,6),(1,11),(2,2),(2,6),(2,11),(3,3),(3,6),(3,11),(5,1),(5,2),(5,3),(5,5),(5,6),(5,11),(5,13),(5,18),(5,19),(5,21),(5,33),(6,6),(9,0),(9,1),(9,2),(9,3),(9,5),(9,6),(9,9),(9,11),(9,13),(9,15),(9,16),(9,17),(9,18),(9,19),(9,20),(9,21),(9,22),(9,30),(9,31),(9,32),(9,33),(9,34),(9,35),(9,36),(9,37),(9,38),(9,39),(9,40),(9,41),(9,42),(9,43),(9,44),(9,45),(9,47),(9,48),(11,6),(11,11),(13,1),(13,2),(13,3),(13,6),(13,11),(13,13),(15,1),(15,2),(15,3),(15,6),(15,11),(15,15),(15,35),(16,1),(16,2),(16,3),(16,6),(16,11),(16,13),(16,15),(16,16),(16,35),(17,1),(17,2),(17,3),(17,5),(17,6),(17,11),(17,13),(17,17),(17,18),(17,19),(17,20),(17,21),(17,33),(17,37),(17,39),(18,1),(18,2),(18,3),(18,6),(18,11),(18,18),(19,1),(19,2),(19,3),(19,6),(19,11),(19,13),(19,18),(19,19),(19,21),(20,1),(20,2),(20,3),(20,6),(20,11),(20,13),(20,20),(21,1),(21,2),(21,3),(21,6),(21,11),(21,13),(21,18),(21,21),(22,1),(22,2),(22,3),(22,6),(22,11),(22,13),(22,18),(22,21),(22,22),(30,1),(30,2),(30,3),(30,5),(30,6),(30,11),(30,13),(30,18),(30,19),(30,20),(30,21),(30,22),(30,30),(30,33),(31,1),(31,2),(31,3),(31,6),(31,11),(31,31),(32,1),(32,2),(32,3),(32,6),(32,11),(32,32),(33,33),(34,1),(34,2),(34,3),(34,6),(34,11),(34,13),(34,33),(34,34),(35,1),(35,2),(35,3),(35,6),(35,11),(35,35),(36,1),(36,2),(36,3),(36,6),(36,11),(36,36),(36,44),(36,47),(37,1),(37,2),(37,3),(37,6),(37,11),(37,37),(38,1),(38,2),(38,3),(38,6),(38,11),(38,37),(38,38),(39,1),(39,2),(39,3),(39,5),(39,6),(39,11),(39,13),(39,18),(39,19),(39,21),(39,33),(39,39),(40,1),(40,2),(40,3),(40,6),(40,11),(40,40),(41,1),(41,2),(41,3),(41,6),(41,11),(41,13),(41,40),(41,41),(42,1),(42,2),(42,3),(42,6),(42,11),(42,42),(43,1),(43,2),(43,3),(43,6),(43,11),(43,13),(43,42),(43,43),(44,1),(44,2),(44,3),(44,6),(44,11),(44,44),(45,1),(45,2),(45,3),(45,6),(45,11),(45,13),(45,44),(45,45),(47,1),(47,2),(47,3),(47,6),(47,11),(47,47),(48,1),(48,2),(48,3),(48,6),(48,11),(48,13),(48,47),(48,48); INSERT INTO `roleRole` VALUES (0,0),(0,1),(0,2),(0,3),(0,5),(0,6),(0,9),(0,11),(0,13),(0,15),(0,16),(0,17),(0,18),(0,19),(0,20),(0,21),(0,22),(0,30),(0,31),(0,32),(0,33),(0,34),(0,35),(0,36),(0,37),(0,38),(0,39),(0,40),(0,41),(0,42),(0,43),(0,44),(0,45),(0,47),(0,48),(0,49),(0,50),(1,1),(1,2),(1,3),(1,6),(1,11),(2,2),(2,6),(2,11),(3,3),(3,6),(3,11),(5,1),(5,2),(5,3),(5,5),(5,6),(5,11),(5,13),(5,18),(5,19),(5,21),(5,33),(6,6),(9,0),(9,1),(9,2),(9,3),(9,5),(9,6),(9,9),(9,11),(9,13),(9,15),(9,16),(9,17),(9,18),(9,19),(9,20),(9,21),(9,22),(9,30),(9,31),(9,32),(9,33),(9,34),(9,35),(9,36),(9,37),(9,38),(9,39),(9,40),(9,41),(9,42),(9,43),(9,44),(9,45),(9,47),(9,48),(9,49),(9,50),(11,6),(11,11),(13,1),(13,2),(13,3),(13,6),(13,11),(13,13),(15,1),(15,2),(15,3),(15,6),(15,11),(15,15),(15,35),(16,1),(16,2),(16,3),(16,6),(16,11),(16,13),(16,15),(16,16),(16,35),(17,1),(17,2),(17,3),(17,5),(17,6),(17,11),(17,13),(17,17),(17,18),(17,19),(17,20),(17,21),(17,33),(17,37),(17,39),(18,1),(18,2),(18,3),(18,6),(18,11),(18,18),(19,1),(19,2),(19,3),(19,6),(19,11),(19,13),(19,18),(19,19),(19,21),(20,1),(20,2),(20,3),(20,6),(20,11),(20,13),(20,20),(21,1),(21,2),(21,3),(21,6),(21,11),(21,13),(21,18),(21,21),(22,1),(22,2),(22,3),(22,6),(22,11),(22,13),(22,18),(22,21),(22,22),(30,1),(30,2),(30,3),(30,5),(30,6),(30,11),(30,13),(30,18),(30,19),(30,20),(30,21),(30,22),(30,30),(30,33),(31,1),(31,2),(31,3),(31,6),(31,11),(31,31),(32,1),(32,2),(32,3),(32,6),(32,11),(32,32),(33,33),(34,1),(34,2),(34,3),(34,6),(34,11),(34,13),(34,33),(34,34),(35,1),(35,2),(35,3),(35,6),(35,11),(35,35),(36,1),(36,2),(36,3),(36,6),(36,11),(36,36),(36,44),(36,47),(37,1),(37,2),(37,3),(37,6),(37,11),(37,37),(38,1),(38,2),(38,3),(38,6),(38,11),(38,37),(38,38),(39,1),(39,2),(39,3),(39,5),(39,6),(39,11),(39,13),(39,18),(39,19),(39,21),(39,33),(39,39),(40,1),(40,2),(40,3),(40,6),(40,11),(40,40),(41,1),(41,2),(41,3),(41,6),(41,11),(41,13),(41,40),(41,41),(42,1),(42,2),(42,3),(42,6),(42,11),(42,42),(43,1),(43,2),(43,3),(43,6),(43,11),(43,13),(43,42),(43,43),(44,1),(44,2),(44,3),(44,6),(44,11),(44,44),(45,1),(45,2),(45,3),(45,6),(45,11),(45,13),(45,44),(45,45),(47,1),(47,2),(47,3),(47,6),(47,11),(47,47),(48,1),(48,2),(48,3),(48,6),(48,11),(48,13),(48,47),(48,48),(49,1),(49,2),(49,3),(49,6),(49,11),(49,36),(49,44),(49,47),(49,49),(50,1),(50,2),(50,3),(50,6),(50,11),(50,13),(50,36),(50,44),(50,47),(50,49),(50,50);
/*!40000 ALTER TABLE `roleRole` ENABLE KEYS */; /*!40000 ALTER TABLE `roleRole` ENABLE KEYS */;
UNLOCK TABLES; UNLOCK TABLES;
@ -42,7 +42,7 @@ UNLOCK TABLES;
LOCK TABLES `roleInherit` WRITE; LOCK TABLES `roleInherit` WRITE;
/*!40000 ALTER TABLE `roleInherit` DISABLE KEYS */; /*!40000 ALTER TABLE `roleInherit` DISABLE KEYS */;
INSERT INTO `roleInherit` VALUES (9,0),(5,1),(13,1),(18,1),(31,1),(32,1),(34,1),(35,1),(37,1),(40,1),(42,1),(44,1),(47,1),(1,2),(1,3),(30,5),(39,5),(11,6),(1,11),(2,11),(3,11),(16,13),(20,13),(21,13),(22,13),(34,13),(41,13),(43,13),(45,13),(48,13),(16,15),(21,18),(5,19),(17,20),(30,20),(19,21),(22,21),(39,21),(30,22),(5,33),(34,33),(15,35),(17,37),(38,37),(17,39),(41,40),(43,42),(36,44),(45,44),(36,47),(48,47); INSERT INTO `roleInherit` VALUES (9,0),(5,1),(13,1),(18,1),(31,1),(32,1),(34,1),(35,1),(37,1),(40,1),(42,1),(44,1),(47,1),(1,2),(1,3),(30,5),(39,5),(11,6),(1,11),(2,11),(3,11),(16,13),(20,13),(21,13),(22,13),(34,13),(41,13),(43,13),(45,13),(48,13),(50,13),(16,15),(21,18),(5,19),(17,20),(30,20),(19,21),(22,21),(39,21),(30,22),(5,33),(34,33),(15,35),(49,36),(17,37),(38,37),(17,39),(41,40),(43,42),(36,44),(45,44),(36,47),(48,47),(50,49);
/*!40000 ALTER TABLE `roleInherit` ENABLE KEYS */; /*!40000 ALTER TABLE `roleInherit` ENABLE KEYS */;
UNLOCK TABLES; UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
@ -55,7 +55,7 @@ UNLOCK TABLES;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
-- Dump completed on 2018-02-26 14:07:27 -- Dump completed on 2018-02-28 15:45:02
USE `salix`; USE `salix`;
-- MySQL dump 10.13 Distrib 5.7.17, for Win64 (x86_64) -- MySQL dump 10.13 Distrib 5.7.17, for Win64 (x86_64)
-- --
@ -93,4 +93,62 @@ UNLOCK TABLES;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
-- Dump completed on 2018-02-26 14:07:27 -- Dump completed on 2018-02-28 15:45:02
USE `vn`;
-- MySQL dump 10.13 Distrib 5.7.17, for Win64 (x86_64)
--
-- Host: db.verdnatura.es Database: vn
-- ------------------------------------------------------
-- Server version 5.6.25-4-log
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
--
-- Dumping data for table `cplusInvoiceType477`
--
LOCK TABLES `cplusInvoiceType477` WRITE;
/*!40000 ALTER TABLE `cplusInvoiceType477` DISABLE KEYS */;
INSERT INTO `cplusInvoiceType477` VALUES (1,'F1 - Factura'),(2,'F2 - Factura simplificada (ticket)'),(3,'F3 - Factura emitida en sustitución de facturas simplificadas facturadas y declaradas'),(4,'F4 - Asiento resumen de facturas'),(5,'R1 - Factura rectificativa (Art. 80.1, 80.2 y error fundado en derecho)'),(6,'R2 - Factura rectificativa (Art. 80.3)'),(7,'R3 - Factura rectificativa (Art. 80.4)'),(8,'R4 - Factura rectificativa (Resto)'),(9,'R5 - Factura rectificativa en facturas simplificadas');
/*!40000 ALTER TABLE `cplusInvoiceType477` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Dumping data for table `cplusSubjectOp`
--
LOCK TABLES `cplusSubjectOp` WRITE;
/*!40000 ALTER TABLE `cplusSubjectOp` DISABLE KEYS */;
INSERT INTO `cplusSubjectOp` VALUES (1,'Campo vacio'),(2,'S1 Sujeta No exenta'),(3,'S2 Sujeta No exenta Inv. Suj. Pasivo');
/*!40000 ALTER TABLE `cplusSubjectOp` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Dumping data for table `cplusTaxBreak`
--
LOCK TABLES `cplusTaxBreak` WRITE;
/*!40000 ALTER TABLE `cplusTaxBreak` DISABLE KEYS */;
INSERT INTO `cplusTaxBreak` VALUES (1,'Campo vacio'),(2,'E1 - Exenta por el artículo 20'),(3,'E2 - Exenta por el artículo 21'),(4,'E3 - Exenta por el artículo 22'),(5,'E4 - Exenta por el artículo 24'),(6,'E5 - Exenta por el artículo 25'),(7,'E6 - Exenta por otros');
/*!40000 ALTER TABLE `cplusTaxBreak` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
-- Dump completed on 2018-02-28 15:45:02

View File

@ -440,4 +440,10 @@ INSERT INTO `vn`.`itemTag`(`id`,`itemFk`,`tagFk`,`value`,`priority`)
INSERT INTO `vn`.`itemLog` (`id`, `originFk`, `userFk`, `action`, `description`) INSERT INTO `vn`.`itemLog` (`id`, `originFk`, `userFk`, `action`, `description`)
VALUES VALUES
('1', '1', '1', 'insert', 'We made an change!'); ('1', '1', '1', 'insert', 'We made an change!');
INSERT INTO `vn`.`invoiceOut`(`id`, `ref`, `serial`, `amount`, `clientFk`, `created`, `companyFk`, `dued`, `booked`, `bankFk`, `pdf`)
VALUES
( 1, 'T1111111' , 'T', 500 , 1, CURDATE(), 442, CURDATE(), CURDATE(), 8, 1),
( 2, 'V2222222' , 'V', 350.50 , 2, CURDATE(), 442, CURDATE(), CURDATE(), 8, 1),
( 3, 'E3333333' , 'E', 90.30 , 3, CURDATE(), 442, CURDATE(), CURDATE(), 8, 1);

View File

@ -0,0 +1,24 @@
CREATE OR REPLACE
ALGORITHM = UNDEFINED
DEFINER = `root`@`%`
SQL SECURITY DEFINER
VIEW `vn`.`invoiceOut` AS
SELECT
`f`.`factura_id` AS `id`,
`f`.`Id_Factura` AS `ref`,
`f`.`Serie` AS `serial`,
`f`.`Fecha` AS `issued`,
`f`.`Importe` AS `amount`,
`f`.`Id_Cliente` AS `clientFk`,
`f`.`odbc_date` AS `created`,
`f`.`empresa_id` AS `companyFk`,
`f`.`Vencimiento` AS `dued`,
`f`.`booked` AS `booked`,
`f`.`Id_Banco` AS `bankFk`,
`f`.`cplusInvoiceType477Fk` AS `cplusInvoiceType477Fk`,
`f`.`cplusTaxBreakFk` AS `cplusTaxBreakFk`,
`f`.`cplusSubjectOpFk` AS `cplusSubjectOpFk`,
`f`.`cplusTrascendency477Fk` AS `cplusTrascendency477Fk`,
`f`.`pdf` AS `pdf`
FROM
`vn2008`.`Facturas` `f`